178 lines
6.4 KiB
Python
178 lines
6.4 KiB
Python
from .. import fe
|
|
|
|
__all__ = ['ApplicationResponse']
|
|
|
|
|
|
class ApplicationResponse:
|
|
|
|
def __init__(self, invoice, tag_document='ApplicationResponse'):
|
|
self.schema =\
|
|
'urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2'
|
|
self.tag_document = tag_document
|
|
self.invoice = invoice
|
|
self.fexml = fe.FeXML(
|
|
self.tag_document, self.schema)
|
|
self.application_response = self.application_response()
|
|
|
|
def application_response(self):
|
|
# 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', 'DIAN 2.1')
|
|
|
|
# DIAN 1.9.-2023: AE04a
|
|
self.fexml.set_element(
|
|
'./cbc:ProfileExecutionID', '1')
|
|
|
|
self.fexml.set_element(
|
|
'./cbc:ID', '1')
|
|
|
|
self.fexml.set_element(
|
|
'./cbc:UUID', '1', schemeName="CUDE-SHA384")
|
|
|
|
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'))
|
|
|
|
self.set_sender_party()
|
|
self.set_receiver_party()
|
|
self.set_document_response()
|
|
|
|
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_document_response(self):
|
|
self.fexml.placeholder_for(
|
|
'./cac:DocumentResponse')
|
|
self.fexml.placeholder_for(
|
|
'./cac:DocumentResponse/cac:Response')
|
|
self.fexml.set_element(
|
|
'./cac:DocumentResponse/cac:Response/cbc:ResponseCode',
|
|
'02')
|
|
self.fexml.set_element(
|
|
'./cac:DocumentResponse/cac:Response/cbc:Description',
|
|
'Documento validado por la DIAN')
|
|
self.set_documnent_reference()
|
|
|
|
def set_documnent_reference(self):
|
|
self.fexml.placeholder_for(
|
|
'./cac:DocumentResponse/cac:DocumentReference')
|
|
self.fexml.set_element(
|
|
'./cac:DocumentResponse/cac:DocumentReference/cbc:ID',
|
|
'FESS19566058')
|
|
self.fexml.set_element(
|
|
'./cac:DocumentResponse/cac:DocumentReference/cbc:UUID',
|
|
'f51ee529aabd19d10e39444f2f593b94d56d5885fbf433faf718d53a7e968f64bf54a6ee43c6a2df842771b54a6aae1a',
|
|
schemeName="CUFE-SHA384")
|
|
self.set_response_lines()
|
|
|
|
def set_response_lines(self):
|
|
lines = [{
|
|
'LineID': '1',
|
|
'ResponseCode': '0000',
|
|
'Description': '0',
|
|
}]
|
|
|
|
for line in lines:
|
|
self.fexml.set_element(
|
|
'./cac:DocumentResponse/cac:LineResponse/cac:LineReference/cbc:LineID', line[
|
|
'LineID'])
|
|
self.fexml.set_element(
|
|
'./cac:DocumentResponse/cac:LineResponse/cac:Response/cbc:ResponseCode', line[
|
|
'ResponseCode'])
|
|
self.fexml.set_element(
|
|
'./cac:DocumentResponse/cac:LineResponse/cac:Response/cbc:Description', line[
|
|
'Description'])
|
|
|
|
|
|
|
|
def toFachoXML(self):
|
|
return self.fexml
|