From 439cb750bfce933d10bfbdd8e14398eb586f5ea0 Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Mon, 8 Nov 2021 16:45:27 +0100 Subject: [PATCH] [update] number sequence attribution & invoice template (with tva on company) --- __manifest__.py | 2 ++ models/__init__.py | 1 + models/account_move.py | 23 +++++++++++++++ models/res_partner.py | 7 ----- templates/report_invoice_document.xml | 18 ++++++++++++ views/membership_membership_line.xml | 8 ++++++ views/res_partner.xml | 40 ++------------------------- 7 files changed, 54 insertions(+), 45 deletions(-) create mode 100644 models/account_move.py create mode 100644 templates/report_invoice_document.xml diff --git a/__manifest__.py b/__manifest__.py index fc2f7d1..8d8b680 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 8ac42b9..a644c86 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 0000000..2ce086c --- /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 adfca79..ec0c27d 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 0000000..91dfd35 --- /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 7e93c2d..86eb94f 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 e423908..dc60dcc 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}"/> -- GitLab