FAD06 CUFE
FossilOrigin-Name: 071ebfbf760379b795e8b8938b289afdfd6b2acba94d4396759d973550e85460
This commit is contained in:
		@@ -83,7 +83,8 @@ class DianXMLExtensionCUFE(FachoXMLExtension):
 | 
				
			|||||||
        NumFac = invoice.invoice_ident
 | 
					        NumFac = invoice.invoice_ident
 | 
				
			||||||
        FecFac = self.issue_date(invoice.invoice_issue)
 | 
					        FecFac = self.issue_date(invoice.invoice_issue)
 | 
				
			||||||
        HoraFac = self.issue_time(invoice.invoice_issue)
 | 
					        HoraFac = self.issue_time(invoice.invoice_issue)
 | 
				
			||||||
        ValorBruto = invoice.invoice_legal_monetary_total.tax_exclusive_amount
 | 
					        # PAG 601
 | 
				
			||||||
 | 
					        ValorBruto = invoice.invoice_legal_monetary_total.line_extension_amount
 | 
				
			||||||
        ValorTotalPagar = invoice.invoice_legal_monetary_total.payable_amount
 | 
					        ValorTotalPagar = invoice.invoice_legal_monetary_total.payable_amount
 | 
				
			||||||
        ValorImpuestoPara = {}
 | 
					        ValorImpuestoPara = {}
 | 
				
			||||||
        ValorImpuesto1 = 0.0
 | 
					        ValorImpuesto1 = 0.0
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,7 @@ from functools import reduce
 | 
				
			|||||||
import copy
 | 
					import copy
 | 
				
			||||||
from dataclasses import dataclass
 | 
					from dataclasses import dataclass
 | 
				
			||||||
from datetime import datetime
 | 
					from datetime import datetime
 | 
				
			||||||
 | 
					from collections import defaultdict
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .data.dian import codelist
 | 
					from .data.dian import codelist
 | 
				
			||||||
from . import fe
 | 
					from . import fe
 | 
				
			||||||
@@ -396,21 +397,47 @@ class DIANInvoiceXML(fe.FeXML):
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
    def set_legal_monetary(fexml, invoice):
 | 
					    def set_legal_monetary(fexml, invoice):
 | 
				
			||||||
        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:LineExtensionAmount',
 | 
					        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:LineExtensionAmount',
 | 
				
			||||||
                          invoice.invoice_legal_monetary_total.line_extension_amount,
 | 
					                          #MACHETE redondeo en valor
 | 
				
			||||||
 | 
					                          '%.02f' % (invoice.invoice_legal_monetary_total.line_extension_amount),
 | 
				
			||||||
                          currencyID='COP')
 | 
					                          currencyID='COP')
 | 
				
			||||||
        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount',
 | 
					        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount',
 | 
				
			||||||
                          invoice.invoice_legal_monetary_total.tax_exclusive_amount,
 | 
					                          #MACHETE redondeo en valor
 | 
				
			||||||
 | 
					                          '%.02f' % (invoice.invoice_legal_monetary_total.tax_exclusive_amount),
 | 
				
			||||||
                          currencyID='COP')
 | 
					                          currencyID='COP')
 | 
				
			||||||
        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount',
 | 
					        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount',
 | 
				
			||||||
                          invoice.invoice_legal_monetary_total.tax_inclusive_amount,
 | 
					                          #MACHETE ...
 | 
				
			||||||
 | 
					                          '%.02f' % (invoice.invoice_legal_monetary_total.tax_inclusive_amount),
 | 
				
			||||||
                          currencyID='COP')
 | 
					                          currencyID='COP')
 | 
				
			||||||
        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:ChargeTotalAmount',
 | 
					        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:ChargeTotalAmount',
 | 
				
			||||||
                          invoice.invoice_legal_monetary_total.charge_total_amount,
 | 
					                          #MACHETE ...
 | 
				
			||||||
 | 
					                          '%.02f' % (invoice.invoice_legal_monetary_total.charge_total_amount),
 | 
				
			||||||
                          currencyID='COP')
 | 
					                          currencyID='COP')
 | 
				
			||||||
        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:PayableAmount',
 | 
					        fexml.set_element('/fe:Invoice/cac:LegalMonetaryTotal/cbc:PayableAmount',
 | 
				
			||||||
                          invoice.invoice_legal_monetary_total.payable_amount,
 | 
					                          #MACHETE ...
 | 
				
			||||||
 | 
					                          '%.02f' % (invoice.invoice_legal_monetary_total.payable_amount),
 | 
				
			||||||
                          currencyID='COP')
 | 
					                          currencyID='COP')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def set_invoice_totals(fexml, invoice):
 | 
				
			||||||
 | 
					        tax_amount_for = defaultdict(lambda: 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #requeridos para CUFE
 | 
				
			||||||
 | 
					        tax_amount_for['01'] = 0.0
 | 
				
			||||||
 | 
					        tax_amount_for['04'] = 0.0
 | 
				
			||||||
 | 
					        tax_amount_for['03'] = 0.0
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for index, invoice_line in enumerate(invoice.invoice_lines):
 | 
				
			||||||
 | 
					            tax_amount_for[invoice_line.price.type_code] += invoice_line.tax_amount
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        next_append = False
 | 
				
			||||||
 | 
					        for cod_impuesto, tax_amount in tax_amount_for.items():
 | 
				
			||||||
 | 
					            next_append = True
 | 
				
			||||||
 | 
					            line = fexml.fragment('/fe:Invoice/cac:TaxTotal', append=next_append)
 | 
				
			||||||
 | 
					            line.set_element('/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cac:TaxScheme/cbc:ID',
 | 
				
			||||||
 | 
					                             cod_impuesto)
 | 
				
			||||||
 | 
					            line.set_element('/cac:TaxTotal/cbc:TaxAmount',
 | 
				
			||||||
 | 
					                             # MACHETE
 | 
				
			||||||
 | 
					                             '%.02f' % (tax_amount))
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
    def set_invoice_lines(fexml, invoice):
 | 
					    def set_invoice_lines(fexml, invoice):
 | 
				
			||||||
        next_append = False
 | 
					        next_append = False
 | 
				
			||||||
        for index, invoice_line in enumerate(invoice.invoice_lines):
 | 
					        for index, invoice_line in enumerate(invoice.invoice_lines):
 | 
				
			||||||
@@ -464,6 +491,7 @@ class DIANInvoiceXML(fe.FeXML):
 | 
				
			|||||||
        fexml.set_supplier(invoice)
 | 
					        fexml.set_supplier(invoice)
 | 
				
			||||||
        fexml.set_customer(invoice)
 | 
					        fexml.set_customer(invoice)
 | 
				
			||||||
        fexml.set_legal_monetary(invoice)
 | 
					        fexml.set_legal_monetary(invoice)
 | 
				
			||||||
 | 
					        fexml.set_invoice_totals(invoice)
 | 
				
			||||||
        fexml.set_invoice_lines(invoice)
 | 
					        fexml.set_invoice_lines(invoice)
 | 
				
			||||||
        fexml.set_payment_mean(invoice)
 | 
					        fexml.set_payment_mean(invoice)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user