/// <summary>
        /// Almacena una declaración temporal en el Blob
        /// </summary>
        /// <param name="declaracionBase64">Archivo en base 64 de la declaración</param>
        /// <param name="rfc">Rfc del contribuyente</param>
        /// <param name="regimen">Regimen a presentar</param>
        /// <param name="ejercicio">Identificador del ejercicio</param>
        /// <param name="periodo">Identificador del periodo</param>
        /// <param name="periododescripcion">Descripción del periodo</param>
        /// <param name="tipoDeclaracion">Tipo de declaración presentada</param>
        /// <param name="tipoDeclaracionDescripcion">Descripción de la declaración</param>
        /// <param name="tipoComplementaria">Tipo de complemetaria</param>
        /// <param name="tipoComplementariaDescripcion">Decripción del tipo de complementaria</param>
        /// <param name="tipoPersona">Tipo de persona F o M</param>
        /// <param name="subregimen">Identificadores de subregimen separados con "," </param>
        /// <param name="areageografica">Identificador del area geografica</param>
        /// <param name="sinCalculo">Bandera que indica si se implementara calculo automatico</param>
        /// <returns>Uri del Blob</returns>
        public string AlmacenarDeclaracionTemporal(string declaracionBase64, string rfcContribuyente, string idDeclaracion, int ejercicio,
                                                   string periodo, string periodoDescripcion, string periodicidad, string periodicidadDescripcion,
                                                   string tipoDeclaracion, string tipoDeclaracionDescripcion, string tipoComplementaria, string tipoComplementariaDescripcion, string NoReforma,
                                                   bool contieneErrores = false)
        {
            string uriBlob = string.Empty;

            try
            {
                RegistroEvento.Informacion(String.Format("Inicia AlmacenarDeclaracionTemporal con los sigs datos, rfc {0}, idDeclaracion {1}, ejercicio {2}, tipo decla {3}",
                                                         rfcContribuyente, idDeclaracion, ejercicio, tipoDeclaracion), CodigoEvento.InformacionNegocio, String.Empty, "Declaracion");

                string declaracion = Utileria.Instancia.DeCodificarBase64(declaracionBase64);
                using (var administrador = new AdministradorDeclaracion())
                {
                    uriBlob = administrador.AlmacenarDeclaracionTemporal(declaracion, rfcContribuyente, idDeclaracion, ejercicio,
                                                                         periodo, periodoDescripcion, periodicidad, periodicidadDescripcion,
                                                                         tipoDeclaracion, tipoDeclaracionDescripcion, tipoComplementaria, tipoComplementariaDescripcion, NoReforma, contieneErrores);
                }

                RegistroEvento.Informacion(String.Format("Termino sin Error AlmacenarDeclaracionTemporal con los sigs datos, rfc {0}, idDeclaracion {1}, ejercicio {2}, tipo decla {3}",
                                                         rfcContribuyente, idDeclaracion, ejercicio, tipoDeclaracion), CodigoEvento.InformacionNegocio, String.Empty, "Declaracion");
            }
            catch (Exception ex)
            {
                RegistraEvento.Instancia.EscribeEvento(ex);
                RegistroEvento.Error(ref ex, CodigoEvento.ErrorInfraestrucura, GetType().Name);
                throw ex;
            }
            return(uriBlob);
        }
        public string AlmacenarDeclaracionProvisional(DeclaracionProvisional pro, string xmlDeclaracion, string xmlSatMessage, string pdfBase64, string htmlBase64)
        {
            string uriBlob = string.Empty;

            try
            {
                RegistroEvento.Informacion(String.Format("Inicia AlmacenarDeclaracionProvisional con los sigs datos, rfc {0}, idDeclaracion {1}, ejercicio {2}, tipo decla {3}",
                                                         pro.rfc, pro.idDeclaracion, pro.ejercicio, pro.tipoDeclaracion), CodigoEvento.InformacionNegocio, String.Empty, "Declaracion");


                using (var administrador = new AdministradorDeclaracion())
                {
                    uriBlob = administrador.RecibeDeclaracionDyp(pro, xmlDeclaracion, xmlSatMessage, pdfBase64, htmlBase64);
                }

                RegistroEvento.Informacion(String.Format("Termino sin Error AlmacenarDeclaracionProvisional con los sigs datos, rfc {0}, idDeclaracion {1}, ejercicio {2}, tipo decla {3}",
                                                         pro.rfc, pro.idDeclaracion, pro.ejercicio, pro.tipoDeclaracion), CodigoEvento.InformacionNegocio, String.Empty, "Declaracion");
            }
            catch (Exception ex)
            {
                RegistraEvento.Instancia.EscribeEvento(ex);
                RegistroEvento.Error(ref ex, CodigoEvento.ErrorInfraestrucura, GetType().Name);
                throw ex;
            }
            return(uriBlob);
        }
