Fix: Se reemplazan datos de prueba por objeto Invoice issue #4

This commit is contained in:
Rodia 2024-12-27 21:04:35 -05:00
parent 4fe82daac6
commit 612aae1f86
2 changed files with 39 additions and 32 deletions

View File

@ -5,10 +5,11 @@ __all__ = ['AttachedDocument']
class AttachedDocument(): class AttachedDocument():
def __init__(self, id): def __init__(self, invoice, id):
self.schema =\ self.schema =\
'urn:oasis:names:specification:ubl:schema:xsd:AttachedDocument-2' 'urn:oasis:names:specification:ubl:schema:xsd:AttachedDocument-2'
self.id = id self.id = id
self.invoice = invoice
self.attached_document_invoice = self.attached_document_invoice() self.attached_document_invoice = self.attached_document_invoice()
# self.fexml.placeholder_for( # self.fexml.placeholder_for(
@ -42,11 +43,12 @@ class AttachedDocument():
# DIAN 1.9.-2023: AE05 # DIAN 1.9.-2023: AE05
self.fexml.set_element( self.fexml.set_element(
'./cbc:IssueDate', '2024-12-07') './cbc:IssueDate', self.invoice.invoice_issue.strftime('%Y-%m-%d'))
# DIAN 1.9.-2023: AE06 # DIAN 1.9.-2023: AE06
self.fexml.set_element( self.fexml.set_element(
'./cbc:IssueTime', '12:16:07-05:00') './cbc:IssueTime', self.invoice.invoice_issue.strftime(
'%H:%M:%S-05:00'))
# DIAN 1.9.-2023: AE08 # DIAN 1.9.-2023: AE08
self.fexml.set_element( self.fexml.set_element(
@ -54,7 +56,7 @@ class AttachedDocument():
# DIAN 1.9.-2023: AE08a # DIAN 1.9.-2023: AE08a
self.fexml.set_element( self.fexml.set_element(
'./cbc:ParentDocumentID', 'FE60247') './cbc:ParentDocumentID', self.invoice.invoice_ident)
# DIAN 1.9.-2023: AE09 # DIAN 1.9.-2023: AE09
self.set_sender_party() self.set_sender_party()
@ -75,21 +77,22 @@ class AttachedDocument():
# DIAN 1.9.-2023: AE11 # DIAN 1.9.-2023: AE11
self.fexml.set_element( self.fexml.set_element(
'./cac:SenderParty/cac:PartyTaxScheme/cbc:RegistrationName', './cac:SenderParty/cac:PartyTaxScheme/cbc:RegistrationName',
'CASCOS MEDELLIN') self.invoice.invoice_supplier.name)
# DIAN 1.9.-2023: AE12 # DIAN 1.9.-2023: AE12
# DIAN 1.9.-2023: AE13 # DIAN 1.9.-2023: AE13
# DIAN 1.9.-2023: AE14 # DIAN 1.9.-2023: AE14
# DIAN 1.9.-2023: AE15 # DIAN 1.9.-2023: AE15
self.fexml.set_element( self.fexml.set_element(
'./cac:SenderParty/cac:PartyTaxScheme/cbc:CompanyID', '900795506', './cac:SenderParty/cac:PartyTaxScheme/cbc:CompanyID',
self.invoice.invoice_supplier.ident,
schemeAgencyID='195', schemeAgencyID='195',
schemeID='0', schemeID=self.invoice.invoice_supplier.ident.dv,
schemeName='31') schemeName=self.invoice.invoice_supplier.ident.type_fiscal)
# DIAN 1.9.-2023: AE16 # DIAN 1.9.-2023: AE16
self.fexml.set_element( self.fexml.set_element(
'./cac:SenderParty/cac:PartyTaxScheme/cbc:TaxLevelCode', './cac:SenderParty/cac:PartyTaxScheme/cbc:TaxLevelCode',
'R-99-PN') self.invoice.invoice_supplier.responsability_code)
# DIAN 1.9.-2023: AE18 # DIAN 1.9.-2023: AE18
self.fexml.placeholder_for( self.fexml.placeholder_for(
@ -98,12 +101,12 @@ class AttachedDocument():
# DIAN 1.9.-2023: AE19 # DIAN 1.9.-2023: AE19
self.fexml.set_element( self.fexml.set_element(
'./cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID', './cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID',
'01') self.invoice.invoice_supplier.tax_scheme.code)
# DIAN 1.9.-2023: AE20 # DIAN 1.9.-2023: AE20
self.fexml.set_element( self.fexml.set_element(
'./cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name', './cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name',
'IVA') self.invoice.invoice_supplier.tax_scheme.name)
def set_receiver_party(self): def set_receiver_party(self):
# DIAN 1.9.-2023: AE21 # DIAN 1.9.-2023: AE21
@ -115,31 +118,32 @@ class AttachedDocument():
# DIAN 1.9.-2023: AE23 # DIAN 1.9.-2023: AE23
self.fexml.set_element( self.fexml.set_element(
'./cac:ReceiverParty/cac:PartyTaxScheme/cbc:RegistrationName', './cac:ReceiverParty/cac:PartyTaxScheme/cbc:RegistrationName',
'CASCOS MEDELLIN') self.invoice.invoice_customer.name)
# DIAN 1.9.-2023: AE24 # DIAN 1.9.-2023: AE24
# DIAN 1.9.-2023: AE25 # DIAN 1.9.-2023: AE25
# DIAN 1.9.-2023: AE26 # DIAN 1.9.-2023: AE26
# DIAN 1.9.-2023: AE27 # DIAN 1.9.-2023: AE27
self.fexml.set_element( self.fexml.set_element(
'./cac:ReceiverParty/cac:PartyTaxScheme/cbc:CompanyID', '900795506', './cac:ReceiverParty/cac:PartyTaxScheme/cbc:CompanyID',
self.invoice.invoice_customer.ident,
schemeAgencyID='195', schemeAgencyID='195',
schemeID='0', schemeID=self.invoice.invoice_customer.ident.dv,
schemeName='31') schemeName=self.invoice.invoice_customer.ident.type_fiscal)
# DIAN 1.9.-2023: AE28 # DIAN 1.9.-2023: AE28
self.fexml.set_element( self.fexml.set_element(
'./cac:ReceiverParty/cac:PartyTaxScheme/cbc:TaxLevelCode', './cac:ReceiverParty/cac:PartyTaxScheme/cbc:TaxLevelCode',
'R-99-PN') self.invoice.invoice_customer.responsability_code)
# DIAN 1.9.-2023: AE30 # DIAN 1.9.-2023: AE30
self.fexml.placeholder_for( self.fexml.placeholder_for(
'./cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme') './cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme')
# DIAN 1.9.-2023: AE31 # DIAN 1.9.-2023: AE31
self.fexml.set_element( self.fexml.set_element(
'./cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID', './cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID',
'01') self.invoice.invoice_customer.tax_scheme.code)
# DIAN 1.9.-2023: AE32 # DIAN 1.9.-2023: AE32
self.fexml.set_element( self.fexml.set_element(
'./cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name', './cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name',
'IVA') self.invoice.invoice_customer.tax_scheme.name)
def set_attachment(self): def set_attachment(self):
# DIAN 1.9.-2023: AE33 # DIAN 1.9.-2023: AE33

View File

@ -6,12 +6,13 @@
import pytest import pytest
from facho.fe import form_xml from facho.fe import form_xml
from datetime import datetime
import helpers import helpers
from fixtures import simple_invoice
def test_xml_with_required_elements(): def test_xml_with_required_elements(simple_invoice):
doc = form_xml.AttachedDocument(id='123') doc = form_xml.AttachedDocument(simple_invoice, id='123')
xml = doc.toFachoXML() xml = doc.toFachoXML()
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cbc:UBLVersionID') == 'UBL 2.1' '/atd:AttachedDocument/cbc:UBLVersionID') == 'UBL 2.1'
@ -24,25 +25,27 @@ def test_xml_with_required_elements():
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cbc:ID') == '123' '/atd:AttachedDocument/cbc:ID') == '123'
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cbc:IssueDate') == '2024-12-07' '/atd:AttachedDocument/cbc:IssueDate') == str(datetime.today().date())
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cbc:IssueTime') == '12:16:07-05:00' '/atd:AttachedDocument/cbc:IssueTime') == datetime.today(
).time().strftime(
'%H:%M:%S-05:00')
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cbc:DocumentType' '/atd:AttachedDocument/cbc:DocumentType'
) == 'Contenedor de Factura Electrónica' ) == 'Contenedor de Factura Electrónica'
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cbc:ParentDocumentID' '/atd:AttachedDocument/cbc:ParentDocumentID'
) == 'FE60247' ) == 'ABC123'
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cbc:RegistrationName' '/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cbc:RegistrationName'
) == 'CASCOS MEDELLIN' ) == 'facho-supplier'
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cbc:CompanyID' '/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cbc:CompanyID'
) == '900795506' ) == '123'
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cbc:TaxLevelCode' '/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cbc:TaxLevelCode'
) == 'R-99-PN' ) == 'ZZ'
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID' '/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID'
) == '01' ) == '01'
@ -52,13 +55,13 @@ def test_xml_with_required_elements():
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cbc:RegistrationName' '/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cbc:RegistrationName'
) == 'CASCOS MEDELLIN' ) == 'facho-customer'
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cbc:CompanyID' '/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cbc:CompanyID'
) == '900795506' ) == '321'
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cbc:TaxLevelCode' '/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cbc:TaxLevelCode'
) == 'R-99-PN' ) == 'ZZ'
assert xml.get_element_text( assert xml.get_element_text(
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID' '/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID'
) == '01' ) == '01'
@ -66,5 +69,5 @@ def test_xml_with_required_elements():
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name' '/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name'
) == 'IVA' ) == 'IVA'
# with open("output.xml", "w") as fh: with open("output.xml", "w") as fh:
# fh.write(xml.tostring()) fh.write(xml.tostring())