Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test para validar que una factura tipo RA cuando el origen es negativo #177

Merged
merged 1 commit into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions spec/serialization_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -1213,6 +1213,90 @@ def group_by_tax_rate(iva_values, in_invoice):
cuota_presentada
))

with description('en los datos de una factura recibida rectificativa '
'sin anuladora RA sobre una factura original negativa'):
with before.all:
self.in_invoice_RA = self.data_gen.get_in_invoice_RA_N_negative()
self.in_invoice_RA.rectifying_id.sii_registered = True
self.in_invoice_RA_obj = SII(self.in_invoice_RA).generate_object()
factura_rectificada = self.in_invoice_RA.rectifying_id
self.in_invoice_origin_obj = SII(factura_rectificada).generate_object()
self.fact_RA_recibida = (
self.in_invoice_RA_obj['SuministroLRFacturasRecibidas']
['RegistroLRFacturasRecibidas']
)
self.fact_origin = (
self.in_invoice_origin_obj['SuministroLRFacturasRecibidas']
['RegistroLRFacturasRecibidas']
)

with context('en los datos de rectificación'):
with it('el TipoRectificativa debe ser por sustitución (S)'):
expect(
self.fact_RA_recibida['FacturaRecibida']['TipoRectificativa']
).to(equal('S'))
with it('la FechaOperacion NO debe existir'):
expect(
self.fact_RA_recibida['FacturaRecibida'].get('FechaOperacion', False)
).to(equal(False))
with it('debe contener las FacturasRectificadas'):
expect(
self.fact_RA_recibida['FacturaRecibida']
['FacturasRectificadas']['IDFacturaRectificada'][0]
['NumSerieFacturaEmisor']
).to(equal(
self.in_invoice_RA.rectifying_id.origin
))

fecha_expedicion = (
self.fact_RA_recibida['FacturaRecibida']
['FacturasRectificadas']['IDFacturaRectificada'][0]
['FechaExpedicionFacturaEmisor']
)
expect(
datetime.strptime(
fecha_expedicion, '%d-%m-%Y'
).strftime('%Y-%m-%d')
).to(equal(
self.in_invoice_RA.rectifying_id.origin_date_invoice
))

with it('debe contener el ImporteRectificacion'):
expect(
self.fact_RA_recibida['FacturaRecibida']
['ImporteRectificacion']['BaseRectificada']
).to(equal(
-5.13
))

expect(
self.fact_RA_recibida['FacturaRecibida']
['ImporteRectificacion']['CuotaRectificada']
).to(equal(
-1.08
))
with it('los Importes de rectificacion debe ser igual que los datos de la factura original'):
base_presentada = sum(x['BaseImponible'] for x in
self.fact_origin['FacturaRecibida']['DesgloseFactura'][
'DesgloseIVA']['DetalleIVA'])
cuota_presentada = sum(
x.get('CuotaSoportada', 0.0) for x in
self.fact_origin['FacturaRecibida'][
'DesgloseFactura']['DesgloseIVA']['DetalleIVA'])
expect(
self.fact_RA_recibida['FacturaRecibida']
['ImporteRectificacion']['BaseRectificada']
).to(equal(
base_presentada
))

expect(
self.fact_RA_recibida['FacturaRecibida']
['ImporteRectificacion']['CuotaRectificada']
).to(equal(
cuota_presentada
))

with description('El XML Generado en una baja de una factura emitida'):
with before.all:
self.data_gen = DataGenerator()
Expand Down
74 changes: 74 additions & 0 deletions spec/testing_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -658,6 +658,80 @@ def get_in_invoice_RA(self):
)
return invoice

def get_in_invoice_RA_N_negative(self):
journal = Journal(
name=u'Factura de Energía Rectificativa Recibida',
article=self.article
)
tax_iva_21 = Tax(name='21% IVA Soportado', amount=0.21, type='percent')
amount_total_n = -6.21
amount_tax_n = -1.08
base_amount_n = -5.13
tax_line_n = [
InvoiceTax(
name='21% IVA Soportado', base=-5.13,
tax_amount=-1.08, tax_id=tax_iva_21
)
]
amount_total_ra = 14.65
amount_tax_ra = 2.54
base_amount_ra = 12.11
tax_line_ra = [
InvoiceTax(
name='21% IVA Soportado', base=-5.13,
tax_amount=-1.08, tax_id=tax_iva_21
)
]

rect_invoice = Invoice(
invoice_type='in_invoice',
journal_id=journal,
rectificative_type='N',
rectifying_id=False,
number='FRecibRectificada{}'.format(self.invoice_number),
origin='FRectRecibRectificadaOrigen{}'.format(self.invoice_number),
partner_id=self.partner_invoice,
address_contact_id=self.address_contact_id,
company_id=self.company,
amount_total=amount_total_n,
amount_untaxed=base_amount_n,
amount_tax=amount_tax_n,
period_id=self.period,
origin_date_invoice=self.origin_date_invoice,
date_invoice=self.date_invoice,
tax_line=tax_line_n,
invoice_line=self.invoice_line,
sii_registered=self.sii_registered,
fiscal_position=self.fiscal_position,
sii_description=self.sii_description,
sii_in_clave_regimen_especial=self.sii_in_clave_regimen_especial,
)

invoice = Invoice(
invoice_type='in_invoice',
journal_id=journal,
rectificative_type='RA',
rectifying_id=rect_invoice,
number='FRectRecib{}'.format(self.invoice_number),
origin='FRectRecibOrigen{}'.format(self.invoice_number),
partner_id=self.partner_invoice,
address_contact_id=self.address_contact_id,
company_id=self.company,
amount_total=amount_total_ra,
amount_untaxed=base_amount_ra,
amount_tax=amount_tax_ra,
period_id=self.period,
origin_date_invoice=self.origin_date_invoice,
date_invoice=self.date_invoice,
tax_line=tax_line_ra,
invoice_line=self.invoice_line,
sii_registered=self.sii_registered,
fiscal_position=self.fiscal_position,
sii_description=self.sii_description,
sii_in_clave_regimen_especial=self.sii_in_clave_regimen_especial,
)
return invoice

def get_out_invoice_rescision(self):
journal = Journal(
name=u'Factura de Energía Rectificativa Rescision Emitida',
Expand Down
Loading