Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
51
partner_invoicing_mode_at_shipping/models/res_partner.py
Normal file
51
partner_invoicing_mode_at_shipping/models/res_partner.py
Normal file
@@ -0,0 +1,51 @@
|
||||
# Copyright 2020 Camptocamp SA
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class ResPartner(models.Model):
|
||||
_inherit = "res.partner"
|
||||
|
||||
invoicing_mode = fields.Selection(
|
||||
selection_add=[("at_shipping", "At Shipping")],
|
||||
ondelete={"at_shipping": "set default"},
|
||||
)
|
||||
|
||||
one_invoice_per_shipping = fields.Boolean(
|
||||
index=True,
|
||||
help="Check this if you want to create one invoice per shipping using the"
|
||||
" partner invoicing mode that should be different than 'At Shipping'.",
|
||||
)
|
||||
|
||||
@api.model
|
||||
def _commercial_fields(self):
|
||||
return super()._commercial_fields() + [
|
||||
"one_invoice_per_shipping",
|
||||
]
|
||||
|
||||
@api.constrains(
|
||||
"invoicing_mode", "one_invoice_per_shipping", "one_invoice_per_order"
|
||||
)
|
||||
def _check_invoicing_mode_one_invoice_per_shipping(self):
|
||||
for partner in self:
|
||||
if (
|
||||
partner.invoicing_mode == "at_shipping"
|
||||
and partner.one_invoice_per_shipping
|
||||
):
|
||||
raise ValidationError(
|
||||
self.env._(
|
||||
"You cannot configure the partner %(partner)s with "
|
||||
"Invoicing Mode 'At Shipping' and 'One Invoice Per Shipping'!",
|
||||
partner=partner.name,
|
||||
),
|
||||
)
|
||||
if partner.one_invoice_per_shipping and partner.one_invoice_per_order:
|
||||
raise ValidationError(
|
||||
self.env._(
|
||||
"You cannot configure the partner %(partner)s with "
|
||||
"'One Invoice Per Order' and 'One Invoice Per Shipping'!",
|
||||
partner=partner.name,
|
||||
),
|
||||
)
|
||||
Reference in New Issue
Block a user