예제 #1
0
        public ActionResult Agregarbodegal(string id, Detalle detalle, string BODEGAL, string Cantidades, string Movimiento)
        {
            Maqueta maqueta = db.Maqueta.Find(id);

            detalle.IDMAQUETA = id;
            detalle.FECHA = DateTime.Now;
            detalle.TIPO="STOCK";
            detalle.MOVIMIENTO = Movimiento;
            detalle.ORIGEN = BODEGAL.ToString();

            int unixcaja= int.Parse((db.Producto.Where(n=>n.ID==maqueta.CODPRODUCTO).Select(n => n.UNIDADESXCAJA).First()).ToString());
            detalle.CANTIDAD = int.Parse(Cantidades.ToString())*unixcaja;
            //acomulado
            var qry =  from a in db.Detalle
                       where (a.IDMAQUETA == id && a.TIPO == "STOCK")
                       select a.ACUMULADO;

            if (qry.Count() == 0){
                detalle.ACUMULADO = detalle.CANTIDAD;
            }
            if (qry.Count()== 1){
                detalle.ACUMULADO = detalle.CANTIDAD + qry.First();
            }
            if ( qry.Count() >1){
                detalle.ACUMULADO = detalle.CANTIDAD + qry.Last();
            }

            db.Detalle.Add(detalle);

            if( detalle.ACUMULADO >= maqueta.CANTIDAD )
            {
                maqueta.ESTADO = "PEDIDOS A BODEGAL";
                db.Entry(maqueta).State = EntityState.Modified;
            }

            return RedirectToAction("Index");
        }
예제 #2
0
        public ActionResult ConfirNotaCompra(int id)
        {
            ViewBag.PRINCIPAL = id;
            tipusu();
            DETALLECONFIRMAR valor = new DETALLECONFIRMAR();
            valor.detalle = new List<Detalle>();
            valor.notacompra = new NotaCompra();

            valor.notacompra = db.NotaCompra.Find(id);

            var maqueta3 = db.Maqueta3.Where(r => r.IDNOTACOMPRA == id).ToList();
            int? suma = 0;
            int? suma2 = 0;
            foreach (Maqueta3 item in maqueta3)
            {
                Detalle var = new Detalle();
                var.CANTIDAD = item.CANTIDAD;
                var.CODIGO = item.CODIGO;
                var.DESCRIPCION = item.DESCRIPCION;
                var.ID = item.ID;
                var.PRECIO = item.PRECIO;
                var.PRECIOOTRO = item.PRECIOIMPRE;
                var.TOTAL = item.CANTIDAD * (item.PRECIO + item.PRECIOIMPRE);
                valor.detalle.Add(var);
                suma = suma + var.TOTAL;
                suma2 = suma2 + (item.PRECIOVENTA* item.CANTIDAD);
            }

            ViewBag.CostoFijo = suma;
            ViewBag.MargenVenta = suma2 - suma;
            float c = (float)suma2;
            c = 100 / c;
            ViewBag.margen = ((suma2 - suma) * c);
            ViewBag.check = valor.notacompra.CONFIRMACION;
            return View(valor);
        }
예제 #3
0
        public ActionResult Imprimirnoco(int id)
        {
            DETALLECONFIRMAR valor = new DETALLECONFIRMAR();
            valor.detalle = new List<Detalle>();
            valor.notacompra = new NotaCompra();
            valor.notacompra = db.NotaCompra.Find(id);
            var maqueta3 = db.Maqueta3.Where(r => r.IDNOTACOMPRA == id).ToList();
            int? suma = 0;
            int? suma2 = 0;
            foreach (Maqueta3 item in maqueta3)
            {
                Detalle var = new Detalle();
                var.CANTIDAD = item.CANTIDAD;
                var.CODIGO = item.CODIGO;
                var.DESCRIPCION = item.DESCRIPCION;
                var.ID = item.ID;
                var.PRECIO = item.PRECIO;
                var.TOTAL = item.CANTIDAD * item.PRECIO;
                var.PROVEEDOR = item.Proveedores.Nombre;
                valor.detalle.Add(var);
                suma = suma + var.TOTAL;
                suma2 = suma2 + (item.PRECIOVENTA * item.CANTIDAD);
            }

            ViewBag.CostoFijo = suma;
            ViewBag.MargenVenta = suma2 - suma;
            float c = (float)suma2;
            c = 100 / c;
            ViewBag.margen = ((suma2 - suma) * c);
            ViewBag.check = valor.notacompra.CONFIRMACION;

            QRCodeEncoder encoder = new QRCodeEncoder();

            string URL = "http://ygd.cl/NotaCompra/Imprimirnoco/" + valor.notacompra.ID;
            string WorkingDirectory = this.Server.MapPath("~/uploadedFolder/");
            Bitmap img = encoder.Encode(URL);

            img.Save(WorkingDirectory + "img2.jpg", ImageFormat.Jpeg);
            return View(valor);
        }
예제 #4
0
        public ActionResult PedirBodegal(FormCollection formulario)
        {
            List<Datos> datos = new List<Datos>();
            IValueProvider valueProvider = formulario.ToValueProvider();
            for (int i = 2; i < formulario.Count; i++)
            {
                Datos dato = new Datos();
                //PEDIDOS A BODEGAL
                string valor = formulario.Keys[i].ToString();

                Maqueta maqueta = db.Maqueta.Find(valor);
                maqueta.ESTADO = "PEDIDOS A BODEGAL";
                db.Entry(maqueta).State = EntityState.Modified;

                Estado estado = new Estado();
                estado.FECHA = DateTime.Now;
                estado.IDMAQUETA = maqueta.CODIGO;
                estado.NOMBRE = "PEDIDOS A BODEGAL";
                db.Estado.Add(estado);
                db.SaveChanges();

                Detalle detalle = new Detalle();
                detalle.CANTIDAD = int.Parse(maqueta.CANTIDAD.ToString());
                detalle.ACUMULADO = int.Parse(maqueta.CANTIDAD.ToString());
                detalle.FECHA = DateTime.Now;
                detalle.TIPO = "PEDIDOS A BODEGAL";
                detalle.IDMAQUETA = maqueta.CODIGO;
                detalle.MOVIMIENTO = formulario.Keys[0].ToString();
                detalle.ORIGEN = "BODEGAL";

                /*+++++++++++++++++++++++++*/

                Producto producto = db.Producto.Find(maqueta.CODPRODUCTO);  //PIDO PRODUCTO
                int cantidad = int.Parse(maqueta.CANTIDAD.ToString());      //GUARDO TOTAL
                int unicajas = int.Parse(maqueta.Producto.UNIDADESXCAJA.ToString()); //GUARDO UNIDADES POR CAJA

                if (producto.STOCKLOCAL != 0 && producto.STOCKLOCAL != null) //VERIFICO SI HAY EN STOCKLOCAL
                {
                    if (cantidad >= producto.STOCKLOCAL.Value) //VERIFICO SI EL STOCK LOCAL ES MENOR IGUAL A LA CANTIDAD PEDIDA
                    {
                        cantidad = cantidad - producto.STOCKLOCAL.Value; // RESTO STOCKLOCAL A LA CANTIDAD PEDIDA
                        if (cantidad == 0)
                        {
                            producto.STOCKLOCAL = producto.STOCKLOCAL.Value - cantidad;
                        }
                        else
                        {
                            producto.STOCKLOCAL = 0;
                        }
                    }
                    else
                    {
                        cantidad = 0;
                        producto.STOCKLOCAL = producto.STOCKLOCAL.Value - cantidad;
                    }
                }

                int entero = cantidad / unicajas;
                int sobra = cantidad % unicajas;
                int sobrantes = 0;
                if (sobra != 0)
                {
                    entero++;
                    sobrantes = unicajas * entero;
                    sobrantes = sobrantes - cantidad;
                }

                dato.NombrEProductO = maqueta.Producto.NOMBRE;
                dato.CajaS = entero;
                dato.CodigOProductO = maqueta.Producto.CODIGO;
                dato.UnidadeSXCajA = int.Parse(maqueta.Producto.UNIDADESXCAJA.ToString());
                dato.CantidaD = int.Parse(maqueta.CANTIDAD.ToString());
                dato.GuiA = formulario.Keys[i].ToString();
                dato.MaquetA = maqueta.CODIGO;
                dato.SobrantE = sobrantes;
                dato.VendedoR = maqueta.Usuario.NOMBRE.ToString();

                //DESCONTAR DE STOCK
                producto.STOCK = producto.STOCK - dato.CajaS;
                if (sobra != 0)
                {
                    producto.STOCKLOCAL = producto.STOCKLOCAL + (producto.UNIDADESXCAJA - sobra);
                }
                db.Entry(producto).State = EntityState.Modified;
                db.SaveChanges();

                datos.Add(dato);
            }

            return RedirectToAction("Imprimir", datos);
        }
