odoo18/addons/account_peppol/wizard/account_move_send_wizard.py

61 lines
3.2 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models, _
from odoo.exceptions import UserError
class AccountMoveSendWizard(models.TransientModel):
_inherit = 'account.move.send.wizard'
# -------------------------------------------------------------------------
# DEFAULTS
# -------------------------------------------------------------------------
def _compute_sending_method_checkboxes(self):
""" EXTENDS 'account'
If Customer is not valid on Peppol, we disable the checkbox. Also add the proxy mode if not in prod.
"""
for wizard in self:
peppol_partner = wizard.move_id.partner_id.commercial_partner_id.with_company(wizard.company_id)
peppol_partner.button_account_peppol_check_partner_endpoint(company=wizard.company_id)
super()._compute_sending_method_checkboxes()
for wizard in self:
if peppol_checkbox := wizard.sending_method_checkboxes.get('peppol'):
peppol_partner = wizard.move_id.partner_id.commercial_partner_id.with_company(wizard.company_id)
peppol_proxy_mode = wizard.company_id._get_peppol_edi_mode()
if peppol_partner.peppol_verification_state == 'not_valid':
addendum_disable_reason = _(' (Customer not on Peppol)')
elif peppol_partner.peppol_verification_state == 'not_verified':
addendum_disable_reason = _(' (no VAT)')
else:
addendum_disable_reason = ''
vals_not_valid = {'readonly': True, 'checked': False} if addendum_disable_reason else {}
addendum_mode = ''
if peppol_proxy_mode == 'test':
addendum_mode = _(' (Test)')
elif peppol_proxy_mode == 'demo':
addendum_mode = _(' (Demo)')
if addendum_disable_reason or addendum_mode:
wizard.sending_method_checkboxes = {
**wizard.sending_method_checkboxes,
'peppol': {
**peppol_checkbox,
**vals_not_valid,
'label': _(
'%(peppol_label)s%(disable_reason)s%(peppol_proxy_mode)s',
peppol_label=peppol_checkbox['label'],
disable_reason=addendum_disable_reason,
peppol_proxy_mode=addendum_mode,
),
}
}
def action_send_and_print(self, allow_fallback_pdf=False):
# EXTENDS 'account'
self.ensure_one()
if self.sending_methods and 'peppol' in self.sending_methods:
move = self.move_id.with_company(self.move_id.company_id)
if move.partner_id.commercial_partner_id.peppol_verification_state != 'valid':
raise UserError(_("Partner doesn't have a valid Peppol configuration."))
if registration_action := self._do_peppol_pre_send(move):
return registration_action
return super().action_send_and_print(allow_fallback_pdf=allow_fallback_pdf)