コード例 #1
0
        public ActionResult Create(M_D_Venta MDV)
        {
            //Obteniendo el valor del Master
            int Maestro = Convert.ToInt16(Session["M_V"]);
            int TipoFacturacion = MDV.TipoFacturacion;
            float totalMaster = 0;
            int caja = Convert.ToInt16(Session["Caja_id"]);
            //recorriendo Arrays
            for (int i = 0; i < MDV.Cant.Count(); i++)
            {
                //Obtener Valores de la clase
                string cantidad = MDV.Cant[i];
                string producto = MDV.id[i];
                int producto_id = int.Parse(producto);
                float precio = db.producto.Where(x => x.id == producto_id).Select(x => x.precio_venta_u).Single();
                float total = int.Parse(cantidad) * precio;
                if (cantidad != "")
                {
                    d_venta DV = new d_venta();
                    DV.PRODUCTO_id = int.Parse(producto);
                    DV.cantidad_producto = int.Parse(cantidad);
                    DV.total = total;
                    DV.M_VENTA_id = Maestro;
                    DV.precio_u = precio;

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

                    totalMaster = totalMaster + DV.total;
                }
            }

            m_venta MV = db.m_venta.Where(p => p.id == Maestro).Select(p => p).Single();
            MV.total = totalMaster;
            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                throw e;
            }
            if (TipoFacturacion == 1)           //Nota de Credito Venta
            {
                return RedirectToAction("Create", "NotaCreditoVenta");
            }
            else if(TipoFacturacion == 2)       //tiquete
            {
                facturacion F = new facturacion();
                F.TIPO_FACTURACION_id = TipoFacturacion;
                F.M_VENTA_id = MV.id;
                db.facturacion.Add(F);
                db.SaveChanges();

                CIC.Ingreso(caja, totalMaster, Maestro);
                return Redirect("Index");

            }
            else if (TipoFacturacion == 3)       //Consumidor
            {
                CIC.Ingreso(caja, totalMaster, Maestro);
                return RedirectToAction("ConsumidorFinal");
            }
            else if (TipoFacturacion == 4)       //Credito fiscal
            {
                CIC.Ingreso(caja, totalMaster, Maestro);
                return RedirectToAction("CreditoFiscal");
            }
            else
            {
                return RedirectToAction("Index");
            }
        }
コード例 #2
0
        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 });
            }
        }