public static void renovarMateriasPrimas(DataTable MateriaPrima, DataTable MateriaPrimaXIntermedio, DataTable ProductosIntermedio, double cantidad, int idProducto, SqlConnection con, SqlTransaction trans, List <Producto> productosConPocaMP) { for (int k = 0; k < MateriaPrima.Rows.Count; k++) { MateriaPrima.Rows[k]["cantidad"] = double.Parse(MateriaPrima.Rows[k]["cantidad"].ToString()) * cantidad; } for (int f = 0; f < ProductosIntermedio.Rows.Count; f++)//RECORREMOS LA TABLA DE PRODUCTOS INTERMEDIOS { if (ProductosIntermedio.Rows.Count != 0) { double cantidadIntermedios = cantidad * double.Parse(ProductosIntermedio.Rows[f]["cantidad"].ToString()); MateriaPrimaXIntermedio = ProductoDAO.GetMateriaPrima(int.Parse(ProductosIntermedio.Rows[f]["idProductohijo"].ToString()), trans, con);//CARGAMOS EN LA TABLA LOS DATOS DE LAS MATERIAS PRIMAS DE LOS PRODUCTOS INTERMEDIOS for (int j = 0; j < MateriaPrimaXIntermedio.Rows.Count; j++) { MateriaPrimaXIntermedio.Rows[j]["cantidad"] = double.Parse(MateriaPrimaXIntermedio.Rows[j]["cantidad"].ToString()) * cantidadIntermedios; } } } MateriaPrima.Merge(MateriaPrimaXIntermedio, true);// YA TENEMOS DENTRO DE LA TABLA MATERIA PRIMA TODOS LOS PRODUCTOS INSUMOS O MP QUE SE NECESITAN PARA UN PRODUCTO DEL PEDIDO QUE NO ESTE RESERVADO for (int k = 0; k < MateriaPrima.Rows.Count; k++) { int idProdMP = 0; double cantidadMP = 0; idProdMP = int.Parse(MateriaPrima.Rows[k]["idProductohijo"].ToString()); cantidadMP = double.Parse(MateriaPrima.Rows[k]["cantidad"].ToString()); ProductoDAO.actualizarStockMateriasPrimas(idProdMP, cantidadMP * -1, con, trans); } }
public static void UpdateCantidadIngresadaReal(DetalleOrdenCompra det, int idOrden, SqlConnection con, SqlTransaction tran) { Acceso ac = new Acceso(); string sql = ("UPDATE [Luiggi].[dbo].[DetalleOrdenCompra] SET [cantidadRealIngresada] = @cantidadRealIngresada, [subtotal] = @cantidadRealIngresada * @precio WHERE idProducto = @idProducto and idOrdenCompra = @idOrdenCompra"); SqlCommand cmd = new SqlCommand(sql, con, tran); cmd.Parameters.AddWithValue("@idProducto", det.producto.idProducto); cmd.Parameters.AddWithValue("@cantidadRealIngresada", det.cantidadRealIngresada); cmd.Parameters.AddWithValue("@idOrdenCompra", idOrden); cmd.Parameters.AddWithValue("@precio", det.precio); try { cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); ProductoDAO.UpdateStockActualYDisponibleInsumosYMPIngresadas(det, con, tran); } catch (ArgumentException ex) { throw new ApplicationException(ex.Message); } catch (SqlException ex) { throw new ApplicationException("Error en BD: " + ex.Message); } finally { } }
public static int InsertFacturaDirecta(Factura fac) { Acceso ac = new Acceso(); SqlTransaction tran = null; SqlConnection conexion = new SqlConnection(ac.getCadenaConexion()); SqlCommand cmd = new SqlCommand("sp_Insertar_factura", conexion); cmd.Parameters.AddWithValue("@fecha", fac.fechaCreacion); cmd.Parameters.AddWithValue("@idEstado", fac.estado.idEstado); cmd.Parameters.AddWithValue("@idCliente", fac.cliente.idPersona); //cmd.Parameters.AddWithValue("@idPedido", fac.pedido.idPedido); cmd.Parameters.AddWithValue("@importe", fac.importeTotal); //cmd.Parameters.AddWithValue("@fechaPago", fac.fechaPago ); cmd.Parameters.AddWithValue("@tipoFactura", fac.tipoFactura); //cmd.Parameters.AddWithValue("@numeroFactura", fac.numeroFactura); cmd.Parameters.AddWithValue("@totalIVA", fac.totalIVA); //cmd.Parameters.AddWithValue("@montoSinImpuesto", fac.montoSinImpuesto); try { conexion.Open(); tran = conexion.BeginTransaction(); cmd.CommandType = CommandType.StoredProcedure; cmd.Transaction = tran; cmd.ExecuteNonQuery(); SqlCommand cmdIdentity = new SqlCommand("select @@Identity", conexion, tran); fac.idFactura = Convert.ToInt32((cmdIdentity.ExecuteScalar())); foreach (DetalleFactura detfac in fac.detalleFactura) { //detPed.pedido.idPedido = ped.idPedido; DetalleFacturaDAO.InsertDetalleFacturaDirecta(detfac, conexion, tran, fac.idFactura); ProductoDAO.UpdateStockActualYDisponible(detfac, conexion, tran); } tran.Commit(); return(fac.idFactura); } catch (ArgumentException ex) { if (conexion.State == ConnectionState.Open) { tran.Rollback(); } throw new ApplicationException(ex.Message); } catch (SqlException ex) { if (conexion.State == ConnectionState.Open) { tran.Rollback(); } throw new ApplicationException("Error en BD: " + ex.Message); } finally { conexion.Close(); } }
public static void Insert(DetalleFactura det, SqlConnection cn, SqlTransaction tran, int idFac) { Acceso ac = new Acceso(); //SqlConnection conexion = new SqlConnection(ac.getCadenaConexion()); SqlCommand cmd = new SqlCommand("sp_Insertar_detalle_factura", cn); cmd.Parameters.AddWithValue("@idFactura", idFac); if (det.producto != null) { cmd.Parameters.AddWithValue("@idProducto", det.producto.idProducto); } if (det.detPedido != null) { cmd.Parameters.AddWithValue("@idPedido", det.detPedido.pedido.idPedido); } cmd.Parameters.AddWithValue("@subtotal", det.subTotal); // es el precio cmd.Parameters.AddWithValue("@cantidad", det.cantidad); if (det.detPedido != null) { cmd.Parameters.AddWithValue("@idProductoPedido", det.detPedido.producto.idProducto); } cmd.Parameters.AddWithValue("@iva", det.iva); try { cmd.Connection = cn; cmd.Transaction = tran; cmd.CommandType = CommandType.StoredProcedure; cmd.ExecuteNonQuery(); //if (det.producto != null) //{ // ProductoDAO.UpdateStockActualYDisponible(det, cn, tran); //} if (det.detPedido != null) { ProductoDAO.UpdateStockReservadoYActualdePedidoEntregado(det.detPedido, det.detPedido.pedido.idPedido, 7); } } catch (ArgumentException ex) { throw new ApplicationException(ex.Message); } catch (SqlException ex) { throw new ApplicationException("Error en BD: " + ex.Message); } }
public static void finalizarOTPadre(OrdenDeTrabajo ot, double canPed, double canPlan, List <DetalleProducto> tabla) { Acceso ac = new Acceso(); SqlConnection cn = new SqlConnection(ac.getCadenaConexion()); SqlTransaction tran = null; string sql = "UPDATE [Luiggi].[dbo].[OrdenTrabajo] SET [idEstado] = 20, [cantidadProducidaReal]= @cantreal, [observaciones] = @observaciones WHERE idOrdenTrabajo = @idOrdenTrabajo "; SqlCommand cmd = new SqlCommand(); cmd.Parameters.AddWithValue("@idOrdenTrabajo", ot.idOrdenTrabajo); cmd.Parameters.AddWithValue("@cantreal", ot.cantidadReal); cmd.Parameters.AddWithValue("@observaciones", ot.observaciones); try { cn.Open(); tran = cn.BeginTransaction(); cmd.Connection = cn; cmd.Transaction = tran; cmd.CommandText = sql; cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); ProductoDAO.UpdateStockReservadoYDisponibleOTFinalizada(ot.producto.idProducto, canPlan, canPed, cn, tran); foreach (DetalleProducto det in tabla) { ProductoDAO.UpdateStockReservadoYDisponibleMatiaPrimaOTfinalizada(det.idProducto, det.cantidad, det.cantidadProductos, cn, tran); } DetallePedidoDAO.finalizarDetalleDePedido(ot.fechaCreacion, ot.producto.idProducto, tran, cn); tran.Commit(); } catch (ArgumentException ex) { tran.Rollback(); throw new ApplicationException("Error en BD: " + ex.Message); } catch (SqlException ex) { tran.Rollback(); throw new ApplicationException("Error en BD: " + ex.Message); } finally { cn.Close(); } }
public static void renovarStock(DetallePedido detPedido, SqlConnection con, SqlTransaction trans, Pedido pedido, List <Producto> productosConPocaMP) { DataTable ProductosIntermedio; DataTable MateriaPrima; DataTable DetallePlan; int idProductoFinal = 0; int idProductoIntermedio = 0; double cantidad = 0; idProductoFinal = detPedido.producto.idProducto; //OBTENEMOS EL ID DEL PRODUCTO FINAL cantidad = detPedido.cantidad; //OBTENEMOS LA CANTIDAD DE PRODUCTOS if (ProductoDAO.verificarProductoPlanificado(pedido.fechaNecesidad.Date, idProductoFinal, con, trans) == true) //PREGUNTAMOS SI PARA ESE PRODUCTO YA HAY UN DETALLE DEL PLAN PARA ESA FECHA Y ES TRUE { DetallePlan = DetallePlanProduccionDAO.GetDetallePlanXProducto(idProductoFinal, pedido.fechaNecesidad.Date, con, trans); //OBTENEMOS LOS DATOS DEL DETALLE DEL PLAN renovarDetallePlanYPedidoXPlan(DetallePlan, pedido.idPedido, con, trans, cantidad); MateriaPrima = ProductoDAO.GetMateriaPrima(idProductoFinal, trans, con); //CARGAMOS EN LA TABLA LOS DATOS DE LAS MATERIAS PRIMAS DataTable MateriaPrimaXIntermedio = new DataTable(); ProductosIntermedio = ProductoDAO.GetProductoIntermedio(idProductoFinal, con, trans); //CARGAMOS EN LA TABLA LOS DATOS DE LOS PRODUCTOS INTERMEDIO renovarMateriasPrimas(MateriaPrima, MateriaPrimaXIntermedio, ProductosIntermedio, cantidad, idProductoFinal, con, trans, productosConPocaMP); } //else //{ // if (ProductoDAO.verificarPlanSinProducto(pedido.fechaNecesidad.Date, idProductoFinal, con, trans) == true)//PREGUNTAMOS SI PARA ESE PRODUCTO YA HAY UN DETALLE DEL PLAN PARA ESA FECHA Y ES TRUE // { // Producto prodNuevo = new Producto(); // prodNuevo.idProducto = idProductoFinal; // DetallePlanProduccion detallePlanProduccion = new DetallePlanProduccion() // { // fechaProduccion = pedido.fechaNecesidad, // idPlan = PlanMaestroProduccionDAO.obtenerIdPlan(pedido.fechaNecesidad.Date), // cantidadPLan = 0, // producto = prodNuevo, // cantidadPedido = double.Parse(cantidad.ToString()) // }; // cargarNuevoDetallePlanYPedidoXPlan(detallePlanProduccion, con, trans, pedido); // MateriaPrima = ProductoDAO.GetMateriaPrima(idProductoFinal, trans, con);//CARGAMOS EN LA TABLA LOS DATOS DE LAS MATERIAS PRIMAS // DataTable MateriaPrimaXIntermedio = new DataTable(); // ProductosIntermedio = ProductoDAO.GetProductoIntermedio(idProductoFinal, con, trans);//CARGAMOS EN LA TABLA LOS DATOS DE LOS PRODUCTOS INTERMEDIO // obtenerMateriasPrimas(MateriaPrima, MateriaPrimaXIntermedio, ProductosIntermedio, cantidad, idProductoFinal, con, trans); // } //} }
public static void actualizarStock(DetallePlanProduccion detPlan, SqlConnection con, SqlTransaction trans, PlanMaestroProduccion plan, List <Producto> ProductosConPocaMP) { DataTable ProductosIntermedio; DataTable MateriaPrima; int idProductoFinal = 0; double cantidad = 0; idProductoFinal = detPlan.producto.idProducto; //OBTENEMOS EL ID DEL PRODUCTO FINAL cantidad = detPlan.cantidadPedido + detPlan.cantidadPLan; //OBTENEMOS LA CANTIDAD DE PRODUCTOS MateriaPrima = ProductoDAO.GetMateriaPrima(idProductoFinal, trans, con);//CARGAMOS EN LA TABLA LOS DATOS DE LAS MATERIAS PRIMAS DataTable MateriaPrimaXIntermedio = new DataTable(); ProductosIntermedio = ProductoDAO.GetProductoIntermedio(idProductoFinal, con, trans);//CARGAMOS EN LA TABLA LOS DATOS DE LOS PRODUCTOS INTERMEDIO obtenerMateriasPrimas(MateriaPrima, MateriaPrimaXIntermedio, ProductosIntermedio, cantidad, idProductoFinal, con, trans, ProductosConPocaMP); }
public void insertarDetalle(Detalles_FacturaTO detalleTO) { try { ProductoDAO productoDAO = new ProductoDAO(); using (context = new EmpresaEntities()) { Detalle_Factura detalleDAO = new Detalle_Factura { Factura = detalleTO.Consecutivo_Factura, Producto = detalleTO.Codigo_Producto, Cantidad = detalleTO.Cantidad }; ProductoTO productoTO = new ProductoTO(); productoTO.Codigo = detalleTO.Codigo_Producto; productoDAO.extraerProducto(productoTO); if (detalleTO.Cantidad == 0) { throw new Exception("La cantidad de un producto no puede ser 0"); } if (productoTO.CantidadInventario < detalleTO.Cantidad) { throw new Exception("Error, no hay suficientes productos para satisfcaer la demanda"); } context.Detalle_Factura.Add(detalleDAO); context.SaveChanges(); productoDAO.extraerProductoCantidad(detalleTO.Codigo_Producto, detalleTO.Cantidad); } } catch (Exception) { throw; } }
public static int Insert(Pedido ped, List <Producto> productosConPocaMP) { Acceso ac = new Acceso(); SqlTransaction tran = null; SqlConnection conexion = new SqlConnection(ac.getCadenaConexion()); SqlCommand cmd = new SqlCommand("sp_Pedido_insert", conexion); cmd.Parameters.AddWithValue("@idCliente", ped.cliente.idPersona); cmd.Parameters.AddWithValue("@idEstado", ped.estado.idEstado); cmd.Parameters.AddWithValue("@fechaPedido", ped.fechaPedido); cmd.Parameters.AddWithValue("@fechaNecesidad", ped.fechaNecesidad); cmd.Parameters.AddWithValue("@nroPedido", ped.nroPedido); cmd.Parameters.AddWithValue("@direccion", ped.dirEntraga); try { conexion.Open(); tran = conexion.BeginTransaction(); cmd.CommandType = CommandType.StoredProcedure; cmd.Transaction = tran; cmd.ExecuteNonQuery(); SqlCommand cmdIdentity = new SqlCommand("select @@Identity", conexion, tran); ped.idPedido = Convert.ToInt32((cmdIdentity.ExecuteScalar())); foreach (DetallePedido detPed in ped.detallePedido) { //detPed.pedido.idPedido = ped.idPedido; DetallePedidoDAO.Insert(detPed, conexion, tran, ped.idPedido); if (detPed.reservado == true) { ProductoDAO.UpdateStockReservadoYDisponible(detPed, conexion, tran); } if (detPed.reservado == false) { actualizarStock(detPed, conexion, tran, ped, productosConPocaMP); } } tran.Commit(); return(ped.idPedido); } catch (ArgumentException ex) { if (conexion.State == ConnectionState.Open) { tran.Rollback(); } throw new ApplicationException(ex.Message); } catch (SqlException ex) { if (conexion.State == ConnectionState.Open) { tran.Rollback(); } throw new ApplicationException("Error en BD: " + ex.Message); } finally { conexion.Close(); } }
public static void Update(Pedido ped, List <DetallePedido> tablaAModificar, List <Producto> productosConPocaMP) { Acceso ac = new Acceso(); SqlTransaction tran = null; SqlConnection conexion = new SqlConnection(ac.getCadenaConexion()); SqlCommand cmd = new SqlCommand("UPDATE [Luiggi].[dbo].[Pedido] SET [fechaNecesidad] = @fechaNecesidad, [direccion] = @direccion, [idEstado] = @idEstado WHERE idPedido = @idPedido", conexion); cmd.Parameters.AddWithValue("@idPedido", ped.idPedido); cmd.Parameters.AddWithValue("@fechaNecesidad", ped.fechaNecesidad); cmd.Parameters.AddWithValue("@direccion", ped.dirEntraga); cmd.Parameters.AddWithValue("@idEstado", ped.estado.idEstado); try { conexion.Open(); tran = conexion.BeginTransaction(); cmd.CommandType = CommandType.Text; cmd.Transaction = tran; cmd.ExecuteNonQuery(); //SqlCommand cmdIdentity = new SqlCommand("select @@Identity", conexion, tran); //ped.idPedido = Convert.ToInt32((cmdIdentity.ExecuteScalar())); foreach (DetallePedido detP in tablaAModificar) { if (detP.reservado == true) { ProductoDAO.UpdateStockReservadoYDisponibleEliminado(detP.producto.idProducto, detP.cantidad, conexion, tran); } else { renovarStock(detP, conexion, tran, ped, productosConPocaMP); } } DetallePedidoDAO.Delete(ped.idPedido, conexion, tran); foreach (DetallePedido detPed in ped.detallePedido) { //detPed.pedido.idPedido = ped.idPedido; DetallePedidoDAO.Insert(detPed, conexion, tran, ped.idPedido); if (detPed.reservado == true) { ProductoDAO.UpdateStockReservadoYDisponible(detPed, conexion, tran); } if (detPed.reservado == false) { actualizarStock(detPed, conexion, tran, ped, productosConPocaMP); } } tran.Commit(); } catch (ArgumentException ex) { if (conexion.State == ConnectionState.Open) { tran.Rollback(); } throw new ApplicationException(ex.Message); } catch (SqlException ex) { if (conexion.State == ConnectionState.Open) { tran.Rollback(); } throw new ApplicationException("Error en BD: " + ex.Message); } finally { conexion.Close(); } }
public static void finalizarOTHija(OrdenDeTrabajo ot, List <DetalleProducto> tabla) { Acceso ac = new Acceso(); SqlConnection cn = new SqlConnection(ac.getCadenaConexion()); SqlTransaction tran = null; string sql = "UPDATE [Luiggi].[dbo].[OrdenTrabajo] SET [idEstado] = 20, [cantidadProducidaReal]= @cantreal, [observaciones] = @observaciones WHERE idOrdenTrabajo = @idOrdenTrabajo "; SqlCommand cmd = new SqlCommand(); cmd.Parameters.AddWithValue("@idOrdenTrabajo", ot.idOrdenTrabajo); cmd.Parameters.AddWithValue("@cantreal", ot.cantidadReal); cmd.Parameters.AddWithValue("@observaciones", ot.observaciones); try { cn.Open(); tran = cn.BeginTransaction(); cmd.Connection = cn; cmd.Transaction = tran; cmd.CommandText = sql; cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); //ACTUALIZAR EL STOCK DE PROD INTERMEDIOS if (ot.cantidad >= ot.cantidadReal) { sql = "Update Producto set stockActual = stockActual + @cantreal, stockReservado = stockReservado + @cantreal where idProducto = @idProducto"; cmd.CommandText = sql; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@idProducto", ot.producto.idProducto); cmd.Parameters.AddWithValue("@cantreal", ot.cantidadReal); cmd.ExecuteNonQuery(); } if (ot.cantidad < ot.cantidadReal) { sql = "Update Producto set stockActual = stockActual + @cantreal, stockReservado = stockReservado + @cant, stockDisponible = stockDisponible + @cantreal - @cant where idProducto = @idProducto"; cmd.CommandText = sql; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@idProducto", ot.producto.idProducto); cmd.Parameters.AddWithValue("@cantreal", ot.cantidadReal); cmd.Parameters.AddWithValue("@cant", ot.cantidad); cmd.ExecuteNonQuery(); } //////////////////////////////////////////// //ACTUALIZAR EL STOCK DE INSUMOS foreach (DetalleProducto det in tabla) { ProductoDAO.UpdateStockReservadoYDisponibleMatiaPrimaOTfinalizada(det.idProducto, det.cantidad, det.cantidadProductos, cn, tran); } ////////////////////////////////////// tran.Commit(); } catch (ArgumentException ex) { tran.Rollback(); throw new ApplicationException("Error en BD: " + ex.Message); } catch (SqlException ex) { tran.Rollback(); throw new ApplicationException("Error en BD: " + ex.Message); } finally { cn.Close(); } }