public ActionResult Create(Orden orden) { if (((List<Carga>)Session["lcarga"]).Count == 0) ModelState.AddModelError("idorden", "Agregue al menos una carga"); if (ModelState.IsValid) { Ubigeo ubigeoi = db.Ubigeo.Find(orden.idep, orden.ipro, orden.idis); Ubigeo ubigeof = db.Ubigeo.Find(orden.fdep, orden.fpro, orden.fdis); Servicio servicio = db.Servicio.Find(orden.idservicio); orden.distancia = Convert.ToDecimal(Halp.distance(Double.Parse(ubigeoi.latitud), Double.Parse(ubigeoi.longitud), Double.Parse(ubigeof.latitud), Double.Parse(ubigeof.longitud), 'K')); orden.numero = db.Database.SqlQuery<string>("SELECT RIGHT('0000000000' + CAST(IDENT_CURRENT('ca_orden') AS VARCHAR(10)), 10)").FirstOrDefault<string>(); orden.bruto += servicio.costo * orden.distancia; orden.neto += servicio.costo * orden.distancia; foreach (Carga carga in ((List<Carga>)Session["lcarga"])) { carga.monto = carga.cargatipo.costo * orden.distancia; orden.bruto += carga.cargatipo.costo * orden.distancia; orden.neto += carga.cargatipo.costo * orden.distancia; } db.Orden.Add(orden); db.SaveChanges(); foreach (Carga carga in ((List<Carga>)Session["lcarga"])) { carga.idorden = orden.idorden; carga.cargatipo = null; carga.unidad = null; db.Carga.Add(carga); db.SaveChanges(); } if (orden.idcotizacion > 0) { Cotizacion cotizacion = db.Cotizacion.Find(orden.idcotizacion); cotizacion.estado = "A"; db.Entry(cotizacion).State = EntityState.Modified; db.SaveChanges(); } return RedirectToAction("Index"); } ViewBag.idcliente = new SelectList(db.Cliente, "idpersona", "nombre", orden.idcliente); ViewBag.idpersona = new SelectList(db.Transportista, "idpersona", "nombre", orden.idpersona); ViewBag.idservicio = new SelectList(db.Servicio, "idservicio", "nombre", orden.idservicio); ViewBag.idep = new SelectList(db.Ubigeo.Where(x => x.dep != "00" && x.pro == "00" && x.dis == "00").OrderBy(x => x.nombre), "dep", "nombre", orden.idep); ViewBag.ipro = new SelectList(db.Ubigeo.Where(x => x.dep == orden.idep && x.pro != "00" && x.dis == "00").OrderBy(x => x.nombre), "pro", "nombre", orden.ipro); ViewBag.idis = new SelectList(db.Ubigeo.Where(x => x.dep == orden.idep && x.pro == orden.ipro && x.dis != "00").OrderBy(x => x.nombre), "dis", "nombre", orden.idis); ViewBag.fdep = new SelectList(db.Ubigeo.Where(x => x.dep != "00" && x.pro == "00" && x.dis == "00").OrderBy(x => x.nombre), "dep", "nombre", orden.fdep); ViewBag.fpro = new SelectList(db.Ubigeo.Where(x => x.dep == orden.fdep && x.pro != "00" && x.dis == "00").OrderBy(x => x.nombre), "pro", "nombre", orden.fpro); ViewBag.fdis = new SelectList(db.Ubigeo.Where(x => x.dep == orden.fdep && x.pro == orden.fpro && x.dis != "00").OrderBy(x => x.nombre), "dis", "nombre", orden.fdis); return View(orden); }
public ActionResult Create2(int id = 0) { Cotizacion c = db.Cotizacion.Find(id); List<Carga> l = db.Carga.Where(x => x.idcotizacion == c.idcotizacion).ToList(); List<Carga> lcarga = new List<Carga>(); foreach (Carga o in l) lcarga.Add(new Carga() { idunidad = o.idunidad, idcargatipo = o.idcargatipo, ancho = o.ancho, largo = o.largo, peso = o.peso, volumen = o.volumen, profundidad = o.profundidad, descripcion = o.descripcion, monto = o.monto, unidad = db.Unidad.Find(o.idunidad), cargatipo = db.CargaTipo.Find(o.idcargatipo) }); Orden orden = new Orden() { idcotizacion = c.idcotizacion, idcliente = c.idpersona, idservicio = c.idservicio, numero = "0000000000", fecha = DateTime.Now, idep = c.idep, ipro = c.ipro, idis = c.idis, fdep = c.fdep, fpro = c.fpro, fdis = c.fdis, idir = c.idir, fdir = c.fdir, observacion = "La fecha de vencimiento", bruto = c.bruto, neto = c.neto, estado = "G", distancia = c.distancia, cotizacion_numero = c.numero }; ViewBag.idcliente = new SelectList(db.Cliente, "idpersona", "nombre", orden.idcliente); ViewBag.idpersona = new SelectList(db.Transportista, "idpersona", "nombre"); ViewBag.idservicio = new SelectList(db.Servicio, "idservicio", "nombre", orden.idservicio); ViewBag.idep = new SelectList(db.Ubigeo.Where(x => x.dep != "00" && x.pro == "00" && x.dis == "00").OrderBy(x => x.nombre), "dep", "nombre", orden.idep); ViewBag.ipro = new SelectList(db.Ubigeo.Where(x => x.dep == orden.idep && x.pro != "00" && x.dis == "00").OrderBy(x => x.nombre), "pro", "nombre", orden.ipro); ViewBag.idis = new SelectList(db.Ubigeo.Where(x => x.dep == orden.idep && x.pro == orden.ipro && x.dis != "00").OrderBy(x => x.nombre), "dis", "nombre", orden.idis); ViewBag.fdep = new SelectList(db.Ubigeo.Where(x => x.dep != "00" && x.pro == "00" && x.dis == "00").OrderBy(x => x.nombre), "dep", "nombre", orden.fdep); ViewBag.fpro = new SelectList(db.Ubigeo.Where(x => x.dep == orden.fdep && x.pro != "00" && x.dis == "00").OrderBy(x => x.nombre), "pro", "nombre", orden.fpro); ViewBag.fdis = new SelectList(db.Ubigeo.Where(x => x.dep == orden.fdep && x.pro == orden.fpro && x.dis != "00").OrderBy(x => x.nombre), "dis", "nombre", orden.fdis); Session["lcarga"] = lcarga; return View(orden); }
public ActionResult Seguimiento(int[] idubicacion) { List<Orden> l = new List<Orden>(); if (idubicacion.Length > 0) { Orden orden1 = null; Orden orden2 = null; Ubicacion ubicacion1 = null; bool existe; foreach (int i in idubicacion) { ubicacion1 = db.Ubicacion.Find(i); existe = false; foreach (Orden o in l) if (o.idorden == ubicacion1.idorden) { o.lubicacion.Add(new Ubicacion() { idubicacion = ubicacion1.idubicacion, latitud = ubicacion1.latitud, longitud = ubicacion1.longitud, hora = ubicacion1.hora, direccion = ubicacion1.direccion }); existe = true; break; } if (!existe) { orden1 = db.Orden.Include(x => x.transportista).SingleOrDefault(x => x.idorden == ubicacion1.idorden); orden2 = new Orden() { idorden = orden1.idorden, numero = orden1.numero, fecha = orden1.fecha, transportista = orden1.transportista }; orden2.lubicacion.Add(new Ubicacion() { idubicacion = ubicacion1.idubicacion, latitud = ubicacion1.latitud, longitud = ubicacion1.longitud, hora = ubicacion1.hora, direccion = ubicacion1.direccion }); l.Add(orden2); } } } return View(l); }