예제 #5
0
        public ActionResult Imprimir2(FormCollection formulario, string GUIA)
        {
            string TEXTO = "<h2>PRODUCTOS RETIRO BODEGAL-PROBAG SIN LOGO</h2>";
            TEXTO = "<table><tr><th>DESCRIPCION</th><th>CAJAS</th><th>CODIGO</th><th>UNI. x CAJA</th><th>CANT. TOTAL</th><th>SOBRANTES</th><th>GUIA</th><th>NOTA VENTA</th><th>VENDEDOR</th><th>STOCK</th></tr>";

            List<Datos2> datos = new List<Datos2>();
            IValueProvider valueProvider = formulario.ToValueProvider();
            for (int i = 2; i < formulario.Count; i++)
            {
                Datos2 dato = new Datos2();
                //PEDIDOS A BODEGAL
                int valor = int.Parse(formulario.Keys[i].ToString());

                Maqueta2 maqueta = db.Maqueta2.Find(valor);
                maqueta.ESTADO = "PEDIDOS A BODEGAL";
                db.Entry(maqueta).State = EntityState.Modified;

                Detalle detalle = new Detalle();
                detalle.CANTIDAD = int.Parse(maqueta.CANTIDAD.ToString());
                detalle.ACUMULADO = int.Parse(maqueta.CANTIDAD.ToString());
                detalle.FECHA = DateTime.Now;
                detalle.TIPO = "PEDIDOS A BODEGAL";
                detalle.IDMAQUETA = maqueta.IDNOTAVENTA;
                detalle.MOVIMIENTO = formulario.Keys[0].ToString();
                detalle.ORIGEN = "BODEGAL";

                Producto producto = db.Producto.Find(maqueta.IDPRODUCTO);

                int cantidad = maqueta.CANTIDAD.Value;
                if (cantidad < producto.STOCKLOCAL.Value)
                {
                    cantidad = 0;
                    producto.STOCKLOCAL = producto.STOCKLOCAL.Value - cantidad;
                }
                else
                {
                    cantidad = cantidad - producto.STOCKLOCAL.Value;
                    producto.STOCKLOCAL = 0;
                }

                int unicajas = producto.UNIDADESXCAJA.Value;
                int entero = cantidad / unicajas;
                int sobra = cantidad % unicajas;
                if (sobra != 0)
                {
                    entero++;
                }

                dato.NombrEProductO = maqueta.Producto.NOMBRE;
                dato.CajaS = entero;
                dato.CodigOProductO = maqueta.Producto.CODIGO;
                dato.UnidadeSXCajA = unicajas;
                dato.CantidaD = maqueta.CANTIDAD.Value;
                dato.GuiA = GUIA;
                dato.Cliente = maqueta.NotaVenta.Cliente.EMPRESA;
                dato.NotaVentA = maqueta.IDNOTAVENTA;
                dato.SobrantE = producto.UNIDADESXCAJA.Value - sobra;
                dato.VendedoR = maqueta.Usuario.NOMBRE;

                //sobra = maqueta.Producto.CODIGO.Length;
                //char[] caracteres = new char[sobra];
                //for (int g = 0; g < sobra; g++)
                //{
                //    caracteres[i] = maqueta.Producto.CODIGO[i];
                //}
                //DESCONTAR DE STOCK
                producto.STOCK = producto.STOCK - entero;
                if (sobra != 0)
                {
                    producto.STOCKLOCAL = producto.STOCKLOCAL + sobra;
                }
                db.Entry(producto).State = EntityState.Modified;
                db.SaveChanges();

                dato.StocK = producto.STOCK.Value;
                datos.Add(dato);

                Bodegal bodegal = new Bodegal();
                bodegal.Guia = int.Parse(dato.GuiA);
                bodegal.Fecha = DateTime.Now;
                bodegal.Movido = dato.CajaS;
                bodegal.Sobrantes = dato.SobrantE;
                bodegal.Stock = producto.STOCK.Value;
                bodegal.Donde = true;
                bodegal.FkProducto = producto.ID;
                db.Bodegal.Add(bodegal);
                db.SaveChanges();
                TEXTO = TEXTO + "<tr><td>" + dato.NombrEProductO + "</td><td>" + dato.CajaS + "</td><td>" + dato.CajaS + "</td><td>" + dato.CodigOProductO + "</td><td>" + dato.UnidadeSXCajA + "</td><td>" + dato.CantidaD + "</td><td>" + dato.SobrantE + "</td><td>" + dato.GuiA + "</td><td>" + dato.NotaVentA + "</td><td>" + dato.VendedoR + "</td><td>" + dato.StocK + "</td></tr>";
            }

            List<string> correos = db.Usuario.Where(r => r.IDCARGO == 8 || r.IDCARGO == 1).Select(r => r.EMAIL).ToList();
            _MailService.SendEmailvarioscorreos("Pedido a Bodegal SIN LOGO", correos, TEXTO);

            Datos2 primer = datos.FirstOrDefault();
            QRCodeEncoder encoder = new QRCodeEncoder();
            string URL = "Numero de la Guia: " + primer.GuiA;
            string WorkingDirectory = this.Server.MapPath("~/uploadedFolder/");
            Bitmap img = encoder.Encode(URL);
            img.Save(WorkingDirectory + "img4.jpg", ImageFormat.Jpeg);

            return View(datos.ToList());
        }
