Odoo18-Base/addons/l10n_hu_edi/wizard/l10n_hu_edi_cancellation.py
2025-01-06 10:57:38 +07:00

49 lines
1.8 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
import time
from odoo import models, fields
from odoo.exceptions import UserError
from odoo.addons.l10n_hu_edi.models.l10n_hu_edi_connection import L10nHuEdiConnection
class L10nHuEdiCancellation(models.TransientModel):
_name = 'l10n_hu_edi.cancellation'
_description = 'Technical Annulment Wizard'
invoice_id = fields.Many2one(
comodel_name='account.move',
string='Invoice to cancel',
)
code = fields.Selection(
selection=[
('ERRATIC_DATA', 'ERRATIC_DATA - Erroneous data'),
('ERRATIC_INVOICE_NUMBER', 'ERRATIC_INVOICE_NUMBER - Erroneous invoice number'),
('ERRATIC_INVOICE_ISSUE_DATE', 'ERRATIC_INVOICE_ISSUE_DATE - Erroneous issue date'),
],
string='Annulment Code',
required=True,
)
reason = fields.Char(
string='Annulment Reason',
required=True,
)
def button_request_cancel(self):
with L10nHuEdiConnection(self.env) as connection:
self.invoice_id._l10n_hu_edi_acquire_lock()
self.invoice_id._l10n_hu_edi_request_cancel(connection, self.code, self.reason)
if 'query_status' in self.invoice_id._l10n_hu_edi_get_valid_actions():
time.sleep(2)
self.invoice_id._l10n_hu_edi_query_status(connection)
formatted_message = self.env['account.move.send']._format_error_html(self.invoice_id.l10n_hu_edi_messages)
self.invoice_id.with_context(no_new_invoice=True).message_post(body=formatted_message)
if self.env['account.move.send']._can_commit():
self.env.cr.commit()
if self.invoice_id.l10n_hu_edi_messages.get('blocking_level') == 'error':
raise UserError(self.env['account.move.send']._format_error_text(self.invoice_id.l10n_hu_edi_messages))