diff --git a/client/src/org/compiere/grid/VCreateFrom.java b/client/src/org/compiere/grid/VCreateFrom.java index d4defde334..cf13f4b744 100644 --- a/client/src/org/compiere/grid/VCreateFrom.java +++ b/client/src/org/compiere/grid/VCreateFrom.java @@ -117,7 +117,6 @@ public abstract class VCreateFrom extends CDialog // Register defaults: s_registeredClasses = new HashMap>(); s_registeredClasses.put(I_C_BankStatement.Table_ID, VCreateFromStatement.class); - s_registeredClasses.put(I_C_Invoice.Table_ID, VCreateFromInvoice.class); s_registeredClasses.put(I_M_InOut.Table_ID, VCreateFromShipment.class); //s_registeredClasses.put(I_C_PaySelection.Table_ID, null); // ignore - will call process C_PaySelection_CreateFrom s_registeredClasses.put(I_M_RMA.Table_ID, VCreateFromRMA.class); diff --git a/client/src/org/compiere/grid/VCreateFromInvoice.java b/client/src/org/compiere/grid/VCreateFromInvoice.java deleted file mode 100644 index 4ef05fdfd2..0000000000 --- a/client/src/org/compiere/grid/VCreateFromInvoice.java +++ /dev/null @@ -1,660 +0,0 @@ -/****************************************************************************** - * Product: Adempiere ERP & CRM Smart Business Solution * - * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * - * This program is free software; you can redistribute it and/or modify it * - * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.compiere.grid; - -import java.awt.event.ActionEvent; -import java.beans.PropertyChangeEvent; -import java.beans.VetoableChangeListener; -import java.math.BigDecimal; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Vector; -import java.util.logging.Level; - -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableModel; - -import org.compiere.model.GridTab; -import org.compiere.model.MDocType; -import org.compiere.model.MInOut; -import org.compiere.model.MInOutLine; -import org.compiere.model.MInvoice; -import org.compiere.model.MInvoiceLine; -import org.compiere.model.MOrder; -import org.compiere.model.MOrderLine; -import org.compiere.model.MProduct; -import org.compiere.model.MRMA; -import org.compiere.util.DB; -import org.compiere.util.DisplayType; -import org.compiere.util.Env; -import org.compiere.util.KeyNamePair; -import org.compiere.util.Msg; - -/** - * Create Invoice Transactions from PO Orders or Receipt - * - * @author Jorg Janke - * @version $Id: VCreateFromInvoice.java,v 1.4 2006/07/30 00:51:28 jjanke Exp $ - * - * @author Teo Sarca, SC ARHIPAC SERVICE SRL - *
  • BF [ 1896947 ] Generate invoice from Order error - *
  • BF [ 2007837 ] VCreateFrom.save() should run in trx - */ -public class VCreateFromInvoice extends VCreateFrom implements VetoableChangeListener -{ - /** - * - */ - private static final long serialVersionUID = -7102932507855655539L; - - /** - * Protected Constructor - * @param mTab MTab - */ - public VCreateFromInvoice(GridTab mTab) - { - super (mTab); - log.info(mTab.toString()); - } // VCreateFromInvoice - - private boolean m_actionActive = false; -// private MInOut m_inout = null; - private int m_M_InOut_ID = -1; - /** Loaded RMA */ - private MRMA m_rma = null; - - /** - * Dynamic Init - * @throws Exception if Lookups cannot be initialized - * @return true if initialized - */ - protected boolean dynInit() throws Exception - { - log.config(""); - setTitle(Msg.getElement(Env.getCtx(), "C_Invoice_ID", false) + " .. " + Msg.translate(Env.getCtx(), "CreateFrom")); - - parameterBankPanel.setVisible(false); - invoiceLabel.setVisible(false); - invoiceField.setVisible(false); - locatorLabel.setVisible(false); - locatorField.setVisible(false); - sameWarehouseCb.setVisible(false); - - // RMA Selection option should only be available for AP Credit Memo - Integer docTypeId = (Integer)p_mTab.getValue("C_DocTypeTarget_ID"); - MDocType docType = MDocType.get(Env.getCtx(), docTypeId); - if (!MDocType.DOCBASETYPE_APCreditMemo.equals(docType.getDocBaseType())) - { - rmaLabel.setVisible(false); - rmaField.setVisible(false); - } - - initBPartner(true); - bPartnerField.addVetoableChangeListener(this); - return true; - } // dynInit - - /** - * Init Details - load receipts not invoiced - * @param C_BPartner_ID BPartner - */ - protected void initBPDetails(int C_BPartner_ID) - { - initBPShipmentDetails(C_BPartner_ID); - initBPRMADetails(C_BPartner_ID); - } // initDetails - - /** - * - * @param C_BPartner_ID - */ - private void initBPShipmentDetails(int C_BPartner_ID) - { - log.config("C_BPartner_ID" + C_BPartner_ID); - - // load Shipments (Receipts) - Completed, Closed - shipmentField.removeActionListener(this); - shipmentField.removeAllItems(); - // None - KeyNamePair pp = new KeyNamePair(0,""); - shipmentField.addItem(pp); - // Display - StringBuffer display = new StringBuffer("s.DocumentNo||' - '||") - .append(DB.TO_CHAR("s.MovementDate", DisplayType.Date, Env.getAD_Language(Env.getCtx()))); - // - StringBuffer sql = new StringBuffer("SELECT s.M_InOut_ID,").append(display) - .append(" FROM M_InOut s " - + "WHERE s.C_BPartner_ID=? AND s.IsSOTrx='N' AND s.DocStatus IN ('CL','CO')" - + " AND s.M_InOut_ID IN " - + "(SELECT sl.M_InOut_ID FROM M_InOutLine sl" - + " LEFT OUTER JOIN M_MatchInv mi ON (sl.M_InOutLine_ID=mi.M_InOutLine_ID) " - + " JOIN M_InOut s2 ON (sl.M_InOut_ID=s2.M_InOut_ID) " - + " WHERE s2.C_BPartner_ID=? AND s2.IsSOTrx='N' AND s2.DocStatus IN ('CL','CO') " - + "GROUP BY sl.M_InOut_ID,mi.M_InOutLine_ID,sl.MovementQty " - + "HAVING (sl.MovementQty<>SUM(mi.Qty) AND mi.M_InOutLine_ID IS NOT NULL)" - + " OR mi.M_InOutLine_ID IS NULL) " - + "ORDER BY s.MovementDate"); - try - { - PreparedStatement pstmt = DB.prepareStatement(sql.toString(), null); - pstmt.setInt(1, C_BPartner_ID); - pstmt.setInt(2, C_BPartner_ID); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - { - pp = new KeyNamePair(rs.getInt(1), rs.getString(2)); - shipmentField.addItem(pp); - } - rs.close(); - pstmt.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql.toString(), e); - } - shipmentField.setSelectedIndex(0); - shipmentField.addActionListener(this); - } - - /** - * Load RMA that are candidates for shipment - * @param C_BPartner_ID BPartner - */ - private void initBPRMADetails(int C_BPartner_ID) - { - rmaField.removeActionListener(this); - rmaField.removeAllItems(); - // None - KeyNamePair pp = new KeyNamePair(0,""); - rmaField.addItem(pp); - - String sqlStmt = "SELECT r.M_RMA_ID, r.DocumentNo || '-' || r.Amt from M_RMA r " - + "WHERE ISSOTRX='N' AND r.DocStatus in ('CO', 'CL') " - + "AND r.C_BPartner_ID=? " - + "AND NOT EXISTS (SELECT * FROM C_Invoice inv " - + "WHERE inv.M_RMA_ID=r.M_RMA_ID AND inv.DocStatus IN ('CO', 'CL'))"; - - PreparedStatement pstmt = null; - try - { - pstmt = DB.prepareStatement(sqlStmt, null); - pstmt.setInt(1, C_BPartner_ID); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - { - pp = new KeyNamePair(rs.getInt(1), rs.getString(2)); - rmaField.addItem(pp); - } - rs.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sqlStmt.toString(), e); - } - finally - { - if (pstmt != null) - { - try - { - pstmt.close(); - } - catch (Exception ex) - { - log.severe("Could not close prepared statement"); - } - } - } - rmaField.setSelectedIndex(0); - rmaField.addActionListener(this); - } - - /** - * Action Listener - * @param e event - */ - public void actionPerformed(ActionEvent e) - { - super.actionPerformed(e); - if (m_actionActive) - return; - m_actionActive = true; - log.config("Action=" + e.getActionCommand()); - // Order - if (e.getSource().equals(orderField)) - { - KeyNamePair pp = (KeyNamePair)orderField.getSelectedItem(); - int C_Order_ID = 0; - if (pp != null) - C_Order_ID = pp.getKey(); - // set Invoice, RMA and Shipment to Null - invoiceField.setSelectedIndex(-1); - rmaField.setSelectedIndex(-1); - shipmentField.setSelectedIndex(-1); - loadOrder(C_Order_ID, true); - } - // Shipment - else if (e.getSource().equals(shipmentField)) - { - KeyNamePair pp = (KeyNamePair)shipmentField.getSelectedItem(); - int M_InOut_ID = 0; - if (pp != null) - M_InOut_ID = pp.getKey(); - // set Order, RMA and Invoice to Null - orderField.setSelectedIndex(-1); - rmaField.setSelectedIndex(-1); - invoiceField.setSelectedIndex(-1); - loadShipment(M_InOut_ID); - } - // RMA - else if (e.getSource().equals(rmaField)) - { - KeyNamePair pp = (KeyNamePair)rmaField.getSelectedItem(); - int M_RMA_ID = 0; - if (pp != null) - M_RMA_ID = pp.getKey(); - // set Order and Invoice to Null - orderField.setSelectedIndex(-1); - invoiceField.setSelectedIndex(-1); - shipmentField.setSelectedIndex(-1); - loadRMA(M_RMA_ID); - } - m_actionActive = false; - } // actionPerformed - - /** - * Change Listener - * @param e event - */ - public void vetoableChange (PropertyChangeEvent e) - { - log.config(e.getPropertyName() + "=" + e.getNewValue()); - - // BPartner - load Order/Invoice/Shipment - if (e.getPropertyName().equals("C_BPartner_ID")) - { - int C_BPartner_ID = ((Integer)e.getNewValue()).intValue(); - initBPartnerOIS (C_BPartner_ID, true); - } - tableChanged(null); - } // vetoableChange - - - /** - * Load Data - Shipment not invoiced - * @param M_InOut_ID InOut - */ - private void loadShipment (int M_InOut_ID) - { - log.config("M_InOut_ID=" + M_InOut_ID); - MInOut inout = new MInOut(Env.getCtx(), M_InOut_ID, null); - p_order = null; - if (inout.getC_Order_ID() != 0) - p_order = new MOrder (Env.getCtx(), inout.getC_Order_ID(), null); - - // - Vector> data = new Vector>(); - StringBuffer sql = new StringBuffer("SELECT " // QtyEntered - + "l.MovementQty-SUM(NVL(mi.Qty, 0)), l.QtyEntered/l.MovementQty," - + " l.C_UOM_ID, COALESCE(uom.UOMSymbol, uom.Name)," // 3..4 - + " l.M_Product_ID, p.Name, po.VendorProductNo, l.M_InOutLine_ID, l.Line," // 5..9 - + " l.C_OrderLine_ID " // 10 - + " FROM M_InOutLine l " - ); - if (Env.isBaseLanguage(Env.getCtx(), "C_UOM")) - sql.append(" LEFT OUTER JOIN C_UOM uom ON (l.C_UOM_ID=uom.C_UOM_ID)"); - else - sql.append(" LEFT OUTER JOIN C_UOM_Trl uom ON (l.C_UOM_ID=uom.C_UOM_ID AND uom.AD_Language='") - .append(Env.getAD_Language(Env.getCtx())).append("')"); - - sql.append(" LEFT OUTER JOIN M_Product p ON (l.M_Product_ID=p.M_Product_ID)") - .append(" INNER JOIN M_InOut io ON (l.M_InOut_ID=io.M_InOut_ID)") - .append(" LEFT OUTER JOIN M_Product_PO po ON (l.M_Product_ID = po.M_Product_ID AND io.C_BPartner_ID = po.C_BPartner_ID)") - .append(" LEFT OUTER JOIN M_MatchInv mi ON (l.M_InOutLine_ID=mi.M_InOutLine_ID)") - - .append(" WHERE l.M_InOut_ID=? AND l.MovementQty<>0 ") - .append("GROUP BY l.MovementQty, l.QtyEntered/l.MovementQty, " - + "l.C_UOM_ID, COALESCE(uom.UOMSymbol, uom.Name), " - + "l.M_Product_ID, p.Name, po.VendorProductNo, l.M_InOutLine_ID, l.Line, l.C_OrderLine_ID ") - .append("ORDER BY l.Line"); - - try - { - PreparedStatement pstmt = DB.prepareStatement(sql.toString(), null); - pstmt.setInt(1, M_InOut_ID); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - { - Vector line = new Vector(7); - line.add(new Boolean(false)); // 0-Selection - BigDecimal qtyMovement = rs.getBigDecimal(1); - BigDecimal multiplier = rs.getBigDecimal(2); - BigDecimal qtyEntered = qtyMovement.multiply(multiplier); - line.add(qtyEntered); // 1-Qty - KeyNamePair pp = new KeyNamePair(rs.getInt(3), rs.getString(4).trim()); - line.add(pp); // 2-UOM - pp = new KeyNamePair(rs.getInt(5), rs.getString(6)); - line.add(pp); // 3-Product - line.add(rs.getString(7)); // 4-VendorProductNo - int C_OrderLine_ID = rs.getInt(10); - if (rs.wasNull()) - line.add(null); // 5-Order - else - line.add(new KeyNamePair(C_OrderLine_ID,".")); - pp = new KeyNamePair(rs.getInt(8), rs.getString(9)); - line.add(pp); // 6-Ship - line.add(null); // 7-RMA - data.add(line); - } - rs.close(); - pstmt.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql.toString(), e); - } - loadTableOIS (data); - } // loadShipment - - /** - * Load RMA details - * @param M_RMA_ID RMA - */ - private void loadRMA(int M_RMA_ID) - { - p_order = null; - - m_rma = new MRMA(Env.getCtx(), M_RMA_ID, null); - - Vector> data = new Vector>(); - StringBuffer sqlStmt = new StringBuffer(); - sqlStmt.append("SELECT rl.M_RMALine_ID, rl.line, rl.Qty - rl.QtyDelivered, iol.M_Product_ID, p.Name, uom.C_UOM_ID, COALESCE(uom.UOMSymbol,uom.Name) "); - sqlStmt.append("FROM M_RMALine rl INNER JOIN M_InOutLine iol ON rl.M_InOutLine_ID=iol.M_InOutLine_ID "); - - if (Env.isBaseLanguage(Env.getCtx(), "C_UOM")) - { - sqlStmt.append("LEFT OUTER JOIN C_UOM uom ON (uom.C_UOM_ID=iol.C_UOM_ID) "); - } - else - { - sqlStmt.append("LEFT OUTER JOIN C_UOM_Trl uom ON (uom.C_UOM_ID=iol.C_UOM_ID AND uom.AD_Language='"); - sqlStmt.append(Env.getAD_Language(Env.getCtx())).append("') "); - } - sqlStmt.append("LEFT OUTER JOIN M_Product p ON p.M_Product_ID=iol.M_Product_ID "); - sqlStmt.append("WHERE rl.M_RMA_ID=? "); - sqlStmt.append("AND rl.M_INOUTLINE_ID IS NOT NULL"); - - sqlStmt.append(" UNION "); - - sqlStmt.append("SELECT rl.M_RMALine_ID, rl.line, rl.Qty - rl.QtyDelivered, 0, c.Name, uom.C_UOM_ID, COALESCE(uom.UOMSymbol,uom.Name) "); - sqlStmt.append("FROM M_RMALine rl INNER JOIN C_Charge c ON c.C_Charge_ID = rl.C_Charge_ID "); - if (Env.isBaseLanguage(Env.getCtx(), "C_UOM")) - { - sqlStmt.append("LEFT OUTER JOIN C_UOM uom ON (uom.C_UOM_ID=100) "); - } - else - { - sqlStmt.append("LEFT OUTER JOIN C_UOM_Trl uom ON (uom.C_UOM_ID=100 AND uom.AD_Language='"); - sqlStmt.append(Env.getAD_Language(Env.getCtx())).append("') "); - } - sqlStmt.append("WHERE rl.M_RMA_ID=? "); - sqlStmt.append("AND rl.C_Charge_ID IS NOT NULL"); - - PreparedStatement pstmt = null; - ResultSet rs = null; - try - { - pstmt = DB.prepareStatement(sqlStmt.toString(), null); - pstmt.setInt(1, M_RMA_ID); - pstmt.setInt(2, M_RMA_ID); - rs = pstmt.executeQuery(); - - while (rs.next()) - { - Vector line = new Vector(7); - line.add(new Boolean(false)); // 0-Selection - line.add(rs.getBigDecimal(3)); // 1-Qty - KeyNamePair pp = new KeyNamePair(rs.getInt(6), rs.getString(7)); - line.add(pp); // 2-UOM - pp = new KeyNamePair(rs.getInt(4), rs.getString(5)); - line.add(pp); // 3-Product - line.add(null); //4-Vendor Product No - line.add(null); //5-Order - pp = new KeyNamePair(rs.getInt(1), rs.getString(2)); - line.add(null); //6-Ship - line.add(pp); //7-RMA - data.add(line); - } - rs.close(); - } - catch (Exception ex) - { - log.log(Level.SEVERE, sqlStmt.toString(), ex); - } - finally - { - DB.close(rs, pstmt); - rs = null; pstmt = null; - } - loadTableOIS(data); - } - - /** - * List number of rows selected - */ - protected void info() - { - TableModel model = dataTable.getModel(); - int rows = model.getRowCount(); - int count = 0; - for (int i = 0; i < rows; i++) - { - if (((Boolean)model.getValueAt(i, 0)).booleanValue()) - count++; - } - setStatusLine(count, null); - } // infoInvoice - - /** - * Save - Create Invoice Lines - * @return true if saved - */ - protected boolean save(String trxName) - { - dataTable.stopEditor(true); - log.config(""); - TableModel model = dataTable.getModel(); - int rows = model.getRowCount(); - if (rows == 0) - return false; - - // Invoice - int C_Invoice_ID = ((Integer)p_mTab.getValue("C_Invoice_ID")).intValue(); - MInvoice invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, trxName); - log.config(invoice.toString()); - - if (p_order != null) - { - invoice.setOrder(p_order); // overwrite header values - invoice.saveEx(); - } - - MInOut inout = null; - if (m_M_InOut_ID > 0) - { - inout = new MInOut(Env.getCtx(), m_M_InOut_ID, trxName); - } - if (inout != null && inout.getM_InOut_ID() != 0 - && inout.getC_Invoice_ID() == 0) // only first time - { - inout.setC_Invoice_ID(C_Invoice_ID); - inout.saveEx(); - } - - - // Lines - for (int i = 0; i < rows; i++) - { - if (((Boolean)model.getValueAt(i, 0)).booleanValue()) - { - // variable values - BigDecimal QtyEntered = (BigDecimal) model.getValueAt(i, 1); // 1-Qty - - KeyNamePair pp = (KeyNamePair)model.getValueAt(i, 2); // 2-UOM - int C_UOM_ID = pp.getKey(); - // - pp = (KeyNamePair)model.getValueAt(i, 3); // 3-Product - int M_Product_ID = 0; - if (pp != null) - M_Product_ID = pp.getKey(); - // - int C_OrderLine_ID = 0; - pp = (KeyNamePair)model.getValueAt(i, 5); // 5-OrderLine - if (pp != null) - C_OrderLine_ID = pp.getKey(); - int M_InOutLine_ID = 0; - pp = (KeyNamePair)model.getValueAt(i, 6); // 6-Shipment - if (pp != null) - M_InOutLine_ID = pp.getKey(); - // Precision of Qty UOM - int precision = 2; - if (M_Product_ID != 0) - { - MProduct product = MProduct.get(Env.getCtx(), M_Product_ID); - precision = product.getUOMPrecision(); - } - QtyEntered = QtyEntered.setScale(precision, BigDecimal.ROUND_HALF_DOWN); - // - log.fine("Line QtyEntered=" + QtyEntered - + ", Product_ID=" + M_Product_ID - + ", OrderLine_ID=" + C_OrderLine_ID + ", InOutLine_ID=" + M_InOutLine_ID); - - // Create new Invoice Line - MInvoiceLine invoiceLine = new MInvoiceLine (invoice); - invoiceLine.setM_Product_ID(M_Product_ID, C_UOM_ID); // Line UOM - invoiceLine.setQty(QtyEntered); // Invoiced/Entered - - // Info - MOrderLine orderLine = null; - if (C_OrderLine_ID != 0) - orderLine = new MOrderLine (Env.getCtx(), C_OrderLine_ID, trxName); - MInOutLine inoutLine = null; - if (M_InOutLine_ID != 0) - { - inoutLine = new MInOutLine (Env.getCtx(), M_InOutLine_ID, trxName); - if (orderLine == null && inoutLine.getC_OrderLine_ID() != 0) - { - C_OrderLine_ID = inoutLine.getC_OrderLine_ID(); - orderLine = new MOrderLine (Env.getCtx(), C_OrderLine_ID, trxName); - } - } - else - { - String whereClause = "EXISTS (SELECT 1 FROM M_InOut io WHERE io.M_InOut_ID=M_InOutLine.M_InOut_ID AND io.DocStatus IN ('CO','CL'))"; - MInOutLine[] lines = MInOutLine.getOfOrderLine(Env.getCtx(), - C_OrderLine_ID, whereClause, trxName); - log.fine ("Receipt Lines with OrderLine = #" + lines.length); - if (lines.length > 0) - { - for (int j = 0; j < lines.length; j++) - { - MInOutLine line = lines[j]; - if (line.getQtyEntered().compareTo(QtyEntered) == 0) - { - inoutLine = line; - M_InOutLine_ID = inoutLine.getM_InOutLine_ID(); - break; - } - } - if (inoutLine == null) - { - inoutLine = lines[0]; // first as default - M_InOutLine_ID = inoutLine.getM_InOutLine_ID(); - } - } - } // get Ship info - - // Shipment Info - if (inoutLine != null) - { - invoiceLine.setShipLine(inoutLine); // overwrites - if (inoutLine.sameOrderLineUOM()) - invoiceLine.setQtyInvoiced(QtyEntered); - else - invoiceLine.setQtyInvoiced(inoutLine.getMovementQty()); - } - else { - log.fine("No Receipt Line"); - // Order Info - if (orderLine != null) - { - invoiceLine.setOrderLine(orderLine); // overwrites - if (orderLine.getQtyEntered().compareTo(orderLine.getQtyOrdered()) != 0) - invoiceLine.setQtyInvoiced(QtyEntered - .multiply(orderLine.getQtyOrdered()) - .divide(orderLine.getQtyEntered(), 12, BigDecimal.ROUND_HALF_UP)); - } - else - { - log.fine("No Order Line"); - invoiceLine.setPrice(); - invoiceLine.setTax(); - } - } - invoiceLine.saveEx(); - } // if selected - } // for all rows - - return true; - } // saveInvoice - - @Override - protected void loadTableOIS(Vector data) - { - // Header Info - Vector columnNames = new Vector(7); - columnNames.add(Msg.getMsg(Env.getCtx(), "Select")); - columnNames.add(Msg.translate(Env.getCtx(), "Quantity")); - columnNames.add(Msg.translate(Env.getCtx(), "C_UOM_ID")); - columnNames.add(Msg.translate(Env.getCtx(), "M_Product_ID")); - columnNames.add(Msg.getElement(Env.getCtx(), "VendorProductNo", false)); - columnNames.add(Msg.getElement(Env.getCtx(), "C_Order_ID", false)); - columnNames.add(Msg.getElement(Env.getCtx(), "M_InOut_ID", false)); - columnNames.add(Msg.getElement(Env.getCtx(), "M_RMA_ID", false)); - - // Remove previous listeners - dataTable.getModel().removeTableModelListener(this); - // Set Model - DefaultTableModel model = new DefaultTableModel(data, columnNames); - model.addTableModelListener(this); - dataTable.setModel(model); - // - dataTable.setColumnClass(0, Boolean.class, false); // 0-Selection - dataTable.setColumnClass(1, BigDecimal.class, true); // 1-Qty - dataTable.setColumnClass(2, String.class, true); // 2-UOM - dataTable.setColumnClass(3, String.class, true); // 3-Product - dataTable.setColumnClass(4, String.class, true); // 4-VendorProductNo - dataTable.setColumnClass(5, String.class, true); // 5-Order - dataTable.setColumnClass(6, String.class, true); // 6-Ship - dataTable.setColumnClass(7, String.class, true); // 7-RMA - // Table UI - dataTable.autoSize(); - } - - -} // VCreateFromInvoice diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFrom.java b/zkwebui/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFrom.java index 6641ab3478..25bef96682 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFrom.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFrom.java @@ -100,8 +100,6 @@ public abstract class WCreateFrom extends Window WCreateFrom retValue = null; if (AD_Table_ID == 392) // C_BankStatement retValue = new WCreateFromStatement (mTab); - else if (AD_Table_ID == 318) // C_Invoice - retValue = new WCreateFromInvoice (mTab); else if (AD_Table_ID == 319) // M_InOut retValue = new WCreateFromShipment (mTab); else if (AD_Table_ID == 426) // C_PaySelection diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromInvoice.java b/zkwebui/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromInvoice.java deleted file mode 100644 index afbd9ac5e6..0000000000 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromInvoice.java +++ /dev/null @@ -1,654 +0,0 @@ -/****************************************************************************** - * Product: Adempiere ERP & CRM Smart Business Solution * - * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * - * This program is free software; you can redistribute it and/or modify it * - * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.adempiere.webui.apps.form; - -import java.math.BigDecimal; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Vector; -import java.util.logging.Level; - -import org.adempiere.webui.component.ListModelTable; -import org.adempiere.webui.event.ValueChangeEvent; -import org.adempiere.webui.event.ValueChangeListener; -import org.compiere.model.GridTab; -import org.compiere.model.MDocType; -import org.compiere.model.MInOut; -import org.compiere.model.MInOutLine; -import org.compiere.model.MInvoice; -import org.compiere.model.MInvoiceLine; -import org.compiere.model.MOrder; -import org.compiere.model.MOrderLine; -import org.compiere.model.MProduct; -import org.compiere.model.MRMA; -import org.compiere.util.DB; -import org.compiere.util.DisplayType; -import org.compiere.util.Env; -import org.compiere.util.KeyNamePair; -import org.compiere.util.Msg; -import org.zkoss.zk.ui.event.Event; - -/** - * Create Invoice Transactions from PO Orders or Receipt - * - * @author Jorg Janke - * @version $Id: VCreateFromInvoice.java,v 1.4 2006/07/30 00:51:28 jjanke Exp $ - */ -public class WCreateFromInvoice extends WCreateFrom implements ValueChangeListener -{ - /** - * - */ - private static final long serialVersionUID = 7612348261071199415L; - - /** - * Protected Constructor - * @param mTab MTab - */ - public WCreateFromInvoice(GridTab mTab) - { - super (mTab); - log.info(mTab.toString()); - } // VCreateFromInvoice - - private boolean m_actionActive = false; - private MInOut m_inout = null; - /** Loaded RMA */ - private MRMA m_rma = null; - - /** - * Dynamic Init - * @throws Exception if Lookups cannot be initialized - * @return true if initialized - */ - protected boolean dynInit() throws Exception - { - log.config(""); - setTitle(Msg.getElement(Env.getCtx(), "C_Invoice_ID", false) + " .. " + Msg.translate(Env.getCtx(), "CreateFrom")); - - parameterBankPanel.setVisible(false); - invoiceLabel.setVisible(false); - invoiceField.setVisible(false); - locatorLabel.setVisible(false); - locatorField.setVisible(false); - sameWarehouseCb.setVisible(false); - - // RMA Selection option should only be available for AP Credit Memo - Integer docTypeId = (Integer)p_mTab.getValue("C_DocTypeTarget_ID"); - MDocType docType = MDocType.get(Env.getCtx(), docTypeId); - if (!MDocType.DOCBASETYPE_APCreditMemo.equals(docType.getDocBaseType())) - { - rmaLabel.setVisible(false); - rmaField.setVisible(false); - } - - initBPartner(true); - bPartnerField.addValueChangeListener(this); - return true; - } // dynInit - - /** - * Init Details - load receipts not invoiced - * @param C_BPartner_ID BPartner - */ - protected void initBPDetails(int C_BPartner_ID) - { - initBPShipmentDetails(C_BPartner_ID); - initBPRMADetails(C_BPartner_ID); - } // initDetails - - /** - * - * @param C_BPartner_ID - */ - private void initBPShipmentDetails(int C_BPartner_ID) - { - log.config("C_BPartner_ID" + C_BPartner_ID); - - // load Shipments (Receipts) - Completed, Closed - shipmentField.removeActionListener(this); - shipmentField.removeAllItems(); - // None - KeyNamePair pp = new KeyNamePair(0,""); - shipmentField.addItem(pp); - // Display - StringBuffer display = new StringBuffer("s.DocumentNo||' - '||") - .append(DB.TO_CHAR("s.MovementDate", DisplayType.Date, Env.getAD_Language(Env.getCtx()))); - // - StringBuffer sql = new StringBuffer("SELECT s.M_InOut_ID,").append(display) - .append(" FROM M_InOut s " - + "WHERE s.C_BPartner_ID=? AND s.IsSOTrx='N' AND s.DocStatus IN ('CL','CO')" - + " AND s.M_InOut_ID IN " - + "(SELECT sl.M_InOut_ID FROM M_InOutLine sl" - + " LEFT OUTER JOIN M_MatchInv mi ON (sl.M_InOutLine_ID=mi.M_InOutLine_ID) " - + "GROUP BY sl.M_InOut_ID,mi.M_InOutLine_ID,sl.MovementQty " - + "HAVING (sl.MovementQty<>SUM(mi.Qty) AND mi.M_InOutLine_ID IS NOT NULL)" - + " OR mi.M_InOutLine_ID IS NULL) " - + "ORDER BY s.MovementDate"); - try - { - PreparedStatement pstmt = DB.prepareStatement(sql.toString(), null); - pstmt.setInt(1, C_BPartner_ID); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - { - pp = new KeyNamePair(rs.getInt(1), rs.getString(2)); - shipmentField.addItem(pp); - } - rs.close(); - pstmt.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql.toString(), e); - } - shipmentField.setSelectedIndex(0); - shipmentField.addActionListener(this); - } - - /** - * Load RMA that are candidates for shipment - * @param C_BPartner_ID BPartner - */ - private void initBPRMADetails(int C_BPartner_ID) - { - rmaField.removeActionListener(this); - rmaField.removeAllItems(); - // None - KeyNamePair pp = new KeyNamePair(0,""); - rmaField.addItem(pp); - - String sqlStmt = "SELECT r.M_RMA_ID, r.DocumentNo || '-' || r.Amt from M_RMA r " - + "WHERE ISSOTRX='N' AND r.DocStatus in ('CO', 'CL') " - + "AND r.C_BPartner_ID=? " - + "AND NOT EXISTS (SELECT * FROM C_Invoice inv " - + "WHERE inv.M_RMA_ID=r.M_RMA_ID AND inv.DocStatus IN ('CO', 'CL'))"; - - PreparedStatement pstmt = null; - try - { - pstmt = DB.prepareStatement(sqlStmt, null); - pstmt.setInt(1, C_BPartner_ID); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - { - pp = new KeyNamePair(rs.getInt(1), rs.getString(2)); - rmaField.addItem(pp); - } - rs.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sqlStmt.toString(), e); - } - finally - { - if (pstmt != null) - { - try - { - pstmt.close(); - } - catch (Exception ex) - { - log.severe("Could not close prepared statement"); - } - } - } - rmaField.setSelectedIndex(0); - rmaField.addActionListener(this); - } - - /** - * Action Listener - * @param e event - * @throws Exception - */ - public void onEvent(Event e) throws Exception - { - super.onEvent(e); - if (m_actionActive) - return; - m_actionActive = true; - log.config("Action=" + e.getTarget().getId()); - // Order - if (e.getTarget().equals(orderField)) - { - KeyNamePair pp = orderField.getSelectedItem().toKeyNamePair(); - int C_Order_ID = 0; - if (pp != null) - C_Order_ID = pp.getKey(); - // set Invoice, RMA and Shipment to Null - invoiceField.setSelectedIndex(-1); - rmaField.setSelectedIndex(-1); - shipmentField.setSelectedIndex(-1); - loadOrder(C_Order_ID, true); - } - // Shipment - else if (e.getTarget().equals(shipmentField)) - { - KeyNamePair pp = shipmentField.getSelectedItem().toKeyNamePair(); - int M_InOut_ID = 0; - if (pp != null) - M_InOut_ID = pp.getKey(); - // set Order, RMA and Invoice to Null - orderField.setSelectedIndex(-1); - rmaField.setSelectedIndex(-1); - invoiceField.setSelectedIndex(-1); - loadShipment(M_InOut_ID); - } - // RMA - else if (e.getTarget().equals(rmaField)) - { - KeyNamePair pp = rmaField.getSelectedItem().toKeyNamePair(); - int M_RMA_ID = 0; - if (pp != null) - M_RMA_ID = pp.getKey(); - // set Order and Invoice to Null - orderField.setSelectedIndex(-1); - invoiceField.setSelectedIndex(-1); - shipmentField.setSelectedIndex(-1); - loadRMA(M_RMA_ID); - } - m_actionActive = false; - } // actionPerformed - - /** - * Change Listener - * @param e event - */ - public void valueChange (ValueChangeEvent e) - { - log.config(e.getPropertyName() + "=" + e.getNewValue()); - - // BPartner - load Order/Invoice/Shipment - if (e.getPropertyName().equals("C_BPartner_ID")) - { - int C_BPartner_ID = ((Integer)e.getNewValue()).intValue(); - initBPartnerOIS (C_BPartner_ID, true); - } - tableChanged(null); - } // vetoableChange - - - /** - * Load Data - Shipment not invoiced - * @param M_InOut_ID InOut - */ - private void loadShipment (int M_InOut_ID) - { - log.config("M_InOut_ID=" + M_InOut_ID); - m_inout = new MInOut(Env.getCtx(), M_InOut_ID, null); - p_order = null; - if (m_inout.getC_Order_ID() != 0) - p_order = new MOrder (Env.getCtx(), m_inout.getC_Order_ID(), null); - - // - Vector> data = new Vector>(); - StringBuffer sql = new StringBuffer("SELECT " // QtyEntered - + "l.MovementQty-SUM(NVL(mi.Qty, 0)), l.QtyEntered/l.MovementQty," - + " l.C_UOM_ID, COALESCE(uom.UOMSymbol, uom.Name)," // 3..4 - + " l.M_Product_ID, p.Name, po.VendorProductNo, l.M_InOutLine_ID, l.Line," // 5..9 - + " l.C_OrderLine_ID " // 10 - + " FROM M_InOutLine l " - ); - if (Env.isBaseLanguage(Env.getCtx(), "C_UOM")) - sql.append(" LEFT OUTER JOIN C_UOM uom ON (l.C_UOM_ID=uom.C_UOM_ID)"); - else - sql.append(" LEFT OUTER JOIN C_UOM_Trl uom ON (l.C_UOM_ID=uom.C_UOM_ID AND uom.AD_Language='") - .append(Env.getAD_Language(Env.getCtx())).append("')"); - - sql.append(" LEFT OUTER JOIN M_Product p ON (l.M_Product_ID=p.M_Product_ID)") - .append(" INNER JOIN M_InOut io ON (l.M_InOut_ID=io.M_InOut_ID)") - .append(" LEFT OUTER JOIN M_Product_PO po ON (l.M_Product_ID = po.M_Product_ID AND io.C_BPartner_ID = po.C_BPartner_ID)") - .append(" LEFT OUTER JOIN M_MatchInv mi ON (l.M_InOutLine_ID=mi.M_InOutLine_ID)") - - .append(" WHERE l.M_InOut_ID=? ") - .append("GROUP BY l.MovementQty, l.QtyEntered/l.MovementQty, " - + "l.C_UOM_ID, COALESCE(uom.UOMSymbol, uom.Name), " - + "l.M_Product_ID, p.Name, po.VendorProductNo, l.M_InOutLine_ID, l.Line, l.C_OrderLine_ID ") - .append("ORDER BY l.Line"); - - try - { - PreparedStatement pstmt = DB.prepareStatement(sql.toString(), null); - pstmt.setInt(1, M_InOut_ID); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - { - Vector line = new Vector(7); - line.add(new Boolean(false)); // 0-Selection - BigDecimal qtyMovement = rs.getBigDecimal(1); - BigDecimal multiplier = rs.getBigDecimal(2); - BigDecimal qtyEntered = qtyMovement.multiply(multiplier); - line.add(new Double(qtyEntered.doubleValue())); // 1-Qty - KeyNamePair pp = new KeyNamePair(rs.getInt(3), rs.getString(4).trim()); - line.add(pp); // 2-UOM - pp = new KeyNamePair(rs.getInt(5), rs.getString(6)); - line.add(pp); // 3-Product - line.add(rs.getString(7)); // 4-VendorProductNo - int C_OrderLine_ID = rs.getInt(10); - if (rs.wasNull()) - line.add(null); // 5-Order - else - line.add(new KeyNamePair(C_OrderLine_ID,".")); - pp = new KeyNamePair(rs.getInt(8), rs.getString(9)); - line.add(pp); // 6-Ship - line.add(null); // 7-RMA - data.add(line); - } - rs.close(); - pstmt.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql.toString(), e); - } - loadTableOIS (data); - } // loadShipment - - /** - * Load RMA details - * @param M_RMA_ID RMA - */ - private void loadRMA(int M_RMA_ID) - { - p_order = null; - - m_rma = new MRMA(Env.getCtx(), M_RMA_ID, null); - - Vector data = new Vector(); - StringBuffer sqlStmt = new StringBuffer(); - sqlStmt.append("SELECT rl.M_RMALine_ID, rl.line, rl.Qty - rl.QtyDelivered, iol.M_Product_ID, p.Name, uom.C_UOM_ID, COALESCE(uom.UOMSymbol,uom.Name) "); - sqlStmt.append("FROM M_RMALine rl INNER JOIN M_InOutLine iol ON rl.M_InOutLine_ID=iol.M_InOutLine_ID "); - - if (Env.isBaseLanguage(Env.getCtx(), "C_UOM")) - { - sqlStmt.append("LEFT OUTER JOIN C_UOM uom ON (uom.C_UOM_ID=iol.C_UOM_ID) "); - } - else - { - sqlStmt.append("LEFT OUTER JOIN C_UOM_Trl uom ON (uom.C_UOM_ID=iol.C_UOM_ID AND uom.AD_Language='"); - sqlStmt.append(Env.getAD_Language(Env.getCtx())).append("') "); - } - sqlStmt.append("LEFT OUTER JOIN M_Product p ON p.M_Product_ID=iol.M_Product_ID "); - sqlStmt.append("WHERE rl.M_RMA_ID=? "); - sqlStmt.append("AND rl.M_INOUTLINE_ID IS NOT NULL"); - - sqlStmt.append(" UNION "); - - sqlStmt.append("SELECT rl.M_RMALine_ID, rl.line, rl.Qty - rl.QtyDelivered, 0, c.Name, uom.C_UOM_ID, COALESCE(uom.UOMSymbol,uom.Name) "); - sqlStmt.append("FROM M_RMALine rl INNER JOIN C_Charge c ON c.C_Charge_ID = rl.C_Charge_ID "); - if (Env.isBaseLanguage(Env.getCtx(), "C_UOM")) - { - sqlStmt.append("LEFT OUTER JOIN C_UOM uom ON (uom.C_UOM_ID=100) "); - } - else - { - sqlStmt.append("LEFT OUTER JOIN C_UOM_Trl uom ON (uom.C_UOM_ID=100 AND uom.AD_Language='"); - sqlStmt.append(Env.getAD_Language(Env.getCtx())).append("') "); - } - sqlStmt.append("WHERE rl.M_RMA_ID=? "); - sqlStmt.append("AND rl.C_Charge_ID IS NOT NULL"); - - PreparedStatement pstmt = null; - - try - { - pstmt = DB.prepareStatement(sqlStmt.toString(), null); - pstmt.setInt(1, M_RMA_ID); - pstmt.setInt(2, M_RMA_ID); - ResultSet rs = pstmt.executeQuery(); - - while (rs.next()) - { - Vector line = new Vector(7); - line.add(new Boolean(false)); // 0-Selection - line.add(rs.getBigDecimal(3).doubleValue()); // 1-Qty - KeyNamePair pp = new KeyNamePair(rs.getInt(6), rs.getString(7)); - line.add(pp); // 2-UOM - pp = new KeyNamePair(rs.getInt(4), rs.getString(5)); - line.add(pp); // 3-Product - line.add(null); //4-Vendor Product No - line.add(null); //5-Order - pp = new KeyNamePair(rs.getInt(1), rs.getString(2)); - line.add(null); //6-Ship - line.add(pp); //7-RMA - data.add(line); - } - rs.close(); - } - catch (Exception ex) - { - log.log(Level.SEVERE, sqlStmt.toString(), ex); - } - finally - { - if (pstmt != null) - { - try - { - pstmt.close(); - } - catch (Exception ex) - { - log.severe("Could not close prepared statement"); - } - } - } - loadTableOIS(data); - } - - /** - * List number of rows selected - */ - protected void info() - { - ListModelTable model = dataTable.getModel(); - int rows = model.getRowCount(); - int count = 0; - for (int i = 0; i < rows; i++) - { - if (((Boolean) model.getValueAt(i, 0)).booleanValue()) - count++; - } - setStatusLine(count, null); - } // infoInvoice - - /** - * Save - Create Invoice Lines - * @return true if saved - */ - protected boolean save() - { - log.config(""); - ListModelTable model = dataTable.getModel(); - int rows = model.getSize(); - if (rows == 0) - return false; - - // Invoice - int C_Invoice_ID = ((Integer)p_mTab.getValue("C_Invoice_ID")).intValue(); - MInvoice invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null); - log.config(invoice.toString()); - - if (p_order != null) - { - invoice.setOrder(p_order); // overwrite header values - invoice.save(); - } - if (m_inout != null && m_inout.getM_InOut_ID() != 0 - && m_inout.getC_Invoice_ID() == 0) // only first time - { - m_inout.setC_Invoice_ID(C_Invoice_ID); - m_inout.save(); - } - - - // Lines - for (int i = 0; i < rows; i++) - { - if (((Boolean)model.getValueAt(i, 0)).booleanValue()) - { - // variable values - Double d = (Double)model.getValueAt(i, 1); // 1-Qty - BigDecimal QtyEntered = new BigDecimal(d.doubleValue()); - KeyNamePair pp = (KeyNamePair)model.getValueAt(i, 2); // 2-UOM - int C_UOM_ID = pp.getKey(); - // - pp = (KeyNamePair)model.getValueAt(i, 3); // 3-Product - int M_Product_ID = 0; - if (pp != null) - M_Product_ID = pp.getKey(); - int C_Charge_ID = 0; - // - int C_OrderLine_ID = 0; - pp = (KeyNamePair)model.getValueAt(i, 5); // 5-OrderLine - if (pp != null) - C_OrderLine_ID = pp.getKey(); - int M_InOutLine_ID = 0; - pp = (KeyNamePair)model.getValueAt(i, 6); // 6-Shipment - if (pp != null) - M_InOutLine_ID = pp.getKey(); - // Precision of Qty UOM - int precision = 2; - if (M_Product_ID != 0) - { - MProduct product = MProduct.get(Env.getCtx(), M_Product_ID); - precision = product.getUOMPrecision(); - } - QtyEntered = QtyEntered.setScale(precision, BigDecimal.ROUND_HALF_DOWN); - // - log.fine("Line QtyEntered=" + QtyEntered - + ", Product_ID=" + M_Product_ID - + ", OrderLine_ID=" + C_OrderLine_ID + ", InOutLine_ID=" + M_InOutLine_ID); - - // Create new Invoice Line - MInvoiceLine invoiceLine = new MInvoiceLine (invoice); - invoiceLine.setM_Product_ID(M_Product_ID, C_UOM_ID); // Line UOM - invoiceLine.setQty(QtyEntered); // Invoiced/Entered - - // Info - MOrderLine orderLine = null; - if (C_OrderLine_ID != 0) - orderLine = new MOrderLine (Env.getCtx(), C_OrderLine_ID, null); - MInOutLine inoutLine = null; - if (M_InOutLine_ID != 0) - { - inoutLine = new MInOutLine (Env.getCtx(), M_InOutLine_ID, null); - if (orderLine == null && inoutLine.getC_OrderLine_ID() != 0) - { - C_OrderLine_ID = inoutLine.getC_OrderLine_ID(); - orderLine = new MOrderLine (Env.getCtx(), C_OrderLine_ID, null); - } - } - else - { - MInOutLine[] lines = MInOutLine.getOfOrderLine(Env.getCtx(), - C_OrderLine_ID, null, null); - log.fine ("Receipt Lines with OrderLine = #" + lines.length); - if (lines.length > 0) - { - for (int j = 0; j < lines.length; j++) - { - MInOutLine line = lines[j]; - if (line.getQtyEntered().compareTo(QtyEntered) == 0) - { - inoutLine = line; - M_InOutLine_ID = inoutLine.getM_InOutLine_ID(); - break; - } - } - if (inoutLine == null) - { - inoutLine = lines[0]; // first as default - M_InOutLine_ID = inoutLine.getM_InOutLine_ID(); - } - } - } // get Ship info - - // Shipment Info - if (inoutLine != null) - { - invoiceLine.setShipLine(inoutLine); // overwrites - if (inoutLine.sameOrderLineUOM()) - invoiceLine.setQtyInvoiced(QtyEntered); - else - invoiceLine.setQtyInvoiced(inoutLine.getMovementQty()); - } - else { - log.fine("No Receipt Line"); - // Order Info - if (orderLine != null) - { - invoiceLine.setOrderLine(orderLine); // overwrites - if (orderLine.getQtyEntered().compareTo(orderLine.getQtyOrdered()) != 0) - invoiceLine.setQtyInvoiced(QtyEntered - .multiply(orderLine.getQtyOrdered()) - .divide(orderLine.getQtyEntered(), 12, BigDecimal.ROUND_HALF_UP)); - } - else - { - log.fine("No Order Line"); - invoiceLine.setPrice(); - invoiceLine.setTax(); - } - } - if (!invoiceLine.save()) - log.log(Level.SEVERE, "Line NOT created #" + i); - } // if selected - } // for all rows - - return true; - } // saveInvoice - - @Override - protected void loadTableOIS(Vector data) { - dataTable.clear(); - // Header Info - Vector columnNames = new Vector(7); - columnNames.add(Msg.getMsg(Env.getCtx(), "Select")); - columnNames.add(Msg.translate(Env.getCtx(), "Quantity")); - columnNames.add(Msg.translate(Env.getCtx(), "C_UOM_ID")); - columnNames.add(Msg.translate(Env.getCtx(), "M_Product_ID")); - columnNames.add(Msg.getElement(Env.getCtx(), "VendorProductNo", false)); - columnNames.add(Msg.getElement(Env.getCtx(), "C_Order_ID", false)); - columnNames.add(Msg.getElement(Env.getCtx(), "M_InOut_ID", false)); - columnNames.add(Msg.getElement(Env.getCtx(), "M_RMA_ID", false)); - - // Remove previous listeners - dataTable.getModel().removeTableModelListener(this); - // Set Model - ListModelTable model = new ListModelTable(data); - model.addTableModelListener(this); - dataTable.setData(model, columnNames); - // - dataTable.setColumnClass(0, Boolean.class, false); // 0-Selection - dataTable.setColumnClass(1, Double.class, true); // 1-Qty - dataTable.setColumnClass(2, String.class, true); // 2-UOM - dataTable.setColumnClass(3, String.class, true); // 3-Product - dataTable.setColumnClass(4, String.class, true); // 4-VendorProductNo - dataTable.setColumnClass(5, String.class, true); // 5-Order - dataTable.setColumnClass(6, String.class, true); // 6-Ship - dataTable.setColumnClass(7, String.class, true); // 7-RMA - // Table UI - dataTable.autoSize(); - } - - -} // VCreateFromInvoice