facho/fe/form(Quantity): nuevo tipo para cantidad.

FossilOrigin-Name: 4ac52694db717571037981b24733353f962c7d609749bc60777c496ff29a9955
This commit is contained in:
bit4bit@riseup.net 2020-11-03 23:37:03 +00:00
parent bb0c45f439
commit c93dccf130
4 changed files with 15 additions and 12 deletions

View File

@ -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:

View File

@ -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', ''),

View File

@ -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', ''),

View File

@ -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(