📄 vmatch.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Business Solution
* The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
* Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
* created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.apps.form;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.util.*;
import java.sql.*;
import java.math.*;
import org.compiere.util.*;
import org.compiere.plaf.*;
import org.compiere.swing.*;
import org.compiere.apps.*;
import org.compiere.minigrid.*;
import org.compiere.grid.ed.*;
/**
* Manual Matching
*
* @author Jorg Janke
* @version $Id: VMatch.java,v 1.11 2003/03/18 07:07:39 jjanke Exp $
*/
public class VMatch extends CPanel
implements FormPanel, ActionListener, TableModelListener, ListSelectionListener
{
/**
* VMatch
*/
public VMatch()
{
} // VMatch
/**
* Initialize Panel
* @param WindowNo window
* @param frame frame
*/
public void init (int WindowNo, FormFrame frame)
{
m_WindowNo = WindowNo;
m_frame = frame;
Log.trace(Log.l1_User, "VMatch.init - WinNo=" + m_WindowNo,
"AD_Client_ID=" + m_AD_Client_ID + ", AD_Org_ID=" + m_AD_Org_ID + ", By=" + m_by);
Env.setContext(Env.getCtx(), m_WindowNo, "IsSOTrx", "N");
try
{
jbInit();
dynInit();
frame.getContentPane().add(mainPanel, BorderLayout.CENTER);
frame.getContentPane().add(statusBar, BorderLayout.SOUTH);
}
catch(Exception e)
{
Log.error("VMatch.init", e);
}
} // init
/** Window No */
private int m_WindowNo = 0;
/** FormFrame */
private FormFrame m_frame;
private int m_AD_Client_ID = Env.getContextAsInt(Env.getCtx(), m_WindowNo, "#AD_Client_ID");;
private int m_AD_Org_ID = Env.getContextAsInt(Env.getCtx(), m_WindowNo, "#AD_Org_ID");;
private int m_by = Env.getContextAsInt(Env.getCtx(), m_WindowNo, "#AD_User_ID");
/** Match Options */
private String[] m_matchOptions = new String[] {
Msg.translate(Env.getCtx(), "C_Invoice_ID"),
Msg.translate(Env.getCtx(), "M_InOut_ID"),
Msg.translate(Env.getCtx(), "C_Order_ID") };
private static final int MATCH_INVOICE = 0;
private static final int MATCH_SHIPMENT = 1;
private static final int MATCH_ORDER = 2;
/** Match Mode */
private String[] m_matchMode = new String[] {
Msg.translate(Env.getCtx(), "NotMatched"),
Msg.translate(Env.getCtx(), "Matched")};
private static final int MODE_NOTMATCHED = 0;
private static final int MODE_MATCHED = 1;
/** Indexes in Table */
private static final int I_BPartner = 3;
private static final int I_Line = 4;
private static final int I_Product = 5;
private static final int I_QTY = 6;
private static final int I_MATCHED = 7;
private StringBuffer m_sql = null;
private String m_dateColumn = "";
private String m_qtyColumn = "";
private String m_groupBy = "";
private BigDecimal m_xMatched = Env.ZERO;
private BigDecimal m_xMatchedTo = Env.ZERO;
//
private CPanel mainPanel = new CPanel();
private StatusBar statusBar = new StatusBar();
private BorderLayout mainLayout = new BorderLayout();
private CPanel northPanel = new CPanel();
private GridBagLayout northLayout = new GridBagLayout();
private CLabel matchFromLabel = new CLabel();
private CComboBox matchFrom = new CComboBox(m_matchOptions);
private CLabel matchToLabel = new CLabel();
private CComboBox matchTo = new CComboBox();
private CLabel matchModeLabel = new CLabel();
private CComboBox matchMode = new CComboBox(m_matchMode);
private VLookup onlyVendor = VLookup.createBPartner(m_WindowNo);
private VLookup onlyProduct = VLookup.createProduct(m_WindowNo);
private CLabel onlyVendorLabel = new CLabel();
private CLabel onlyProductLabel = new CLabel();
private CLabel dateFromLabel = new CLabel();
private CLabel dateToLabel = new CLabel();
private VDate dateFrom = new VDate("DateFrom", false, false, true, DisplayType.Date, "DateFrom");
private VDate dateTo = new VDate("DateTo", false, false, true, DisplayType.Date, "DateTo");
private CButton bSearch = new CButton();
private CPanel southPanel = new CPanel();
private GridBagLayout southLayout = new GridBagLayout();
private CLabel xMatchedLabel = new CLabel();
private CLabel xMatchedToLabel = new CLabel();
private CLabel differenceLabel = new CLabel();
private VNumber xMatched = new VNumber("xMatched", false, true, false, DisplayType.Quantity, "xMatched");
private VNumber xMatchedTo = new VNumber("xMatchedTo", false, true, false, DisplayType.Quantity, "xMatchedTo");
private VNumber difference = new VNumber("Difference", false, true, false, DisplayType.Quantity, "Difference");
private CButton bProcess = new CButton();
private CPanel centerPanel = new CPanel();
private BorderLayout centerLayout = new BorderLayout(5,5);
private JScrollPane xMatchedScrollPane = new JScrollPane();
private TitledBorder xMatchedBorder = new TitledBorder("xMatched");
private MiniTable xMatchedTable = new MiniTable();
private JScrollPane xMatchedToScrollPane = new JScrollPane();
private TitledBorder xMatchedToBorder = new TitledBorder("xMatchedTo");
private MiniTable xMatchedToTable = new MiniTable();
private CPanel xPanel = new CPanel();
private JCheckBox sameProduct = new JCheckBox();
private JCheckBox sameBPartner = new JCheckBox();
private JCheckBox sameQty = new JCheckBox();
private FlowLayout xLayout = new FlowLayout(FlowLayout.CENTER, 10, 0);
/**
* Static Init.
* <pre>
* mainPanel
* northPanel
* centerPanel
* xMatched
* xPanel
* xMathedTo
* southPanel
* </pre>
* @throws Exception
*/
private void jbInit() throws Exception
{
mainPanel.setLayout(mainLayout);
northPanel.setLayout(northLayout);
matchFromLabel.setText(Msg.translate(Env.getCtx(), "MatchFrom"));
matchToLabel.setText(Msg.translate(Env.getCtx(), "MatchTo"));
matchModeLabel.setText(Msg.translate(Env.getCtx(), "MatchMode"));
onlyVendorLabel.setText(Msg.translate(Env.getCtx(), "C_BPartner_ID"));
onlyProductLabel.setText(Msg.translate(Env.getCtx(), "M_Product_ID"));
dateFromLabel.setText(Msg.translate(Env.getCtx(), "DateFrom"));
dateToLabel.setText(Msg.translate(Env.getCtx(), "DateTo"));
bSearch.setText(Msg.translate(Env.getCtx(), "Search"));
southPanel.setLayout(southLayout);
xMatchedLabel.setText(Msg.translate(Env.getCtx(), "ToBeMatched"));
xMatchedToLabel.setText(Msg.translate(Env.getCtx(), "Matching"));
differenceLabel.setText(Msg.translate(Env.getCtx(), "Difference"));
bProcess.setText(Msg.translate(Env.getCtx(), "Process"));
centerPanel.setLayout(centerLayout);
xMatchedScrollPane.setBorder(xMatchedBorder);
xMatchedScrollPane.setPreferredSize(new Dimension(450, 200));
xMatchedToScrollPane.setBorder(xMatchedToBorder);
xMatchedToScrollPane.setPreferredSize(new Dimension(450, 200));
sameProduct.setSelected(true);
sameProduct.setText(Msg.translate(Env.getCtx(), "SameProduct"));
sameBPartner.setSelected(true);
sameBPartner.setText(Msg.translate(Env.getCtx(), "SameBPartner"));
sameQty.setSelected(true);
sameQty.setText(Msg.translate(Env.getCtx(), "SameQty"));
xPanel.setLayout(xLayout);
mainPanel.add(northPanel, BorderLayout.NORTH);
northPanel.add(matchFromLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(12, 12, 5, 5), 0, 0));
northPanel.add(matchFrom, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(12, 0, 5, 0), 0, 0));
northPanel.add(matchToLabel, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(12, 5, 5, 5), 0, 0));
northPanel.add(matchTo, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(12, 0, 5, 0), 0, 0));
northPanel.add(matchModeLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 12, 5, 5), 0, 0));
northPanel.add(matchMode, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 5, 0), 0, 0));
northPanel.add(onlyVendor, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 0, 5, 0), 0, 0));
northPanel.add(onlyProduct, new GridBagConstraints(3, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 0, 5, 0), 0, 0));
northPanel.add(onlyVendorLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 12, 5, 5), 0, 0));
northPanel.add(onlyProductLabel, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
northPanel.add(dateFromLabel, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 12, 5, 5), 0, 0));
northPanel.add(dateToLabel, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 0, 5, 5), 0, 0));
northPanel.add(dateFrom, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 5, 0), 0, 0));
northPanel.add(dateTo, new GridBagConstraints(3, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 5, 0), 0, 0));
northPanel.add(bSearch, new GridBagConstraints(4, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 12, 5, 12), 0, 0));
mainPanel.add(southPanel, BorderLayout.SOUTH);
southPanel.add(xMatchedLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 12, 5, 5), 0, 0));
southPanel.add(xMatched, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 0, 5, 0), 0, 0));
southPanel.add(xMatchedToLabel, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 10, 5, 5), 0, 0));
southPanel.add(bProcess, new GridBagConstraints(6, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 12, 5, 12), 0, 0));
southPanel.add(differenceLabel, new GridBagConstraints(4, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 10, 5, 5), 0, 0));
mainPanel.add(centerPanel, BorderLayout.CENTER);
centerPanel.add(xMatchedScrollPane, BorderLayout.NORTH);
xMatchedScrollPane.getViewport().add(xMatchedTable, null);
centerPanel.add(xMatchedToScrollPane, BorderLayout.SOUTH);
centerPanel.add(xPanel, BorderLayout.CENTER);
xPanel.add(sameBPartner, null);
xPanel.add(sameProduct, null);
xPanel.add(sameQty, null);
xMatchedToScrollPane.getViewport().add(xMatchedToTable, null);
southPanel.add(difference, new GridBagConstraints(5, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 0, 5, 0), 0, 0));
southPanel.add(xMatchedTo, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 0, 5, 0), 0, 0));
} // jbInit
/**
* Dynamic Init.
* Table Layout, Visual, Listener
*/
private void dynInit()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -