Beispiel #1
0
        public ActionResult Abrir(string id)
        {
            ActionResult vista      = this.View(RecursoClasificador.ParcialErrorEnPermisos);
            var          encabezado = new EncabezadoDypClasificador();

            try
            {
                ContribuyenteInfo contribuyente = this.ContribuyenteAutenticado();

                // TODO: Incluir la petición desde lugar referido
                // this.PeticionDesdeLugarReferido() :
                if (!string.IsNullOrEmpty(id) && contribuyente.Espms)
                {
                    DeclaracionClasificador declaracion = DeclaracionClasificadorComplementos.ObtenerDeclaracionDedeUrl(id);
                    var encriptador = new Sat.DyP.Herramientas.Encripcion.Encripcion();
                    var limpio      = encriptador.DesencriptaCadena(id, Sat.DyP.Herramientas.Encripcion.TipoEncripcion.Base64URL);

                    this.ImportarDatos(declaracion);

                    if (contribuyente.Rfc == declaracion.Rfc)
                    {
                        declaracion.ActualizarDeclaracionPorAbrirDeclaracion();

                        var  pago      = new DeterminacionPagoDyP();
                        var  respuesta = pago.ConsultarOpcPagoISREnClasificador(declaracion.Ejercicio, declaracion.Rfc);
                        bool ocisr     = string.IsNullOrEmpty(respuesta);

                        var idencriptado = declaracion.CodigoEncirptado(contribuyente.Token);
                        encabezado = declaracion.ObtenerEncabezado();
                        /********************************************************************************************************************/
                        var    parameters    = new Dictionary <int, Dictionary <string, string> >();
                        string IdDeclaracion = limpio.Split(',').Where(i => i.Contains("idd")).FirstOrDefault().Split(':')[1];
                        string IdReforma     = limpio.Split(',').Where(i => i.Contains("ref")).FirstOrDefault().Split(':')[1];

                        //if (limpio.Split(',').Where(i => i.Contains("redi")).FirstOrDefault() == null)
                        //{
                        //    vista = Redirect("VistaPrevia/" + encriptador.EncriptaCadena("r:" + declaracion.Rfc + ",idd:" + IdDeclaracion + ",ref:" + IdReforma + "redi:0", Sat.DyP.Herramientas.Encripcion.TipoEncripcion.Base64URL));
                        //}
                        //else
                        //{
                        parameters.Add(0, new Dictionary <string, string>()
                        {
                            { "NoReforma", IdReforma },
                            { "OpcionCalculoISR", ocisr ? "-1" : respuesta }
                        });

                        parameters.Add(1, new Dictionary <string, string>()
                        {
                            { "NoDeclaracion", IdDeclaracion },
                            { "presentaDeclaracion", "true" },
                            { "muestraOCISR", ocisr ? "1" : "0" }
                        });
                        /********************************************************************************************************************/

                        this.ViewBag.Info    = declaracion.ParametrosVistaPrevia(parameters);
                        ViewBag.idencriptado = idencriptado;
                        vista = View("VistaPrevia");
                        //}
                    }
                }
            }
            catch (Exception ex)
            {
                RegistroEvento.Error(ref ex, CodigoEvento.ErrorNegocio, RecursoClasificador.ErrorEnAutenticacion, null, null, origen: RecursoClasificador.ClasificadorOrigen);
            }

            TempData[TEMP_DATA_ENCABEZADO] = encabezado;
            return(vista);
        }
        string preparaDeclaracionProvisional(string xmlDeclaracion, string rfc, string idDeclaracion, DeclaracionTemporal temporal, out string mensaje)
        {
            string uriBlob = string.Empty;

            mensaje = string.Empty;

            try
            {
                TransformadorSATMessage procesaMensaje   = new TransformadorSATMessage();
                RespuestaServicioDyP    respuestaProceso = procesaMensaje.EnviarMensajeSAT(xmlDeclaracion, idDeclaracion, rfc);

                if (respuestaProceso.Procesado)
                {
                    if (string.IsNullOrEmpty(new DeterminacionPagoDyP().ConsultarOpcPagoISREnClasificador(temporal.Ejercicio, rfc)))
                    {
                        /*Apartado para determinar si el contribuyente seleccionó ingreso menos gasto o coeficiente de utilidad en el formulario de ISR*/
                        try
                        {
                            XDocument xdocTmp = XDocument.Parse(xmlDeclaracion);
                            var       nodoISR = xdocTmp.XPathSelectElement("//*[local-name()='modeloDatos']/*[local-name()='entidad' and @tipo='SAT_DETERMINACION_IMPUESTO' and @claveimpuesto='" + TipoObligacion.ISR.ToDescription() + "']/*[local-name()='propiedad' and @claveinformativa='OCISR']");
                            if (nodoISR != null)
                            {
                                string misr = nodoISR.Value == "1" ? "CU" : "IG";
                                var    pago = new DeterminacionPagoDyP();
                                pago.AgregarOpcPagoISR(temporal.Ejercicio, rfc, misr);
                                pago.MarcarComoCerrada(temporal.Ejercicio, rfc);
                            }
                        }
                        catch (Exception _ex)
                        {
                            RegistraEvento.Instancia.EscribeEvento(_ex);
                            RegistroEvento.Error(ref _ex, CodigoEvento.ErrorDatos, GetType().Name);
                        }
                    }

                    uriBlob = respuestaProceso.PDF;

                    var declaraProvisional = new DeclaracionProvisional
                    {
                        rfc                           = rfc,
                        ejercicio                     = temporal.Ejercicio,
                        idDeclaracion                 = idDeclaracion,
                        NoReforma                     = temporal.VersionReforma,
                        periodicidad                  = temporal.Periodicidad,
                        periodicidadDescripcion       = temporal.PeriodicidadDescripcion,
                        periodo                       = temporal.Periodo,
                        tipoDeclaracion               = temporal.TipoDeclaracion,
                        tipoDeclaracionDescripcion    = temporal.TipoDeclaracionDescripcion,
                        periodoDescripcion            = temporal.PeriodoDescripcion,
                        tipoComplementaria            = temporal.TipoComplementaria,
                        tipoComplementariaDescripcion = temporal.TipoComplementariaDescripcion,
                    };

                    uriBlob = AlmacenarDeclaracionProvisional(declaraProvisional, xmlDeclaracion, respuestaProceso.XmlMessage, respuestaProceso.PDF, respuestaProceso.HTML);

                    EliminarDeclaracionTemporal(rfc, idDeclaracion);

                    using (AdministradorEnvioDeclaracionConceptos administrador = new AdministradorEnvioDeclaracionConceptos())
                    {
                        try
                        {
                            administrador.EnviarMensaje(rfc, idDeclaracion);
                        }
                        catch (Exception ex)
                        {
                            RegistroEvento.Error(ref ex, CodigoEvento.ErrorNegocio, "Generacion del mensaje de recepción de declaracion.");
                        }
                    }


                    try
                    {
                        using (var administrador = new AdministradorDeclaracionClasificador())
                        {
                            //var declaracionClasificador = administrador.ObtenerDeclaracionPorDypLlave(rfc, idDeclaracion);
                            //declaracionClasificador.EstadoActual = (int)Sat.DyP.Clasificador.Entidades.Enumeraciones.EstadoDeclaracion.Enviada;
                            //administrador.AgregarActualizarDeclaracion(declaracionClasificador);
                            //
                            var declaracionAlmacenada = DeclaracionClasificadorComplementos.MarcarComoDeclaracionEnviada(rfc, idDeclaracion, temporal.VersionReforma);
                            if (declaracionAlmacenada != null)
                            {
                                administrador.EncolarCfdisReportes(declaracionAlmacenada.RowKey);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        RegistroEvento.Error(ref ex, CodigoEvento.ErrorNegocio, "Marcar como enviada y crear petición para worker de datos.");
                    }
                }
                else
                {
                    mensaje = respuestaProceso.Mensaje + respuestaProceso.PDF;
                }
            }
            catch (Exception ex) { throw ex; }
            return(uriBlob);
        }
Beispiel #3
0
        public ActionResult AbrirEmpleado(string id)
        {
            ActionResult vista       = this.View(RecursoClasificador.ParcialErrorEnPermisos);
            var          declaracion = new DeclaracionClasificador();

            string limpio = string.Empty;

            try
            {
                if (ConfiguracionApp.AdaptadorCloud.RecuperarBoolean("IsPortalEmpleado"))
                {
                    var empleado     = this.ObtieneInfoEmpleado();
                    var encriptador  = new Sat.DyP.Herramientas.Encripcion.Encripcion();
                    var datosEntrada = encriptador.DesencriptaCadena(id, Sat.DyP.Herramientas.Encripcion.TipoEncripcion.Base64URL);

                    if (!string.IsNullOrEmpty(datosEntrada))
                    {
                        var configs          = datosEntrada.Split(',').Where(x => x.Contains("re:")).FirstOrDefault();
                        var rfcContribuyente = datosEntrada.Split(',').Where(x => x.Contains("r:")).FirstOrDefault();
                        var rfcEmpleado      = string.Empty;
                        if (!string.IsNullOrEmpty(configs))
                        {
                            rfcEmpleado      = configs.Replace("re:", string.Empty);
                            rfcContribuyente = !string.IsNullOrEmpty(rfcContribuyente) ? rfcContribuyente.Replace("r:", string.Empty) : rfcEmpleado;
                            // Llamada desde empleado
                            if (rfcEmpleado == empleado.Rfc)
                            {
                                bool contribuyenteValido = this.ObtieneInfoContribuyenteEmpleado(rfcContribuyente);
                                if (contribuyenteValido)
                                {
                                    ContribuyenteInfo contribuyente = MemberCache.Instancia.UsuarioActual;
                                    if (!string.IsNullOrEmpty(id) && contribuyente.Espms)
                                    {
                                        declaracion = DeclaracionClasificadorComplementos.ObtenerDeclaracionDedeUrl(id);
                                        var declaracionTemporal = declaracion.ActualizarDeclaracionPorAbrirDeclaracion();

                                        if (contribuyente.Rfc == declaracion.Rfc)
                                        {
                                            var idencriptado = declaracionTemporal.CodigoDeterminacionEncirptado(string.Empty);
                                            vista = Redirect(string.Format(RecursoClasificador.UrlDeterminacion, idencriptado));
                                        }
                                        else
                                        {
                                            var ex = new Exception("Rfc no es el mismo");
                                            RegistroEvento.Error(ref ex, CodigoEvento.ErrorNegocio, RecursoClasificador.ErrorEnAutenticacion,
                                                                 limpio, null, origen: System.Reflection.MethodBase.GetCurrentMethod().Name);
                                        }
                                    }
                                    else
                                    {
                                        var ex = new Exception("Intento entrar");
                                        RegistroEvento.Error(ref ex, CodigoEvento.ErrorNegocio, RecursoClasificador.ErrorEnAutenticacion, limpio, null, origen: System.Reflection.MethodBase.GetCurrentMethod().Name);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                RegistroEvento.Error(ref ex, CodigoEvento.ErrorNegocio, RecursoClasificador.ErrorEnAutenticacion, null, null, origen: System.Reflection.MethodBase.GetCurrentMethod().Name);
            }

            return(vista);
        }