Delete recieved invoices from SII
This commit is contained in:
parent
42b6c84423
commit
407dde3bae
27
aeat.py
27
aeat.py
|
@ -368,6 +368,8 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
|||
report.submit_recieved_invoices()
|
||||
elif report.operation_type == 'C0':
|
||||
report.query_recieved_invoices()
|
||||
elif report.operation_type == 'D0':
|
||||
report.delete_recieved_invoices()
|
||||
else:
|
||||
raise NotImplementedError
|
||||
else:
|
||||
|
@ -543,6 +545,31 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
|||
'csv': res.CSV,
|
||||
})
|
||||
|
||||
def delete_recieved_invoices(self):
|
||||
headers = mapping.get_headers(
|
||||
name=self.company.party.name,
|
||||
vat=self.company.party.vat_number,
|
||||
comm_kind=self.operation_type)
|
||||
invoices = map(
|
||||
RecievedTrytonInvoiceMapper.build_delete_request,
|
||||
(line.invoice for line in self.lines))
|
||||
res = None
|
||||
with self.company.tmp_ssl_credentials() as (crt, key):
|
||||
srv = service.bind_recieved_invoices_service(crt, key, test=True)
|
||||
res = srv.AnulacionLRFacturasRecibidas(headers, invoices)
|
||||
# TODO: assert response order matches report order
|
||||
for (report_line, response_line) in zip(
|
||||
self.lines, res.RespuestaLinea):
|
||||
report_line.write([report_line], {
|
||||
'state': response_line.EstadoRegistro,
|
||||
'communication_code': response_line.CodigoErrorRegistro,
|
||||
'communication_msg': response_line.DescripcionErrorRegistro,
|
||||
})
|
||||
self.write([self], {
|
||||
'communication_state': res.EstadoEnvio,
|
||||
'csv': res.CSV,
|
||||
})
|
||||
|
||||
def query_recieved_invoices(self):
|
||||
res = None
|
||||
pool = Pool()
|
||||
|
|
|
@ -119,14 +119,16 @@ class RecievedInvoiceMapper(object):
|
|||
def build_delete_request(cls, invoice):
|
||||
return {
|
||||
'PeriodoImpositivo': cls.build_period(invoice),
|
||||
'IDFactura': cls.build_invoice_id(invoice),
|
||||
'IDFactura': cls.build_named_invoice_id(invoice),
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def build_submit_request(cls, invoice):
|
||||
request = cls.build_delete_request(invoice)
|
||||
request['FacturaRecibida'] = cls.build_invoice(invoice)
|
||||
return request
|
||||
return {
|
||||
'PeriodoImpositivo': cls.build_period(invoice),
|
||||
'IDFactura': cls.build_invoice_id(invoice),
|
||||
'FacturaRecibida': cls.build_invoice(invoice),
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def build_period(cls, invoice):
|
||||
|
@ -142,6 +144,19 @@ class RecievedInvoiceMapper(object):
|
|||
'NIF': cls.counterpart_nif(invoice),
|
||||
},
|
||||
'NumSerieFacturaEmisor': cls.serial_number(invoice),
|
||||
# TODO: NumSerieFacturaEmisorResumenFin
|
||||
'FechaExpedicionFacturaEmisor':
|
||||
cls.issue_date(invoice).strftime(_DATE_FMT),
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def build_named_invoice_id(cls, invoice):
|
||||
return {
|
||||
'IDEmisorFactura': {
|
||||
'NombreRazon': cls.counterpart_name(invoice),
|
||||
'NIF': cls.counterpart_nif(invoice),
|
||||
},
|
||||
'NumSerieFacturaEmisor': cls.serial_number(invoice),
|
||||
'FechaExpedicionFacturaEmisor':
|
||||
cls.issue_date(invoice).strftime(_DATE_FMT),
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue