public ActionResult DesencriptaIDConcepto(FormCollection fc) { using (var db = new sgopEntities()) { try { MethodEncrypt me = new MethodEncrypt(); int idConcepto = Convert.ToInt32(me.getDecrypt(fc["idConceptoEncrypt"])); string[] data = new string[2]; var concepto = db.catalogoConceptos.Find(idConcepto); data[0] = idConcepto.ToString(); data[1] = (concepto.precioUnitario * Convert.ToDouble(fc["cantidad"])).ToString(); db.Dispose(); return(Json(data)); } catch (Exception) { return(Content("")); } } }
public ActionResult AddConceptoTablaTemp(FormCollection fc) { //Solo SI el campo (fechaPropuesta) en la tabla licitaciones no ha pasado, se puede editar. int IDConcepto = 0; double cantidad = 0; double? total = 0, subtotal; MethodEncrypt me = new MethodEncrypt(); string [] contenidoTabla = new string[4];//Guarda el body y el footer de la tabla catalogoConceptos concepto; DateTime fechaPropuesta = DateTime.Parse(fc["fechaPropuesta"]); JArray jsonConceptos = JArray.Parse(fc["conceptosAgregados"].ToString()); using (var db = new sgopEntities()) { //Verifica que el IDConcepto sea correcto try { for (int i = 0; i < jsonConceptos.Count; i++) { concepto = db.catalogoConceptos.Find(Convert.ToInt32(jsonConceptos[i]["idConcepto"])); total += Convert.ToDouble(jsonConceptos[i]["cantidad"]) * concepto.precioUnitario; } IDConcepto = Convert.ToInt32(me.getDecrypt(fc["idConceptoEncrypt"].ToString())); concepto = db.catalogoConceptos.Where(cc => cc.idConcepto == IDConcepto).First(); cantidad = Convert.ToDouble(fc["cantidad"].ToString()); subtotal = cantidad * concepto.precioUnitario; total += subtotal; //Body de la tabla contenidoTabla[0] = "<tr id='fila." + fc["idConceptoEncrypt"].ToString() + "'>"; contenidoTabla[0] += "<td>" + concepto.clave + "</td>"; contenidoTabla[0] += "<td>" + concepto.descripcion + "</td>"; contenidoTabla[0] += "<td>" + concepto.unidad + "</td>"; contenidoTabla[0] += "<td id='cantConcepto." + fc["idConceptoEncrypt"].ToString() + "'>" + cantidad + "</td>"; contenidoTabla[0] += "<td>" + concepto.precioUnitario + "</td>"; contenidoTabla[0] += "<td id='subtotal." + fc["idConceptoEncrypt"].ToString() + "'>" + subtotal + "</td>"; contenidoTabla[0] += "<td class='text-center'>"; contenidoTabla[0] += "<button onclick='editarCantidad(\"" + fc["idConceptoEncrypt"].ToString() + "\",\"" + cantidad + "\",\"" + concepto.descripcion + "\");' class='btn btn-success'>Editar <i class='fa fa-edit'></i></button>"; contenidoTabla[0] += "<button onclick='quitarConcepto(\"" + fc["idConceptoEncrypt"].ToString() + "\",\"" + concepto.descripcion + "\");' class='btn btn-danger'>Quitar <i class='fa fa-trash'></i></button>"; contenidoTabla[0] += "</td>"; contenidoTabla[0] += "</tr>"; //Footer de la tabla contenidoTabla[1] = "<tr>"; contenidoTabla[1] += "<td colspan='5' class='text-muted font-weight-bolder'>TOTAL</td>"; contenidoTabla[1] += "<td class='text-muted font-weight-bolder' id='total'>" + total + "</td>"; if (fechaPropuesta >= DateTime.Now) { contenidoTabla[1] += "<td class='text-muted font-weight-bolder'></td>"; } contenidoTabla[1] += "</tr>"; //IDConcepto AGREGADO contenidoTabla[2] = IDConcepto.ToString(); //cantidad AGREGADA contenidoTabla[3] = cantidad.ToString(); db.Dispose(); return(Json(contenidoTabla)); } catch (Exception) { contenidoTabla[0] = "error"; contenidoTabla[1] = "error"; db.Dispose(); return(Json(contenidoTabla)); } } }
public ActionResult GuardaRequisicion(FormCollection fc) { using (var db = new sgopEntities()) { try { MethodEncrypt me = new MethodEncrypt(); Rangos rango = new Rangos(); int idLicitacion = Convert.ToInt32(me.getDecrypt(fc["idLicitacionEncrypt"])); JArray jsonConceptosAgregados = JArray.Parse(fc["conceptosAgregar"].ToString()); var licitacion = db.licitaciones.Where(lic => lic.idLicitacion == idLicitacion).First(); List <RequisicionesMaterialesViewModel> lstMateriales = new List <RequisicionesMaterialesViewModel>(); int idRequisicionRango = (int)licitacion.idRequisicion; //Si la licitacion no tiene agregada la requisicion obtiene una nueva if (idRequisicionRango == 0) { idRequisicionRango = rango.getSiguienteID("REQUISICIONES"); //Actualiza la requisicion de la licitacion licitacion.idRequisicion = idRequisicionRango; db.Entry(licitacion).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } else { var requisicionesList = (db.requisiciones.Where(req => req.idRequisicionRango == idRequisicionRango)).ToList(); var reqMatList = db.requisicionesMateriales.Where(reqMat => reqMat.idRequisicion == idRequisicionRango).ToList(); //Si la cantidad de la lista enviada es diferente a la cantidad de las requisiciones que hay en la base de datos //Entonces elimina todas las requisiciones totales y materiales if (requisicionesList.Count != jsonConceptosAgregados.Count) { //Requisiciones totales foreach (var item in requisicionesList) { int? idConcepto = item.idConcepto; requisiciones requisicion = db.requisiciones.Where(req => req.idConcepto == idConcepto && req.idRequisicionRango == idRequisicionRango).First(); db.requisiciones.Remove(requisicion); db.SaveChanges(); } //Requisiciones Materiales foreach (var item in reqMatList) { requisicionesMateriales requisicionMat = db.requisicionesMateriales.Where(reqMat => reqMat.idRequisicion == idRequisicionRango).First(); db.requisicionesMateriales.Remove(requisicionMat); db.SaveChanges(); } } } for (int i = 0; i < jsonConceptosAgregados.Count; i++) { int idConcepto = Convert.ToInt32(jsonConceptosAgregados[i]["idConcepto"]); double cantidad = Convert.ToDouble(jsonConceptosAgregados[i]["cantidad"]); //Trae la requisicion donde haya ese idConcepto y ese idRequisicion try { //Si la encuentra, actualiza la cantidad de la requisicion con ese idConcepto y ese idRequisicion var requisicion = db.requisiciones.Where(r => r.idConcepto == idConcepto && r.idRequisicionRango == idRequisicionRango).First(); requisicion.cantidad = cantidad; db.Entry(requisicion).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); //Trae la lista de las requisiciones materiales para ese idConcepto y idRequisicion var requisicionMatLista = db.requisicionesMateriales.Where(rm => rm.idConcepto == idConcepto && rm.idRequisicion == idRequisicionRango).ToList(); //Recorre la lista foreach (var reqm in requisicionMatLista) { //Busca en la tabla relacionConceptosMateriales el idConcepto y idMaterial para obtener la cantidad necesaria var relConcMat = db.relacionConceptosMateriales.Where(rcm => rcm.idConcepto == idConcepto && rcm.idMaterial == reqm.idMaterial).First(); //Busca la requisicionMaterial que se va a actualizar var requisicionMat = db.requisicionesMateriales.Find(reqm.idRequisicionMaterial); requisicionMat.total = cantidad * relConcMat.cantidad;//Actualiza el total db.Entry(requisicionMat).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } } catch (Exception) { //Si no la encuentra, guarda una nueva requisicion con ese idConcepto y ese idRequisicion var concepto = db.catalogoConceptos.Find(idConcepto); requisiciones tRequisiciones = new requisiciones(); tRequisiciones.idRequisicionRango = idRequisicionRango; tRequisiciones.idConcepto = idConcepto; tRequisiciones.cantidad = cantidad; tRequisiciones.total = concepto.precioUnitario * cantidad; db.requisiciones.Add(tRequisiciones); db.SaveChanges(); //Obtiene todos los materiales que se necesitan para ese idConcepto lstMateriales = (from mat in db.relacionConceptosMateriales where mat.idConcepto == idConcepto select new RequisicionesMaterialesViewModel { idRelacion = mat.idRelacion, idConcepto = mat.idConcepto, idMaterial = mat.idMaterial, cantidadMaterial = mat.cantidad }).ToList(); foreach (var relacion in lstMateriales) { requisicionesMateriales tReqMat = new requisicionesMateriales(); tReqMat.idRequisicion = idRequisicionRango; tReqMat.idConcepto = idConcepto; tReqMat.idMaterial = relacion.idMaterial; tReqMat.total = cantidad * relacion.cantidadMaterial; db.requisicionesMateriales.Add(tReqMat); db.SaveChanges(); } } } db.Dispose(); return(Content("requisicionGuardada")); } catch (Exception) { db.Dispose(); return(Content("noExisteLicitacion")); } } }