/// <summary> /// Confirma una venta registrando sus ítems en el sistema. /// La venta debe poseer items. /// </summary> /// <param name="venta">La venta a registrar.</param> /// <exception cref="ReglasNegocioException">Si ocurre un error de negocio.</exception> public void ConfirmarVenta(Venta venta) { if (venta.Items.Count.Equals(0)) { throw new ReglasNegocioException("La venta no contiene ningún ítem."); } BaseDatos db = new BaseDatos(); try { db.Conectar(); db.ComenzarTransaccion(); string sql = "INSERT ItemsVenta (CodigoVenta, CodigoProducto, Cantidad) VALUES (@venta, @producto, @cantidad); SELECT @@IDENTITY"; foreach (ItemVenta item in venta.Items) { db.CrearComando(sql); db.AsignarParametroEntero("@venta", venta.Codigo); db.AsignarParametroEntero("@producto", item.Producto.Codigo); db.AsignarParametroEntero("@cantidad", item.Cantidad); item.Codigo = db.EjecutarEscalar(); } db.ConfirmarTransaccion(); } catch (BaseDatosException ex) { db.CancelarTransaccion(); throw new ReglasNegocioException("Error al registrar la venta.", ex); } finally { db.Desconectar(); } }
/// <summary> /// Inicia una nueva venta en el sistema. /// </summary> /// <returns>La venta iniciada.</returns> /// <exception cref="ReglasNegocioException">Si ocurre un error de negocio.</exception> public Venta IniciarVenta() { Venta venta = new Venta(); BaseDatos db = new BaseDatos(); try { db.Conectar(); string sql = "INSERT Ventas (Fecha) VALUES (DEFAULT); SELECT @@IDENTITY"; db.CrearComando(sql); venta.Codigo = db.EjecutarEscalar(); } catch (BaseDatosException ex) { throw new ReglasNegocioException("Error al iniciar la venta.", ex); } finally { db.Desconectar(); } return venta; }