se extracion confirmacion de habilitacion de la dian a configuration
This commit is contained in:
parent
85df85d355
commit
5776a972ca
|
@ -9,6 +9,7 @@ class Configuration(
|
|||
'Facho Configuration'
|
||||
__name__ = 'account_invoice_facho.configuration'
|
||||
|
||||
dian_fe_habilitacion = fields.MultiValue(fields.Boolean('Habilitacion'))
|
||||
dian_fe_key= fields.MultiValue(fields.Char('Dian FE KEY'))
|
||||
dian_fe_llave_publica = fields.MultiValue(fields.Char('Publica PCKS#12'))
|
||||
dian_fe_llave_privada = fields.MultiValue(fields.Char('Privada PCKS#12'))
|
||||
|
@ -31,6 +32,7 @@ class ConfigurationDianFECompany(ModelSQL, CompanyValueMixin):
|
|||
configuration = fields.Many2One('account_invoice_facho.configuration', 'Configuration',
|
||||
required=True, ondelete='CASCADE')
|
||||
|
||||
dian_fe_habilitacion = fields.Boolean('Habilitacion')
|
||||
dian_fe_key = fields.Char('Dian key')
|
||||
dian_fe_llave_publica = fields.Char('Publica PCKS#12')
|
||||
dian_fe_llave_privada = fields.Char('Publica PCKS#12')
|
||||
|
|
36
invoice.py
36
invoice.py
|
@ -181,8 +181,10 @@ class Invoice(metaclass=PoolMeta):
|
|||
return client.request(request)
|
||||
|
||||
def fe_update_status(self):
|
||||
config = Pool().get('account_invoice_facho.configuration')(1)
|
||||
req = dian.GetStatusZip
|
||||
if self.fe_habilitacion:
|
||||
|
||||
if config.dian_fe_habilitacion:
|
||||
req = dian.Habilitacion.GetStatusZip
|
||||
resp = self.do_dian_request(req(trackId = self.fe_delivery_trackid))
|
||||
|
||||
|
@ -200,34 +202,36 @@ class Invoice(metaclass=PoolMeta):
|
|||
params['fe_delivery_checked_at'] = datetime.now()
|
||||
self.write([self], params)
|
||||
|
||||
def fe_delivery_test(self):
|
||||
config = Pool().get('account_invoice_facho.configuration')(1)
|
||||
if self.fe_delivery_state not in ['queued', 'draft']:
|
||||
return
|
||||
|
||||
|
||||
facho_invoice = self.tofacho()
|
||||
def _dian_zip_io(self, facho_invoice):
|
||||
xml_invoice = form.DIANInvoiceXML(facho_invoice)
|
||||
|
||||
zipdata = io.BytesIO()
|
||||
with fe.DianZIP(zipdata) as dianzip:
|
||||
dianzip.add_invoice_xml(facho_invoice.invoice_ident, str(xml_invoice))
|
||||
|
||||
zipdata.seek(0)
|
||||
return zipdata
|
||||
|
||||
def do_fe_delivery(self):
|
||||
config = Pool().get('account_invoice_facho.configuration')(1)
|
||||
if self.fe_delivery_state not in ['queued', 'draft']:
|
||||
return
|
||||
facho_invoice = self.tofacho()
|
||||
|
||||
req = dian.SendBillAsync
|
||||
filename = 'invoice_%s' % (facho_invoice.invoice_ident)
|
||||
res = self.do_dian_request(dian.Habilitacion.SendTestSetAsync(
|
||||
filename, zipdata.read(),
|
||||
config.dian_fe_test_setid
|
||||
))
|
||||
args = [filename, self._dian_zip_io(facho_invoice).read()]
|
||||
if config.dian_fe_habilitacion:
|
||||
req = dian.Habilitacion.SendTestSetAsync
|
||||
args.append(config.dian_fe_test_setid)
|
||||
|
||||
res = self.do_dian_request(req(*args))
|
||||
if not res.ZipKey:
|
||||
raise UserError(str(res))
|
||||
self._force_write({'fe_delivery_state': 'delivered',
|
||||
'fe_delivery_trackid': res.ZipKey})
|
||||
|
||||
def fe_process(self):
|
||||
if self.fe_habilitacion:
|
||||
# TODO forzar facturas contabilidadas
|
||||
self.fe_delivery_test()
|
||||
self.do_fe_delivery()
|
||||
|
||||
@classmethod
|
||||
def fe_delivery(cls):
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<form>
|
||||
<label name="dian_fe_habilitacion"/>
|
||||
<field name="dian_fe_habilitacion"/>
|
||||
<label name="dian_fe_key"/>
|
||||
<field name="dian_fe_key"/>
|
||||
<label name="dian_fe_NITProveedorTecnologico"/>
|
||||
|
|
Loading…
Reference in New Issue