Пример #3
0
        public ActionResult AlmacenarDeclaracionTemporal(string data = "")
        {
            ResultadoViewModel resultado     = new ResultadoViewModel();
            ContribuyenteInfo  contribuyente = this.ContribuyenteAutenticado();

            try
            {
                if (!string.IsNullOrEmpty(data))
                {
                    dynamic parametro                     = Newtonsoft.Json.JsonConvert.DeserializeObject(data);
                    string  xmldeclaracion                = parametro.xmldeclaracion;
                    string  rfc                           = contribuyente.Rfc;
                    string  idDeclaracion                 = parametro.iddeclaracion;
                    int     ejercicio                     = parametro.ejercicio;
                    string  periodo                       = parametro.periodo;
                    string  periodoDescripcion            = parametro.periododesc;
                    string  periodicidad                  = parametro.periodicidad;
                    string  periodicidadDescripcion       = parametro.periodicidaddesc;
                    string  tipoDeclaracion               = parametro.tipodeclaracion;
                    string  tipoDeclaracionDescripcion    = parametro.tipodeclaraciondesc;
                    string  tipoComplementaria            = parametro.tipocomplementaria;
                    string  tipoComplementariaDescripcion = parametro.tipocomplementariadesc;
                    string  NoReforma                     = parametro.noreforma;
                    bool    contieneErrores               = parametro.errores ?? false;

                    string uriBlob = string.Empty;
                    using (var declaracion = new Declaracion())
                    {
                        uriBlob = declaracion.AlmacenarDeclaracionTemporal(xmldeclaracion, rfc, idDeclaracion, ejercicio,
                                                                           periodo, periodoDescripcion, periodicidad, periodicidadDescripcion,
                                                                           tipoDeclaracion, tipoDeclaracionDescripcion, tipoComplementaria, tipoComplementariaDescripcion, NoReforma,
                                                                           contieneErrores);
                    }

                    if (string.IsNullOrWhiteSpace(uriBlob))
                    {
                        resultado = new ResultadoViewModel()
                        {
                            Excepcion = "Error desconocido.",
                            EsValido  = false,
                            Mensaje   = "Se generó un error al guardar la declaración. Inténtelo nuevamente."
                        };

                        var ex =
                            new Exception("Se generó un error al guardar la declaración, URI vacío en AlmacenarDeclaracionTemporal");

                        RegistroEvento.Error(
                            ref ex,
                            CodigoEvento.ErrorNegocio,
                            "DeclaracionController",
                            rfc: rfc,
                            regimen: idDeclaracion,
                            ejercicio: ejercicio.ToString(),
                            tipoDeclaracion: tipoDeclaracion,
                            origen: "Portal");
                    }
                    else
                    {
                        /*Se regresa el idDeclaración encriptado para envíos en claro desde la url*/
                        resultado = new ResultadoViewModel()
                        {
                            EsValido = true,
                            Mensaje  = new Sat.DyP.Herramientas.Encripcion.Encripcion().EncriptaCadena(idDeclaracion, Sat.DyP.Herramientas.Encripcion.TipoEncripcion.Base64URL)
                        };
                    }
                }
                else
                {
                    string mensajeError =
                        string.Format(
                            "El parametro viene vacio en AlmacenarDeclaracionTemporal para el RFC: {0}",
                            contribuyente != null && !string.IsNullOrEmpty(contribuyente.Rfc)
                                ? contribuyente.Rfc
                                : "NULO");

                    RegistroEvento.Informacion(
                        mensajeError,
                        CodigoEvento.InformacionNegocio,
                        "DeclaracionController",
                        null);

                    resultado = new ResultadoViewModel()
                    {
                        Excepcion =
                            "El parámetro data viene vecío en AlmacenarDeclaracionTemporal",
                        EsValido = false,
                        Mensaje  = mensajeError
                    };
                }
            }
            catch (Exception ex)
            {
                resultado = new ResultadoViewModel()
                {
                    EsValido = false,
                    Mensaje  =
                        "Se generó un error al guardar la declaración. Inténtelo nuevamente."
                };
                RegistroEvento.Error(
                    ref ex,
                    CodigoEvento.ErrorNegocio,
                    "DeclaracionController",
                    rfc: contribuyente != null && !string.IsNullOrEmpty(contribuyente.Rfc) ? contribuyente.Rfc : "NULO");
            }

            return(this.Json(resultado, JsonRequestBehavior.AllowGet));
        }