public async Task <IActionResult> Edit(int id, [Bind("IdOrdenDeVenta,CantidadDelProducto,ValorUnitario,ValorTotal,FechaDeVenta,IdUsuario,IdProducto")] OrdenDeVenta ordenDeVenta)
        {
            if (id != ordenDeVenta.IdOrdenDeVenta)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(ordenDeVenta);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!OrdenDeVentaExists(ordenDeVenta.IdOrdenDeVenta))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdProducto"] = new SelectList(_context.Producto, "IdProducto", "IdProducto", ordenDeVenta.IdProducto);
            ViewData["IdUsuario"]  = new SelectList(_context.Usuarios, "IdUsuario", "IdUsuario", ordenDeVenta.IdUsuario);
            return(View(ordenDeVenta));
        }
예제 #2
0
        public async Task <IActionResult> Edit(int id, [Bind("IdOrdenVenta,CantidadProducto,ValorUnitario,ValorTotal")] OrdenDeVenta ordenDeVenta)
        {
            if (id != ordenDeVenta.IdOrdenVenta)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(ordenDeVenta);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!OrdenDeVentaExists(ordenDeVenta.IdOrdenVenta))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(ordenDeVenta));
        }
예제 #3
0
        /// <summary>
        /// Convierte un datatable obtenido desde la base de datos en un objeto OrdenDeVenta
        /// </summary>
        /// <param name="objDataRow">DataRow Obtenido desde la base de datos con lo solicitado.</param>
        /// <returns>Devuelve un objeto OrdenDeVenta</returns>
        private static OrdenDeVenta ConvertirDeDataTableAOrdenDeVenta(DataRow objDataRow)
        {
            List <DetalleOrden> listaDetalles = new List <DetalleOrden>();
            OrdenDeVenta        unaVenta      = new OrdenDeVenta();
            Usuario             unUsuario     = new Usuario();
            Tarjeta             objTarjeta    = new Tarjeta();
            Efectivo            objEfectivo   = new Efectivo();


            unaVenta.ID      = (int)objDataRow["id"];
            unaVenta.Fecha   = Convert.ToDateTime(objDataRow["fecha"]);
            unUsuario.Legajo = (int)objDataRow["legajo_vendedor"];

            if (objDataRow["metodo_pago"].ToString() == "Efectivo")
            {
                unaVenta.MetodoDePago = objEfectivo;
            }
            else if (objDataRow["metodo_pago"].ToString() == "Tarjeta")
            {
                unaVenta.MetodoDePago = objTarjeta;
            }
            else
            {
                throw new Excepcion_MetodoDePagoInvalido();
            }

            unaVenta.UsuarioCreador = unUsuario;
            foreach (DetalleOrden unDetalle in listaDetalles)
            {
                listaDetalles.Add(ConvertirDeDataTableADetalleOrden(objDataRow));
            }
            unaVenta.Detalles = listaDetalles;

            return(unaVenta);
        }
예제 #4
0
        /// <summary>
        /// Persiste una venta llamando al metodo PersistirVenta de DAL
        /// </summary>
        /// <param name="unaOrdendeVenta">Orden de venta</param>
        /// <returns>True si se persistio , caso contrario arroja una excepcion.</returns>
        public static bool GuardaOrdenVenta(OrdenDeVenta unaOrdenDeVenta)
        {
            Tarjeta unaTarjeta = new Tarjeta();

            if (unaOrdenDeVenta.MetodoDePago.GetType() == unaTarjeta.GetType())
            {
                unaTarjeta = (Tarjeta)unaOrdenDeVenta.MetodoDePago;
                if (TarjetaBLL.ValidarTarjeta(unaTarjeta))
                {
                    if (OrdenDeVentaDAL.PersistirVenta(unaOrdenDeVenta))
                    {
                        return(true);
                    }
                }
            }
            else
            {
                if (OrdenDeVentaDAL.PersistirVenta(unaOrdenDeVenta))
                {
                    return(true);
                }
            }

            throw new Excepcion_VentaNoGuardada();
        }
예제 #5
0
        public void TestGuardarVenta2()

        {
            bool                datoEsperado    = true;
            DetalleOrden        unDetalleOrden  = new DetalleOrden();
            OrdenDeVenta        objOrdenDeVenta = new OrdenDeVenta();
            List <Producto>     ListaProducto   = ProductoBLL.BuscarProducto("Vino");
            List <DetalleOrden> ListaDetalles   = new List <DetalleOrden>();
            Tarjeta             objTarjeta      = new Tarjeta();
            Usuario             unUSuario       = new Usuario();

            objTarjeta.CVC = "121";
            objTarjeta.FechaVencimiento = "1/1/2022";
            objTarjeta.NumeroTarjeta    = "9898989898989899";
            objTarjeta.NombreTarjeta    = "Denis Lemes";
            Producto objProducto = ListaProducto[0];

            unDetalleOrden.Producto = objProducto;
            unDetalleOrden.Cantidad = 2;

            ListaDetalles.Add(unDetalleOrden);
            objOrdenDeVenta.Detalles = ListaDetalles;

            objOrdenDeVenta.MetodoDePago = objTarjeta;
            List <Cliente> Clientes = ClienteBLL.BuscarClientesPorDNI("23564500");

            Cliente ObjCliente = Clientes[0];

            objOrdenDeVenta.Cliente = ObjCliente;

            unUSuario.ID = 1;
            objOrdenDeVenta.UsuarioCreador = unUSuario;
            Assert.AreEqual(datoEsperado, VentaBLL.GuardaOrdenVenta(objOrdenDeVenta));
        }
