Estoy atorado con una programacion,
es la siguiente:
Código:
Lo que hace es try{ miConexion = BD.GetConnection(); Statement stm1 = miConexion.createStatement(); Statement stm2 = miConexion.createStatement(); Statement stm3 = miConexion.createStatement(); Statement stm4 = miConexion.createStatement(); //Guarda Factura****************** String sql1 = "INSERT INTO facturacion (Codigo,Fecha,Cliente,CodigoCliente," +"ValorFacturado,TipoPago,Credito,Abona,Debe,AltaPor) VALUES('"+txtCodigo.getText()+"','" +txtFecha.getText()+"','"+txtNombre.getText()+"','"+txtCodigoCliente.getText()+"','" +txtTotalFin.getText().replace(",","")+"','"+cbTipoPago.getSelectedItem()+"','" +chkCredito.isSelected()+"','"+txtRecibe.getText().replace(",","")+"','" +txtCambio.getText().replace(",","")+"','"+Seguridad.Acceso.UsuarioActivo+"')"; stm1.execute(sql1); //Guarda Detalles de factura ************************* int FilasTablaDetalle = tDetalles.getRowCount(); for(int x = 0; x < FilasTablaDetalle; x++){ stm2.execute("INSERT INTO facturaciondetalle (CodigoFactura,CodigoItem,Descripcion," + "Cantidad,Unitario,Total) VALUES('"+txtCodigo.getText()+"','" +tD.getValueAt(x, 0)+"','"+tD.getValueAt(x, 1)+"','"+tD.getValueAt(x, 2)+"','" +tD.getValueAt(x, 3).toString().replace(",","")+"','"+tD.getValueAt(x, 4).toString().replace(",","")+"')"); } //Reduce Inventario ******************************* for(int x = 0; x < FilasTablaDetalle; x++){ String CodigoItem = tD.getValueAt(x,0).toString(); try (ResultSet rs = stm3.executeQuery("SELECT Cantidades FROM inventario WHERE Codigo = '"+CodigoItem+"'")) { rs.next(); long Calcula = rs.getLong("Cantidades") - Long.valueOf(tD.getValueAt(x, 0).toString().replace(",","")); stm4.execute("UPDATE inventario SET Cantidades = '"+Calcula+"' WHERE Codigo = '" +CodigoItem+"'"); } } JOptionPane.showMessageDialog(FacturaConfirma, "Guardado"); }catch(SQLException e){ BD.ErrorLog = e.getMessage()+" al guardar la factura Fac@0003"; LogFile.CreaLog(); }
tomar los valores de la factura,
luego toma los detalles de la factura de un jTable,
Luego toma las cantidades junto con los codigos de los articulos en el jTable.
todo bien hasta ahi captura e inserta y actualiza.
Pero, el resultset me suma las cantidades por cada vuelta y me reduce el inventario incrementalmente.
ejemplo.
ingreso tres productos de 1 cantidad cada uno.
al momento de reducir del inventario lo hace asi.
Stock del producto 1 es 1000
Stock del producto 2 es 1000
Stock del producto 3 es 1000
despues de aplicar el UPDATE el estock de los productos queda asi
Stock del producto 1 es 999
Stock del producto 2 es 998
Stock del producto 3 es 997
Espero haberme dado a entender
y que me puedan orientar un poco, Muchas gracias