Skip to content
Extraits de code Groupes Projets
Valider 08094b7c rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[add] banking mandate change from mandate form for draft and open bordereau

parent 8f6955aa
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -31,6 +31,7 @@
"templates/report_scop_bordereau_refund.xml",
"templates/report_union_sociale.xml",
# Views
"views/account_banking_mandate.xml",
"views/account_move.xml",
"views/res_config_settings.xml",
"views/scop_cotisation_cg.xml",
......@@ -40,6 +41,7 @@
"report/scop_contribution_report.xml",
# Wizards
"wizard/export_journal_wizard_view.xml",
"wizard/mandate_change_bordereau_wizard.xml",
"wizard/scop_cotisation_cg_regul_wizard.xml",
"wizard/scop_bordereau_update_liasse_wizard.xml",
"wizard/scop_bordereau_payment_mode_wizard.xml",
......
# © 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import account_banking_mandate
from . import account_move
from . import res_company
from . import res_config_settings
......
# © 2020 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 AccountBankingMandate(models.Model):
_inherit = "account.banking.mandate"
# ------------------------------------------------------
# Button functions
# ------------------------------------------------------
def set_bordereau_mandate(self):
return {
"name": "Affectation du nouveau mandat",
"type": "ir.actions.act_window",
"res_model": "account.banking.mandate.change.bordereau.wizard",
"views": [[False, "form"]],
"target": "new",
}
# ------------------------------------------------------
# Business functions
# ------------------------------------------------------
def _select_open_bordereau(self):
self.ensure_one()
bordereau_ids = self.env["scop.bordereau"].search(
[
("partner_id", "=", self.partner_id.id),
("state", "not in", ("paid", "cancel")),
]
)
return bordereau_ids
def _change_bordereau_mandate(self, bordereau):
"""
Affecte le mandat courant pur le bordereau passé en paramètre
et les factures associées
:param bordereau : objet scop.bordereau
"""
payment_mode = self.env["account.payment.mode"].search(
[("payment_method_id.code", "=", "sepa_direct_debit")]
)
bordereau.update(
{
"payment_mode_id": payment_mode.id,
}
)
invoice_ids = bordereau.invoice_ids.filtered(
lambda i: i.state in ("draft", "posted")
and i.payment_state in ("draft", "not_paid", "partial")
)
for invoice in invoice_ids:
self._change_invoice_mandate(invoice)
......@@ -17,3 +17,4 @@ access_scop_cotisation_cg_wizard,access_scop_cotisation_cg_wizard,model_scop_cot
access_export_journal_cg_wizard,access_export_journal_cg_wizard,model_export_journal_cg_wizard,base.group_user,1,1,1,1
access_scop_bordereau_change_liasse_wizard,access_scop_bordereau_change_liasse_wizard,model_scop_bordereau_change_liasse_wizard,base.group_user,1,1,1,1
access_scop_bordereau_change_payment_mode_wizard,access_scop_bordereau_change_payment_mode_wizard,model_scop_bordereau_change_payment_mode_wizard,base.group_user,1,1,1,1
access_account_banking_mandate_change_bordereau_wizard,access_account_banking_mandate_change_bordereau_wizard,model_account_banking_mandate_change_bordereau_wizard,cgscop_cotisation_cg.group_cotisation_cg_administrative,1,1,1,1
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Copyright 2020 Le Filament
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<data>
<record id="view_mandate_cg_form_inherit" model="ir.ui.view">
<field name="name">scop.cg.view.mandate.form</field>
<field name="model">account.banking.mandate</field>
<field
name="inherit_id"
ref="cgscop_cotisation.view_mandate_form_inherit"
/>
<field name="priority" eval="90" />
<field name="arch" type="xml">
<xpath expr="//div[@name='change_mandate_button']" position="inside">
<button
name="set_bordereau_mandate"
type="object"
class="btn-outline-info"
string="Affecter ce mandat aux bordereaux"
style="margin-left: 15px; margin-right: 15px;"
attrs="{'invisible': ['|', ('state', '!=', 'valid'), ('company_id', '!=', 1)]}"
/>
</xpath>
</field>
</record>
</data>
</odoo>
......@@ -3,6 +3,7 @@
from . import account_move_reversal
from . import export_journal_wizard
from . import mandate_change_bordereau_wizard
from . import scop_bordereau_update_liasse_wizard
from . import scop_bordereau_payment_mode_wizard
from . import scop_bordereau_refund_wizard
......
# © 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class AccountBankingMandateChange(models.TransientModel):
_name = "account.banking.mandate.change.bordereau.wizard"
_description = "Wizard changement mandat bordereaux"
@api.model
def _default_mandate_id(self):
return self.env.context.get("active_id")
@api.model
def _default_bordereau_ids(self):
bordereau_ids = (
self.env["account.banking.mandate"]
.browse(self.env.context.get("active_id"))
._select_open_bordereau()
)
return bordereau_ids
mandate_id = fields.Many2one(
comodel_name="account.banking.mandate",
string="Mandat",
default=_default_mandate_id,
required=True,
)
partner_id = fields.Many2one(related="mandate_id.partner_id")
bordereau_ids = fields.Many2many(
relation="mandate_change_bordereau_wizard_scop_bordereau_rel",
comodel_name="scop.bordereau",
string="Bordereaux",
default=_default_bordereau_ids,
)
def change_mandate(self):
for bordereau in self.bordereau_ids:
self.mandate_id._change_bordereau_mandate(bordereau)
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record
id="account_banking_mandate_change_bordereau_wizard_form"
model="ir.ui.view"
>
<field
name="name"
>account.banking.mandate.change.bordereau.wizard.form</field>
<field name="model">account.banking.mandate.change.bordereau.wizard</field>
<field name="arch" type="xml">
<form string="Changement de mandat">
<group>
<field name="partner_id" invisible="1" />
<field name="mandate_id" readonly="1" />
</group>
<label for="bordereau_ids" />
<field
name="bordereau_ids"
domain="[('partner_id', '=', partner_id), ('state', 'not in', ('paid', 'cancel'))]"
/>
<footer>
<button
name="change_mandate"
type="object"
string="Affecter le mandat"
class="btn-primary"
confirm="Valider le changement de mandat ?"
/>
<button special="cancel" string="Cancel" />
</footer>
</form>
</field>
</record>
</data>
</odoo>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter