From a8ac8b6ed242cd204a5157d314e6d67c8b120a09 Mon Sep 17 00:00:00 2001 From: Cuauhtemoc Diaz Minor <cuauhtemoc.diaz@openpyme.mx> Date: Fri, 19 Oct 2018 15:58:49 -0500 Subject: [PATCH] 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 --- l10n_mx_params_pac/pacs/solucion_factible.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/l10n_mx_params_pac/pacs/solucion_factible.py b/l10n_mx_params_pac/pacs/solucion_factible.py index f92cc503..d3a72853 100644 --- a/l10n_mx_params_pac/pacs/solucion_factible.py +++ b/l10n_mx_params_pac/pacs/solucion_factible.py @@ -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): """ -- GitLab