Exemplo n.º 1
0
        public ActionResult Create([Bind(Include = "IdPresupuesto,NombrePresupuesto,Formato,Cantidad,Maquina,ElementosEnTamaño,Entradas,Gramaje,Ancho,Largo,MonedaId,Usuarioid")] ProductosEspeciales_Presupuesto productosEspeciales_Presupuesto)
        {
            if (ModelState.IsValid)
            {
                db.ProductosEspeciales_Presupuesto.Add(productosEspeciales_Presupuesto);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.Usuarioid = new SelectList(db.ApplicationUsers, "Id", "NombrePrimer", productosEspeciales_Presupuesto.Usuarioid);
            return(View(productosEspeciales_Presupuesto));
        }
Exemplo n.º 2
0
        public JsonResult Calcular(string Maquina, string NombrePresupuesto, int Formato, int Cantidad, int ElementosEnTamaño, int Papel, string QuintoColorPMS, string QuintoColorFluor,
                                   string QuintoColorMetalico, string BarnizAcuoso, string BarnizUVBrillante, string BarnizUVBrillanteSelectivo, string BarnizGlitterSelectivo, string PolitermolaminadoBrillante,
                                   string PolitermolaminadoOpaco, string Plisado, string Troquel, string Corte, string DoblezDiptico, string Mecanizado, string Despacho, string ButtonType)
        {
            ProductosEspeciales_Presupuesto pres = new ProductosEspeciales_Presupuesto();
            double Entradas = 1.0;

            //formato estandar 700 x 1000
            //db.ProductosEspeciales_Formato
            double ancho = db.ProductosEspeciales_Formato.Where(x => x.IdFormato == Formato).Select(c => c.FormatoExtendidoX).FirstOrDefault();
            double largo = db.ProductosEspeciales_Formato.Where(x => x.IdFormato == Formato).Select(c => c.FormatoExtendidoY).FirstOrDefault();

            int primer = 700 / (int)largo;
            int segund = 1000 / (int)ancho;

            ElementosEnTamaño = primer * segund;
            double gramaje    = db.ProductosEspeciales_Papel.Where(x => x.IdPapel == Papel).Select(x => x.Gramaje).FirstOrDefault();
            double Ancho      = db.ProductosEspeciales_Papel.Where(x => x.IdPapel == Papel).Select(x => x.Ancho).FirstOrDefault();
            double Largo      = db.ProductosEspeciales_Papel.Where(x => x.IdPapel == Papel).Select(x => x.Largo).FirstOrDefault();
            double CostoPapel = db.ProductosEspeciales_Papel.Where(x => x.IdPapel == Papel).Select(x => x.PrecioKilos).FirstOrDefault();
            double ValorUF    = db.Moneda.Where(x => x.Estado == true && x.TipoMonedaId == 2).Select(x => x.Valor).FirstOrDefault();

            double MermaVariable          = db.ProductosEspeciales_Impresion.Where(x => x.PaginasPorEntrada == 16 && x.Maquina.IdMaquina == 2).Select(x => x.MermaVariable).FirstOrDefault();
            double MermaFija              = db.ProductosEspeciales_Impresion.Where(x => x.PaginasPorEntrada == 16 && x.Maquina.IdMaquina == 2).Select(x => x.MermaFija).FirstOrDefault();
            double ImpresionValorFijo     = db.ProductosEspeciales_Impresion.Where(x => x.PaginasPorEntrada == 16 && x.Maquina.IdMaquina == 2).Select(x => x.ValorFijo).FirstOrDefault();
            double ImpresionValorVariable = db.ProductosEspeciales_Impresion.Where(x => x.PaginasPorEntrada == 16 && x.Maquina.IdMaquina == 2).Select(x => x.ValorVariable).FirstOrDefault();

            double KilosPapel = (((((double)Cantidad / (double)ElementosEnTamaño) * MermaVariable) + MermaFija) * ((gramaje * Ancho * Largo) / 10000000.0));

            double CostoFijoImpresion     = ((ImpresionValorFijo * ValorUF));
            double CostoVariableImpresion = (((ImpresionValorVariable * ValorUF) / 1000) / (double)ElementosEnTamaño);

            double CostoFijoPapel     = ((((gramaje * Ancho * Largo) / 10000.0) * (MermaFija / 1000.0)) * CostoPapel);
            double CostoVariablePapel = (((((gramaje * Ancho * Largo) / 10000.0) * ((((double)Cantidad / (double)ElementosEnTamaño) * MermaVariable) / 1000.0)) * CostoPapel) / (double)Cantidad);

            double CostoFijo5PMS = 0; double CostoVariable5PMS = 0;

            if (QuintoColorPMS != "")
            {
                double Fijo5PMS = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 2).Select(x => x.CostoFijo).FirstOrDefault();
                double vari5PMS = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 2).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijo5PMS     = (Fijo5PMS * ValorUF);
                CostoVariable5PMS = (((vari5PMS * ValorUF) / 1000) / (double)ElementosEnTamaño);
            }

            double CostoFijoFluor = 0; double CostoVariableFluor = 0;

            if (QuintoColorFluor != "")
            {
                double Fijo5Fluor = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 3).Select(x => x.CostoFijo).FirstOrDefault();
                double vari5Fluor = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 3).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijoFluor     = (Fijo5Fluor * ValorUF);
                CostoVariableFluor = (((vari5Fluor * ValorUF) / 1000) / (double)ElementosEnTamaño);
            }

            double CostoFijoMetal = 0; double CostoVariableMetal = 0;

            if (QuintoColorMetalico != "")
            {
                double Fijo5Metal = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 4).Select(x => x.CostoFijo).FirstOrDefault();
                double vari5Metal = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 4).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijoMetal     = (Fijo5Metal * ValorUF);
                CostoVariableMetal = (((vari5Metal * ValorUF) / 1000) / (double)ElementosEnTamaño);
            }

            double CostoFijoBarnizAcuoso = 0; double CostoVariableBarnizAcuoso = 0;

            if (BarnizAcuoso != "")
            {
                if (BarnizAcuoso == "2" || BarnizAcuoso == "3")//si es tiro O retiro
                {
                    double FijoBarnizAcuoso = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 5).Select(x => x.CostoFijo).FirstOrDefault();
                    double variBarnizAcuoso = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 5).Select(x => x.CostoVariable).FirstOrDefault();
                    CostoFijoBarnizAcuoso     = (FijoBarnizAcuoso * ValorUF);
                    CostoVariableBarnizAcuoso = (((variBarnizAcuoso * ValorUF) / 1000) / (double)ElementosEnTamaño);
                }
                else
                {   //si es en tiro Y retiro, se multiplica por 2
                    double FijoBarnizAcuoso = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 5).Select(x => x.CostoFijo).FirstOrDefault();
                    double variBarnizAcuoso = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 5).Select(x => x.CostoVariable).FirstOrDefault();
                    CostoFijoBarnizAcuoso     = (FijoBarnizAcuoso * ValorUF) * 2;
                    CostoVariableBarnizAcuoso = (((variBarnizAcuoso * ValorUF) / 1000) / (double)ElementosEnTamaño) * 2;
                }
            }

            //INICIO PROCESOS DE TERMINACION
            double CostoFijoBarnizUVBrillante = 0; double CostoVariableBarnizUVBrillante = 0;

            if (BarnizUVBrillante != "")
            {
                if (BarnizUVBrillante == "2" || BarnizUVBrillante == "3")
                {
                    double FijoBarnizUVBrillante = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 6).Select(x => x.CostoFijo).FirstOrDefault();
                    double variBarnizUVBrillante = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 6).Select(x => x.CostoVariable).FirstOrDefault();
                    CostoFijoBarnizUVBrillante     = FijoBarnizUVBrillante;
                    CostoVariableBarnizUVBrillante = (variBarnizUVBrillante / (double)ElementosEnTamaño);
                }
                else
                {
                    double FijoBarnizUVBrillante = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 6).Select(x => x.CostoFijo).FirstOrDefault();
                    double variBarnizUVBrillante = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 6).Select(x => x.CostoVariable).FirstOrDefault();
                    CostoFijoBarnizUVBrillante     = FijoBarnizUVBrillante * 2;
                    CostoVariableBarnizUVBrillante = (variBarnizUVBrillante / (double)ElementosEnTamaño) * 2;
                }
            }
            double CostoFijoBarnizUVBrillanteSelectivo = 0; double CostoVariableBarnizUVBrillanteSelectivo = 0;

            if (BarnizUVBrillanteSelectivo != "")
            {
                if (BarnizUVBrillanteSelectivo == "2" || BarnizUVBrillanteSelectivo == "3")
                {
                    double FijoBarnizUVBrillanteSelectivo = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 7).Select(x => x.CostoFijo).FirstOrDefault();
                    double variBarnizUVBrillanteSelectivo = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 7).Select(x => x.CostoVariable).FirstOrDefault();
                    CostoFijoBarnizUVBrillanteSelectivo     = FijoBarnizUVBrillanteSelectivo;
                    CostoVariableBarnizUVBrillanteSelectivo = (variBarnizUVBrillanteSelectivo / (double)ElementosEnTamaño);
                }
                else
                {
                    double FijoBarnizUVBrillanteSelectivo = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 7).Select(x => x.CostoFijo).FirstOrDefault();
                    double variBarnizUVBrillanteSelectivo = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 7).Select(x => x.CostoVariable).FirstOrDefault();
                    CostoFijoBarnizUVBrillanteSelectivo     = FijoBarnizUVBrillanteSelectivo * 2;
                    CostoVariableBarnizUVBrillanteSelectivo = (variBarnizUVBrillanteSelectivo / (double)ElementosEnTamaño) * 2;
                }
            }
            double CostoFijoBarnizUVGlitter = 0; double CostoVariableBarnizUVGlitter = 0;

            if (BarnizGlitterSelectivo != "")
            {
                if (BarnizGlitterSelectivo == "2" || BarnizGlitterSelectivo == "3")
                {
                    double FijoBarnizUVGlitter = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 8).Select(x => x.CostoFijo).FirstOrDefault();
                    double variBarnizUVGlitter = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 8).Select(x => x.CostoVariable).FirstOrDefault();
                    CostoFijoBarnizUVGlitter     = FijoBarnizUVGlitter;
                    CostoVariableBarnizUVGlitter = (variBarnizUVGlitter / (double)ElementosEnTamaño);
                }
                else
                {
                    double FijoBarnizUVGlitter = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 8).Select(x => x.CostoFijo).FirstOrDefault();
                    double variBarnizUVGlitter = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 8).Select(x => x.CostoVariable).FirstOrDefault();
                    CostoFijoBarnizUVGlitter     = FijoBarnizUVGlitter * 2;
                    CostoVariableBarnizUVGlitter = (variBarnizUVGlitter / (double)ElementosEnTamaño) * 2;
                }
            }
            double CostoFijoPoliBrillante = 0; double CostoVariablePoliBrillante = 0;

            if (PolitermolaminadoBrillante != "")
            {
                double FijoPoliBrillante = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 9).Select(x => x.CostoFijo).FirstOrDefault();
                double variPoliBrillante = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 9).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijoPoliBrillante     = FijoPoliBrillante;
                CostoVariablePoliBrillante = (variPoliBrillante * ((Ancho * Largo) / 10000.0) / (double)ElementosEnTamaño);
            }
            double CostoFijoPoliOpaco = 0; double CostoVariablePoliOpaco = 0;

            if (PolitermolaminadoOpaco != "")
            {
                double FijoPoliOpaco = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 10).Select(x => x.CostoFijo).FirstOrDefault();
                double variPoliOpaco = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 10).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijoPoliOpaco     = FijoPoliOpaco;
                CostoVariablePoliOpaco = (variPoliOpaco * ((Ancho * Largo) / 10000.0) / (double)ElementosEnTamaño);
            }

            //INICIO PROCESOS ENCUADERNACION
            double CostoFijoPlisado = 0; double CostoVariablePlisado = 0;

            if (Plisado != "")
            {
                double FijoPlisado = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 11).Select(x => x.CostoFijo).FirstOrDefault();
                double variPlisado = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 11).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijoPlisado     = FijoPlisado;
                CostoVariablePlisado = (variPlisado / (double)ElementosEnTamaño);
            }
            double CostoFijoTroquel = 0; double CostoVariableTroquel = 0;

            if (Troquel != "")
            {
                double FijoTroquel = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 12).Select(x => x.CostoFijo).FirstOrDefault();
                double variTroquel = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 12).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijoTroquel     = FijoTroquel;
                CostoVariableTroquel = (variTroquel / (double)ElementosEnTamaño);
            }
            double CostoFijoCorte = 0; double CostoVariableCorte = 0;

            if (Corte != "")
            {
                double FijoCorte = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 13).Select(x => x.CostoFijo).FirstOrDefault();
                double variCorte = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 13).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijoCorte     = FijoCorte;
                CostoVariableCorte = variCorte;
            }
            double CostoFijoDoblezDiptico = 0; double CostoVariableDoblezDiptico = 0;

            if (DoblezDiptico != "")
            {
                double FijoDoblezDiptico = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 14).Select(x => x.CostoFijo).FirstOrDefault();
                double variDoblezDiptico = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 14).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijoDoblezDiptico     = FijoDoblezDiptico;
                CostoVariableDoblezDiptico = variDoblezDiptico;
            }
            double CostoFijoMecanizado = 0; double CostoVariableMecanizado = 0;

            if (Mecanizado != "")
            {
                switch (Mecanizado)
                {
                case "2":    //pagina determinada
                    CostoFijoMecanizado     = 0;
                    CostoVariableMecanizado = 15.0;
                    break;

                case "3":    //pagina indeterminada
                    CostoFijoMecanizado     = 0;
                    CostoVariableMecanizado = 10.0;
                    break;

                default:
                    CostoFijoMecanizado     = 0;
                    CostoVariableMecanizado = 0;
                    break;
                }
                //double FijoMecanizado = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 15).Select(x => x.CostoFijo).FirstOrDefault();
                //double variMecanizado = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 15).Select(x => x.CostoVariable).FirstOrDefault();
                //CostoFijoMecanizado = FijoMecanizado;
                //CostoVariableMecanizado = variMecanizado;
            }
            double CostoFijoDespacho = 0; double CostoVariableDespacho = 0;

            if (Despacho != "")
            {
                double FijoDespacho = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 16).Select(x => x.CostoFijo).FirstOrDefault();
                double variDespacho = db.ProductosEspeciales_SubProceso.Where(x => x.IdSubproceso == 16).Select(x => x.CostoVariable).FirstOrDefault();
                CostoFijoDespacho     = FijoDespacho;
                CostoVariableDespacho = variDespacho;
            }



            if (ButtonType == "Next")
            {
                // Do Next Here
            }
            else if (ButtonType == "Save")
            {
                //Do save here
            }
            else
            {
            }

            pres.Cantidad               = Cantidad;
            pres.Entradas               = (int)Entradas;
            pres.ImpresionCostoFijo     = CostoFijoImpresion;
            pres.ImpresionCostoVariable = CostoVariableImpresion;

            pres.PapelCostoFijo     = CostoFijoPapel;
            pres.PapelCostoVariable = CostoVariablePapel;

            pres.QuintoColorPMSCostoFijo     = CostoFijo5PMS;
            pres.QuintoColorPMSCostoVariable = CostoVariable5PMS;

            pres.QuintoColorFluorCostoFijo     = CostoFijoFluor;
            pres.QuintoColorFluorCostoVariable = CostoVariableFluor;

            pres.QuintoColorMetalCostoFijo     = CostoFijoMetal;
            pres.QuintoColorMetalCostoVariable = CostoVariableMetal;

            pres.BarnizAcuosoCostoFijo     = CostoFijoBarnizAcuoso;
            pres.BarnizAcuosoCostoVariable = CostoVariableBarnizAcuoso;

            //pres.ImpresionCostoFijoTotal = (CostoFijoImpresion + CostoFijo5PMS + CostoFijoFluor + CostoFijoMetal + CostoFijoBarnizAcuoso);
            //pres.ImpresionCostoVariableTotal = (CostoVariableImpresion + CostoVariable5PMS + CostoVariableFluor + CostoVariableMetal + CostoVariableBarnizAcuoso);

            //PROCESOS TERMINACION
            pres.BarnizUVBrillanteCostoFijo     = CostoFijoBarnizUVBrillante;
            pres.BarnizUVBrillanteCostoVariable = CostoVariableBarnizUVBrillante;

            pres.BarnizUVBrillanteSelectivoCostoFijo     = CostoFijoBarnizUVBrillanteSelectivo;
            pres.BarnizUVBrillanteSelectivoCostoVariable = CostoVariableBarnizUVBrillanteSelectivo;

            pres.BarnizGlitterCostoFijo     = CostoFijoBarnizUVGlitter;
            pres.BarnizGlitterCostoVariable = CostoVariableBarnizUVGlitter;

            pres.PoliBrillanteCostoFijo     = CostoFijoPoliBrillante;
            pres.PoliBrillanteCostoVariable = CostoVariablePoliBrillante;

            pres.PoliOpacoCostoFijo     = CostoFijoPoliOpaco;
            pres.PoliOpacoCostoVariable = CostoVariablePoliOpaco;

            pres.TerminacionCostoFijoTotal     = (CostoFijoBarnizUVBrillante + CostoFijoBarnizUVBrillanteSelectivo + CostoFijoBarnizUVGlitter + CostoFijoPoliBrillante + CostoFijoPoliOpaco);
            pres.TerminacionCostoVariableTotal = (CostoVariableBarnizUVBrillante + CostoVariableBarnizUVBrillanteSelectivo + CostoVariableBarnizUVGlitter + CostoVariablePoliBrillante + CostoVariablePoliOpaco);

            //PROCESOS ENCUADERNACION
            pres.PlisadoCostoFijo     = CostoFijoPlisado;
            pres.PlisadoCostoVariable = CostoVariablePlisado;

            pres.TroquelCostoFijo     = CostoFijoTroquel;
            pres.TroquelCostoVariable = CostoVariableTroquel;

            pres.CorteCostoFijo     = CostoFijoCorte;
            pres.CorteCostoVariable = CostoVariableCorte;

            pres.DoblezDipticoCostoFijo     = CostoFijoDoblezDiptico;
            pres.DoblezDipticoCostoVariable = CostoVariableDoblezDiptico;

            pres.MecanizadoCostoFijo     = CostoFijoMecanizado;
            pres.MecanizadoCostoVariable = CostoVariableMecanizado;


            //VALOR NO VISIBLE
            pres.DespachoCostoFijo     = CostoFijoDespacho;
            pres.DespachoCostoVariable = CostoVariableDespacho;
            //END NO VISIBLE
            pres.EncuadernacionCostoFijoTotal     = (CostoFijoPlisado + CostoFijoTroquel + CostoFijoCorte + CostoFijoDoblezDiptico + CostoFijoMecanizado + CostoFijoDespacho);//agregue costos por despacho
            pres.EncuadernacionCostoVariableTotal = (CostoVariablePlisado + CostoVariableTroquel + CostoVariableCorte + CostoVariableDoblezDiptico + CostoVariableMecanizado + CostoVariableDespacho);

            //COSTOS TOTAL IMPRESION
            pres.ImpresionCostoFijoTotal     = (CostoFijoImpresion + CostoFijo5PMS + CostoFijoFluor + CostoFijoMetal + CostoFijoBarnizAcuoso);                     //+ CostoFijoDespacho
            pres.ImpresionCostoVariableTotal = (CostoVariableImpresion + CostoVariable5PMS + CostoVariableFluor + CostoVariableMetal + CostoVariableBarnizAcuoso); //+ CostoVariableDespacho

            //COSTOS TOTALES
            pres.NetoCostoFijoTotal     = (pres.ImpresionCostoFijoTotal + pres.TerminacionCostoFijoTotal + pres.EncuadernacionCostoFijoTotal + pres.PapelCostoFijo);                 //quite costo  pres.DespachoCostoFijo considerado en totales de encuadernacion
            pres.NetoCostoVariableTotal = (pres.PapelCostoVariable + pres.ImpresionCostoVariableTotal + pres.TerminacionCostoVariableTotal + pres.EncuadernacionCostoVariableTotal); //quite costo + pres.DespachoCostoVariable

            double totalll = (pres.NetoCostoFijoTotal + (pres.NetoCostoVariableTotal * (double)Cantidad));
            double mitad = totalll / (double)Cantidad;

            pres.PrecioUnitario    = mitad;
            pres.ElementosEnTamaño = ElementosEnTamaño;



            return(Json(pres, JsonRequestBehavior.AllowGet));
        }