from .. import fe __all__ = ['AttachedDocument'] class AttachedDocument(): def __init__(self, invoice, id): self.schema =\ 'urn:oasis:names:specification:ubl:schema:xsd:AttachedDocument-2' self.id = id self.invoice = invoice 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', self.invoice.invoice_issue.strftime('%Y-%m-%d')) # DIAN 1.9.-2023: AE06 self.fexml.set_element( './cbc:IssueTime', self.invoice.invoice_issue.strftime( '%H:%M:%S-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', self.invoice.invoice_ident) # 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', self.invoice.invoice_supplier.name) # 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', self.invoice.invoice_supplier.ident, schemeAgencyID='195', schemeID=self.invoice.invoice_supplier.ident.dv, schemeName=self.invoice.invoice_supplier.ident.type_fiscal) # DIAN 1.9.-2023: AE16 self.fexml.set_element( './cac:SenderParty/cac:PartyTaxScheme/cbc:TaxLevelCode', self.invoice.invoice_supplier.responsability_code) # 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', self.invoice.invoice_supplier.tax_scheme.code) # DIAN 1.9.-2023: AE20 self.fexml.set_element( './cac:SenderParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name', self.invoice.invoice_supplier.tax_scheme.name) 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', self.invoice.invoice_customer.name) # 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', self.invoice.invoice_customer.ident, schemeAgencyID='195', schemeID=self.invoice.invoice_customer.ident.dv, schemeName=self.invoice.invoice_customer.ident.type_fiscal) # DIAN 1.9.-2023: AE28 self.fexml.set_element( './cac:ReceiverParty/cac:PartyTaxScheme/cbc:TaxLevelCode', self.invoice.invoice_customer.responsability_code) # 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', self.invoice.invoice_customer.tax_scheme.code) # DIAN 1.9.-2023: AE32 self.fexml.set_element( './cac:ReceiverParty/cac:PartyTaxScheme/cac:TaxScheme/cbc:Name', self.invoice.invoice_customer.tax_scheme.name) 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