* [ 1639249 ] Complete the POS implementation
Integration of openXpertya code, not fully functional yet.
This commit is contained in:
parent
5409500d1d
commit
6a976b51dd
|
@ -0,0 +1,550 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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. *
|
||||
*****************************************************************************/
|
||||
|
||||
package org.compiere.pos;
|
||||
|
||||
import java.math.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.sql.*;
|
||||
|
||||
import javax.swing.border.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.apps.*;
|
||||
import org.compiere.grid.ed.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
/**
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Jose A.Gonzalez, Conserti.
|
||||
*
|
||||
* @version $Id: CashSubFunctions.java,v 0.9 $
|
||||
*
|
||||
* @Colaborador $Id: Consultoria y Soporte en Redes y Tecnologias de la Informacion S.L.
|
||||
*
|
||||
*/
|
||||
|
||||
public class CashSubFunctions extends PosSubPanel implements ActionListener, InputMethodListener
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public CashSubFunctions (PosPanel posPanel)
|
||||
{
|
||||
super(posPanel);
|
||||
} // PosQueryProduct
|
||||
|
||||
private CButton f_displayInitialChange = null;
|
||||
private CButton f_inputsOutputs = null;
|
||||
private CButton f_tickets = null;
|
||||
private CButton f_closingCash = null;
|
||||
private CButton f_displayCashScrutiny = null;
|
||||
private CButton f_pos = null;
|
||||
private CPanel c;
|
||||
|
||||
// for initial change
|
||||
private CPanel cInitial;
|
||||
private CLabel l_PreviousChange = null;
|
||||
private VNumber v_PreviousChange;
|
||||
private CLabel l_change = null;
|
||||
private VNumber v_change;
|
||||
private CButton f_change = null;
|
||||
|
||||
// for cash scrutiny
|
||||
private CPanel cScrutiny;
|
||||
private CLabel l_previousBalance = null;
|
||||
private VNumber v_previousBalance;
|
||||
private CLabel l_ActualBalance = null;
|
||||
private VNumber v_ActualBalance;
|
||||
private CLabel l_difference = null;
|
||||
private VNumber v_difference;
|
||||
private CButton f_calculateDifference = null;
|
||||
|
||||
private CPanel panel;
|
||||
private CScrollPane centerScroll;
|
||||
private ConfirmPanel confirm;
|
||||
|
||||
/** Logger */
|
||||
private static CLogger log = CLogger.getCLogger(SubCheckout.class);
|
||||
|
||||
/**
|
||||
* Set up Panel
|
||||
*/
|
||||
protected void init()
|
||||
{
|
||||
setLayout(new BorderLayout(2,6));
|
||||
setVisible(false);
|
||||
// North
|
||||
panel = new CPanel(new GridBagLayout());
|
||||
add (panel, BorderLayout.CENTER);
|
||||
panel.setBorder(new TitledBorder(Msg.getMsg(p_ctx, "Cash Functions")));
|
||||
GridBagConstraints gbc = new GridBagConstraints();
|
||||
gbc.insets = PosSubPanel.INSETS2;
|
||||
//
|
||||
gbc.gridx = 0;
|
||||
gbc.gridy = 0;
|
||||
gbc.anchor = GridBagConstraints.CENTER;
|
||||
gbc.weightx = .3;
|
||||
gbc.weighty = 0.05;
|
||||
|
||||
|
||||
//******************** Main buttons **********************************
|
||||
|
||||
f_displayInitialChange = createButtonAction("InitialChange", null);
|
||||
f_displayInitialChange.setText("Initial Change");
|
||||
f_displayInitialChange.setActionCommand("displayInitialChange");
|
||||
f_displayInitialChange.setMaximumSize(new Dimension(160,35));
|
||||
f_displayInitialChange.setMinimumSize(new Dimension(160,35));
|
||||
f_displayInitialChange.setPreferredSize(new Dimension(160,35));
|
||||
panel.add (f_displayInitialChange, gbc);
|
||||
//
|
||||
f_closingCash = createButtonAction("InitialChange", null);
|
||||
f_closingCash.setText("Cash Closing");
|
||||
f_closingCash.setActionCommand("CashClosing");
|
||||
f_closingCash.setPreferredSize(new Dimension(160,35));
|
||||
f_closingCash.setMaximumSize(new Dimension(160,35));
|
||||
f_closingCash.setMinimumSize(new Dimension(160,35));
|
||||
gbc.gridy = 1;
|
||||
panel.add (f_closingCash, gbc);
|
||||
//
|
||||
f_displayCashScrutiny = createButtonAction("Scrutiny", null);
|
||||
f_displayCashScrutiny.setText("Cash Scrutiny");
|
||||
f_displayCashScrutiny.setActionCommand("displayCashScrutiny");
|
||||
f_displayCashScrutiny.setPreferredSize(new Dimension(160,35));
|
||||
f_displayCashScrutiny.setMaximumSize(new Dimension(160,35));
|
||||
f_displayCashScrutiny.setMinimumSize(new Dimension(160,35));
|
||||
gbc.gridy = 2;
|
||||
panel.add (f_displayCashScrutiny, gbc);
|
||||
//
|
||||
f_inputsOutputs = createButtonAction("Inputs", null);
|
||||
f_inputsOutputs.setText("Inputs and Outputs");
|
||||
f_inputsOutputs.setActionCommand("InputsOutputs");
|
||||
f_inputsOutputs.setPreferredSize(new Dimension(160,35));
|
||||
f_inputsOutputs.setMaximumSize(new Dimension(160,35));
|
||||
f_inputsOutputs.setMinimumSize(new Dimension(160,35));
|
||||
gbc.gridy = 3;
|
||||
panel.add (f_inputsOutputs, gbc);
|
||||
//
|
||||
f_tickets = createButtonAction("Tickets", null);
|
||||
f_tickets.setText("Tickets");
|
||||
f_tickets.setPreferredSize(new Dimension(160,35));
|
||||
f_tickets.setMaximumSize(new Dimension(160,35));
|
||||
f_tickets.setMinimumSize(new Dimension(160,35));
|
||||
gbc.gridy = 4;
|
||||
panel.add (f_tickets, gbc);
|
||||
//
|
||||
f_pos = createButtonAction("End", null);
|
||||
f_pos.setText("POS");
|
||||
f_pos.setPreferredSize(new Dimension(160,35));
|
||||
f_pos.setMaximumSize(new Dimension(160,35));
|
||||
f_pos.setMinimumSize(new Dimension(160,35));
|
||||
gbc.gridy = 5;
|
||||
panel.add (f_pos, gbc);
|
||||
|
||||
//*************************** Panel to put buttons *************************
|
||||
gbc.gridx = 1;
|
||||
gbc.anchor = GridBagConstraints.WEST;
|
||||
gbc.gridy = 0;
|
||||
gbc.gridheight = 5;
|
||||
|
||||
c = new CPanel(new GridBagLayout());
|
||||
c.setBorder(new TitledBorder(""));
|
||||
c.setMaximumSize(new Dimension(400,400));
|
||||
c.setMinimumSize(new Dimension(400,400));
|
||||
c.setPreferredSize(new Dimension(400,400));
|
||||
panel.add (c, gbc);
|
||||
|
||||
|
||||
|
||||
//*************************** Panel for initial change *************************
|
||||
gbc.gridx = 1;
|
||||
gbc.anchor = GridBagConstraints.WEST;
|
||||
gbc.gridy = 0;
|
||||
gbc.gridheight = 5;
|
||||
cInitial = new CPanel(new GridBagLayout());
|
||||
cInitial.setBorder(new TitledBorder("Initial Change"));
|
||||
cInitial.setVisible(false);
|
||||
panel.add (cInitial, gbc);
|
||||
GridBagConstraints gbc0 = new GridBagConstraints();
|
||||
gbc0.insets = INSETS2;
|
||||
gbc0.anchor = GridBagConstraints.CENTER;
|
||||
//
|
||||
gbc0.gridx = 0;
|
||||
gbc0.gridy = 0;
|
||||
l_PreviousChange = new CLabel("Previous Change");
|
||||
cInitial.add (l_PreviousChange, gbc0);
|
||||
|
||||
gbc0.gridx = 1;
|
||||
v_PreviousChange = new VNumber("PreviousChange", false, true, false, DisplayType.Amount, "PreviousChange");
|
||||
v_PreviousChange.setColumns(10, 25);
|
||||
cInitial.add(v_PreviousChange, gbc0);
|
||||
v_PreviousChange.setValue(Env.ZERO);
|
||||
//
|
||||
gbc0.gridx = 0;
|
||||
gbc0.gridy = 1;
|
||||
l_change = new CLabel("Initial Change");
|
||||
cInitial.add (l_change, gbc0);
|
||||
|
||||
gbc0.gridx = 1;
|
||||
v_change = new VNumber("Change", false, false, true, DisplayType.Amount, "Change");
|
||||
v_change.setColumns(10, 25);
|
||||
cInitial.add(v_change, gbc0);
|
||||
v_change.setValue(Env.ZERO);
|
||||
|
||||
gbc0.gridy = 2;
|
||||
gbc0.gridx = 0;
|
||||
gbc0.gridwidth = 2;
|
||||
//gbc0.fill = GridBagConstraints.HORIZONTAL;
|
||||
f_change = createButtonAction("InitialChange", null);
|
||||
f_change.setText("Save Change");
|
||||
f_change.setActionCommand("saveChange");
|
||||
cInitial.add (f_change, gbc0);
|
||||
f_change.setPreferredSize(new Dimension(160,35));
|
||||
f_change.setMaximumSize(new Dimension(160,35));
|
||||
f_change.setMinimumSize(new Dimension(160,35));
|
||||
|
||||
cInitial.setMaximumSize(new Dimension(400,400));
|
||||
cInitial.setMinimumSize(new Dimension(400,400));
|
||||
cInitial.setPreferredSize(new Dimension(400,400));
|
||||
|
||||
|
||||
//****************************** Panel for cash scrutiniy ************************
|
||||
gbc.gridx = 1;
|
||||
gbc.anchor = GridBagConstraints.WEST;
|
||||
gbc.gridy = 0;
|
||||
gbc.gridheight = 5;
|
||||
|
||||
// gbc.weightx = .7;
|
||||
|
||||
cScrutiny = new CPanel(new GridBagLayout());
|
||||
cScrutiny.setBorder(new TitledBorder("Cash Scrutiny"));
|
||||
cScrutiny.setVisible(false);
|
||||
panel.add (cScrutiny, gbc);
|
||||
GridBagConstraints gbc1 = new GridBagConstraints();
|
||||
gbc1.insets = INSETS2;
|
||||
gbc1.anchor = GridBagConstraints.CENTER;
|
||||
|
||||
//
|
||||
gbc1.gridx = 0;
|
||||
gbc1.gridy = 0;
|
||||
l_previousBalance = new CLabel("Previous Balance");
|
||||
cScrutiny.add (l_previousBalance, gbc1);
|
||||
|
||||
gbc1.gridx = 1;
|
||||
v_previousBalance = new VNumber("PreviousBalance", false, true, false, DisplayType.Amount, "PreviousBalance");
|
||||
v_previousBalance.setColumns(10, 25);
|
||||
cScrutiny.add(v_previousBalance, gbc1);
|
||||
v_previousBalance.setValue(Env.ZERO);
|
||||
|
||||
//
|
||||
gbc1.gridx = 0;
|
||||
gbc1.gridy = 1;
|
||||
l_ActualBalance = new CLabel("Actual Balance");
|
||||
cScrutiny.add (l_ActualBalance, gbc1);
|
||||
|
||||
gbc1.gridx = 1;
|
||||
v_ActualBalance = new VNumber("ActualBalance", false, false, true, DisplayType.Amount, "ActualBalance");
|
||||
v_ActualBalance.setColumns(10, 25);
|
||||
v_ActualBalance.addActionListener(this);
|
||||
v_ActualBalance.addInputMethodListener(this);
|
||||
cScrutiny.add(v_ActualBalance, gbc1);
|
||||
v_ActualBalance.setValue(Env.ZERO);
|
||||
|
||||
//
|
||||
gbc1.gridx = 0;
|
||||
gbc1.gridy = 2;
|
||||
l_difference = new CLabel("Difference");
|
||||
cScrutiny.add (l_difference, gbc1);
|
||||
|
||||
gbc1.gridx = 1;
|
||||
v_difference = new VNumber("Difference", false, true, false, DisplayType.Amount, "Difference");
|
||||
v_difference.setColumns(10, 25);
|
||||
cScrutiny.add(v_difference, gbc1);
|
||||
v_difference.setValue(Env.ZERO);
|
||||
|
||||
//
|
||||
gbc1.gridx = 0;
|
||||
gbc1.gridy = 4;
|
||||
gbc1.gridwidth = 2;
|
||||
gbc1.fill = GridBagConstraints.HORIZONTAL;
|
||||
f_calculateDifference = createButtonAction("InitialChange", null);
|
||||
f_calculateDifference.setText("Annotate Difference");
|
||||
f_calculateDifference.setActionCommand("AnnotateDiference");
|
||||
cScrutiny.add (f_calculateDifference, gbc1);
|
||||
|
||||
cScrutiny.setMaximumSize(new Dimension(400,400));
|
||||
cScrutiny.setMinimumSize(new Dimension(400,400));
|
||||
cScrutiny.setPreferredSize(new Dimension(400,400));
|
||||
} // init
|
||||
|
||||
|
||||
/**
|
||||
* Get GridBagConstraints
|
||||
* @return constraints
|
||||
*/
|
||||
protected GridBagConstraints getGridBagConstraints ()
|
||||
{
|
||||
GridBagConstraints gbc = super.getGridBagConstraints();
|
||||
gbc.gridx = 0;
|
||||
gbc.gridy = GridBagConstraints.RELATIVE;
|
||||
gbc.gridwidth = 2; // GridBagConstraints.REMAINDER;
|
||||
gbc.fill = GridBagConstraints.BOTH;
|
||||
gbc.weightx = 0.5;
|
||||
gbc.weighty = 0.5;
|
||||
return gbc;
|
||||
} // getGridBagConstraints
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
removeAll();
|
||||
panel = null;
|
||||
centerScroll = null;
|
||||
confirm = null;
|
||||
} // dispose
|
||||
|
||||
/**
|
||||
* Set Visible
|
||||
* @param aFlag visible
|
||||
*/
|
||||
public void setVisible (boolean aFlag)
|
||||
{
|
||||
super.setVisible (aFlag);
|
||||
} // setVisible
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* @param e event
|
||||
*/
|
||||
public void actionPerformed (ActionEvent e)
|
||||
{
|
||||
String action = e.getActionCommand();
|
||||
if (action == null || action.length() == 0)
|
||||
return;
|
||||
log.info("PosCashSubFunctions - actionPerformed: " + action);
|
||||
|
||||
// to display panel with initial changenicial
|
||||
if (action.equals("displayInitialChange"))
|
||||
{
|
||||
cmd_displayInitialChange();
|
||||
}
|
||||
// to display panel with cash closing
|
||||
else if (action.equals("CashClosing"))
|
||||
{
|
||||
Timestamp today = TimeUtil.getDay(System.currentTimeMillis());
|
||||
|
||||
MCash cash = MCash.get(p_pos.getCtx(), /*p_pos.getAD_Org_ID(),*/ p_pos.getC_CashBook_ID(), today, null);
|
||||
|
||||
MQuery query = new MQuery(MCash.Table_Name);
|
||||
query.addRestriction("C_Cash_ID", MQuery.EQUAL, cash.getC_Cash_ID());
|
||||
//TODO
|
||||
//AEnv.openWindow(MCash.Table_ID, query, false);
|
||||
}
|
||||
// to open window with inputs and outputs of cash
|
||||
else if (action.equals("InputsOutputs"))
|
||||
{
|
||||
Timestamp today = TimeUtil.getDay(System.currentTimeMillis());
|
||||
|
||||
MCash cash = MCash.get(p_pos.getCtx(), /*p_pos.getAD_Org_ID(),*/ p_pos.getC_CashBook_ID(), today, null);
|
||||
|
||||
//TODO: new method added by openxpertya
|
||||
//AEnv.detailedZoom(MCash.Table_ID, cash.getC_Cash_ID(), false);
|
||||
}
|
||||
else if (action.equals("Tickets"))
|
||||
{
|
||||
MQuery query = new MQuery(MOrder.Table_Name);
|
||||
query.addRestriction("C_DocTypeTarget_ID", MQuery.EQUAL, p_pos.getC_DocType_ID());
|
||||
//TODO: openxpertya added ad_window_id to c_pos
|
||||
//AEnv.openWindow(p_pos.getAD_Window_ID(), query, true);
|
||||
}
|
||||
// Cash (Payment)
|
||||
else if (action.equals("displayCashScrutiny"))
|
||||
{
|
||||
cmd_displayCashScrutiny();
|
||||
}
|
||||
else if (action.equals("End"))
|
||||
{
|
||||
p_posPanel.closeQuery(p_posPanel.f_cashfunctions);
|
||||
}
|
||||
else if (action.equals("saveChange"))
|
||||
{
|
||||
cmd_saveChange();
|
||||
}
|
||||
else if (action.equals("AnnotateDifference"))
|
||||
{
|
||||
cmd_calculateDifference();
|
||||
cmd_annotateDifference();
|
||||
}
|
||||
else if (e.getSource() == v_ActualBalance)
|
||||
cmd_calculateDifference();
|
||||
|
||||
|
||||
} // actionPerformed
|
||||
|
||||
/**
|
||||
* Desplegar panel de Cambio Inicial
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
private void cmd_displayInitialChange()
|
||||
{
|
||||
cScrutiny.setVisible(false);
|
||||
c.setVisible(false);
|
||||
cInitial.setVisible(true);
|
||||
|
||||
Timestamp today = TimeUtil.getDay(System.currentTimeMillis());
|
||||
|
||||
MCash cash = MCash.get(p_pos.getCtx(), /*p_pos.getAD_Org_ID(),*/ p_pos.getC_CashBook_ID(), today, null);
|
||||
|
||||
if (cash != null)
|
||||
{
|
||||
v_PreviousChange.setValue(cash.getEndingBalance());
|
||||
v_change.setValue(cash.getEndingBalance());
|
||||
}
|
||||
else
|
||||
log.severe("No Cash");
|
||||
}
|
||||
|
||||
/**
|
||||
* Desplegar panel de Scrutiny de caja
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
private void cmd_displayCashScrutiny()
|
||||
{
|
||||
cInitial.setVisible(false);
|
||||
c.setVisible(false);
|
||||
cScrutiny.setVisible(true);
|
||||
|
||||
// calculate total until the moment and shows it in scrutiny panel
|
||||
Timestamp today = TimeUtil.getDay(System.currentTimeMillis());
|
||||
|
||||
MCash cash = MCash.get(p_pos.getCtx(), /*p_pos.getAD_Org_ID(),*/ p_pos.getC_CashBook_ID(), today, null);
|
||||
|
||||
v_previousBalance.setValue(cash.getEndingBalance());
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the initial change of the cash
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
private void cmd_saveChange()
|
||||
{
|
||||
MCashBook cashBook = new MCashBook(p_ctx, p_pos.getC_CashBook_ID(), null);
|
||||
Timestamp today = TimeUtil.getDay(System.currentTimeMillis());
|
||||
|
||||
MCash cash = MCash.get(p_ctx, /*p_pos.getAD_Org_ID(),*/ p_pos.getC_CashBook_ID(), today, null);
|
||||
|
||||
BigDecimal initialChange = (BigDecimal)v_change.getValue();
|
||||
|
||||
if (cash != null && cash.get_ID() != 0 && initialChange.compareTo(cash.getEndingBalance()) != 0)
|
||||
{
|
||||
MCashLine cl = new MCashLine (cash);
|
||||
cl.setCashType(MCashLine.CASHTYPE_Difference);
|
||||
cl.setAmount(initialChange.subtract(cash.getEndingBalance()));
|
||||
cl.setDescription("Initial Change Before: " + cash.getEndingBalance() + " Now: " + initialChange);
|
||||
cl.save();
|
||||
}
|
||||
v_PreviousChange.setValue(initialChange);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate difference between previous balance and actual
|
||||
* for cash scrutiny
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
private void cmd_calculateDifference()
|
||||
{
|
||||
// calculate difference between scrutiny of previous and actual balance
|
||||
BigDecimal previousValue, actualValue;
|
||||
|
||||
Timestamp today = TimeUtil.getDay(System.currentTimeMillis());
|
||||
MCash cash = MCash.get(p_pos.getCtx(), /*p_pos.getAD_Org_ID(),*/ p_pos.getC_CashBook_ID(), today, null);
|
||||
v_previousBalance.setValue(cash.getEndingBalance());
|
||||
previousValue = cash.getEndingBalance();
|
||||
|
||||
actualValue = (BigDecimal)v_ActualBalance.getValue();
|
||||
|
||||
v_difference.setValue(actualValue.subtract(previousValue));
|
||||
}
|
||||
|
||||
/**
|
||||
* Annotate the difference between previous balance and actual
|
||||
* from cash scrutiny in the cash book
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
private void cmd_annotateDifference()
|
||||
{
|
||||
// calculate difference from scrutiny between previous and actual balance
|
||||
BigDecimal previousValue, actualValue, difference;
|
||||
previousValue = (BigDecimal)v_previousBalance.getValue();
|
||||
actualValue = (BigDecimal)v_ActualBalance.getValue();
|
||||
|
||||
difference = actualValue.subtract(previousValue);
|
||||
|
||||
MCashBook cashBook = new MCashBook(p_ctx, p_pos.getC_CashBook_ID(), null);
|
||||
Timestamp today = TimeUtil.getDay(System.currentTimeMillis());
|
||||
|
||||
MCash cash = MCash.get(p_ctx, /*cashBook.getAD_Org_ID(),*/ cashBook.getC_CashBook_ID(), today, null);
|
||||
|
||||
if (cash != null && cash.get_ID() != 0 && difference.compareTo(cash.getStatementDifference()) != 0)
|
||||
{
|
||||
MCashLine cl = new MCashLine (cash);
|
||||
cl.setCashType(MCashLine.CASHTYPE_Difference);
|
||||
cl.setAmount(difference);
|
||||
cl.setDescription(Msg.translate(p_pos.getCtx(), "Cash Scrutiny -> Before: ") + previousValue + " Now: " + actualValue);
|
||||
cl.save();
|
||||
}
|
||||
cash = MCash.get(p_pos.getCtx(), /*p_pos.getAD_Org_ID(),*/ p_pos.getC_CashBook_ID(), today, null);
|
||||
v_previousBalance.setValue(cash.getEndingBalance());
|
||||
v_ActualBalance.setValue(Env.ZERO);
|
||||
v_difference.setValue(Env.ZERO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* calculate difference in cash scrutiny every time the cursor moves
|
||||
*/
|
||||
public void caretPositionChanged(InputMethodEvent event)
|
||||
{
|
||||
cmd_calculateDifference();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* calculate difference between cash scrutiniy each time the actual balance text changes
|
||||
*/
|
||||
public void inputMethodTextChanged(InputMethodEvent event)
|
||||
{
|
||||
cmd_calculateDifference();
|
||||
}
|
||||
} // CashSubFunctions
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,120 +10,117 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.util.*;
|
||||
|
||||
import org.compiere.apps.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* POS Keyboard Focus Manager
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: PosKeyboardFocusManager.java,v 1.2 2006/07/30 00:51:26 jjanke Exp $
|
||||
* POS Keyboard Focus Manager
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: PosKeyboardFocusManager.java,v 1.2 2004/07/11 19:50:12 jjanke
|
||||
* Exp $
|
||||
*/
|
||||
public class PosKeyboardFocusManager extends AKeyboardFocusManager
|
||||
implements ActionListener
|
||||
{
|
||||
/**
|
||||
* PosKeyboardFocusManager
|
||||
*/
|
||||
public PosKeyboardFocusManager ()
|
||||
{
|
||||
super ();
|
||||
} // PosKeyboardFocusManager
|
||||
public class PosKeyboardFocusManager extends DefaultKeyboardFocusManager
|
||||
implements ActionListener {
|
||||
|
||||
/** FirstIn First Out List */
|
||||
/**
|
||||
* PosKeyboardFocusManager
|
||||
*/
|
||||
public PosKeyboardFocusManager() {
|
||||
super();
|
||||
} // PosKeyboardFocusManager
|
||||
|
||||
/** FirstIn First Out List */
|
||||
private LinkedList<KeyEvent> m_fifo = new LinkedList<KeyEvent>();
|
||||
/** Last Key Type */
|
||||
private long m_lastWhen = 0;
|
||||
/** Timer */
|
||||
private javax.swing.Timer m_timer = null;
|
||||
|
||||
/** Last Key Type */
|
||||
private long m_lastWhen = 0;
|
||||
|
||||
/** Timer */
|
||||
private javax.swing.Timer m_timer = null;
|
||||
/** Logger */
|
||||
private static CLogger log = CLogger.getCLogger(PosKeyboardFocusManager.class);
|
||||
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
* Dispose
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
public void dispose() {
|
||||
if (m_timer != null)
|
||||
m_timer.stop();
|
||||
m_timer = null;
|
||||
if (m_fifo != null)
|
||||
m_fifo.clear();
|
||||
m_fifo = null;
|
||||
} // dispose
|
||||
} // dispose
|
||||
|
||||
|
||||
/**
|
||||
* Start Timer
|
||||
* Start Timer
|
||||
*/
|
||||
public void start()
|
||||
{
|
||||
public void start() {
|
||||
// Unqueue time - 200 ms
|
||||
int delay = 200;
|
||||
log.fine("" + delay);
|
||||
log.fine("PosKeyboardFocusManager.start - " + delay);
|
||||
if (m_timer == null)
|
||||
m_timer = new javax.swing.Timer (delay, this);
|
||||
m_timer = new javax.swing.Timer(delay, this);
|
||||
if (!m_timer.isRunning())
|
||||
m_timer.start();
|
||||
} // start
|
||||
|
||||
} // start
|
||||
|
||||
/**
|
||||
* Stop Timer
|
||||
* Stop Timer
|
||||
*/
|
||||
public void stop()
|
||||
{
|
||||
log.fine("" + m_timer);
|
||||
public void stop() {
|
||||
log.fine("PosKeyboardFocusManager.stop - " + m_timer);
|
||||
|
||||
if (m_timer != null)
|
||||
m_timer.stop();
|
||||
} // stop
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Dispatch Key Event - queue
|
||||
* @param event event
|
||||
* @return true
|
||||
} // stop
|
||||
|
||||
/***************************************************************************
|
||||
* Dispatch Key Event - queue
|
||||
*
|
||||
* @param eevent
|
||||
* event
|
||||
* @return true
|
||||
*/
|
||||
public boolean dispatchKeyEvent (KeyEvent event)
|
||||
{
|
||||
if (event.getID()==KeyEvent.KEY_PRESSED)
|
||||
{
|
||||
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||
if (event.getID() == KeyEvent.KEY_PRESSED) {
|
||||
// Keyboard Repeat: 485 - then 31
|
||||
// log.fine( "PosKeyboardFocusManager.dispatchKeyEvent - "
|
||||
// + event.getWhen() + " - " + (event.getWhen() - m_lastWhen));
|
||||
// - "
|
||||
// + event.getWhen() + " - " + (event.getWhen() - m_lastWhen));
|
||||
m_lastWhen = event.getWhen();
|
||||
}
|
||||
if (m_timer == null)
|
||||
super.dispatchKeyEvent (event);
|
||||
super.dispatchKeyEvent(event);
|
||||
else
|
||||
m_fifo.add(event);
|
||||
return true;
|
||||
} // displatchEvent
|
||||
|
||||
|
||||
} // displatchEvent
|
||||
|
||||
/**
|
||||
* Action Performed - unqueue
|
||||
* @param e event
|
||||
* Action Performed - unqueue
|
||||
*
|
||||
* @param e
|
||||
* event
|
||||
*/
|
||||
public void actionPerformed (ActionEvent e)
|
||||
{
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (m_timer == null)
|
||||
return;
|
||||
// log.fine( "actionPerformed - " + m_fifo.size());
|
||||
while (m_fifo.size() > 0)
|
||||
{
|
||||
KeyEvent event = (KeyEvent)m_fifo.removeFirst();
|
||||
super.dispatchKeyEvent (event);
|
||||
while (m_fifo.size() > 0) {
|
||||
KeyEvent event = (KeyEvent) m_fifo.removeFirst();
|
||||
super.dispatchKeyEvent(event);
|
||||
}
|
||||
} // actionPerformed
|
||||
|
||||
} // PosKeyboardFocusManager
|
||||
} // actionPerformed
|
||||
|
||||
} // PosKeyboardFocusManager
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,10 +10,8 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
|
@ -22,18 +20,20 @@ import java.util.*;
|
|||
|
||||
import javax.swing.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.apps.*;
|
||||
import org.compiere.apps.form.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.swing.*;
|
||||
import java.util.logging.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
/**
|
||||
* Point of Sales Main Window.
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: PosPanel.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: PosPanel.java,v 1.10 2004/07/12 04:10:04 jjanke Exp $
|
||||
*/
|
||||
public class PosPanel extends CPanel
|
||||
implements FormPanel
|
||||
|
@ -44,6 +44,7 @@ public class PosPanel extends CPanel
|
|||
public PosPanel()
|
||||
{
|
||||
super (new GridBagLayout());
|
||||
originalKeyboardFocusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
|
||||
m_focusMgr = new PosKeyboardFocusManager();
|
||||
KeyboardFocusManager.setCurrentKeyboardFocusManager(m_focusMgr);
|
||||
} // PosPanel
|
||||
|
@ -80,17 +81,22 @@ public class PosPanel extends CPanel
|
|||
/** Checkout */
|
||||
protected SubCheckout f_checkout = null;
|
||||
/** Basic Keys */
|
||||
protected SubBasicKeys f_basicKeys = null;
|
||||
// protected SubBasicKeys f_basicKeys = null;
|
||||
|
||||
/** Product Query Window */
|
||||
protected QueryProduct f_queryProduct = null;
|
||||
/** BPartner Query Window */
|
||||
protected QueryBPartner f_queryBPartner = null;
|
||||
/** Ticket Query Window */
|
||||
protected QueryTicket f_queryTicket = null;
|
||||
|
||||
protected CashSubFunctions f_cashfunctions;
|
||||
|
||||
// Today's (login) date */
|
||||
private Timestamp m_today = Env.getContextAsDate(m_ctx, "#Date");
|
||||
|
||||
private KeyboardFocusManager originalKeyboardFocusManager;
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* @param WindowNo window
|
||||
|
@ -98,6 +104,7 @@ public class PosPanel extends CPanel
|
|||
*/
|
||||
public void init (int WindowNo, FormFrame frame)
|
||||
{
|
||||
frame.setMaximize(true);
|
||||
m_SalesRep_ID = Env.getAD_User_ID(m_ctx);
|
||||
log.info("init - SalesRep_ID=" + m_SalesRep_ID);
|
||||
m_WindowNo = WindowNo;
|
||||
|
@ -131,6 +138,7 @@ public class PosPanel extends CPanel
|
|||
if (m_focusMgr != null)
|
||||
m_focusMgr.stop();
|
||||
m_focusMgr = null;
|
||||
KeyboardFocusManager.setCurrentKeyboardFocusManager(originalKeyboardFocusManager);
|
||||
//
|
||||
if (f_bpartner != null)
|
||||
f_bpartner.dispose();
|
||||
|
@ -139,7 +147,10 @@ public class PosPanel extends CPanel
|
|||
f_salesRep.dispose();
|
||||
f_salesRep = null;
|
||||
if (f_curLine != null)
|
||||
{
|
||||
f_curLine.deleteOrder();
|
||||
f_curLine.dispose();
|
||||
}
|
||||
f_curLine = null;
|
||||
if (f_product != null)
|
||||
f_product.dispose();
|
||||
|
@ -153,17 +164,23 @@ public class PosPanel extends CPanel
|
|||
if (f_checkout != null)
|
||||
f_checkout.dispose();
|
||||
f_checkout = null;
|
||||
if (f_basicKeys != null)
|
||||
f_basicKeys.dispose();
|
||||
/* if (f_basicKeys != null)
|
||||
f_basicKeys.dispose(); removed by ConSerTi upon not appreciating its functionality
|
||||
f_basicKeys = null;
|
||||
//
|
||||
*/ //
|
||||
if (f_queryProduct != null)
|
||||
f_queryProduct.dispose();
|
||||
f_queryProduct = null;
|
||||
if (f_queryBPartner != null)
|
||||
f_queryBPartner.dispose();
|
||||
f_queryBPartner = null;
|
||||
if (f_queryTicket != null)
|
||||
f_queryTicket.dispose();
|
||||
f_queryTicket = null;
|
||||
//
|
||||
if (f_cashfunctions != null)
|
||||
f_cashfunctions.dispose();
|
||||
f_cashfunctions = null;
|
||||
if (m_frame != null)
|
||||
m_frame.dispose();
|
||||
m_frame = null;
|
||||
|
@ -203,9 +220,9 @@ public class PosPanel extends CPanel
|
|||
f_checkout = new SubCheckout (this);
|
||||
add (f_checkout, f_checkout.getGridBagConstraints());
|
||||
//
|
||||
f_basicKeys = new SubBasicKeys (this);
|
||||
add (f_basicKeys, f_basicKeys.getGridBagConstraints());
|
||||
|
||||
/* f_basicKeys = new SubBasicKeys (this);
|
||||
add (f_basicKeys, f_basicKeys.getGridBagConstraints()); removed by ConSerTi upon not appreciating its functionality
|
||||
*/
|
||||
// -- Query
|
||||
f_queryProduct = new QueryProduct (this);
|
||||
add (f_queryProduct, f_queryProduct.getGridBagConstraints());
|
||||
|
@ -213,6 +230,12 @@ public class PosPanel extends CPanel
|
|||
f_queryBPartner = new QueryBPartner (this);
|
||||
add (f_queryBPartner, f_queryBPartner.getGridBagConstraints());
|
||||
//
|
||||
f_queryTicket = new QueryTicket(this);
|
||||
add (f_queryTicket, f_queryTicket.getGridBagConstraints());
|
||||
//
|
||||
f_cashfunctions = new CashSubFunctions(this);
|
||||
add (f_cashfunctions, f_cashfunctions.getGridBagConstraints());
|
||||
|
||||
newOrder();
|
||||
return true;
|
||||
} // dynInit
|
||||
|
@ -316,11 +339,19 @@ public class PosPanel extends CPanel
|
|||
*/
|
||||
public void openQuery (CPanel panel)
|
||||
{
|
||||
if (panel.equals(f_cashfunctions))
|
||||
{
|
||||
f_bpartner.setVisible(false);
|
||||
f_salesRep.setVisible(false);
|
||||
f_curLine.setVisible(false);
|
||||
f_product.setVisible(false);
|
||||
}
|
||||
f_checkout.setVisible(false);
|
||||
f_basicKeys.setVisible(false);
|
||||
// f_basicKeys.setVisible(false); removed by ConSerTi upon not appreciating its functionality
|
||||
f_lines.setVisible(false);
|
||||
f_functionKeys.setVisible(false);
|
||||
panel.setVisible(true);
|
||||
|
||||
} // closeQuery
|
||||
|
||||
/**
|
||||
|
@ -330,10 +361,14 @@ public class PosPanel extends CPanel
|
|||
public void closeQuery (CPanel panel)
|
||||
{
|
||||
panel.setVisible(false);
|
||||
f_checkout.setVisible(true);
|
||||
f_basicKeys.setVisible(true);
|
||||
f_bpartner.setVisible(true);
|
||||
f_salesRep.setVisible(true);
|
||||
f_curLine.setVisible(true);
|
||||
f_product.setVisible(true);
|
||||
// f_basicKeys.setVisible(true); removed by ConSerTi upon not appreciating its functionality
|
||||
f_lines.setVisible(true);
|
||||
f_functionKeys.setVisible(true);
|
||||
f_checkout.setVisible(true);
|
||||
} // closeQuery
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -347,14 +382,44 @@ public class PosPanel extends CPanel
|
|||
|
||||
/**
|
||||
* New Order
|
||||
*
|
||||
*/
|
||||
public void newOrder()
|
||||
{
|
||||
log.info( "PosPabel.newOrder");
|
||||
f_bpartner.setC_BPartner_ID(0);
|
||||
f_curLine.newOrder();
|
||||
f_curLine.newLine();
|
||||
f_product.f_name.requestFocus();
|
||||
updateInfo();
|
||||
} // newOrder
|
||||
|
||||
/**
|
||||
* Get the number of the window for the function calls that it needs
|
||||
*
|
||||
* @return the window number
|
||||
*/
|
||||
public int getWindowNo()
|
||||
{
|
||||
return m_WindowNo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the properties for the process calls that it needs
|
||||
*
|
||||
* @return las Propiedades m_ctx
|
||||
*/
|
||||
public Properties getPropiedades()
|
||||
{
|
||||
return m_ctx;
|
||||
}
|
||||
|
||||
public void updateInfo()
|
||||
{
|
||||
if (f_lines != null)
|
||||
f_lines.updateTable(f_curLine.getOrder());
|
||||
if (f_checkout != null)
|
||||
f_checkout.displayReturn();
|
||||
}
|
||||
} // PosPanel
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,27 +10,29 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.util.*;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.apps.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
/**
|
||||
* POS Sub Panel Base Class.
|
||||
* The Panel knows where to position itself in the POS Panel
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: PosSubPanel.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: PosSubPanel.java,v 1.3 2004/07/12 04:10:04 jjanke Exp $
|
||||
*/
|
||||
public abstract class PosSubPanel extends CPanel
|
||||
implements ActionListener
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,28 +10,30 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.*;
|
||||
import javax.swing.event.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.apps.*;
|
||||
import org.compiere.minigrid.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
/**
|
||||
* POS Query BPartner
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: QueryBPartner.java,v 1.2 2006/07/30 00:51:26 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: QueryBPartner.java,v 1.1 2004/07/12 04:10:04 jjanke Exp $
|
||||
*/
|
||||
public class QueryBPartner extends PosSubPanel
|
||||
implements ActionListener, MouseListener, ListSelectionListener
|
||||
|
@ -72,7 +74,8 @@ public class QueryBPartner extends PosSubPanel
|
|||
new ColumnInfo(" ", "C_BPartner_ID", IDColumn.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Value"), "Value", String.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Name"), "Name", String.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Contact"), "Contact", String.class),
|
||||
//TODO: contact column have been remove from rv_bpartner
|
||||
//new ColumnInfo(Msg.translate(Env.getCtx(), "Contact"), "Contact", String.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Email"), "Email", String.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Phone"), "Phone", String.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Postal"), "Postal", String.class),
|
||||
|
@ -238,7 +241,7 @@ public class QueryBPartner extends PosSubPanel
|
|||
{
|
||||
setResults(MBPartnerInfo.find (p_ctx,
|
||||
f_value.getText(), f_name.getText(),
|
||||
f_contact.getText(), f_email.getText(),
|
||||
null, f_email.getText(),
|
||||
f_phone.getText(), f_city.getText()));
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,29 +10,31 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.math.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.*;
|
||||
import javax.swing.event.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.apps.*;
|
||||
import org.compiere.minigrid.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
/**
|
||||
* POS Query Product
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: QueryProduct.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: QueryProduct.java,v 1.1 2004/07/12 04:10:04 jjanke Exp $
|
||||
*/
|
||||
public class QueryProduct extends PosSubPanel
|
||||
implements ActionListener, MouseListener, ListSelectionListener
|
||||
|
|
|
@ -0,0 +1,356 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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. *
|
||||
*****************************************************************************/
|
||||
|
||||
package org.compiere.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.math.*;
|
||||
import java.sql.*;
|
||||
import java.util.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.*;
|
||||
import javax.swing.event.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.apps.*;
|
||||
import org.compiere.grid.ed.*;
|
||||
import org.compiere.minigrid.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
/**
|
||||
* POS Query Product
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Jose A.Gonzalez, Conserti.
|
||||
*
|
||||
* @version $Id: QueryTicket.java,v 0.9 $
|
||||
*
|
||||
* @Colaborador $Id: Consultoria y Soporte en Redes y Tecnologias de la Informacion S.L.
|
||||
*
|
||||
*/
|
||||
|
||||
public class QueryTicket extends PosSubPanel
|
||||
implements ActionListener, MouseListener, ListSelectionListener
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public QueryTicket (PosPanel posPanel)
|
||||
{
|
||||
super(posPanel);
|
||||
} // PosQueryProduct
|
||||
|
||||
/** The Table */
|
||||
private MiniTable m_table;
|
||||
|
||||
private CPanel northPanel;
|
||||
private CScrollPane centerScroll;
|
||||
private ConfirmPanel confirm;
|
||||
|
||||
private CTextField f_c_order_id;
|
||||
private CTextField f_documentno;
|
||||
private VDate f_date;
|
||||
|
||||
private CButton f_up;
|
||||
private CButton f_down;
|
||||
|
||||
private int m_c_order_id;
|
||||
|
||||
/** Logger */
|
||||
private static CLogger log = CLogger.getCLogger(QueryProduct.class);
|
||||
|
||||
/** Table Column Layout Info */
|
||||
private static ColumnInfo[] s_layout = new ColumnInfo[]
|
||||
{
|
||||
new ColumnInfo(" ", "C_Order_ID", IDColumn.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "DocumentNo"), "DocumentNo", String.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "TotalLines"), "TotalLines", BigDecimal.class),
|
||||
new ColumnInfo(Msg.translate(Env.getCtx(), "GrandTotal"), "GrandTotal", BigDecimal.class)
|
||||
};
|
||||
|
||||
/**
|
||||
* Set up Panel
|
||||
*/
|
||||
protected void init()
|
||||
{
|
||||
setLayout(new BorderLayout(5,5));
|
||||
setVisible(false);
|
||||
// North
|
||||
northPanel = new CPanel(new GridBagLayout());
|
||||
add (northPanel, BorderLayout.NORTH);
|
||||
northPanel.setBorder(new TitledBorder(Msg.getMsg(p_ctx, "Query")));
|
||||
GridBagConstraints gbc = new GridBagConstraints();
|
||||
gbc.insets = PosSubPanel.INSETS2;
|
||||
//
|
||||
gbc.gridy = 0;
|
||||
gbc.gridx = GridBagConstraints.RELATIVE;
|
||||
CLabel lorder_id = new CLabel(Msg.translate(p_ctx, "C_Order_ID"));
|
||||
gbc.anchor = GridBagConstraints.EAST;
|
||||
northPanel.add (lorder_id, gbc);
|
||||
f_c_order_id = new CTextField(20);
|
||||
lorder_id.setLabelFor(f_c_order_id);
|
||||
gbc.anchor = GridBagConstraints.WEST;
|
||||
northPanel.add(f_c_order_id, gbc);
|
||||
f_c_order_id.addActionListener(this);
|
||||
//
|
||||
CLabel ldoc = new CLabel(Msg.translate(p_ctx, "DocumentNo"));
|
||||
gbc.anchor = GridBagConstraints.EAST;
|
||||
northPanel.add (ldoc, gbc);
|
||||
f_documentno = new CTextField(15);
|
||||
ldoc.setLabelFor(f_documentno);
|
||||
gbc.anchor = GridBagConstraints.WEST;
|
||||
northPanel.add(f_documentno, gbc);
|
||||
f_documentno.addActionListener(this);
|
||||
//
|
||||
gbc.gridy = 1;
|
||||
CLabel ldate = new CLabel(Msg.translate(p_ctx, "DateOrdered"));
|
||||
gbc.anchor = GridBagConstraints.EAST;
|
||||
northPanel.add (ldate, gbc);
|
||||
f_date = new VDate();
|
||||
f_date.setValue(Env.getContextAsDate(Env.getCtx(), "#Date"));
|
||||
ldate.setLabelFor(f_date);
|
||||
gbc.anchor = GridBagConstraints.WEST;
|
||||
northPanel.add(f_date, gbc);
|
||||
f_date.addActionListener(this);
|
||||
//
|
||||
gbc.gridy = 0;
|
||||
gbc.gridheight = 2;
|
||||
gbc.anchor = GridBagConstraints.EAST;
|
||||
gbc.weightx = .1;
|
||||
f_up = createButtonAction("Previous", KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0));
|
||||
northPanel.add(f_up, gbc);
|
||||
gbc.weightx = 0;
|
||||
f_down = createButtonAction("Next", KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0));
|
||||
northPanel.add(f_down, gbc);
|
||||
|
||||
// Confirm
|
||||
confirm = new ConfirmPanel (true, true, true, false, false, false, false);
|
||||
add (confirm, BorderLayout.SOUTH);
|
||||
confirm.addActionListener(this);
|
||||
|
||||
// Center
|
||||
m_table = new MiniTable();
|
||||
|
||||
String sql = m_table.prepareTable (s_layout, "C_Order",
|
||||
"C_DocTypeTarget_ID" + p_pos.getC_DocType_ID()
|
||||
, false, "C_Order")
|
||||
+ " ORDER BY Margin, QtyAvailable";
|
||||
m_table.setRowSelectionAllowed(true);
|
||||
m_table.setColumnSelectionAllowed(false);
|
||||
m_table.setMultiSelection(false);
|
||||
m_table.addMouseListener(this);
|
||||
m_table.getSelectionModel().addListSelectionListener(this);
|
||||
enableButtons();
|
||||
centerScroll = new CScrollPane(m_table);
|
||||
add (centerScroll, BorderLayout.CENTER);
|
||||
} // init
|
||||
|
||||
|
||||
/**
|
||||
* Get GridBagConstraints
|
||||
* @return constraints
|
||||
*/
|
||||
protected GridBagConstraints getGridBagConstraints ()
|
||||
{
|
||||
GridBagConstraints gbc = super.getGridBagConstraints();
|
||||
gbc.gridx = 0;
|
||||
gbc.gridy = GridBagConstraints.RELATIVE;
|
||||
gbc.gridwidth = 2; // GridBagConstraints.REMAINDER;
|
||||
gbc.fill = GridBagConstraints.BOTH;
|
||||
gbc.weightx = 0.1;
|
||||
gbc.weighty = 0.5;
|
||||
return gbc;
|
||||
} // getGridBagConstraints
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
removeAll();
|
||||
northPanel = null;
|
||||
centerScroll = null;
|
||||
confirm = null;
|
||||
m_table = null;
|
||||
} // dispose
|
||||
|
||||
/**
|
||||
* Set Visible
|
||||
* @param aFlag visible
|
||||
*/
|
||||
public void setVisible (boolean aFlag)
|
||||
{
|
||||
super.setVisible (aFlag);
|
||||
if (aFlag)
|
||||
f_c_order_id.requestFocus();
|
||||
} // setVisible
|
||||
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* @param e event
|
||||
*/
|
||||
public void actionPerformed (ActionEvent e)
|
||||
{
|
||||
log.info("PosQueryProduct.actionPerformed - " + e.getActionCommand());
|
||||
if ("Refresh".equals(e.getActionCommand())
|
||||
|| e.getSource() == f_c_order_id || e.getSource() == f_documentno
|
||||
|| e.getSource() == f_date)
|
||||
{
|
||||
setResults(p_ctx, f_c_order_id.getText(), f_documentno.getText(), f_date.getTimestamp());
|
||||
return;
|
||||
}
|
||||
else if ("Reset".equals(e.getActionCommand()))
|
||||
{
|
||||
reset();
|
||||
return;
|
||||
}
|
||||
else if ("Previous".equalsIgnoreCase(e.getActionCommand()))
|
||||
{
|
||||
int rows = m_table.getRowCount();
|
||||
if (rows == 0)
|
||||
return;
|
||||
int row = m_table.getSelectedRow();
|
||||
row--;
|
||||
if (row < 0)
|
||||
row = 0;
|
||||
m_table.getSelectionModel().setSelectionInterval(row, row);
|
||||
return;
|
||||
}
|
||||
else if ("Next".equalsIgnoreCase(e.getActionCommand()))
|
||||
{
|
||||
int rows = m_table.getRowCount();
|
||||
if (rows == 0)
|
||||
return;
|
||||
int row = m_table.getSelectedRow();
|
||||
row++;
|
||||
if (row >= rows)
|
||||
row = rows - 1;
|
||||
m_table.getSelectionModel().setSelectionInterval(row, row);
|
||||
return;
|
||||
}
|
||||
// Exit
|
||||
close();
|
||||
} // actionPerformed
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public void reset()
|
||||
{
|
||||
f_c_order_id.setText(null);
|
||||
f_documentno.setText(null);
|
||||
f_date.setValue(Env.getContextAsDate(Env.getCtx(), "#Date"));
|
||||
setResults(p_ctx, f_c_order_id.getText(), f_documentno.getText(), f_date.getTimestamp());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set/display Results
|
||||
* @param results results
|
||||
*/
|
||||
public void setResults (Properties ctx, String id, String doc, Timestamp date)
|
||||
{
|
||||
String sql = "";
|
||||
try
|
||||
{
|
||||
sql = "SELECT o.C_Order_ID, o.DocumentNo, o.TotalLines, o.GrandTotal FROM C_Order o WHERE o.C_DocTypeTarget_ID = " + p_pos.getC_DocType_ID();
|
||||
if (id != null && !id.equalsIgnoreCase(""))
|
||||
sql += " AND o.C_Order_ID = " + id;
|
||||
if (doc != null && !doc.equalsIgnoreCase(""))
|
||||
sql += " AND o.DocumentNo = '" + doc + "'";
|
||||
sql += " AND o.DateOrdered = ?";
|
||||
|
||||
PreparedStatement pstm = DB.prepareStatement(sql, null);
|
||||
pstm.setTimestamp(1, date);
|
||||
ResultSet rs = pstm.executeQuery();
|
||||
m_table.loadTable(rs);
|
||||
enableButtons();
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
log.severe("QueryTicket.setResults: " + e + " -> " + sql);
|
||||
}
|
||||
} // setResults
|
||||
|
||||
/**
|
||||
* Table selection changed
|
||||
* @param e event
|
||||
*/
|
||||
public void valueChanged (ListSelectionEvent e)
|
||||
{
|
||||
if (e.getValueIsAdjusting())
|
||||
return;
|
||||
enableButtons();
|
||||
} // valueChanged
|
||||
|
||||
/**
|
||||
* Enable/Set Buttons and set ID
|
||||
*/
|
||||
private void enableButtons()
|
||||
{
|
||||
m_c_order_id = -1;
|
||||
int row = m_table.getSelectedRow();
|
||||
boolean enabled = row != -1;
|
||||
if (enabled)
|
||||
{
|
||||
Integer ID = m_table.getSelectedRowKey();
|
||||
if (ID != null)
|
||||
{
|
||||
m_c_order_id = ID.intValue();
|
||||
}
|
||||
}
|
||||
confirm.getOKButton().setEnabled(enabled);
|
||||
log.info("ID=" + m_c_order_id);
|
||||
} // enableButtons
|
||||
|
||||
/**
|
||||
* Mouse Clicked
|
||||
* @param e event
|
||||
*/
|
||||
public void mouseClicked(MouseEvent e)
|
||||
{
|
||||
// Double click with selected row => exit
|
||||
if (e.getClickCount() > 1 && m_table.getSelectedRow() != -1)
|
||||
{
|
||||
enableButtons();
|
||||
close();
|
||||
}
|
||||
} // mouseClicked
|
||||
|
||||
public void mouseEntered (MouseEvent e) {}
|
||||
public void mouseExited (MouseEvent e) {}
|
||||
public void mousePressed (MouseEvent e) {}
|
||||
public void mouseReleased (MouseEvent e) {}
|
||||
|
||||
/**
|
||||
* Close.
|
||||
* Set Values on other panels and close
|
||||
*/
|
||||
private void close()
|
||||
{
|
||||
log.info("C_Order_ID=" + m_c_order_id);
|
||||
|
||||
if (m_c_order_id > 0)
|
||||
{
|
||||
p_posPanel.f_curLine.setOldOrder(m_c_order_id);
|
||||
}
|
||||
p_posPanel.closeQuery(this);
|
||||
} // close
|
||||
|
||||
} // PosQueryProduct
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,27 +10,29 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.util.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.*;
|
||||
import org.compiere.model.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* POS Customer Sub Panel
|
||||
* Customer Sub Panel
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: SubBPartner.java,v 1.2 2006/07/30 00:51:26 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: SubBPartner.java,v 1.1 2004/07/12 04:10:04 jjanke Exp $
|
||||
*/
|
||||
public class SubBPartner extends PosSubPanel
|
||||
implements ActionListener, FocusListener
|
||||
|
@ -165,6 +167,8 @@ public class SubBPartner extends PosSubPanel
|
|||
// Name
|
||||
else if (e.getSource() == f_name)
|
||||
findBPartner();
|
||||
|
||||
p_posPanel.updateInfo();
|
||||
} // actionPerformed
|
||||
|
||||
/**
|
||||
|
@ -224,8 +228,9 @@ public class SubBPartner extends PosSubPanel
|
|||
String Phone = (noNumber ? null : query);
|
||||
String City = null;
|
||||
//
|
||||
//TODO: contact have been remove from rv_bpartner
|
||||
MBPartnerInfo[] results = MBPartnerInfo.find(p_ctx, Value, Name,
|
||||
Contact, EMail, Phone, City);
|
||||
/*Contact, */null, EMail, Phone, City);
|
||||
|
||||
// Set Result
|
||||
if (results.length == 0)
|
||||
|
@ -276,6 +281,7 @@ public class SubBPartner extends PosSubPanel
|
|||
m_M_PriceList_Version_ID = 0;
|
||||
getM_PriceList_Version_ID();
|
||||
fillCombos();
|
||||
p_posPanel.f_curLine.setBPartner(); //added by ConSerTi to update the client in the request
|
||||
} // setC_BPartner_ID
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,15 +10,15 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
||||
import javax.swing.border.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
|
@ -26,8 +26,10 @@ import org.compiere.util.*;
|
|||
/**
|
||||
* Basic Key Sub Panel
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: SubBasicKeys.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: SubBasicKeys.java,v 1.1 2004/07/12 04:10:04 jjanke Exp $
|
||||
*/
|
||||
public class SubBasicKeys extends PosSubPanel implements ActionListener
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,25 +10,31 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import javax.swing.border.*;
|
||||
import org.compiere.grid.ed.*;
|
||||
import java.io.*;
|
||||
import java.math.*;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.swing.border.TitledBorder;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.grid.ed.VNumber;
|
||||
import org.compiere.model.MOrder;
|
||||
import org.compiere.process.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* POS Checkout Sub Panel
|
||||
* Checkout Sub Panel
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: SubCheckout.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: SubCheckout.java,v 1.1 2004/07/12 04:10:04 jjanke Exp $
|
||||
*/
|
||||
public class SubCheckout extends PosSubPanel implements ActionListener
|
||||
{
|
||||
|
@ -46,19 +52,22 @@ public class SubCheckout extends PosSubPanel implements ActionListener
|
|||
private CButton f_process = null;
|
||||
private CButton f_print = null;
|
||||
|
||||
private CLabel f_lcreditCardNumber = null;
|
||||
//TODO: credit card
|
||||
/* private CLabel f_lcreditCardNumber = null;
|
||||
private CTextField f_creditCardNumber = null;
|
||||
private CLabel f_lcreditCardExp = null;
|
||||
private CTextField f_creditCardExp = null;
|
||||
private CLabel f_lcreditCardVV = null;
|
||||
private CTextField f_creditCardVV = null;
|
||||
private CButton f_cashPayment = null;
|
||||
|
||||
private CLabel f_lcashGiven = null;
|
||||
private VNumber f_cashGiven = null;
|
||||
private CLabel f_lcashReturn = null;
|
||||
private VNumber f_cashReturn = null;
|
||||
private CButton f_creditPayment = null;
|
||||
*/
|
||||
private CLabel f_lcashGiven = null;
|
||||
private VNumber f_cashGiven;
|
||||
private CLabel f_lcashReturn = null;
|
||||
private VNumber f_cashReturn;
|
||||
private CButton f_cashPayment = null;
|
||||
|
||||
private CButton f_cashRegisterFunctions;
|
||||
/** Logger */
|
||||
private static CLogger log = CLogger.getCLogger(SubCheckout.class);
|
||||
|
||||
|
@ -84,14 +93,17 @@ public class SubCheckout extends PosSubPanel implements ActionListener
|
|||
//
|
||||
f_summary = createButtonAction("Summary", null);
|
||||
gbc.gridy = 1;
|
||||
gbc.gridheight = 1;
|
||||
add (f_summary, gbc);
|
||||
//
|
||||
f_process = createButtonAction("Process", null);
|
||||
gbc.gridy = 2;
|
||||
gbc.gridheight = 1;
|
||||
add (f_process, gbc);
|
||||
//
|
||||
f_print = createButtonAction("Print", null);
|
||||
gbc.gridy = 3;
|
||||
gbc.gridheight =1;
|
||||
add (f_print, gbc);
|
||||
|
||||
// -- 1 -- Cash
|
||||
|
@ -101,7 +113,7 @@ public class SubCheckout extends PosSubPanel implements ActionListener
|
|||
gbc.weightx = .1;
|
||||
CPanel cash = new CPanel(new GridBagLayout());
|
||||
cash.setBorder(new TitledBorder(Msg.getMsg(Env.getCtx(), "Cash")));
|
||||
gbc.gridy = 0;
|
||||
gbc.gridy = 1;
|
||||
add (cash, gbc);
|
||||
GridBagConstraints gbc0 = new GridBagConstraints();
|
||||
gbc0.insets = INSETS2;
|
||||
|
@ -114,6 +126,7 @@ public class SubCheckout extends PosSubPanel implements ActionListener
|
|||
f_cashGiven.setColumns(10, 25);
|
||||
cash.add (f_cashGiven, gbc0);
|
||||
f_cashGiven.setValue(Env.ZERO);
|
||||
f_cashGiven.addActionListener(this); //para que actualice el cambio con el dinero entregado
|
||||
//
|
||||
f_lcashReturn = new CLabel(Msg.getMsg(Env.getCtx(),"CashReturn"));
|
||||
cash.add (f_lcashReturn, gbc0);
|
||||
|
@ -122,14 +135,31 @@ public class SubCheckout extends PosSubPanel implements ActionListener
|
|||
f_cashReturn.setColumns(10, 25);
|
||||
cash.add (f_cashReturn, gbc0);
|
||||
f_cashReturn.setValue(Env.ZERO);
|
||||
//
|
||||
f_cashPayment = createButtonAction("Payment", null);
|
||||
f_cashPayment.setActionCommand("Cash");
|
||||
gbc0.anchor = GridBagConstraints.EAST;
|
||||
gbc0.weightx = 0.1;
|
||||
cash.add (f_cashPayment, gbc0);
|
||||
|
||||
gbc0.weightx = 0.1;
|
||||
cash.add (f_cashPayment, gbc0);
|
||||
|
||||
gbc.gridx=1;
|
||||
gbc.gridy=3;
|
||||
gbc.gridheight=1;
|
||||
CPanel caja = new CPanel();
|
||||
add(caja,gbc);
|
||||
caja.setPreferredSize(new Dimension(30,30));
|
||||
f_cashRegisterFunctions = createButtonAction("CashRegisterFunction", null);
|
||||
f_cashRegisterFunctions.setText("Cash Register\n Movements");
|
||||
f_cashRegisterFunctions.setPreferredSize(new Dimension(160,30));
|
||||
f_cashRegisterFunctions.setMaximumSize(new Dimension(160,30));
|
||||
f_cashRegisterFunctions.setMinimumSize(new Dimension(160,30));
|
||||
caja.add(f_cashRegisterFunctions);
|
||||
|
||||
|
||||
|
||||
//TODO: Credit card
|
||||
/* Panel para la introducción de los datos de CreditCard para el pago quitada por ConSerTi al no considerar
|
||||
* que sea útil de momento
|
||||
|
||||
// -- 1 -- Creditcard
|
||||
CPanel creditcard = new CPanel(new GridBagLayout());
|
||||
creditcard.setBorder(new TitledBorder(Msg.translate(Env.getCtx(), "CreditCardType")));
|
||||
|
@ -170,6 +200,7 @@ public class SubCheckout extends PosSubPanel implements ActionListener
|
|||
gbc1.weightx = 0.1;
|
||||
creditcard.add (f_creditPayment, gbc1);
|
||||
|
||||
**/ //fin del comentario para quitar la parte del CreditCard
|
||||
} // init
|
||||
|
||||
/**
|
||||
|
@ -198,15 +229,208 @@ public class SubCheckout extends PosSubPanel implements ActionListener
|
|||
*/
|
||||
public void actionPerformed (ActionEvent e)
|
||||
{
|
||||
String action = e.getActionCommand();
|
||||
String action = e.getActionCommand();
|
||||
if (action == null || action.length() == 0)
|
||||
return;
|
||||
log.info( "PosSubCheckout - actionPerformed: " + action);
|
||||
|
||||
// Register
|
||||
if (action.equals("Register"))
|
||||
{
|
||||
p_posPanel.f_queryTicket.reset();
|
||||
p_posPanel.openQuery(p_posPanel.f_queryTicket);
|
||||
}
|
||||
// Summary
|
||||
else
|
||||
if (action.equals("Summary"))
|
||||
{
|
||||
//TODO: new field added by openxpertya to c_order
|
||||
//p_posPanel.f_status.setStatusLine(p_posPanel.f_curLine.getOrder().getResumen());
|
||||
displayReturn();
|
||||
}
|
||||
else if (action.equals("Process"))
|
||||
{
|
||||
if (isOrderFullyPay())
|
||||
{
|
||||
printTicket();
|
||||
processOrder();
|
||||
openCashDrawer();
|
||||
}
|
||||
}
|
||||
// Print
|
||||
else if (action.equals("Print"))
|
||||
{
|
||||
if (isOrderFullyPay())
|
||||
{
|
||||
printTicket();
|
||||
openCashDrawer();
|
||||
}
|
||||
}
|
||||
// Cash (Payment)
|
||||
// CreditCard (Payment)
|
||||
else if (action.equals("Cash"))
|
||||
{
|
||||
displayReturn();
|
||||
openCashDrawer();
|
||||
}
|
||||
else if (action.equals("CashRegisterFunction"))
|
||||
{
|
||||
p_posPanel.openQuery(p_posPanel.f_cashfunctions);
|
||||
}
|
||||
else if (e.getSource() == f_cashGiven)
|
||||
displayReturn();
|
||||
|
||||
/* // CreditCard (Payment)
|
||||
else if (action.equals("CreditCard"))
|
||||
{
|
||||
Log.print("CreditCard");
|
||||
} fin del comentario para la Credit Card*/
|
||||
|
||||
f_cashGiven.setValue(Env.ZERO);
|
||||
p_posPanel.updateInfo();
|
||||
} // actionPerformed
|
||||
|
||||
/**
|
||||
* Process Order
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
public void processOrder()
|
||||
{
|
||||
|
||||
MOrder order = p_posPanel.f_curLine.getOrder();
|
||||
if (order != null)
|
||||
if (order.getDocStatus().equals("DR"))
|
||||
{
|
||||
order.setDocAction(DocAction.ACTION_Complete);
|
||||
order.processIt(DocAction.ACTION_Complete);
|
||||
order.save();
|
||||
|
||||
order = null;
|
||||
p_posPanel.newOrder();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print Ticket
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
public void printTicket()
|
||||
{
|
||||
MOrder order = p_posPanel.f_curLine.getOrder();
|
||||
int ventana = p_posPanel.getWindowNo();
|
||||
Properties m_ctx = p_posPanel.getPropiedades();
|
||||
|
||||
if (order != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
//TODO: to incorporate jpos work from Posterita
|
||||
/*
|
||||
if (p_pos.getAD_PrintLabel_ID() != 0)
|
||||
PrintLabel.printLabelTicket(order.getC_Order_ID(), p_pos.getAD_PrintLabel_ID());
|
||||
*/
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.severe("PrintTicket - Error Printing Ticket");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display cash return
|
||||
* Display the difference between tender amount and bill amount
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
public void displayReturn()
|
||||
{
|
||||
BigDecimal given = new BigDecimal(f_cashGiven.getValue().toString());
|
||||
if (p_posPanel != null && p_posPanel.f_curLine != null)
|
||||
{
|
||||
MOrder order = p_posPanel.f_curLine.getOrder();
|
||||
BigDecimal total = new BigDecimal(0);
|
||||
if (order != null)
|
||||
total = order.getGrandTotal();
|
||||
double vuelta = given.doubleValue() - total.doubleValue();
|
||||
f_cashReturn.setValue(new BigDecimal(vuelta));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is order fully pay ?
|
||||
* Calculates if the given money is sufficient to pay the order
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
public boolean isOrderFullyPay()
|
||||
{
|
||||
BigDecimal given = new BigDecimal(f_cashGiven.getValue().toString());
|
||||
boolean paid = false;
|
||||
if (p_posPanel != null && p_posPanel.f_curLine != null)
|
||||
{
|
||||
MOrder order = p_posPanel.f_curLine.getOrder();
|
||||
BigDecimal total = new BigDecimal(0);
|
||||
if (order != null)
|
||||
total = order.getGrandTotal();
|
||||
paid = given.doubleValue() >= total.doubleValue();
|
||||
}
|
||||
return paid;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Abrir caja
|
||||
* Abre la caja registradora
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
public void openCashDrawer()
|
||||
{
|
||||
String puerto = null;
|
||||
//TODO - to incorporate jpos work from Posterita
|
||||
/*
|
||||
try
|
||||
{
|
||||
String sql = "SELECT p.Port"
|
||||
+ " FROM AD_PrintLabel l"
|
||||
+ " INNER JOIN AD_LabelPrinter p ON (l.AD_LabelPrinter_ID=p.AD_LabelPrinter_ID)"
|
||||
+ " WHERE l.AD_PrintLabel_ID=?";
|
||||
puerto = DB.getSQLValueString(null, sql, p_pos.getAD_PrintLabel_ID());
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
log.severe("AbrirCaja - Puerto no encontrado");
|
||||
}*/
|
||||
|
||||
/*
|
||||
if (puerto == null)
|
||||
log.severe("Port is mandatory for cash drawner");
|
||||
|
||||
try
|
||||
{
|
||||
byte data[] = new byte[5];
|
||||
data[0] = 27;
|
||||
data[1] = 112;
|
||||
data[2] = 0;
|
||||
data[3] = 50;
|
||||
data[4] = 50;
|
||||
FileOutputStream fos = new FileOutputStream(puerto);
|
||||
BufferedOutputStream bos = new BufferedOutputStream(fos);
|
||||
bos.write(data, 0, data.length);
|
||||
bos.close();
|
||||
fos.close();
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}*/
|
||||
}
|
||||
} // PosSubCheckout
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,143 +10,148 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.math.*;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.grid.ed.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.swing.*;
|
||||
import java.util.logging.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* POS Current Line Sub Panel
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: SubCurrentLine.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
|
||||
* Current Line Sub Panel
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: SubCurrentLine.java,v 1.3 2004/07/24 04:31:52 jjanke Exp $
|
||||
*/
|
||||
public class SubCurrentLine extends PosSubPanel implements ActionListener
|
||||
{
|
||||
public class SubCurrentLine extends PosSubPanel implements ActionListener {
|
||||
/**
|
||||
* Constructor
|
||||
* @param posPanel POS Panel
|
||||
* Constructor
|
||||
*
|
||||
* @param posPanel
|
||||
* POS Panel
|
||||
*/
|
||||
public SubCurrentLine (PosPanel posPanel)
|
||||
{
|
||||
super (posPanel);
|
||||
} // PosSubCurrentLine
|
||||
|
||||
public SubCurrentLine(PosPanel posPanel) {
|
||||
super(posPanel);
|
||||
} // PosSubCurrentLine
|
||||
|
||||
private CButton f_new;
|
||||
|
||||
private CButton f_reset;
|
||||
|
||||
private CButton f_plus;
|
||||
|
||||
private CButton f_minus;
|
||||
|
||||
private CLabel f_currency;
|
||||
private VNumber f_price;
|
||||
private CLabel f_uom;
|
||||
private VNumber f_quantity;
|
||||
|
||||
private MOrder m_order = null;
|
||||
|
||||
private CLabel f_currency;
|
||||
|
||||
private VNumber f_price;
|
||||
|
||||
private CLabel f_uom;
|
||||
|
||||
private VNumber f_quantity;
|
||||
|
||||
private MOrder m_order = null;
|
||||
/** Logger */
|
||||
private static CLogger log = CLogger.getCLogger(SubCurrentLine.class);
|
||||
|
||||
/**
|
||||
* Initialize
|
||||
*/
|
||||
public void init()
|
||||
{
|
||||
* Initialize
|
||||
*/
|
||||
public void init() {
|
||||
// Title
|
||||
TitledBorder border = new TitledBorder(Msg.getMsg(Env.getCtx(), "CurrentLine"));
|
||||
TitledBorder border = new TitledBorder(Msg.getMsg(Env.getCtx(),
|
||||
"CurrentLine"));
|
||||
setBorder(border);
|
||||
|
||||
|
||||
// Content
|
||||
setLayout(new GridBagLayout());
|
||||
GridBagConstraints gbc = new GridBagConstraints();
|
||||
gbc.insets = INSETS2;
|
||||
gbc.gridy = 0;
|
||||
// --
|
||||
f_new = createButtonAction("New", KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, Event.SHIFT_MASK));
|
||||
f_new = createButtonAction("New", KeyStroke.getKeyStroke(
|
||||
KeyEvent.VK_INSERT, Event.SHIFT_MASK));
|
||||
gbc.gridx = 0;
|
||||
add (f_new, gbc);
|
||||
add(f_new, gbc);
|
||||
//
|
||||
f_reset = createButtonAction("Reset", null);
|
||||
gbc.gridx = GridBagConstraints.RELATIVE;
|
||||
add (f_reset, gbc);
|
||||
add(f_reset, gbc);
|
||||
//
|
||||
f_currency = new CLabel("---");
|
||||
gbc.anchor = GridBagConstraints.EAST;
|
||||
gbc.weightx = .1;
|
||||
gbc.fill = GridBagConstraints.HORIZONTAL;
|
||||
add (f_currency, gbc);
|
||||
add(f_currency, gbc);
|
||||
//
|
||||
f_price = new VNumber("PriceActual", false, false, true, DisplayType.Amount,
|
||||
Msg.translate(Env.getCtx(), "PriceActual"));
|
||||
f_price = new VNumber("PriceActual", false, false, true,
|
||||
DisplayType.Amount, Msg.translate(Env.getCtx(), "PriceActual"));
|
||||
f_price.addActionListener(this);
|
||||
f_price.setColumns(10, 25);
|
||||
gbc.anchor = GridBagConstraints.WEST;
|
||||
gbc.weightx = 0;
|
||||
gbc.fill = GridBagConstraints.NONE;
|
||||
add (f_price, gbc);
|
||||
add(f_price, gbc);
|
||||
setPrice(Env.ZERO);
|
||||
// --
|
||||
f_uom = new CLabel("--");
|
||||
gbc.anchor = GridBagConstraints.EAST;
|
||||
gbc.weightx = .1;
|
||||
gbc.fill = GridBagConstraints.HORIZONTAL;
|
||||
add (f_uom, gbc);
|
||||
add(f_uom, gbc);
|
||||
//
|
||||
f_minus = createButtonAction("Minus", null);
|
||||
gbc.anchor = GridBagConstraints.WEST;
|
||||
gbc.weightx = 0;
|
||||
gbc.fill = GridBagConstraints.NONE;
|
||||
add (f_minus, gbc);
|
||||
add(f_minus, gbc);
|
||||
//
|
||||
f_quantity = new VNumber("QtyOrdered", false, false, true, DisplayType.Quantity,
|
||||
Msg.translate(Env.getCtx(), "QtyOrdered"));
|
||||
f_quantity = new VNumber("QtyOrdered", false, false, true,
|
||||
DisplayType.Quantity, Msg.translate(Env.getCtx(), "QtyOrdered"));
|
||||
f_quantity.addActionListener(this);
|
||||
f_quantity.setColumns(5, 25);
|
||||
add (f_quantity, gbc);
|
||||
setQty (Env.ONE);
|
||||
add(f_quantity, gbc);
|
||||
setQty(Env.ONE);
|
||||
//
|
||||
f_plus = createButtonAction("Plus", null);
|
||||
add (f_plus, gbc);
|
||||
} // init
|
||||
add(f_plus, gbc);
|
||||
} // init
|
||||
|
||||
/**
|
||||
* Get Panel Position
|
||||
* Get Panel Position
|
||||
*/
|
||||
public GridBagConstraints getGridBagConstraints()
|
||||
{
|
||||
public GridBagConstraints getGridBagConstraints() {
|
||||
GridBagConstraints gbc = super.getGridBagConstraints();
|
||||
gbc.gridx = 0;
|
||||
gbc.gridy = 1;
|
||||
return gbc;
|
||||
} // getGridBagConstraints
|
||||
|
||||
/**
|
||||
* Dispose - Free Resources
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
super.dispose();
|
||||
} // dispose
|
||||
} // getGridBagConstraints
|
||||
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* @param e event
|
||||
* Dispose - Free Resources
|
||||
*/
|
||||
public void actionPerformed (ActionEvent e)
|
||||
{
|
||||
public void dispose() {
|
||||
super.dispose();
|
||||
} // dispose
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
*
|
||||
* @param e event
|
||||
*/
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
String action = e.getActionCommand();
|
||||
if (action == null || action.length() == 0)
|
||||
return;
|
||||
|
@ -167,97 +172,94 @@ public class SubCurrentLine extends PosSubPanel implements ActionListener
|
|||
f_price.setValue(f_price.getValue());
|
||||
else if (e.getSource() == f_quantity)
|
||||
f_quantity.setValue(f_quantity.getValue());
|
||||
} // actionPerformed
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Set Currency
|
||||
* @param currency currency
|
||||
p_posPanel.updateInfo();
|
||||
} // actionPerformed
|
||||
|
||||
/***************************************************************************
|
||||
* Set Currency
|
||||
*
|
||||
* @param currency
|
||||
* currency
|
||||
*/
|
||||
public void setCurrency (String currency)
|
||||
{
|
||||
public void setCurrency(String currency) {
|
||||
if (currency == null)
|
||||
f_currency.setText("---");
|
||||
else
|
||||
f_currency.setText(currency);
|
||||
} // setCurrency
|
||||
} // setCurrency
|
||||
|
||||
/**
|
||||
* Set UOM
|
||||
* @param UOM UOM
|
||||
* Set UOM
|
||||
*
|
||||
* @param UOM
|
||||
*/
|
||||
public void setUOM (String UOM)
|
||||
{
|
||||
public void setUOM(String UOM) {
|
||||
if (UOM == null)
|
||||
f_uom.setText("--");
|
||||
else
|
||||
f_uom.setText(UOM);
|
||||
} // setUOM
|
||||
|
||||
} // setUOM
|
||||
|
||||
/**
|
||||
* Set Price
|
||||
* @param price price
|
||||
* Set Price
|
||||
*
|
||||
* @param price
|
||||
*/
|
||||
public void setPrice (BigDecimal price)
|
||||
{
|
||||
public void setPrice(BigDecimal price) {
|
||||
if (price == null)
|
||||
price = Env.ZERO;
|
||||
f_price.setValue(price);
|
||||
boolean rw = Env.ZERO.compareTo(price) == 0
|
||||
|| p_pos.isModifyPrice();
|
||||
boolean rw = Env.ZERO.compareTo(price) == 0 || p_pos.isModifyPrice();
|
||||
f_price.setReadWrite(rw);
|
||||
} // setPrice
|
||||
} // setPrice
|
||||
|
||||
/**
|
||||
* Get Price
|
||||
* @return price
|
||||
* Get Price
|
||||
*
|
||||
* @return price
|
||||
*/
|
||||
public BigDecimal getPrice ()
|
||||
{
|
||||
return (BigDecimal)f_price.getValue();
|
||||
} // getPrice
|
||||
public BigDecimal getPrice() {
|
||||
return (BigDecimal) f_price.getValue();
|
||||
} // getPrice
|
||||
|
||||
/**
|
||||
* Set Qty
|
||||
* @param qty qty
|
||||
* Set Qty
|
||||
*
|
||||
* @param qty
|
||||
*/
|
||||
public void setQty (BigDecimal qty)
|
||||
{
|
||||
f_quantity.setValue(qty);
|
||||
} // setPrice
|
||||
public void setQty(BigDecimal price) {
|
||||
f_quantity.setValue(price);
|
||||
} // setPrice
|
||||
|
||||
/**
|
||||
* Get Qty
|
||||
* @return qty
|
||||
* Get Qty
|
||||
*
|
||||
* @return qty
|
||||
*/
|
||||
public BigDecimal getQty ()
|
||||
{
|
||||
return (BigDecimal)f_quantity.getValue();
|
||||
} // getPrice
|
||||
public BigDecimal getQty() {
|
||||
return (BigDecimal) f_quantity.getValue();
|
||||
} // getPrice
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* New Line
|
||||
/***************************************************************************
|
||||
* New Line
|
||||
*/
|
||||
public void newLine()
|
||||
{
|
||||
public void newLine() {
|
||||
p_posPanel.f_product.setM_Product_ID(0);
|
||||
setQty(Env.ONE);
|
||||
setPrice(Env.ZERO);
|
||||
p_posPanel.f_lines.updateTable(m_order);
|
||||
} // newLine
|
||||
|
||||
} // newLine
|
||||
|
||||
/**
|
||||
* Save Line
|
||||
* @return true if saved
|
||||
* Save Line
|
||||
*
|
||||
* @return true if saved
|
||||
*/
|
||||
public boolean saveLine()
|
||||
{
|
||||
MProduct product = p_posPanel.f_product.getProduct();
|
||||
public boolean saveLine() {
|
||||
MProduct product = p_posPanel.f_product.getProduct();
|
||||
if (product == null)
|
||||
return false;
|
||||
BigDecimal QtyOrdered = (BigDecimal)f_quantity.getValue();
|
||||
BigDecimal PriceActual = (BigDecimal)f_price.getValue();
|
||||
BigDecimal QtyOrdered = (BigDecimal) f_quantity.getValue();
|
||||
BigDecimal PriceActual = (BigDecimal) f_price.getValue();
|
||||
MOrderLine line = createLine(product, QtyOrdered, PriceActual);
|
||||
if (line == null)
|
||||
return false;
|
||||
|
@ -266,16 +268,98 @@ public class SubCurrentLine extends PosSubPanel implements ActionListener
|
|||
//
|
||||
newLine();
|
||||
return true;
|
||||
} // saveLine
|
||||
} // saveLine
|
||||
|
||||
/**
|
||||
* to erase the lines from order
|
||||
* @return true if deleted
|
||||
*/
|
||||
public void deleteLine (int row) {
|
||||
if (m_order != null & row != -1 )
|
||||
{
|
||||
MOrderLine[] lineas = m_order.getLines();
|
||||
int numLineas = lineas.length;
|
||||
if (numLineas > row)
|
||||
{
|
||||
//to unreserve
|
||||
lineas[row].setQty(Env.ZERO);
|
||||
lineas[row].setLineNetAmt(Env.ZERO);
|
||||
lineas[row].save();
|
||||
//TODO: openxpertya using private method from MOrder
|
||||
//m_order.reserveStock(null, lineas);
|
||||
|
||||
//delete line from order
|
||||
lineas[row].delete(true);
|
||||
for (int i = row; i < (numLineas - 1); i++)
|
||||
lineas[i] = lineas[i + 1];
|
||||
lineas[numLineas - 1] = null;
|
||||
}
|
||||
}
|
||||
} // deleteLine
|
||||
|
||||
/**
|
||||
* Get/create Header
|
||||
* @return header or null
|
||||
*/
|
||||
public MOrder getOrder()
|
||||
{
|
||||
if (m_order == null)
|
||||
* Delete order from database
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
public void deleteOrder () {
|
||||
if (m_order != null)
|
||||
{
|
||||
if (m_order.getDocStatus().equals("DR"))
|
||||
{
|
||||
MOrderLine[] lineas = m_order.getLines();
|
||||
if (lineas != null)
|
||||
{
|
||||
int numLineas = lineas.length;
|
||||
if (numLineas > 0)
|
||||
for (int i = numLineas - 1; i >= 0; i--)
|
||||
{
|
||||
if (lineas[i] != null)
|
||||
deleteLine(i);
|
||||
}
|
||||
}
|
||||
|
||||
MOrderTax[] taxs = m_order.getTaxes(true);
|
||||
if (taxs != null)
|
||||
{
|
||||
int numTax = taxs.length;
|
||||
if (numTax > 0)
|
||||
for (int i = taxs.length - 1; i >= 0; i--)
|
||||
{
|
||||
if (taxs[i] != null)
|
||||
taxs[i].delete(true);
|
||||
taxs[i] = null;
|
||||
}
|
||||
}
|
||||
|
||||
m_order.delete(true);
|
||||
m_order = null;
|
||||
}
|
||||
}
|
||||
} // deleteOrder
|
||||
|
||||
/**
|
||||
* Create new order
|
||||
*
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
public void newOrder()
|
||||
{
|
||||
m_order = null;
|
||||
m_order = getOrder();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get/create Header
|
||||
*
|
||||
* @return header or null
|
||||
*/
|
||||
public MOrder getOrder() {
|
||||
if (m_order == null) {
|
||||
m_order = new MOrder(Env.getCtx(), 0, null);
|
||||
m_order.setAD_Org_ID(p_pos.getAD_Org_ID());
|
||||
m_order.setIsSOTrx(true);
|
||||
|
@ -283,16 +367,17 @@ public class SubCurrentLine extends PosSubPanel implements ActionListener
|
|||
m_order.setC_DocTypeTarget_ID(p_pos.getC_DocType_ID());
|
||||
else
|
||||
m_order.setC_DocTypeTarget_ID(MOrder.DocSubTypeSO_POS);
|
||||
MBPartner partner = p_posPanel.f_bpartner.getBPartner();
|
||||
MBPartner partner = p_posPanel.f_bpartner.getBPartner();
|
||||
if (partner == null || partner.get_ID() == 0)
|
||||
partner = p_pos.getBPartner();
|
||||
if (partner == null || partner.get_ID() == 0)
|
||||
{
|
||||
if (partner == null || partner.get_ID() == 0) {
|
||||
log.log(Level.SEVERE, "SubCurrentLine.getOrder - no BPartner");
|
||||
|
||||
return null;
|
||||
}
|
||||
log.info( "SubCurrentLine.getOrder -" + partner);
|
||||
m_order.setBPartner(partner);
|
||||
p_posPanel.f_bpartner.setC_BPartner_ID(partner.getC_BPartner_ID());
|
||||
int id = p_posPanel.f_bpartner.getC_BPartner_Location_ID();
|
||||
if (id != 0)
|
||||
m_order.setC_BPartner_Location_ID(id);
|
||||
|
@ -304,28 +389,94 @@ public class SubCurrentLine extends PosSubPanel implements ActionListener
|
|||
m_order.setM_Warehouse_ID(p_pos.getM_Warehouse_ID());
|
||||
m_order.setSalesRep_ID(p_pos.getSalesRep_ID());
|
||||
if (!m_order.save())
|
||||
{
|
||||
m_order = null;
|
||||
log.severe("Unable create Order.");
|
||||
}
|
||||
}
|
||||
return m_order;
|
||||
} // getHeader
|
||||
|
||||
} // getHeader
|
||||
|
||||
/**
|
||||
* Create new Line
|
||||
* @return line or null
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © ConSerTi
|
||||
*/
|
||||
public MOrderLine createLine(MProduct product,
|
||||
BigDecimal QtyOrdered, BigDecimal PriceActual)
|
||||
public void setBPartner()
|
||||
{
|
||||
if (m_order != null)
|
||||
if (m_order.getDocStatus().equals("DR"))
|
||||
{
|
||||
MBPartner partner = p_posPanel.f_bpartner.getBPartner();
|
||||
//get default from mpos if no selection make
|
||||
if (partner == null || partner.get_ID() == 0)
|
||||
partner = p_pos.getBPartner();
|
||||
if (partner == null || partner.get_ID() == 0) {
|
||||
log.warning("SubCurrentLine.getOrder - no BPartner");
|
||||
}
|
||||
else
|
||||
{
|
||||
log.info("SubCurrentLine.getOrder -" + partner);
|
||||
m_order.setBPartner(partner);
|
||||
MOrderLine[] lineas = m_order.getLines();
|
||||
for (int i = 0; i < lineas.length; i++)
|
||||
{
|
||||
lineas[i].setC_BPartner_ID(partner.getC_BPartner_ID());
|
||||
lineas[i].setTax();
|
||||
lineas[i].save();
|
||||
}
|
||||
m_order.save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new Line
|
||||
*
|
||||
* @return line or null
|
||||
*/
|
||||
public MOrderLine createLine(MProduct product, BigDecimal QtyOrdered,
|
||||
BigDecimal PriceActual) {
|
||||
MOrder order = getOrder();
|
||||
if (order == null)
|
||||
return null;
|
||||
MOrderLine line = new MOrderLine (order);
|
||||
if (!order.getDocStatus().equals("DR"))
|
||||
return null;
|
||||
//add new line or increase qty
|
||||
MOrderLine[] lineas = order.getLines();
|
||||
int numLineas = lineas.length;
|
||||
for (int i = 0; i < numLineas; i++)
|
||||
{
|
||||
if (lineas[i].getM_Product_ID() == product.getM_Product_ID())
|
||||
{
|
||||
//increase qty
|
||||
double current = lineas[i].getQtyEntered().doubleValue();
|
||||
double toadd = QtyOrdered.doubleValue();
|
||||
double total = current + toadd;
|
||||
lineas[i].setQty(new BigDecimal(total));
|
||||
lineas[i].setPrice(); // sets List/limit
|
||||
lineas[i].save();
|
||||
return lineas[i];
|
||||
}
|
||||
}
|
||||
//create new line
|
||||
MOrderLine line = new MOrderLine(order);
|
||||
line.setProduct(product);
|
||||
line.setQty(QtyOrdered);
|
||||
line.setPrice(); // sets List/limit
|
||||
line.setPrice(); // sets List/limit
|
||||
line.setPrice(PriceActual);
|
||||
line.save();
|
||||
return line;
|
||||
} // getLine
|
||||
} // getLine
|
||||
|
||||
} // PosSubCurrentLine
|
||||
/**
|
||||
* @param m_c_order_id
|
||||
*/
|
||||
public void setOldOrder(int m_c_order_id)
|
||||
{
|
||||
deleteOrder();
|
||||
m_order = new MOrder(p_ctx , m_c_order_id, null);
|
||||
p_posPanel.updateInfo();
|
||||
}
|
||||
|
||||
} // PosSubCurrentLine
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,26 +10,28 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
||||
import javax.swing.border.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.print.*;
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* POS Function Key Sub Panel
|
||||
* Function Key Sub Panel
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: SubFunctionKeys.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: SubFunctionKeys.java,v 1.1 2004/07/12 04:10:04 jjanke Exp $
|
||||
*/
|
||||
public class SubFunctionKeys extends PosSubPanel implements ActionListener
|
||||
{
|
||||
|
@ -64,7 +66,7 @@ public class SubFunctionKeys extends PosSubPanel implements ActionListener
|
|||
return;
|
||||
|
||||
int COLUMNS = 3; // Min Columns
|
||||
int ROWS = 3; // Min Rows
|
||||
int ROWS = 6; // Min Rows
|
||||
m_keys = fKeys.getKeys(false);
|
||||
int noKeys = m_keys.length;
|
||||
int rows = Math.max (((noKeys-1) / COLUMNS) + 1, ROWS);
|
||||
|
@ -116,6 +118,7 @@ public class SubFunctionKeys extends PosSubPanel implements ActionListener
|
|||
GridBagConstraints gbc = super.getGridBagConstraints();
|
||||
gbc.gridx = 1;
|
||||
gbc.gridy = 2;
|
||||
gbc.gridheight = 2; //added by ConSerTi so that the panel takes up more space
|
||||
return gbc;
|
||||
} // getGridBagConstraints
|
||||
|
||||
|
@ -149,6 +152,7 @@ public class SubFunctionKeys extends PosSubPanel implements ActionListener
|
|||
p_posPanel.f_product.setPrice();
|
||||
p_posPanel.f_curLine.setQty(key.getQty());
|
||||
p_posPanel.f_curLine.saveLine();
|
||||
p_posPanel.updateInfo();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,31 +10,33 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.math.*;
|
||||
import java.sql.*;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.grid.ed.*;
|
||||
import org.compiere.minigrid.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.swing.*;
|
||||
import java.util.logging.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* POS All Lines Sub Panel
|
||||
* All Lines Sub Panel
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: SubLines.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: SubLines.java,v 1.2 2004/07/21 05:37:51 jjanke Exp $
|
||||
*/
|
||||
public class SubLines extends PosSubPanel implements ActionListener
|
||||
{
|
||||
|
@ -149,7 +151,7 @@ public class SubLines extends PosSubPanel implements ActionListener
|
|||
summary.add(f_total);
|
||||
f_total.setValue (Env.ZERO);
|
||||
//
|
||||
f_delete.setReadWrite(false);
|
||||
f_delete.setReadWrite(true);
|
||||
} // init
|
||||
|
||||
/**
|
||||
|
@ -193,7 +195,6 @@ public class SubLines extends PosSubPanel implements ActionListener
|
|||
if (row < 0)
|
||||
row = 0;
|
||||
m_table.getSelectionModel().setSelectionInterval(row, row);
|
||||
f_delete.setReadWrite(true);
|
||||
}
|
||||
else if ("Next".equalsIgnoreCase(e.getActionCommand()))
|
||||
{
|
||||
|
@ -205,13 +206,21 @@ public class SubLines extends PosSubPanel implements ActionListener
|
|||
if (row >= rows)
|
||||
row = rows - 1;
|
||||
m_table.getSelectionModel().setSelectionInterval(row, row);
|
||||
f_delete.setReadWrite(true);
|
||||
}
|
||||
// Delete
|
||||
else if (action.equals("Delete"))
|
||||
{
|
||||
|
||||
int rows = m_table.getRowCount();
|
||||
if (rows != 0)
|
||||
{
|
||||
int row = m_table.getSelectedRow();
|
||||
if (row != -1)
|
||||
{
|
||||
p_posPanel.f_curLine.deleteLine(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
p_posPanel.updateInfo();
|
||||
} // actionPerformed
|
||||
|
||||
/**
|
||||
|
@ -226,7 +235,7 @@ public class SubLines extends PosSubPanel implements ActionListener
|
|||
if (C_Order_ID == 0)
|
||||
{
|
||||
m_table.loadTable(new PO[0]);
|
||||
setSums(order);
|
||||
setSums(null);
|
||||
}
|
||||
|
||||
PreparedStatement pstmt = null;
|
||||
|
@ -278,6 +287,4 @@ public class SubLines extends PosSubPanel implements ActionListener
|
|||
f_tax.setValue(order.getGrandTotal().subtract(order.getTotalLines()));
|
||||
}
|
||||
} // setSums
|
||||
|
||||
|
||||
} // PosSubAllLines
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,29 +10,31 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.*;
|
||||
import org.compiere.model.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.model.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* POS Product Sub Panel.
|
||||
* Product Sub Panel.
|
||||
* Responsible for Product Selection and maintaining
|
||||
* M_Product_ID, Name, UOM
|
||||
* and setting Price
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: SubProduct.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: SubProduct.java,v 1.2 2004/07/24 04:31:52 jjanke Exp $
|
||||
*/
|
||||
public class SubProduct extends PosSubPanel
|
||||
implements ActionListener, FocusListener
|
||||
|
@ -134,6 +136,8 @@ public class SubProduct extends PosSubPanel
|
|||
// Name
|
||||
else if (e.getSource() == f_name)
|
||||
findProduct();
|
||||
|
||||
p_posPanel.updateInfo();
|
||||
} // actionPerformed
|
||||
|
||||
/**
|
||||
|
@ -154,6 +158,8 @@ public class SubProduct extends PosSubPanel
|
|||
return;
|
||||
log.info( "PosSubProduct - focusLost");
|
||||
findProduct();
|
||||
|
||||
p_posPanel.updateInfo();
|
||||
} // focusLost
|
||||
|
||||
/**
|
||||
|
@ -181,7 +187,7 @@ public class SubProduct extends PosSubPanel
|
|||
boolean allNumber = true;
|
||||
try
|
||||
{
|
||||
Integer.parseInt(query);
|
||||
Integer.getInteger(query);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* Copyright (C) 1999-2006 Adempiere, 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 *
|
||||
|
@ -10,24 +10,26 @@
|
|||
* 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.pos;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
||||
import javax.swing.border.*;
|
||||
|
||||
import org.compiere.swing.*;
|
||||
import org.compiere.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* POS Sales Rep Sub Panel
|
||||
* Sales Rep Sub Panel
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: SubSalesRep.java,v 1.2 2006/07/30 00:51:26 jjanke Exp $
|
||||
* @author Comunidad de Desarrollo OpenXpertya
|
||||
* *Basado en Codigo Original Modificado, Revisado y Optimizado de:
|
||||
* *Copyright © Jorg Janke
|
||||
* @version $Id: SubSalesRep.java,v 1.1 2004/07/12 04:10:04 jjanke Exp $
|
||||
*/
|
||||
public class SubSalesRep extends PosSubPanel implements ActionListener
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue