diff --git a/aeat.py b/aeat.py
index f75f546..ab52d17 100644
--- a/aeat.py
+++ b/aeat.py
@@ -550,9 +550,10 @@ class SIIReport(Workflow, ModelSQL, ModelView):
self._save_response(res)
- def query_issued_invoices(self):
+ def query_issued_invoices(self, last_invoice=None):
pool = Pool()
Invoice = pool.get('account.invoice')
+ mapper = pool.get('aeat.sii.issued.invoice.mapper')(pool=pool)
headers = mapping.get_headers(
name=tools.unaccent(self.company.party.name),
@@ -566,7 +567,9 @@ class SIIReport(Workflow, ModelSQL, ModelView):
res = srv.query(
headers,
year=self.fiscalyear.name,
- period=self.period.start_date.month)
+ period=self.period.start_date.month,
+ mapper=mapper,
+ last_invoice=last_invoice)
registers = \
res.RegistroRespuestaConsultaLRFacturasEmitidas
@@ -581,10 +584,14 @@ class SIIReport(Workflow, ModelSQL, ModelView):
invoice.number: invoice.id
for invoice in invoices_list
}
+ pagination = res.IndicadorPaginacion
+ last_invoice = invoices_list[-1]
self.lines = tuple(
SIIReportLine(
invoice=invoices_ids.get(reg.IDFactura.NumSerieFacturaEmisor),
state=reg.EstadoFactura.EstadoRegistro,
+ last_modify_date=_datetime(
+ reg.EstadoFactura.TimestampUltimaModificacion),
communication_code=reg.EstadoFactura.CodigoErrorRegistro,
communication_msg=reg.EstadoFactura.DescripcionErrorRegistro,
issuer_vat_number=(
@@ -631,6 +638,9 @@ class SIIReport(Workflow, ModelSQL, ModelView):
)
self.save()
+ if pagination == 'S':
+ self.query_issued_invoices(last_invoice=last_invoice)
+
def submit_recieved_invoices(self):
pool = Pool()
mapper = pool.get('aeat.sii.recieved.invoice.mapper')(pool=pool)
@@ -688,9 +698,10 @@ class SIIReport(Workflow, ModelSQL, ModelView):
self.csv = response.CSV
self.save()
- def query_recieved_invoices(self):
+ def query_recieved_invoices(self, last_invoice=None):
pool = Pool()
Invoice = pool.get('account.invoice')
+ mapper = pool.get('aeat.sii.recieved.invoice.mapper')(pool=pool)
SIIReportLine = pool.get('aeat.sii.report.lines')
SIIReportLineTax = pool.get('aeat.sii.report.line.tax')
@@ -706,10 +717,13 @@ class SIIReport(Workflow, ModelSQL, ModelView):
res = srv.query(
headers,
year=self.fiscalyear.name,
- period=self.period.start_date.month)
+ period=self.period.start_date.month,
+ mapper=mapper,
+ last_invoice=last_invoice)
_logger.debug(res)
registers = res.RegistroRespuestaConsultaLRFacturasRecibidas
+ pagination = res.IndicadorPaginacion
# FIXME: the reference is not forced to be unique
lines_to_create = []
@@ -737,6 +751,8 @@ class SIIReport(Workflow, ModelSQL, ModelView):
sii_report_line = {
'report': self.id,
'state': reg.EstadoFactura.EstadoRegistro,
+ 'last_modify_date': _datetime(
+ reg.EstadoFactura.TimestampUltimaModificacion),
'communication_code': (
reg.EstadoFactura.CodigoErrorRegistro),
'communication_msg': (
@@ -798,9 +814,13 @@ class SIIReport(Workflow, ModelSQL, ModelView):
break
if invoices:
sii_report_line['invoice'] = invoices[0].id
+ last_invoice = invoices[0]
lines_to_create.append(sii_report_line)
SIIReportLine.create(lines_to_create)
+ if pagination == 'S':
+ self.query_recieved_invoices(last_invoice=last_invoice)
+
class SIIReportLine(ModelSQL, ModelView):
'''
@@ -816,6 +836,7 @@ class SIIReportLine(ModelSQL, ModelView):
'operation_type') != 'C0',
})
state = fields.Selection(AEAT_INVOICE_STATE, 'State')
+ last_modify_date = fields.Char('Last Modification Date', readonly=True)
communication_code = fields.Integer(
'Communication Code', readonly=True)
communication_msg = fields.Char(
diff --git a/view/sii_report_lines_form.xml b/view/sii_report_lines_form.xml
index 53363f3..d18947d 100644
--- a/view/sii_report_lines_form.xml
+++ b/view/sii_report_lines_form.xml
@@ -8,6 +8,8 @@
+
+
diff --git a/view/sii_report_lines_list.xml b/view/sii_report_lines_list.xml
index 9442446..8ad273d 100644
--- a/view/sii_report_lines_list.xml
+++ b/view/sii_report_lines_list.xml
@@ -8,6 +8,7 @@
+