From c93dccf130256489e4e9fbcbf142613fe4744a2c Mon Sep 17 00:00:00 2001 From: "bit4bit@riseup.net" Date: Tue, 3 Nov 2020 23:37:03 +0000 Subject: [PATCH] facho/fe/form(Quantity): nuevo tipo para cantidad. FossilOrigin-Name: 4ac52694db717571037981b24733353f962c7d609749bc60777c496ff29a9955 --- facho/fe/form/__init__.py | 11 +++++++---- tests/fixtures.py | 2 +- tests/test_fe_form.py | 8 ++++---- tests/test_form.py | 6 +++--- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/facho/fe/form/__init__.py b/facho/fe/form/__init__.py index 3c08c4f..21a9749 100644 --- a/facho/fe/form/__init__.py +++ b/facho/fe/form/__init__.py @@ -98,6 +98,9 @@ class Amount: return self.currency == other.currency +class Quantity(Amount): + pass + @dataclass class Item: scheme_name: str @@ -322,7 +325,7 @@ class InvoiceDocumentReference(BillingReference): @dataclass class InvoiceLine: # RESOLUCION 0004: pagina 155 - quantity: int + quantity: Quantity description: str item: Item price: Price @@ -334,7 +337,7 @@ class InvoiceLine: @property def total_amount(self): - return Amount(self.quantity) * self.price.amount + return self.quantity * self.price.amount @property def total_tax_inclusive_amount(self): @@ -356,8 +359,8 @@ class InvoiceLine: self.tax.calculate(self) def __post_init__(self): - if not isinstance(self.quantity, int): - raise ValueError("quantity must be integer") + if not isinstance(self.quantity, Quantity): + raise ValueError("quantity must be Amount") @dataclass class LegalMonetaryTotal: diff --git a/tests/fixtures.py b/tests/fixtures.py index 487e5df..d4d1e2b 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -129,7 +129,7 @@ def simple_invoice(): form.CountrySubentity('05', 'Antioquia')) )) inv.add_invoice_line(form.InvoiceLine( - quantity = 1, + quantity = form.Quantity(1), description = 'producto facho', item = form.StandardItem( 9999), price = form.Price(form.Amount(100.0), '01', ''), diff --git a/tests/test_fe_form.py b/tests/test_fe_form.py index db2fdf9..b598ae0 100644 --- a/tests/test_fe_form.py +++ b/tests/test_fe_form.py @@ -89,7 +89,7 @@ def test_invoice_totals(simple_invoice_without_lines): simple_invoice.invoice_supplier.ident = '700085371' simple_invoice.invoice_customer.ident = '800199436' simple_invoice.add_invoice_line(form.InvoiceLine( - quantity = 1, + quantity = form.Quantity(1), description = 'producto', item = form.StandardItem(9999), price = form.Price(form.Amount(1_500_000), '01', ''), @@ -112,7 +112,7 @@ def test_invoice_cufe(simple_invoice_without_lines): simple_invoice.invoice_supplier.ident = form.PartyIdentification('700085371', '5', '31') simple_invoice.invoice_customer.ident = form.PartyIdentification('800199436', '5', '31') simple_invoice.add_invoice_line(form.InvoiceLine( - quantity = 1, + quantity = form.Quantity(1), description = 'producto', item = form.StandardItem(111), price = form.Price(form.Amount(1_500_000), '01', ''), @@ -177,7 +177,7 @@ def test_credit_note_cude(simple_credit_note_without_lines): simple_invoice.invoice_supplier.ident = form.PartyIdentification('900373076', '5', '31') simple_invoice.invoice_customer.ident = form.PartyIdentification('8355990', '5', '31') simple_invoice.add_invoice_line(form.InvoiceLine( - quantity = 1, + quantity = form.Quantity(1), description = 'producto', item = form.StandardItem(111), price = form.Price(form.Amount(5_000), '01', ''), @@ -212,7 +212,7 @@ def test_debit_note_cude(simple_debit_note_without_lines): simple_invoice.invoice_supplier.ident = form.PartyIdentification('900197264', '5', '31') simple_invoice.invoice_customer.ident = form.PartyIdentification('10254102', '5', '31') simple_invoice.add_invoice_line(form.InvoiceLine( - quantity = 1, + quantity = form.Quantity(1), description = 'producto', item = form.StandardItem(111), price = form.Price(form.Amount(30_000), '01', ''), diff --git a/tests/test_form.py b/tests/test_form.py index d0a6417..9d2d970 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -16,7 +16,7 @@ from facho import fe def test_invoice_legalmonetary(): inv = form.NationalSalesInvoice() inv.add_invoice_line(form.InvoiceLine( - quantity = 1, + quantity = form.Quantity(1), description = 'producto facho', item = form.StandardItem(9999), price = form.Price( @@ -42,7 +42,7 @@ def test_invoice_legalmonetary(): def test_FAU10(): inv = form.NationalSalesInvoice() inv.add_invoice_line(form.InvoiceLine( - quantity = 1, + quantity = form.Quantity(1), description = 'producto facho', item = form.StandardItem(9999), price = form.Price( @@ -70,7 +70,7 @@ def test_FAU10(): def test_FAU14(): inv = form.NationalSalesInvoice() inv.add_invoice_line(form.InvoiceLine( - quantity = 1, + quantity = form.Quantity(1), description = 'producto facho', item = form.StandardItem(9999), price = form.Price(