Send final invoice serial num if report is a summary

This commit is contained in:
Daniel Möller 2017-05-29 13:59:34 +02:00
parent 8a2189c9f1
commit 3e9f8d2fd7
2 changed files with 41 additions and 2 deletions

View File

@ -78,15 +78,18 @@ class IssuedInvoiceMapper(object):
@classmethod
def build_invoice_id(cls, invoice):
return {
ret = {
'IDEmisorFactura': {
'NIF': cls.nif(invoice),
},
'NumSerieFacturaEmisor': cls.serial_number(invoice),
# TODO: NumSerieFacturaEmisorResumenFinal
'FechaExpedicionFacturaEmisor':
cls.issue_date(invoice).strftime(_DATE_FMT),
}
if cls.invoice_kind(invoice) == 'F4':
ret['NumSerieFacturaEmisorResumenFinal'] = \
cls.final_serial_number(invoice)
return ret
@classmethod
def build_issued_invoice(cls, invoice):

View File

@ -10,6 +10,7 @@ class IssuedTestInvoiceMapper(mapping.IssuedInvoiceMapper):
period = methodcaller('get', 'period')
nif = methodcaller('get', 'nif')
serial_number = methodcaller('get', 'serial_number')
final_serial_number = methodcaller('get', 'final_serial_number')
issue_date = methodcaller('get', 'issue_date')
invoice_kind = methodcaller('get', 'invoice_kind')
rectified_invoice_kind = methodcaller('get', 'rectified_invoice_kind')
@ -186,3 +187,38 @@ def test_rectified_simplified_issued_invoice_with_1_line_mapping():
assert request_['FacturaExpedida']['TipoRectificativa'] == 'I'
assert 'ImporteTotal' in request_['FacturaExpedida']
def test_summary_issued_invoice_id():
"""
Test that if invoice kind is "F4" the final serial number appears
in the invoice id
"""
invoice = {
'year': 2017,
'period': 5,
'nif': '00000010X',
'serial_number': 1,
'final_serial_number': 'FINAL_ID',
'issue_date': date(year=2017, month=12, day=31),
'invoice_kind': 'F4',
'specialkey_or_trascendence': '01',
'description': 'My Description',
'not_exempt_kind': 'S1',
'counterpart_name': 'Counterpart',
'counterpart_nif': '00000011B',
'counterpart_id_type': '07',
'counterpart_country': 'ES',
'taxes': [{
'tax_rate': 21,
'tax_base': 100,
'tax_amount': 21,
}, {
'tax_rate': 10,
'tax_base': 10,
'tax_amount': 1,
}],
}
mapper = IssuedTestInvoiceMapper()
request_ = mapper.build_submit_request(invoice)
assert request_['IDFactura']['NumSerieFacturaEmisorResumenFinal'] == 'FINAL_ID'