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)); }
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)); }
/// <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); }
/// <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(); }
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)); }
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); }
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)); }