コード例 #1
0
        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);
        }
コード例 #2
0
        //---------------------------------------------
        //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));
        }