Compare commits

..

3 Commits
master ... 2

432 changed files with 5091 additions and 29695 deletions

View File

@ -14,5 +14,3 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import models, wizard

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright 2016-2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -18,16 +18,15 @@
{
'name': 'GOLEM activities',
'summary': 'Extends Odoo products for multi-activity',
'description': 'Extends Odoo products for multi-activity',
'version': '10.0.2.8.0',
'description': 'Multi-activities management',
'version': '0.1',
'category': 'GOLEM',
'author': 'Fabien Bourgeois, Michel Dessenne',
'author': 'Fabien Bourgeois',
'license': 'AGPL-3',
'application': True,
'installable': True,
'depends': ['product', 'account', 'golem_base', 'golem_season'],
'depends': ['product', 'golem_base', 'golem_season'],
'data': ['security/ir.model.access.csv',
'data/golem_activity_data.xml',
'views/golem_activity_views.xml',
'report/golem_activity_report_templates.xml']
'views/golem_activity_view.xml']
}

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2016-2018 Fabien Bourgeois <fabien@yaltik.com>
Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
@ -17,55 +17,30 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<openerp>
<data noupdate="1">
<!-- Base data for activities -->
<record model="golem.activity.audience" id="golem_activity_audience_adults">
<field name="name">Adults</field>
<record model="product.category" id="golem_product_category_activities">
<field name="name">Activités</field>
<field name="property_account_income_categ"
search="[('code', '=', '706000')]" />
<field name="property_account_expense_categ"
search="[('code', '=', '604000')]" />
</record>
<record model="golem.activity.audience" id="golem_activity_audience_children">
<field name="name">Childrens</field>
</record>
<record model="golem.activity.type" id="golem_activity_type_activity">
<field name="name">Activity</field>
<field name="is_recurrent">1</field>
</record>
<record model="golem.activity.type" id="golem_activity_type_workshop">
<field name="name">Workshop</field>
<field name="is_recurrent">0</field>
</record>
<record model="golem.activity.type" id="golem_activity_type_training">
<field name="name">Training</field>
<field name="is_recurrent">0</field>
</record>
<record model="product.category" id="golem_product_category_wellbeing">
<field name="name">Bien-Être</field>
<field name="parent_id"
eval="ref('product.product_category_all')" />
<field name="property_account_income_categ_id"
search="[('code', '=', '706000')]" />
<field name="property_account_expense_categ_id"
search="[('code', '=', '604000')]" />
eval="ref('golem_activity.golem_product_category_activities')" />
</record>
<record model="product.category" id="golem_product_category_martial">
<field name="name">Arts martiaux</field>
<field name="parent_id"
eval="ref('product.product_category_all')" />
<field name="property_account_income_categ_id"
search="[('code', '=', '706000')]" />
<field name="property_account_expense_categ_id"
search="[('code', '=', '604000')]" />
eval="ref('golem_activity.golem_product_category_activities')" />
</record>
<record model="product.category" id="golem_product_category_dance">
<field name="name">Danse</field>
<field name="parent_id"
eval="ref('product.product_category_all')" />
<field name="property_account_income_categ_id"
search="[('code', '=', '706000')]" />
<field name="property_account_expense_categ_id"
search="[('code', '=', '604000')]" />
eval="ref('golem_activity.golem_product_category_activities')" />
</record>
</data>
</odoo>
</openerp>

File diff suppressed because it is too large Load Diff

View File

@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-11-01 15:16+0000\n"
"PO-Revision-Date: 2018-11-01 15:16+0000\n"
"POT-Creation-Date: 2016-07-11 10:05+0000\n"
"PO-Revision-Date: 2016-07-11 10:05+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -16,393 +16,78 @@ msgstr ""
"Plural-Forms: \n"
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_product_variant_count
msgid "# Product Variants"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Animator : </strong>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Category : </strong>"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Date Start : </strong>"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Date Stop : </strong>"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Is Full Season : </strong>"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Is Recurrent : </strong>"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Places : </strong>"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Price : </strong>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Reference : </strong>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Season : </strong>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Start Hour : </strong>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Stop Hour : </strong>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Type : </strong>"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Weekday : </strong>"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_description_sale
msgid "A description of the Product that you want to communicate to your customers. This description will be copied to every Sale Order, Delivery Order and Customer Invoice/Refund"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_description_purchase
msgid "A description of the Product that you want to communicate to your vendors. This description will be copied to every Purchase Order, Receipt and Vendor Bill/Refund."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_description
msgid "A precise description of the Product, used only for internal information purposes."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_type
msgid "A stockable product is a product for which you manage stock. The \"Inventory\" app has to be installed.\n"
"A consumable product, on the other hand, is a product for which stock is not managed.\n"
"A service is a non-material product you provide.\n"
"A digital content is a non-material product you sell online. The files attached to the products are the one that are sold on the e-commerce such as e-books, music, pictures,... The \"Digital Product\" module has to be installed."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_active
msgid "Active"
msgstr ""
#. module: golem_activity
#: model:ir.ui.menu,name:golem_activity.golem_activity_menu
#: model:ir.ui.menu,name:golem_activity.golem_activity_menu_list
#: model:ir.ui.menu,name:golem_activity.activity_menu
msgid "Activities"
msgstr ""
#. module: golem_activity
#: model:ir.actions.act_window,name:golem_activity.product_category_action
msgid "Activities Categories"
msgstr ""
#. module: golem_activity
#: model:golem.activity.type,name:golem_activity.golem_activity_type_activity
msgid "Activity"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "Activity :"
msgstr ""
#. module: golem_activity
#: model:ir.ui.menu,name:golem_activity.golem_activity_audience_menu_list
msgid "Activity Audiences"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
#: view:golem.activity:golem_activity.view_form
msgid "Activity Name"
msgstr ""
#. module: golem_activity
#: model:ir.actions.report.xml,name:golem_activity.golem_activity_report_html
msgid "Activity Report [HTML]"
#: model:product.category,name:golem_activity.golem_product_category_activities
msgid "Activités"
msgstr ""
#. module: golem_activity
#: model:ir.actions.report.xml,name:golem_activity.golem_activity_report_pdf
msgid "Activity Report [PDF]"
msgstr ""
#. module: golem_activity
#: model:ir.ui.menu,name:golem_activity.golem_activity_type_menu_list
msgid "Activity Types"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_name
msgid "Activity audience"
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:167
#, python-format
msgid "Activity end date can not be set after linked season end."
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:163
#, python-format
msgid "Activity start date can not be set before linked season start."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_name
msgid "Activity type"
msgstr ""
#. module: golem_activity
#: model:golem.activity.audience,name:golem_activity.golem_activity_audience_adults
msgid "Adults"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_res_partner_animator_activity_ids
#: model:ir.model.fields,field_description:golem_activity.field_res_users_animator_activity_ids
msgid "Animated activities"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_animator_id
#: field:golem.activity,animator_id:0
msgid "Animator"
msgstr ""
#. module: golem_activity
#: model:product.category,name:golem_activity.golem_product_category_martial
msgid "Arts martiaux"
#: model:product.category,name:golem_activity.golem_product_category_workshops
msgid "Ateliers"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_id_4022
msgid "Audience"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_barcode
msgid "Barcode"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_list_price
#: model:ir.model.fields,help:golem_activity.field_golem_activity_lst_price
msgid "Base price to compute the customer price. Sometimes called the catalog price."
msgstr ""
#. module: golem_activity
#: model:product.category,name:golem_activity.golem_product_category_wellbeing
msgid "Bien-Être"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
msgid "By animator"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
msgid "By category"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
msgid "By type"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
msgid "By weekday"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_purchase_ok
msgid "Can be Purchased"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_rental
msgid "Can be Rent"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_sale_ok
msgid "Can be Sold"
msgstr ""
#. module: golem_activity
#: model:ir.ui.menu,name:golem_activity.product_category_menu
msgid "Categories"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_membership
msgid "Check if the product is eligible for membership."
msgstr ""
#. module: golem_activity
#: model:golem.activity.audience,name:golem_activity.golem_activity_audience_children
msgid "Childrens"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_color
msgid "Color Index"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_company_id
msgid "Company"
msgstr ""
#. module: golem_activity
#: model:ir.ui.menu,name:golem_activity.golem_activity_menu_configuration
msgid "Configuration"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_standard_price
msgid "Cost"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_standard_price
msgid "Cost of the product, in the default unit of measure of the product."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_create_uid
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_create_uid
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_create_uid
#: field:golem.activity,create_uid:0
msgid "Created by"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_create_date
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_create_date
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_create_date
#: field:golem.activity,create_date:0
msgid "Created on"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_currency_id
msgid "Currency"
#: field:golem.activity,is_current:0
msgid "Current season?"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_taxes_id
msgid "Customer Taxes"
#: help:golem.activity,message_last_post:0
msgid "Date of the last message posted on the record."
msgstr ""
#. module: golem_activity
#: model:product.category,name:golem_activity.golem_product_category_dance
msgid "Danse"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_tree
msgid "Date"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_membership_date_from
msgid "Date from which membership becomes active."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_membership_date_to
msgid "Date until which membership remains active."
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_tree
msgid "Day"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_uom_id
msgid "Default Unit of Measure used for all stock operation."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_uom_po_id
msgid "Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
#: view:golem.activity:golem_activity.view_filter
msgid "Default season"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_is_default
msgid "Default season?"
#: view:golem.activity:golem_activity.view_form
msgid "Details"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_description
msgid "Description"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_display_name
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_display_name
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_display_name
#: field:golem.activity,display_name:0
msgid "Display Name"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_date_stop
#: field:golem.activity,date_end:0
msgid "End date"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_property_account_expense_id
msgid "Expense Account"
#: field:golem.activity,message_follower_ids:0
msgid "Followers"
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:185
#: selection:golem.activity,weekday:0
#, python-format
msgid "Friday"
msgstr ""
#. module: golem_activity
#: model:ir.actions.act_window,name:golem_activity.golem_activity_action
#: view:golem.activity:golem_activity.view_tree
#: model:ir.actions.act_window,name:golem_activity.action
msgid "GOLEM Activities"
msgstr ""
@ -412,220 +97,83 @@ msgid "GOLEM Activity"
msgstr ""
#. module: golem_activity
#: model:ir.model,name:golem_activity.model_golem_activity_audience
msgid "GOLEM Activity Audience"
#: help:golem.activity,message_summary:0
msgid "Holds the Chatter summary (number of messages, ...). This summary is directly in html format in order to be inserted in kanban views."
msgstr ""
#. module: golem_activity
#: model:ir.actions.act_window,name:golem_activity.golem_activity_audience_action
msgid "GOLEM Activity Audiences"
msgstr ""
#. module: golem_activity
#: model:ir.model,name:golem_activity.model_golem_activity_type
msgid "GOLEM Activity Type"
msgstr ""
#. module: golem_activity
#: model:ir.actions.act_window,name:golem_activity.golem_activity_type_action
msgid "GOLEM Activity Types"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "General Information"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_packaging_ids
msgid "Gives the different ways to package the same product. This has no impact on the picking order and is mainly used if you use the EDI module."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_sequence
msgid "Gives the sequence order when displaying a product list"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
msgid "Group By"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_tree
msgid "Hour"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_hour_start_display
msgid "Hour start"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_id
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_id
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_id
#: field:golem.activity,id:0
msgid "ID"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_active
msgid "If unchecked, it will allow you to hide the product without removing it."
#: help:golem.activity,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_image
#: field:golem.activity,image:0
msgid "Image"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_property_account_income_id
msgid "Income Account"
#: view:golem.activity:golem_activity.view_form
msgid "Information"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_categ_id
#: field:golem.activity,categ_id:0
msgid "Internal Category"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_default_code
msgid "Internal Reference"
#: field:golem.activity,message_is_follower:0
msgid "Is a Follower"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_barcode
msgid "International Article Number used for product identification."
#: field:golem.activity,message_last_post:0
msgid "Last Message Date"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
msgid "Invoicing"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_is_fullseason
msgid "Is full season?"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_is_recurrent
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_is_recurrent
msgid "Is recurrent?"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity___last_update
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience___last_update
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type___last_update
#: field:golem.activity,__last_update:0
msgid "Last Modified on"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_write_uid
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_write_uid
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_write_uid
#: field:golem.activity,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_write_date
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_write_date
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_write_date
#: field:golem.activity,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_membership_season_id
msgid "Linked season"
#: model:ir.ui.menu,name:golem_activity.activity_list
msgid "List"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_location
msgid "Location"
#: field:golem.activity,message_ids:0
msgid "Messages"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_packaging_ids
msgid "Logistical Units"
#: help:golem.activity,message_ids:0
msgid "Messages and communication history"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_image_medium
msgid "Medium-sized image"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_image_medium
msgid "Medium-sized image of the product. It is automatically resized as a 128x128px image, with aspect ratio preserved, only when the image exceeds one of those sizes. Use this field in form views or some kanban views."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_membership
msgid "Membership"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_membership_date_to
msgid "Membership End Date"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_membership_date_from
msgid "Membership Start Date"
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:181
#: selection:golem.activity,weekday:0
#, python-format
msgid "Monday"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_full_name
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_name
#: field:golem.activity,name:0
msgid "Name"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
msgid "Others"
msgstr ""
#. module: golem_activity
#: model:ir.model,name:golem_activity.model_res_partner
msgid "Partner"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_price
msgid "Price"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_pricelist_id
msgid "Pricelist"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_item_ids
msgid "Pricelist Items"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_product_variant_id
msgid "Product"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_attribute_line_ids
msgid "Product Attributes"
msgstr ""
#. module: golem_activity
#: model:ir.model,name:golem_activity.model_product_category
msgid "Product Category"
#: field:golem.activity,note:0
msgid "Note"
msgstr ""
#. module: golem_activity
@ -634,251 +182,53 @@ msgid "Product Template"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type
msgid "Product Type"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_product_id
msgid "Product id"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_product_variant_ids
msgid "Products"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_lst_price
msgid "Public Price"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_description_purchase
msgid "Purchase Description"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_uom_po_id
msgid "Purchase Unit of Measure"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_description_sale
msgid "Sale Description"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_list_price
msgid "Sale Price"
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:186
#: selection:golem.activity,weekday:0
#, python-format
msgid "Saturday"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_season_id
#: field:golem.activity,season_id:0
msgid "Season"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
#: help:golem.activity,categ_id:0
msgid "Select category for the current activity"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_categ_id
msgid "Select category for the current product"
#: model:product.category,name:golem_activity.golem_product_category_trainings
msgid "Stages"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_sequence
msgid "Sequence"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "Session"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_image_small
msgid "Small-sized image"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_image_small
msgid "Small-sized image of the product. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_sale_ok
msgid "Specify if the product can be selected in a sales order line."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_date_start
#: field:golem.activity,date_start:0
msgid "Start date"
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:160
#: code:addons/golem_activity/models/golem_activity.py:212
#: code:addons/golem_activity/models/golem_activity.py:53
#, python-format
msgid "Start of the period cannot be after end of the period."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_hour_start
msgid "Start time"
#: field:golem.activity,message_summary:0
msgid "Summary"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_hour_stop
msgid "Stop time"
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:187
#: selection:golem.activity,weekday:0
#, python-format
msgid "Sunday"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_pricelist_id
msgid "Technical field. Used for searching on pricelists, not stored in database."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_volume
msgid "The volume in m3."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_weight
msgid "The weight of the contents in Kg, not including any packaging, etc."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_property_account_expense_id
msgid "This account will be used for invoices instead of the default one to value expenses for the current product."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_property_account_income_id
msgid "This account will be used for invoices instead of the default one to value sales for the current product."
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:42
#: sql_constraint:golem.activity.audience:0
#, python-format
msgid "This activity audience name has already been used."
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:30
#: sql_constraint:golem.activity.type:0
#, python-format
msgid "This activity type name has already been used."
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,help:golem_activity.field_golem_activity_image
#: help:golem.activity,image:0
msgid "This field holds the image used as image for the activity."
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:184
#: selection:golem.activity,weekday:0
#, python-format
msgid "Thursday"
#: model:product.category,name:golem_activity.golem_product_category_all_activities
msgid "Toutes les activités"
msgstr ""
#. module: golem_activity
#: model:golem.activity.type,name:golem_activity.golem_activity_type_training
msgid "Training"
#: field:golem.activity,message_unread:0
msgid "Unread Messages"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_tree
msgid "True"
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:182
#: selection:golem.activity,weekday:0
#, python-format
msgid "Tuesday"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_id_3987
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "Type"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_uom_id
msgid "Unit of Measure"
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:126
#, python-format
msgid "Unsupported operator for defautl season search"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_supplier_taxes_id
msgid "Vendor Taxes"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_seller_ids
msgid "Vendors"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_volume
msgid "Volume"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_warranty
msgid "Warranty"
msgstr ""
#. module: golem_activity
#: code:addons/golem_activity/models/golem_activity.py:183
#: selection:golem.activity,weekday:0
#, python-format
msgid "Wednesday"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_weekday
msgid "Weekday"
msgstr ""
#. module: golem_activity
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_weight
msgid "Weight"
msgstr ""
#. module: golem_activity
#: model:golem.activity.type,name:golem_activity.golem_activity_type_workshop
msgid "Workshop"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
#: view:golem.activity:golem_activity.view_form
msgid "describe the activity characteristics..."
msgstr ""

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright 2016-2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -15,4 +15,4 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import golem_activity, golem_season
from . import golem_activity

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright 2017-2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -15,204 +15,61 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM activities related models """
import logging
from odoo import models, fields, api, _
_LOGGER = logging.getLogger(__name__)
class GolemActivityType(models.Model):
""" GOLEM Activity Type """
_name = 'golem.activity.type'
_description = 'GOLEM Activity Type'
_sql_constraints = [('golem_activity_type_name_uniq', 'UNIQUE (name)',
_('This activity type name has already been used.'))]
name = fields.Char('Activity type', required=True, translate=True)
is_recurrent = fields.Boolean('Is recurrent?')
class GolemActivityAudience(models.Model):
""" GOLEM Activity Audience """
_name = 'golem.activity.audience'
_description = 'GOLEM Activity Audience'
_sql_constraints = [('golem_activity_audience_name_uniq', 'UNIQUE (name)',
_('This activity audience name has already been used.'))]
name = fields.Char('Activity audience', required=True, translate=True)
from openerp import models, fields, api, _
class GolemActivity(models.Model):
""" GOLEM Activity """
_name = 'golem.activity'
_description = 'GOLEM Activity'
_inherit = 'mail.thread'
_inherits = {'product.template': 'product_id'}
_order = 'default_code, name, id'
_rec_name = 'full_name'
product_id = fields.Many2one('product.template', required=True,
ondelete='cascade')
image = fields.Binary(help='This field holds the image used as image for '
'the activity.')
full_name = fields.Char('Name', compute='_compute_full_name', store=True,
index=True)
is_fullseason = fields.Boolean('Is full season?',
compute='_compute_is_full_season')
location = fields.Char()
audience_id = fields.Many2one('golem.activity.audience', string='Audience',
index=True, auto_join=True)
@api.onchange('is_fullseason')
def onchange_fullseason(self):
""" Sets dates as season ones if needed """
for activity in self:
if activity.is_fullseason:
if activity.season_id.date_start:
activity.date_start = activity.season_id.date_start
if activity.season_id.date_end:
activity.date_stop = activity.season_id.date_end
@api.depends('date_start', 'date_stop')
def _compute_is_full_season(self):
""" Display date for is full season """
for activity in self:
if activity.date_start == activity.season_id.date_start and \
activity.date_stop == activity.season_id.date_end:
activity.is_fullseason = True
@api.depends('name', 'default_code')
def _compute_full_name(self):
""" Provide a better displayed name """
for activity in self:
full_name = unicode(activity.name)
if activity.default_code:
full_name = u'[{}] {}'.format(activity.default_code, full_name)
activity.full_name = full_name
name = fields.Char('Name', index=True, required=True)
default_code = fields.Char('Internal Reference', index=True)
image = fields.Binary('Image', help='This field holds the image used as '
'image for the activity.')
note = fields.Text('Note')
@api.model
def default_season(self):
def _default_season(self):
""" Get default season """
domain = [('is_default', '=', True)]
return self.env['golem.season'].search(domain)
season_id = fields.Many2one('golem.season', string='Season', copy=False,
required=True, default=default_season,
index=True, auto_join=True,
required=True, default=_default_season,
ondelete='restrict')
is_default = fields.Boolean('Default season?',
compute='_compute_is_default', store=True)
@api.depends('season_id')
def _compute_is_default(self):
""" Checks if activity is active for default season """
default_season = self.default_season()
for activity in self:
activity.is_default = (default_season == activity.season_id)
animator_id = fields.Many2one('res.partner', string='Animator',
index=True, auto_join=True,
domain=[('is_company', '=', False)])
type_id = fields.Many2one('golem.activity.type', required=True, index=True,
auto_join=True, string='Type')
is_recurrent = fields.Boolean(related='type_id.is_recurrent')
categ_id = fields.Many2one('product.category', 'Internal Category',
required=True,
help='Select category for the current activity')
date_start = fields.Date('Start date', copy=False)
date_stop = fields.Date('End date', copy=False)
date_end = fields.Date('End date', copy=False)
@api.onchange('date_start')
def _onchange_date_start(self):
""" Sets end date to start date if no start date """
for activity in self:
if not activity.date_stop:
activity.date_stop = activity.date_start
@api.constrains('date_start', 'date_stop')
@api.constrains('date_start', 'date_end')
def _check_period(self):
""" Checks if end date if after start date """
for activity in self:
season = activity.season_id
if activity.date_start and activity.date_stop and \
activity.date_start > activity.date_stop:
""" Check if end date if after start date """
for a in self:
if a.date_start and a.date_end and a.date_start > a.date_end:
raise models.ValidationError(_('Start of the period cannot be '
'after end of the period.'))
if season.date_start and season.date_start > activity.date_start:
msg = _(u'Activity start date can not be set before '
'linked season start.')
raise models.ValidationError(msg)
if season.date_end and season.date_end < activity.date_stop:
msg = _(u'Activity end date can not be set after '
'linked season end.')
raise models.ValidationError(msg)
@api.onchange('season_id')
def _onchange_season_dates(self):
def onchange_season_dates(self):
""" Sets defaults dates according to season """
for activity in self:
if activity.season_id:
if not activity.date_start:
activity.date_start = activity.season_id.date_start
if not activity.date_stop:
activity.date_stop = activity.season_id.date_end
for a in self:
if a.season_id:
if not a.date_start:
a.date_start = a.season_id.date_start
if not a.date_end:
a.date_end = a.season_id.date_end
weekday = fields.Selection([('mon', _('Monday')),
('tue', _('Tuesday')),
('wed', _('Wednesday')),
('thu', _('Thursday')),
('fri', _('Friday')),
('sat', _('Saturday')),
('sun', _('Sunday'))], copy=False)
hour_start = fields.Float('Start time', copy=False)
hour_stop = fields.Float('Stop time', copy=False)
hour_start_display = fields.Char('Hour start',
compute='_compute_hour_start_display')
is_current = fields.Boolean('Current season?', store=True, default=False,
compute='_compute_is_current')
@api.depends('hour_start')
def _compute_hour_start_display(self):
""" Computes datetime from day hour start """
for activity in self:
activity.hour_start_display = (activity.hour_start if
activity.hour_start else u'')
@api.onchange('hour_start')
def _onchange_hour_start(self):
""" Sets end hour to start hour if no start hour """
for activity in self:
if activity.hour_start and not activity.hour_stop:
activity.hour_stop = activity.hour_start + 1
@api.constrains('hour_start', 'hour_stop')
def _check_hour_period(self):
""" Check if end hour if after start hour """
for activity in self:
if activity.hour_start > activity.hour_stop:
raise models.ValidationError(_('Start of the period cannot be '
'after end of the period.'))
class ProductTemplate(models.Model):
""" GOLEM Activity Product adaptations """
_inherit = 'product.template'
type = fields.Selection(default='service')
default_code = fields.Char(copy=True)
categ_id = fields.Many2one(copy=True)
class ProductCategory(models.Model):
""" Product Category adaptations """
_inherit = 'product.category'
property_account_income_categ_id = fields.Many2one(required=True)
property_account_expense_categ_id = fields.Many2one(required=True)
class ResPartner(models.Model):
""" GOLEM Member partner adaptations """
_inherit = 'res.partner'
animator_activity_ids = fields.One2many('golem.activity', 'animator_id',
string='Animated activities',
auto_join=True)
@api.one
@api.depends('season_id')
def _compute_is_current(self):
""" Checks if activity is active for current season """
default_season = self._default_season()
self.is_current = (default_season == self.season_id)

View File

@ -1,34 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Season adaptations """
from odoo import models, api
class GolemSeason(models.Model):
""" GOLEM Season adaptations """
_inherit = 'golem.season'
@api.multi
def do_default_season(self):
""" Regenerates is_default when season changes """
self.ensure_one()
res = super(GolemSeason, self).do_default_season()
all_activities = self.env['golem.activity'].search([])
all_activities._compute_is_default()
return res

View File

@ -1,137 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<report id="golem_activity_report_pdf" model="golem.activity"
string="Activity Report [PDF]" report_type="qweb-pdf"
name="golem_activity.golem_activity_report_template"
file="golem_activity.golem_activity_report_template"
attachment="(object.name + '.pdf')" />
<report id="golem_activity_report_html" model="golem.activity"
string="Activity Report [HTML]" report_type="qweb-html"
name="golem_activity.golem_activity_report_template"
file="golem_activity.golem_activity_report_template"
attachment="(object.name + '.html')" />
<template id="golem_activity_report_template">
<t t-call="report.html_container">
<t t-set="season" t-value="docs.default_season()" />
<t t-foreach="docs" t-as="activity" id="foreach_activity">
<t t-call="report.external_layout">
<div id='page_report_activity' class="page">
<div class="row">
<div class="col-xs-12" id="activity_title">
<h2 class="golem_report_title">
Activity : <span t-field="activity.name" />
</h2>
</div>
</div>
<div class="col-xs-12" style="margin-top: 40px;" >
<div class="col-xs-4" id="activity_info_left">
<h4 style="font-weight: bold;">General Information</h4>
</div>
<div class="col-xs-4" id="activity_info_middle">
<h4 style="font-weight: bold;">Type</h4>
</div>
<div class="col-xs-4" id="activity_info_right">
<h4 style="font-weight: bold;">Session</h4>
</div>
</div>
<div id="activity_info" class="col-xs-12" >
<div class="col-xs-4" id="activity_info_left">
<div t-if="activity.season_id">
<strong>Season : </strong>>
<span t-field="activity.season_id"/>
</div>
<div t-if="activity.animator_id">
<strong>Animator : </strong>>
<span t-field="activity.animator_id"/>
</div>
<div t-if="activity.list_price">
<strong>Price : </strong>>
<span t-field="activity.list_price"/>
</div>
<div t-if="activity.default_code">
<strong>Reference : </strong>>
<span t-field="activity.default_code"/>
</div>
</div>
<div class="col-xs-4" id="activity_info_middle">
<div t-if="activity.type_id">
<strong>Type : </strong><span t-field="activity.type_id"/>
</div>
<div t-if="activity.categ_id">
<strong>Category : </strong><span t-field="activity.categ_id"/>
</div>
</div>
<div class="col-xs-4" id="activity_info_right">
<div t-if="activity.places">
<strong>Places : </strong><span t-field="activity.places"/>
</div>
<t t-if="activity.is_recurrent">
<div>
<strong>Is Recurrent : </strong>
<span t-field="activity.is_recurrent"/>
</div>
<t t-if="activity.is_fullseason">
<div><strong>Is Full Season : </strong>
<span t-field="activity.is_fullseason"/></div>
<div t-if="activity.weekday">
<strong>Weekday : </strong>
<span t-field="activity.weekday"/>
</div>
</t>
<t t-else="">
<div t-if="activity.date_start">
<strong>Date Start : </strong><span t-field="activity.date_start"/>
</div>
<div t-if="activity.date_stop">
<strong>Date Stop : </strong><span t-field="activity.date_stop"/>
</div>
</t>
<div t-if="activity.hour_start">
<strong>Start Hour : </strong>>
<span t-esc="'%02d:%02d' % (int(activity.hour_start), round(activity.hour_start % 1 * 60))" />
</div>
<div t-if="activity.hour_stop">
<strong>Stop Hour : </strong>>
<span t-esc="'%02d:%02d' % (int(activity.hour_stop), round(activity.hour_stop % 1 * 60))" />
</div>
</t>
<t t-else="">
<div t-if="activity.date_start">
<strong>Date Start : </strong>
<span t-field="activity.date_start"/>
</div>
<div t-if="activity.date_stop">
<strong>Date Stop : </strong>
<span t-field="activity.date_stop"/>
</div>
</t>
</div>
</div>
</div>
</t>
</t>
</t>
</template>
</odoo>

View File

@ -1,15 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_template_user,Access Product Template User,product.model_product_template,golem_base.group_golem_user,1,1,1,0
access_product_template_manager,Access Product Template Manager,product.model_product_template,golem_base.group_golem_manager,1,1,1,1
access_product_product_user,Access Product Product User,product.model_product_product,golem_base.group_golem_user,1,1,1,0
access_product_product_manager,Access Product Product Manager,product.model_product_product,golem_base.group_golem_manager,1,1,1,1
access_product_price_history_user,Access Product Price History User,product.model_product_price_history,golem_base.group_golem_user,1,1,1,0
access_product_price_history_manager,Access Product Price History Manager,product.model_product_price_history,golem_base.group_golem_manager,1,1,1,1
access_product_category_user,Access Product Category User,product.model_product_category,golem_base.group_golem_user,1,0,0,0
access_product_category_manager,Access Product Category Manager,product.model_product_category,golem_base.group_golem_manager,1,1,1,1
access_golem_activity_user,Access GOLEM Activity User,model_golem_activity,golem_base.group_golem_user,1,1,1,0
access_golem_activity_manager,Access GOLEM Activity Manager,model_golem_activity,golem_base.group_golem_manager,1,1,1,1
access_golem_activity_type_user,Access GOLEM Activity Type User,model_golem_activity_type,golem_base.group_golem_user,1,1,1,0
access_golem_activity_type_manager,Access GOLEM Activity Type Manager,model_golem_activity_type,golem_base.group_golem_manager,1,1,1,1
access_golem_activity_audience_user,Access GOLEM Activity Audience User,model_golem_activity_audience,golem_base.group_golem_user,1,1,1,0
access_golem_activity_audience_manager,Access GOLEM Activity Audience Manager,model_golem_activity_audience,golem_base.group_golem_manager,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
access_product_template_user Access Product Template User product.model_product_template golem_base.group_golem_user 1 1 1 0
access_product_template_manager Access Product Template Manager product.model_product_template golem_base.group_golem_manager 1 1 1 1
access_product_product_user Access Product Product User product.model_product_product golem_base.group_golem_user 1 1 1 0
access_product_product_manager Access Product Product Manager product.model_product_product golem_base.group_golem_manager 1 1 1 1
access_product_price_history_user Access Product Price History User product.model_product_price_history golem_base.group_golem_user 1 1 1 0
access_product_price_history_manager Access Product Price History Manager product.model_product_price_history golem_base.group_golem_manager 1 1 1 1
access_product_category_user Access Product Category User product.model_product_category golem_base.group_golem_user 1 0 0 0
access_product_category_manager Access Product Category Manager product.model_product_category golem_base.group_golem_manager 1 1 1 1
2 access_golem_activity_user Access GOLEM Activity User model_golem_activity golem_base.group_golem_user 1 1 1 0
3 access_golem_activity_manager Access GOLEM Activity Manager model_golem_activity golem_base.group_golem_manager 1 1 1 1
access_golem_activity_type_user Access GOLEM Activity Type User model_golem_activity_type golem_base.group_golem_user 1 1 1 0
access_golem_activity_type_manager Access GOLEM Activity Type Manager model_golem_activity_type golem_base.group_golem_manager 1 1 1 1
access_golem_activity_audience_user Access GOLEM Activity Audience User model_golem_activity_audience golem_base.group_golem_user 1 1 1 0
access_golem_activity_audience_manager Access GOLEM Activity Audience Manager model_golem_activity_audience golem_base.group_golem_manager 1 1 1 1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright 2016-2018 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -15,8 +15,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from odoo.tests.common import TransactionCase
from odoo.models import ValidationError
from openerp.tests.common import TransactionCase
from openerp.models import ValidationError
class GolemActivityTestCase(TransactionCase):
@ -40,7 +40,7 @@ class GolemActivityTestCase(TransactionCase):
self.assertEqual(a1.name, 'a1')
self.assertEqual(a1.date_start, self.season_current.date_start)
self.assertEqual(a1.date_end, self.season_current.date_end)
self.assertTrue(a1.is_default)
self.assertTrue(a1.is_current)
adata.update({'name': 'a2', 'date_start': '2010-01-01',
'date_end': '2009-12-01'})
with self.assertRaises(ValidationError):

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<openerp>
<data>
<!-- Forms -->
<record id="view_form" model="ir.ui.view">
<field name="name">GOLEM Activity Form</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_right oe_button_box" style="width: 300px;"
name="buttons"></div>
<div class="oe_left" style="width: 500px;">
<field name="image" widget="image" class="oe_avatar oe_left"/>
<div class="oe_title" style="width: 390px;">
<label class="oe_edit_only" for="name" string="Activity Name"/>
<h1><field name="name" class="oe_inline"/></h1>
</div>
</div>
<group>
<field name="season_id" />
<field name="default_code" />
</group>
<group string="Details">
<group>
<field name="categ_id" />
<field name="animator_id" />
</group>
<group>
<field name="date_start" />
<field name="date_end" />
</group>
</group>
<notebook>
<page name="activity_info" string="Information">
<group>
<field name="note"
placeholder="describe the activity characteristics..."/>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" />
<field name="message_ids" widget="mail_thread" />
</div>
</form>
</field>
</record>
<!-- Trees -->
<record model="ir.ui.view" id="view_tree">
<field name="name">GOLEM Activity Tree/List</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<tree string="GOLEM Activities">
<field name="season_id" />
<field name="name" />
<field name="animator_id" />
</tree>
</field>
</record>
<!-- Searches -->
<record id="view_filter" model="ir.ui.view">
<field name="name">GOLEM Activity Filters</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<search>
<field name="name" />
<field name="season_id" widget="many2one" />
<filter name="season_default" string="Default season"
domain="[('is_current', '=', True)]" />
</search>
</field>
</record>
<!-- Actions -->
<act_window id="action" name="GOLEM Activities" res_model="golem.activity"
context="{'search_default_season_default': True, 'default_categ_id': ref('golem_activity.golem_product_category_activities')}" />
<!-- Menus -->
<menuitem id="activity_menu" name="Activities"
parent="base.menu_association" sequence="5"
groups="golem_base.group_golem_user" />
<menuitem id="activity_list" name="List"
groups="golem_base.group_golem_user"
parent="activity_menu" sequence="0" action="action" />
</data>
</openerp>

View File

@ -1,226 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017-2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Forms -->
<record id="golem_activity_form" model="ir.ui.view">
<field name="name">GOLEM Activity Form</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<form>
<header />
<sheet>
<div class="oe_clear oe_right oe_button_box"
style="width: 300px;"
name="buttons"></div>
<div class="oe_left" style="width: 500px;">
<field name="image" widget="image" class="oe_avatar oe_left"/>
<div class="oe_title" style="width: 390px;">
<label class="oe_edit_only" for="name" string="Activity Name"/>
<h1><field name="name" required="True" class="oe_inline"/></h1>
</div>
</div>
<group>
<group>
<field name="season_id" required="True"
options="{'no_create': True}" />
<field name="animator_id" />
<field name="type_id" required="True"
options="{'no_create': True}" />
<field name="audience_id" />
</group>
<group>
<field name="categ_id" required="True"
help="Select category for the current activity" />
<field name="default_code" />
<field name="list_price" />
</group>
</group>
<notebook>
<page name="session" string="Session">
<group>
<group name="dates">
<field name="is_recurrent" />
<field name="weekday"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="hour_start" widget="float_time"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="hour_stop" widget="float_time"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="is_fullseason" readonly="False"
attrs="{'invisible':[('is_recurrent', '=', False)]}" />
<field name="date_start"
attrs="{'invisible':[('is_recurrent', '=', True),
('is_fullseason', '=', True)]}" />
<field name="date_stop"
attrs="{'invisible':[('is_recurrent', '=', True),
('is_fullseason', '=', True)]}" />
<field name="location" />
</group>
<group name="places">
</group>
</group>
</page>
<page string="Invoicing" name="invoicing"
groups="account.group_account_invoice">
<group name="properties">
<field name="property_account_income_id"
domain="[('internal_type','=','other'),('deprecated','=',False)]"
groups="account.group_account_user"/>
<field name="taxes_id" widget="many2many_tags"/>
<field name="property_account_expense_id"
domain="[('internal_type','=','other'),('deprecated','=',False)]"
groups="account.group_account_user"/>
<field name="supplier_taxes_id" widget="many2many_tags"/>
</group>
</page>
<page name="activity_others" string="Others">
<group>
<field name="description"
placeholder="describe the activity characteristics..." />
<field name="active" />
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" />
<field name="message_ids" widget="mail_thread" />
</div>
</form>
</field>
</record>
<!-- Trees -->
<record model="ir.ui.view" id="golem_activity_tree">
<field name="name">GOLEM Activity Tree/List</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<tree>
<field name="is_recurrent" invisible="True" />
<field name="season_id" />
<field name="type_id" />
<field name="full_name" />
<field name="animator_id" />
<field name="weekday" string="Day" />
<field name="date_start" string="Date" />
<field name="hour_start_display" string="Hour" widget="float_time" />
<field name="list_price" sum="True" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="golem_activity_type_tree">
<field name="name">GOLEM Activity Type Tree/List</field>
<field name="model">golem.activity.type</field>
<field name="arch" type="xml">
<tree editable="top">
<field name="name" />
<field name="is_recurrent" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="golem_activity_audience_tree">
<field name="name">GOLEM Activity Audience Tree/List</field>
<field name="model">golem.activity.audience</field>
<field name="arch" type="xml">
<tree editable="top">
<field name="name" />
</tree>
</field>
</record>
<!-- Calendars -->
<record id="golem_activity_calendar" model="ir.ui.view">
<field name="name">Activity calendar view</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<calendar date_start="date_start" date_stop="date_stop"
color="categ_id" display="[name]">
<field name="name" />
</calendar>
</field>
</record>
<!-- Searches -->
<record id="golem_activity_search" model="ir.ui.view">
<field name="name">GOLEM Activity Filters</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<search>
<field name="full_name" />
<field name="animator_id" />
<field name="type_id" />
<field name="categ_id" />
<field name="season_id" />
<filter name="season_default" string="Default season"
domain="[('is_default', '=', True)]" />
<group string="Group By">
<filter name="group_type_id" string="By type"
context="{'group_by': 'type_id'}" />
<filter name="group_category" string="By category"
context="{'group_by': 'categ_id'}"/>
<filter name="group_weekday" string="By weekday"
context="{'group_by': 'weekday'}" />
<filter name="group_animator" string="By animator"
context="{'group_by': 'animator_id'}" />
</group>
</search>
</field>
</record>
<!-- Actions -->
<act_window id="golem_activity_action" name="GOLEM Activities"
res_model="golem.activity" view_mode="tree,form,calendar" />
<act_window id="golem_activity_type_action" name="GOLEM Activity Types"
res_model="golem.activity.type" view_mode="tree" />
<act_window id="golem_activity_audience_action" name="GOLEM Activity Audiences"
res_model="golem.activity.audience" view_mode="tree" />
<record id="product_category_action" model="ir.actions.act_window">
<field name="name">Activities Categories</field>
<field name="res_model">product.category</field>
<field name="view_type">form</field>
<field name="view_id" ref="product.product_category_list_view" />
</record>
<!-- Menus -->
<menuitem id="golem_activity_menu" name="Activities" sequence="30"
groups="golem_base.group_golem_user"
web_icon="golem_activity,static/description/icon.png" />
<menuitem id="golem_activity_menu_list" name="Activities"
groups="golem_base.group_golem_user"
parent="golem_activity_menu" sequence="1" action="golem_activity_action" />
<menuitem id="golem_activity_menu_configuration" name="Configuration"
parent="golem_activity_menu" sequence="90"
groups="golem_base.group_golem_manager" />
<menuitem id="golem_activity_type_menu_list" name="Activity Types"
groups="golem_base.group_golem_manager"
parent="golem_activity_menu_configuration" sequence="5"
action="golem_activity_type_action" />
<menuitem id="golem_activity_audience_menu_list" name="Activity Audiences"
groups="golem_base.group_golem_manager"
parent="golem_activity_menu_configuration" sequence="7"
action="golem_activity_audience_action" />
<menuitem id="product_category_menu" name="Categories"
parent="golem_activity_menu_configuration" sequence="10"
groups="golem_base.group_golem_manager"
action="product_category_action" />
</data>
</odoo>

View File

@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_place
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-01 22:35+0000\n"
"PO-Revision-Date: 2017-05-01 22:35+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: golem_activity_place
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_is_overbooked
msgid "Allow overbook?"
msgstr "Autoriser la surcharge ?"
#. module: golem_activity_place
#: model:ir.model,name:golem_activity_place.model_golem_activity
msgid "GOLEM Activity"
msgstr "Activité"
#. module: golem_activity_place
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_places_min
msgid "Minimum places"
msgstr "Places minimum"
#. module: golem_activity_place
#: model:ir.model.fields,help:golem_activity_place.field_golem_activity_places_min
msgid "Minimum places to maintain the activity"
msgstr "Nombre de places minimales pour maintenir l'activité"
#. module: golem_activity_place
#: code:addons/golem_activity_place/models/golem_activity.py:57
#, python-format
msgid "Number of places cannot be negative."
msgstr "Le nombre de places ne peut pas être négatif"
#. module: golem_activity_place
#: code:addons/golem_activity_place/models/golem_activity.py:61
#, python-format
msgid "Overbooked places cannot be inferior than places"
msgstr "Le nombre de places avec surcharge ne peut être inférieur aux places"
#. module: golem_activity_place
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_places_overbooked
msgid "Places with overbook"
msgstr "Places avec surcharge"

View File

@ -1,54 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_place
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-01 22:34+0000\n"
"PO-Revision-Date: 2017-05-01 22:34+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_place
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_is_overbooked
msgid "Allow overbook?"
msgstr ""
#. module: golem_activity_place
#: model:ir.model,name:golem_activity_place.model_golem_activity
msgid "GOLEM Activity"
msgstr ""
#. module: golem_activity_place
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_places_min
msgid "Minimum places"
msgstr ""
#. module: golem_activity_place
#: model:ir.model.fields,help:golem_activity_place.field_golem_activity_places_min
msgid "Minimum places to maintain the activity"
msgstr ""
#. module: golem_activity_place
#: code:addons/golem_activity_place/models/golem_activity.py:57
#, python-format
msgid "Number of places cannot be negative."
msgstr ""
#. module: golem_activity_place
#: code:addons/golem_activity_place/models/golem_activity.py:61
#, python-format
msgid "Overbooked places cannot be inferior than places"
msgstr ""
#. module: golem_activity_place
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_places_overbooked
msgid "Places with overbook"
msgstr ""

View File

@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import models, wizard

View File

@ -1,37 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{
'name': 'GOLEM activity queues',
'summary': 'GOLEM activity queues',
'description': ''' GOLEM activity queue management ''',
'version': '10.0.1.3.0',
'category': 'GOLEM',
'author': 'Youssef El Ouahby, Fabien Bourgeois',
'license': 'AGPL-3',
'application': True,
'installable': True,
'depends': ['golem_activity', 'golem_activity_registration'],
'data': [
'security/ir.model.access.csv',
'views/golem_activity_queue_views.xml',
'views/golem_activity_views.xml',
'views/golem_member_views.xml',
'wizard/golem_activity_automated_queue_activate_views.xml'
]
}

View File

@ -1,292 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_queue
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-20 07:46+0000\n"
"PO-Revision-Date: 2018-07-20 17:06+0200\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_activity_id
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Activity"
msgstr "Activité"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_activity_id
msgid "Activity id"
msgstr "Activité liée"
#. module: golem_activity_queue
#: model:ir.actions.act_window,name:golem_activity_queue.golem_activity_queue_action
#: model:ir.ui.menu,name:golem_activity_queue.golem_activity_queue_menu
msgid "Activity queue"
msgstr "Liste d'attente"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Add Queue"
msgstr "Ajouter une liste d'attente"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Add from queue"
msgstr "Ajouter depuis la liste d'attente"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
msgid "Are you sure you want to Add queue to this activity ?<br/>\n"
" If yes please confirm if you want automated registration from queue to activity."
msgstr "Êtes-vous sûr de vouloir ajouter une liste d'attente à cette activité ?<br/>\n"
" Si oui, merci de confirmer si vous souhaitez une inscription automatique depuis la liste d'attente."
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Are you sure you want to remove queue from this activity ? This will delete all elements currently registred in"
msgstr "Êtes-vous sûr de vouloir supprimer la liste d'attente pour cette activité ? Cela supprimera tous les usagers inscrits dessus."
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Are you sure you want to switch to automated registration from queue mode ?"
msgstr "Êtes-vous sûr de vouloir passer à une inscription automatique depuis la liste d'attente ?"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Are you sure you want to switch to manual registration from queue mode ?"
msgstr "Êtes-vous sûr de vouloir passer à une inscription manuelle depuis la liste d'attente ?"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_auto_registration_from_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_auto_registration_from_queue
msgid "Auto registration from queue"
msgstr "Inscription automatique depuis la liste d'attente"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
msgid "Cancel"
msgstr "Annuler"
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:52
#, python-format
msgid "Choose the activity to register in"
msgstr "Choisissez l'activité sur laquelle inscrire"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
msgid "Confirm"
msgstr "Confirmer"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_create_uid
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_create_uid
msgid "Created by"
msgstr "Créé par"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_create_date
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_create_date
msgid "Created on"
msgstr "Créé le"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Default season"
msgstr "Saison par défaut"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_is_default
msgid "Default season?"
msgstr "Saison par défaut?"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_display_name
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Full Activity"
msgstr "Activité complète"
#. module: golem_activity_queue
#: model:ir.model,name:golem_activity_queue.model_golem_activity
msgid "GOLEM Activity"
msgstr "Activité"
#. module: golem_activity_queue
#: model:ir.model,name:golem_activity_queue.model_golem_activity_queue
msgid "GOLEM Activity Queue"
msgstr "Liste d'attente"
#. module: golem_activity_queue
#: model:ir.model,name:golem_activity_queue.model_golem_member
msgid "GOLEM Member"
msgstr "Adhérent"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Group By"
msgstr "Grouper par"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_id
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_id
msgid "ID"
msgstr "ID"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard___last_update
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue___last_update
msgid "Last Modified on"
msgstr "Dernière Modification le"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_write_uid
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_write_date
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_member_id
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Member"
msgstr "Adhérent"
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:108
#, python-format
msgid "No remaining place for the activity : {}, please discard changes and register in the queue."
msgstr "Plus de place disponible pour l'activité {}, veuillez annuler vos modifications et utiliser la liste d'attente."
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Not Full Activity"
msgstr "Activité disponible"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_activity_queue_ids
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_member_activity_queue_ids
msgid "Pending registration"
msgstr "Inscriptions en attente"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_activity_number
msgid "Pending registration number"
msgstr "Numéro de l'inscription en attente"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Queue"
msgstr "File d'attente"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_allowed
msgid "Queue allowed"
msgstr "Liste d'attente activée"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_member_form_inherit_golem_activity_queue
msgid "Queue list"
msgstr "Listes d'attente"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Register from Queue"
msgstr "Inscrire depuis la liste d'attente"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
msgid "Rejection reason"
msgstr "Motif du rejet"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_places_remain
msgid "Remaining places"
msgstr "Places restantes"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Remove Queue"
msgstr "Supprimer la liste d'attente"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_season_id
msgid "Season"
msgstr "Saison"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_sequence
msgid "Sequence"
msgstr "Séquence"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Switch to automated registration from queue"
msgstr "Passer à une inscription automatique depuis la liste d'attente"
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Switch to manual registration from queue"
msgstr "Passer à une inscription manuelle depuis la liste d'attente"
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity_queue.py:51
#, python-format
msgid "The member your trying to add to the queue is already registered for this activity"
msgstr "L'adhérent que vous essayez d'ajouter à la liste d'attente est déjà inscrit à cette activité"
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:118
#, python-format
msgid "There is a free place for the activity : {}, once you save it will be filled by the first member from queue"
msgstr "Il y a une place disponible sur l'activité {}, une fois sauvegardée un usager de la liste d'attente sera automatiquement inscrit"
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:122
#, python-format
msgid "There is a free place for the activity : {}, you may fill it manually from the queue"
msgstr "Il y a une place disponible sur l'activité {}, vous pouvez inscrire un usager depuis la liste d'attente"
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_member.py:39
#, python-format
msgid "This activity : {} is already full, please discard changes and register in the queue."
msgstr "L'activité {} est complète, veuillez annuler vos modifications et enregistrer l'usager dans la liste d'attente."
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity_queue.py:30
#: sql_constraint:golem.activity.queue:0
#, python-format
msgid "This member has already been registered for the queue."
msgstr "L'usager a déjà été inscrit sur la liste d'attente."
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:112
#: code:addons/golem_activity_queue/models/golem_activity.py:127
#: code:addons/golem_activity_queue/models/golem_member.py:43
#, python-format
msgid "Warning"
msgstr "Attention"
#. module: golem_activity_queue
#: model:ir.model,name:golem_activity_queue.model_golem_activity_automated_queue_activate_wizard
msgid "golem.activity.automated.queue.activate.wizard"
msgstr "golem.activity.automated.queue.activate.wizard"

View File

@ -1,291 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_queue
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-20 07:46+0000\n"
"PO-Revision-Date: 2018-07-20 07:46+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_activity_id
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Activity"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_activity_id
msgid "Activity id"
msgstr ""
#. module: golem_activity_queue
#: model:ir.actions.act_window,name:golem_activity_queue.golem_activity_queue_action
#: model:ir.ui.menu,name:golem_activity_queue.golem_activity_queue_menu
msgid "Activity queue"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Add Queue"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Add from queue"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
msgid "Are you sure you want to Add queue to this activity ?<br/>\n"
" If yes please confirm if you want automated registration from queue to activity."
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Are you sure you want to remove queue from this activity ? This will delete all elements currently registred in"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Are you sure you want to switch to automated registration from queue mode ?"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Are you sure you want to switch to manual registration from queue mode ?"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_auto_registration_from_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_auto_registration_from_queue
msgid "Auto registration from queue"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
msgid "Cancel"
msgstr ""
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:52
#, python-format
msgid "Choose the activity to register in"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
msgid "Confirm"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_create_uid
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_create_uid
msgid "Created by"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_create_date
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_create_date
msgid "Created on"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Default season"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_is_default
msgid "Default season?"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_display_name
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_display_name
msgid "Display Name"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Full Activity"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model,name:golem_activity_queue.model_golem_activity
msgid "GOLEM Activity"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model,name:golem_activity_queue.model_golem_activity_queue
msgid "GOLEM Activity Queue"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model,name:golem_activity_queue.model_golem_member
msgid "GOLEM Member"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Group By"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_id
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_id
msgid "ID"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard___last_update
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue___last_update
msgid "Last Modified on"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_write_uid
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_write_uid
msgid "Last Updated by"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_write_date
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_write_date
msgid "Last Updated on"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_member_id
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Member"
msgstr ""
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:108
#, python-format
msgid "No remaining place for the activity : {}, please discard changes and register in the queue."
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
msgid "Not Full Activity"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_activity_queue_ids
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_member_activity_queue_ids
msgid "Pending registration"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_activity_number
msgid "Pending registration number"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Queue"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_allowed
msgid "Queue allowed"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_member_form_inherit_golem_activity_queue
msgid "Queue list"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Register from Queue"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
msgid "Rejection reason"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_places_remain
msgid "Remaining places"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Remove Queue"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_season_id
msgid "Season"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_sequence
msgid "Sequence"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Switch to automated registration from queue"
msgstr ""
#. module: golem_activity_queue
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
msgid "Switch to manual registration from queue"
msgstr ""
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity_queue.py:51
#, python-format
msgid "The member your trying to add to the queue is already registered for this activity"
msgstr ""
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:118
#, python-format
msgid "There is a free place for the activity : {}, once you save it will be filled by the first member from queue"
msgstr ""
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:122
#, python-format
msgid "There is a free place for the activity : {}, you may fill it manually from the queue"
msgstr ""
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_member.py:39
#, python-format
msgid "This activity : {} is already full, please discard changes and register in the queue."
msgstr ""
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity_queue.py:30
#: sql_constraint:golem.activity.queue:0
#, python-format
msgid "This member has already been registered for the queue."
msgstr ""
#. module: golem_activity_queue
#: code:addons/golem_activity_queue/models/golem_activity.py:112
#: code:addons/golem_activity_queue/models/golem_activity.py:127
#: code:addons/golem_activity_queue/models/golem_member.py:43
#, python-format
msgid "Warning"
msgstr ""
#. module: golem_activity_queue
#: model:ir.model,name:golem_activity_queue.model_golem_activity_automated_queue_activate_wizard
msgid "golem.activity.automated.queue.activate.wizard"
msgstr ""

View File

@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import golem_activity_queue, golem_activity, golem_member

View File

@ -1,130 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity adaptations """
from odoo import models, fields, api, _
class GolemActivity(models.Model):
""" GOLEM Activity adaptations """
_inherit = 'golem.activity'
activity_queue_ids = fields.One2many('golem.activity.queue',
'activity_id', 'Pending registration')
queue_allowed = fields.Boolean(default=True, readonly=True)
auto_registration_from_queue = fields.Boolean(default=True, readonly=True)
queue_activity_number = fields.Integer(compute="_compute_queue_activity_number",
store=True, string='Pending registration number')
@api.multi
def auto_registration_toggle(self):
""" switch registration from queue mode """
for activity in self:
activity.auto_registration_from_queue = not activity.auto_registration_from_queue
@api.multi
def queue_allowed_toggle(self):
""" Toggle queue_alowed boolean """
self.ensure_one()
activity = self[0]
if activity.queue_allowed:
if len(activity.activity_queue_ids) > 0:
activity.activity_queue_ids.unlink()
activity.write({'queue_allowed': False,
'auto_registration_from_queue': False})
else:
return {
'name': _('Choose the activity to register in'),
'type': 'ir.actions.act_window',
'res_model': 'golem.activity.automated.queue.activate.wizard',
'view_mode': 'form',
'context': {'default_activity_id' : activity.id},
'target': 'new',
}
@api.multi
def register_from_queue(self):
""" Registers from queue """
for activity in self:
queues = activity.activity_queue_ids
if activity.queue_activity_number < activity.places_remain:
queues = queues[0:activity.queue_activity_number]
else:
queues = queues[0:activity.places_remain]
for queue in queues:
values = {'activity_id' : queue.activity_id.id,
'member_id' : queue.member_id.id}
self.env['golem.activity.registration'].create(values)
queue.unlink()
@api.constrains('activity_registration_ids')
def handle_queue_at_register(self):
""" Remove member from queue if he has been registered directly in
activity (only for manual queue processing) """
for activity in self:
member_ids = activity.activity_registration_ids.mapped('member_id.id')
queues_to_remove = activity.activity_queue_ids.filtered(
lambda q: q.member_id.id in member_ids)
queues_to_remove.unlink()
@api.constrains('activity_queue_ids', 'activity_registration_ids',
'places_remain', 'queue_allowed', 'queue_activity_number',
'auto_registration_from_queue')
def automated_register_from_queue(self):
"""automated registration from queue"""
for activity in self:
if (activity.places_remain and activity.queue_allowed and
activity.queue_activity_number > 0 and
activity.auto_registration_from_queue):
activity.register_from_queue()
@api.depends('activity_queue_ids')
def _compute_queue_activity_number(self):
""" compute number of queue registration for activity"""
for activity in self:
activity.queue_activity_number = len(activity.activity_queue_ids)
@api.onchange('activity_registration_ids')
def _check_registration_number(self):
for activity in self:
# Needed to ensure that we are negative in places
activity._compute_places_remain()
if activity.places_remain < 0 and activity.queue_allowed:
message = _('No remaining place for the activity : {}, please'
' discard changes and register in the queue.')
return {
'warning' : {
'title' : _('Warning'),
'message': message.format(activity.name),
}
}
elif activity.places_remain > 0 and activity.queue_activity_number > 0:
if activity.auto_registration_from_queue:
warning_message = _('There is a free place for the activity'
' : {}, once you save it will be filled'
' by the first member from queue')
else:
warning_message = _('There is a free place for the activity'
' : {}, you may fill it manually from '
'the queue')
return {
'warning' : {
'title' : _('Warning'),
'message': warning_message.format(activity.name)
}
}

View File

@ -1,52 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity Queue """
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
class GolemActivityQueue(models.Model):
""" GOLEM Activity Queue """
_name = 'golem.activity.queue'
_order = 'sequence asc, id asc'
_description = 'GOLEM Activity Queue'
_sql_constraints = [('golem_activity_queue_uniq', 'UNIQUE (member_id, activity_id)',
_('This member has already been registered for the queue.'))]
member_id = fields.Many2one('golem.member', required=True,
string='Member', ondelete='cascade',
index=True)
activity_id = fields.Many2one('golem.activity', required=True,
string='Activity', ondelete='cascade',
index=True)
season_id = fields.Many2one(related='activity_id.season_id')
is_default = fields.Boolean(related='activity_id.is_default')
places_remain = fields.Integer(related='activity_id.places_remain')
sequence = fields.Integer()
@api.constrains('member_id', 'activity_id')
def check_member_registration(self):
""" Forbid registration in queue when member is already registred in the
activity """
for queue in self:
if queue.activity_id in \
queue.member_id.activity_registration_all_ids.mapped('activity_id'):
raise ValidationError(_('The member your trying to add to the queue'
' is already registered for this activity'))

View File

@ -1,46 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Member adaptations """
import logging
from odoo import models, fields, api, _
_LOGGER = logging.getLogger(__name__)
class GolemMember(models.Model):
""" GOLEM Member adaptations """
_inherit = 'golem.member'
activity_queue_ids = fields.One2many('golem.activity.queue', 'member_id',
string='Pending registration')
@api.onchange('activity_registration_ids')
def _check_registration_number(self):
""" check activity registration number """
for member in self:
for registration in member.activity_registration_ids:
activity = registration.activity_id
if activity.places_remain < 0 and activity.queue_allowed:
message = _('This activity : {} is already full, please'
' discard changes and register in the queue.')
return {
'warning' : {
'title' : _('Warning'),
'message': message.format(activity.name),
}
}

View File

@ -1,3 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
golem_activity_queue_user_rule,GOLEM Activity Queue User Rule,model_golem_activity_queue,golem_base.group_golem_user,1,1,1,1
golem_activity_queue_manager_rule,GOLEM Activity Queue Manager Rule,model_golem_activity_queue,golem_base.group_golem_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 golem_activity_queue_user_rule GOLEM Activity Queue User Rule model_golem_activity_queue golem_base.group_golem_user 1 1 1 1
3 golem_activity_queue_manager_rule GOLEM Activity Queue Manager Rule model_golem_activity_queue golem_base.group_golem_manager 1 1 1 1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import test_golem_activity_queue, test_golem_activity, test_golem_member

View File

@ -1,134 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity testing """
from odoo.tests.common import TransactionCase
class TestGolemActivity(TransactionCase):
""" GOLEM Activity Queue testing """
def setUp(self):
""" Bootstrap activity """
super(TestGolemActivity, self).setUp()
self.season = self.env['golem.season'].create({'name': u'Season 1'})
self.data_member_1 = {'lastname': u'LAST1',
'firstname': u'First1',
'season_ids':[(4, self.season.id, False)]}
self.data_member_2 = {'lastname': u'LAST2',
'firstname': u'First2',
'season_ids':[(4, self.season.id, False)]}
self.member = self.env['golem.member']
type_id = self.env.ref('golem_activity.golem_activity_type_activity')
self.data_activity = {
'name': u'Activity 1',
'season_id': self.season.id,
'type_id': type_id.id
}
self.activity = self.env['golem.activity']
self.activity_registration = self.env['golem.activity.registration']
self.activity_queue = self.env['golem.activity.queue']
def test_activity_creation(self):
""" Test activity defaults for queue """
activity = self.activity.create(self.data_activity)
self.assertTrue(activity.queue_allowed)
self.assertTrue(activity.auto_registration_from_queue)
self.assertEqual(activity.queue_activity_number, 0)
self.assertFalse(activity.activity_registration_ids)
self.assertFalse(activity.activity_queue_ids)
def test_auto_registration_toggle(self):
""" Test Toggle Autoregistration from queue """
activity = self.activity.create(self.data_activity)
self.assertTrue(activity.auto_registration_from_queue)
activity.auto_registration_toggle()
self.assertFalse(activity.auto_registration_from_queue)
activity.auto_registration_toggle()
self.assertTrue(activity.auto_registration_from_queue)
def test_queue_allowed_toggle(self):
""" Test Toggle queue_allowed """
#création de 2 membre est une activité
member1 = self.member.create(self.data_member_1)
member2 = self.member.create(self.data_member_2)
activity = self.activity.create(self.data_activity)
registration_data = {'activity_id' : activity.id, 'member_id' : member1.id}
queue_data = {'activity_id' : activity.id, 'member_id' : member2.id}
self.assertTrue(activity.queue_allowed)
activity.places = 1
self.activity_registration.create(registration_data)
self.activity_queue.create(queue_data)
self.assertTrue(activity.auto_registration_from_queue)
activity.queue_allowed_toggle()
self.assertFalse(activity.queue_allowed)
self.assertFalse(activity.activity_queue_ids)
queue_activate_wizard_model = self.env['golem.activity.automated.queue.activate.wizard']
queue_activate_wizard = queue_activate_wizard_model.create({'activity_id': activity.id})
queue_activate_wizard.activate_queue()
self.assertTrue(activity.queue_allowed)
self.assertTrue(activity.auto_registration_from_queue)
def test_auto_registration(self):
""" Test auto registration from queue """
member1 = self.member.create(self.data_member_1)
member2 = self.member.create(self.data_member_2)
activity = self.activity.create(self.data_activity)
self.assertTrue(activity.queue_allowed)
self.assertTrue(activity.auto_registration_from_queue)
registration_data = {'activity_id' : activity.id, 'member_id' : member1.id}
queue_data = {'activity_id' : activity.id, 'member_id' : member2.id}
activity.places = 1
registration = self.activity_registration.create(registration_data)
self.activity_queue.create(queue_data)
self.assertEqual(activity.activity_registration_ids[0].member_id, member1)
self.assertEqual(activity.activity_queue_ids[0].member_id, member2)
registration.unlink()
self.assertEqual(activity.activity_registration_ids[0].member_id, member2)
self.assertFalse(activity.activity_queue_ids)
def test_delete_queue_member(self):
""" Test Delete Queue member if they directly register """
member1 = self.member.create(self.data_member_1)
member2 = self.member.create(self.data_member_2)
activity = self.activity.create(self.data_activity)
self.assertTrue(activity.queue_allowed)
self.assertTrue(activity.auto_registration_from_queue)
activity.auto_registration_toggle()
self.assertFalse(activity.auto_registration_from_queue)
registration_data = {'activity_id' : activity.id, 'member_id' : member1.id}
queue_data = {'activity_id' : activity.id, 'member_id' : member2.id}
activity.places = 1
registration = self.activity_registration.create(registration_data)
self.activity_queue.create(queue_data)
self.assertEqual(activity.activity_registration_ids[0].member_id, member1)
self.assertEqual(activity.activity_queue_ids[0].member_id, member2)
registration.unlink()
activity.activity_registration_ids = [(0, False, queue_data)]
self.assertFalse(activity.activity_queue_ids)
self.assertEqual(activity.activity_registration_ids[0].member_id, member2)

View File

@ -1,70 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity Queue testing """
from odoo.tests.common import TransactionCase
from odoo.exceptions import ValidationError
class TestGolemActivityQueue(TransactionCase):
""" GOLEM Activity Queue testing """
def setUp(self, *args, **kwargs):
""" Bootstrap ActivityQueue """
super(TestGolemActivityQueue, self).setUp(*args, **kwargs)
self.season = self.env['golem.season'].create({'name': u'Season 1'})
self.data_member_1 = {'lastname': u'LAST1',
'firstname': u'First1',
'season_ids':[(4, self.season.id, False)]}
self.data_member_2 = {'lastname': u'LAST2',
'firstname': u'First2',
'season_ids':[(4, self.season.id, False)]}
self.member = self.env['golem.member']
type_id = self.env.ref('golem_activity.golem_activity_type_activity')
self.data_activity = {
'name': u'Activity 1',
'season_id': self.season.id,
'type_id': type_id.id
}
self.activity = self.env['golem.activity']
self.activity_queue = self.env['golem.activity.queue']
self.activity_registration = self.env['golem.activity.registration']
def test_activity_queue_basic(self):
""" Test activity queue basics """
member1 = self.member.create(self.data_member_1)
activity = self.activity.create(self.data_activity)
activity.auto_registration_from_queue = False
activity_queue = self.activity_queue.create({'activity_id': activity.id,
'member_id': member1.id})
self.assertEqual(activity.activity_queue_ids[0], activity_queue)
self.assertEqual(member1.activity_queue_ids[0], activity_queue)
def test_check_member_registration(self):
""" Test activity queue fordib if already in activity """
member1 = self.member.create(self.data_member_1)
activity = self.activity.create(self.data_activity)
self.activity_registration.create({'activity_id': activity.id,
'member_id': member1.id})
self.assertEqual(activity.activity_registration_ids[0].member_id, member1)
with self.assertRaises(ValidationError) as err:
self.activity_queue.create({'activity_id': activity.id,
'member_id': member1.id})
self.assertIn('already registered for this activity', err.exception.args[0])

View File

@ -1,74 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Member testing """
from odoo.tests.common import TransactionCase
class TestGolemMember(TransactionCase):
""" GOLEM member testing """
def setUp(self, *args, **kwargs):
""" Bootstrap member """
super(TestGolemMember, self).setUp(*args, **kwargs)
#création du saison
self.season = self.env['golem.season'].create({'name': u'Season 1'})
self.data_member_1 = {'lastname': u'LAST1',
'firstname': u'First1',
'season_ids':[(4, self.season.id, False)]}
self.data_member_2 = {'lastname': u'LAST2',
'firstname': u'First2',
'season_ids':[(4, self.season.id, False)]}
self.member = self.env['golem.member']
type_id = self.env.ref('golem_activity.golem_activity_type_activity')
self.data_activity = {
'name': u'Activity 1',
'season_id': self.season.id,
'type_id': type_id.id
}
self.activity = self.env['golem.activity']
self.activity_registration = self.env['golem.activity.registration']
self.activity_queue = self.env['golem.activity.queue']
def test_member_creation(self):
""" Test member queue default """
member1 = self.member.create(self.data_member_1)
self.assertFalse(member1.activity_queue_ids)
def test_automated_registration(self):
""" Test automated registration """
member1 = self.member.create(self.data_member_1)
member2 = self.member.create(self.data_member_2)
activity = self.activity.create(self.data_activity)
registration_data = {'activity_id' : activity.id, 'member_id' : member1.id}
queue_data = {'activity_id' : activity.id, 'member_id' : member2.id}
self.assertTrue(activity.queue_allowed)
self.assertTrue(activity.auto_registration_from_queue)
activity.places = 1
registration = self.activity_registration.create(registration_data)
self.activity_queue.create(queue_data)
self.assertEqual(activity.activity_registration_ids[0].member_id, member1)
self.assertEqual(activity.activity_queue_ids[0].member_id, member2)
registration.unlink()
self.assertEqual(activity.activity_registration_ids[0].member_id, member2)
self.assertFalse(activity.activity_queue_ids)

View File

@ -1,96 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record model="ir.ui.view" id="golem_activity_queue_view_form">
<field name="name">GOLEM Activity Queue Form</field>
<field name="model">golem.activity.queue</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="activity_id"/>
<field name="season_id"/>
<field name="member_id"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- Search -->
<record model="ir.ui.view" id="golem_activity_queue_view_search">
<field name="name">GOLEM Activity Queue Search</field>
<field name="model">golem.activity.queue</field>
<field name="arch" type="xml">
<search>
<field name="member_id"/>
<field name="activity_id"/>
<field name="season_id" />
<filter name="season_default" string="Default season"
domain="[('is_default', '=', True)]" />
<separator />
<filter name="activity_full" string="Full Activity"
domain="[('places_remain', '=', 0)]" />
<filter name="activity_nfull" string="Not Full Activity"
domain="[('places_remain', '&gt;', 0)]" />
<group string="Group By">
<filter name="group_by_member" string="Member"
context="{'group_by': 'member_id'}"/>
<filter name="group_by_activity" string="Activity"
context="{'group_by': 'activity_id'}"/>
</group>
</search>
</field>
</record>
<!-- Tree -->
<record model="ir.ui.view" id="golem_activity_queue_view_tree">
<field name="name">GOLEM Activity Queue Tree</field>
<field name="model">golem.activity.queue</field>
<field name="arch" type="xml">
<tree editable="top"
colors="grey: places_remain == 0; blue : places_remain &gt;= 1">
<field name="sequence" widget="handle"/>
<field name="member_id"/>
<field name="activity_id"
domain="[('places_remain','&lt;' , 1), ('queue_allowed', '=', True), ('is_default', '=', True)]"
options="{'no_create': True}"/>
<field name="season_id" readonly='1'/>
<field name="create_date" readonly="1"/>
<field name='places_remain' />
</tree>
</field>
</record>
<!-- Action -->
<act_window id="golem_activity_queue_action" name="Activity queue"
res_model="golem.activity.queue" view_mode="tree" />
<!-- Menu -->
<menuitem id="golem_activity_queue_menu" name="Activity queue"
parent="golem_activity.golem_activity_menu"
action="golem_activity_queue_action"
sequence="20" />
</data>
</odoo>

View File

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Forms -->
<record id="golem_activity_form_inherit_golem_activity_queue"
model="ir.ui.view">
<field name="name">Add the queue registration items to activity form</field>
<field name="model">golem.activity</field>
<field name="inherit_id" ref="golem_activity.golem_activity_form" />
<field name="arch" type="xml">
<field name="activity_registration_ids" position="after">
<button name="register_from_queue" colspan="2"
string="Add from queue" type="object"
attrs="{'invisible':['|', ('queue_allowed', '=', False), '|',
('places_remain','=', 0), ('queue_activity_number', '=', 0)]}"/>
</field>
<page name="invoicing" position="before">
<page name="queue" string="Queue">
<group>
<field name="queue_allowed" readonly='1'/>
<field name="auto_registration_from_queue" readonly='1'/>
</group>
<group attrs="{'invisible': [('queue_allowed', '=', False)]}">>
<field name="queue_activity_number" readonly='1'/>
<field name="activity_queue_ids"
context="{'default_activity_id': active_id}" >
<tree editable="top">
<field name="sequence" widget="handle"/>
<field name="member_id"/>
<field name="activity_id" readonly="1" />
<field name="season_id" readonly="1" />
</tree>
</field>
<button name="register_from_queue" colspan="2"
string="Register from Queue" type="object"
attrs="{'invisible':['|', ('queue_allowed', '=', False), '|',
('places_remain','=', 0), ('queue_activity_number', '=', 0)]}"/>
</group>
</page>
</page>
<header position="inside">
<button class="oe_highlight" name="queue_allowed_toggle"
string="Add Queue" type="object"
attrs="{'invisible': [('queue_allowed', '=', True)]}"/>
<button class="oe_highlight" name="queue_allowed_toggle"
string="Remove Queue" type="object"
attrs="{'invisible': [('queue_allowed', '=', False)]}"
confirm="Are you sure you want to remove queue from this activity ? This will delete all elements currently registred in"/>
<button name="auto_registration_toggle"
string="Switch to automated registration from queue" type="object"
attrs="{'invisible': ['|', ('queue_allowed', '=', False),'&amp;', ('queue_allowed', '=', True), ('auto_registration_from_queue', '=', True)]}"
confirm="Are you sure you want to switch to automated registration from queue mode ?"/>
<button name="auto_registration_toggle"
string="Switch to manual registration from queue" type="object"
attrs="{'invisible': ['|', ('queue_allowed', '=', False),'&amp;', ('queue_allowed', '=', True), ('auto_registration_from_queue', '=', False)]}"
confirm="Are you sure you want to switch to manual registration from queue mode ?"/>
</header>
</field>
</record>
</data>
</odoo>

View File

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Forms -->
<record id="golem_member_form_inherit_golem_activity_queue"
model="ir.ui.view">
<field name="name">Queue adaptations on member form</field>
<field name="model">golem.member</field>
<field name="inherit_id" ref="golem_member.golem_member_form" />
<field name="arch" type="xml">
<page name="activities" position="after">
<page name="queue" string="Queue list">
<group>
<field name="activity_queue_ids"
context="{'default_member_id': active_id}">
<tree editable="top">
<field name="sequence" widget="handle"/>
<field name="activity_id"
domain="[('places_remain','&lt;' , 1), ('queue_allowed', '=', True), ('is_default', '=', True)]"
options="{'no_create': True}"/>
<field name="season_id" readonly="1" />
</tree>
</field>
</group>
</page>
</page>
</field>
</record>
</data>
</odoo>

View File

@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import golem_activity_automated_queue_activate

View File

@ -1,37 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity Automated Queue Activation """
from odoo import models, fields
class GolemActivityAutomatedQueueActivateWizard(models.TransientModel):
""" GOLEM Activity Automated Queue wizard : activate automated queue processing """
_name = 'golem.activity.automated.queue.activate.wizard'
activity_id = fields.Many2one('golem.activity')
auto_registration_from_queue = fields.Boolean(default=True)
def activate_queue(self):
""" Activate Queue for the activity"""
self.ensure_one()
activation = self[0]
activation.activity_id.write({
'queue_allowed': True,
'auto_registration_from_queue': activation.auto_registration_from_queue
})

View File

@ -1,47 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Forms -->
<record model="ir.ui.view" id="golem_activity_automated_queue_actiave_wizard_view_form">
<field name="name">GOLEM Activity Automated Queue Activate Wizard Form</field>
<field name="model">golem.activity.automated.queue.activate.wizard</field>
<field name="arch" type="xml">
<form string="Rejection reason">
<p colspan="2">
Are you sure you want to Add queue to this activity ?<br />
If yes please confirm if you want automated registration from queue to activity.
</p>
<group>
<field name="activity_id" invisible="1" />
<field name="auto_registration_from_queue"/>
</group>
<footer>
<button name="activate_queue" string="Confirm" type="object"
class="oe_highlight" />
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
</data>
</odoo>

View File

@ -1,36 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2017-2019 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{
'name': 'GOLEM Activity Member Registrations',
'summary': 'GOLEM Activities Member Registrations management',
'version': '10.0.1.6.4',
'category': 'GOLEM',
'author': 'Fabien Bourgeois, Michel Dessenne',
'license': 'AGPL-3',
'application': False,
'installable': True,
'depends': ['golem_activity', 'golem_member'],
'data': ['views/golem_activity_registration_views.xml',
'views/golem_member_views.xml',
'views/golem_activity_views.xml',
'report/golem_member_card_templates.xml',
'security/ir.model.access.csv',
'report/golem_activity_report_templates.xml',
'wizard/golem_activity_registration_analysis_wizard_views.xml',
'wizard/golem_member_analysis_views.xml']
}

View File

@ -1,383 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-21 10:49+0000\n"
"PO-Revision-Date: 2019-01-21 11:51+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<br/>Mobile :"
msgstr "<br/>Mobile :"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<i class=\"fa fa-envelope\"/> Email"
msgstr "<i class=\"fa fa-envelope\"/> Email"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<i class=\"fa fa-phone\"/> Phone"
msgstr "<i class=\"fa fa-phone\"/> Téléphone"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<i class=\"fa fa-university\"/>City"
msgstr "<i class=\"fa fa-university\"/>Ville"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<i class=\"fa fa-user\"/> Name"
msgstr "<i class=\"fa fa-user\"/>Nom"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_form_inherit_golem_activity_registration
msgid "Activities"
msgstr "Activités"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_activity_registration_ids
msgid "Activities for default season"
msgstr "Activités de la saison par défaut"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_activity_id
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_analysis_activity_id
msgid "Activity"
msgstr "Activité"
#. module: golem_activity_registration
#: model:ir.ui.menu,name:golem_activity_registration.golem_activity_registration_menu
msgid "Activity registrations"
msgstr "Inscriptions"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_age_computing
msgid "Age"
msgstr "Âge"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_activity_registration_all_ids
msgid "All activities"
msgstr "Toutes les activités"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_analysis_wizard_view_form
msgid "Analyse Registrations"
msgstr "Analyse des inscriptions"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_analyse_type
msgid "Analyse type"
msgstr "Type d'analyse"
#. module: golem_activity_registration
#: model:ir.actions.act_window,name:golem_activity_registration.golem_registrations_analysis_action
msgid "Analysis"
msgstr "Analyse"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Animator"
msgstr "Intervenant"
#. module: golem_activity_registration
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
msgid "At season start"
msgstr "Au début de la saison"
#. module: golem_activity_registration
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
msgid "At season stop"
msgstr "À la fin de la saison"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_tree
msgid "Base price"
msgstr "Prix de base"
#. module: golem_activity_registration
#: model:ir.model.fields,help:golem_activity_registration.field_golem_activity_registration_activity_price
msgid "Base price to compute the customer price. Sometimes called the catalog price."
msgstr "Prix de base pour calculer le prix client. Parfois appelé prix catalogue."
#. module: golem_activity_registration
#: selection:golem.activity.registration.analysis.wizard,analyse_type:0
msgid "By area and activity"
msgstr "Par territoire et activité"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_search
msgid "By season"
msgstr "Par saison"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_create_uid
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_create_uid
msgid "Created by"
msgstr "Créé par"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_create_date
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_create_date
msgid "Created on"
msgstr "Créé le"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Dates"
msgstr "Dates"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Day"
msgstr "Jour"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_search
msgid "Default season"
msgstr "Saison par défaut"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_is_default
msgid "Default season?"
msgstr "Saison par défaut?"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_display_name
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "Enroled members :"
msgstr "Usagers :"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration
msgid "Full"
msgstr "Plein"
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_activity
msgid "GOLEM Activity"
msgstr "Activité"
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_activity_registration
msgid "GOLEM Activity Registration"
msgstr "Inscription à l'activité"
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_activity_registration_analysis_wizard
msgid "GOLEM Activity Registration Analysis Wizard Adaptation "
msgstr "GOLEM Activity Registration Analysis Wizard Adaptation "
#. module: golem_activity_registration
#: model:ir.actions.act_window,name:golem_activity_registration.golem_activity_registration_action
msgid "GOLEM Activity Registration List"
msgstr "Liste des inscriptions aux activités"
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_member
msgid "GOLEM Member"
msgstr "Adhérent"
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_member_analysis
msgid "GOLEM Members Analysis Adaption"
msgstr "GOLEM Members Analysis Adaption"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Hours"
msgstr "Horaires"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_id
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_id
msgid "ID"
msgstr "ID"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "Landline :"
msgstr "Fixe :"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration___last_update
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard___last_update
msgid "Last Modified on"
msgstr "Dernière Modification le"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_write_uid
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_write_date
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/wizard/golem_activity_registration_analysis_wizard.py:86
#, python-format
msgid "Member Analysis"
msgstr "Analyse des usagers"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_activity_registration_ids
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_form_inherit_registration
msgid "Members"
msgstr "Adhérents"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_name
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Name"
msgstr "Nom"
#. module: golem_activity_registration
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
msgid "Now"
msgstr "Ce jour"
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:39
#: sql_constraint:golem.activity:0
#, python-format
msgid "Number of places cannot be negative."
msgstr "Le nombre de places ne peut pas être négatif"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "On default season, there is no activity for this member."
msgstr "Sur la saison par défaut, il n'y a pas d'activité pour cet usager."
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_only_for_subscriber
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration
msgid "Only for subscriber"
msgstr "Réservé aux adhérents"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_end
msgid "Period end"
msgstr "Fin de la période"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_start
msgid "Period start"
msgstr "Début de la période"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places
msgid "Places"
msgstr "Places"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places_used
msgid "Places used"
msgstr "Places prises"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_searches_inherit_golem_activity_registration
msgid "Practiced activities"
msgstr "Activités pratiquées"
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/wizard/golem_activity_registration_analysis_wizard.py:36
#: model:ir.ui.menu,name:golem_activity_registration.golem_activity_registration_analysis_menu
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_analysis_wizard_view_form
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_end_activity_area
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_now_activity_area
#, python-format
msgid "Registration Analysis"
msgstr "Analyse des inscriptions"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_tree_inherit_registration
msgid "Remain"
msgstr "Reste"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places_remain
msgid "Remaining places"
msgstr "Places restantes"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_activity_price
msgid "Sale Price"
msgstr "Prix de vente"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_id
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_season_id
msgid "Season"
msgstr "Saison"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_start_activity_area
msgid "Service User Analysis"
msgstr "Analyse des usagers"
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_member_id
msgid "Service user"
msgstr "Usager"
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:71
#, python-format
msgid "Sorry, there is no more place !"
msgstr "Désolé, il n'y a plus de place disponible !"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_form
msgid "Subscription"
msgstr "Inscription"
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:119
#, python-format
msgid "Subscription can not be executed : the targeted activity is only for subscriber."
msgstr "L'inscription n'a pas pu être faite : l'activité choisie est réservée aux adhérents."
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:123
#, python-format
msgid "Subscription can not be executed : the targeted member is not on the same season as the activity."
msgstr "L'inscription n'a pas pu être enregistrée : l'usager visé n'est pas ahdérant pour la même saison que celle pendant laquelle se déroule l'activité."
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:93
#: sql_constraint:golem.activity.registration:0
#, python-format
msgid "This member has already been registered for this activity."
msgstr "L'usager a déjà été inscrit à cette activité."
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_tree
msgid "Total"
msgstr "Total"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Type"
msgstr "Type"

View File

@ -1,383 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-21 10:49+0000\n"
"PO-Revision-Date: 2019-01-21 10:49+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<br/>Mobile :"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<i class=\"fa fa-envelope\"/> Email"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<i class=\"fa fa-phone\"/> Phone"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<i class=\"fa fa-university\"/>City"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "<i class=\"fa fa-user\"/> Name"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_form_inherit_golem_activity_registration
msgid "Activities"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_activity_registration_ids
msgid "Activities for default season"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_activity_id
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_analysis_activity_id
msgid "Activity"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.menu,name:golem_activity_registration.golem_activity_registration_menu
msgid "Activity registrations"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_age_computing
msgid "Age"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_activity_registration_all_ids
msgid "All activities"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_analysis_wizard_view_form
msgid "Analyse Registrations"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_analyse_type
msgid "Analyse type"
msgstr ""
#. module: golem_activity_registration
#: model:ir.actions.act_window,name:golem_activity_registration.golem_registrations_analysis_action
msgid "Analysis"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Animator"
msgstr ""
#. module: golem_activity_registration
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
msgid "At season start"
msgstr ""
#. module: golem_activity_registration
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
msgid "At season stop"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_tree
msgid "Base price"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,help:golem_activity_registration.field_golem_activity_registration_activity_price
msgid "Base price to compute the customer price. Sometimes called the catalog price."
msgstr ""
#. module: golem_activity_registration
#: selection:golem.activity.registration.analysis.wizard,analyse_type:0
msgid "By area and activity"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_search
msgid "By season"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_create_uid
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_create_uid
msgid "Created by"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_create_date
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_create_date
msgid "Created on"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Dates"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Day"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_search
msgid "Default season"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_is_default
msgid "Default season?"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_display_name
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_display_name
msgid "Display Name"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "Enroled members :"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration
msgid "Full"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_activity
msgid "GOLEM Activity"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_activity_registration
msgid "GOLEM Activity Registration"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_activity_registration_analysis_wizard
msgid "GOLEM Activity Registration Analysis Wizard Adaptation "
msgstr ""
#. module: golem_activity_registration
#: model:ir.actions.act_window,name:golem_activity_registration.golem_activity_registration_action
msgid "GOLEM Activity Registration List"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_member
msgid "GOLEM Member"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model,name:golem_activity_registration.model_golem_member_analysis
msgid "GOLEM Members Analysis Adaption"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Hours"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_id
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_id
msgid "ID"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
msgid "Landline :"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration___last_update
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard___last_update
msgid "Last Modified on"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_write_uid
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_write_uid
msgid "Last Updated by"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_write_date
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_write_date
msgid "Last Updated on"
msgstr ""
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/wizard/golem_activity_registration_analysis_wizard.py:86
#, python-format
msgid "Member Analysis"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_activity_registration_ids
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_form_inherit_registration
msgid "Members"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_name
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Name"
msgstr ""
#. module: golem_activity_registration
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
msgid "Now"
msgstr ""
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:39
#: sql_constraint:golem.activity:0
#, python-format
msgid "Number of places cannot be negative."
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "On default season, there is no activity for this member."
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_only_for_subscriber
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration
msgid "Only for subscriber"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_end
msgid "Period end"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_start
msgid "Period start"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places
msgid "Places"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places_used
msgid "Places used"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_searches_inherit_golem_activity_registration
msgid "Practiced activities"
msgstr ""
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/wizard/golem_activity_registration_analysis_wizard.py:36
#: model:ir.ui.menu,name:golem_activity_registration.golem_activity_registration_analysis_menu
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_analysis_wizard_view_form
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_end_activity_area
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_now_activity_area
#, python-format
msgid "Registration Analysis"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_tree_inherit_registration
msgid "Remain"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places_remain
msgid "Remaining places"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_activity_price
msgid "Sale Price"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_id
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_season_id
msgid "Season"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_start_activity_area
msgid "Service User Analysis"
msgstr ""
#. module: golem_activity_registration
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_member_id
msgid "Service user"
msgstr ""
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:71
#, python-format
msgid "Sorry, there is no more place !"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_form
msgid "Subscription"
msgstr ""
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:119
#, python-format
msgid "Subscription can not be executed : the targeted activity is only for subscriber."
msgstr ""
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:123
#, python-format
msgid "Subscription can not be executed : the targeted member is not on the same season as the activity."
msgstr ""
#. module: golem_activity_registration
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:93
#: sql_constraint:golem.activity.registration:0
#, python-format
msgid "This member has already been registered for this activity."
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_tree
msgid "Total"
msgstr ""
#. module: golem_activity_registration
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
msgid "Type"
msgstr ""

View File

@ -1,125 +0,0 @@
# -*- coding: utf-8 -*-
#
# Copyright 2017-2019 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity Registration """
from odoo import models, fields, api, _
class GolemMember(models.Model):
""" GOLEM Member adaptations """
_inherit = 'golem.member'
activity_registration_ids = fields.One2many('golem.activity.registration',
'member_id',
'Activities for default season',
domain=[('is_default', '=', True)])
activity_registration_all_ids = fields.One2many('golem.activity.registration',
'member_id', 'All activities')
class GolemActivity(models.Model):
""" GOLEM Activity adaptations """
_inherit = 'golem.activity'
_sql_constraints = [('golem_activity_places_signed',
'CHECK (places >= 0)',
_('Number of places cannot be negative.'))]
activity_registration_ids = fields.One2many('golem.activity.registration',
'activity_id', 'Members',
index=True)
places_used = fields.Integer('Places used', compute='compute_places_used',
store=True)
only_for_subscriber = fields.Boolean(default=False)
@api.multi
@api.depends('activity_registration_ids')
def compute_places_used(self):
""" Computes used places """
for activity in self:
activity.places_used = len(activity.activity_registration_ids)
places = fields.Integer('Places', default=20)
places_remain = fields.Integer('Remaining places', store=True,
compute='_compute_places_remain')
@api.multi
@api.depends('places', 'places_used')
def _compute_places_remain(self):
""" Computes remaining places """
for activity in self:
activity.places_remain = activity.places - activity.places_used
@api.constrains('places_remain')
def _check_remaining_places(self):
""" Forbid inscription when there is no more place """
for activity in self:
if activity.places_remain < 0:
emsg = _('Sorry, there is no more place !')
raise models.ValidationError(emsg)
class GolemActivityRegistration(models.Model):
""" GOLEM Activity Registration """
_name = 'golem.activity.registration'
_description = 'GOLEM Activity Registration'
_rec_name = 'activity_id'
member_id = fields.Many2one('golem.member', string='Service user',
required=True, ondelete='cascade', index=True)
activity_id = fields.Many2one('golem.activity', required=True, index=True,
string='Activity', ondelete='cascade')
activity_price = fields.Float(related='activity_id.list_price')
season_id = fields.Many2one(string='Season',
related='activity_id.season_id', store=True)
is_default = fields.Boolean('Default season?',
related='activity_id.is_default')
_sql_constraints = [
('registration_uniq', 'UNIQUE (member_id, activity_id)',
_('This member has already been registered for this activity.'))]
@api.onchange('activity_id', 'activity_id.only_for_subscriber')
def onchange_activity_subcrib(self):
""" If activity only for subscribers : do not allow non subscribers """
domain = [('is_default', '=', True)]
if self.activity_id.only_for_subscriber:
domain.append(('membership_state', 'not in', ('none', 'canceled', 'old')))
return {'domain': {'member_id': domain}}
@api.onchange('member_id')
def onchange_member_subcrib(self):
""" If not subscriber : do not show subscribers only activities """
domain = [('is_default', '=', True)]
if self.member_id and self.member_id.membership_state in ('none', 'canceled', 'old'):
domain.append(('only_for_subscriber', '=', False))
return {'domain': {'activity_id': domain}}
@api.constrains('member_id', 'activity_id')
def _check_season_reliability(self):
""" Forbid registration when member season if not coherent with
activity season or are duplicates """
for reg in self:
if (reg.activity_id.only_for_subscriber and \
reg.member_id.membership_state in ['none', 'canceled', 'old']):
emsg = _('Subscription can not be executed : the targeted '
'activity is only for subscriber.')
raise models.ValidationError(emsg)
if reg.activity_id.season_id not in reg.member_id.season_ids:
emsg = _('Subscription can not be executed : the targeted '
'member is not on the same season as the activity.')
raise models.ValidationError(emsg)

View File

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<template id="golem_activity_report_template_inherited_golem_activity_registration"
inherit_id="golem_activity.golem_activity_report_template">
<xpath expr="//div[@id='page_report_activity']" position="inside">
<div class="col-xs-4 text-left" style="margin-top: 50px;" >
<h4 style="text-decoration: underline;">
Enroled members : <span t-field="activity.places_used" />
</h4>
</div>
<table class="table table-striped" id="members_table">
<thead>
<tr>
<th class="col-xs-3"><i class="fa fa-user" /> Name</th>
<th class="col-xs-3"><i class="fa fa-phone" /> Phone</th>
<th class="col-xs-3"><i class="fa fa-envelope" /> Email</th>
<th class="col-xs-3"><i class="fa fa-university" />City</th>
</tr>
</thead>
<tbody>
<tr id="activity_registration_line"
t-foreach="activity.activity_registration_ids" t-as="reg">
<td class="col-xs-3">
<span t-field="reg.member_id.name" />
</td>
<td class="col-xs-3">
<t t-set="two_phones" t-value="reg.member_id.phone and reg.member_id.mobile" />
<t t-if="reg.member_id.phone">
<t t-if="two_phones">
Landline :
</t>
<span t-field="reg.member_id.phone" />
</t>
<t t-if="reg.member_id.mobile">
<t t-if="two_phones">
<br />Mobile :
</t>
<span t-field="reg.member_id.mobile" />
</t>
</td>
<td class="col-xs-3">
<span t-field="reg.member_id.email" />
</td>
<td class="col-xs-3">
<span t-field="reg.member_id.city" />
</td>
</tr>
</tbody>
</table>
</xpath>
</template>
</odoo>

View File

@ -1,73 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
Copyright 2018 Michel Dessenne <michel@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<template id="golem_member_card_template_inherit_golem_activity_resgitration"
inherit_id="golem_member.golem_member_card_template">
<xpath expr="//div[@id='page_report_member']" postion="inside">
<h3>Activities</h3>
<p t-if="not member.activity_registration_ids">
On default season, there is no activity for this member.
</p>
<table t-else="" id="table_activity_ref" class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Animator</th>
<th>Day</th>
<th class="text-right">Hours</th>
<th class="text-right">Dates</th>
</tr>
</thead>
<tbody>
<tr t-foreach="member.activity_registration_ids" t-as="reg">
<td>
<span t-field="reg.activity_id.name" />
</td>
<td>
<span t-field="reg.activity_id.type_id.name" />
</td>
<td>
<span t-field="reg.activity_id.animator_id" />
</td>
<td>
<span t-field="reg.activity_id.weekday" />
</td>
<td class="text-right">
<t t-esc="'%02d:%02d' % (int(reg.activity_id.hour_start), round(reg.activity_id.hour_start % 1 * 60))" />
-
<t t-esc="'%02d:%02d' % (int(reg.activity_id.hour_stop), round(reg.activity_id.hour_stop % 1 * 60))" />
</td>
<td class="text-right">
<span t-if="reg.activity_id.is_fullseason" t-field="season.date_start" />
<span t-else="" t-field="reg.activity_id.date_start" />
-
<span t-if="reg.activity_id.is_fullseason" t-field="season.date_end" />
<span t-else="" t-field="reg.activity_id.date_stop" />
</td>
</tr>
</tbody>
</table>
</xpath>
</template>
</odoo>

View File

@ -1,3 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_golem_activity_registration_user,Access GOLEM Activity Registration User,model_golem_activity_registration,golem_base.group_golem_user,1,1,1,1
access_golem_activity_registration_manager,Access GOLEM Activity Registration Manager,model_golem_activity_registration,golem_base.group_golem_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_golem_activity_registration_user Access GOLEM Activity Registration User model_golem_activity_registration golem_base.group_golem_user 1 1 1 1
3 access_golem_activity_registration_manager Access GOLEM Activity Registration Manager model_golem_activity_registration golem_base.group_golem_manager 1 1 1 1

View File

@ -1,93 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017-2019 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record id="golem_activity_registration_form" model="ir.ui.view">
<field name="name">Activity registration form</field>
<field name="model">golem.activity.registration</field>
<field name="arch" type="xml">
<form>
<header></header>
<sheet>
<group>
<group name="subscription" string="Subscription">
<field name="activity_id" />
<field name="season_id" />
<field name="member_id" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- Tree -->
<record id="golem_activity_registration_tree" model="ir.ui.view">
<field name="name">Activity registration list</field>
<field name="model">golem.activity.registration</field>
<field name="arch" type="xml">
<tree create="true" edit="true" delete="false" editable="top">
<field name="season_id" readonly="1"
invisible="not context.get('season_show', 1)" />
<field name="member_id" domain="[('is_default', '=', True)]"
invisible="not context.get('member_show', 1)" />
<field name="activity_id" domain="[('is_default', '=', True)]"
invisible="not context.get('activity_show', 1)" />
<field name="activity_price" string="Base price" sum="Total"
invisible="not context.get('activity_show', 1)" readonly="1" />
</tree>
</field>
</record>
<!-- Search -->
<record id="golem_activity_registration_search" model="ir.ui.view">
<field name="name">GOLEM Activity Registration searches</field>
<field name="model">golem.activity.registration</field>
<field name="arch" type="xml">
<search>
<field name="season_id" />
<field name="member_id" />
<field name="activity_id" />
<filter name="season_default" string="Default season"
domain="[('is_default', '=', True)]" />
<filter name="group_season" string="By season"
context="{'group_by': 'season_id'}"/>
</search>
</field>
</record>
<!-- Action -->
<record id="golem_activity_registration_action" model="ir.actions.act_window">
<field name="name">GOLEM Activity Registration List</field>
<field name="res_model">golem.activity.registration</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Menu -->
<menuitem id="golem_activity_registration_menu" name="Activity registrations"
parent="golem_activity.golem_activity_menu"
action="golem_activity_registration_action"
groups="golem_base.group_golem_user"
sequence="20" />
</data>
</odoo>

View File

@ -1,79 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record id="golem_activity_form_inherit_registration"
model="ir.ui.view">
<field name="name">Activity Registrations and Places</field>
<field name="model">golem.activity</field>
<field name="inherit_id" ref="golem_activity.golem_activity_form" />
<field name="arch" type="xml">
<group name="places" position="inside">
<field name="places" />
</group>
<page name="session" position="after">
<page string="Members">
<group>
<field name="places_remain" readonly="True" />
<field name="activity_registration_ids"
context="{'default_activity_id': active_id, 'season_show': 0, 'activity_show': 0}" />
</group>
</page>
</page>
<field name="audience_id" position="before">
<field name="only_for_subscriber"/>
</field>
</field>
</record>
<!-- Tree -->
<record id="golem_activity_tree_inherit_registration" model="ir.ui.view">
<field name="name">Activity Tree registrations additions</field>
<field name="model">golem.activity</field>
<field name="inherit_id" ref="golem_activity.golem_activity_tree" />
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="colors">red: places_remain == 0;orange: places_remain &lt;= 4;</attribute>
</tree>
<field name="hour_start_display" position="after">
<field name="places" invisible="True" />
<field name="places_remain" string="Remain" />
</field>
</field>
</record>
<!-- Search -->
<record id="golem_activity_search_inherit_registration" model="ir.ui.view">
<field name="name">Activity Search registrations additions</field>
<field name="model">golem.activity</field>
<field name="inherit_id" ref="golem_activity.golem_activity_search" />
<field name="arch" type="xml">
<filter name="season_default" position="after">
<filter name="full_activity" string="Full"
domain="[('places_remain', '=', 0)]" />
<filter name="only_for_subscriber" string="Only for subscriber"
domain="[('only_for_subscriber', '=', True)]"/>
</filter>
</field>
</record>
</data>
</odoo>

View File

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record id="golem_member_form_inherit_golem_activity_registration"
model="ir.ui.view">
<field name="name">Add activities registrations to member form</field>
<field name="model">golem.member</field>
<field name="inherit_id" ref="golem_member.golem_member_form" />
<field name="arch" type="xml">
<page name="membership" position="before">
<page name="activities" string="Activities">
<field name="id" invisible="1" />
<group>
<field name="activity_registration_ids"
attrs="{'readonly': [('id', '=', False)]}"
context="{'default_member_id': active_id, 'member_show': 0}" />
<field name="activity_registration_all_ids" readonly="1"
context="{'member_show': 0}" />
</group>
</page>
</page>
</field>
</record>
<!-- Searches -->
<record id="golem_member_searches_inherit_golem_activity_registration"
model="ir.ui.view">
<field name="name">Add activities registrations to member searches</field>
<field name="model">golem.member</field>
<field name="inherit_id" ref="golem_member.golem_member_search" />
<field name="arch" type="xml">
<field name="season_ids" position="after">
<field name="activity_registration_all_ids" widget="many2one"
string="Practiced activities" />
</field>
</field>
</record>
</data>
</odoo>

View File

@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import golem_activity_registration_analysis_wizard, golem_member_analysis

View File

@ -1,106 +0,0 @@
# -*- coding: utf-8 -*-
#
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity Registration Analysis Wizard Management """
import logging
from odoo import models, fields, api, _
_LOGGER = logging.getLogger(__name__)
class GolemActivityRegistrationAnalysisWizard(models.TransientModel):
""" GOLEM Activity Registration Analysis Wizard Management """
_name = 'golem.activity.registration.analysis.wizard'
_description = 'GOLEM Activity Registration Analysis Wizard Management '
def default_season(self):
""" Get default season """
domain = [('is_default', '=', True)]
return self.env['golem.season'].search(domain, limit=1)
name = fields.Char(default='/')
season_id = fields.Many2one('golem.season', 'Season', required=True,
default=default_season, ondelete='cascade')
season_start = fields.Date(related='season_id.date_start')
season_end = fields.Date(related='season_id.date_end')
analyse_type = fields.Selection([('activity_area', 'By area and activity')],
default='activity_area', required=True)
age_computing = fields.Selection([('season_start', 'At season start'),
('season_end', 'At season stop'),
('now', 'Now')], required=True,
default='season_start', string='Age')
@api.multi
def get_pivot_view(self):
""" get pivot view """
self.ensure_one()
rec = self[0]
ref = u''
if rec.age_computing == 'season_start':
if rec.analyse_type == 'activity_area':
ref = (u'golem_activity_registration.'
'golem_member_analysis_pivot_age_start_activity_area')
elif rec.age_computing == 'season_end':
if rec.analyse_type == 'activity_area':
ref = (u'golem_activity_registration.'
'golem_member_analysis_pivot_age_end_activity_area')
else: # now
if rec.analyse_type == 'activity_area':
ref = (u'golem_activity_registration.'
'golem_member_analysis_pivot_age_now_activity_area')
return self.env.ref(ref, False)
@api.multi
def get_registrations(self):
""" Returns registrations """
self.ensure_one()
return self.env['golem.activity.registration'].search(
[('season_id', '=', self[0].season_id.id)]
)
@api.multi
def registration_analyse(self):
""" registration analyse """
self.ensure_one()
analysis_rec = self[0]
# Remove existing analysis lines for current analysis
self.env['golem.member.analysis'].search(
[('resgistration_analysis_id', '=', analysis_rec.id)]
).unlink()
registrations = analysis_rec.get_registrations()
if registrations:
for registration in registrations:
self.env['golem.member.analysis'].create({
'season_id': analysis_rec.season_id.id,
'member_id': registration.member_id.id,
'activity_id': registration.activity_id.id,
'resgistration_analysis_id': analysis_rec.id
})
analyse_pivot = analysis_rec.get_pivot_view()
return {
'name': _('Registration Analysis'),
'type': 'ir.actions.act_window',
'res_model': 'golem.member.analysis',
'domain': [('resgistration_analysis_id', '=', analysis_rec.id)],
'view_type': 'pivot',
'view_mode': 'pivot',
'view_id': analyse_pivot.id,
'target': 'current',
}

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Forms -->
<record model="ir.ui.view" id="golem_activity_registration_analysis_wizard_view_form">
<field name="name">GOLEM Activity Registration Analyse Wizard Form</field>
<field name="model">golem.activity.registration.analysis.wizard</field>
<field name="arch" type="xml">
<form string="Registration Analysis">
<header>
<button name="registration_analyse" string="Analyse Registrations"
type="object" class="oe_highlight" />
</header>
<sheet>
<group>
<group>
<field name="season_id" options="{'no_create': True}"/>
</group>
<group>
<field name="season_start" readonly="1"/>
<field name="season_end" readonly="1"/>
</group>
<group>
<field name="analyse_type" widget="radio"/>
<field name="age_computing" widget="radio"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- Actions -->
<act_window id="golem_registrations_analysis_action" name="Analysis"
res_model="golem.activity.registration.analysis.wizard" view_mode="form"
target="current"/>
<menuitem id="golem_activity_registration_analysis_menu"
name="Registration Analysis"
parent="golem_activity.golem_activity_menu"
action="golem_registrations_analysis_action" sequence="50" />
</data>
</odoo>

View File

@ -1,33 +0,0 @@
# -*- coding: utf-8 -*-
#
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Members Analysis Adaptation """
import logging
from odoo import models, fields, api, _
_LOGGER = logging.getLogger(__name__)
class GolemMemberAnalysis(models.TransientModel):
""" GOLEM Member Analysis Adaptation """
_inherit = 'golem.member.analysis'
_description = 'GOLEM Member Analysis Adaptation'
resgistration_analysis_id = fields.Many2one(
'golem.activity.registration.analysis.wizard', index=True
)
activity_id = fields.Many2one('golem.activity', 'Activity')

View File

@ -1,60 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Pivots -->
<record id="golem_member_analysis_pivot_age_start_activity_area" model="ir.ui.view">
<field name="name">Golem Member Analysis Age Start Activity Area Pivot</field>
<field name="model">golem.member.analysis</field>
<field name="arch" type="xml">
<pivot string="Service User Analysis">
<field name="age_range_start_season" type="col"/>
<field name="activity_id" type="row"/>
<field name="area_id" type="row"/>
</pivot>
</field>
</record>
<record id="golem_member_analysis_pivot_age_end_activity_area" model="ir.ui.view">
<field name="name">Golem Member Analysis Age End Activity Area Pivot</field>
<field name="model">golem.member.analysis</field>
<field name="arch" type="xml">
<pivot string="Registration Analysis">
<field name="age_range_end_season" type="col"/>
<field name="activity_id" type="row"/>
<field name="area_id" type="row"/>
</pivot>
</field>
</record>
<record id="golem_member_analysis_pivot_age_now_activity_area" model="ir.ui.view">
<field name="name">Golem Member Analysis Age Now Activity Area Pivot</field>
<field name="model">golem.member.analysis</field>
<field name="arch" type="xml">
<pivot string="Registration Analysis">
<field name="age_range_now" type="col"/>
<field name="activity_id" type="row"/>
<field name="area_id" type="row"/>
</pivot>
</field>
</record>
</data>
</odoo>

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import models, wizard

View File

@ -1,41 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018-2019 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{
'name': 'GOLEM Activity Registration Custom Price',
'summary': 'GOLEM Activity Registration Custom Price',
'description': '''GOLEM Activity Registration Custom Price :
- allow set of 1:n slices based on family quotient ;
- allow set 1:n root area data ;
- allow set price per area and slice ;
- computes automatically applicable price ;
- anticipate ruleset to be implemented for computing.''',
'version': '10.0.0.3.2',
'category': 'GOLEM',
'author': 'Fabien Bourgeois',
'license': 'AGPL-3',
'application': False,
'installable': True,
'depends': ['golem_activity_registration_payment',
'golem_member_familyquotient'],
'data': ['security/ir.model.access.csv',
'views/golem_payment_rule_quotient_slice_views.xml',
'views/golem_member_views.xml',
'views/golem_activity_views.xml',
'wizard/golem_activity_registration_invoicing_views.xml',
'wizard/golem_member_analysis_views.xml']
}

View File

@ -1,268 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration_custom_price
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-21 10:20+0000\n"
"PO-Revision-Date: 2019-01-21 11:21+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_activity_id
msgid "Activity id"
msgstr "Activité liée"
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Are you sure you want to RESET ALL options ?"
msgstr "Êtes-vous sûr de vouloir REINITIALISER TOUTES les options tarifaires ?"
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Are you sure you want to apply default price to all other options ?"
msgstr "Êtes-vous sûr de vouloir appliquer le tarif par défaut aux autres options ?"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_area_id
msgid "Area"
msgstr "Territoire"
#. module: golem_activity_registration_custom_price
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_partner_area_menu
msgid "Areas"
msgstr "Territoires"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,help:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_activity_price
msgid "Base price to compute the customer price. Sometimes called the catalog price."
msgstr "Prix de base pour calculer le prix usager. Parfois appelé prix catalogue."
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_create_uid
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_create_uid
msgid "Created by"
msgstr "Créé par"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_create_date
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_create_date
msgid "Created on"
msgstr "Créé le"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_currency_id
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_currency_id
msgid "Currency id"
msgstr "Currency id"
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:66
#, python-format
msgid "Current family quotient slice cannot be included into another existing slice."
msgstr "La tranche de quotient familial ne peut être incluse dans une tranche existante."
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:30
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_registration_invoicing_form_inherit_custom_price
#, python-format
msgid "Default price"
msgstr "Prix par défaut"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_display_name
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: golem_activity_registration_custom_price
#: model:ir.actions.act_window,name:golem_activity_registration_custom_price.golem_payment_rule_qfslice_action
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_payment_rule_qfslice_menu
msgid "Family Quotients"
msgstr "Quotients familiaux"
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:62
#, python-format
msgid "Family quotient and area"
msgstr "Quotient familial et territoire"
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:60
#, python-format
msgid "Family quotient but random area"
msgstr "Quotient familial mais territoire aléatoire"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_family_quotient_from
msgid "Family quotient from"
msgstr "QF à partir de"
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:56
#, python-format
msgid "Family quotient from is in range of an existing slice."
msgstr "La borne basse du quotient familial fait partie d'une tranche existante."
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_slice_id
msgid "Family quotient slice"
msgstr "Tranche de quotient familial"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_member_analysis_family_quotient_slice_id
msgid "Family quotient slice id"
msgstr "Tranche de quotient familial"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_family_quotient_to
msgid "Family quotient to"
msgstr "QF jusqu'à"
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:61
#, python-format
msgid "Family quotient to is in range of an existing slice."
msgstr "La borne haute du quotient familial fait partie d'une tranche existante."
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity
msgid "GOLEM Activity"
msgstr "Activité"
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity_price_line
msgid "GOLEM Activity Price Line"
msgstr "GOLEM Activity Price Line"
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity_registration_invoicing_line
msgid "GOLEM Activity Registration Invoicing Lines"
msgstr "GOLEM Activity Registration Invoicing Lines"
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member
msgid "GOLEM Member"
msgstr "Usager"
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member_analysis_wizard
msgid "GOLEM Members Analysis Wizard Adaptation"
msgstr "GOLEM Members Analysis Wizard Adaptation"
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member_analysis
msgid "GOLEM Members Analysis Adaption"
msgstr "GOLEM Members Analysis Adaption"
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_payment_rule_familyquotient_slice
msgid "GOLEM Payment Rule Family Quotient Slice"
msgstr "GOLEM Payment Rule Family Quotient Slice"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_id
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_id
msgid "ID"
msgstr "ID"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line___last_update
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice___last_update
msgid "Last Modified on"
msgstr "Dernière Modification le"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_write_uid
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_write_date
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_name
msgid "Name"
msgstr "Nom"
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Populates other / new options with default price"
msgstr "Alimenter les autres ou nouvelles options avec le tarif par défaut"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_price
msgid "Price"
msgstr "Prix"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_ids
msgid "Price lines"
msgstr "Lignes tarifaires"
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Prices"
msgstr "Tarifs"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_pricing_info
msgid "Pricing info"
msgstr "Information tarifaire"
#. module: golem_activity_registration_custom_price
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_payment_rule_menu
msgid "Pricing rules"
msgstr "Règles tarifaires"
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Resets all options with default price"
msgstr "Réinitialiser toutes les options tarifaires avec le prix par défaut"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_activity_price
msgid "Sale Price"
msgstr "Prix de vente"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_area_sequence
msgid "Sequence"
msgstr "Séquence"
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_member_analysis_pivot_fquotientslice_area
msgid "Service User Analysis"
msgstr "Analyse des usagers"
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:49
#, python-format
msgid "The 'to' family quotient must be higher than the 'from' one."
msgstr "La borne haute du quotient familial doit être supérieure à la borne basse."
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_activity_price_line.py:30
#: sql_constraint:golem.activity.price.line:0
#, python-format
msgid "This activity, geo rule, FQ slice rule has already been used."
msgstr "Cette activité, ce territoire et cette tranche QF ont déjà été renseignées."
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:31
#: sql_constraint:golem.payment.rule.familyquotient.slice:0
#, python-format
msgid "This name has already been used. It must be unique."
msgstr "Ce nom a déjà été utilisé. Il doit être unique."

View File

@ -1,268 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration_custom_price
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-21 10:20+0000\n"
"PO-Revision-Date: 2019-01-21 10:20+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_activity_id
msgid "Activity id"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Are you sure you want to RESET ALL options ?"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Are you sure you want to apply default price to all other options ?"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_area_id
msgid "Area"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_partner_area_menu
msgid "Areas"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,help:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_activity_price
msgid "Base price to compute the customer price. Sometimes called the catalog price."
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_create_uid
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_create_uid
msgid "Created by"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_create_date
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_create_date
msgid "Created on"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_currency_id
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_currency_id
msgid "Currency id"
msgstr ""
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:66
#, python-format
msgid "Current family quotient slice cannot be included into another existing slice."
msgstr ""
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:30
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_registration_invoicing_form_inherit_custom_price
#, python-format
msgid "Default price"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_display_name
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_display_name
msgid "Display Name"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.actions.act_window,name:golem_activity_registration_custom_price.golem_payment_rule_qfslice_action
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_payment_rule_qfslice_menu
msgid "Family Quotients"
msgstr ""
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:62
#, python-format
msgid "Family quotient and area"
msgstr ""
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:60
#, python-format
msgid "Family quotient but random area"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_family_quotient_from
msgid "Family quotient from"
msgstr ""
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:56
#, python-format
msgid "Family quotient from is in range of an existing slice."
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_slice_id
msgid "Family quotient slice"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_member_analysis_family_quotient_slice_id
msgid "Family quotient slice id"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_family_quotient_to
msgid "Family quotient to"
msgstr ""
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:61
#, python-format
msgid "Family quotient to is in range of an existing slice."
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity
msgid "GOLEM Activity"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity_price_line
msgid "GOLEM Activity Price Line"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity_registration_invoicing_line
msgid "GOLEM Activity Registration Invoicing Lines"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member
msgid "GOLEM Member"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member_analysis_wizard
msgid "GOLEM Members Analysis Wizard Adaptation"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member_analysis
msgid "GOLEM Members Analysis Adaption"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_payment_rule_familyquotient_slice
msgid "GOLEM Payment Rule Family Quotient Slice"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_id
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_id
msgid "ID"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line___last_update
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice___last_update
msgid "Last Modified on"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_write_uid
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_write_uid
msgid "Last Updated by"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_write_date
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_write_date
msgid "Last Updated on"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_name
msgid "Name"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Populates other / new options with default price"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_price
msgid "Price"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_ids
msgid "Price lines"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Prices"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_pricing_info
msgid "Pricing info"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_payment_rule_menu
msgid "Pricing rules"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
msgid "Resets all options with default price"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_activity_price
msgid "Sale Price"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_area_sequence
msgid "Sequence"
msgstr ""
#. module: golem_activity_registration_custom_price
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_member_analysis_pivot_fquotientslice_area
msgid "Service User Analysis"
msgstr ""
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:49
#, python-format
msgid "The 'to' family quotient must be higher than the 'from' one."
msgstr ""
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_activity_price_line.py:30
#: sql_constraint:golem.activity.price.line:0
#, python-format
msgid "This activity, geo rule, FQ slice rule has already been used."
msgstr ""
#. module: golem_activity_registration_custom_price
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:31
#: sql_constraint:golem.payment.rule.familyquotient.slice:0
#, python-format
msgid "This name has already been used. It must be unique."
msgstr ""

View File

@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import (golem_payment_rule_quotient_slice, golem_activity_price_line,
golem_activity, golem_member)

View File

@ -1,53 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity adaptations """
from odoo import models, fields, api
class GolemActivity(models.Model):
""" GOLEM Activity adaptations """
_inherit = 'golem.activity'
price_line_ids = fields.One2many('golem.activity.price.line',
'activity_id', string='Price lines',
copy=True)
@api.multi
def reset_price_combinations(self):
""" Resets all combinations with default price """
self.ensure_one()
activity = self[0]
activity.price_line_ids = [(6, False, [])] # Truncate existing
activity.fill_price_combinations()
@api.multi
def fill_price_combinations(self):
""" Fills all inexistent combinations prices from default one """
self.ensure_one()
activity = self[0]
existing_combinations = [u'%s-%s' % (line.area_id.id, line.slice_id.id)
for line in activity.price_line_ids]
slice_ids = self.env['golem.payment.rule.familyquotient.slice'].search([])
for area_id in self.env['golem.partner.area'].search([('parent_id', '=', False)]):
for slice_id in slice_ids:
combination = u'%s-%s' % (area_id.id, slice_id.id)
if combination not in existing_combinations:
data = {'activity_id': activity.id, 'area_id': area_id.id,
'slice_id': slice_id.id, 'price': activity.list_price}
self.env['golem.activity.price.line'].create(data)

View File

@ -1,50 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity adaptations """
from odoo import models, fields, _
class GolemActivityPriceLine(models.Model):
""" GOLEM Activity Price Line """
_name = 'golem.activity.price.line'
_description = 'GOLEM Activity Price Line'
_order = 'activity_id asc, area_id asc, slice_id asc'
_sql_constraints = [(
'golem_activity_price_line_uniq', 'UNIQUE (activity_id, area_id, slice_id)',
_('This activity, geo rule, FQ slice rule has already been used.')
)]
activity_id = fields.Many2one(
'golem.activity', required=True, index=True, auto_join=True,
ondelete='cascade'
)
area_id = fields.Many2one(
'golem.partner.area', index=True, auto_join=True,
string='Area', ondelete='cascade'
)
area_sequence = fields.Integer(related='area_id.sequence')
slice_id = fields.Many2one(
'golem.payment.rule.familyquotient.slice', index=True, auto_join=True,
string='Family quotient slice', ondelete='cascade'
)
currency_id = fields.Many2one(
'res.currency',
default=lambda self: self.env.user.company_id.currency_id.id
)
price = fields.Monetary(required=True)

View File

@ -1,65 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Member adaptations """
from odoo import models, _
class GolemMember(models.Model):
""" GOLEM Member adaptations """
_inherit = 'golem.member'
def invoice_line_data_get(self, registration):
""" Overwrite parent method to inject price according to rules """
line_data = super(GolemMember, self).invoice_line_data_get(registration)
line_data['pricing_info'] = _(u'Default price')
member = self[0]
if member.family_quotient: # default price if no QF
fq_int = int(member.family_quotient)
domain = [('family_quotient_from', '<=', fq_int),
('family_quotient_to', '>=', fq_int)]
rule_slice_id = self.env['golem.payment.rule.familyquotient.slice'].search(
domain, limit=1
)
if rule_slice_id: # if not : default_price
applicable_areas = []
area_ids = self.env['golem.partner.area'].search([])
if member.area_id:
applicable_areas += area_ids.filtered(
lambda r: r == member.area_id.root_id
)
if not applicable_areas and area_ids:
applicable_areas += area_ids[0]
random_area = True
else:
random_area = False
if applicable_areas: # else default_price
for applicable_area in applicable_areas:
domain = [('activity_id', '=', registration.activity_id.id),
('area_id', '=', applicable_area.id),
('slice_id', '=', rule_slice_id.id)]
price_line_obj = self.env['golem.activity.price.line']
line_id = price_line_obj.search(domain, limit=1)
if line_id: # Found !
line_data['price'] = line_id.price
pricing_info = (_(u'Family quotient but random area')
if random_area else
_(u'Family quotient and area'))
line_data['pricing_info'] = pricing_info
break
return line_data

View File

@ -1,68 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Payment Rule Family Quotient Slice """
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
class GolemPaymentRuleQuotientSlice(models.Model):
""" GOLEM Payment Rule Family Quotient Slice """
_name = 'golem.payment.rule.familyquotient.slice'
_description = 'GOLEM Payment Rule Family Quotient Slice'
_order = 'name asc'
_sql_constraints = [(
'golem_payment_rule_fquoslice_uniq', 'UNIQUE (name)',
_('This name has already been used. It must be unique.')
)]
name = fields.Char(required=True)
currency_id = fields.Many2one(
'res.currency',
default=lambda self: self.env.user.company_id.currency_id.id
)
family_quotient_from = fields.Monetary()
family_quotient_to = fields.Monetary()
@api.constrains('family_quotient_from', 'family_quotient_to')
def check_fq(self):
""" Check family quotient coherence and conflits """
for rqf in self:
if rqf.family_quotient_from:
if (not rqf.family_quotient_to or
rqf.family_quotient_to < rqf.family_quotient_from):
verr = _('The \'to\' family quotient must be higher than '
'the \'from\' one.')
raise ValidationError(verr)
rqfs = self.env['golem.payment.rule.familyquotient.slice'].search([])
for eachr in rqfs:
if (eachr.family_quotient_from < rqf.family_quotient_from <
eachr.family_quotient_to):
verr = _(u'Family quotient from is in range of an '
'existing slice.')
raise ValidationError(verr)
if (eachr.family_quotient_from < rqf.family_quotient_to <
eachr.family_quotient_to):
verr = _(u'Family quotient to is in range of an '
'existing slice.')
raise ValidationError(verr)
if (rqf.family_quotient_from < eachr.family_quotient_from <
rqf.family_quotient_to):
verr = _(u'Current family quotient slice cannot be '
'included into another existing slice.')
raise ValidationError(verr)

View File

@ -1,5 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_golem_payment_rule_familyquotient_slice_user,Access GOLEM Payment Rule Familyquotient Slice User,model_golem_payment_rule_familyquotient_slice,golem_base.group_golem_user,1,0,0,0
access_golem_payment_rule_familyquotient_slice_manager,Access GOLEM Payment Rule Familyquotient Slice Manager,model_golem_payment_rule_familyquotient_slice,golem_base.group_golem_manager,1,1,1,1
access_golem_activity_priceline_user,Access GOLEM Activity Price Line User,model_golem_activity_price_line,golem_base.group_golem_user,1,0,0,0
access_golem_activity_priceline_manager,Access GOLEM Activity Price Line Manager,model_golem_activity_price_line,golem_base.group_golem_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_golem_payment_rule_familyquotient_slice_user Access GOLEM Payment Rule Familyquotient Slice User model_golem_payment_rule_familyquotient_slice golem_base.group_golem_user 1 0 0 0
3 access_golem_payment_rule_familyquotient_slice_manager Access GOLEM Payment Rule Familyquotient Slice Manager model_golem_payment_rule_familyquotient_slice golem_base.group_golem_manager 1 1 1 1
4 access_golem_activity_priceline_user Access GOLEM Activity Price Line User model_golem_activity_price_line golem_base.group_golem_user 1 0 0 0
5 access_golem_activity_priceline_manager Access GOLEM Activity Price Line Manager model_golem_activity_price_line golem_base.group_golem_manager 1 1 1 1

View File

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record id="golem_activity_form_inherit_custom_price" model="ir.ui.view">
<field name="name">GOLEM Activity Adaptations</field>
<field name="model">golem.activity</field>
<field name="inherit_id" ref="golem_activity.golem_activity_form" />
<field name="arch" type="xml">
<group name="properties" position="before">
<group name="prices" string="Prices">
<button name="fill_price_combinations" type="object" class="oe_link"
string="Populates other / new options with default price" colspan="1"
confirm="Are you sure you want to apply default price to all other options ?" />
<button name="reset_price_combinations" type="object" class="oe_link"
string="Resets all options with default price" colspan="1"
confirm="Are you sure you want to RESET ALL options ?" />
<field name="price_line_ids" nolabel="1" colspan="2"
context="{'default_activity_id': active_id}"
widget="x2many_2d_matrix"
field_y_axis="slice_id" field_x_axis="area_id" field_value="price">
<tree default_order="area_sequence asc">
<field name="activity_id" invisible="1" />
<field name="currency_id" invisible="1" />
<field name="area_id" />
<field name="area_sequence" invisible="1" />
<field name="slice_id" />
<field name="price" />
</tree>
</field>
</group>
</group>
</field>
</record>
</data>
</odoo>

View File

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record id="golem_member_form_inherit_custom_price" model="ir.ui.view">
<field name="name">GOLEM Member Adaptations</field>
<field name="model">golem.member</field>
<field name="inherit_id" ref="golem_member.golem_member_form" />
<field name="arch" type="xml">
<field name="area_id" position="attributes">
<attribute name="required">1</attribute>
</field>
</field>
</record>
</data>
</odoo>

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Tree -->
<record model="ir.ui.view" id="golem_payment_rule_qfslice_view_tree">
<field name="name">GOLEM Payment Rule QF Slice Tree</field>
<field name="model">golem.payment.rule.familyquotient.slice</field>
<field name="arch" type="xml">
<tree editable="bottom">
<field name="name" />
<field name="currency_id" invisible="1" />
<field name="family_quotient_from" />
<field name="family_quotient_to" />
</tree>
</field>
</record>
<!-- Search -->
<record model="ir.ui.view" id="golem_payment_rule_qfslice_view_search">
<field name="name">GOLEM Payment Rule QF Slice Search</field>
<field name="model">golem.payment.rule.familyquotient.slice</field>
<field name="arch" type="xml">
<search>
<field name="name" />
</search>
</field>
</record>
<!-- Actions -->
<act_window id="golem_payment_rule_qfslice_action"
name="Family Quotients" view_mode="tree"
res_model="golem.payment.rule.familyquotient.slice" />
<!-- Menus -->
<menuitem id="golem_payment_rule_menu" name="Pricing rules"
parent="golem_activity.golem_activity_menu_configuration"
groups="golem_base.group_golem_manager" sequence="20" />
<menuitem id="golem_payment_rule_qfslice_menu" name="Family Quotients"
parent="golem_payment_rule_menu" action="golem_payment_rule_qfslice_action"
sequence="10" />
<menuitem id="golem_partner_area_menu" name="Areas"
parent="golem_payment_rule_menu" sequence="20"
action="golem_member.golem_partner_area_action" />
</data>
</odoo>

View File

@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018-2019 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import (golem_activity_registration_invoicing,
golem_member_analysis, golem_member_analysis_wizard)

View File

@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity Registration Invoicing Wizard """
from odoo import models, fields
class GolemActivityRegistrationInvoicingLine(models.TransientModel):
""" GOLEM Activity Registration Invoicing Line adaptations """
_inherit = 'golem.activity.registration.invoicing.line'
pricing_info = fields.Char()
activity_price = fields.Float(related='activity_id.product_id.list_price')

View File

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record id="golem_activity_registration_invoicing_form_inherit_custom_price"
model="ir.ui.view">
<field name="name">GOLEM Activity Registration Invoicing Form adaptations</field>
<field name="model">golem.activity.registration.invoicing</field>
<field name="inherit_id"
ref="golem_activity_registration_payment.golem_activity_registration_invoicing_view_form" />
<field name="arch" type="xml">
<field name="price" position="before">
<field name="activity_price" readonly="1" string="Default price" />
</field>
<field name="price" position="after">
<field name="pricing_info" readonly="1" />
</field>
</field>
</record>
</data>
</odoo>

View File

@ -1,47 +0,0 @@
# -*- coding: utf-8 -*-
#
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Members Analysis Pivot Adaption """
from odoo import models, fields, api
class GolemMemberAnalysisPivot(models.TransientModel):
""" GOLEM Members Analysis Pivot Adaption """
_inherit = 'golem.member.analysis'
_description = 'GOLEM Members Analysis Adaption'
family_quotient_slice_id = fields.Many2one(
'golem.payment.rule.familyquotient.slice', index=True, ondelete='cascade',
store=True, compute='_compute_family_quotient_slice_id'
)
@api.depends('family_quotient')
def _compute_family_quotient_slice_id(self):
""" Computes family quotient slice """
for rec in self:
if rec.family_quotient:
fq_int = int(rec.family_quotient)
domain = [('family_quotient_from', '<=', fq_int),
('family_quotient_to', '>=', fq_int)]
rule_slice_id = self.env['golem.payment.rule.familyquotient.slice'].search(
domain, limit=1
)
if rule_slice_id:
rec.family_quotient_slice_id = rule_slice_id

View File

@ -1,37 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Pivot -->
<record id="golem_member_analysis_pivot_fquotientslice_area" model="ir.ui.view">
<field name="name">Golem Member Analysis Fquotient Slice and Area Pivot</field>
<field name="model">golem.member.analysis</field>
<field name="arch" type="xml">
<pivot string="Service User Analysis">
<field name="area_id" type="col"/>
<field name="family_quotient_slice_id" type="row"/>
</pivot>
</field>
</record>
</data>
</odoo>

View File

@ -1,48 +0,0 @@
# -*- coding: utf-8 -*-
#
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Members Analysis Adaptation """
from odoo import models, fields, api
class GolemMemberAnalysis(models.TransientModel):
""" GOLEM Members Analysis Adaptation """
_inherit = 'golem.member.analysis.wizard'
_description = 'GOLEM Members Analysis Wizard Adaptation'
analyse_type = fields.Selection(
selection_add=[('fquotientslice_area',
'By family quotient slice and area')]
)
@api.multi
def get_pivot_view(self):
""" override get_pivot_view function """
self.ensure_one()
rec = self[0]
pivot_view = super(GolemMemberAnalysis, self).get_pivot_view()
if pivot_view:
return pivot_view
if rec.analyse_type == 'fquotientslice_area':
return self.env.ref(
('golem_activity_registration_custom_price.'
'golem_member_analysis_pivot_fquotientslice_area'),
False
)
return False

View File

@ -1,47 +0,0 @@
# -*- coding: utf-8 -*-
# copyright 2016 fabien bourgeois <fabien@yaltik.com>
#
# this program is free software: you can redistribute it and/or modify
# it under the terms of the gnu affero general public license as
# published by the free software foundation, either version 3 of the
# license, or (at your option) any later version.
#
# this program is distributed in the hope that it will be useful,
# but without any warranty; without even the implied warranty of
# merchantability or fitness for a particular purpose. see the
# gnu affero general public license for more details.
#
# you should have received a copy of the gnu affero general public license
# along with this program. if not, see <http://www.gnu.org/licenses/>.
import json
import odoo.http as http
from odoo.http import request
from odoo.addons.web.controllers.main import CSVExport
class ExportGolemActivityMembers(CSVExport):
@http.route('/web/export/golem/activity_members', type='http', auth='user')
def export_csv_view(self, data):
data = json.loads(data)
FIELDS = ['number', 'lastname', 'firstname', 'street', 'zip', 'city',
'birthdate_date', 'email', 'phone', 'mobile']
aid = data.get('activity_id')
a_model = request.env['golem.activity']
activity = a_model.browse([aid])
registrations = activity.activity_registration_ids
rows = []
for r in registrations:
row = []
for f in FIELDS:
value = r.member_id.__getattribute__(f)
row.append(value)
rows.append(row)
return request.make_response(
self.from_data(FIELDS, rows),
headers=[('Content-Disposition', 'attachment; filename="%s"'
% self.filename('gollem.activity')),
('Content-Type', self.content_type)])

View File

@ -1,28 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration_export
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-10-16 16:20+0000\n"
"PO-Revision-Date: 2016-10-16 16:20+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: golem_activity_registration_export
#: view:golem.activity:golem_activity_registration_export.export_activity_form
msgid "Export members to CSV file"
msgstr "Exporter les adhérents vers un fichier tableur"
#. module: golem_activity_registration_export
#: model:ir.model,name:golem_activity_registration_export.model_golem_activity
msgid "GOLEM Activity"
msgstr "Activité"

View File

@ -1,27 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration_export
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-10-16 16:20+0000\n"
"PO-Revision-Date: 2016-10-16 16:20+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration_export
#: view:golem.activity:golem_activity_registration_export.export_activity_form
msgid "Export members to CSV file"
msgstr ""
#. module: golem_activity_registration_export
#: model:ir.model,name:golem_activity_registration_export.model_golem_activity
msgid "GOLEM Activity"
msgstr ""

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import golem_activity_registration_export

View File

@ -1,32 +0,0 @@
# -*- coding: utf-8 -*-
# copyright 2016 fabien bourgeois <fabien@yaltik.com>
#
# this program is free software: you can redistribute it and/or modify
# it under the terms of the gnu affero general public license as
# published by the free software foundation, either version 3 of the
# license, or (at your option) any later version.
#
# this program is distributed in the hope that it will be useful,
# but without any warranty; without even the implied warranty of
# merchantability or fitness for a particular purpose. see the
# gnu affero general public license for more details.
#
# you should have received a copy of the gnu affero general public license
# along with this program. if not, see <http://www.gnu.org/licenses/>.
from json import dumps
from odoo import models, api
class GolemActivity(models.Model):
_inherit = 'golem.activity'
@api.multi
def do_export_csv(self):
""" Export basic data about members of the current activity to CSV """
self.ensure_one()
data = dumps({'activity_id': self.id})
url = '/web/export/golem/activity_members?data={}'.format(data)
print url
return {'type': 'ir.actions.act_url', 'url': url, 'target': 'self'}

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import models, wizard

View File

@ -1,36 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018-2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{
'name': 'GOLEM Activity Member Registration Payments',
'summary': 'GOLEM Activities Member Registration Payments',
'description': 'GOLEM Activities Member Registration Payments',
'version': '10.0.0.7.1',
'category': 'GOLEM',
'author': 'Fabien Bourgeois',
'license': 'AGPL-3',
'application': False,
'installable': True,
'depends': ['golem_activity_registration_state', 'golem_payment'],
'data': ['views/golem_member_views.xml',
'views/golem_activity_registration_views.xml',
'report/golem_member_card_templates.xml',
'wizard/golem_activity_registration_invoicing.xml',
'views/golem_activity_views.xml',
'views/account_invoice.xml']
}

View File

@ -1,399 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration_payment
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-21 11:30+0000\n"
"PO-Revision-Date: 2019-01-21 12:31+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,help:golem_activity_registration_payment.field_golem_activity_registration_invoice_state
msgid " * The 'Draft' status is used when a user is encoding a new and unconfirmed Invoice.\n"
" * The 'Pro-forma' status is used when the invoice does not have an invoice number.\n"
" * The 'Open' status is used when user creates invoice, an invoice number is generated. It stays in the open status till the user pays the invoice.\n"
" * The 'Paid' status is set automatically when the invoice is paid. Its related journal entries may or may not be reconciled.\n"
" * The 'Cancelled' status is used when user cancel invoice."
msgstr "* L'état \"Brouillon\" est utilisé lorsqu'un utilisateur est en train de saisir ou de modifier une nouvelle facture non confirmée.\n"
"* L'état \"Pro-forma\" est utilisé lorsque la facture n'a pas de numéro de facture.\n"
"* L'état 'Ouvert' est utilisé lorsque l'utilisateur crée une facture, celle-ci a alors un numéro de facture. La facture reste dans l'état \"Ouvert\" tant qu'elle n'est pas payée.\n"
"* L'état 'Payé' est affecté automatiquement lorsque la facture est payée. Les écritures correspondantes dans les journaux peuvent ou non être lettrées.\n"
"* L'état \"Annulé\" est utilisé lorsque l'utilisateur annule la facture."
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "<span style=\"padding-right: 5px;\">Total</span>"
msgstr "<span style=\"padding-right: 5px;\">Total</span>"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_ids
msgid "Activities"
msgstr "Activités"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Activities and Prices"
msgstr "Activités et tarifs"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_activity_id
msgid "Activity id"
msgstr "Activité liée"
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/models/golem_member.py:78
#, python-format
msgid "All confirmed registrations had already been invoiced."
msgstr "Toutes les inscriptions confirmées ont déjà été facturées."
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_line_price
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Amount"
msgstr "Montant"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
msgid "By Month"
msgstr "Mois de facturation"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "By invoice state"
msgstr "Par état de facturation"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "Canceled Invoice"
msgstr "Facture Annulée"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Close"
msgstr "Fermer"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Congratulations, activities had been confirmed and invoiced."
msgstr "Félicitations, les activités ont été confirmées et facturées."
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_create_uid
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_create_uid
msgid "Created by"
msgstr "Créé par"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_create_date
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_create_date
msgid "Created on"
msgstr "Créé le"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_currency_id
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_currency_id
msgid "Currency"
msgstr "Devise"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Date"
msgstr "Date "
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_display_name
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Display invoice"
msgstr "Afficher la facture"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Display payments"
msgstr "Afficher les paiements"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "Draft Invoice"
msgstr "Facture en brouillon"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_free_activity
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_free_activity
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_search_inherit_activity_registration_payment
msgid "Free activity"
msgstr "Gratuit"
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity
msgid "GOLEM Activity"
msgstr "Activité"
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration
msgid "GOLEM Activity Registration"
msgstr "Inscription à l'activité"
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration_invoicing_line
msgid "GOLEM Activity Registration Invoicing Lines"
msgstr "GOLEM Activity Registration Invoicing Lines"
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration_invoicing
msgid "GOLEM Activity Registration Invoicing Wizard"
msgstr "GOLEM Activity Registration Invoicing Wizard"
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_member
msgid "GOLEM Member"
msgstr "Adhérent"
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:161
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_invoice_id
#, python-format
msgid "Generated invoice"
msgstr "Facture générée"
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:176
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_payment_ids
#, python-format
msgid "Generated payments"
msgstr "Paiements générés"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_member_has_invoicable_registrations
msgid "Has invoicable registrations ?"
msgstr "A des inscriptions à facturer ?"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_id
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_id
msgid "ID"
msgstr "ID"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,help:golem_activity_registration_payment.field_golem_activity_registration_invoicing_schedule_id
msgid "If no schedule is selected, only the invoice will be create. Otherwise, draft payments will be generated."
msgstr "Si aucune échéance n'est sélectionnée, la facture seule sera créée. Sinon, des paiements en brouillon seront en plus générés."
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "If the service user wants to pay with several payment methods, please validate with the main one, go to the payments and change journal on those needed."
msgstr "Si l'usager souhaite payer avec différents modes de paiement, merci de valider en sélectionnant le moyen principal, puis affichez les paiements et modifiez ceux impactés."
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_registration_state_member_form_inherit_registration_payment
msgid "If you confirmed registrations not already invoiced, you'll get a wizard to assist you for invoice creation."
msgstr "Si vous lancez la facturation des inscriptions en attente, un assistant vous proposera de créer une facture."
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_form_inherit_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Invoice"
msgstr "Facture"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_id
msgid "Invoice Reference"
msgstr "Référence de la facture"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_line_id
msgid "Invoice line"
msgstr "Ligne de facturation"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_state_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Invoice line price"
msgstr "Montant facturé"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_registration_state_member_form_inherit_registration_payment
msgid "Invoice pending registrations"
msgstr "Inscriptions en attente de facturation"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_state_tree_inherit_payment
msgid "Invoice state"
msgstr "État de facturation"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Invoices"
msgstr "Factures"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_form_inherit_payment
msgid "Invoicing"
msgstr "Facturation"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_invoicing_id
msgid "Invoicing id"
msgstr "Facturation"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing___last_update
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line___last_update
msgid "Last Modified on"
msgstr "Dernière Modification le"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_write_uid
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_write_date
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
msgid "Last year invoices"
msgstr "Année dernière"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_member_id
msgid "Member"
msgstr "Usager"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Method"
msgstr "Moyen"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "On default season, there is no activity linked invoice for this member."
msgstr "Sur la saison par défaut, il n'y a pas de facture liée à une activité pour cet usager."
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "On default season, there is no activity linked payment for this member."
msgstr "Sur la saison par défaut, il n'y a pas de paiement lié à une activité pour cet usager."
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "Opened Invoice"
msgstr "Facture Ouverte"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "Paid Invoice"
msgstr "Facture Payée"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_journal_id
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Payment method"
msgstr "Moyen de paiement"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_schedule_id
msgid "Payment schedule"
msgstr "Échéancier de paiement"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Payments"
msgstr "Paiements"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Please confirm activity prices and choose a payment schedule if needed."
msgstr "Merci de confirmer les coûts des activités et de choisir, si souhaité, un échéancier de paiement."
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_price
msgid "Price"
msgstr "Prix"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_registration_id
msgid "Registration id"
msgstr "Inscription"
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/models/golem_member.py:71
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
#, python-format
msgid "Registration invoicing"
msgstr "Facturation des inscriptions"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Residual"
msgstr "Restant"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_season_id
msgid "Season"
msgstr "Saison"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_state
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "State"
msgstr "État"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_state
msgid "Status"
msgstr "État"
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:157
#, python-format
msgid "There is no generated invoice."
msgstr "Il n'y a pas de facture générée."
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:172
#, python-format
msgid "There is no generated payments."
msgstr "Il n'y a pas de paiement généré."
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
msgid "This year invoices"
msgstr "Cette année"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Total"
msgstr "Total"
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Validate"
msgstr "Valider"
#. module: golem_activity_registration_payment
#: selection:golem.activity.registration.invoicing,state:0
msgid "final"
msgstr "final"
#. module: golem_activity_registration_payment
#: selection:golem.activity.registration.invoicing,state:0
msgid "init"
msgstr "init"

View File

@ -1,395 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration_payment
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-21 11:30+0000\n"
"PO-Revision-Date: 2019-01-21 11:30+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration_payment
#: model:ir.model.fields,help:golem_activity_registration_payment.field_golem_activity_registration_invoice_state
msgid " * The 'Draft' status is used when a user is encoding a new and unconfirmed Invoice.\n"
" * The 'Pro-forma' status is used when the invoice does not have an invoice number.\n"
" * The 'Open' status is used when user creates invoice, an invoice number is generated. It stays in the open status till the user pays the invoice.\n"
" * The 'Paid' status is set automatically when the invoice is paid. Its related journal entries may or may not be reconciled.\n"
" * The 'Cancelled' status is used when user cancel invoice."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "<span style=\"padding-right: 5px;\">Total</span>"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_ids
msgid "Activities"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Activities and Prices"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_activity_id
msgid "Activity id"
msgstr ""
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/models/golem_member.py:78
#, python-format
msgid "All confirmed registrations had already been invoiced."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_line_price
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Amount"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
msgid "By Month"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "By invoice state"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "Canceled Invoice"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Close"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Congratulations, activities had been confirmed and invoiced."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_create_uid
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_create_uid
msgid "Created by"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_create_date
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_create_date
msgid "Created on"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_currency_id
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_currency_id
msgid "Currency"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Date"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_display_name
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_display_name
msgid "Display Name"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Display invoice"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Display payments"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "Draft Invoice"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_free_activity
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_free_activity
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_search_inherit_activity_registration_payment
msgid "Free activity"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity
msgid "GOLEM Activity"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration
msgid "GOLEM Activity Registration"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration_invoicing_line
msgid "GOLEM Activity Registration Invoicing Lines"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration_invoicing
msgid "GOLEM Activity Registration Invoicing Wizard"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model,name:golem_activity_registration_payment.model_golem_member
msgid "GOLEM Member"
msgstr ""
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:161
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_invoice_id
#, python-format
msgid "Generated invoice"
msgstr ""
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:176
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_payment_ids
#, python-format
msgid "Generated payments"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_member_has_invoicable_registrations
msgid "Has invoicable registrations ?"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_id
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_id
msgid "ID"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,help:golem_activity_registration_payment.field_golem_activity_registration_invoicing_schedule_id
msgid "If no schedule is selected, only the invoice will be create. Otherwise, draft payments will be generated."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "If the service user wants to pay with several payment methods, please validate with the main one, go to the payments and change journal on those needed."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_registration_state_member_form_inherit_registration_payment
msgid "If you confirmed registrations not already invoiced, you'll get a wizard to assist you for invoice creation."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_form_inherit_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Invoice"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_id
msgid "Invoice Reference"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_line_id
msgid "Invoice line"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_state_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Invoice line price"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_registration_state_member_form_inherit_registration_payment
msgid "Invoice pending registrations"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_state_tree_inherit_payment
msgid "Invoice state"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Invoices"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_form_inherit_payment
msgid "Invoicing"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_invoicing_id
msgid "Invoicing id"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing___last_update
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line___last_update
msgid "Last Modified on"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_write_uid
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_write_uid
msgid "Last Updated by"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_write_date
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_write_date
msgid "Last Updated on"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
msgid "Last year invoices"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_member_id
msgid "Member"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Method"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "On default season, there is no activity linked invoice for this member."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "On default season, there is no activity linked payment for this member."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "Opened Invoice"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
msgid "Paid Invoice"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_journal_id
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Payment method"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_schedule_id
msgid "Payment schedule"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Payments"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Please confirm activity prices and choose a payment schedule if needed."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_price
msgid "Price"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_registration_id
msgid "Registration id"
msgstr ""
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/models/golem_member.py:71
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
#, python-format
msgid "Registration invoicing"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "Residual"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_season_id
msgid "Season"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_state
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
msgid "State"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_state
msgid "Status"
msgstr ""
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:157
#, python-format
msgid "There is no generated invoice."
msgstr ""
#. module: golem_activity_registration_payment
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:172
#, python-format
msgid "There is no generated payments."
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
msgid "This year invoices"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Total"
msgstr ""
#. module: golem_activity_registration_payment
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
msgid "Validate"
msgstr ""
#. module: golem_activity_registration_payment
#: selection:golem.activity.registration.invoicing,state:0
msgid "final"
msgstr ""
#. module: golem_activity_registration_payment
#: selection:golem.activity.registration.invoicing,state:0
msgid "init"
msgstr ""

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import golem_member, golem_activity_registration, golem_activity

View File

@ -1,34 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity adaptations """
from odoo import models, fields, api
class GolemActivity(models.Model):
""" GOLEM Activity adaptations """
_inherit = 'golem.activity'
free_activity = fields.Boolean(default=False)
@api.onchange('free_activity')
def onchange_free_activity(self):
""" If free activity, price should be 0.0 """
for activity in self:
if activity.free_activity:
activity.list_price = 0.0

View File

@ -1,34 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity Registration adaptations """
from odoo import models, fields
class GolemActivityRegistration(models.Model):
""" GOLEM Activity Registration adaptations """
_inherit = 'golem.activity.registration'
invoice_line_id = fields.Many2one('account.invoice.line',
string='Invoice line',
ondelete='set null')
currency_id = fields.Many2one(related='invoice_line_id.currency_id')
invoice_line_price = fields.Monetary(related='invoice_line_id.price_subtotal')
invoice_id = fields.Many2one(related='invoice_line_id.invoice_id')
invoice_state = fields.Selection(related='invoice_line_id.invoice_id.state',
store=True)
free_activity = fields.Boolean(related='activity_id.free_activity')

View File

@ -1,79 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Member adaptations """
from odoo import models, fields, api, _
from odoo.exceptions import UserError
class GolemMember(models.Model):
""" GOLEM Member adaptations """
_inherit = 'golem.member'
has_invoicable_registrations = fields.Boolean(
'Has invoicable registrations ?',
compute='_compute_has_invoicable_reg')
@api.depends('activity_registration_ids', 'activity_registration_ids.state')
def _compute_has_invoicable_reg(self):
""" Check if there are confirmed registrations with no invoice linked """
for member in self:
regis = member.activity_registration_ids
regis = regis.filtered(
lambda r: (r.state == 'confirmed' and
not r.activity_id.free_activity and
(not r.invoice_line_id or
r.invoice_line_id.invoice_id.state == 'cancel'))
)
member.has_invoicable_registrations = bool(len(regis))
def invoice_line_data_get(self, registration):
""" Returns dict with invoice line data """
return {'registration_id': registration.id,
'activity_id': registration.activity_id.id,
'price': registration.activity_id.list_price}
@api.multi
def invoice_registrations(self):
""" Launch wizard to generate invoices for registrations """
self.ensure_one()
member = self[0]
registrations = member.activity_registration_ids.filtered(
lambda r: (r.state == 'confirmed' and
not r.activity_id.free_activity and
(not r.invoice_line_id or
r.invoice_line_id.invoice_id.state == 'cancel'))
)
if registrations:
invoicing = self.env['golem.activity.registration.invoicing'].create({
'member_id' : member.id,
'season_id': registrations[0].activity_id.season_id.id
})
line_obj = self.env['golem.activity.registration.invoicing.line']
for reg in registrations:
line_data = self.invoice_line_data_get(reg)
line_data['invoicing_id'] = invoicing.id
line_obj.create(line_data)
return {'name': _('Registration invoicing'),
'type': 'ir.actions.act_window',
'res_model': 'golem.activity.registration.invoicing',
'view_mode': 'form',
'res_id': invoicing.id,
'target': 'new'}
else:
uerr = _('All confirmed registrations had already been invoiced.')
raise UserError(uerr)

