feat(ir.attachment.facturae.mx): se crear funciones necesarias para tarea cron de las cancelaciones

se crean las funciones:
\t`action_consult_cancellation_status()`: que es la que se manda a llamar
para ver el estatus de cancelacion.
\t`consult_cancellation_status_sat()`:que es la que manda a
llamar la consulta con los pac configurados
parent 477a978e
......@@ -543,9 +543,8 @@ class IrAttachmentFacturaeMx(models.Model):
TODO: Cancel outgoing CFDIs
"""
self.ensure_one()
if self.cfdi_type == "incoming" and self.state in ("signed", "done","waiting"):
cancel_answer = self.cancel_cfdi_sat()[0]
cancel_answer = self.cancel_cfdi_sat()
if cancel_answer:
self.cancel_cfdi()
elif cancel_answer is None:
......@@ -556,6 +555,20 @@ class IrAttachmentFacturaeMx(models.Model):
self.undo_waiting_state()
return cancel_answer
@api.multi
def action_consult_cancellation_status(self):
"""Consult current cfdi cancel status on SAT"""
self.ensure_one()
if self.state in("waiting"):
consult_answer = self.consult_cfdi_cancellation_status_sat()
if consult_answer:
self.cancel_cfdi()
elif consult_answer is None:
pass
else:
self.undo_waiting_state()
return consult_answer
def sign_xml(self, xml_data):
# Get current certificate for current company
certificate = self.company_id.certificate_id
......@@ -808,13 +821,12 @@ class IrAttachmentFacturaeMx(models.Model):
self.action_send_mail(raise_exception=False)
return
@api.one
@api.multi
def cancel_cfdi_sat(self):
""" Function uses to cancel a CFDI through PAC
"""
record = self.env[self.type_attachment].browse(self.res_id)
# Get all setup PACs in journal
params_pacs = record.company_id.pac_ids
self.ensure_one()
params_pacs = self.get_pacs()
# Cancel function does not generate a new XML file
# either sign any file using user certificates
......@@ -823,6 +835,20 @@ class IrAttachmentFacturaeMx(models.Model):
# Call function which connects with PACs
return params_pacs.cancel_cfdi(uuid=self.uuid)
@api.multi
def consult_cfdi_cancellation_status_sat(self):
self.ensure_one()
params_pacs = self.get_pacs()
return params_pacs.consult_cfdi_cancellation_status(uuid=self.uuid)
@api.model
def get_pacs(self):
"""get all setup PACs in journal"""
record = self.env[self.type_attachment].browse(self.res_id)
# Get all setup PACs in journal
return record.company_id.pac_ids
@api.multi
def undo_waiting_state(self):
'''when cancel is negate, undo waiting state'''
......@@ -855,6 +881,8 @@ class IrAttachmentFacturaeMx(models.Model):
self.file_pdf.write({"datas": base64.encodestring(data)})
self.write({"cfdi_fecha_cancelado": fields.Datetime.now(), "state": "cancel"})
@api.multi
@api.one
def validate_cfdi_folio_fiscal(self):
""" Validate an UUID on SAT servers"""
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment