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