View File

@ -1,145 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<template id="golem_activity_registration_state_member_card_template_inherit_golem_activity_resgitration_payment"
inherit_id="golem_activity_registration_state.golem_member_card_template_inherit_golem_activity_resgitration_state">
<xpath expr="//table[@id='table_activity_ref']/thead/tr[1]" position="inside">
<th class="text-right">Invoice line price</th>
</xpath>
<xpath expr="//table[@id='table_activity_ref']/tbody/tr[1]" position="inside">
<td class="text-right">
<span t-field="reg.invoice_line_price"
t-field-options="{'widget': 'monetary', 'display_currency': reg.currency_id}"/>
</td>
</xpath>
</template>
<template id="golem_member_card_template_inherit_golem_activity_resgitration_payment"
inherit_id="golem_member.golem_member_card_template">
<xpath expr="//table[@id='table_activity_ref']/tbody" position="before">
<tfoot>
<tr>
<td class="text-right" colspan="8">
<strong>
<span style="padding-right: 5px;">Total</span>
<span t-esc="sum(member.activity_registration_ids.mapped('invoice_line_id.price_subtotal'))"
t-esc-options="{'widget': 'monetary', 'display_currency': member.currency_id}" />
</strong>
</td>
</tr>
</tfoot>
</xpath>
<xpath expr="//div[@id='page_report_member']" position="inside">
<!-- <p style="page-break-before:always;"> </p> -->
<div id="page_report_invoicing" class="row">
<h3>Invoices</h3>
<t t-set="invoices" t-value="member.activity_registration_ids.mapped('invoice_line_id.invoice_id')" />
<p t-if="not invoices">
On default season, there is no activity linked invoice for this member.
</p>
<table t-else="" id="table_activity_ref" class="table table-striped">
<thead>
<tr>
<th>Invoice</th>
<th>Date</th>
<th>State</th>
<th class="text-right">Amount</th>
<th class="text-right">Residual</th>
</tr>
</thead>
<tfoot>
<tr>
<td class="text-right" colspan="5">
<strong>
<span style="padding-right: 5px;">Total</span>
<span t-esc="sum(member.activity_registration_ids.mapped('invoice_line_id.invoice_id.amount_total'))"
t-esc-options="{'widget': 'monetary', 'display_currency': member.currency_id}" />
</strong>
</td>
</tr>
</tfoot>
<tbody>
<tr t-foreach="invoices" t-as="inv">
<td>
<span t-field="inv.display_name" />
</td>
<td>
<span t-field="inv.date_invoice" />
</td>
<td>
<span t-field="inv.state" />
</td>
<td class="text-right">
<span t-field="inv.amount_total" />
</td>
<td class="text-right">
<span t-field="inv.residual" />
</td>
</tr>
</tbody>
</table>
<h3>Payments</h3>
<t t-set="payments" t-value="member.activity_registration_ids.mapped('invoice_line_id.invoice_id.payment_ids')" />
<p t-if="not payments">
On default season, there is no activity linked payment for this member.
</p>
<table t-else="" id="table_activity_ref" class="table table-striped">
<thead>
<tr>
<th>Date</th>
<th>Method</th>
<th>State</th>
<th class="text-right">Amount</th>
</tr>
</thead>
<tfoot>
<tr>
<td class="text-right" colspan="5">
<strong>
<span style="padding-right: 5px;">Total</span>
<span t-esc="sum(payments.mapped('amount'))"
t-esc-options="{'widget': 'monetary', 'display_currency': member.currency_id}" />
</strong>
</td>
</tr>
</tfoot>
<tbody>
<tr t-foreach="invoices.mapped('payment_ids')" t-as="payment">
<td>
<span t-field="payment.payment_date" />
</td>
<td>
<span t-field="payment.journal_id.name" />
</td>
<td>
<span t-field="payment.state" />
</td>
<td class="text-right">
<span t-field="payment.amount" />
</td>
</tr>
</tbody>
</table>
</div>
</xpath>
</template>
</odoo>

View File

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Searches -->
<record id="invoice_search_inherited_activity_registration_payment" model="ir.ui.view">
<field name="name">account.invoice.search.iherited.activity.registration.payment</field>
<field name="model">account.invoice</field>
<field name="inherit_id" ref="account.view_account_invoice_filter" />
<field name="arch" type="xml">
<xpath expr="//group[1]" position="inside">
<filter name="invoice_last_year" string="Last year invoices"
domain="[('date_invoice', '&gt;=', (context_today() - datetime.timedelta(days=365.25)).strftime('%Y-01-01')), ('date_invoice', '&lt;', context_today().strftime('%Y-01-01'))]" />
<filter name="invoice_this_year" string="This year invoices"
domain="[('date_invoice', '&gt;=', context_today().strftime('%Y-01-01'))]" />
<filter name="group_by_month" string="By Month" context="{'group_by':'date_invoice:month'}"/>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@ -1,90 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record id="golem_activity_registration_form_inherit_payment"
model="ir.ui.view">
<field name="name">Activity Registration form adaptations</field>
<field name="model">golem.activity.registration</field>
<field name="inherit_id"
ref="golem_activity_registration.golem_activity_registration_form" />
<field name="arch" type="xml">
<group name="subscription" position="after">
<group name="invoicing" string="Invoicing">
<field name="invoice_line_id" invisible="1" />
<field name="currency_id" invisible="1" />
<field name="invoice_line_price" readonly="1" />
<field name="invoice_state" />
<field name="invoice_id" string="Invoice" />
</group>
</group>
</field>
</record>
<!-- Tree -->
<record id="golem_activity_registration_state_tree_inherit_payment" model="ir.ui.view">
<field name="name">Activity Registration State Tree adaptations</field>
<field name="model">golem.activity.registration</field>
<field name="inherit_id"
ref="golem_activity_registration_state.golem_activity_registration_tree_inherit_state" />
<field name="arch" type="xml">
<field name="activity_price" position="before">
<field name="free_activity" readonly="1" />
</field>
<field name="activity_price" position="attributes">
<attribute name="attrs">{'readonly': [('free_activity', '=', True)]}</attribute>
</field>
<field name="state" position="after">
<field name="invoice_line_id" invisible="1" />
<field name="invoice_state" string="Invoice state" />
</field>
</field>
</record>
<!-- Search -->
<record id="golem_activity_registration_search_inherit_payment" model="ir.ui.view">
<field name="name">Activity Registration State Search adaptations</field>
<field name="model">golem.activity.registration</field>
<field name="inherit_id"
ref="golem_activity_registration_state.golem_activity_registration_search_inherit_state" />
<field name="arch" type="xml">
<field name="activity_id" position="after">
<field name="invoice_id" string="Invoice" />
</field>
<filter name="state_canceled" position="after">
<separator />
<filter name="invoice_state_draft" string="Draft Invoice"
domain="[('invoice_state', '=', 'draft')]" />
<filter name="invoice_state_open" string="Opened Invoice"
domain="[('invoice_state', '=', 'open')]" />
<filter name="invoice_state_paid" string="Paid Invoice"
domain="[('invoice_state', '=', 'paid')]" />
<filter name="invoice_state_cancel" string="Canceled Invoice"
domain="[('invoice_state', '=', 'cancel')]" />
</filter>
<filter name="group_state" position="after">
<filter name="group_invoice_state" string="By invoice state"
context="{'group_by': 'invoice_state'}"/>
</filter>
</field>
</record>
</data>
</odoo>

View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Forms -->
<record id="golem_activity_form_inherit_activity_registration_payment"
model="ir.ui.view">
<field name="name">Golem activity form adaptations</field>
<field name="model">golem.activity</field>
<field name="inherit_id" ref="golem_activity.golem_activity_form" />
<field name="arch" type="xml">
<field name="list_price" position="attributes">
<attribute name="attrs">{'invisible': [('free_activity', '=', True)]}</attribute>
</field>
<field name="list_price" position="before">
<field name='free_activity' />
</field>
</field>
</record>
<!-- Search -->
<record id="golem_activity_search_inherit_activity_registration_payment"
model="ir.ui.view">
<field name="name">Golem Activity Search adaptations</field>
<field name="model">golem.activity</field>
<field name="inherit_id" ref="golem_activity.golem_activity_search" />
<field name="arch" type="xml">
<filter name="season_default" position="after">
<filter name="free_activity" string="Free activity"
domain="[('free_activity', '=', True)]" />
</filter>
</field>
</record>
</data>
</odoo>

View File

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record id="golem_registration_state_member_form_inherit_registration_payment"
model="ir.ui.view">
<field name="name">Member Form adaptations</field>
<field name="model">golem.member</field>
<field name="inherit_id"
ref="golem_activity_registration_state.golem_member_form_inherit_registration_state" />
<field name="arch" type="xml">
<button name="do_validate_registrations" position="after">
<field name="has_invoicable_registrations" invisible="1" />
<button name="invoice_registrations" type="object"
string="Invoice pending registrations"
class="oe_highlight"
help="If you confirmed registrations not already invoiced, you'll get a wizard to assist you for invoice creation."
attrs="{'invisible': [('has_invoicable_registrations', '=', False)]}" />
</button>
</field>
</record>
</data>
</odoo>

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2017 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import golem_activity_registration_invoicing

View File

@ -1,184 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2017-2019 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity Registration Invoicing Wizard """
import logging
from math import ceil
from odoo import models, fields, api, _
from odoo.exceptions import UserError
_LOGGER = logging.getLogger(__name__)
class GolemActivityRegistrationInvoicingLine(models.TransientModel):
""" GOLEM Activity Registration Invoicing Lines """
_name = 'golem.activity.registration.invoicing.line'
_description = 'GOLEM Activity Registration Invoicing Lines'
invoicing_id = fields.Many2one('golem.activity.registration.invoicing',
required=True, ondelete='cascade')
registration_id = fields.Many2one('golem.activity.registration', required=True,
ondelete='cascade')
activity_id = fields.Many2one('golem.activity', required=True, readonly=True,
ondelete='cascade')
price = fields.Monetary()
currency_id = fields.Many2one(related='activity_id.currency_id')
class GolemActivityRegistrationInvoicing(models.TransientModel):
""" GOLEM Activity Registration Invoicing Wizard """
_name = 'golem.activity.registration.invoicing'
_description = 'GOLEM Activity Registration Invoicing Wizard'
state = fields.Selection([('init', 'init'), ('final', 'final')],
default='init', required=True)
season_id = fields.Many2one('golem.season', 'Season', required=True,
ondelete='cascade')
member_id = fields.Many2one('golem.member', 'Member', required=True,
ondelete='cascade')
line_ids = fields.One2many('golem.activity.registration.invoicing.line',
'invoicing_id', string='Activities')
schedule_id = fields.Many2one('golem.payment.schedule', 'Payment schedule',
domain='[("season_id", "=", season_id)]',
ondelete='cascade',
help='If no schedule is selected, only the '
'invoice will be create. Otherwise, draft '
'payments will be generated.')
journal_id = fields.Many2one('account.journal', string='Payment method',
domain=[('type', 'in', ('bank', 'cash'))],
ondelete='cascade')
invoice_id = fields.Many2one('account.invoice', string='Generated invoice',
ondelete='cascade')
payment_ids = fields.Many2many('account.payment', string='Generated payments')
def _create_invoice_line(self, product, price, invoice):
""" Create invoice line : needs cache record for onchange, then real
writing... """
invoice_line = self.env['account.invoice.line'].new({
'product_id': product.id,
'invoice_id': invoice.id
})
invoice_line._onchange_product_id()
line_values = dict(invoice_line._cache)
line_values['price_unit'] = price
invoice_line = self.env['account.invoice.line'].create(line_values)
invoice.compute_taxes()
return invoice_line
@api.multi
def _create_invoice(self):
""" Create invoice and lines """
self.ensure_one()
partner = self[0].member_id.partner_id
#check if there is a draft invoice for the current customer
member_line = partner.member_lines.filtered(
lambda ml: (ml.membership_id.membership_season_id == self.season_id
and ml.account_invoice_id.state == 'draft')
)
if member_line:
invoice = member_line[0].account_invoice_id
else:
invoice = self.env['account.invoice'].create({
'partner_id': partner.id,
'account_id': partner.property_account_receivable_id.id,
'fiscal_position_id': partner.property_account_position_id.id
})
for line in self.line_ids:
product = line.activity_id.product_id.product_variant_id
invoice_line = self._create_invoice_line(product, line.price, invoice)
line.registration_id.invoice_line_id = invoice_line.id
return invoice
@api.multi
def _create_payments(self, invoice):
""" Create payment if schedule has been chosen """
self.ensure_one()
payments = self.env['account.payment']
if self.schedule_id and self.schedule_id.occurences > 0:
amount = invoice.amount_total
amount_per_occurence = ceil(amount / self.schedule_id.occurences)
for index, day in enumerate(self.schedule_id.day_ids):
payment_amount = (amount_per_occurence if index !=
(len(self.schedule_id.day_ids.ids) - 1)
else amount)
payment = self.env['account.payment'].new({
'payment_type': 'inbound',
'partner_type': 'customer',
'partner_id': self.member_id.partner_id.id,
'amount': payment_amount,
'payment_date': day.day,
'journal_id': self.journal_id.id,
})
amount -= amount_per_occurence
payment._onchange_journal()
payment_values = dict(payment._cache)
payment = self.env['account.payment'].create(payment_values)
payment.invoice_ids = [(4, invoice.id, False)]
payments |= payment
return payments
@api.multi
def validate(self):
""" Validate and create invoice and payments """
self.ensure_one()
self[0].line_ids.mapped('registration_id').write({'state': 'confirmed'})
invoice = self._create_invoice()
self.invoice_id = invoice
payments = self._create_payments(invoice)
self.payment_ids |= payments
self.write({'state': 'final'})
return {
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': self._name,
'res_id': self[0].id,
'target': 'new'
}
@api.multi
def go_invoice(self):
""" Navigate to generated invoice """
self.ensure_one()
if not self.invoice_id:
uerr = _('There is no generated invoice.')
raise UserError(uerr)
search_view_id = self.env.ref('account.view_account_invoice_filter')
form_view_id = self.env.ref('account.invoice_form')
tree_view_ref = self.env.ref('account.invoice_tree', False)
return {
'type': 'ir.actions.act_window',
'name': _('Generated invoice'),
'view_mode': 'form',
'view_id': form_view_id.id,
'res_model': 'account.invoice',
'res_id': self[0].invoice_id.id
}
@api.multi
def go_payments(self):
""" Navigate to generated payments """
self.ensure_one()
if not self.payment_ids:
uerr = _('There is no generated payments.')
raise UserError(uerr)
return {
'type': 'ir.actions.act_window',
'name': _('Generated payments'),
'view_mode': 'tree,form',
'res_model': 'account.payment',
'domain': [('id', 'in', self.payment_ids.ids)]
}

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017-2018 Fabien Bourgeois <fabien@yaltik.com>
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<data>
<!-- Form -->
<record id="golem_activity_registration_invoicing_view_form" model="ir.ui.view">
<field name="name">GOLEM Activity Registration Invoicing Form</field>
<field name="model">golem.activity.registration.invoicing</field>
<field name="arch" type="xml">
<form string="Registration invoicing">
<field name="state" invisible="1" />
<p states="init" class="oe_grey">
Please confirm activity prices and choose a payment schedule if needed.
</p>
<group states="init">
<group name="lines" colspan="2">
<field name="season_id" readonly="1" />
<field name="member_id" readonly="1" />
<field name="line_ids" string="Activities and Prices">
<tree delete="false" create="false" edit="true" editable="bottom">
<field name="activity_id" readonly="1" />
<field name="currency_id" invisible="1" />
<field name="price" sum="Total" />
</tree>
</field>
</group>
<group name="payment" colspan="2">
<field name="schedule_id" context="{'default_season_id': season_id}" />
<field name="journal_id" string="Payment method"
options="{'no_create': True}"
attrs="{'invisible': [('schedule_id', '=', False)],
'required': [('schedule_id', '!=', False)]}" />
</group>
</group>
<p states="init">If the service user wants to pay with several payment methods, please validate with the main one, go to the payments and change journal on those needed.</p>
<p states="final">
Congratulations, activities had been confirmed and invoiced.
</p>
<group states="final">
<group>
<field name="invoice_id" readonly="1" />
<field name="payment_ids" readonly="1" />
</group>
</group>
<footer>
<button name="validate" string="Validate" type="object"
states="init" class="oe_highlight" />
<button name="go_invoice" string="Display invoice" type="object"
states="final" class="oe_highlight" />
<button name="go_payments" string="Display payments" type="object"
states="final" />
<button string="Close" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
</data>
</odoo>

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import wizard

View File

@ -1,29 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{
'name': 'GOLEM Activity Payment for Minors inside families',
'summary': 'GOLEM Activity Registration Payment for Minors inside families',
'version': '10.0.0.1.0',
'category': 'GOLEM',
'author': 'Fabien Bourgeois',
'license': 'AGPL-3',
'application': False,
'installable': True,
'auto_install': True,
'depends': ['golem_family', 'golem_activity_registration_payment_member_minor'],
}

View File

@ -1,22 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration_payment_family_minor
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-11-01 17:44+0000\n"
"PO-Revision-Date: 2018-11-01 17:44+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration_payment_family_minor
#: model:ir.model,name:golem_activity_registration_payment_family_minor.model_golem_activity_registration_invoicing
msgid "GOLEM Activity Registration Invoicing Wizard"
msgstr "GOLEM Activity Registration Invoicing Wizard"

View File

@ -1,22 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration_payment_family_minor
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-11-01 17:44+0000\n"
"PO-Revision-Date: 2018-11-01 17:44+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration_payment_family_minor
#: model:ir.model,name:golem_activity_registration_payment_family_minor.model_golem_activity_registration_invoicing
msgid "GOLEM Activity Registration Invoicing Wizard"
msgstr ""

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import golem_activity_registration_invoicing

View File

@ -1,36 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2017-2018 Fabien Bourgeois <fabien@yaltik.com>
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" GOLEM Activity Registration Invoicing Wizard """
from odoo import models, api
class GolemActivityRegistrationInvoicing(models.TransientModel):
""" GOLEM Activity Registration Invoicing Wizard """
_inherit = 'golem.activity.registration.invoicing'
@api.depends('member_id')
def _compute_guardian_ids(self):
res = super(GolemActivityRegistrationInvoicing, self)._compute_guardian_ids()
for rec in self:
if rec.member_id.family_member_ids:
rec.guardian_ids += rec.member_id.family_member_ids.filtered(
lambda r: r.id != self.member_id.partner_id.id
)
return res

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018-2019 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import wizard, models

View File

@ -1,31 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018-2019 Fabien Bourgeois <fabien@yaltik.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{
'name': 'GOLEM Activity Payment for Minors',
'summary': 'GOLEM Activity Registration Payment for Minors',
'version': '10.0.0.2.0',
'category': 'GOLEM',
'author': 'Fabien Bourgeois',
'license': 'AGPL-3',
'application': False,
'installable': True,
'auto_install': True,
'depends': ['golem_member_minor', 'golem_activity_registration_payment',
'golem_member_account'],
'data': ['views/golem_activity_registration_invoicing.xml']
}

View File

@ -1,43 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_registration_payment_member_minor
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-11-01 18:52+0000\n"
"PO-Revision-Date: 2018-11-01 19:53+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_registration_payment_member_minor
#: model:ir.model,name:golem_activity_registration_payment_member_minor.model_golem_activity_registration_invoicing
msgid "GOLEM Activity Registration Invoicing Wizard"
msgstr "GOLEM Activity Registration Invoicing Wizard"
#. module: golem_activity_registration_payment_member_minor
#: model:ir.model.fields,field_description:golem_activity_registration_payment_member_minor.field_golem_activity_registration_invoicing_guardian_ids
msgid "Guardian ids"
msgstr "Représentants légaux"
#. module: golem_activity_registration_payment_member_minor
#: model:ir.model.fields,field_description:golem_activity_registration_payment_member_minor.field_golem_activity_registration_invoicing_is_minor
msgid "Is minor?"
msgstr "Est mineur?"
#. module: golem_activity_registration_payment_member_minor
#: model:ir.model.fields,field_description:golem_activity_registration_payment_member_minor.field_golem_activity_registration_invoicing_on_the_name_of
msgid "On the Name of"
msgstr "Pour le compte de"
#. module: golem_activity_registration_payment_member_minor
#: code:addons/golem_activity_registration_payment_member_minor/wizard/golem_activity_registration_invoicing.py:66
#, python-format
msgid "This member is a minor, please fill on the name of so you invoice this registration"
msgstr "Cet usager est un mineur, merci de remplir le champ pour le compte de pour permettre la facturation"

Some files were not shown because too many files have changed in this diff Show More