public ActionResult CreateInsumosGenerales(Pt_Tmp_Cotizacion_Fase_Insumos tmp_Cot_Fase_Insumo)
        {
            Pt_Tmp_Cotizacion_Fase_Insumos tmp = db.Pt_Tmp_Cotizacion_Fase_Insumos.Where(t => t.ctpfi_cfas_id == tmp_Cot_Fase_Insumo.ctpfi_cfas_id && t.ctpfi_cins_id == tmp_Cot_Fase_Insumo.ctpfi_cins_id && t.activo && !t.eliminado).SingleOrDefault();

            if (ModelState.IsValid)
            {
                UsuarioTO usuarioTO = Cache.DiccionarioUsuariosLogueados[User.Identity.Name];
                if (tmp == null)
                {
                    tmp_Cot_Fase_Insumo.id_usuario_creacion = usuarioTO.usuario.id_usuario;
                    tmp_Cot_Fase_Insumo.fecha_creacion      = DateTime.Now;
                    tmp_Cot_Fase_Insumo.activo    = true;
                    tmp_Cot_Fase_Insumo.eliminado = false;
                    db.Pt_Tmp_Cotizacion_Fase_Insumos.Add(tmp_Cot_Fase_Insumo);
                    db.SaveChanges();
                }
                else
                {
                    if (tmp_Cot_Fase_Insumo.ctpfi_cfas_id == tmp.ctpfi_cfas_id && tmp_Cot_Fase_Insumo.ctpfi_cins_id == tmp.ctpfi_cins_id)
                    {
                        tmp_Cot_Fase_Insumo.fecha_modificacion      = DateTime.Now;
                        tmp_Cot_Fase_Insumo.id_usuario_modificacion = usuarioTO.usuario.id_usuario;
                        tmp.ctpfi_cantidad  = tmp.ctpfi_cantidad + 1;
                        db.Entry(tmp).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                }
                Pt_Fases_Cotizacion faseCotizacion = db.Pt_Fases_Cotizacion.Find(tmp_Cot_Fase_Insumo.ctpfi_cfas_id);
                List <Pt_Insumos>   insumos        = faseCotizacion.Pt_Tmp_Cotizacion_Fase_Insumos.Where(tpfp => tpfp.ctpfi_cfas_id == tmp_Cot_Fase_Insumo.ctpfi_cfas_id && tpfp.activo && !tpfp.eliminado).Select(tpfp => tpfp.Pt_Insumos).ToList();
                ViewBag.ins           = insumos;
                ViewBag.pagosPuesto   = db.Pt_Pagos_Puesto.Where(pp => pp.cppu_cpue_id == tmp_Cot_Fase_Insumo.ctpfi_cfas_id).ToList();
                ViewBag.puestoInsumos = db.Pt_Puesto_Insumos.Where(pp => pp.cpin_cins_id == tmp_Cot_Fase_Insumo.ctpfi_cins_id).ToList();
                return(RedirectToAction("Create/" + tmp_Cot_Fase_Insumo.ctpfi_cfas_id));
            }
            ViewBag.ctpf_cfas_id = new SelectList(db.Pt_Fases_Cotizacion, "cfas_id", "cfas_nombre", tmp_Cot_Fase_Insumo.ctpfi_cfas_id);
            ViewBag.ctpf_cpue_id = new SelectList(db.Pt_Puestos, "cpue_id", "cpue_descripcion", tmp_Cot_Fase_Insumo.ctpfi_cfas_id);
            return(View(tmp_Cot_Fase_Insumo));
        }
        // GET: Comercializacion/Tmp_Propuesta_Fase_Puesto/Create
        public ActionResult Create(int?id)
        {
            List <object>                 resultado    = new List <object>();
            CultureInfo                   gt           = new CultureInfo("es-GT");
            int                           m            = DateTime.Now.Month;
            int                           a            = DateTime.Now.Year;
            Decimal                       total        = 0;
            Decimal                       totalInsList = 0;
            Decimal                       totalInsNew  = 0;
            List <Pt_Puesto_Insumos>      puestoInsumos;
            Pt_Costos_Fijos_Mes_Anio      costosFijosMN = db.Pt_Costos_Fijos_Mes_Anio.Where(x => x.activo && !x.eliminado && x.ccfma_anio == a && x.ccfma_mes == m).SingleOrDefault();
            Pt_Cantidad_Planilla_Mes_Anio planillaMN    = db.Pt_Cantidad_Planilla_Mes_Anio.Where(x => x.activo && !x.eliminado && x.ccpma_anio == a && x.ccpma_mes == m).SingleOrDefault();

            ViewBag.costosFijos = costosFijosMN;
            ViewBag.planillaMes = planillaMN;
            Pt_Fases_Cotizacion faseCotizacion            = db.Pt_Fases_Cotizacion.Find(id);
            Pt_Tmp_Cotizacion_Fase_Margen_Conf margenConf = db.Pt_Tmp_Cotizacion_Fase_Margen_Conf.Where(x => x.activo && !x.eliminado && x.ctcfm_cfas_id == faseCotizacion.cfas_id).SingleOrDefault();

            if (margenConf == null)
            {
                ViewBag.margenFase = 0;
            }
            else
            {
                ViewBag.margenFase = margenConf.ctcfm_margen;
            }
            List <Pt_Puestos> puestos = faseCotizacion.Pt_Tmp_Propuesta_Fase_Puesto.Where(tpfp => tpfp.ctpf_cfas_id == id && tpfp.activo && !tpfp.eliminado).Select(tpfp => tpfp.Pt_Puestos).ToList();
            List <Pt_Tmp_Cotizacion_Fase_Insumos>     insumos           = faseCotizacion.Pt_Tmp_Cotizacion_Fase_Insumos.Where(tpfp => tpfp.ctpfi_cfas_id == id && tpfp.activo && !tpfp.eliminado).ToList();
            List <Pt_Tmp_Cotizacion_Fase_Insumos_New> listInsertInsumos = faseCotizacion.Pt_Tmp_Cotizacion_Fase_Insumos_New.Where(tpfp => tpfp.ctpfin_cfas_id == id && tpfp.activo && !tpfp.eliminado).ToList();

            foreach (var ins in insumos)
            {
                if (ins.ctpfi_cantidad != null && ins.Pt_Insumos.cins_precio_venta != null && ins.Pt_Insumos.cins_porcentaje_depreciacion != null)
                {
                    totalInsList += (((ins.ctpfi_cantidad.Value * ins.Pt_Insumos.cins_precio_venta.Value) * (ins.Pt_Insumos.cins_porcentaje_depreciacion.Value / 100)));
                }
            }
            foreach (var ins in listInsertInsumos)
            {
                if (ins.ctpfin_cantidad != null && ins.ctpfin_precio_venta != null && ins.ctpfin_porcentaje_depreciacion != null)
                {
                    totalInsNew += (((ins.ctpfin_cantidad.Value * ins.ctpfin_precio_venta.Value) * (ins.ctpfin_porcentaje_depreciacion.Value / 100)));
                }
            }
            foreach (var p in puestos)
            {
                puestoInsumos = db.Pt_Puesto_Insumos.Where(pi => pi.cpin_cpue_id == p.cpue_id && pi.activo && !pi.eliminado).ToList();
                foreach (var sumTotal in puestoInsumos.Where(x => x.activo && !x.eliminado))
                {
                    total += (((sumTotal.cpin_cantidad.Value) * (sumTotal.Pt_Insumos.cins_precio_costo.Value)));
                }
                ViewBag.sumtotal  = total.ToString("c", gt);
                ViewBag.sumtotal2 = total;
            }
            ViewBag.totalIns  = (totalInsList + totalInsNew).ToString("c", gt);
            ViewBag.totalIns2 = (totalInsList + totalInsNew);
            //ViewBag.total = total.ToString("c", gt);
            //List<Pt_Pagos_Puesto> pagosPuesto = faseCotizacion.Pt_Tmp_Propuesta_Fase_Puesto.Where(tpfp => tpfp.ctpf_cpue_id.HasValue && tpfp.activo && !tpfp.eliminado).Select(s => s.Pt_Puestos.Pt_Pagos_Puesto).ToList();
            List <Pt_Tmp_Propuesta_Fase_Puesto> temp = db.Pt_Tmp_Propuesta_Fase_Puesto.Where(t => t.ctpf_cfas_id == id && t.activo && !t.eliminado).ToList();

            ViewBag.temp          = puestos.Select(s => s.Pt_Tmp_Propuesta_Fase_Puesto).ToList();
            ViewBag.fase          = faseCotizacion;
            ViewBag.costos        = new SelectList(db.Pt_Insumos.Where(ins => ins.activo && !ins.eliminado).OrderBy(x => x.cins_descripcion), "cins_id", "cins_descripcion");
            ViewBag.puesto        = puestos;
            ViewBag.listInsertIns = listInsertInsumos;
            ViewBag.insumoList    = insumos;
            ViewBag.pagosPuesto   = puestos.Select(s => s.Pt_Pagos_Puesto).ToList();
            ViewBag.ctpf_cfas_id  = new SelectList(db.Pt_Fases_Cotizacion.Where(fc => fc.cfas_id == id), "cfas_id", "cfas_nombre");
            ViewBag.ctpf_cpue_id  = new SelectList(db.Pt_Puestos, "cpue_id", "cpue_descripcion");
            return(View());
        }