diff --git a/__manifest__.py b/__manifest__.py index fc2f7d137826978fa85082ac8900ff717d7cd9d4..8d8b680b737aaa44bcfd12456c8027a9caf50fee 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -16,6 +16,8 @@ # views 'views/membership_membership_line.xml', 'views/res_partner.xml', + # templates + 'templates/report_invoice_document.xml', # wizard 'wizard/membership_import.xml', ], diff --git a/models/__init__.py b/models/__init__.py index 8ac42b99811a8f17700989b1702018208ab0aa9c..a644c869d6f46fa97d2e2de78c01fc4b29b4f2b1 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,4 +1,5 @@ # Copyright 2021 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from . import account_move from . import res_partner diff --git a/models/account_move.py b/models/account_move.py new file mode 100644 index 0000000000000000000000000000000000000000..2ce086c2f1309cc58464831a2c0ce65aefa65d27 --- /dev/null +++ b/models/account_move.py @@ -0,0 +1,23 @@ +# Copyright 2021 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import models + + +class AccountMove(models.Model): + _inherit = 'account.move' + + def action_post(self): + """ + Surcharge la fonciton parente pour attribuer automatiquement + un numéro d'adhérent + """ + if self.partner_id.membership_number == 0: + membership_lines = self.line_ids.filtered( + lambda line: line.move_id.move_type == 'out_invoice' and line.product_id.membership) + if membership_lines: + self.partner_id.write({ + 'membership_number': self.env['ir.sequence'].sudo().next_by_code('afac.membership.number') + }) + res = super(AccountMove, self).action_post() + return res diff --git a/models/res_partner.py b/models/res_partner.py index adfca79cd8c283792586ef273f2affe08eca1634..ec0c27d24d6a52b3ea0d06d4df27ec288cf90694 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -10,8 +10,6 @@ class ResPartner(models.Model): # Company Fields membership_number = fields.Integer( string='N° Adhérent', - compute='_compute_membership_number', - store=True ) membership_contact_id = fields.Many2one( comodel_name='res.partner', @@ -40,11 +38,6 @@ class ResPartner(models.Model): # ------------------------------------------------------ # Computed fields / Search Fields # ------------------------------------------------------ - @api.depends('membership_state') - def _compute_membership_number(self): - for partner in self: - if partner.membership_number == 0 and partner.membership_state != 'none': - self.membership_number = self.env['ir.sequence'].next_by_code('afac.membership.number') # ------------------------------------------------------ # Onchange / Constraints diff --git a/templates/report_invoice_document.xml b/templates/report_invoice_document.xml new file mode 100644 index 0000000000000000000000000000000000000000..91dfd354905eba49e5268a08dbb08600713bf470 --- /dev/null +++ b/templates/report_invoice_document.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2021 Le Filament + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> + +<odoo> + <data> + + <template id="afac_report_invoice_document" inherit_id="account.report_invoice_document"> + <xpath expr="//div[@name='invoice_date']" position="after"> + <div class="col-auto col-3 mw-100 mb-2" t-if="o.partner_id.membership_number > 0 and o.move_type == 'out_invoice' and o.state == 'posted'" name="membership_number"> + <strong>N° Adhérent :</strong> + <p class="m-0" t-field="o.partner_id.membership_number"/> + </div> + </xpath> + </template> + + </data> +</odoo> \ No newline at end of file diff --git a/views/membership_membership_line.xml b/views/membership_membership_line.xml index 7e93c2d2b7d0bfc23ea8ce21eca6d3a3f91ec321..86eb94f28540623d4a38ff1da6388ec97ddf71b0 100644 --- a/views/membership_membership_line.xml +++ b/views/membership_membership_line.xml @@ -119,6 +119,14 @@ groups="base.group_erp_manager" /> + <!-- Articles --> + <menuitem name="Articles d'adhésion" + id="menu_membership_products" + sequence="102" + parent="account.menu_finance_receivables" + action="membership.action_membership_products" + /> + </data> </odoo> diff --git a/views/res_partner.xml b/views/res_partner.xml index e42390824b63f1764f66c47ce3ab4f08009870f4..dc60dccd22b93d06b0d8e3f460c242c7ec4b07da 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -56,43 +56,7 @@ <attribute name="invisible">1</attribute> </xpath> <xpath expr="//field[@name='free_member']" position="before"> - <field name="membership_number"/> - </xpath> - <xpath expr="//button[@name='%(membership.action_membership_invoice_view)d']" position="attributes"> - <attribute name="invisible">1</attribute> - </xpath> - <xpath expr="//field[@name='associate_member']" position="attributes"> - <attribute name="invisible">1</attribute> - </xpath> - <xpath expr="//field[@name='member_lines']" position="before"> - <separator></separator> - <group> - <group> - <field name="membership_mandate_id" options="{'no_create': True}"/> - <field name="membership_delegate_id" options="{'no_create': True}"/> - </group> - <group> - <field name="membership_contact_id" options="{'no_create': True}"/> - </group> - </group> - </xpath> - </field> - </record> - - <!-- Form view --> - <record model="ir.ui.view" id="res_partner_membership_form"> - <field name="name">res.partner.membership.form.inherit</field> - <field name="inherit_id" ref="membership.view_partner_form"/> - <field name="model">res.partner</field> - <field name="arch" type="xml"> - <xpath expr="//page[@name='membership']" position="attributes"> - <attribute name="attrs">{'invisible': [('is_company', '!=', True)]}</attribute> - </xpath> - <xpath expr="//field[@name='free_member']" position="attributes"> - <attribute name="invisible">1</attribute> - </xpath> - <xpath expr="//field[@name='free_member']" position="before"> - <field name="membership_number"/> + <field name="membership_number" readonly="1"/> </xpath> <xpath expr="//button[@name='%(membership.action_membership_invoice_view)d']" position="attributes"> <attribute name="invisible">1</attribute> @@ -101,7 +65,7 @@ <attribute name="invisible">1</attribute> </xpath> <xpath expr="//field[@name='member_lines']" position="before"> - <separator></separator> + <hr/> <group> <group> <field name="membership_mandate_id" options="{'no_create': True}"/>