public CostoFlete Get(int proyecto) { CostoFlete costo = new CostoFlete { Costo = 0M }; //OBTIENE EL DETALLE DEL PROYECTO var articulos = (from a in db.ProyArticulos where (a.Proyecto == proyecto) && (a.ADNTipo != "CE") select new ArticulosViewModel { CodigoADNInterno = a.CodigoADNInterno, Descripcion = "", Cantidad = a.Cantidad, Alto = a.Alto ?? 0, Ancho = a.Ancho ?? 0, Importe = a.Importe ?? 0, CodigoADN = a.CodigoADNInterno, ADNTipo = a.ADNTipo, ADNColor = a.ADNColor, ADNBase = a.ADNBase, ADNVariante = a.ADNVariante }); //OBTIENE DATOS DE CLIENTE Y FLETERA var clienteERP = (from p in db.Proyectos where p.IdProyecto == proyecto select p.ClienteERP.Trim()); var usuario = (from u in db.Users where u.ClienteERP.Trim() == clienteERP.ToString() select u).FirstOrDefault(); var cliente = (from c in db_intelisis.Ctes where c.Cliente == clienteERP.ToString() select c).FirstOrDefault(); string cveEstado = (from e in db.CatalogoEstados where e.Descripcion.Trim().ToUpper() == cliente.Descripcion9.Trim().ToUpper() select e.Estado).FirstOrDefault(); int cveCiudad = (from c in db.CatalogoCiudades where ((c.Descripcion.Trim().ToUpper() == cliente.Descripcion3.Trim().ToUpper()) && (c.Estado == cveEstado)) select c.CatalogoCiudadId).FirstOrDefault(); //OBTIENE DATOS DE COSTOS DE MATRIZ DE FLETES infoFlete = (from m in db.MatrizFletes2 where (m.CatalogoCiudadId == cveCiudad) && (m.FleteraId == usuario.FleteraId) select m).FirstOrDefault(); //CALCULA EL COSTO DE FLETE EN FUNCION DE LOS ARTICULOS DEL PROYECTO foreach (ArticulosViewModel a in articulos) { totalFlete = CalculaCostoFlete((a.Alto * a.Ancho * a.Cantidad) / 1000000M, a); } // costo.Costo = totalFlete; return(costo); }
//--------------------------------------------- //COSTO DE FLETE EN BASE A METRAJE //--------------------------------------------- public JsonResult CostoFleteM2(int proyecto) { CostoFlete costo = new CostoFlete { Costo = 0M }; //OBTIENE EL TOTAL DE METRAJE DE ARTICULOS SIN EQUIVALENCIAS decimal sinEq = (from a in db.vMetraje where a.Proyecto == proyecto select a.Metraje).FirstOrDefault(); //OBTIENE EL TOTAL DE METRAJE DE ARTICULOS CON EQUIVALENCIAS decimal conEq = (from a in db.vMetrajeEquivalencia where a.Proyecto == proyecto select a.Metraje).FirstOrDefault(); //EL CASO DE CANTO (CA) SE TRATA POR SEPARADO. SI HAY UNO O MAS UNIDADES DE CA SE AGREGA UN METRO AL TOTAL DE METRAJE int countCanto = (from a in db.ProyArticulos where a.Proyecto == proyecto && a.ADNTipo == "CA" select a).Count(); //int cantCA = 0; //if (countCanto > 0) //{ // cantCA = countCanto; //} decimal metraje = sinEq + conEq + countCanto; //0.673170 + 0 + 0 //OBTIENE DATOS DE CLIENTE Y FLETERA pro = (from p in db.Proyectos where p.IdProyecto == proyecto select p).FirstOrDefault(); string clienteERP = pro.ClienteERP.Trim(); var usuario = (from u in db.Users where u.ClienteERP.Trim() == clienteERP select u).FirstOrDefault(); var cliente = (from c in db_intelisis.Ctes where c.Cliente == clienteERP select c).FirstOrDefault(); string cveEstado = (from e in db.CatalogoEstados where e.Descripcion.Trim().ToUpper() == cliente.Descripcion9.Trim().ToUpper() select e.Estado).FirstOrDefault(); int cveCiudad = (from c in db.CatalogoCiudades where ((c.Descripcion.Trim().ToUpper() == cliente.Descripcion3.Trim().ToUpper()) && (c.Estado == cveEstado)) select c.CatalogoCiudadId).FirstOrDefault(); //OBTIENE DATOS DE COSTOS DE MATRIZ DE FLETES infoFlete = (from m in db.MatrizFletes2 where (m.CatalogoCiudadId == cveCiudad) && (m.FleteraId == usuario.FleteraId) select m).FirstOrDefault(); //CALCULA EL COSTO DE FLETE EN FUNCION DEL METRAJE TOTAL DEL PROYECTO Debug.Assert(infoFlete != null, "infoFlete != null"); decimal costoFlete = (metraje < (decimal)1.3 ? (decimal)1.3 : metraje) * infoFlete.CostoM2; //db.Entry(pro).State = System.Data.EntityState.Modified; //db.SaveChanges(); // costo.Costo = costoFlete; return(Json(costo.Costo, JsonRequestBehavior.AllowGet)); }