/** Fill Table */ private Vector<Vector<Object>> fillTable(String sql, int parameter) { if (log.isLoggable(Level.FINE)) log.fine(sql + "; Parameter=" + parameter); Vector<Vector<Object>> data = new Vector<Vector<Object>>(); PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = DB.prepareStatement(sql, null); pstmt.setInt(1, parameter); rs = pstmt.executeQuery(); while (rs.next()) { Vector<Object> line = new Vector<Object>(6); // 0-Name, 1-PriceActual, 2-QtyInvoiced, 3-Discount, 4-DocumentNo, 5-DateInvoiced line.add(rs.getString(1)); // Name line.add(rs.getBigDecimal(2)); // Price line.add(rs.getString(3)); // Currency line.add(new Double(rs.getDouble(5))); // Qty BigDecimal discountBD = rs.getBigDecimal(9); if (discountBD == null) { double priceList = rs.getDouble(4); double priceActual = rs.getDouble(2); if (priceList != 0) { discountBD = BigDecimal.valueOf((priceList - priceActual) / priceList * 100); // Rounding: int precision = MPriceList.getStandardPrecision(Env.getCtx(), rs.getInt(10)); if (discountBD.scale() > precision) discountBD = discountBD.setScale(precision, RoundingMode.HALF_UP); } else discountBD = Env.ZERO; } line.add(discountBD); // Discount line.add(rs.getString(7)); // DocNo line.add(rs.getTimestamp(6)); // Date line.add(rs.getString(8)); // Org/Warehouse data.add(line); } } catch (SQLException e) { log.log(Level.SEVERE, sql, e); } finally { DB.close(rs, pstmt); rs = null; pstmt = null; } if (log.isLoggable(Level.FINE)) log.fine("#" + data.size()); return data; } // fillTable
@Override public void updateLineNetAmt(final I_C_InvoiceLine line, final BigDecimal qtyEntered) { if (qtyEntered != null) { final Properties ctx = InterfaceWrapperHelper.getCtx(line); final I_C_Invoice invoice = line.getC_Invoice(); final int priceListId = invoice.getM_PriceList_ID(); // // We need to get the quantity in the pricing's UOM (if different) final BigDecimal convertedQty = calculateQtyInvoicedInPriceUOM(line); // this code has been borrowed from // org.compiere.model.CalloutOrder.amt final int stdPrecision = MPriceList.getStandardPrecision(ctx, priceListId); BigDecimal lineNetAmt = convertedQty.multiply(line.getPriceActual()); if (lineNetAmt.scale() > stdPrecision) { lineNetAmt = lineNetAmt.setScale(stdPrecision, BigDecimal.ROUND_HALF_UP); } logger.info("LineNetAmt=" + lineNetAmt); line.setLineNetAmt(lineNetAmt); } }