Upda the control that the simplified invoices are setted. Now control

correctly if the invoice have only one tiket (sub invoice).
This commit is contained in:
Bernat Brunet 2023-09-13 11:40:20 +02:00
parent fb7364b3dc
commit d7755e1ace
1 changed files with 17 additions and 13 deletions

View File

@ -203,25 +203,29 @@ class Invoice(metaclass=PoolMeta):
def get_simplified_invoices(cls, invoices):
simplified_parties = [] # Simplified party but not invoice
simplified_invoices = [] # Simplified invoice but not party
simplifieds = [] # Simplified party and invoice
for invoice in invoices:
if (invoice.party.sii_identifier_type == 'SI'
and (not invoice.sii_operation_key
or (invoice.sii_operation_key not in (
'F2', 'F4', 'R5')))):
simplified_parties.append(invoice)
if (invoice.sii_operation_key
and invoice.sii_operation_key in ('F2', 'F4', 'R5')
and invoice.party.sii_identifier_type != 'SI'):
elif (invoice.party.sii_identifier_type != 'SI'
and invoice.sii_operation_key
and invoice.sii_operation_key in ('F2', 'F4', 'R5')):
simplified_invoices.append(invoice)
return simplified_parties, simplified_invoices
elif (invoice.party.sii_identifier_type == 'SI'
and invoice.sii_operation_key in ('F2', 'F4', 'R5')):
simplifieds.append(invoice)
return simplified_parties, simplified_invoices, simplifieds
@classmethod
def check_aeat_sii_invoices(cls, invoices):
pool = Pool()
Warning = pool.get('res.user.warning')
simplified_parties, simplified_invoices = cls.get_simplified_invoices(
invoices)
simplified_parties, simplified_invoices, _ = (
cls.get_simplified_invoices(invoices))
if simplified_parties:
names = ', '.join(m.rec_name for m in simplified_parties[:5])
if len(simplified_parties) > 5:
@ -243,8 +247,8 @@ class Invoice(metaclass=PoolMeta):
@classmethod
def simplified_aeat_sii_invoices(cls, invoices):
simplified_parties, simplified_invoices = cls.get_simplified_invoices(
invoices)
simplified_parties, simplified_invoices, simplifieds = (
cls.get_simplified_invoices(invoices))
invoice_keys = {'F2': [], 'F4': [], 'R5': []}
# If the user accept the warning about change the key in the invoice,
# because the party has the Simplified key, change the key.
@ -262,7 +266,7 @@ class Invoice(metaclass=PoolMeta):
# Ensure that if is used the F4 key on SII operation (Invoice summary
# entry) have more than one simplified number. If not the invoice will
# be declined, so we change the key before send.
for invoice in simplified_invoices:
for invoice in simplified_invoices + simplifieds:
first_invoice = invoice.simplified_serial_number('first')
last_invoice = invoice.simplified_serial_number('last')
if (invoice.sii_operation_key == 'F4'
@ -272,7 +276,8 @@ class Invoice(metaclass=PoolMeta):
to_write = []
for key, invoices in invoice_keys.items():
to_write.extend((invoices, {'sii_operation_key': key}))
if invoices:
to_write.extend((invoices, {'sii_operation_key': key}))
if to_write:
cls.write(*to_write)
@ -330,10 +335,8 @@ class Invoice(metaclass=PoolMeta):
gettext('aeat_sii.msg_invoice_in_missing_ref',
invoices=names))
@classmethod
def _post(cls, invoices):
# Control the simplified operation SII key is setted correctly
cls.simplified_aeat_sii_invoices(invoices)
super(Invoice, cls)._post(invoices)
@classmethod
def cancel(cls, invoices):
@ -402,4 +405,5 @@ class ResetSIIKeys(Wizard):
Invoice = pool.get('account.invoice')
invoices = Invoice.browse(Transaction().context['active_ids'])
Invoice.reset_sii_keys(invoices)
Invoice.simplified_aeat_sii_invoices(invoices)
return 'done'