public JsonResult ConsultarMateriales(int idProducto)
        {
            int idCotizacion = int.Parse(Session["IdCotizacion"].ToString());

                var ListaMateriales = from s in db.MaterialCotizacion
                                           where (s.IdProducto == idProducto && s.IdCotizacion == idCotizacion)
                                           select s;

            foreach(var item in ListaMateriales)
            {
                MaterialCotizacion materialCotizacion = new MaterialCotizacion();
                materialCotizacion.IdMaterial = item.IdMaterial;
                materialCotizacion.Nombre = item.Material.Nombre;
                materialCotizacion.CantMaterial = item.CantMaterial;

                ListaMaterialesOrden.Add(materialCotizacion);
            }

            return Json(ListaMaterialesOrden, JsonRequestBehavior.AllowGet);
        }
        // GET: Cotizacion/Edit/5
        public ActionResult Editar(int? id)
        {
            if (!LoginController.validaUsuario(Session))
                return RedirectToAction("Index", "Home");

            ViewBag.IdTipoProducto = new SelectList((from s in db.TipoProducto
                                                     where s.Estado == 1
                                                     select new
                                                     {
                                                         s.IdTipoProducto,
                                                         s.Nombre
                                                     }), "IdTipoProducto", "Nombre");
            ViewBag.Paletas = new SelectList((from s in db.Material
                                              where s.IdCatMat == 3 && s.IdTipoMaterial == 55 && s.Estado == 1
                                              select new
                                              {
                                                  s.IdMaterial,
                                                  s.Nombre
                                              }), "IdMaterial", "Nombre");
            ViewBag.ColoresVidrio = new SelectList((from s in db.ColorMat
                                                    where s.IdCatMaterial == 3 && s.Estado == 1
                                                    select new
                                                    {
                                                        IdColor = s.IdColor,
                                                        Nombre = s.Nombre
                                                    }), "IdColor", "Nombre");
            ViewData["ColoresPaleta"] = db.ColorMat.Where(s => s.IdCatMaterial == 3 && s.Estado == 1).ToList();
            ViewBag.ColoresAluminio = new SelectList((from s in db.ColorMat
                                                      where s.IdCatMaterial == 2 && s.Estado == 1
                                                      select new
                                                      {
                                                          IdColor = s.IdColor,
                                                          Nombre = s.Nombre
                                                      }), "IdColor", "Nombre");
            ViewBag.Instalacion = new SelectList((from s in db.Valor
                                                  where s.Tipo == "I" && s.Estado == 1
                                                  select new
                                                  {
                                                      IdValor = s.IdValor,
                                                      Nombre = s.Nombre
                                                  }), "IdValor", "Nombre");

            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            Cotizacion cotizacion = db.Cotizacion.Find(id);
            if (cotizacion == null)
            {
                return HttpNotFound();
            }

               var ListaProdu=(from s in db.ProductoCotizacion
                           where s.IdCotizacion==id
                            select s).ToList();
            var ListaProduMat = (from s in db.MaterialItemCotizacion
                              where s.IdCotizacion == id
                              select s).ToList();
            var listaMate= (from s in db.MaterialCotizacion
                            where s.IdCotizacion == id
                            select s).ToList();
            List<ProductoCotizacion> ListaP = new List<ProductoCotizacion>();
            foreach (var item in ListaProduMat)
            {
                ProductoCotizacion p = new ProductoCotizacion();
                p.IdConsecutivo = item.IdConsecutivo;
                p.IdProducto = item.IdMaterial;
                p.Nombre = item.Material.Nombre;
                p.CantMat = item.Cantidad;
                if (item.Ancho != null)
                {
                    p.Ancho = (decimal)item.Ancho;
                }
                if (item.Alto != null)
                {
                    p.Alto = (decimal)item.Alto;
                }
                p.Tipo = "Mat";
                p.IdColor = item.IdColor;
                p.Subtotal = item.Subtotal;

                ListaP.Add(p);
            }
            foreach (var item in ListaProdu)
            {
                ProductoCotizacion p = new ProductoCotizacion();
                p.IdConsecutivo = item.IdConsecutivo;
                p.IdProducto = item.IdProducto;
                p.Nombre = item.Producto.Nombre;
                p.CantMat = item.CantProducto;
                p.IdColorPaleta = item.IdColorPaleta;
                p.AnchoCelocia = item.AnchoCelocia;
                p.IdColorVidrio = item.IdColorVidrio;
                p.IdColorAluminio = item.IdColorAluminio;
                p.Instalacion = item.Instalacion;
                p.Ancho = item.Ancho;
                p.Alto = item.Alto;
                p.Tipo = "Prod";
                p.Subtotal = item.Subtotal;
                ListaP.Add(p);
            }
            List<MaterialCotizacion> ListaM = new List<MaterialCotizacion>();
            foreach (var item in listaMate)
            {
                MaterialCotizacion p = new MaterialCotizacion();
                p.IdProducto = item.IdProducto;
                p.IdMaterial = item.IdMaterial;
                p.CantMaterial = item.CantMaterial;
                p.Subtotal = item.Subtotal;
                ListaM.Add(p);
            }

            foreach (var itemProduct in ListaP)
            {
                ListaProductos.Add(itemProduct);
            }
            foreach (var itemMat in ListaM)
            {
                ListaMateriales.Add(itemMat);
            }

            TempData["MateralCotizacion"] = ListaMateriales;
            TempData["ListaProductos"] = ListaProductos;
            return View(cotizacion);
        }
Beispiel #3
0
        public List<MaterialCotizacion> calcularMonto(int Idpro, int? Cvidrio, decimal? Variable, int CAluminio,decimal insta, int Cant, decimal Ancho, decimal Alto, int? vid, int? ColorPaleta, int? IdPaleta)
        {
            var producto = db.Producto.Find(Idpro);
            var Aluminios= (from s in db.ListaMatProducto
                             join c in db.ColorMaterial on s.IdMaterial equals c.IdMaterial
                             where s.IdProducto == Idpro && s.Material.IdCatMat == 2 && c.IdColorMat == CAluminio
                             select new
                             {
                                 s.IdProducto,
                                 s.IdMaterial,
                                 s.Material.IdTipoMaterial,
                                 c.Costo
                             }).ToList();

            var Vidrio= (from s in db.Material
                          join c in db.ColorMaterial on s.IdMaterial equals c.IdMaterial
                         where (s.IdMaterial == vid && c.IdColorMat == Cvidrio)||(s.IdMaterial==IdPaleta &&c.IdColorMat==ColorPaleta)
                          select new
                          {
                              IdProducto= Idpro,
                              s.IdMaterial,
                              s.IdTipoMaterial,
                              c.Costo
                          }).ToList();
            var Acesorios= (from s in db.ListaMatProducto
                            where s.IdProducto == Idpro && s.Material.IdCatMat == 1
                            select new
                            {
                                s.IdProducto,
                                s.IdMaterial,
                                s.Material.IdTipoMaterial,
                                s.Material.Costo
                            }).ToList();

            var materiales = Aluminios;
            materiales.AddRange(Vidrio);
            materiales.AddRange(Acesorios);

            //Ventana 5020
            if (producto.IdTipoProducto == 1|| producto.IdTipoProducto == 6)
            {
                decimal SupH = 0;
                decimal InfH = 0;
                var Movil = 0;
                var fijo = 0;
                decimal VertCent = 0;
                decimal VertLlav = 0;
                decimal cierre = 0;
                decimal empaq = 0;
                decimal felpa = 0;
                decimal IV =1+db.Valor.Find(2).Porcentaje;

                foreach (var item in producto.Forma.ToString())
                {
                    if (item == 'M')
                    {
                        Movil++;
                    }
                    if(item == 'F')
                    {
                        fijo++;
                    }
                }

                if (producto.Forma.Count()==2)
                {
                    VertCent = Alto * 2;
                    VertLlav= Alto * 2;
                    empaq = (Ancho * 2) + (Alto * 2);
                    felpa= (Ancho * 2) + (Alto * 2);
                    if (Movil == 2)
                    {
                        SupH = Ancho;
                        InfH = Ancho;
                        cierre = 2;
                    }
                    else
                    {
                        SupH = Ancho*1.5m;
                        InfH = Ancho*0.5m;
                        cierre = 1;
                    }
                }
                else if (producto.Forma.Count() == 3)
                {
                    cierre = 2;
                    empaq = (Ancho * 2) + (Alto * 6);
                    if (Movil == 2)
                    {
                        SupH = Ancho*1.5m;
                        InfH = Ancho*0.5m;
                        VertCent = Alto * 4;
                        VertLlav = Alto * 2;
                        felpa = Alto*6;

                    }
                    else
                    {
                        SupH = Ancho/3*5;
                        InfH = Ancho/3;
                        VertCent = Alto * 2;
                        VertLlav = Alto * 4;
                        felpa = (Ancho / 3) + (Alto * 3);
                    }
                }
                else
                {
                    SupH = Ancho * 1.5m;
                    InfH = Ancho * 0.5m;
                    VertCent = Alto * 4;
                    VertLlav = Alto * 4;
                    cierre = 1;
                    empaq = (Ancho * 2) + (Alto * 6);
                    felpa = Alto * 6;
                }
                foreach (var item in materiales)
                    {
                    MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                        case 19://Acople
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = Alto;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                        case 22://Cargador
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = Ancho;
                            PC.Subtotal= PC.CantMaterial *((decimal)item.Costo*IV);
                            ListaCosto.Add(PC);
                            break;
                            case 20://Umbral
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = Ancho;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 21://Jamba
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = Alto*2;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 24://Sup hoja
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial =SupH;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 23://Inf Hoja
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = InfH;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 26://Vertical Centro
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = VertCent;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);

                            ListaCosto.Add(PC);
                            break;
                            case 25://Vertical
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = VertLlav;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 16://Rodin
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = Movil*2;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 5://Cierre
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = cierre;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 8://Empaque
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = empaq;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 53://Vidrio
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = Ancho*Alto;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 10://Felpa
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = felpa;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                            case 17://Tornillo
                            PC.IdMaterial = item.IdMaterial;
                            PC.IdProducto = Idpro;
                            PC.CantMaterial = 1;
                            PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                            ListaCosto.Add(PC);
                            break;
                        }

                   }
            }
            //Cedazo
            if (producto.IdTipoProducto == 7)
            {

                decimal IV = 1 + db.Valor.Find(2).Porcentaje;
                //Cedazo 5020
                if (producto.Forma == "C5")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 45://Moldura
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 8://Empaque
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 3://Cedazo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * Alto);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 9://Escuadra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }
                }
                //Cedazo 8025
                if (producto.Forma == "C8")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 45://Moldura
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 8://Empaque
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 3://Cedazo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * Alto);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 9://Escuadra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 62://Tubo Liso
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;

                        }
                    }
                }
                //Cedazo Puerta Batir
                if (producto.Forma == "CB")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 45://Moldura
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 4) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 8://Empaque
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 3://Cedazo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * Alto);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 9://Escuadra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;

                        }
                    }
                }
            }
            //Ventanas
            if (producto.IdTipoProducto == 0)
            {

                decimal IV = 1 + db.Valor.Find(2).Porcentaje;
                //Curva
                if (producto.Forma == "CU")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 44://Chapa
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho*2)+0.35m;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 48://Marco Tubo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 60://Marco Venilla
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + 0.35m;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho * Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }

                }
                //Celocia
                if (producto.Forma == "CE")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 43://Marco Canal
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 49://Herraje
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto/0.09m;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 55://Paleta
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho / 0.0254m) * (Alto / 0.09m);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial =1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }

                }
                //Fijo
                if (producto.Forma == "F")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 43://Marco Canal
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 60://Venilla
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial =Ancho*Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }

                }
                //Fijo
                if (producto.Forma == "E")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 37://Lateral hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 23://Inferior Hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) * 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 8://Empaque
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho * Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }

                }
                //Fijo Akari
                if (producto.Forma == "FA")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 48://Marco Tubo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 31://Marco
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 2://Bisagra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 9://Escuadra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 5://Cierre
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 12://Haladera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho * Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }

                }

                //Celocia Fijo
                if (producto.Forma == "CF")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {

                            case 43://Marco Canal
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 48://Marco Tubo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 60://Venilla
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = ((decimal)Variable * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 49://Herraje
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto / 0.09m;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 55://Paleta
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = ((decimal)Variable / 0.0254m) * (Alto / 0.09m);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;

                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho- (decimal)Variable) * Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }

                }

                    //Celocia Sobre fijo
                if (producto.Forma == "COF")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {

                            case 43://Marco Canal
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 48://Marco Tubo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 60://Venilla
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = ((Alto - (decimal)Variable) * 2) + (Ancho * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 49://Herraje
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto / 0.09m;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 55://Paleta
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = ((decimal)Variable / 0.0254m) * (Alto / 0.09m);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;

                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho * (Alto- (decimal)Variable);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }

                }
                //Fijo Celocia fijo
                if (producto.Forma == "FCF")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {

                            case 43://Marco Canal
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 4);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 48://Marco Tubo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho*2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 60://Venilla
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = ((Alto - (decimal)Variable) * 2) + (Ancho * 4);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 49://Herraje
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto / 0.09m;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 55://Paleta
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = ((decimal)Variable / 0.0254m) * (Alto / 0.09m);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;

                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho- (decimal)Variable) * Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }

                }
            }
            //Puertas de Baño
            if (producto.IdTipoProducto == 5)
            {
                decimal IV = 1 + db.Valor.Find(2).Porcentaje;
                //Puerta un panel
                if (producto.Forma == "PB1")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 37://Lateral hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto*4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 23://inferior hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 24://Superior hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 16://Rodin 4
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 8://Empaque
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 9://Escuadra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 61://Lamina
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (int)Variable;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }
                }
                if (producto.Forma == "PB2")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 22://Cargador
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 20://Umbral
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 21://Jamba
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto * 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 37://Lateral hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto * 4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 23://inferior hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 24://Superior hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 16://Rodin 4
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 38://Pañera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 8://Empaque
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 9://Escuadra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 61://Lamina
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (int)Variable;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }
                }
            }
            //Puertas Vatir
            if (producto.IdTipoProducto == 4)
            {
                decimal IV = 1 + db.Valor.Find(2).Porcentaje;
                //Puerta un panel
                if (producto.Forma == "PC")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 62://Tubo Liso
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho*2)+(Alto*2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 58://Venilla
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 4) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 48://Marco Tubo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Alto * 2); ;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 8://Empaque
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 4) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho * Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 4://Cerradura
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 16://Rodin
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;

                            case 46://riel
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho*2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 19://Adaptador
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 2) + (Alto * 2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 40://Angular
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho * 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }
                }
                if (producto.Forma == "PB")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 62://Tubo Liso
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = ((Ancho * 2) + (Alto * 2))-0.045m;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 58://Venilla
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = ((Ancho * 2) + (Alto * 2)) - 0.045m;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 48://Marco Tubo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho+(Alto * 2); ;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 8://Empaque
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = ((Ancho * 2) + (Alto * 2)) - 0.045m;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho * Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 5://Cierre
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 2://Bisagra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 17://Tornillera
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }
                }
            }
            //Puertas de Lujo
            if (producto.IdTipoProducto == 3)
            {
                decimal IV = 1 + db.Valor.Find(2).Porcentaje;
                //Puerta un panel
                if (producto.Forma == "PL1")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 37://Lateral hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto * 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 23://inferior hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 24://Superior hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 29://Envidriador
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial =(Ancho*2)+(Alto*2);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 20://Umbral 4
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 32://Barra de Empuje
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 12://Hajadera Concha
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 2://Bisagra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 10://Felpa
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto*2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 4://Cerradura
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 48://Marco Tubo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Alto * 2) + Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 5://Cierre
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 43://Marco Canal
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Alto * 2) + Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 13://Hidraulico
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;

                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho*Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }
                }
                //Puerta un panel
                if (producto.Forma == "PL2")
                {
                    foreach (var item in materiales)
                    {
                        MaterialCotizacion PC = new MaterialCotizacion();
                        switch (item.IdTipoMaterial)
                        {
                            case 37://Lateral hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto * 4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 23://inferior hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 24://Superior hoja
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 29://Envidriador
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Ancho * 4) + (Alto * 4);
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 20://Umbral 4
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 32://Barra de Empuje
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 12://Hajadera Concha
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 2://Bisagra
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 10://Felpa
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Alto * 4;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 4://Cerradura
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 48://Marco Tubo
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Alto * 2) + Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 5://Cierre
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 2;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 43://Marco Canal
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = (Alto * 2) + Ancho;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                            case 13://Hidraulico
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = 1;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;

                            case 53://Vidrio
                                PC.IdMaterial = item.IdMaterial;
                                PC.IdProducto = Idpro;
                                PC.CantMaterial = Ancho * Alto;
                                PC.Subtotal = PC.CantMaterial * ((decimal)item.Costo * IV);
                                ListaCosto.Add(PC);
                                break;
                        }
                    }
                }
            }

            return ListaCosto;
        }