feat(solucion_factible): soporte para cancelacion CFDI 3.3

En la cancelacion de CFDIs se regresa la respuesta del PAC usando el objeto `PacCancelAnswer` con
el estatus de cancelacion del CFDI
parent db1ec308
......@@ -12,6 +12,9 @@ from openerp import api, fields, models, tools
from openerp.tools.translate import _
from ..models import exceptions as pac_exceptions
from ..lib.pac_answer import PacCancelAnswer
from SOAPpy.Errors import HTTPError, UnknownTypeError, UnderflowError,\
RecursionError
logger = logging.getLogger(__name__)
......@@ -78,22 +81,28 @@ class ParamsPac(models.Model):
wsdl_client.soapproxy.config.dumpSOAPIn = 0
wsdl_client.soapproxy.config.debug = 0
wsdl_client.soapproxy.config.dict_encoding = 'UTF-8'
result = wsdl_client.cancelarAsincrono(*params)
try:
result = wsdl_client.cancelarAsincrono(*params)
except (
HTTPError, UnknownTypeError, UnderflowError, RecursionError
) as e:
logger.info(e)
status_cancel = result['status'] or ''
mensaje_cancel = result['mensaje'] or ''
cancel_answer = PacCancelAnswer(uuid, status_cancel, status_cancel)
# Something went wrong and raise exception
if status_cancel in pac_exceptions.cancel_error_list:
if cancel_answer.estatus in pac_exceptions.cancel_error_list:
raise pac_exceptions.CancelError(
code=status_cancel, message=mensaje_cancel,
code=cancel_answer, message=mensaje_cancel,
)
# Cancel process was unsuccessful
elif status_cancel not in '200':
elif cancel_answer.estatus not in '200':
raise Exception(
' '.join(['Code', status_cancel, mensaje_cancel]),
)
# If code result is 200 then all was okay
else:
return True
return cancel_answer
def _upload_ws_file(self, fdata=None):
"""
......
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