facho/fe/form.py(AllownaceCharge): nueva clase.
se verificar FAU10. FossilOrigin-Name: 7946a106b46aa5df111662def21bc7c94dd2e37d9b01443cf45e8145ecd798f9
This commit is contained in:
parent
bdddcd8ab8
commit
45e4bff58b
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user