Ejemplo n.º 1
0
        private void manageModeloFlujo(CentroCostos centroCostos, Empresa empresa, DateTime fechaactual)
        {
            StopWatch swGral = new StopWatch($"manageModeloFlujo cc={centroCostos.desc_id} emp={empresa.desc_id} fec={fechaactual}");

            swGral.start();
            int            numInserts = 0;
            Int64          modeloId   = centroCostos.modelo_negocio_flujo_id;
            Modelo_Negocio mn         = new ModeloNegocioDataAccessLayer().GetModelo(modeloId.ToString());

            if (!mn.activo)
            {
                return;
            }

            List <Rubros>                      rubrosDeModelo         = GetRubrosFromModeloId(modeloId);
            Int64                              numRegistrosExistentes = getNumMontosOfTipoCaptura(TipoCapturaFlujo);
            ConcurrentQueue <Rubros>           rubrosSinMontos        = new ConcurrentQueue <Rubros>();
            ConcurrentDictionary <Int32, byte> aniosDefault           = new ConcurrentDictionary <Int32, byte>();

            Parallel.ForEach(rubrosDeModelo, (rubro) =>
            {
                StopWatch sw = new StopWatch(
                    $"consulta_flujo cc.id='{centroCostos.id}',empr.id='{centroCostos.empresa_id}',proy.id='{centroCostos.proyecto_id}',modelo.id='{centroCostos.modelo_negocio_flujo_id}',rubro.id='{rubro.id}'");
                sw.start("getQuerySemanalSums");
                GeneraQry qry   = new GeneraQry("semanal", "itm::text", 2);
                String consulta = qry.getQuerySemanalSums(rubro, centroCostos, empresa, numRegistrosExistentes);
                logger.Debug(
                    "consulta_flujo cc.id='{0}',empr.id='{1}',proy.id='{2}',modelo.id='{3}',rubro.id='{4}', ===>> '{5}'",
                    centroCostos.id, centroCostos.empresa_id, centroCostos.proyecto_id,
                    centroCostos.modelo_negocio_flujo_id, rubro.id, consulta);
                DataTable sumaMontos = new QueryExecuter().ExecuteQuery(consulta);
                sw.stop();
                sw.start("BuildMontosFujo");

                if (sumaMontos.Rows.Count > 0)
                {
                    BuildMontosFujo(sumaMontos, centroCostos, modeloId, rubro.id, fechaactual,
                                    aniosDefault);
                }
                else
                {
                    rubrosSinMontos.Enqueue(rubro);
                }
                sw.stop();
                logger.Info(sw.prettyPrint());
            });

            foreach (var rubro in rubrosSinMontos)
            {
                foreach (var anio in aniosDefault.Keys)
                {
                    MontosConsolidados montos = new MontosConsolidados();
                    montos.anio              = anio;
                    montos.activo            = true;
                    montos.fecha             = fechaactual;
                    montos.mes               = fechaactual.Month;
                    montos.centro_costo_id   = centroCostos.id;
                    montos.empresa_id        = centroCostos.empresa_id;
                    montos.modelo_negocio_id = modeloId;
                    montos.proyecto_id       = centroCostos.proyecto_id;
                    montos.rubro_id          = rubro.id;
                    montos.tipo_captura_id   = TipoCapturaFlujo;
                    insertarMontos(montos);
                }
            }
            swGral.stop();
            logger.Info(swGral.prettyPrint());
        }
Ejemplo n.º 2
0
        private void manageModeloContable(CentroCostos centroCostos, Empresa empresa, DateTime fechaactual)
        {
            StopWatch swGral = new StopWatch($"manageModeloContable cc={centroCostos.desc_id} emp={empresa.desc_id} fec={fechaactual}");

            swGral.start();
            int   numInserts = 0;
            Int64 modeloId   = centroCostos.modelo_negocio_id;

            Modelo_Negocio mn = new ModeloNegocioDataAccessLayer().GetModelo(modeloId.ToString());

            if (!mn.activo)
            {
                return;
            }

            List <Rubros> rubrosDeModelo         = GetRubrosFromModeloId(modeloId);
            Int64         numRegistrosExistentes = getNumMontosOfTipoCaptura(TipoCapturaContable);
            GeneraQry     qry = new GeneraQry("balanza", "cuenta_unificada", 12);
            ConcurrentDictionary <Int32, byte> aniosDefecto    = new ConcurrentDictionary <Int32, byte>();
            ConcurrentQueue <Rubros>           rubrosSinMontos = new ConcurrentQueue <Rubros>();

            Parallel.ForEach(rubrosDeModelo, (rubro) =>
            {
                StopWatch sw = new StopWatch(
                    $"consulta_contables cc.id='{centroCostos.id}',empr.id='{centroCostos.empresa_id}',proy.id='{centroCostos.proyecto_id}',modelo.id='{centroCostos.modelo_negocio_flujo_id}',rubro.id='{rubro.id}'");
                sw.start("getQuerySums");
                String consulta = qry.getQuerySums(rubro, centroCostos, empresa, numRegistrosExistentes);

                logger.Debug(
                    "consulta_contables cc.id='{0}',empr.id='{1}',proy.id='{2}',modelo.id='{3}',rubro.id='{4}', ===>> '{5}'",
                    centroCostos.id, centroCostos.empresa_id, centroCostos.proyecto_id, centroCostos.modelo_negocio_id,
                    rubro.id, consulta);

                DataTable sumaMontosDt = new QueryExecuter().ExecuteQuery(consulta);
                sw.stop();
                sw.start("BuildMontosConsolContable");

                if (sumaMontosDt.Rows.Count > 0)
                {
                    foreach (DataRow rubroMontosRow in sumaMontosDt.Rows)
                    {
                        BuildMontosConsolContable(rubroMontosRow, centroCostos, modeloId, rubro.id,
                                                  fechaactual);
                        aniosDefecto.TryAdd(ToInt32(rubroMontosRow["year"]), 1);
                    }
                }
                else
                {
                    rubrosSinMontos.Enqueue(rubro);
                }
                sw.stop();
                logger.Info(sw.prettyPrint());
            });

            foreach (var rubro in rubrosSinMontos)
            {
                foreach (var anio in aniosDefecto.Keys)
                {
                    BuildMontosConsolContable(centroCostos, modeloId, rubro.id,
                                              fechaactual, anio);
                }
            }
            swGral.stop();
            logger.Info(swGral.prettyPrint());
        }