示例#1
0
        //
        // GET: /Venta/Create
        public ActionResult Create()
        {
            //int rol = Convert.ToInt16(Session["Rol_id"]);
            //bool Validacion = SEG.ValidarAcceso(rol, "Venta", "Create");
            //if (Validacion)
            //{
                Session["M_V"] = null;

                ViewBag.TipoFacturacion = db.tipo_facturacion.ToList();
                ViewBag.Producto = db.producto.ToList();

                m_venta MV = new m_venta();
                MV.fecha_venta = DateTime.Today;
                MV.EMPLEADO_id = Convert.ToInt16(Session["Empleado_id"]);
                MV.total = 0;

                db.m_venta.Add(MV);
                db.SaveChanges();

                int MASTER = Convert.ToInt16(db.m_venta.Max(x => x.id));
                Session["M_V"] = MASTER;

                return View();
            //}
            //else
            //{
            //    return RedirectToAction("Error");
            //}
        }
        public ActionResult Index(M_PeticionArduino MPA)
        {
            //Validar que haya gasolina del tipo seleccionado
            int est = Convert.ToInt16(MPA.estacion);
            int tipo = Convert.ToInt16(MPA.tipo);
            int cant = Convert.ToInt16(MPA.giro);

            float cantidadActual = db.estacion.Where(p => p.numero == est && p.tipo == tipo).Select(p => p.cantidad).Single();
            if(cantidadActual>float.Parse(MPA.giro))
            {
                //hacerlo
                if (tipo == 4)        //Regular
                {
                    //Arbitrariamente se selecciono grados menores de 90
                    MPA.tipo = "1";
                    float giro = float.Parse(MPA.giro)*10;
                    float movimiento = 90 - giro;
                    MPA.giro = movimiento.ToString();
                    CARD.EnviarPeticion(MPA);
                }
                else if(tipo == 6)    //Disel
                {
                    //Arbitrariamente se selecciono grados mayores de 90
                    MPA.tipo = "2";
                    float giro = float.Parse(MPA.giro)*10;
                    float movimiento = 90 + giro;
                    MPA.giro = movimiento.ToString();
                    CARD.EnviarPeticion(MPA);
                }

                // Actualizando BD
                estacion E = db.estacion.Where(p => p.numero == est && p.tipo == tipo).Single();
                E.cantidad = E.cantidad - cant;
                db.SaveChanges();

                m_venta MV = new m_venta();
                MV.fecha_venta = DateTime.Today;
                MV.EMPLEADO_id = Convert.ToInt16(Session["Empleado_id"]);
                MV.total = 0;

                db.m_venta.Add(MV);
                db.SaveChanges();

                int MASTER = Convert.ToInt16(db.m_venta.Max(x => x.id));

                d_venta DV = new d_venta();
                DV.PRODUCTO_id = tipo;
                DV.cantidad_producto = cant;
                DV.M_VENTA_id = MASTER;
                producto pro = db.producto.Where(p => p.id == tipo).Single();
                DV.precio_u = pro.precio_venta_u;
                DV.total = (DV.precio_u * DV.cantidad_producto);

                db.d_venta.Add(DV);
                db.SaveChanges();

                m_venta MV2 = db.m_venta.Where(p => p.id == MASTER).Select(p => p).Single();
                MV2.total = DV.total;
                db.SaveChanges();

                facturacion F = new facturacion();
                F.TIPO_FACTURACION_id = 2;
                F.M_VENTA_id = MV.id;
                db.facturacion.Add(F);
                db.SaveChanges();

                CIC.Ingreso(Convert.ToInt16(Session["Caja_id"]), MV2.total, MASTER);

                //Redireccionar Exito
                return RedirectToAction("Index");
            }
            else
            {
                //Escribir Error
                string mensaje = "Lo sentimos no hay suficiente combustible de ese tipo en esta estacion";
                return RedirectToAction("Index", new { mensaje });
            }
        }