Пример #1
0
        // puede ser   envios/2016-03-31    o    envios/apertura_activa
        public dynamic get_SeguimientoEntidades(string aperActiva_fCorte)
        {
            List <dynamic> listaActivos = SgmntController.getSeguimientoEntidades(aperActiva_fCorte);

            return(new
            {
                status = "success",
                mensaje = "encontrados",
                codigo = "200",
                data = listaActivos
            });
        }
        public object consolidacionDeEntidad([FromBody] dynamic objObservaciones)
        {
            string token = HttpHelpers.GetTokenFromHeader(HttpContext);

            if (token == "")
            {
                return(Unauthorized());
            }

            Base helper = new Base(AppSettings, token, HttpContext.Connection.RemoteIpAddress.ToString());

            List <dynamic> enviosAct = SgmntController.getSeguimientoEntidades("apertura_activa");

            enviosAct = enviosAct.Where(x => x.valido && (x.estado_cierre == null || x.estado_cierre == "")).ToList();

            this.fechaCorte = con.Query <DateTime>("Select fecha_corte from aperturas where activo").FirstOrDefault();
            con.Close();
            this.inicializaGlobalVars();

            string         estadoCierre   = this.esMesSolvencia ? "consolidado" : "cerrado";
            List <dynamic> listaRes       = new List <dynamic>();
            bool           procesoExitoso = true;
            Exception      excepcion      = null; // TO DO habilitar error para visualizar errores, deshabilitar en produccion

            if (objObservaciones.observaciones == null)
            {
                objObservaciones.observaciones = "";
            }

            if (enviosAct.Count > 0)
            {
                // dynamic consolidacionActiva = this.obtieneUltimaConsolidacion().data;
                //INICIALIZA PROCESO CONSOLIDACION
                int id_consolidacion = this.insertConsolidacion(objObservaciones.observaciones.ToString(), helper);

                foreach (dynamic envio in enviosAct)
                {
                    try
                    {
                        // Realiza la consolidacion por cada entidad que ha eviado y la info sea valida y activa, y no haya sido consolidaa
                        if (envio.valido && (envio.estado_cierre == null || envio.estado_cierre == ""))
                        {
                            this.ctxSeguimiento = envio;
                            this.codigoEntidad  = ctxSeguimiento.cod_entidad;

                            // llena las tablas iftPartesProduccionSiniestros,
                            this.llenaIftPartesProduccionSiniestros(this.codigoEntidad);
                            // llena las tablas iftPartesProduccionRamos,
                            this.llenaIftPartesProduccionRamos(this.codigoEntidad);
                            // llena iftPartesSiniestrosRamos
                            this.llenaIftPartesSiniestrosRamos(this.codigoEntidad);
                            // llena tabla , iftPartesSegurosLargoPlazo
                            this.llenaIftPartesSegurosLargoPlazo(this.codigoEntidad);
                            // Se realiza la consolidacion
                            // carga los saldos totales de la tabla val_balance_estado_resultados
                            this.llenaSaldosTotales(this.codigoEntidad);
                            //  1  realiza la carga a la tabla iftBalanceEstadoResultados  sin duplicados
                            this.consolidaInfoMensualAntesDeCierre(this.codigoEntidad);
                            // 2. Consolida PartesProduccionCorredoras  iftPartesProduccionCorredoras
                            this.consolidaProduccionCorredoras(this.codigoEntidad);

                            // 3 inserta las excepciones  Caso BUPA 201
                            this.insertarComodines();

                            if (esMesSolvencia)
                            {
                                //inserta campos vacios por la entidad en las tablas iftPatrimonioTecnico y tMSPrevisionales
                                this.insertaPatrimonioTecnicoVacio();
                                this.insertaMargenSolvenciaPrevisionalesVacio();
                            }
                            this.paso = 1;

                            // llama al metodo que realiza pasos para el cierre
                            this.procedimientosHastaMargenSolvencia(this.codigoEntidad);
                            // llama  a los procedimientos siguientes para informacion estadistica WEB y SIG
                            this.procedimientosCierreHastaSIG(this.codigoEntidad);

                            this.informacionFinancieraOLAP();


                            ////_____________________________ se crea la respuesta  que es una lista de las compañias enviadas ________________________
                            object seguimientoConsolidacion = new
                            {
                                id_seguimiento_envio = envio.id_seguimiento_envio,
                                cod_entidad          = envio.cod_entidad,
                                id_consolidacion     = id_consolidacion,
                                estado_cierre        = estadoCierre
                            };
                            // asigna el valor de id_consolidacion al seguimiento y le asigna su estadoCierre
                            con.Execute(@"UPDATE seguimiento_envios SET id_consolidacion = @id_consolidacion, estado_cierre = @estado_cierre
                            WHERE id_seguimiento_envio = @id_seguimiento_envio", seguimientoConsolidacion);
                            con.Close();

                            listaRes.Add(seguimientoConsolidacion);
                        }
                    }
                    catch (Exception e)
                    {
                        procesoExitoso = false;
                        excepcion      = e;
                        break;
                    };
                }
                ;

                estadoCierre = procesoExitoso ? estadoCierre : ""; //  si no hubo error se cambi al estado Consolidado o cerrado , segun si fue normal o trimestral, caso contrario "consolidacion.estado" vuelve al valor que tenia originalmente
                this.estadoConsolidacion(id_consolidacion, estadoCierre, false);
            }
            con.Close();
            conSegSql.Close();
            return(new
            {
                status = "success",
                calculo_solvencia = this.esMesSolvencia,
                errorEnCierre = !procesoExitoso,
                excepcion = excepcion,
                paso = this.paso,
                data = new
                {
                    lista = listaRes,
                    estadoCierre = estadoCierre
                }
            });
        }
        public object cerrarConsolidados([FromBody] List <dynamic> consolidadosOb) //consolidadosOB tiene los objetos envio  con mPatTecnico y mMSPrevisional de cada entidad
        {
            List <dynamic> enviosAct           = SgmntController.getSeguimientoEntidades("apertura_activa");
            List <dynamic> consolidacionesList = enviosAct.Where(x => x.estado_cierre != null && x.estado_cierre == "consolidado").Select(x => x.id_consolidacion).Distinct().ToList();

            this.fechaCorte = con.Query <DateTime>("Select fecha_corte from aperturas where activo").FirstOrDefault();
            con.Close();
            this.inicializaGlobalVars();
            List <dynamic> listaRes = new List <dynamic>();

            bool      procesoExitoso = true;
            Exception excepcion      = null;

            // Ya no se realiza este paso y aque pueden ser varias consolidaciones para un periodo
            // dynamic consolidacionActiva = this.obtieneUltimaConsolidacion().data;
            // //INICIALIZA PROCESO CONSOLIDACION
            // int id_consolidacion = consolidacionActiva.id_consolidacion;

            string estadoCierre = "cerrado";

            foreach (dynamic consolidacionId in consolidacionesList)
            {
                int            id_consolidacion    = Convert.ToInt32(consolidacionId);
                List <dynamic> enviosConsolidacion = enviosAct.Where(x => x.id_consolidacion == id_consolidacion).ToList();
                // return consolidacionesList;
                foreach (dynamic envio in enviosConsolidacion)
                {
                    try
                    {
                        if ((bool)envio.valido == true && envio.estado_cierre == "consolidado" && envio.id_consolidacion == id_consolidacion)
                        {
                            this.ctxSeguimiento = envio;
                            this.codigoEntidad  = envio.cod_entidad;

                            dynamic consolidadoOBItem = consolidadosOb.Where(x => x.id_seguimiento_envio == envio.id_seguimiento_envio).FirstOrDefault();
                            //inserta los valores de PAtrimonioTecnico y MSprevisional
                            decimal valorPT            = Convert.ToDecimal(consolidadoOBItem.mPatTecnico.ToString().Replace(".", ",")); //envio.mPatTecnico.ToString().ToDecimal();
                            decimal valorMSprevisional = Convert.ToDecimal(consolidadoOBItem.mMSPrevisional.ToString().Replace(".", ","));

                            this.insertarPatrimonioTecnico(valorPT);
                            this.insertarMSolvenciaPrevisional(valorMSprevisional);

                            //______________________ Continua con los pasos Hasta Margen de Solvencia _______________________
                            // llama al metodo que  realiza solo los pasos hasta el calculo de Margen de solvencia e indicadores
                            this.procedimientosHastaMargenSolvencia(this.codigoEntidad);


                            // Todos los consolidados pasan a estado cerrado
                            object seguimientoConsolidacion = new
                            {
                                id_seguimiento_envio = (int)envio.id_seguimiento_envio,
                                id_consolidacion     = (int)envio.id_consolidacion,
                                estado_cierre        = estadoCierre.ToString()
                            };

                            // asigna  al seguimiento su estadoCierre
                            con.Execute(@"UPDATE seguimiento_envios SET id_consolidacion = @id_consolidacion, estado_cierre = @estado_cierre
                            WHERE id_seguimiento_envio = @id_seguimiento_envio", seguimientoConsolidacion);
                            con.Close();

                            listaRes.Add(seguimientoConsolidacion);
                        }
                    }
                    catch (Exception e)
                    {
                        procesoExitoso = false;
                        excepcion      = e;
                        break;
                    }
                }

                string estado_cierre = procesoExitoso ? estadoCierre : "consolidado"; //  si no hubo error se cambi al estado Consolidado o cerrado , segun si fue normal o trimestral, caso contrario "consolidacion.estado" vuelve al valor que tenia originalmente
                this.estadoConsolidacion(id_consolidacion, estado_cierre, false);
            }

            con.Close();
            conSegSql.Close();
            return(new
            {
                status = "success",
                calculo_solvencia = this.esMesSolvencia,
                errorEnCierre2 = !procesoExitoso,
                excepcion = excepcion,
                data = new
                {
                    lista = listaRes,
                    estadoCierre = procesoExitoso ? estadoCierre : "consolidado"
                }
            });
        }