예제 #6
0
        public void TestGuardarVenta()

        {
            bool                datoEsperado    = true;
            DetalleOrden        unDetalleOrden  = new DetalleOrden();
            OrdenDeVenta        objOrdenDeVenta = new OrdenDeVenta();
            List <Producto>     ListaProducto   = ProductoBLL.BuscarProducto("Vino");
            List <DetalleOrden> ListaDetalles   = new List <DetalleOrden>();
            Efectivo            objEfectivo     = new Efectivo();
            Usuario             unUSuario       = new Usuario();
            Producto            objProducto     = ListaProducto[0];

            unDetalleOrden.Producto = objProducto;
            unDetalleOrden.Cantidad = 2;
            ListaDetalles.Add(unDetalleOrden);
            objOrdenDeVenta.Detalles = ListaDetalles;

            objOrdenDeVenta.MetodoDePago = objEfectivo;
            List <Cliente> Clientes = ClienteBLL.BuscarClientesPorDNI("38567566");

            Cliente ObjCliente = Clientes[0];

            objOrdenDeVenta.Cliente = ObjCliente;

            unUSuario.ID = 1;
            objOrdenDeVenta.UsuarioCreador = unUSuario;
            Assert.AreEqual(datoEsperado, VentaBLL.GuardaOrdenVenta(objOrdenDeVenta));
        }
        //SqlTransaction transaction;

        /// <summary>
        /// Guarda una orden de venta en la base de datos.
        /// </summary>
        /// <param name="unaOrdenDeVenta">Objeto OrdenDeVenta</param>
        /// <returns>True si se persistio la venta. Si no lanza excepcion</returns>
        public static bool PersistirVenta(OrdenDeVenta unaOrdenDeVenta)
        {
            Conexion          objConexion   = new Conexion();
            Tarjeta           unaTarjeta    = new Tarjeta();
            List <SqlCommand> listaComandos = new List <SqlCommand>();

            if (unaOrdenDeVenta.MetodoDePago.GetType() == unaTarjeta.GetType()) // verifico si el metodo de pago es tarjeta, para llamar al procedimiento almacenado de venta con tarjeta
            {
                //creo todos los parametros que necesita el procedimiento almacenado
                SqlParameter[] parametros =
                {
                    new SqlParameter("@tipoMetodoDePago", SqlDbType.VarChar, 50),
                    new SqlParameter("@idPersona",        SqlDbType.Int),
                    new SqlParameter("@idCliente",        SqlDbType.Int),
                    new SqlParameter("@cvc",              SqlDbType.VarChar, 50),
                    new SqlParameter("@fechaVencimiento", SqlDbType.VarChar, 50),
                    new SqlParameter("@nombreTarjeta",    SqlDbType.VarChar, 50),
                    new SqlParameter("@nroTarjeta",       SqlDbType.VarChar, 16),
                };

                //Asigno los valores
                parametros[0].Value = "Tarjeta";
                parametros[1].Value = unaOrdenDeVenta.UsuarioCreador.ID;
                parametros[2].Value = unaOrdenDeVenta.Cliente.ID;
                parametros[3].Value = ((Tarjeta)unaOrdenDeVenta.MetodoDePago).CVC;
                parametros[4].Value = ((Tarjeta)unaOrdenDeVenta.MetodoDePago).FechaVencimiento;
                parametros[5].Value = ((Tarjeta)unaOrdenDeVenta.MetodoDePago).NombreTarjeta;
                parametros[6].Value = ((Tarjeta)unaOrdenDeVenta.MetodoDePago).NumeroTarjeta;
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.CommandText = "EXEC sp_almacenar_venta_tarjeta    @tipoMetodoDePago  ,@idPersona  ,@idCliente  ,@cvc  ,@fechaVencimiento  ,@nombreTarjeta  ,@nroTarjeta";
                sqlCommand.Parameters.AddRange(parametros);
                listaComandos.Add(sqlCommand);
            }
            else // si el metodo de pago es efectivo, llama al procedimiento almacenado de venta con efectivo
            {
                //creo todos los parametros que necesita el procedimiento almacenado
                SqlParameter[] parametros =
                {
                    new SqlParameter("@tipoMetodoDePago", SqlDbType.VarChar, 50),
                    new SqlParameter("@idPersona",        SqlDbType.Int),
                    new SqlParameter("@idCliente",        SqlDbType.Int),
                };
                //Asigno los valores
                parametros[0].Value = "Efectivo";
                parametros[1].Value = unaOrdenDeVenta.UsuarioCreador.ID;
                parametros[2].Value = unaOrdenDeVenta.Cliente.ID;
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.CommandText = "EXEC sp_almacenar_venta_efectivo   @tipoMetodoDePago  ,@idPersona  ,@idCliente";
                sqlCommand.Parameters.AddRange(parametros);
                listaComandos.Add(sqlCommand);
            }

            listaComandos.AddRange(DetalleOrdenDAL.GuardarDetalles(unaOrdenDeVenta.Detalles));
            if (!(objConexion.EjecutarTransaccion(listaComandos)))
            {
                return(false);
            }
            return(true);
        }
예제 #8
0
        public async Task <IActionResult> Create([Bind("IdOrdenVenta,CantidadProducto,ValorUnitario,ValorTotal")] OrdenDeVenta ordenDeVenta)
        {
            if (ModelState.IsValid)
            {
                _context.Add(ordenDeVenta);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(ordenDeVenta));
        }
        public async Task <IActionResult> Create([Bind("IdOrdenDeVenta,CantidadDelProducto,ValorUnitario,ValorTotal,FechaDeVenta,IdUsuario,IdProducto")] OrdenDeVenta ordenDeVenta)
        {
            if (ModelState.IsValid)
            {
                _context.Add(ordenDeVenta);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdProducto"] = new SelectList(_context.Producto, "IdProducto", "IdProducto", ordenDeVenta.IdProducto);
            ViewData["IdUsuario"]  = new SelectList(_context.Usuarios, "IdUsuario", "IdUsuario", ordenDeVenta.IdUsuario);
            return(View(ordenDeVenta));
        }