AttachedDocument(WIP): Se escribe envoltorio AttachedDocument issue #4
This commit is contained in:
parent
e237d1b45f
commit
4fe82daac6
@ -6,10 +6,164 @@ __all__ = ['AttachedDocument']
|
|||||||
class AttachedDocument():
|
class AttachedDocument():
|
||||||
|
|
||||||
def __init__(self, id):
|
def __init__(self, id):
|
||||||
schema =\
|
self.schema =\
|
||||||
'urn:oasis:names:specification:ubl:schema:xsd:AttachedDocument-2'
|
'urn:oasis:names:specification:ubl:schema:xsd:AttachedDocument-2'
|
||||||
self.fexml = fe.FeXML('AttachedDocument', schema)
|
self.id = id
|
||||||
self.fexml.set_element('./cbc:ID', id)
|
self.attached_document_invoice = self.attached_document_invoice()
|
||||||
|
|
||||||
|
# self.fexml.placeholder_for(
|
||||||
|
# './ext:UBLExtension/ext:ExtensionContent/ds:Signature')
|
||||||
|
# self.fexml.set_element('./ext:UBLExtension/ext:ExtensionContent/ds:Signature', None, Id=id)
|
||||||
|
#
|
||||||
|
|
||||||
|
def attached_document_invoice(self):
|
||||||
|
self.fexml = fe.FeXML(
|
||||||
|
'AttachedDocument', self.schema)
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE02
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cbc:UBLVersionID', 'UBL 2.1')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE03
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cbc:CustomizationID', 'Documentos adjuntos')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE04
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cbc:ProfileID', 'Factura Electrónica de Venta')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE04a
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cbc:ProfileExecutionID', '1')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE04b
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cbc:ID', self.id)
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE05
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cbc:IssueDate', '2024-12-07')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE06
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cbc:IssueTime', '12:16:07-05:00')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE08
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cbc:DocumentType', 'Contenedor de Factura Electrónica')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE08a
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cbc:ParentDocumentID', 'FE60247')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE09
|
||||||
|
self.set_sender_party()
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE20
|
||||||
|
self.set_receiver_party()
|
||||||
|
# DIAN 1.9.-2023: AE33
|
||||||
|
self.set_attachment()
|
||||||
|
self.set_parent_document_line_reference()
|
||||||
|
|
||||||
|
def set_sender_party(self):
|
||||||
|
# DIAN 1.9.-2023: AE09
|
||||||
|
self.fexml.placeholder_for(
|
||||||
|
'./cac:SenderParty')
|
||||||
|
# DIAN 1.9.-2023: AE10
|
||||||
|
self.fexml.placeholder_for(
|
||||||
|
'./cac:SenderParty/cac:PartyTaxScheme')
|
||||||
|
# DIAN 1.9.-2023: AE11
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:SenderParty/cac:PartyTaxScheme/cbc:RegistrationName',
|
||||||
|
'CASCOS MEDELLIN')
|
||||||
|
# DIAN 1.9.-2023: AE12
|
||||||
|
# DIAN 1.9.-2023: AE13
|
||||||
|
# DIAN 1.9.-2023: AE14
|
||||||
|
# DIAN 1.9.-2023: AE15
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:SenderParty/cac:PartyTaxScheme/cbc:CompanyID', '900795506',
|
||||||
|
schemeAgencyID='195',
|
||||||
|
schemeID='0',
|
||||||
|
schemeName='31')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE16
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:SenderParty/cac:PartyTaxScheme/cbc:TaxLevelCode',
|
||||||
|
'R-99-PN')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE18
|
||||||
|
self.fexml.placeholder_for(
|
||||||
|
'./cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE19
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID',
|
||||||
|
'01')
|
||||||
|
|
||||||
|
# DIAN 1.9.-2023: AE20
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name',
|
||||||
|
'IVA')
|
||||||
|
|
||||||
|
def set_receiver_party(self):
|
||||||
|
# DIAN 1.9.-2023: AE21
|
||||||
|
self.fexml.placeholder_for(
|
||||||
|
'./cac:ReceiverParty')
|
||||||
|
# DIAN 1.9.-2023: AE22
|
||||||
|
self.fexml.placeholder_for(
|
||||||
|
'./cac:ReceiverParty/cac:PartyTaxScheme')
|
||||||
|
# DIAN 1.9.-2023: AE23
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:ReceiverParty/cac:PartyTaxScheme/cbc:RegistrationName',
|
||||||
|
'CASCOS MEDELLIN')
|
||||||
|
# DIAN 1.9.-2023: AE24
|
||||||
|
# DIAN 1.9.-2023: AE25
|
||||||
|
# DIAN 1.9.-2023: AE26
|
||||||
|
# DIAN 1.9.-2023: AE27
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:ReceiverParty/cac:PartyTaxScheme/cbc:CompanyID', '900795506',
|
||||||
|
schemeAgencyID='195',
|
||||||
|
schemeID='0',
|
||||||
|
schemeName='31')
|
||||||
|
# DIAN 1.9.-2023: AE28
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:ReceiverParty/cac:PartyTaxScheme/cbc:TaxLevelCode',
|
||||||
|
'R-99-PN')
|
||||||
|
# DIAN 1.9.-2023: AE30
|
||||||
|
self.fexml.placeholder_for(
|
||||||
|
'./cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme')
|
||||||
|
# DIAN 1.9.-2023: AE31
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID',
|
||||||
|
'01')
|
||||||
|
# DIAN 1.9.-2023: AE32
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name',
|
||||||
|
'IVA')
|
||||||
|
|
||||||
|
def set_attachment(self):
|
||||||
|
# DIAN 1.9.-2023: AE33
|
||||||
|
self.fexml.placeholder_for(
|
||||||
|
'./cac:Attachment')
|
||||||
|
# DIAN 1.9.-2023: AE34
|
||||||
|
self.fexml.placeholder_for(
|
||||||
|
'./cac:Attachment/cac:ExternalReference')
|
||||||
|
# DIAN 1.9.-2023: AE35
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:Attachment/cac:ExternalReference/cbc:MimeCode',
|
||||||
|
'text/xml')
|
||||||
|
# DIAN 1.9.-2023: AE36
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:Attachment/cac:ExternalReference/cbc:EncodingCode',
|
||||||
|
'UTF-8')
|
||||||
|
# DIAN 1.9.-2023: AE37
|
||||||
|
self.fexml.set_element(
|
||||||
|
'./cac:Attachment/cac:ExternalReference/cbc:Description',
|
||||||
|
' ')
|
||||||
|
|
||||||
|
def set_parent_document_line_reference(self):
|
||||||
|
self.fexml.placeholder_for(
|
||||||
|
'./cac:ParentDocumentLineReference')
|
||||||
|
|
||||||
def toFachoXML(self):
|
def toFachoXML(self):
|
||||||
return self.fexml
|
return self.fexml
|
||||||
|
@ -13,4 +13,58 @@ import helpers
|
|||||||
def test_xml_with_required_elements():
|
def test_xml_with_required_elements():
|
||||||
doc = form_xml.AttachedDocument(id='123')
|
doc = form_xml.AttachedDocument(id='123')
|
||||||
xml = doc.toFachoXML()
|
xml = doc.toFachoXML()
|
||||||
assert xml.get_element_text('/atd:AttachedDocument/cbc:ID') == '123'
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cbc:UBLVersionID') == 'UBL 2.1'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cbc:CustomizationID') == 'Documentos adjuntos'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cbc:ProfileID') == 'Factura Electrónica de Venta'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cbc:ProfileExecutionID') == '1'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cbc:ID') == '123'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cbc:IssueDate') == '2024-12-07'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cbc:IssueTime') == '12:16:07-05:00'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cbc:DocumentType'
|
||||||
|
) == 'Contenedor de Factura Electrónica'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cbc:ParentDocumentID'
|
||||||
|
) == 'FE60247'
|
||||||
|
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cbc:RegistrationName'
|
||||||
|
) == 'CASCOS MEDELLIN'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cbc:CompanyID'
|
||||||
|
) == '900795506'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cbc:TaxLevelCode'
|
||||||
|
) == 'R-99-PN'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID'
|
||||||
|
) == '01'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name'
|
||||||
|
) == 'IVA'
|
||||||
|
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cbc:RegistrationName'
|
||||||
|
) == 'CASCOS MEDELLIN'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cbc:CompanyID'
|
||||||
|
) == '900795506'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cbc:TaxLevelCode'
|
||||||
|
) == 'R-99-PN'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID'
|
||||||
|
) == '01'
|
||||||
|
assert xml.get_element_text(
|
||||||
|
'/atd:AttachedDocument/cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name'
|
||||||
|
) == 'IVA'
|
||||||
|
|
||||||
|
# with open("output.xml", "w") as fh:
|
||||||
|
# fh.write(xml.tostring())
|
||||||
|
Loading…
Reference in New Issue
Block a user