Ejemplo n.º 1
0
        public ActionResult Presentar(string id)
        {
            ContribuyenteInfo contribuyente = this.ContribuyenteAutenticado();

            if (!string.IsNullOrEmpty(id))
            {
                id = Utileria.Instancia.DeCodificarBase64(id);
                dynamic parametro   = JsonConvert.DeserializeObject(id);
                var     declaracion = new DeclaracionClasificador()
                {
                    Ejercicio = parametro.ejercicio,
                    Periodo   = parametro.periodo,
                    Rfc       = contribuyente.Rfc
                };

                var declaracionalmacenada = declaracion.DeclaracionAlmacenadaNoEnviada();

                return(this.Redirect(string.Format("{0}/{1}?EsPMS={2}",
                                                   ConfiguracionApp.AdaptadorCloud.RecuperarCadena("UrlPortalDyP"),
                                                   ConfiguracionApp.AdaptadorCloud.RecuperarCadena("UrlPresentarDeclaracionDyP"),  // "Paginas/ConfigDeclaracion.aspx",
                                                   declaracionalmacenada.EncriptadosParaDyP())));
            }

            return(View());
        }
Ejemplo n.º 2
0
        private void ImportarDatos(DeclaracionClasificador declaracion)
        {
            Dictionary <string, string> clasificadorParams = new Dictionary <string, string>();

            clasificadorParams.Add(RecursoClasificador.DiferenciaValidacionCFDI, ConfiguracionApp.AdaptadorCloud.RecuperarEntero(RecursoClasificador.DiferenciaValidacionCFDI).ToString());

            var idencriptado = declaracion.CodigoEncirptado(string.Empty);

            clasificadorParams.Add(RecursoClasificador.EjercicioParametro, declaracion.Ejercicio.ToString());
            clasificadorParams.Add(RecursoClasificador.PeriodoParametro, declaracion.Periodo.ToString());
            clasificadorParams.Add(RecursoClasificador.DeclaracionParametro, declaracion.Consecutivo.ToString());
            clasificadorParams.Add(RecursoClasificador.ParametroVistaPrevia, idencriptado);
            clasificadorParams.Add(RecursoClasificador.ParametroEsPMS, declaracion.EncriptadosParaDyP());

            ViewBag.parametrosClasificador = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(clasificadorParams);
        }
        public List <string> ObtenerPlantillaObligaciones(dynamic parametro, out string formulario, out int codigoRespuesta)
        {
            List <string> plantillas = new List <string>();

            string[] xmlPlantillas          = null;
            string   xmlDeclaracionTemporal = string.Empty;
            string   xmlDeclaracionVigente  = string.Empty;

            codigoRespuesta = (int)CodigoRespuestaGeneral.OK;
            string forma   = "new";
            string mensaje = string.Empty;

            try
            {
                string rfc           = parametro.Rfc;
                long   idDeclaracion = parametro.NoDeclaracion ?? 0;
                string xmlTemporal   = string.Empty;
                var    obligaciones  = new List <string>();

                if (idDeclaracion > 0)
                {
                    AdministradorDeclaracionClasificador administrador = new AdministradorDeclaracionClasificador();
                    DeclaracionClasificador declaraClasificador        = administrador.ObtenerDeclaracionPorDypLlave(parametro.Rfc.ToString(), idDeclaracion.ToString());

                    if (declaraClasificador != null)
                    {
                        parametro.DeclaracionClasificador = declaraClasificador.Consecutivo;
                    }
                    else
                    {
                        parametro.DeclaracionClasificador = 1;
                        Exception ex = new Exception($"No encontro declaracion clasificardor:  {parametro.Rfc} - {idDeclaracion}");
                        RegistroEvento.Error(ref ex, CodigoEvento.ErrorInfraestrucura, GetType().Name);
                    }
                }

                #region Obtenemos la informacion del contribuyente, ya sea por Precarga, Selector, Temporal
                var plantillaData = new Descarga.Entities.PrecargaContribuyente()
                {
                    rfc       = parametro.Rfc,
                    ejercicio = parametro.ejercicio != null?Convert.ToString(parametro.ejercicio) : null,
                                    periodo             = parametro.periodo != null ? parametro.periodo : null,
                                    tipoContribuyente   = parametro.TipoContribuyente,
                                    metodoAutenticacion = parametro.MetodoAutenticacion,
                                    declaracionID       = idDeclaracion,
                                    reformaID           = parametro.NoReforma != null ? parametro.NoReforma : null,
                                    alscEmpleado        = parametro.idAlscEmpleado,
                                    rfcEmpleado         = parametro.rfcEmpleado,
                                    presentaDeclaracion = parametro.presentaDeclaracion ?? false,
                                    OpcionCalculoISR    = parametro.OpcionCalculoISR ?? "-1",
                                    consecutivo         = parametro.DeclaracionClasificador.ToString(),
                                    MuestraCalculoISR   = parametro.muestraOCISR.ToString()
                };

                using (var prec = new Descarga.PreCarga())
                {
                    prec.DeclaracionDatos += (s, m, u) =>
                    {
                        try { return(Consultas.Consulta.InfoDeclaracion(s, m, u)); }
                        catch (Exception ex)
                        {
                            RegistraEvento.Instancia.EscribeEvento(ex);
                            RegistroEvento.Error(ref ex, CodigoEvento.ErrorInfraestrucura, GetType().Name);
                            return(null);
                        }
                    };

                    prec.ejecutaAccion += (p, a) =>
                    {
                        switch (a)
                        {
                        case Descarga.PreCarga.accion.Totales:
                            if (obtieneTotales != null)
                            {
                                return(obtieneTotales(p[0], p[1], p[2], p[3]));
                            }
                            break;

                        case Descarga.PreCarga.accion.Plantillas:
                            for (int i = 4; i <= p.Length - 1; i++)
                            {
                                obligaciones.Add(p[i] /*.Replace("0145", "ISR").Replace("0309", "IVA")*/);
                            }
                            xmlPlantillas = ServicioObtienePlantillas(p[1], p[2], p[3] ?? parametro.periodicidad.ToString(), obligaciones.ToArray());
                            break;

                        case Descarga.PreCarga.accion.Complementaria:
                            Dictionary <string, string> listaConceptos = new Dictionary <string, string>();
                            foreach (string c in p[3].Split('|').Where(d => !string.IsNullOrEmpty(d)))
                            {
                                listaConceptos.Add(c.Split(',')[0], c.Split(',')[1]);
                            }

                            xmlDeclaracionVigente = RecuperarXmlConceptos(listaConceptos, p[0]);
                            break;

                        case Descarga.PreCarga.accion.Temporal:
                            if (RecuperaEntidadDeclaracionTemporal(p[0], p[3]) != null)
                            {
                                xmlTemporal = RecuperarXmlDeclaracionTemporal(p[0], p[3]);
                            }

                            if (!string.IsNullOrEmpty(xmlTemporal))
                            {
                                forma = "tmp";
                            }
                            break;
                        }

                        return(null);
                    };

                    try
                    {
                        mensaje = prec.ObtenerDatosContribuyente(plantillaData, out codigoRespuesta);
                    }
                    catch (Exception ex)
                    {
                        RegistraEvento.Instancia.EscribeEvento(ex);
                        RegistroEvento.Error(ref ex, CodigoEvento.ErrorInfraestrucura, GetType().Name);
                    }
                }

                #endregion

                formulario = forma;
                plantillas.Add(mensaje);
                plantillas.Add(xmlTemporal);
                plantillas.Add(xmlDeclaracionVigente);
                if (xmlPlantillas != null)
                {
                    plantillas.AddRange(xmlPlantillas);
                }
                else
                {
                    plantillas.AddRange(new string[6]);
                }

                plantillas.Add(obligaciones.Count(o => o == TipoObligacion.ISR.ToDescription()).ToString().ToLower());
            }
            catch (Exception ex)
            {
                RegistraEvento.Instancia.EscribeEvento(ex);
                RegistroEvento.Error(ref ex, CodigoEvento.ErrorInfraestrucura, GetType().Name);
                throw ex;
            }

            return(plantillas);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
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);
        }