private void btn_imprimir_Click(object sender, EventArgs e) { if (dgv_OTproductosPadres.Rows.Count > 0) { if (dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].DefaultCellStyle.BackColor == Color.LightSalmon) { OrdenDeTrabajo orden = new OrdenDeTrabajo(); orden.producto = new Producto() { idProducto = (int)dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["idProducto"].Value }; orden.fechaCreacion = Convert.ToDateTime(dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["fechaCreacion"].Value); orden.idPlan = (int)dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["idPlan"].Value; Emitir_Orden_De_Trabajo emitir = new Emitir_Orden_De_Trabajo(); emitir._orden = orden; emitir._reporte = reporteOT.intermedio; emitir.ShowDialog(); emitir = new Emitir_Orden_De_Trabajo(); emitir._orden = orden; emitir._reporte = reporteOT.final; emitir.ShowDialog(); } else { MessageBox.Show("Esta Orden de Trabajo ya fue Finalizada", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); } } else { MessageBox.Show("No Hay Ordenes a Imprimir", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); } }
private void btn_guardar_Click(object sender, EventArgs e) { if (_estado == estados.nuevo && validarDatos() == termino.aprobado) { OrdenDeTrabajo orden = new OrdenDeTrabajo() { fechaPlan = infoPlan.fechaProduccion, estado = new Estado() { idEstado = 19 }, idPlan = infoPlan.idPlan, producto = new Producto() { idProducto = infoPlan.producto.idProducto }, horaInicio = Convert.ToDateTime(txt_inicio.Text), horaFin = Convert.ToDateTime(txt_fin.Text), maquinaria = new Maquinaria() { idMaquinaria = (int)cmb_maquinaria.SelectedValue }, empleado = new Empleado() { idEmpleado = (int)cmb_empleado.SelectedValue }, fechaCreacion = dtp_creacion_OT.Value.Date, cantidad=(float)Convert.ToDouble(lbl_cant.Text), }; try { OrdenDeTrabajoDAO.InsertPadre(orden, ordenhija); } catch (ApplicationException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); } MessageBox.Show("Registrado con Exito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); bloquear = false; btn_guardar.Enabled = false; btn_cargar_combos.Enabled = false; txt_inicio.Enabled = false; limpiar(); _estado = estados.guardado; } else { } btn_salir_consulta_Click(sender, e); }
private void dgv_OTproductosPadres_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (dgv_OTproductosPadres.CurrentCell is DataGridViewButtonCell) { if (dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].DefaultCellStyle.BackColor != Color.LightGreen) { if (tieneHijosFinalizados() == true) { try { double cant = (double)dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["cantidad"].Value; if (dgv_OTproductosPadres.CurrentRow.Cells["cantiReal"].Value != String.Empty) { double cantidadPlan = 0; double cantidadPedido = DetallePlanProduccionDAO.GetCantidadPedidosParaOT((int)dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["idProducto"].Value, Convert.ToDateTime(dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["fechaCreacion"].Value)); cantidadPlan = cant - cantidadPedido; DateTime fecha = Convert.ToDateTime(dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["fechaCreacion"].Value); OrdenDeTrabajo orden = new OrdenDeTrabajo(); orden.idOrdenTrabajo = int.Parse(dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["idOrden"].Value.ToString()); Producto prod = new Producto(); prod.idProducto = int.Parse(dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["idProducto"].Value.ToString()); prod.Nombre = dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["nomProducto"].Value.ToString(); UnidadMedida unidad = new UnidadMedida(); unidad.Nombre = dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["unidad"].Value.ToString(); prod.Unidad = unidad; orden.fechaCreacion = fecha; orden.producto = prod; orden.cantidad = cant; ActualizarStock act = new ActualizarStock(orden, cantidadPedido,cantidadPlan); act.ShowDialog(); if (orden.estado != null) { if (orden.estado.Nombre == "LISTO") { MessageBox.Show("Finalizado con éxito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); dgv_OTproductosPadres.CurrentRow.DefaultCellStyle.BackColor = Color.LightGreen; dgv_OTproductosPadres.CurrentRow.Cells["cantiReal"].Value = orden.cantidadReal; cargarGrilla(); } } } } catch (FormatException ex) { MessageBox.Show("Ingrese solo números", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); } catch (ApplicationException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); } } else { MessageBox.Show("Primero debe Finalizar las Ordenes de Trabajo de los Productos Intermedios", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); } } } }
private void btn_guardar_Click(object sender, EventArgs e) { if (_estado == estados.nuevo && validarDatos() == termino.aprobado) { OrdenDeTrabajo orden = new OrdenDeTrabajo(); orden.fechaPlan = infoPlan.fechaProduccion; orden.estado = new Estado() { idEstado = 19 }; orden.idPlan = infoPlan.idPlan; orden.producto=new Producto(){idProducto=infoPlan.producto.idProducto}; orden.horaInicio = Convert.ToDateTime(txt_inicio.Text); orden.horaFin = Convert.ToDateTime(txt_fin.Text); orden.productoIntermedio = new Producto() { idProducto = prodInt.idProducto }; orden.maquinaria = new Maquinaria() { idMaquinaria = (int)cmb_maquinaria.SelectedValue, Nombre = ((Maquinaria)cmb_maquinaria.SelectedItem).Nombre}; orden.empleado = new Empleado() { idEmpleado = (int)cmb_empleado.SelectedValue, Nombre = ((Empleado)cmb_empleado.SelectedItem).Nombre }; orden.fechaCreacion=dtp_creacion_OT.Value.Date; orden.cantidad = (float)Convert.ToDouble(lbl_cant.Text); iniciador.otHija = orden; MessageBox.Show("Registrado con Exito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); _estado = estados.guardado; Close(); Dispose(); } else { } }
private void dgv_OTproductosHijos_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (dgv_OTproductosHijos.CurrentCell is DataGridViewButtonCell) { if (dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].DefaultCellStyle.BackColor != Color.LightGreen) { try { double canti = (double)dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["cant"].Value; OrdenDeTrabajo orden = new OrdenDeTrabajo(); orden.idOrdenTrabajo = (int)dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["idOT"].Value; Producto prod = new Producto(); prod.idProducto =(int)dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["idProd"].Value; prod.Nombre = dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["poductoDetalle"].Value.ToString(); UnidadMedida unidad = new UnidadMedida(); unidad.Nombre = dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["unidadMedida"].Value.ToString(); prod.Unidad = unidad; orden.producto = prod; orden.cantidad = canti; ActualizarStock act = new ActualizarStock(orden); act.ShowDialog(); if (orden.estado != null) { if (orden.estado.Nombre == "LISTO") { MessageBox.Show("Finalizado con éxito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); dgv_OTproductosHijos.CurrentRow.DefaultCellStyle.BackColor = Color.LightGreen; dgv_OTproductosHijos.CurrentRow.Cells["cantReal"].Value = orden.cantidadReal; } } } catch (ApplicationException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); } catch (FormatException ex) { MessageBox.Show("Ingrese solo números", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); } } } dgv_OTproductosHijos.ClearSelection(); }
public static void Update(OrdenDeTrabajo ot, SqlConnection cn, SqlTransaction trans) { Acceso ac = new Acceso(); string sql="UPDATE [Luiggi].[dbo].[OrdenTrabajo] SET [idOTPadre] = @idPadre WHERE fechaCreacion = @fechaCreacion and idPlan = @idPlan and idProducto = @idProducto and idProdIntermedio is Not Null"; SqlCommand cmd = new SqlCommand(); cmd.Parameters.AddWithValue("@idPadre", ot.idOrdenTrabajo); cmd.Parameters.AddWithValue("@fechaCreacion", ot.fechaCreacion ); cmd.Parameters.AddWithValue("@idPlan", ot.idPlan ); cmd.Parameters.AddWithValue("@idProducto", ot.producto.idProducto ); try { cmd.Connection = cn; cmd.Transaction = trans; cmd.CommandText = sql; cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); } catch (ArgumentException ex) { throw new ApplicationException("Error en BD: " + 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 InsertPadre(OrdenDeTrabajo OT, List<OrdenDeTrabajo> hijas) { Acceso ac = new Acceso(); SqlTransaction tran = null; SqlConnection conexion = new SqlConnection(ac.getCadenaConexion()); SqlCommand cmd = new SqlCommand("sp_insert_OT", conexion); cmd.Parameters.AddWithValue("@fechaPlan", OT.fechaPlan); cmd.Parameters.AddWithValue("@idPlan", OT.idPlan); cmd.Parameters.AddWithValue("@idProducto", OT.producto.idProducto); cmd.Parameters.AddWithValue("@horaInicio", OT.horaInicio); cmd.Parameters.AddWithValue("@horaFin", OT.horaFin); //cmd.Parameters.AddWithValue("@idOTPadre", OT.idOrdenTrabajoPadre ); cmd.Parameters.AddWithValue("@idEstado", OT.estado.idEstado); //cmd.Parameters.AddWithValue("@idProductoIntermedio", OT.productoIntermedio.idProducto); cmd.Parameters.AddWithValue("@fechaCreacion", OT.fechaCreacion); cmd.Parameters.AddWithValue("@idMaquinaria", OT.maquinaria.idMaquinaria); cmd.Parameters.AddWithValue("@idEmpleado", OT.empleado.idEmpleado); cmd.Parameters.AddWithValue("@cantidad", OT.cantidad); try { conexion.Open(); tran = conexion.BeginTransaction(); cmd.CommandType = CommandType.StoredProcedure; cmd.Transaction = tran; cmd.ExecuteNonQuery(); SqlCommand cmdIdentity = new SqlCommand("select @@Identity", conexion, tran); OT.idOrdenTrabajo = Convert.ToInt32((cmdIdentity.ExecuteScalar())); foreach (OrdenDeTrabajo hija in hijas) { InsertHijo(hija, tran, conexion, OT.idOrdenTrabajo); } //Update(OT,conexion,tran); 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 InsertHijo(OrdenDeTrabajo OT, SqlTransaction tran, SqlConnection con, int idPadre) { SqlCommand cmd = new SqlCommand("sp_insert_OT", con); cmd.Parameters.AddWithValue("@fechaPlan", OT.fechaPlan ); cmd.Parameters.AddWithValue("@idPlan", OT.idPlan ); cmd.Parameters.AddWithValue("@idProducto", OT.producto.idProducto ); cmd.Parameters.AddWithValue("@horaInicio", OT.horaInicio ); cmd.Parameters.AddWithValue("@horaFin", OT.horaFin ); cmd.Parameters.AddWithValue("@idOTPadre", idPadre ); cmd.Parameters.AddWithValue("@idEstado", OT.estado.idEstado ); cmd.Parameters.AddWithValue("@idProductoIntermedio", OT.productoIntermedio.idProducto ); cmd.Parameters.AddWithValue("@fechaCreacion", OT.fechaCreacion ); cmd.Parameters.AddWithValue("@idMaquinaria", OT.maquinaria.idMaquinaria ); cmd.Parameters.AddWithValue("@idEmpleado", OT.empleado.idEmpleado ); cmd.Parameters.AddWithValue("@cantidad", OT.cantidad); try { cmd.Transaction = tran; cmd.CommandType = CommandType.StoredProcedure; cmd.ExecuteNonQuery(); } catch (ArgumentException ex) { throw new ApplicationException(ex.Message); } catch (SqlException ex) { throw new ApplicationException("Error en BD: " + ex.Message); } finally { } }
public static List<OrdenDeTrabajo> GetAllOTPadre() { Acceso ac = new Acceso(); List<OrdenDeTrabajo> ordenes = new List<OrdenDeTrabajo>(); string sql = "SELECT * from CONSULTAR_OT_Padre order by fechaCreacion desc, horaInicio desc"; SqlCommand cmd = new SqlCommand(); SqlConnection conexion = new SqlConnection(ac.getCadenaConexion()); try { conexion.Open(); cmd.Connection = conexion; cmd.CommandText = sql; cmd.CommandType = CommandType.Text; SqlDataReader dr = cmd.ExecuteReader(); Producto p; UnidadMedida u; Maquinaria m; Estado e; OrdenDeTrabajo ot; Empleado em; while (dr.Read()) { em = new Empleado(); em.idEmpleado = Convert.ToInt32(dr["idEmpleado"]); em.Nombre = dr["empleado"].ToString(); em.Apellido = dr["apellido"].ToString(); e = new Estado(); e.idEstado = Convert.ToInt32(dr["idEstado"]); e.Nombre = dr["estado"].ToString(); m = new Maquinaria(); m.idMaquinaria = Convert.ToInt32(dr["idMaquinaria"]); m.Nombre = dr["maquinaria"].ToString(); u = new UnidadMedida(); u.Nombre = dr["unidad"].ToString(); //c = new Categoria(); ////c.IDCategoria = Convert.ToInt32(dr["idCategoria"]); //c.Nombre = dr["categoria"].ToString(); p = new Producto(); p.idProducto = Convert.ToInt32(dr["idProducto"]); p.Nombre = dr["producto"].ToString(); //p.Categoria = c; p.Unidad = u; ot = new OrdenDeTrabajo(); ot.idOrdenTrabajo = Convert.ToInt32(dr["idOrdenTrabajo"]); ot.idPlan = Convert.ToInt32(dr["idPlan"]); ot.fechaPlan = Convert.ToDateTime(dr["fechaPlan"]); ot.horaInicio = Convert.ToDateTime(dr["horaInicio"]); ot.horaFin = Convert.ToDateTime(dr["horaFin"]); ot.fechaCreacion = Convert.ToDateTime(dr["fechaCreacion"]); ot.estado = e; ot.empleado = em; ot.maquinaria = m; ot.producto = p; ot.cantidadReal = Convert.ToDouble(dr["cantReal"]); ot.cantidad = Convert.ToDouble(dr["cantidad"]); ordenes.Add(ot); } } catch (InvalidOperationException ex) { throw new ApplicationException(ex.Message); } catch (SqlException ex) { throw new ApplicationException("Error en BD: " + ex.Message); } finally { conexion.Close(); } return ordenes; }
public static List<OrdenDeTrabajo> GetAllOTHija(int idProd, DateTime fecha, int idPlan) { Acceso ac = new Acceso(); List<OrdenDeTrabajo> ordenes = new List<OrdenDeTrabajo>(); string sql = "SELECT * from CONSULTAR_OT_HIJA where fechaCreacion = @fecha and idPlan = @idPlan and idProducto = @idProd "; SqlCommand cmd = new SqlCommand(); cmd.Parameters.AddWithValue("@fecha", fecha); cmd.Parameters.AddWithValue("@idPlan", idPlan); cmd.Parameters.AddWithValue("@idProd", idProd); SqlConnection conexion = new SqlConnection(ac.getCadenaConexion()); try { conexion.Open(); cmd.Connection = conexion; cmd.CommandText = sql; cmd.CommandType = CommandType.Text; SqlDataReader dr = cmd.ExecuteReader(); Producto pi; //Categoria c; UnidadMedida u; Maquinaria m; Estado e; OrdenDeTrabajo ot; Empleado em; while (dr.Read()) { em = new Empleado(); em.idEmpleado = Convert.ToInt32(dr["idEmpleado"]); em.Nombre = dr["nombre"].ToString(); em.Apellido = dr["apellido"].ToString(); e = new Estado(); e.idEstado = Convert.ToInt32(dr["idEstado"]); e.Nombre = dr["estado"].ToString(); m = new Maquinaria(); m.idMaquinaria = Convert.ToInt32(dr["idMaquinaria"]); m.Nombre = dr["maquinaria"].ToString(); u = new UnidadMedida(); u.Nombre = dr["unidad"].ToString(); pi = new Producto(); pi.idProducto = Convert.ToInt32(dr["idProdIntermedio"]); pi.Nombre = dr["nombreHijo"].ToString(); //pi.Categoria = c; pi.Unidad = u; ot = new OrdenDeTrabajo(); ot.idOrdenTrabajo = Convert.ToInt32(dr["idOrdenTrabajo"]); ot.idOrdenTrabajoPadre = Convert.ToInt32(dr["idOTPadre"]); //ot.fechaPlan = Convert.ToDateTime(dr["fechaPlan"]); ot.horaInicio = Convert.ToDateTime(dr["horaInicio"]); ot.horaFin = Convert.ToDateTime(dr["horaFin"]); ot.fechaCreacion = Convert.ToDateTime(dr["fechaCreacion"]); ot.estado = e; ot.empleado = em; ot.maquinaria = m; ot.productoIntermedio = pi; ot.cantidad = Convert.ToDouble (dr["cantidad"]); ot.cantidadReal = Convert.ToDouble(dr["cantReal"]); ordenes.Add(ot); } } catch (InvalidOperationException ex) { throw new ApplicationException(ex.Message); } catch (SqlException ex) { throw new ApplicationException("Error en BD: " + ex.Message); } finally { conexion.Close(); } return ordenes; }
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(); } }