facho/fe/fe.py(DianXMLExtensionInvoiceAuthorization): nueva extension para adicionar InvoiceAuthorization segun resolucion de facturacion
FossilOrigin-Name: d56e34d90366bc5063650569b8933a2b1575e759e71c8b3445a983eb16ec93c0
This commit is contained in:
parent
45ca3517aa
commit
be9d1a37d5
@ -3,4 +3,5 @@ from .fe import NAMESPACES
|
||||
from .fe import DianXMLExtensionSigner
|
||||
from .fe import DianXMLExtensionSoftwareSecurityCode
|
||||
from .fe import DianXMLExtensionCUFE
|
||||
from .fe import DianXMLExtensionInvoiceAuthorization
|
||||
from .fe import DianZIP
|
||||
|
@ -217,7 +217,37 @@ class DianXMLExtensionSigner(FachoXMLExtension):
|
||||
return (dian_path, [signature])
|
||||
|
||||
|
||||
class DianXMLExtensionInvoiceAuthorization(FachoXMLExtension):
|
||||
# RESOLUCION 0004: pagina 106
|
||||
|
||||
def __init__(self, authorization: str,
|
||||
period_startdate: datetime, period_enddate: datetime,
|
||||
prefix: str, from_: int, to: int):
|
||||
self.authorization = authorization
|
||||
self.period_startdate = period_startdate
|
||||
self.period_enddate = period_enddate
|
||||
self.prefix = prefix
|
||||
self.from_ = from_
|
||||
self.to = to
|
||||
|
||||
def build(self, fexml):
|
||||
fexml.set_element('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceSource/cbc:IdentificationCode', 'CO')
|
||||
|
||||
invoice_control = fexml.fragment('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceControl')
|
||||
invoice_control.set_element('/sts:InvoiceControl/sts:InvoiceAuthorization', self.authorization)
|
||||
invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizationPeriod/cbc:StartDate',
|
||||
self.period_startdate.strftime('%Y-%m-%d'))
|
||||
invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizationPeriod/cbc:EndDate',
|
||||
self.period_enddate.strftime('%Y-%m-%d'))
|
||||
invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizedInvoices/sts:Prefix',
|
||||
self.prefix)
|
||||
invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizedInvoices/sts:From',
|
||||
self.from_)
|
||||
invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizedInvoices/sts:To',
|
||||
self.to)
|
||||
return '', []
|
||||
|
||||
|
||||
class DianZIP:
|
||||
|
||||
# RESOLUCION 0001: pagina 540
|
||||
|
@ -2,6 +2,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# This file is part of facho. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from datetime import datetime
|
||||
|
||||
import pytest
|
||||
from facho import fe
|
||||
@ -53,3 +54,15 @@ def test_dian_extension_software_security_code():
|
||||
xml.add_extension(security_code)
|
||||
content = xml.get_element_text('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:SoftwareSecurityCode')
|
||||
assert content is not None
|
||||
|
||||
def test_dian_extension_invoice_authorization():
|
||||
invoice_authorization = '18762002346472'
|
||||
inv_auth_ext = fe.DianXMLExtensionInvoiceAuthorization(invoice_authorization,
|
||||
datetime(2017, 2, 23),
|
||||
datetime(2019, 8, 23),
|
||||
'MD', 100001, 174999)
|
||||
xml = fe.FeXML('Invoice',
|
||||
'http://www.dian.gov.co/contratos/facturaelectronica/v1')
|
||||
xml.add_extension(inv_auth_ext)
|
||||
auth = xml.get_element_text('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceControl/sts:InvoiceAuthorization')
|
||||
assert auth == invoice_authorization
|
||||
|
Loading…
Reference in New Issue
Block a user