from .. import fe __all__ = ['AttachedDocument'] class AttachedDocument(): def __init__(self, id): self.schema =\ 'urn:oasis:names:specification:ubl:schema:xsd:AttachedDocument-2' self.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): return self.fexml