facho/fe/form.py(AllownaceCharge): nueva clase.

se verificar FAU10.

FossilOrigin-Name: 7946a106b46aa5df111662def21bc7c94dd2e37d9b01443cf45e8145ecd798f9
This commit is contained in:
bit4bit@riseup.net 2020-10-20 01:49:37 +00:00
parent bdddcd8ab8
commit 45e4bff58b
2 changed files with 55 additions and 4 deletions

View File

@ -192,6 +192,25 @@ class LegalMonetaryTotal:
charge_total_amount: float = 0.0 charge_total_amount: float = 0.0
payable_amount: float = 0.0 payable_amount: float = 0.0
@dataclass
class AllowanceCharge:
#DIAN 1.7.-2020: FAQ03
charge_indicator: bool = True
amount: float = 0.0
def isCharge(self):
return self.charge_indicator == True
def isDiscount(self):
return self.charge_indicator == False
def asCharge(self):
self.charge_indicator = True
def asDiscount(self):
self.charge_indicator = False
class Invoice: class Invoice:
def __init__(self): def __init__(self):
self.invoice_period_start = None self.invoice_period_start = None
@ -205,6 +224,7 @@ class Invoice:
self.invoice_payment_mean = None self.invoice_payment_mean = None
self.invoice_payments = [] self.invoice_payments = []
self.invoice_lines = [] self.invoice_lines = []
self.invoice_allowance_charge = []
def set_period(self, startdate, enddate): def set_period(self, startdate, enddate):
self.invoice_period_start = startdate self.invoice_period_start = startdate
@ -228,6 +248,9 @@ class Invoice:
def set_operation_type(self, operation): def set_operation_type(self, operation):
self.invoice_operation_type = operation self.invoice_operation_type = operation
def add_allownace_charge(self, charge: AllowanceCharge):
self.invoice_allowance_charge.append(charge)
def add_invoice_line(self, line: InvoiceLine): def add_invoice_line(self, line: InvoiceLine):
self.invoice_lines.append(line) self.invoice_lines.append(line)
@ -249,8 +272,9 @@ class Invoice:
#DIAN 1.7.-2020: FAU10 #DIAN 1.7.-2020: FAU10
# se omite revisar como implementar el booleano allowance_charges = filter(lambda charge: charge.isCharge(), self.invoice_allowance_charge)
self.invoice_legal_monetary_total.charge_total_amount = 0 amounts_allowance_charge = map(lambda charge: charge.amount, allowance_charges)
self.invoice_legal_monetary_total.charge_total_amount = sum(amounts_allowance_charge)
#DIAN 1.7.-2020: FAU14 parcial #DIAN 1.7.-2020: FAU14 parcial
self.invoice_legal_monetary_total.payable_amount = self.invoice_legal_monetary_total.tax_inclusive_amount + self.invoice_legal_monetary_total.charge_total_amount self.invoice_legal_monetary_total.payable_amount = self.invoice_legal_monetary_total.tax_inclusive_amount + self.invoice_legal_monetary_total.charge_total_amount

View File

@ -36,5 +36,32 @@ def test_invoice_legalmonetary():
assert inv.invoice_legal_monetary_total.line_extension_amount == 100.0 assert inv.invoice_legal_monetary_total.line_extension_amount == 100.0
assert inv.invoice_legal_monetary_total.tax_exclusive_amount == 100.0 assert inv.invoice_legal_monetary_total.tax_exclusive_amount == 100.0
assert inv.invoice_legal_monetary_total.tax_inclusive_amount == 119.0 assert inv.invoice_legal_monetary_total.tax_inclusive_amount == 119.0
# TODO assert inv.invoice_legal_monetary_total.charge_total_amount == 0.0
# assert inv.invoice_legal_monetary_total.charge_total_amount == 19.0
def test_FAU10():
inv = form.Invoice()
inv.add_invoice_line(form.InvoiceLine(
quantity = 1,
description = 'producto facho',
item = form.StandardItem('test', 9999),
price = form.Price(
amount = 100.0,
type_code = '01',
type = 'x'
),
tax = form.TaxTotal(
subtotals = [
form.TaxSubTotal(
percent = 19.0,
)
]
)
))
inv.add_allownace_charge(form.AllowanceCharge(amount=19.0))
inv.calculate()
assert inv.invoice_legal_monetary_total.line_extension_amount == 100.0
assert inv.invoice_legal_monetary_total.tax_exclusive_amount == 100.0
assert inv.invoice_legal_monetary_total.tax_inclusive_amount == 119.0
assert inv.invoice_legal_monetary_total.charge_total_amount == 19.0