Skip to content

Commit

Permalink
Migrate from "CreateFrom" to Dynamic Form in "M_RMA"
Browse files Browse the repository at this point in the history
  • Loading branch information
yamelsenih committed Dec 4, 2015
1 parent 92034f3 commit c29a035
Show file tree
Hide file tree
Showing 6 changed files with 219 additions and 137 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* 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.grid;
package org.compiere.apps.form;

import java.math.BigDecimal;
import java.sql.PreparedStatement;
Expand All @@ -20,8 +20,9 @@
import java.util.Vector;
import java.util.logging.Level;

import org.adempiere.exceptions.AdempiereException;
import org.compiere.minigrid.IMiniTable;
import org.compiere.model.GridTab;
import org.compiere.model.I_M_RMA;
import org.compiere.model.MRMA;
import org.compiere.model.MRMALine;
import org.compiere.util.DB;
Expand All @@ -34,28 +35,41 @@
* @author ashley
* @author Teo Sarca, www.arhipac.ro
* <li>BF [ 2007837 ] VCreateFrom.save() should run in trx
* @author Yamel Senih, ysenih@erpcya.com, ERPCyA http://www.erpcya.com
* <li> FR [ 114 ] Change "Create From" UI for Form like Dialog in window without "hardcode"
* @see https://github.com/adempiere/adempiere/issues/114
*/
public class CreateFromRMA extends CreateFrom {
public class CreateFromRMA extends CreateFromHelper {

public CreateFromRMA(GridTab mTab)
{
super(mTab);
log.info(mTab.toString());
}
/** Record Identifier */
private int m_Record_ID = 0;

@Override
public boolean dynInit() throws Exception
{
log.config("");
setTitle("Customer RMA - Create Lines From");

return true;
/**
* Valid Table and Record Identifier
* @param p_AD_Table_ID
* @param p_Record_ID
*/
protected void validTable(int p_AD_Table_ID, int p_Record_ID) {
// Valid Table
if(p_AD_Table_ID != I_M_RMA.Table_ID) {
throw new AdempiereException("@AD_Table_ID@ @M_RMA_ID@ @NotFound@");
}
// Valid Record Identifier
if(p_Record_ID <= 0) {
throw new AdempiereException("@SaveErrorRowNotFound@");
}
// Default
m_Record_ID = p_Record_ID;
}

/**
* Get Data for RMA
* @return
*/
protected Vector<Vector<Object>> getRMAData()
{
int M_InOut_ID = Env.getContextAsInt(Env.getCtx(), getGridTab().getWindowNo(), "InOut_ID");
int M_RMA_ID = Env.getContextAsInt(Env.getCtx(), getGridTab().getWindowNo(), "M_RMA_ID");
MRMA rma = new MRMA(Env.getCtx(), m_Record_ID, null);
int M_InOut_ID = rma.getInOut_ID();

Vector<Vector<Object>> data = new Vector<Vector<Object>>();

Expand All @@ -81,7 +95,7 @@ protected Vector<Vector<Object>> getRMAData()
{
PreparedStatement pstmt = DB.prepareStatement(sqlStmt.toString(), null);
pstmt.setInt(1, M_InOut_ID);
pstmt.setInt(2, M_RMA_ID);
pstmt.setInt(2, m_Record_ID);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
Expand Down Expand Up @@ -112,13 +126,11 @@ protected Vector<Vector<Object>> getRMAData()

return data;
}

@Override
public void info()
{

}

/**
* Configure Mini Table
* @param miniTable
*/
protected void configureMiniTable (IMiniTable miniTable)
{
miniTable.setColumnClass(0, Boolean.class, false); // 0-Selection
Expand All @@ -132,14 +144,17 @@ protected void configureMiniTable (IMiniTable miniTable)
miniTable.autoSize();
}

@Override
/**
* Save Record
* @param miniTable
* @param trxName
* @return
*/
public boolean save(IMiniTable miniTable, String trxName)
{
log.config("");
int M_RMA_ID = Env.getContextAsInt(Env.getCtx(), getGridTab().getWindowNo(), "M_RMA_ID");

// Integer bpId = (Integer)bPartnerField.getValue();
MRMA rma = new MRMA(Env.getCtx(), M_RMA_ID, trxName);
MRMA rma = new MRMA(Env.getCtx(), m_Record_ID, trxName);
//update BP
// rma.setC_BPartner_ID(bpId);

Expand All @@ -153,7 +168,7 @@ public boolean save(IMiniTable miniTable, String trxName)
int inOutLineId = pp.getKey();

MRMALine rmaLine = new MRMALine(rma.getCtx(), 0, rma.get_TrxName());
rmaLine.setM_RMA_ID(M_RMA_ID);
rmaLine.setM_RMA_ID(m_Record_ID);
rmaLine.setM_InOutLine_ID(inOutLineId);
rmaLine.setQty(d);
rmaLine.setAD_Org_ID(rma.getAD_Org_ID());
Expand All @@ -167,6 +182,10 @@ public boolean save(IMiniTable miniTable, String trxName)
return true;
}

/**
* Get OIS Column Names
* @return
*/
protected Vector<String> getOISColumnNames()
{
// Header Info
Expand All @@ -180,4 +199,17 @@ protected Vector<String> getOISColumnNames()

return columnNames;
}

/**
* Get Business Partner from Invoice
* @return
*/
protected int getC_BPartner_ID() {
if(m_Record_ID <= 0)
return 0;
// For other
MRMA rma = new MRMA(Env.getCtx(), m_Record_ID, null);
// Default
return rma.getC_BPartner_ID();
}
}
2 changes: 1 addition & 1 deletion client/src/org/compiere/apps/form/CreateFromShipment.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public class CreateFromShipment extends CreateFromHelper {
protected void validTable(int p_AD_Table_ID, int p_Record_ID) {
// Valid Table
if(p_AD_Table_ID != I_M_InOut.Table_ID) {
throw new AdempiereException("@AD_Table_ID@ @M_RMA_ID@ @NotFound@");
throw new AdempiereException("@AD_Table_ID@ @M_InOut_ID@ @NotFound@");
}
// Valid Record Identifier
if(p_Record_ID <= 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* 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.grid;
package org.compiere.apps.form;

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
Expand All @@ -25,53 +25,39 @@
import javax.swing.JLabel;
import javax.swing.table.DefaultTableModel;

import org.compiere.apps.AEnv;
import org.compiere.grid.ed.VLookup;
import org.compiere.model.GridTab;
import org.compiere.model.MLookup;
import org.compiere.model.MLookupFactory;
import org.compiere.process.ProcessInfo;
import org.compiere.swing.CPanel;
import org.compiere.util.CLogger;
import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.Msg;

/*
/**
* @author Michael McKay
* <li>release/380 - fix row selection event handling to fire single event per row selection
* @author Yamel Senih, ysenih@erpcya.com, ERPCyA http://www.erpcya.com
* <li> FR [ 114 ] Change "Create From" UI for Form like Dialog in window without "hardcode"
* @see https://github.com/adempiere/adempiere/issues/114
*/

public class VCreateFromRMAUI extends CreateFromRMA implements VetoableChangeListener
public class VCreateFromRMAUI extends CreateFromRMA
implements FormPanel, ICreateFrom, VetoableChangeListener
{
private static final long serialVersionUID = 1L;

private VCreateFromDialog dialog;

public VCreateFromRMAUI(GridTab mTab)
{
super(mTab);
log.info(getGridTab().toString());

dialog = new VCreateFromDialog(this, getGridTab().getWindowNo(), true);

p_WindowNo = getGridTab().getWindowNo();

try
{
if (!dynInit())
return;
jbInit();
/**
* Standard Constructor
*/
public VCreateFromRMAUI() {
v_CreateFromPanel = new VCreateFromPanel(this);
}

setInitOK(true);
}
catch(Exception e)
{
log.log(Level.SEVERE, "", e);
setInitOK(false);
}
AEnv.positionCenterWindow(Env.getWindow(p_WindowNo), dialog);
} // VCreateFrom

// Yamel Senih FR [ 114 ], 2015-11-26
// Change to form
private FormFrame v_Container = null;
/** Main Panel for Create From */
private VCreateFromPanel v_CreateFromPanel;
/** Window No */
private int p_WindowNo;

Expand All @@ -89,15 +75,9 @@ public VCreateFromRMAUI(GridTab mTab)
*/
public boolean dynInit() throws Exception
{
log.config("");

super.dynInit();

dialog.setTitle(getTitle());

initBPartner(true);
bPartnerField.addVetoableChangeListener(this);

// Load RMA Data
loadRMA();

return true;
Expand All @@ -120,8 +100,10 @@ public boolean dynInit() throws Exception
private void jbInit() throws Exception
{
bPartnerLabel.setText(Msg.getElement(Env.getCtx(), "C_BPartner_ID"));

CPanel parameterPanel = dialog.getParameterPanel();
// Add to Main Form
v_Container.getContentPane().add(v_CreateFromPanel);
//
CPanel parameterPanel = v_CreateFromPanel.getParameterPanel();
parameterPanel.setLayout(new BorderLayout());

CPanel parameterStdPanel = new CPanel(new GridBagLayout());
Expand Down Expand Up @@ -149,7 +131,7 @@ public void vetoableChange (PropertyChangeEvent e)
{
loadRMA();
}
dialog.tableChanged(null);
v_CreateFromPanel.tableChanged(null);
} // vetoableChange

/**************************************************************************
Expand All @@ -164,10 +146,13 @@ protected void initBPartner (boolean forInvoice) throws Exception
MLookup lookup = MLookupFactory.get (Env.getCtx(), p_WindowNo, 0, AD_Column_ID, DisplayType.Search);
bPartnerField = new VLookup ("C_BPartner_ID", true, false, true, lookup);
//
int C_BPartner_ID = Env.getContextAsInt(Env.getCtx(), p_WindowNo, "C_BPartner_ID");
int C_BPartner_ID = getC_BPartner_ID();
bPartnerField.setValue(new Integer(C_BPartner_ID));
} // initBPartner

/**
* Load RMA
*/
protected void loadRMA()
{
loadTableOIS(getRMAData());
Expand All @@ -180,22 +165,50 @@ protected void loadRMA()
protected void loadTableOIS (Vector<?> data)
{
// Remove previous listeners
dialog.getMiniTable().removeMiniTableSelectionListener(dialog);
v_CreateFromPanel.getMiniTable().removeMiniTableSelectionListener(v_CreateFromPanel);
// Set Model
DefaultTableModel model = new DefaultTableModel(data, getOISColumnNames());
dialog.getMiniTable().setModel(model);
v_CreateFromPanel.getMiniTable().setModel(model);
//
configureMiniTable(dialog.getMiniTable());
dialog.getMiniTable().addMiniTableSelectionListener(dialog);
configureMiniTable(v_CreateFromPanel.getMiniTable());
v_CreateFromPanel.getMiniTable().addMiniTableSelectionListener(v_CreateFromPanel);
} // loadOrder

public void showWindow()
{
dialog.setVisible(true);
@Override
public boolean info() {
return false;
}

@Override
public void init(int WindowNo, FormFrame frame) {
p_WindowNo = WindowNo;
v_Container = frame;
ProcessInfo info = frame.getProcessInfo();
try {
// Valid for launched from a window
if(info != null) {
// Valid Table and Record
validTable(info.getTable_ID(),
info.getRecord_ID());
}
// Init
if (!dynInit())
return;
jbInit();
} catch(Exception e) {
log.log(Level.SEVERE, "", e);
}
}

public void closeWindow()
{
dialog.dispose();
@Override
public void dispose() {
if (v_Container != null)
v_Container.dispose();
v_Container = null;
}

@Override
public int getWindowNo() {
return p_WindowNo;
}
}
3 changes: 1 addition & 2 deletions client/src/org/compiere/grid/VCreateFromFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import java.util.logging.Level;

import org.compiere.model.GridTab;
import org.compiere.model.I_M_RMA;
import org.compiere.util.CLogger;
import org.compiere.util.Env;
/**
Expand Down Expand Up @@ -53,7 +52,7 @@ public static final void registerClass(int ad_table_id, Class<? extends ICreateF

// s_registeredClasses.put(I_C_BankStatement.Table_ID, VCreateFromStatementUI.class);
// s_registeredClasses.put(I_M_InOut.Table_ID, VCreateFromShipmentUI.class);
s_registeredClasses.put(I_M_RMA.Table_ID, VCreateFromRMAUI.class);
// s_registeredClasses.put(I_M_RMA.Table_ID, VCreateFromRMAUI.class);
}

/**
Expand Down

0 comments on commit c29a035

Please sign in to comment.