예제 #6
0
        public ActionResult Imprimir(FormCollection formulario, string GUIA)
        {
            string TEXTO = "<h2>PRODUCTOS RETIRO BODEGAL-PROBAG CON LOGOS</h2>";
            TEXTO = "<table><tr><th>DESCRIPCION</th><th>LOGO</th><th>CAJAS</th><th>CODIGO</th><th>UNI.x CAJA</th><th>TOTAL</th><th>SOBRANTE</th><th>GUIA</th><th>MAQUETA</th><th>VENDEDOR</th><th>CLIENTE</th><th>STOCK</th></tr>";
            List<Datos> datos = new List<Datos>();
            IValueProvider valueProvider = formulario.ToValueProvider();
            for (int i = 2; i < formulario.Count; i++)
            {
                Datos dato = new Datos();
                //PEDIDOS A BODEGAL
                string valor = formulario.Keys[i].ToString();

                Maqueta maqueta = db.Maqueta.Find(valor);
                maqueta.ESTADO = "PEDIDOS A BODEGAL";
                db.Entry(maqueta).State = EntityState.Modified;

                Estado estado = new Estado();
                estado.FECHA = DateTime.Now;
                estado.IDMAQUETA = maqueta.CODIGO;
                estado.NOMBRE = "PEDIDOS A BODEGAL";
                db.Estado.Add(estado);
                db.SaveChanges();

                Detalle detalle = new Detalle();
                detalle.CANTIDAD = int.Parse(maqueta.CANTIDAD.ToString());
                detalle.ACUMULADO = int.Parse(maqueta.CANTIDAD.ToString());
                detalle.FECHA = DateTime.Now;
                detalle.TIPO = "PEDIDOS A BODEGAL";
                detalle.IDMAQUETA = maqueta.CODIGO;
                detalle.MOVIMIENTO = formulario.Keys[0].ToString();
                detalle.ORIGEN = "BODEGAL";

                Producto producto = db.Producto.Find(maqueta.CODPRODUCTO);  //PIDO PRODUCTO
                int auxiliarmio =0;
                int cantidad = int.Parse(maqueta.CANTIDAD.ToString());      //GUARDO TOTAL
                int unicajas = int.Parse(maqueta.Producto.UNIDADESXCAJA.ToString()); //GUARDO UNIDADES POR CAJA

                if (producto.STOCKLOCAL != 0 && producto.STOCKLOCAL != null)//VERIFICO SI HAY EN STOCKLOCAL
                {
                    auxiliarmio = producto.STOCKLOCAL.Value;
                    if (cantidad >= producto.STOCKLOCAL.Value) //VERIFICO SI EL STOCK LOCAL ES MENOR IGUAL A LA CANTIDAD PEDIDA
                    {
                        cantidad = cantidad - producto.STOCKLOCAL.Value; //RESTO STOCKLOCAL A LA CANTIDAD PEDIDA
                        if (cantidad == 0)
                        {
                            producto.STOCKLOCAL = producto.STOCKLOCAL.Value - int.Parse(maqueta.CANTIDAD.ToString());
                        }
                        else
                        {
                            producto.STOCKLOCAL = 0;
                        }
                    }
                    else
                    {
                        cantidad = 0;
                        producto.STOCKLOCAL = producto.STOCKLOCAL.Value - int.Parse(maqueta.CANTIDAD.ToString());
                    }
                }

                int entero = cantidad / unicajas;
                int sobra = cantidad % unicajas;
                int sobrantes = 0;
                if (sobra != 0)
                {
                    entero++;
                    sobrantes = unicajas * entero;
                    sobrantes = sobrantes - cantidad;
                }

                dato.NombrEProductO = maqueta.Producto.NOMBRE;
                dato.CajaS = entero;
                dato.CodigOProductO = maqueta.Producto.CODIGO;
                dato.UnidadeSXCajA = int.Parse(maqueta.Producto.UNIDADESXCAJA.ToString());
                dato.CantidaD = int.Parse(maqueta.CANTIDAD.ToString());
                dato.GuiA = GUIA;
                dato.MaquetA = maqueta.CODIGO;
                dato.SobrantE = sobrantes - auxiliarmio;
                dato.VendedoR = maqueta.Usuario.NOMBRE.ToString();
                dato.LogO = maqueta.LOGOTIPO;
                if(maqueta.IDCLIENTE!=null)
                    dato.Cliente = maqueta.Cliente.EMPRESA.ToString();

                //DESCONTAR DE STOCK
                producto.STOCK = producto.STOCK - dato.CajaS;
                if (sobra != 0)
                {
                    producto.STOCKLOCAL = producto.STOCKLOCAL + (producto.UNIDADESXCAJA - sobra);
                }
                db.Entry(producto).State = EntityState.Modified;
                db.SaveChanges();

                Bodegal bodegal = new Bodegal();
                bodegal.Guia = int.Parse(dato.GuiA);
                bodegal.Fecha = DateTime.Now;
                bodegal.Movido = dato.CajaS;
                bodegal.Sobrantes = dato.SobrantE;
                bodegal.Stock = producto.STOCK.Value;
                bodegal.Donde = true;
                bodegal.FkProducto = producto.ID;
                db.Bodegal.Add(bodegal);

                dato.StocK = producto.STOCK.Value;
                datos.Add(dato);

                //AGREGAR EN STRING PARA CORREO;
                TEXTO =TEXTO + "<tr><td>"+dato.NombrEProductO + "</td><td>"+dato.LogO+"</td><td>"+dato.CajaS+"</td><td>"+dato.CodigOProductO+"</td><td>"+dato.UnidadeSXCajA+"</td><td>"+dato.CantidaD+"</td><td>"+dato.SobrantE+"</td><td>"+dato.GuiA+"</td><td>"+dato.MaquetA+"</td><td>"+dato.VendedoR+"</td><td>"+dato.Cliente+"</td><td>"+dato.StocK + "</td></tr>";
            }
            TEXTO = TEXTO + "</table>";
            List<string> correos = db.Usuario.Where(r => r.IDCARGO == 8 || r.IDCARGO == 1).Select(r => r.EMAIL).ToList();
            _MailService.SendEmailvarioscorreos("Pedido a Bodegal CON LOGO", correos, TEXTO);

            Datos primer = datos.FirstOrDefault();
            QRCodeEncoder encoder = new QRCodeEncoder();
            string URL = "Numero de la Guia: " + primer.GuiA;
            string WorkingDirectory = this.Server.MapPath("~/uploadedFolder/");
            Bitmap img = encoder.Encode(URL);
            img.Save(WorkingDirectory + "img3.jpg", ImageFormat.Jpeg);

            return View(datos.ToList());
        }
