// 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)); }
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")); } } }