public void Guardar(Venta v) { using (var tx = _BD.IniciarTransaccion()) { try { string sqltxt = $"INSERT [dbo].[Venta] ([fecha],[id_Cliente],[importe_Total])" + $" VALUES ('{UtilsDB.GetFecha(v.fecha)}','{v.id_Cliente}','{v.importe_Total}')"; v.id = _BD.EjecutarTransaccion(sqltxt); if (v.id == 0) { throw new ApplicationException(); } foreach (var d in v.detalleVentas) { sqltxt = $"INSERT [dbo].[Detalle_Venta] " + $"([id_Venta], [id_disco], [cantidad], [precio])" + $" VALUES ('{v.id}','{d.id_disco}','{d.cantidad}','{d.precio}')"; _BD.EjecutarTransaccion(sqltxt); sqltxt = $"SELECT cantidad FROM Disco WHERE id={d.id_disco}"; var stock = int.Parse(_BD.ConsultaDuranteTransaccion(sqltxt).Rows[0]["cantidad"].ToString()); int number; if (!int.TryParse(d.cantidad, out number)) { throw new ApplicationException(); } if (number <= 0) { throw new ApplicationException("La cantidad ingresada no corresponde."); } int nuevoStock = stock - number; if (nuevoStock < 0) { throw new ApplicationException("No hay stock suficiente."); } sqltxt = $"UPDATE [dbo].[Disco] SET cantidad = '{nuevoStock}' WHERE id={d.id_disco}"; _BD.EjecutarTransaccion(sqltxt); } tx.Commit(); } catch (ApplicationException aex) { throw aex; } catch (Exception ex) { tx.Rollback(); throw new Exception("No se pudo realizar la operación."); } finally { _BD.cerrar(); } } }
public void Editar(string idPedido, Pedido p) { using (var tx = _BD.IniciarTransaccion()) { try { //borro detalles viejos y vuelvo a stock anterior string sqltxt1 = $"SELECT D.cantidad, D.id_disco FROM Detalle_Pedido D WHERE id_Pedido = {idPedido}"; DataTable dt = _BD.ConsultaDuranteTransaccion(sqltxt1); foreach (DataRow fila in dt.Rows) { string idDisco = fila["id_Disco"].ToString(); string cantidadABorrar = fila["cantidad"].ToString(); sqltxt1 = $"UPDATE [dbo].[Disco] SET cantidad = cantidad - {cantidadABorrar} WHERE id={idDisco}"; _BD.EjecutarSQLEnTransaccion(sqltxt1); } string sqltxt = $"DELETE FROM [dbo].[Detalle_Pedido] WHERE id_Pedido ={idPedido}"; _BD.EjecutarSQLEnTransaccion(sqltxt); //hasta aca foreach (var d in p.detallePedidos) { sqltxt = $"INSERT [dbo].[Detalle_Pedido]" + $"([id_Pedido], [Cantidad], [id_Disco]) " + $"VALUES ('{idPedido}', '{d.cantidad}', '{d.idDisco}')"; _BD.EjecutarTransaccion(sqltxt); sqltxt = $"SELECT cantidad FROM Disco WHERE id={d.idDisco}"; var stock = int.Parse(_BD.ConsultaDuranteTransaccion(sqltxt).Rows[0]["cantidad"].ToString()); int number; if (!int.TryParse(d.cantidad, out number)) { throw new ApplicationException("La cantidad ingresada no corresponde."); } if (number <= 0) { throw new ApplicationException("La cantidad ingresada no corresponde."); } int nuevoStock = stock + number; sqltxt = $"UPDATE [dbo].[Disco] SET cantidad = '{nuevoStock}' WHERE id={d.idDisco}"; _BD.EjecutarTransaccion(sqltxt); } tx.Commit(); } catch (ApplicationException aex) { throw aex; } catch (Exception ex) { tx.Rollback(); throw new Exception("No se pudo realizar la operación."); } finally { _BD.cerrar(); } } }