예제 #7
0
        public ActionResult Create(Detalle detalle, string id, string TipoFuncion)
        {
            int ec = 0;
            TallerBoleta tallerboleta = new TallerBoleta();
            if (TipoFuncion == "Terminados a Bodega")
            {

                tallerboleta.FECHA = DateTime.Now;
                tallerboleta.CANTIDAD = detalle.CANTIDAD;
                tallerboleta.IDMAQUETA = id;
                var qwr = from g in db.TallerBoleta
                          where (g.IDMAQUETA == id)
                          select g.ACOMULADO;
                if (qwr.Count() == 0)
                {
                    tallerboleta.ACOMULADO = detalle.CANTIDAD;
                }
                else if (qwr.Count() == 1)
                {
                    tallerboleta.ACOMULADO = int.Parse(qwr.First().ToString()) + detalle.CANTIDAD;
                }
                else
                {
                    List<int?> val = qwr.ToList();
                    tallerboleta.ACOMULADO = int.Parse(val.Last().ToString()) + detalle.CANTIDAD;
                }
                db.TallerBoleta.Add(tallerboleta);
                db.SaveChanges();

                var pew = from v in db.TallerBoleta
                          where (v.IDMAQUETA == id)
                          select v.ID;
                List<int> vale = pew.ToList();
                if (vale.Count == 1)
                {
                    ec = vale.First();
                }
                else
                {
                    ec = vale.Last();
                }

                detalle.MOVIMIENTO = ec.ToString();
            }

            switch (TipoFuncion)
            {
                case "Enviar a Taller Desde Bodega":
                    detalle.ORIGEN = "BODEGA-STOCK";
                    detalle.TIPO = "TALLER";
                    break;
                case "Taller Envia Malos a Bodega":
                    detalle.ORIGEN = "TALLER";
                    detalle.TIPO = "BODEGA-MALOS";
                    break;
                case "Terminados a Bodega":
                    detalle.ORIGEN = "TALLER";
                    detalle.TIPO = "BODEGA-LISTOS";
                    break;
                case "Taller Envia Sobrantes a Bodega":
                    detalle.ORIGEN = "TALLER";
                    detalle.TIPO = "BODEGA-STOCK";
                    break;
                case "Entregados a Cliente":
                    detalle.ORIGEN = "BODEGA-LISTOS";
                    detalle.TIPO = "CLIENTE";
                    break;
                case "Cliente devuelve Defectuosos":
                    detalle.ORIGEN = "CLIENTE";
                    detalle.TIPO = "BODEGA-MALOS";
                    break;
            }
            var Qry = from a in db.Detalle
                      where (a.IDMAQUETA == id) &&
                            (a.TIPO == detalle.TIPO)
                      select a.ACUMULADO;
            if (Qry.Count() == 0)
            {
                detalle.ACUMULADO = detalle.CANTIDAD;
                var poi = from a in db.Maqueta
                          where (a.CODIGO == id)
                          select a;
                Maqueta maqueta = new Maqueta();
                maqueta = poi.First();
                if (detalle.TIPO == "TALLER")
                {
                    maqueta.ESTADO = "TRABAJANDO EN BODEGA";
                    Estado estad = new Estado();
                    estad.FECHA = DateTime.Now;
                    estad.IDMAQUETA = maqueta.CODIGO;
                    estad.NOMBRE = maqueta.ESTADO;
                    db.Estado.Add(estad);
                    db.Entry(maqueta).State = EntityState.Modified;
                }
            }
            else
            {
                List<int> lis = new List<int>();
                lis = Qry.ToList();
                int c = lis.Last();
                detalle.ACUMULADO = detalle.CANTIDAD + c;
            }

            var wer = from a in db.Maqueta
                      where (a.CODIGO == id)
                      select a.CANTIDAD;

            int e = int.Parse(wer.First().ToString());
            if (e >= detalle.ACUMULADO)
            {
                detalle.FECHA = DateTime.Now;
                detalle.IDMAQUETA = id;
                if (e == detalle.ACUMULADO)
                {
                    var poi = from a in db.Maqueta
                              where (a.CODIGO == id)
                              select a;
                    Maqueta maqueta = new Maqueta();
                    maqueta = poi.First();
                    switch (maqueta.ESTADO)
                    {
                        case "TRABAJANDO EN BODEGA":
                            maqueta.ESTADO = "ENTREGADAS A TALLER";
                            Estado estad = new Estado();
                            estad.FECHA = DateTime.Now;
                            estad.IDMAQUETA = maqueta.CODIGO;
                            estad.NOMBRE = maqueta.ESTADO;
                            db.Estado.Add(estad);
                            break;
                        case "APROBACION SUPERVISOR":
                            maqueta.ESTADO = "ENTREGADAS A TALLER";
                            Estado estadq = new Estado();
                            estadq.FECHA = DateTime.Now;
                            estadq.IDMAQUETA = maqueta.CODIGO;
                            estadq.NOMBRE = maqueta.ESTADO;

                            db.Estado.Add(estadq);
                            break;
                        case "ENTREGADAS A TALLER":
                            maqueta.ESTADO = "DEVUELTA A BODEGA";
                            Estado estadw = new Estado();
                            estadw.FECHA = DateTime.Now;
                            estadw.IDMAQUETA = maqueta.CODIGO;
                            estadw.NOMBRE = maqueta.ESTADO;
                            db.Estado.Add(estadw);
                            break;
                        case "DEVUELTA A BODEGA":
                            maqueta.ESTADO = "ENTREGADO A CLIENTE";
                            Estado estade = new Estado();
                            estade.FECHA = DateTime.Now;
                            estade.IDMAQUETA = maqueta.CODIGO;
                            estade.NOMBRE = maqueta.ESTADO;
                            db.Estado.Add(estade);
                            if (maqueta.FACTURA != null)
                            {
                                maqueta.ESTADO = "FINIQUITADO";
                                DeleteBlob(maqueta.URL);
                            }
                            break;
                    }
                    db.Entry(maqueta).State = EntityState.Modified;
                }
                db.Detalle.Add(detalle);
                db.SaveChanges();
                /******************************************************/
                /******************************************************/
                /******************************************************/
                /******************************************************/
                string titulo, correo, texto;

                var vbn = from a in db.Maqueta
                          where (a.CODIGO == id)
                          select a;
                Maqueta maqueta2 = new Maqueta();
                maqueta2 = vbn.First();

                titulo = "Nuevo Movimiento de " + id;
                var tyu = from m in db.Usuario
                          where (m.ID == maqueta2.IDVENDEDOR)
                          select m.EMAIL;
                correo = tyu.First().ToString();
                texto = "indefinido";

                switch (TipoFuncion)
                {
                    case "Envio de Taller Desde Bodega":
                        texto = "Se ha enviado a taller " + detalle.CANTIDAD + "Unidades <br/>";
                        texto = texto + "<br/> TOTAL     : " + maqueta2.CANTIDAD;
                        texto = texto + "<br/> ENTREGADOS: " + detalle.ACUMULADO;
                        int xz = int.Parse(maqueta2.CANTIDAD.ToString()) - int.Parse(detalle.ACUMULADO.ToString());
                        texto = texto + "<br/> FALTANTES : " + xz ;

                        break;
                    case "Taller Envia Malos a Bodega":
                        texto = "Se han devuelto" + detalle.CANTIDAD + "Unidades malas a la bodega desde el taller";
                        break;
                    case "Terminados a Bodega":
                        texto = "Se han devuelto " + detalle.CANTIDAD + "Unidades terminadas a Bodega <br/>";
                        texto = texto + "<br/> TOTAL     : " + maqueta2.CANTIDAD;
                        texto = texto + "<br/> ENTREGADOS: " + detalle.ACUMULADO;
                        int we = int.Parse(maqueta2.CANTIDAD.ToString()) - int.Parse(detalle.ACUMULADO.ToString());
                        texto = texto + "<br/> FALTANTES : " + we ;
                        break;
                    case "Taller Envia Sobrantes a Bodega":
                        texto = "El taller a devuelto " + detalle.CANTIDAD + "Unidades sobrante a bodega";
                        break;

                    case "Entregados a Cliente":
                        texto = "Se han entregado" + detalle.CANTIDAD + "Unidades al cliente <br/>";
                        texto = texto + "<br/> TOTAL     : " + maqueta2.CANTIDAD;
                        texto = texto + "<br/> ENTREGADOS: " + detalle.ACUMULADO;
                        int wi = int.Parse(maqueta2.CANTIDAD.ToString()) - int.Parse(detalle.ACUMULADO.ToString());
                        texto = texto + "<br/> FALTANTES : " + wi ;
                        break;
                    case "Cliente devuelve Defectuosos":
                        texto = "El cliente ha devuelto " + detalle.CANTIDAD + "Unidades defectuosas";
                        break;
                }

                _MailService.SendEmail(titulo, correo, texto);

                if ( /*TipoFuncion == "Terminados a Bodega" ||*/ TipoFuncion == "Enviar a Taller Desde Bodega" /* || TipoFuncion == "Entregados a Cliente" */ )
                {
                    return RedirectToAction("Index");
                }
            }
            else
            {
                ViewBag.TEXTO = "NO SE PUEDE ENVIAR; ESTA ENVIANDO MAS DE LOS NECESARIOS.";
                var Lst = new List<string>();
                Lst.Add("Enviar a Taller Desde Bodega");
                Lst.Add("Taller Envia Malos a Bodega");
                Lst.Add("Terminados a Bodega");
                Lst.Add("Taller Envia Sobrantes a Bodega");
                Lst.Add("Entregados a Cliente");
                Lst.Add("Cliente devuelve Defectuosos");

                ViewBag.TipoFuncion = new SelectList(Lst);

                return View();
                //MENSAJE DE NO SE PUEDE, POR QUE ENVIA MAS QUE LOS NECESARIOS.
            }
            return RedirectToAction("Index");
        }