Пример #1
0
        // GET: EjecucionesMensuales
        public ActionResult Index()
        {
            using (var db = new sgopEntities())
            {
                try
                {
                    int idLicitacion = Convert.ToInt32(100002);
                    //Del idLicitacion se obtiene el idRequisicion
                    var requisicion   = db.licitaciones.Where(req => req.idLicitacion == idLicitacion).First();
                    int idRequisicion = (int)requisicion.idRequisicion;
                    //Del idLicitacion se obtiene el mes del contrato y el año del contrato
                    var proyecto = db.proyectos.Where(proy => proy.idLicitacion == idLicitacion).First();
                    ViewBag.mesContrato  = proyecto.fechaInicioContrato.Value.Month;
                    ViewBag.anioContrato = proyecto.fechaInicioContrato.Value.Year;

                    List <LicitacionesRequisicionesViewModel> lstConceptosEnRequisicion = new List <LicitacionesRequisicionesViewModel>();
                    List <EjecucionesMensualesViewModel>      lstEjecuciones            = new List <EjecucionesMensualesViewModel>();
                    LicitacionesRequisicionesViewModel        model = new LicitacionesRequisicionesViewModel();
                    MethodEncrypt me = new MethodEncrypt();

                    //Obtiene la lista de conceptos que hay en esa requisicion
                    ViewBag.lstConceptosEnRequisicion = (from req in db.requisiciones
                                                         join conc in db.catalogoConceptos on req.idConcepto equals conc.idConcepto
                                                         where req.idRequisicionRango == idRequisicion
                                                         select new LicitacionesRequisicionesViewModel
                    {
                        idRequisicionRango = req.idRequisicionRango,
                        idConcepto = req.idConcepto,
                        cantidad = req.cantidad,
                        total = req.total,
                        descripcion = conc.descripcion,
                        clave = conc.clave,
                        unidad = conc.unidad,
                        precioUnitario = conc.precioUnitario
                    }).ToList();

                    //sirve para saber cuantas columnas se van a agregar a la tabla
                    var lstEjecuciones2 = (from em in db.ejecucionesMensuales
                                           group em by em.idConcepto into g
                                           select new EjecucionesMensualesViewModel
                    {
                        idConcepto = g.Key,
                        cantidad = 0
                    }).ToList();

                    //Obtiene la lista de ejecuciones mensuales que hay con esa requisicion
                    lstEjecuciones = (from eM in db.ejecucionesMensuales
                                      join cc in db.catalogoConceptos on eM.idConcepto equals cc.idConcepto
                                      where eM.idRequisicion == idRequisicion
                                      select new EjecucionesMensualesViewModel
                    {
                        idEjecucion = eM.idEjecucion,
                        periodo = eM.periodo,
                        idRequisicion = eM.idRequisicion,
                        idConcepto = eM.idConcepto,
                        cantidad = eM.cantidad,
                        clave = cc.clave,
                        periodoMes = 0,
                        periodoAnio = 0
                    }).ToList();

                    //sirve para saber cuantas columnas se van a agregar a la tabla
                    foreach (var item in lstEjecuciones2)
                    {
                        foreach (var item2 in lstEjecuciones)
                        {
                            if (item.idConcepto == item2.idConcepto)
                            {
                                item.cantidad += 1;
                            }
                        }
                    }

                    //Descompone el periodo en mes y año
                    foreach (var item in lstEjecuciones)
                    {
                        item.periodoMes  = Convert.ToInt32(item.periodo.Substring(0, 2));
                        item.periodoAnio = Convert.ToInt32(item.periodo.Substring(3, 2));
                    }

                    ViewBag.lstEjecuciones = lstEjecuciones;
                    ViewBag.cantColumnas   = lstEjecuciones2.Max(e => e.cantidad);//Cantidad de columnas a agregar

                    var licitacion = db.licitaciones.Where(lic => lic.idLicitacion == idLicitacion).First();
                    var municipio  = db.catalogoMunicipios.Where(mun => mun.idMunicipio == licitacion.idMunicipio).First();
                    var empresa    = db.catalogoEmpresas.Where(emp => emp.idEmpresa == licitacion.idEmpresa).First();

                    model.idLicitacion        = licitacion.idLicitacion;
                    model.idLicitacionEncrypt = me.getEncrypt(licitacion.idLicitacion.ToString());
                    model.idRequisicionRango  = licitacion.idRequisicion;
                    model.idEmpresa           = licitacion.idEmpresa;
                    model.razonSocial         = empresa.razonSocial;
                    model.noLicitacion        = licitacion.noLicitacion;
                    model.nombreObra          = licitacion.nombreObra;
                    model.idMunicipio         = licitacion.idMunicipio;
                    model.nombreMunicipio     = municipio.descripcion;
                    model.localidad           = licitacion.localidad;
                    model.fechaVisita         = licitacion.fechaVisita;
                    model.fechaAclaraciones   = licitacion.fechaAclaraciones;
                    model.fechaPropuesta      = licitacion.fechaPropuesta;
                    model.fechaFallo          = licitacion.fechaFallo;
                    model.actaVisita          = licitacion.actaVisita;
                    model.actaAclaraciones    = licitacion.actaAclaraciones;
                    model.actaPropuesta       = licitacion.actaPropuesta;
                    model.actaFallo           = licitacion.actaFallo;
                    model.idEstatus           = licitacion.idEstatus;
                    model.idRequisicion       = licitacion.idRequisicion;
                    model.fechaCreacion       = licitacion.fechaCreacion;
                    model.usuarioCreacion     = licitacion.usuarioCreacion;
                    model.fechaModificacion   = licitacion.fechaModificacion;
                    model.usuarioModificacion = licitacion.usuarioModificacion;

                    db.Dispose();
                    return(View(model));
                }
                catch (Exception)
                {
                    db.Dispose();
                    return(Content("noExisteLicitacion"));
                }
            }
        }
        public ActionResult Index(FormCollection fc)
        {
            int           idLicitacion;
            MethodEncrypt me = new MethodEncrypt();
            LicitacionesRequisicionesViewModel        model            = new LicitacionesRequisicionesViewModel();
            List <CatalogoConceptosViewModel>         lstConceptos     = new List <CatalogoConceptosViewModel>();
            List <CatalogoConceptosViewModel>         lstUnidades      = new List <CatalogoConceptosViewModel>();
            List <LicitacionesRequisicionesViewModel> lstRequisiciones = new List <LicitacionesRequisicionesViewModel>();

            using (var db = new sgopEntities())
            {
                try
                {
                    idLicitacion = Convert.ToInt32(fc["idLicitacion"].ToString());
                    var licitacion = db.licitaciones.Where(lic => lic.idLicitacion == idLicitacion).First();
                    var municipio  = db.catalogoMunicipios.Where(mun => mun.idMunicipio == licitacion.idMunicipio).First();
                    var empresa    = db.catalogoEmpresas.Where(emp => emp.idEmpresa == licitacion.idEmpresa).First();

                    model.idLicitacion        = licitacion.idLicitacion;
                    model.idLicitacionEncrypt = me.getEncrypt(fc["idLicitacion"].ToString());
                    model.idEmpresa           = licitacion.idEmpresa;
                    model.razonSocial         = empresa.razonSocial;
                    model.noLicitacion        = licitacion.noLicitacion;
                    model.nombreObra          = licitacion.nombreObra;
                    model.idMunicipio         = licitacion.idMunicipio;
                    model.nombreMunicipio     = municipio.descripcion;
                    model.localidad           = licitacion.localidad;
                    model.fechaVisita         = licitacion.fechaVisita;
                    model.fechaAclaraciones   = licitacion.fechaAclaraciones;
                    model.fechaPropuesta      = licitacion.fechaPropuesta;
                    model.fechaFallo          = licitacion.fechaFallo;
                    model.actaVisita          = licitacion.actaVisita;
                    model.actaAclaraciones    = licitacion.actaAclaraciones;
                    model.actaPropuesta       = licitacion.actaPropuesta;
                    model.actaFallo           = licitacion.actaFallo;
                    model.idEstatus           = licitacion.idEstatus;
                    model.idRequisicion       = licitacion.idRequisicion;
                    model.fechaCreacion       = licitacion.fechaCreacion;
                    model.usuarioCreacion     = licitacion.usuarioCreacion;
                    model.fechaModificacion   = licitacion.fechaModificacion;
                    model.usuarioModificacion = licitacion.usuarioModificacion;

                    lstConceptos = (from cc in db.catalogoConceptos
                                    select new CatalogoConceptosViewModel
                    {
                        idConcepto = cc.idConcepto,
                        idConceptoEncrypt = "",
                        clave = cc.clave,
                        descripcion = cc.descripcion,
                        unidad = cc.unidad,
                        precioUnitario = cc.precioUnitario
                    }).ToList();

                    lstUnidades = (from c in db.catalogoConceptos
                                   orderby c.unidad ascending
                                   select new CatalogoConceptosViewModel
                    {
                        unidad = c.unidad
                    }).Distinct().ToList();

                    lstRequisiciones = (from req in db.requisiciones
                                        join con in db.catalogoConceptos on req.idConcepto equals con.idConcepto
                                        where req.idRequisicionRango == licitacion.idRequisicion
                                        select new LicitacionesRequisicionesViewModel
                    {
                        idRequisicion = req.idRequisicion,
                        idRequisicionRango = req.idRequisicionRango,
                        idConcepto = req.idConcepto,
                        idConceptoEncrypt = "",
                        cantidad = req.cantidad,
                        total = req.total,
                        clave = con.clave,
                        descripcion = con.descripcion,
                        unidad = con.unidad,
                        precioUnitario = con.precioUnitario
                    }).ToList();

                    foreach (var item in lstRequisiciones)
                    {
                        item.idConceptoEncrypt = me.getEncrypt(item.idConcepto.ToString());
                    }

                    ViewBag.lstConceptos     = lstConceptos;
                    ViewBag.lstRequisiciones = lstRequisiciones;
                    ViewBag.lstUnidades      = lstUnidades;
                    db.Dispose();
                }
                catch (Exception)
                {
                    db.Dispose();
                    return(Redirect(Url.Content("~/Home")));
                }
            }

            return(View(model));
        }
Пример #3
0
        public ActionResult Index(FormCollection fc)
        {
            using (var db = new sgopEntities())
            {
                try
                {
                    int idLicitacion = Convert.ToInt32(fc["idLicitacion"]);
                    //Del idLicitacion se obtiene el idRequisicion
                    var    requisicion   = db.licitaciones.Where(req => req.idLicitacion == idLicitacion).First();
                    int    idRequisicion = (int)requisicion.idRequisicion;
                    double acumulado     = 0;

                    LicitacionesRequisicionesViewModel        model                   = new LicitacionesRequisicionesViewModel();
                    List <RequisicionesParcialesViewModel>    lstReqParciales         = new List <RequisicionesParcialesViewModel>();
                    List <RequisicionesParcialesViewModel>    lstReqParcialesDistinct = new List <RequisicionesParcialesViewModel>();
                    List <LicitacionesRequisicionesViewModel> lstRequisiciones        = new List <LicitacionesRequisicionesViewModel>();
                    MethodEncrypt me = new MethodEncrypt();

                    var licitacion = db.licitaciones.Where(lic => lic.idLicitacion == idLicitacion).First();
                    var municipio  = db.catalogoMunicipios.Where(mun => mun.idMunicipio == licitacion.idMunicipio).First();
                    var empresa    = db.catalogoEmpresas.Where(emp => emp.idEmpresa == licitacion.idEmpresa).First();
                    var proyecto   = db.proyectos.Where(proy => proy.idLicitacion == idLicitacion).First();

                    model.idLicitacion        = licitacion.idLicitacion;
                    model.idProyecto          = proyecto.idProyecto;
                    model.idLicitacionEncrypt = me.getEncrypt(licitacion.idLicitacion.ToString());
                    model.idRequisicionRango  = licitacion.idRequisicion;
                    model.idEmpresa           = licitacion.idEmpresa;
                    model.razonSocial         = empresa.razonSocial;
                    model.noLicitacion        = licitacion.noLicitacion;
                    model.nombreObra          = licitacion.nombreObra;
                    model.idMunicipio         = licitacion.idMunicipio;
                    model.nombreMunicipio     = municipio.descripcion;
                    model.localidad           = licitacion.localidad;
                    model.fechaVisita         = licitacion.fechaVisita;
                    model.fechaAclaraciones   = licitacion.fechaAclaraciones;
                    model.fechaPropuesta      = licitacion.fechaPropuesta;
                    model.fechaFallo          = licitacion.fechaFallo;
                    model.actaVisita          = licitacion.actaVisita;
                    model.actaAclaraciones    = licitacion.actaAclaraciones;
                    model.actaPropuesta       = licitacion.actaPropuesta;
                    model.actaFallo           = licitacion.actaFallo;
                    model.idEstatus           = licitacion.idEstatus;
                    model.idRequisicion       = licitacion.idRequisicion;
                    model.fechaCreacion       = licitacion.fechaCreacion;
                    model.usuarioCreacion     = licitacion.usuarioCreacion;
                    model.fechaModificacion   = licitacion.fechaModificacion;
                    model.usuarioModificacion = licitacion.usuarioModificacion;

                    //Obtiene las requisiciones parciales con el idRequisicion
                    lstReqParciales = (from reqp in db.requisicionesParciales
                                       join mat in db.catalogoMateriales on reqp.idMaterial equals mat.idMaterial
                                       join cc in db.catalogoConceptos on reqp.idConcepto equals cc.idConcepto
                                       where reqp.idRequisicion == idRequisicion && reqp.noRequisicion == 1
                                       select new RequisicionesParcialesViewModel
                    {
                        idRequisicionParcial = reqp.idRequisicionParcial,
                        idRequisicionRango = reqp.idRequisicion,
                        idRequisicionRangoEncrypt = "",
                        noRequisicion = reqp.noRequisicion,
                        idConcepto = reqp.idConcepto,
                        idMaterial = reqp.idMaterial,
                        cantidad = reqp.cantidad,
                        aprobada = reqp.aprobada,
                        descripcionMaterial = mat.descripcion,
                        claveConcepto = cc.clave,
                        descripcionConcepto = cc.descripcion,
                        unidadConcepto = cc.unidad,
                        precioUnitario = cc.precioUnitario,
                        cantReqXcantMat = 0,
                        cantidadDisponible = 0
                    }).ToList();

                    //Recorre la lista de requisiciones parciales para guardar las cantidades totales
                    foreach (var item in lstReqParciales)
                    {
                        //Busca en la relacionConceptosMateriales el idConcepto y idMaterial, para obtener la cantidad necesaria de material para ese concepto por unidad
                        var relConcMat = db.relacionConceptosMateriales.Where(au => au.idConcepto == item.idConcepto && au.idMaterial == item.idMaterial).First();
                        //Busca en las requisiciones el idConcepto y el idRequisicionRango, para obtener la cantidad que se necesita de ese concepto
                        var req = db.requisiciones.Where(au => au.idConcepto == item.idConcepto && au.idRequisicionRango == idRequisicion).First();

                        item.idRequisicionRangoEncrypt = me.getEncrypt(item.idRequisicionRango.ToString()); //Encripta el idRequisicion
                        item.cantReqXcantMat           = relConcMat.cantidad * req.cantidad;                //Guarda la cantidad total de ese concepto a requerir
                        item.cantidadDisponible        = item.cantReqXcantMat;                              //La cantidad disponible es la misma de la multiplicacion (mas adelante se actualiza)
                    }

                    //Recorre la lista de las requisiciones parciales encontradas
                    foreach (var reqPar in lstReqParciales)
                    {
                        //Recorre la lista de requisiciones parciales encontradas
                        foreach (var reqParcDi in lstReqParciales)
                        {
                            //Compara el idConcepto y idMaterial de ambas listas
                            if (reqPar.idConcepto == reqParcDi.idConcepto && reqPar.idMaterial == reqParcDi.idMaterial)
                            {
                                acumulado += (double)reqParcDi.cantidad;//Guarda la cantidad de la requisicion parcial
                            }
                        }
                        reqPar.cantidadDisponible -= acumulado;//A la cantidad disponible le resta la misma cantidad menos el acumulado
                        acumulado = 0;
                    }

                    //Guarda esta variable para hacer el recorrido en la vista y pintar los conceptos y materiales
                    ViewBag.lstReqParcialesDistinct = (from reqp in db.requisicionesParciales
                                                       orderby reqp.noRequisicion descending
                                                       where reqp.idRequisicion == idRequisicion
                                                       select new RequisicionesParcialesViewModel
                    {
                        noRequisicion = reqp.noRequisicion
                    }).Distinct().ToList();
                    //Guarda esta variable para hacer el recorrido en la vista y pintar los conceptos y materiales
                    ViewBag.lstRequisicionesDistinct = (from req in db.requisiciones
                                                        join rcm in db.relacionConceptosMateriales on req.idConcepto equals rcm.idConcepto
                                                        join cm in db.catalogoMateriales on rcm.idMaterial equals cm.idMaterial
                                                        join con in db.catalogoConceptos on req.idConcepto equals con.idConcepto
                                                        where req.idRequisicionRango == idRequisicion
                                                        select new LicitacionesRequisicionesViewModel
                    {
                        idConcepto = req.idConcepto
                    }).Distinct().ToList();

                    //Busca los materiales necesarios para cada concepto que hay en la requisicion con el idRequisicion que se le envía
                    lstRequisiciones = (from req in db.requisiciones
                                        join rcm in db.relacionConceptosMateriales on req.idConcepto equals rcm.idConcepto
                                        join cm in db.catalogoMateriales on rcm.idMaterial equals cm.idMaterial
                                        join con in db.catalogoConceptos on req.idConcepto equals con.idConcepto
                                        where req.idRequisicionRango == idRequisicion
                                        select new LicitacionesRequisicionesViewModel
                    {
                        idRequisicion = req.idRequisicion,
                        idRequisicionRango = req.idRequisicionRango,
                        idRequisicionEncrypt = "",
                        idConcepto = req.idConcepto,
                        idConceptoEncrypt = "",
                        cantReq = req.cantidad,
                        cantMat = rcm.cantidad,
                        cantReqXcantMat = 0,
                        total = req.total,
                        clave = con.clave,
                        descripcion = con.descripcion,
                        descripcionMaterial = cm.descripcion,
                        unidad = con.unidad,
                        precioUnitario = con.precioUnitario,
                        idMaterial = cm.idMaterial
                    }).ToList();

                    foreach (var item in lstRequisiciones)
                    {
                        item.idConceptoEncrypt    = me.getEncrypt(item.idConcepto.ToString());         //Encripta el idConcepto
                        item.idRequisicionEncrypt = me.getEncrypt(item.idRequisicionRango.ToString()); //Encripta el idRequisicion
                        item.cantReqXcantMat      = item.cantReq * item.cantMat;                       //Multiplica la cantidad pedida en la requisicion por la cantidad necesaria de material
                    }

                    ViewBag.lstRequisiciones = lstRequisiciones; //Guarda la variable para recorrerla en la vista
                    ViewBag.lstReqParciales  = lstReqParciales;  //Guarda la variable para recorrerla en la vista
                    db.Dispose();
                    return(View(model));
                }
                catch (Exception)
                {
                    db.Dispose();
                    return(Content("noExisteLicitacion"));
                }
            }
        }