IDEMPIERE-5570 Zk: Improve readability of code (#1690)
- Improve code readability for org.adempieere.webui.apps.form package.
This commit is contained in:
parent
3e83d5ff67
commit
1e70b29ca2
|
@ -77,7 +77,6 @@ public class LoggedSessionListener implements HttpSessionListener, ServletContex
|
|||
public void contextInitialized(ServletContextEvent arg0) {
|
||||
DestroyAllSession();
|
||||
|
||||
// bring from depricate class WebUIServlet
|
||||
/** Initialise context for the current thread*/
|
||||
Properties serverContext = new Properties();
|
||||
serverContext.put(ServerContextURLHandler.SERVER_CONTEXT_URL_HANDLER, new ServerContextURLHandler() {
|
||||
|
@ -91,7 +90,7 @@ public class LoggedSessionListener implements HttpSessionListener, ServletContex
|
|||
File file = new File(propertyFile);
|
||||
if (!file.exists())
|
||||
{
|
||||
throw new IllegalStateException("idempiere.properties is not setup. PropertyFile="+propertyFile);
|
||||
throw new IllegalStateException("idempiere.properties file missing. Path="+file.getAbsolutePath());
|
||||
}
|
||||
if (!Adempiere.isStarted())
|
||||
{
|
||||
|
|
|
@ -96,7 +96,7 @@ import com.lowagie.text.DocumentException;
|
|||
*/
|
||||
public final class AEnv
|
||||
{
|
||||
/** Environment context attribute for Locale **/
|
||||
/** Environment context attribute for Locale */
|
||||
public static final String LOCALE = Env.LOCALE;
|
||||
|
||||
/**
|
||||
|
@ -259,12 +259,12 @@ public final class AEnv
|
|||
AEnv.zoom(s_workflow_Window_ID, query);
|
||||
} // startWorkflowProcess
|
||||
|
||||
/** Cache Workflow Window ID **/
|
||||
/** Cache Workflow Window ID */
|
||||
private static int s_workflow_Window_ID = 0;
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(AEnv.class);
|
||||
|
||||
/** Register AD Window Cache **/
|
||||
/** Register AD Window Cache */
|
||||
private static Map<String, CCache<Integer,GridWindowVO>> windowCache = new HashMap<String, CCache<Integer,GridWindowVO>>();
|
||||
|
||||
/**
|
||||
|
@ -321,7 +321,7 @@ public final class AEnv
|
|||
if (mWindowVO == null)
|
||||
return null;
|
||||
|
||||
// Check context
|
||||
// Check context (Just in case, usually both is ServerContextPropertiesWrapper)
|
||||
if (!mWindowVO.ctx.equals(Env.getCtx()))
|
||||
{
|
||||
// Add Window properties to context
|
||||
|
@ -824,17 +824,12 @@ public final class AEnv
|
|||
}
|
||||
|
||||
/**
|
||||
* Get adWindowId below gridField
|
||||
* when field lie in window, it's id of this window
|
||||
* when field lie in process parameter dialog it's ad_window_id of window open this process
|
||||
* when field lie in process parameter open in a standalone window (run process from menu) return id of dummy window
|
||||
* Get AD_Window_ID from windowNo.
|
||||
* @param windowNo
|
||||
* @return
|
||||
* @return AD_Window_ID or {@link Env#adWindowDummyID} (if it is ProcessDialog of InfoWindow)
|
||||
*/
|
||||
public static int getADWindowID (int windowNo){
|
||||
int adWindowID = 0;
|
||||
// form process parameter panel
|
||||
|
||||
Object window = SessionManager.getAppDesktop().findWindow(windowNo);
|
||||
// case show a process dialog, window is below window of process dialog
|
||||
if (window != null && window instanceof ADWindow){
|
||||
|
|
|
@ -1,6 +1,27 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
/***********************************************************************
|
||||
* This file is part of iDempiere ERP Open Source *
|
||||
* http://www.idempiere.org *
|
||||
* *
|
||||
* Copyright (C) Contributors *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU General Public License *
|
||||
* as published by the Free Software Foundation; either version 2 *
|
||||
* of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, *
|
||||
* MA 02110-1301, USA. *
|
||||
* *
|
||||
* Contributors: *
|
||||
* - hengsin *
|
||||
**********************************************************************/
|
||||
package org.adempiere.webui.apps.form;
|
||||
|
||||
import java.io.StringWriter;
|
||||
|
@ -37,27 +58,33 @@ import org.zkoss.zul.Timer;
|
|||
import org.zkoss.zul.Vlayout;
|
||||
|
||||
/**
|
||||
* Form to compare suggested text from AD_CtxHelpSuggestion with the original text from AD_CtxHelpMsg.
|
||||
* @author hengsin
|
||||
*
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form
|
||||
public class CompareCtxHelpSuggestion extends ADForm {
|
||||
|
||||
private static final String NEW_VALUE = "newValue";
|
||||
/** {@link #helpTimer} attribute to store text value from {@link #helpTextbox} onChanging event. */
|
||||
private static final String NEW_VALUE_ATTR = "newValue";
|
||||
|
||||
/**
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -100362034024824442L;
|
||||
/** Grid layout for content of form */
|
||||
private Grid grid;
|
||||
private ConfirmPanel confirmPanel;
|
||||
/** Cell to show diff between original and changed text */
|
||||
private Cell helpDiff;
|
||||
private CKeditor helpTextbox;
|
||||
private X_AD_CtxHelpMsg ctxHelpMsg;
|
||||
/** AD Language from calling GridTab */
|
||||
private String AD_Language;
|
||||
/** Timer to process onChanging text from {@link #helpTextbox} asynchronously */
|
||||
private Timer helpTimer;
|
||||
|
||||
/**
|
||||
*
|
||||
* default constructor
|
||||
*/
|
||||
public CompareCtxHelpSuggestion() {
|
||||
}
|
||||
|
@ -100,6 +127,9 @@ public class CompareCtxHelpSuggestion extends ADForm {
|
|||
renderGrid();
|
||||
}
|
||||
|
||||
/**
|
||||
* Render content grid.
|
||||
*/
|
||||
private void renderGrid() {
|
||||
Component c = SessionManager.getAppDesktop().getActiveWindow();
|
||||
ADWindow adwindow = ADWindow.findADWindow(c);
|
||||
|
@ -133,6 +163,7 @@ public class CompareCtxHelpSuggestion extends ADForm {
|
|||
if (original != null)
|
||||
original = removeHeaderTag(original);
|
||||
row.appendCellChild(new Html(original));
|
||||
//suggestion from AD_CtxHelpSuggestion
|
||||
String changed = (String) gridTab.getValue("MsgText");
|
||||
if (changed != null)
|
||||
changed = removeHeaderTag(changed);
|
||||
|
@ -154,6 +185,11 @@ public class CompareCtxHelpSuggestion extends ADForm {
|
|||
this.addEventListener(Events.ON_OK, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param original
|
||||
* @param changed
|
||||
* @return difference between original and changed
|
||||
*/
|
||||
private Html diff(String original, String changed) {
|
||||
if (original == null)
|
||||
original = "";
|
||||
|
@ -210,7 +246,7 @@ public class CompareCtxHelpSuggestion extends ADForm {
|
|||
} else if (event.getTarget() == helpTextbox) {
|
||||
if (event.getName().equals(Events.ON_CHANGING)) {
|
||||
InputEvent inputEvent = (InputEvent) event;
|
||||
helpTimer.setAttribute(NEW_VALUE, inputEvent.getValue());
|
||||
helpTimer.setAttribute(NEW_VALUE_ATTR, inputEvent.getValue());
|
||||
if (helpTimer.isRunning()) {
|
||||
return;
|
||||
} else {
|
||||
|
@ -222,17 +258,25 @@ public class CompareCtxHelpSuggestion extends ADForm {
|
|||
helpTimer.stop();
|
||||
}
|
||||
} else if (event.getTarget() == helpTimer) {
|
||||
onHelpChanged((String) helpTimer.removeAttribute(NEW_VALUE));
|
||||
onHelpChanged((String) helpTimer.removeAttribute(NEW_VALUE_ATTR));
|
||||
} else {
|
||||
super.onEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle changes from {@link #helpTextbox}.
|
||||
* @param text
|
||||
*/
|
||||
private void onHelpChanged(String text) {
|
||||
helpDiff.getChildren().clear();
|
||||
Html html = diff(ctxHelpMsg.get_Translation("MsgText", AD_Language), text);
|
||||
helpDiff.appendChild(html);
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply changes to calling GridTab (AD_CtxHelpSuggestion).
|
||||
*/
|
||||
private void applyChanges() {
|
||||
Component c = SessionManager.getAppDesktop().getActiveWindow();
|
||||
ADWindow adwindow = ADWindow.findADWindow(c);
|
||||
|
@ -250,6 +294,10 @@ public class CompareCtxHelpSuggestion extends ADForm {
|
|||
return Mode.HIGHLIGHTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param htmlString
|
||||
* @return htmlString after removal of html header tag
|
||||
*/
|
||||
private String removeHeaderTag(String htmlString) {
|
||||
htmlString = htmlString
|
||||
.replace("<html>", "")
|
||||
|
@ -261,6 +309,11 @@ public class CompareCtxHelpSuggestion extends ADForm {
|
|||
return htmlString;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param s1
|
||||
* @param s2
|
||||
* @return difference between s1 and s2
|
||||
*/
|
||||
private String htmlDiff(String s1, String s2) {
|
||||
|
||||
try {
|
||||
|
|
|
@ -1,6 +1,27 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
/***********************************************************************
|
||||
* This file is part of iDempiere ERP Open Source *
|
||||
* http://www.idempiere.org *
|
||||
* *
|
||||
* Copyright (C) Contributors *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU General Public License *
|
||||
* as published by the Free Software Foundation; either version 2 *
|
||||
* of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, *
|
||||
* MA 02110-1301, USA. *
|
||||
* *
|
||||
* Contributors: *
|
||||
* - hengsin *
|
||||
**********************************************************************/
|
||||
package org.adempiere.webui.apps.form;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
@ -33,34 +54,44 @@ import org.zkoss.zul.Timer;
|
|||
import org.zkoss.zul.Vlayout;
|
||||
|
||||
/**
|
||||
* Form to compare suggested text from AD_FieldSuggestion with the original text from AD_Field.
|
||||
* @author hengsin
|
||||
*
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form
|
||||
public class CompareFieldSuggestion extends ADForm {
|
||||
|
||||
private static final String NEW_VALUE = "newValue";
|
||||
/** Timer attribute to store text value from Textbox onChanging event. */
|
||||
private static final String NEW_VALUE_ATTR = "newValue";
|
||||
|
||||
/**
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -100362034024824442L;
|
||||
/** Grid layout for content of form */
|
||||
private Grid grid;
|
||||
private ConfirmPanel confirmPanel;
|
||||
/** Cell to show diff between original and changed description */
|
||||
private Cell descriptionDiff;
|
||||
/** Cell to show diff between original and changed name */
|
||||
private Cell nameDiff;
|
||||
/** Cell to show diff between original and changed help */
|
||||
private Cell helpDiff;
|
||||
private Textbox nameTextbox;
|
||||
private Textbox descriptionTextbox;
|
||||
private Textbox helpTextbox;
|
||||
private MField field;
|
||||
/** AD Language from calling GridTab */
|
||||
private String AD_Language;
|
||||
private diff_match_patch diff;
|
||||
/** Timer to process onChanging text from {@link #nameTextbox} asynchronously */
|
||||
private Timer nameTimer;
|
||||
/** Timer to process onChanging text from {@link #descriptionTextbox} asynchronously */
|
||||
private Timer descriptionTimer;
|
||||
/** Timer to process onChanging text from {@link #helpTextbox} asynchronously */
|
||||
private Timer helpTimer;
|
||||
|
||||
/**
|
||||
*
|
||||
* default constructor
|
||||
*/
|
||||
public CompareFieldSuggestion() {
|
||||
}
|
||||
|
@ -119,6 +150,9 @@ public class CompareFieldSuggestion extends ADForm {
|
|||
renderGrid();
|
||||
}
|
||||
|
||||
/**
|
||||
* Render content grid.
|
||||
*/
|
||||
private void renderGrid() {
|
||||
Component c = SessionManager.getAppDesktop().getActiveWindow();
|
||||
ADWindow adwindow = ADWindow.findADWindow(c);
|
||||
|
@ -155,6 +189,7 @@ public class CompareFieldSuggestion extends ADForm {
|
|||
|
||||
String original = field.get_Translation("Name", AD_Language);
|
||||
row.appendCellChild(new Label(original));
|
||||
//suggested text from AD_FieldSuggestion
|
||||
String changed = (String) gridTab.getValue("Name");
|
||||
nameTextbox = new Textbox(changed);
|
||||
row.appendCellChild(nameTextbox);
|
||||
|
@ -173,6 +208,7 @@ public class CompareFieldSuggestion extends ADForm {
|
|||
|
||||
original = field.get_Translation("Description", AD_Language);
|
||||
row.appendCellChild(new Label(original));
|
||||
//suggested text from AD_FieldSuggestion
|
||||
changed = (String) gridTab.getValue("Description");
|
||||
descriptionTextbox = new Textbox(changed);
|
||||
descriptionTextbox.setRows(4);
|
||||
|
@ -193,6 +229,7 @@ public class CompareFieldSuggestion extends ADForm {
|
|||
|
||||
original = field.get_Translation("Help", AD_Language);
|
||||
row.appendCellChild(new Label(original));
|
||||
//suggested text from AD_FieldSuggestion
|
||||
changed = (String) gridTab.getValue("Help");
|
||||
helpTextbox = new Textbox(changed);
|
||||
helpTextbox.setRows(8);
|
||||
|
@ -211,6 +248,11 @@ public class CompareFieldSuggestion extends ADForm {
|
|||
this.addEventListener(Events.ON_OK, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param original
|
||||
* @param changed
|
||||
* @return difference between original and changed
|
||||
*/
|
||||
private Html diff(String original, String changed) {
|
||||
if (original == null) original = "";
|
||||
if (changed == null) changed = "";
|
||||
|
@ -233,7 +275,7 @@ public class CompareFieldSuggestion extends ADForm {
|
|||
} else if (event.getTarget() == nameTextbox) {
|
||||
if (event.getName().equals(Events.ON_CHANGING)) {
|
||||
InputEvent inputEvent = (InputEvent) event;
|
||||
nameTimer.setAttribute(NEW_VALUE, inputEvent.getValue());
|
||||
nameTimer.setAttribute(NEW_VALUE_ATTR, inputEvent.getValue());
|
||||
if (nameTimer.isRunning()) {
|
||||
return;
|
||||
} else {
|
||||
|
@ -247,7 +289,7 @@ public class CompareFieldSuggestion extends ADForm {
|
|||
} else if (event.getTarget() == descriptionTextbox) {
|
||||
if (event.getName().equals(Events.ON_CHANGING)) {
|
||||
InputEvent inputEvent = (InputEvent) event;
|
||||
descriptionTimer.setAttribute(NEW_VALUE, inputEvent.getValue());
|
||||
descriptionTimer.setAttribute(NEW_VALUE_ATTR, inputEvent.getValue());
|
||||
if (descriptionTimer.isRunning()) {
|
||||
return;
|
||||
} else {
|
||||
|
@ -261,7 +303,7 @@ public class CompareFieldSuggestion extends ADForm {
|
|||
} else if (event.getTarget() == helpTextbox) {
|
||||
if (event.getName().equals(Events.ON_CHANGING)) {
|
||||
InputEvent inputEvent = (InputEvent) event;
|
||||
helpTimer.setAttribute(NEW_VALUE, inputEvent.getValue());
|
||||
helpTimer.setAttribute(NEW_VALUE_ATTR, inputEvent.getValue());
|
||||
if (helpTimer.isRunning()) {
|
||||
return;
|
||||
} else {
|
||||
|
@ -273,34 +315,49 @@ public class CompareFieldSuggestion extends ADForm {
|
|||
helpTimer.stop();
|
||||
}
|
||||
} else if (event.getTarget() == nameTimer) {
|
||||
onNameChanged((String) nameTimer.removeAttribute(NEW_VALUE));
|
||||
onNameChanged((String) nameTimer.removeAttribute(NEW_VALUE_ATTR));
|
||||
} else if (event.getTarget() == descriptionTimer) {
|
||||
onDescriptionChanged((String) descriptionTimer.removeAttribute(NEW_VALUE));
|
||||
onDescriptionChanged((String) descriptionTimer.removeAttribute(NEW_VALUE_ATTR));
|
||||
} else if (event.getTarget() == helpTimer) {
|
||||
onHelpChanged((String) helpTimer.removeAttribute(NEW_VALUE));
|
||||
onHelpChanged((String) helpTimer.removeAttribute(NEW_VALUE_ATTR));
|
||||
} else {
|
||||
super.onEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle changes from {@link #helpTextbox}.
|
||||
* @param text
|
||||
*/
|
||||
private void onHelpChanged(String text) {
|
||||
helpDiff.getChildren().clear();
|
||||
Html html = diff(field.get_Translation("Help", AD_Language), text);
|
||||
helpDiff.appendChild(html);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle changes from {@link #descriptionTextbox}.
|
||||
* @param text
|
||||
*/
|
||||
private void onDescriptionChanged(String text) {
|
||||
descriptionDiff.getChildren().clear();
|
||||
Html html = diff(field.get_Translation("Description", AD_Language), text);
|
||||
descriptionDiff.appendChild(html);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle changes from {@link #nameTextbox}.
|
||||
* @param text
|
||||
*/
|
||||
private void onNameChanged(String text) {
|
||||
nameDiff.getChildren().clear();
|
||||
Html html = diff(field.get_Translation("Name", AD_Language), text);
|
||||
nameDiff.appendChild(html);
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply changes to calling GridTab (AD_FieldSuggestion).
|
||||
*/
|
||||
private void applyChanges() {
|
||||
Component c = SessionManager.getAppDesktop().getActiveWindow();
|
||||
ADWindow adwindow = ADWindow.findADWindow(c);
|
||||
|
|
|
@ -24,9 +24,8 @@ import org.compiere.model.I_M_RMA;
|
|||
import org.compiere.model.I_C_DepositBatch;
|
||||
|
||||
/**
|
||||
*
|
||||
* Default implementation of {@link ICreateFromFactory}
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class DefaultCreateFromFactory implements ICreateFromFactory
|
||||
{
|
||||
|
|
|
@ -19,12 +19,12 @@ import org.compiere.model.GridTab;
|
|||
import org.compiere.model.MInvoice;
|
||||
|
||||
/**
|
||||
*
|
||||
* Default implementation of {@link IPaymentFormFactory}
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class DefaultPaymentFormFactory implements IPaymentFormFactory {
|
||||
|
||||
@Override
|
||||
public IPaymentForm create(int windowNo, GridTab mTab, String paymentRule)
|
||||
{
|
||||
if (paymentRule.equals(MInvoice.PAYMENTRULE_Cash))
|
||||
|
|
|
@ -60,7 +60,7 @@ import org.zkoss.zul.Space;
|
|||
@org.idempiere.ui.zk.annotation.Form
|
||||
public class MFARegisterForm extends ADForm {
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = 6186035815377577281L;
|
||||
|
||||
|
@ -91,7 +91,7 @@ public class MFARegisterForm extends ADForm {
|
|||
private MMFARegistration registration = null;
|
||||
|
||||
/**
|
||||
*
|
||||
* Default constructor
|
||||
*/
|
||||
public MFARegisterForm() {
|
||||
}
|
||||
|
|
|
@ -79,22 +79,19 @@ import org.zkoss.zul.North;
|
|||
import org.zkoss.zul.South;
|
||||
|
||||
/**
|
||||
* Allocation Form
|
||||
* Form to create allocation (C_AllocationHdr and C_AllocationLine).
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: VAllocation.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
|
||||
*
|
||||
* Contributor : Fabian Aguilar - OFBConsulting - Multiallocation
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VAllocation")
|
||||
public class WAllocation extends Allocation
|
||||
implements IFormController, EventListener<Event>, WTableModelListener, ValueChangeListener
|
||||
{
|
||||
|
||||
/** UI form instance */
|
||||
private CustomForm form = new CustomForm();
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* Default constructor
|
||||
*/
|
||||
public WAllocation()
|
||||
{
|
||||
|
@ -116,61 +113,94 @@ public class WAllocation extends Allocation
|
|||
}
|
||||
} // init
|
||||
|
||||
//
|
||||
/** Main layout for {@link #form} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
|
||||
//Parameter
|
||||
/** Parameter panel. North of {@link #mainLayout} */
|
||||
private Panel parameterPanel = new Panel();
|
||||
private Panel allocationPanel = new Panel(); //footer
|
||||
private Grid parameterLayout = GridFactory.newGridLayout();
|
||||
/** Grid layout of {@link #parameterPanel} */
|
||||
private Grid parameterLayout = GridFactory.newGridLayout();
|
||||
private Label bpartnerLabel = new Label();
|
||||
/** bpartner parameter */
|
||||
private WSearchEditor bpartnerSearch = null;
|
||||
private WListbox invoiceTable = ListboxFactory.newDataTable();
|
||||
private WListbox paymentTable = ListboxFactory.newDataTable();
|
||||
private Borderlayout infoPanel = new Borderlayout();
|
||||
private Panel paymentPanel = new Panel();
|
||||
private Panel invoicePanel = new Panel();
|
||||
private Label paymentLabel = new Label();
|
||||
private Label invoiceLabel = new Label();
|
||||
private Borderlayout paymentLayout = new Borderlayout();
|
||||
private Borderlayout invoiceLayout = new Borderlayout();
|
||||
private Label paymentInfo = new Label();
|
||||
private Label invoiceInfo = new Label();
|
||||
private Grid allocationLayout = GridFactory.newGridLayout();
|
||||
private Label differenceLabel = new Label();
|
||||
private Textbox differenceField = new Textbox();
|
||||
private Button allocateButton = new Button();
|
||||
private Button refreshButton = new Button();
|
||||
private Label currencyLabel = new Label();
|
||||
/** Currency parameter */
|
||||
private WTableDirEditor currencyPick = null;
|
||||
/** Multi currency parameter */
|
||||
private Checkbox multiCurrency = new Checkbox();
|
||||
private Label chargeLabel = new Label();
|
||||
private WTableDirEditor chargePick = null;
|
||||
private Label DocTypeLabel = new Label();
|
||||
private WTableDirEditor DocTypePick = null;
|
||||
private Label allocCurrencyLabel = new Label();
|
||||
private Hlayout statusBar = new Hlayout();
|
||||
private Label dateLabel = new Label();
|
||||
/** Document date parameter */
|
||||
private WDateEditor dateField = new WDateEditor();
|
||||
/** Auto write off parameter */
|
||||
private Checkbox autoWriteOff = new Checkbox();
|
||||
private Label organizationLabel = new Label();
|
||||
/** Organization parameter */
|
||||
private WTableDirEditor organizationPick;
|
||||
/** Number of column for {@link #parameterLayout} */
|
||||
private int noOfColumn;
|
||||
|
||||
/** Center of {@link #mainLayout}. */
|
||||
private Borderlayout infoPanel = new Borderlayout();
|
||||
/** North of {@link #infoPanel} */
|
||||
private Panel paymentPanel = new Panel();
|
||||
/** Center of {@link #infoPanel} */
|
||||
private Panel invoicePanel = new Panel();
|
||||
|
||||
//Invoice
|
||||
/** Layout of {@link #invoicePanel} */
|
||||
private Borderlayout invoiceLayout = new Borderlayout();
|
||||
/** North of {@link #invoiceLayout} */
|
||||
private Label invoiceLabel = new Label();
|
||||
/** Center of {@link #invoiceLayout}. List of invoice documents. */
|
||||
private WListbox invoiceTable = ListboxFactory.newDataTable();
|
||||
/** South of {@link #invoiceLayout} */
|
||||
private Label invoiceInfo = new Label();
|
||||
|
||||
//Payments
|
||||
/** Layout of {@link #paymentPanel} */
|
||||
private Borderlayout paymentLayout = new Borderlayout();
|
||||
/** North of {@link #paymentLayout} */
|
||||
private Label paymentLabel = new Label();
|
||||
/** Center of {@link #paymentLayout}. List of payment documents. */
|
||||
private WListbox paymentTable = ListboxFactory.newDataTable();
|
||||
/** South of {@link #paymentLayout} */
|
||||
private Label paymentInfo = new Label();
|
||||
|
||||
//Allocation
|
||||
/** South of {@link #mainLayout} */
|
||||
private Panel allocationPanel = new Panel(); //footer
|
||||
/** Grid layout of {@link #allocationPanel} */
|
||||
private Grid allocationLayout = GridFactory.newGridLayout();
|
||||
private Label differenceLabel = new Label();
|
||||
/** Difference between payment and invoice. Part of {@link #allocationLayout}. */
|
||||
private Textbox differenceField = new Textbox();
|
||||
/** Button to apply allocation. Part of {@link #allocationLayout}. */
|
||||
private Button allocateButton = new Button();
|
||||
/** Button to refresh {@link #paymentTable} and {@link #invoiceTable}. Part of {@link #allocationLayout}. */
|
||||
private Button refreshButton = new Button();
|
||||
/** Charges. Part of {@link #allocationLayout}. */
|
||||
private WTableDirEditor chargePick = null;
|
||||
private Label DocTypeLabel = new Label();
|
||||
/** Document types. Part of {@link #allocationLayout}. */
|
||||
private WTableDirEditor DocTypePick = null;
|
||||
private Label allocCurrencyLabel = new Label();
|
||||
/** Status bar, bottom of {@link #allocationPanel} */
|
||||
private Hlayout statusBar = new Hlayout();
|
||||
|
||||
/**
|
||||
* Static Init
|
||||
* Layout {@link #form}
|
||||
* @throws Exception
|
||||
*/
|
||||
private void zkInit() throws Exception
|
||||
{
|
||||
//
|
||||
Div div = new Div();
|
||||
div.setStyle("height: 100%; width: 100%; overflow: auto;");
|
||||
div.appendChild(mainLayout);
|
||||
form.appendChild(div);
|
||||
ZKUpdateUtil.setWidth(mainLayout, "100%");
|
||||
|
||||
/////
|
||||
mainLayout.setStyle("min-height: 600px");
|
||||
/////
|
||||
|
||||
dateLabel.setText(Msg.getMsg(Env.getCtx(), "Date"));
|
||||
autoWriteOff.setSelected(false);
|
||||
|
@ -200,8 +230,7 @@ public class WAllocation extends Allocation
|
|||
currencyLabel.setText(Msg.translate(Env.getCtx(), "C_Currency_ID"));
|
||||
multiCurrency.setText(Msg.getMsg(Env.getCtx(), "MultiCurrency"));
|
||||
multiCurrency.addActionListener(this);
|
||||
allocCurrencyLabel.setText(".");
|
||||
|
||||
allocCurrencyLabel.setText(".");
|
||||
organizationLabel.setText(Msg.translate(Env.getCtx(), "AD_Org_ID"));
|
||||
|
||||
// parameters layout
|
||||
|
@ -295,8 +324,11 @@ public class WAllocation extends Allocation
|
|||
center.appendChild(invoicePanel);
|
||||
center.setAutoscroll(true);
|
||||
infoPanel.setStyle("min-height: 300px;");
|
||||
} // jbInit
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #parameterLayout} and {@link #allocationPanel}.
|
||||
*/
|
||||
protected void layoutParameterAndSummary() {
|
||||
Rows rows = null;
|
||||
Row row = null;
|
||||
|
@ -404,6 +436,9 @@ public class WAllocation extends Allocation
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup columns for {@link #parameterLayout}.
|
||||
*/
|
||||
protected void setupParameterColumns() {
|
||||
noOfColumn = 6;
|
||||
if (maxWidth(MEDIUM_WIDTH-1))
|
||||
|
@ -452,11 +487,11 @@ public class WAllocation extends Allocation
|
|||
bpartnerSearch = new WSearchEditor("C_BPartner_ID", true, false, true, lookupBP);
|
||||
bpartnerSearch.addValueChangeListener(this);
|
||||
|
||||
// Translation
|
||||
// Status bar
|
||||
statusBar.appendChild(new Label(Msg.getMsg(Env.getCtx(), "AllocateStatus")));
|
||||
ZKUpdateUtil.setVflex(statusBar, "min");
|
||||
|
||||
// Date set to Login Date
|
||||
// Default dateField to Login Date
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(Env.getContextAsDate(Env.getCtx(), Env.DATE));
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
|
@ -478,10 +513,12 @@ public class WAllocation extends Allocation
|
|||
MLookup lookupDocType = MLookupFactory.get (Env.getCtx(), form.getWindowNo(), 0, AD_Column_ID, DisplayType.TableDir);
|
||||
DocTypePick = new WTableDirEditor("C_DocType_ID", false, false, true, lookupDocType);
|
||||
DocTypePick.setValue(getC_DocType_ID());
|
||||
DocTypePick.addValueChangeListener(this);
|
||||
|
||||
DocTypePick.addValueChangeListener(this);
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Handle onClientInfo event from browser.
|
||||
*/
|
||||
protected void onClientInfo()
|
||||
{
|
||||
if (ClientInfo.isMobile() && form.getPage() != null)
|
||||
|
@ -512,15 +549,14 @@ public class WAllocation extends Allocation
|
|||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* Action Listener.
|
||||
* - MultiCurrency
|
||||
* - Allocate
|
||||
/**
|
||||
* Event listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent(Event e)
|
||||
{
|
||||
log.config("");
|
||||
if (log.isLoggable(Level.CONFIG)) log.config("");
|
||||
if (e.getTarget().equals(multiCurrency))
|
||||
loadBPartner();
|
||||
// Allocate
|
||||
|
@ -543,10 +579,11 @@ public class WAllocation extends Allocation
|
|||
}
|
||||
|
||||
/**
|
||||
* Table Model Listener.
|
||||
* Table Model Listener for {@link #paymentTable} and {@link #invoiceTable}
|
||||
* - Recalculate Totals
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void tableChanged(WTableModelEvent e)
|
||||
{
|
||||
boolean isUpdate = (e.getType() == WTableModelEvent.CONTENTS_CHANGED);
|
||||
|
@ -579,12 +616,10 @@ public class WAllocation extends Allocation
|
|||
} // tableChanged
|
||||
|
||||
/**
|
||||
* Vetoable Change Listener.
|
||||
* - Business Partner
|
||||
* - Currency
|
||||
* - Date
|
||||
* Value change listener for parameter and allocation fields.
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void valueChange (ValueChangeEvent e)
|
||||
{
|
||||
String name = e.getPropertyName();
|
||||
|
@ -631,6 +666,9 @@ public class WAllocation extends Allocation
|
|||
loadBPartner();
|
||||
} // vetoableChange
|
||||
|
||||
/**
|
||||
* Set {@link #allocateButton} to enable or disable.
|
||||
*/
|
||||
private void setAllocateButton() {
|
||||
if (isOkToAllocate() )
|
||||
{
|
||||
|
@ -649,9 +687,11 @@ public class WAllocation extends Allocation
|
|||
}
|
||||
|
||||
/**
|
||||
* Load Business Partner Info
|
||||
* - Payments
|
||||
* - Invoices
|
||||
* Load Business Partner Info.
|
||||
* <ul>
|
||||
* <li>Payments</li>
|
||||
* <li>Invoices</li>
|
||||
* </ul>
|
||||
*/
|
||||
private void loadBPartner ()
|
||||
{
|
||||
|
@ -718,8 +758,8 @@ public class WAllocation extends Allocation
|
|||
setAllocateButton();
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* Save Data
|
||||
/**
|
||||
* Save Data to C_AllocationHdr and C_AllocationLine.
|
||||
*/
|
||||
private MAllocationHdr saveData()
|
||||
{
|
||||
|
@ -753,6 +793,7 @@ public class WAllocation extends Allocation
|
|||
* Called by org.adempiere.webui.panel.ADForm.openForm(int)
|
||||
* @return {@link ADForm}
|
||||
*/
|
||||
@Override
|
||||
public ADForm getForm()
|
||||
{
|
||||
return form;
|
||||
|
|
|
@ -95,7 +95,7 @@ import org.zkoss.zul.impl.Utils;
|
|||
import org.zkoss.zul.impl.XulElement;
|
||||
|
||||
/**
|
||||
* Archive Viewer
|
||||
* Archive Viewer Form with query and viewer tab.
|
||||
*
|
||||
* @author Niraj Sohun
|
||||
* @date September 28, 2007
|
||||
|
@ -132,7 +132,7 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
if (newpage != null) {
|
||||
try {
|
||||
dynInit();
|
||||
jbInit();
|
||||
zkInit();
|
||||
if (ClientInfo.isMobile() || MSysConfig.getBooleanValue(MSysConfig.ZK_USE_PDF_JS_VIEWER, false, Env.getAD_Client_ID(Env.getCtx()))) {
|
||||
if (media != null && iframe.getSrc() == null) {
|
||||
String url = Utils.getDynamicMediaURI(form, mediaVersion, media.getName(), media.getFormat());
|
||||
|
@ -148,59 +148,93 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
}
|
||||
}
|
||||
};
|
||||
|
||||
/** UI Form */
|
||||
private CustomForm form;
|
||||
|
||||
//Query Tab
|
||||
/** Report (Y/N) field of query tab */
|
||||
private Checkbox reportField = new Checkbox();
|
||||
private Label processLabel = new Label(Msg.translate(Env.getCtx(), "AD_Process_ID"));
|
||||
/** AD_Process list field of query tab */
|
||||
private Listbox processField = new Listbox();
|
||||
private Label tableLabel = new Label(Msg.translate(Env.getCtx(), "AD_Table_ID"));
|
||||
/** AD_Table list field of query tab */
|
||||
private Listbox tableField = new Listbox();
|
||||
private Label bPartnerLabel = new Label(Msg.translate(Env.getCtx(), "C_BPartner_ID"));
|
||||
/** Business partner field of query tab */
|
||||
private WSearchEditor bPartnerField = null;
|
||||
private Label nameQLabel = new Label(Msg.translate(Env.getCtx(), "Name"));
|
||||
/** Name field of query tab */
|
||||
private Textbox nameQField = new Textbox();
|
||||
private Label descriptionQLabel = new Label(Msg.translate(Env.getCtx(), "Description"));
|
||||
/** Description field of query tab */
|
||||
private Textbox descriptionQField = new Textbox();
|
||||
private Label helpQLabel = new Label(Msg.translate(Env.getCtx(), "Help"));
|
||||
/** Help field of query tab */
|
||||
private Textbox helpQField = new Textbox();
|
||||
private Label createdByQLabel = new Label(Msg.translate(Env.getCtx(), "CreatedBy"));
|
||||
/** Created by user list field of query tab */
|
||||
private Listbox createdByQField = new Listbox();
|
||||
private Label createdQLabel = new Label(Msg.translate(Env.getCtx(), "Created"));
|
||||
/** Created date from field of query tab */
|
||||
private Datebox createdQFrom = new Datebox();
|
||||
/** Created date to field of query tab */
|
||||
private Datebox createdQTo = new Datebox();
|
||||
|
||||
//Viewer Tab
|
||||
/** Prior button of viewer tab */
|
||||
private Button bBack = new Button();
|
||||
/** Next button of viewer tab */
|
||||
private Button bNext = new Button();
|
||||
/** Show index of current archive record, part of viewer tab */
|
||||
private Label positionInfo = new Label(".");
|
||||
private Label createdByLabel = new Label(Msg.translate(Env.getCtx(), "CreatedBy"));
|
||||
/** Created by field of viewer tab */
|
||||
private Textbox createdByField = new Textbox();
|
||||
private DatetimeBox createdField = new DatetimeBox();
|
||||
|
||||
/** Created field of viewer tab */
|
||||
private DatetimeBox createdField = new DatetimeBox();
|
||||
private Label nameLabel = new Label(Msg.translate(Env.getCtx(), "Name"));
|
||||
/** Name field of viewer tab */
|
||||
private Textbox nameField = new Textbox();
|
||||
private Label descriptionLabel = new Label(Msg.translate(Env.getCtx(), "Description"));
|
||||
/** Description field of viewer tab */
|
||||
private Textbox descriptionField = new Textbox();
|
||||
private Label helpLabel = new Label(Msg.translate(Env.getCtx(), "Help"));
|
||||
private Textbox helpField = new Textbox();
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
/** Help field of viewer tab */
|
||||
private Textbox helpField = new Textbox();
|
||||
private Button updateArchive = new Button();
|
||||
private Button deleteArchive = new Button();
|
||||
/** Button to email current archive */
|
||||
private Button bEmail = new Button();
|
||||
|
||||
private Tabbox tabbox = new Tabbox();
|
||||
/** Iframe to view archive content, part of viewer tab. */
|
||||
private Iframe iframe = new Iframe();
|
||||
/** Button to refresh {@link #iframe} */
|
||||
private Button bRefresh = new Button();
|
||||
|
||||
/** Content of {@link #form} */
|
||||
private Tabbox tabbox = new Tabbox();
|
||||
/** Tabs of {@link #tabbox} */
|
||||
private Tabs tabs = new Tabs();
|
||||
/** Tabpanels of {@link #tabbox} */
|
||||
private Tabpanels tabpanels = new Tabpanels();
|
||||
|
||||
private Iframe iframe = new Iframe();
|
||||
private Button bRefresh = new Button();
|
||||
/** Bottom button panel of {@link #form} */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
|
||||
/** If true, query tab is visible, false otherwise */
|
||||
private boolean showQuery = true;
|
||||
|
||||
/** For ZK_USE_PDF_JS_VIEWER, increment by 1 for each refresh of {@link #media}. */
|
||||
private int mediaVersion = 0;
|
||||
private AMedia media;
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
public WArchiveViewer()
|
||||
{
|
||||
log.info("");
|
||||
if (log.isLoggable(Level.INFO)) log.info("");
|
||||
|
||||
form = new WArchiveViewerForm();
|
||||
|
||||
|
@ -208,9 +242,8 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
}
|
||||
|
||||
/**
|
||||
* Dynamic Init
|
||||
*/
|
||||
|
||||
* Dynamic Init
|
||||
*/
|
||||
private void dynInit()
|
||||
{
|
||||
processField = new Listbox();
|
||||
|
@ -234,6 +267,11 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
Env.getCtx(), "C_BPartner_ID"), "", true, false, true);
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Show archive content in {@link #iframe}.
|
||||
* @param name
|
||||
* @param data
|
||||
*/
|
||||
private void reportViewer(String name, byte[] data)
|
||||
{
|
||||
media = new AMedia(name + ".pdf", "pdf", "application/pdf", data);
|
||||
|
@ -261,11 +299,10 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
}
|
||||
|
||||
/**
|
||||
* Static Init
|
||||
* Layout {@link #form}.
|
||||
* @throws Exception
|
||||
*/
|
||||
|
||||
private void jbInit() throws Exception
|
||||
*/
|
||||
private void zkInit() throws Exception
|
||||
{
|
||||
ZKUpdateUtil.setWidth(tabbox, "100%");
|
||||
ZKUpdateUtil.setVflex(tabbox, "1");
|
||||
|
@ -607,10 +644,9 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
form.appendChild(confirmPanel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(Event e) throws Exception
|
||||
{
|
||||
log.info(e.getName());
|
||||
|
||||
if (e.getTarget() == updateArchive)
|
||||
cmd_updateArchive();
|
||||
else if(e.getTarget() == deleteArchive)
|
||||
|
@ -648,7 +684,7 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
}
|
||||
|
||||
/**
|
||||
* Update Query Display
|
||||
* Update Query Tab
|
||||
*/
|
||||
private void updateQDisplay()
|
||||
{
|
||||
|
@ -669,6 +705,9 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
bPartnerLabel.getParent().setVisible(!reports);
|
||||
} // updateQDisplay
|
||||
|
||||
/**
|
||||
* Delete current archive record.
|
||||
*/
|
||||
public void cmd_deleteArchive(){
|
||||
Dialog.ask(m_WindowNo, "DeleteRecord?", new Callback<Boolean>() {
|
||||
|
||||
|
@ -709,10 +748,9 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
}
|
||||
|
||||
/**
|
||||
* Update View Display
|
||||
* @param next show next Archive
|
||||
*/
|
||||
|
||||
* Update Viewer Tab
|
||||
* @param next true to show next archive, false to show previous archive
|
||||
*/
|
||||
private void updateVDisplay (boolean next)
|
||||
{
|
||||
if (m_archives == null)
|
||||
|
@ -734,7 +772,8 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
deleteArchive.setEnabled(m_archives.length > 0);
|
||||
updateArchive.setEnabled(false);
|
||||
|
||||
log.info("Index=" + m_index + ", Length=" + m_archives.length);
|
||||
if (log.isLoggable(Level.INFO))
|
||||
log.info("Index=" + m_index + ", Length=" + m_archives.length);
|
||||
|
||||
if (m_archives.length == 0)
|
||||
{
|
||||
|
@ -760,16 +799,15 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
try
|
||||
{
|
||||
in = ar.getInputStream();
|
||||
//pdfViewer.setScale(reportField.isSelected() ? 50 : 75);
|
||||
if (in != null)
|
||||
reportViewer(ar.getName(), ar.getBinaryData());//pdfViewer.loadPDF(in);
|
||||
reportViewer(ar.getName(), ar.getBinaryData());
|
||||
else
|
||||
iframe.getChildren().clear();//pdfViewer.clearDocument();
|
||||
iframe.getChildren().clear();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.log(Level.SEVERE, "pdf", e);
|
||||
iframe.getChildren().clear();//pdfViewer.clearDocument();
|
||||
log.log(Level.SEVERE, e.getMessage(), e);
|
||||
iframe.getChildren().clear();
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
@ -785,9 +823,8 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
} // updateVDisplay
|
||||
|
||||
/**
|
||||
* Update Archive Info
|
||||
*/
|
||||
|
||||
* Update {@link MArchive} and viewer tab.
|
||||
*/
|
||||
private void cmd_updateArchive()
|
||||
{
|
||||
MArchive ar = m_archives[m_index];
|
||||
|
@ -815,7 +852,8 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
update = true;
|
||||
}
|
||||
|
||||
log.info("Update=" + update);
|
||||
if (log.isLoggable(Level.INFO))
|
||||
log.info("Update=" + update);
|
||||
|
||||
if (update)
|
||||
ar.saveEx();
|
||||
|
@ -826,12 +864,11 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
} // cmd_updateArchive
|
||||
|
||||
/**
|
||||
* Query Directly
|
||||
* Execute query.
|
||||
* @param isReport report
|
||||
* @param AD_Table_ID table
|
||||
* @param Record_ID tecord
|
||||
*/
|
||||
|
||||
*/
|
||||
public void query (boolean isReport, int AD_Table_ID, int Record_ID)
|
||||
{
|
||||
if (log.isLoggable(Level.CONFIG)) log.config("Report=" + isReport + ", AD_Table_ID=" + AD_Table_ID + ",Record_ID=" + Record_ID);
|
||||
|
@ -841,10 +878,9 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
cmd_query();
|
||||
} // query
|
||||
|
||||
/**************************************************************************
|
||||
* Create Query
|
||||
*/
|
||||
|
||||
/**
|
||||
* Execute Query
|
||||
*/
|
||||
private void cmd_query()
|
||||
{
|
||||
boolean reports = reportField.isChecked();
|
||||
|
@ -907,10 +943,14 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis
|
|||
updateVDisplay(false);
|
||||
} // cmd_query
|
||||
|
||||
/**
|
||||
* @param showQuery true to show query tab, false otherwise
|
||||
*/
|
||||
public void setShowQuery(boolean showQuery) {
|
||||
this.showQuery = showQuery;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ADForm getForm() {
|
||||
return form;
|
||||
}
|
||||
|
|
|
@ -81,6 +81,9 @@ import org.zkoss.zul.Radiogroup;
|
|||
import org.zkoss.zul.Space;
|
||||
import org.zkoss.zul.Vlayout;
|
||||
|
||||
/**
|
||||
* Form to create order, invoice or project lines from BOM.
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VBOMDrop")
|
||||
public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChangeListener
|
||||
{
|
||||
|
@ -89,73 +92,86 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
*/
|
||||
private static final long serialVersionUID = -525234460800183807L;
|
||||
|
||||
private static final String FEATURE_GROUP_KEY = "FeatureGroupKey";
|
||||
/** Groupbox attribute to store BOMLevel|Feature string */
|
||||
private static final String FEATURE_GROUP_KEY_ATTR = "FeatureGroupKey";
|
||||
|
||||
private static final String OPTION_PRODUCT_KEY = "OptionProductKey";
|
||||
/** Checkbox/Radio attribute to store ParentProductID_ChildProductID string */
|
||||
private static final String OPTION_PRODUCT_KEY_ATTR = "OptionProductKey";
|
||||
|
||||
/** Product to create BOMs from */
|
||||
/** BOM parent product */
|
||||
private MProduct m_product;
|
||||
|
||||
/** BOM Qty */
|
||||
/** BOM Qty */
|
||||
private BigDecimal m_qty = Env.ONE;
|
||||
|
||||
/** Logger */
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WBOMDrop.class);
|
||||
|
||||
/** List of all selectors */
|
||||
/** List of selector/checkbox for each BOM line */
|
||||
private ArrayList<org.zkoss.zul.Checkbox> m_selectorList = new ArrayList<org.zkoss.zul.Checkbox>();
|
||||
|
||||
/** List of all quantities */
|
||||
/** List of quantity for each BOM line */
|
||||
private ArrayList<Decimalbox> m_qtyList = new ArrayList<Decimalbox>();
|
||||
|
||||
/** List of all products */
|
||||
/** List of product for each BOM line */
|
||||
private ArrayList<Integer> m_productList = new ArrayList<Integer>();
|
||||
|
||||
/** list child panel of each checkbox+product */
|
||||
/** list of child panel for each BOM line */
|
||||
private ArrayList<Layout> m_childPanelList = new ArrayList<Layout>();
|
||||
|
||||
/** list of panel for checkbox and child panel of a product */
|
||||
/** list of panel for each BOM line */
|
||||
private ArrayList<Layout> m_productPanelList = new ArrayList<Layout>();
|
||||
|
||||
/** Alternative Group Map */
|
||||
/** GroupKey:RadioGroup. Alternative Group Map */
|
||||
private HashMap<String, Radiogroup> m_alternativeGroups = new HashMap<String,Radiogroup>();
|
||||
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
//content panel of selectionGroupbox
|
||||
private Grid selectionPanel = GridFactory.newGridLayout();
|
||||
/** Main layout */
|
||||
private Borderlayout borderLayout;
|
||||
|
||||
/** Selection/parameters group box, north of {@link #borderLayout} */
|
||||
private Groupbox selectionGroupbox = new Groupbox();
|
||||
/** Grid layout of {@link #selectionGroupbox} */
|
||||
private Grid selectionPanel = GridFactory.newGridLayout();
|
||||
/** BOM parent product field of {@link #selectionPanel} */
|
||||
private WSearchEditor fieldProduct;
|
||||
/** Quantity field of {@link #selectionPanel} */
|
||||
private Decimalbox productQty = new Decimalbox();
|
||||
/** Order field of {@link #selectionPanel} */
|
||||
private Listbox orderField = new Listbox();
|
||||
/** Invoice field of {@link #selectionPanel} */
|
||||
private Listbox invoiceField = new Listbox();
|
||||
/** Project field of {@link #selectionPanel} */
|
||||
private Listbox projectField = new Listbox();
|
||||
|
||||
//north selection group box
|
||||
private Groupbox selectionGroupbox = new Groupbox();
|
||||
|
||||
//center bom group box
|
||||
/** BOM group box, center of {@link #borderLayout} */
|
||||
private Groupbox centerGroupbox = new Groupbox();
|
||||
private int indend = 20;
|
||||
|
||||
private WSearchEditor fieldProduct;
|
||||
/** Panel of action buttons. South of {@link #borderLayout} */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
|
||||
/** Form controller */
|
||||
private BOMDrop bomDrop = new BOMDrop();
|
||||
|
||||
/** ParentProductID_ParentBOMLineLevel:Child Panel (in {@link #m_childPanelList}) */
|
||||
private HashMap<String, Component> m_parentContainerMap = new HashMap<>();
|
||||
|
||||
/** BOMLevel|Feature:Groupbox */
|
||||
private Map<String, Groupbox> m_featureGroup = new HashMap<>();
|
||||
|
||||
private Borderlayout borderLayout;
|
||||
|
||||
//selected variant or option with key of ParentProductId_ProductId
|
||||
/** selected variant or option with key of ParentProductId_ProductId */
|
||||
private List<String> m_selectedOtions = new ArrayList<>();
|
||||
//unselected variant or option with key of ParentProductId_ProductId
|
||||
/** unselected variant or option with key of ParentProductId_ProductId */
|
||||
private List<String> m_unselectedOtions = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
public WBOMDrop()
|
||||
{}
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* Layout form
|
||||
*/
|
||||
protected void initForm()
|
||||
{
|
||||
|
@ -194,7 +210,7 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
{
|
||||
log.log(Level.SEVERE, e.getMessage(), e);
|
||||
}
|
||||
} // init
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
|
@ -238,14 +254,13 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
m_alternativeGroups = null;
|
||||
} // dispose
|
||||
|
||||
/**************************************************************************
|
||||
* Create Selection Panel
|
||||
* @param order
|
||||
* @param invoice
|
||||
* @param project
|
||||
* @throws Exception
|
||||
*/
|
||||
|
||||
/**
|
||||
* Create Selection/Parameters Panel.
|
||||
* @param order
|
||||
* @param invoice
|
||||
* @param project
|
||||
* @throws Exception
|
||||
*/
|
||||
private void createSelectionPanel (boolean order, boolean invoice, boolean project) throws Exception
|
||||
{
|
||||
Caption caption = new Caption(Msg.translate(Env.getCtx(), "Selection"));
|
||||
|
@ -383,9 +398,9 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
return bomDrop.getDraftInvoices(null);
|
||||
} // getInvoices
|
||||
|
||||
/**************************************************************************
|
||||
* Create Main Panel.
|
||||
* Called when changing Product
|
||||
/**
|
||||
* Create Main Panel.
|
||||
* Called after change of selected product.
|
||||
*/
|
||||
private void createMainPanel ()
|
||||
{
|
||||
|
@ -425,8 +440,7 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
private int maxBomDeep = 0;
|
||||
|
||||
/**
|
||||
* Add BOM Line to this.
|
||||
* Calls addBOMLines if added product is a BOM
|
||||
* Add BOM line to {@link #m_productPanelList}.
|
||||
* @param bomLine BOM Line
|
||||
*/
|
||||
private void addBOMLine (BOMLine bomLine)
|
||||
|
@ -460,15 +474,16 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
} // addBOMLine
|
||||
|
||||
/**
|
||||
* Add Line to Display
|
||||
* Render single BOM line.
|
||||
* @param parentM_Product_ID parent product
|
||||
* @param M_Product_ID product
|
||||
* @param bomType bom type
|
||||
* @param name name
|
||||
* @param lineQty qty
|
||||
* @param parentPanel
|
||||
* @param parentPanel child panel of parent product
|
||||
* @param bomLevel
|
||||
* @param feature
|
||||
* @return {@link Layout}
|
||||
*/
|
||||
private Layout addDisplay (int parentM_Product_ID,
|
||||
int M_Product_ID, String bomType, String name, BigDecimal lineQty, Component parentPanel, int bomLevel, String feature)
|
||||
|
@ -508,7 +523,7 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
} else { // Variant
|
||||
checkbox = new Radio();
|
||||
}
|
||||
checkbox.setAttribute(OPTION_PRODUCT_KEY, optionKey);
|
||||
checkbox.setAttribute(OPTION_PRODUCT_KEY_ATTR, optionKey);
|
||||
|
||||
selectPanel.appendChild(checkbox);
|
||||
m_selectorList.add(checkbox);
|
||||
|
@ -556,7 +571,7 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
featureGroup = m_featureGroup.get(key);
|
||||
if (featureGroup == null) {
|
||||
featureGroup = new Groupbox();
|
||||
featureGroup.setAttribute(FEATURE_GROUP_KEY, key);
|
||||
featureGroup.setAttribute(FEATURE_GROUP_KEY_ATTR, key);
|
||||
featureGroup.appendChild(new Caption(feature));
|
||||
m_featureGroup.put(key, featureGroup);
|
||||
}
|
||||
|
@ -574,7 +589,7 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
} else {
|
||||
String groupName = String.valueOf(parentM_Product_ID) + "_" + bomType + "_" + parentPanel.toString();
|
||||
if (featureGroup != null) {
|
||||
groupName = groupName + "_" + featureGroup.getAttribute(FEATURE_GROUP_KEY);
|
||||
groupName = groupName + "_" + featureGroup.getAttribute(FEATURE_GROUP_KEY_ATTR);
|
||||
}
|
||||
Radiogroup radioGroup = m_alternativeGroups.get(groupName);
|
||||
|
||||
|
@ -623,13 +638,21 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
return outerProductPanel;
|
||||
} // addDisplay
|
||||
|
||||
private Div createDivPanel (int with) {
|
||||
/**
|
||||
* @param width
|
||||
* @return {@link Div}
|
||||
*/
|
||||
private Div createDivPanel (int width) {
|
||||
Div divPanel = new Div ();
|
||||
ZKUpdateUtil.setWidth(divPanel, String.format("%1$spx", with));
|
||||
ZKUpdateUtil.setWidth(divPanel, String.format("%1$spx", width));
|
||||
divPanel.setStyle("padding-right:0;padding-left:0");
|
||||
return divPanel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param width
|
||||
* @return {@link Hlayout}
|
||||
*/
|
||||
private Hlayout createHlayoutPanel (String width) {
|
||||
Hlayout layout = new Hlayout();
|
||||
layout.setSpacing("0");
|
||||
|
@ -637,6 +660,10 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
return layout;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param width
|
||||
* @return {@link Vlayout}
|
||||
*/
|
||||
private Vlayout createVlayoutPanel (String width) {
|
||||
Vlayout layout = new Vlayout();
|
||||
layout.setSpacing("0");
|
||||
|
@ -644,10 +671,11 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
return layout;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* Action Listener
|
||||
* @param e event
|
||||
/**
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent (Event e) throws Exception
|
||||
{
|
||||
if (log.isLoggable(Level.CONFIG)) log.config(e.getName());
|
||||
|
@ -675,19 +703,19 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
// set qty input of uncheck radio button
|
||||
index = m_selectorList.indexOf(radio);
|
||||
m_qtyList.get(index).setReadonly(true);
|
||||
m_selectedOtions.remove(radio.getAttribute(OPTION_PRODUCT_KEY));
|
||||
m_unselectedOtions.add((String) radio.getAttribute(OPTION_PRODUCT_KEY));
|
||||
m_selectedOtions.remove(radio.getAttribute(OPTION_PRODUCT_KEY_ATTR));
|
||||
m_unselectedOtions.add((String) radio.getAttribute(OPTION_PRODUCT_KEY_ATTR));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
updateBOMChildVisibility();
|
||||
if (checkbox.isChecked()) {
|
||||
m_selectedOtions.add((String) checkbox.getAttribute(OPTION_PRODUCT_KEY));
|
||||
m_unselectedOtions.remove(checkbox.getAttribute(OPTION_PRODUCT_KEY));
|
||||
m_selectedOtions.add((String) checkbox.getAttribute(OPTION_PRODUCT_KEY_ATTR));
|
||||
m_unselectedOtions.remove(checkbox.getAttribute(OPTION_PRODUCT_KEY_ATTR));
|
||||
} else {
|
||||
m_unselectedOtions.add((String) checkbox.getAttribute(OPTION_PRODUCT_KEY));
|
||||
m_selectedOtions.remove(checkbox.getAttribute(OPTION_PRODUCT_KEY));
|
||||
m_unselectedOtions.add((String) checkbox.getAttribute(OPTION_PRODUCT_KEY_ATTR));
|
||||
m_selectedOtions.remove(checkbox.getAttribute(OPTION_PRODUCT_KEY_ATTR));
|
||||
}
|
||||
}
|
||||
// Product / Qty
|
||||
|
@ -766,6 +794,9 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
enableSave();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update state of Ok button in {@link #confirmPanel}.
|
||||
*/
|
||||
private void enableSave() {
|
||||
// Enable OK
|
||||
boolean OK = m_product != null;
|
||||
|
@ -803,6 +834,10 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
confirmPanel.setEnabled("Ok", OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle changes to {@link #fieldProduct}
|
||||
* @param productFieldValue
|
||||
*/
|
||||
private void onProductChanged(Object productFieldValue) {
|
||||
int id = (productFieldValue != null && productFieldValue instanceof Integer) ? (Integer)productFieldValue : 0;
|
||||
if (m_product == null || m_product.get_ID() != id)
|
||||
|
@ -812,8 +847,8 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
}
|
||||
|
||||
/**
|
||||
* update display of bom tree
|
||||
* for item is not selected, hide child of it.
|
||||
* Update display of bom tree.
|
||||
* For item not selected, hide corresponding panel (in {@link #m_childPanelList}).
|
||||
*/
|
||||
protected void updateBOMChildVisibility() {
|
||||
int index = 0;
|
||||
|
@ -831,8 +866,8 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
}
|
||||
|
||||
/**
|
||||
* Enable/disable qty based on selection
|
||||
* @param source JCheckBox or JRadioButton
|
||||
* Save changes. Delegate to {@link #cmd_save(Trx)}.
|
||||
* @return true if save successfully, false otherwise.
|
||||
*/
|
||||
private boolean onSave()
|
||||
{
|
||||
|
@ -859,10 +894,10 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* Save Selection
|
||||
/**
|
||||
* Save changes to DB.
|
||||
* @param trx
|
||||
* @return true if saved
|
||||
* @return true if saved, false otherwise.
|
||||
*/
|
||||
private boolean cmd_save(Trx trx)
|
||||
{
|
||||
|
@ -901,10 +936,10 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
} // cmd_save
|
||||
|
||||
/**
|
||||
* Save to Order
|
||||
* Create and save order lines from BOM.
|
||||
* @param C_Order_ID id
|
||||
* @param trx
|
||||
* @return true if saved
|
||||
* @return true if saved, false otherwise.
|
||||
*/
|
||||
private boolean cmd_saveOrder (int C_Order_ID, Trx trx)
|
||||
{
|
||||
|
@ -947,10 +982,10 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
} // cmd_saveOrder
|
||||
|
||||
/**
|
||||
* Save to Invoice
|
||||
* Create and save invoice lines from BOM.
|
||||
* @param C_Invoice_ID id
|
||||
* @param trx
|
||||
* @return true if saved
|
||||
* @return true if saved, false otherwise.
|
||||
*/
|
||||
private boolean cmd_saveInvoice (int C_Invoice_ID, Trx trx)
|
||||
{
|
||||
|
@ -992,10 +1027,10 @@ public class WBOMDrop extends ADForm implements EventListener<Event>, ValueChang
|
|||
} // cmd_saveInvoice
|
||||
|
||||
/**
|
||||
* Save to Project
|
||||
* Create and save project lines from BOM.
|
||||
* @param C_Project_ID id
|
||||
* @param trx
|
||||
* @return true if saved
|
||||
* @return true if saved, false otherwise
|
||||
*/
|
||||
private boolean cmd_saveProject (int C_Project_ID, Trx trx)
|
||||
{
|
||||
|
|
|
@ -61,7 +61,7 @@ import org.zkoss.zul.South;
|
|||
/**
|
||||
* This class represents the Custom Form for generating charges
|
||||
* from natural accounts.
|
||||
*
|
||||
* <br/>
|
||||
* The form is comprised of two parts.
|
||||
* The upper portion can be used to create new charges using the general charge accounts.
|
||||
* The lower portion can be used to create charges based on the natural account.
|
||||
|
@ -77,6 +77,7 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
*/
|
||||
private static final long serialVersionUID = 4571016052942218676L;
|
||||
|
||||
/** UI Form instance */
|
||||
private CustomForm form = new CustomForm();
|
||||
|
||||
/** AD_Message for "Create". */
|
||||
|
@ -84,8 +85,8 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
/** Logger. */
|
||||
private static final CLogger log = CLogger.getCLogger(WCharge.class);
|
||||
|
||||
// new panel
|
||||
/** Grid for components for creating a new charge account. */
|
||||
// new charge panel
|
||||
/** Grid for components for creating a new charge account. North of {@link #form}. */
|
||||
private Grid m_grdNew = GridFactory.newGridLayout();
|
||||
/** Value (key) field label. */
|
||||
private Label m_lblValue = new Label();
|
||||
|
@ -101,11 +102,11 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
private Button m_btnNew = new Button();
|
||||
|
||||
// account panel
|
||||
/** Grid for components for creating a charge form a selected account. **/
|
||||
/** Grid for components for creating a charge form a selected account. Center of {@link #form}. */
|
||||
private Panel m_pnlAccount = new Panel();
|
||||
/** Button to create charge from selected account. */
|
||||
/** Button to create charge from selected account. South of {@link #m_pnlAccount}. */
|
||||
private Button m_btnAccount = new Button();
|
||||
/** Table to hold data of accounts. */
|
||||
/** Table to hold data of accounts. Center of {@link #m_pnlAccount}. */
|
||||
private WListbox m_tblData = new WListbox();
|
||||
/** selected account count */
|
||||
private int m_selectedCount;
|
||||
|
@ -120,7 +121,6 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
initForm();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initialises the panel.
|
||||
*/
|
||||
|
@ -137,11 +137,8 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
{
|
||||
log.log(Level.SEVERE, "", e);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initialises the static components of the form.
|
||||
*/
|
||||
|
@ -149,10 +146,11 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
{
|
||||
createNewChargePanel();
|
||||
createAccountPanel();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #form}
|
||||
*/
|
||||
private void zkInit()
|
||||
{
|
||||
Borderlayout contentPane = new Borderlayout();
|
||||
|
@ -170,8 +168,8 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
}
|
||||
|
||||
/**
|
||||
* Creates the account panel.
|
||||
*
|
||||
* Creates the account panel ({@link #m_pnlAccount}).
|
||||
* <br/>
|
||||
* The account panel contains:
|
||||
* <li>a table detailing all accounts
|
||||
* <li>a button for creating charges for selected accounts
|
||||
|
@ -212,13 +210,11 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
m_btnAccount.setDisabled(true);
|
||||
southPanel.appendChild(new Separator());
|
||||
southPanel.appendChild(m_btnAccount);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the New Charge panel.
|
||||
*
|
||||
* Creates the New Charge panel ({@link #m_grdNew}).
|
||||
* <br/>
|
||||
* The New Charge panel is used to specify the name and key of an account
|
||||
* and whether or not the account is a charge account.
|
||||
*/
|
||||
|
@ -246,8 +242,7 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
rows.appendChild(row);
|
||||
Label label = new Label(Msg.getMsg(Env.getCtx(), "ChargeNewAccount"));
|
||||
label.setStyle("font-weight: bold;");
|
||||
row.appendCellChild(label, 3);
|
||||
|
||||
row.appendCellChild(label, 3);
|
||||
|
||||
row = new Row();
|
||||
rows.appendChild(row);
|
||||
|
@ -266,8 +261,6 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
row = new Row();
|
||||
rows.appendChild(row);
|
||||
row.appendCellChild(new Separator(), 3);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -302,6 +295,7 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
*
|
||||
* @param event event that has been fired.
|
||||
*/
|
||||
@Override
|
||||
public void onEvent(Event event)
|
||||
{
|
||||
if (log.isLoggable(Level.INFO)) log.info(event.getName());
|
||||
|
@ -319,8 +313,6 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
{
|
||||
createAccount();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -363,7 +355,7 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
} // createNew
|
||||
|
||||
/**
|
||||
* Creates Charges from Accounts.
|
||||
* Creates Charges from Accounts.<br/>
|
||||
* Charges are created for the selected accounts.
|
||||
* The selection is cleared upon completion.
|
||||
*/
|
||||
|
@ -381,16 +373,17 @@ public class WCharge extends Charge implements IFormController, EventListener<Ev
|
|||
|
||||
m_selectedCount = 0;
|
||||
m_btnAccount.setDisabled(true);
|
||||
|
||||
return;
|
||||
} // createAccount
|
||||
|
||||
/**
|
||||
* Close form.
|
||||
*/
|
||||
public void close()
|
||||
{
|
||||
SessionManager.getAppDesktop().closeActiveWindow();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ADForm getForm() {
|
||||
return form;
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ import org.compiere.model.GridTab;
|
|||
import org.compiere.model.MBankStatement;
|
||||
import org.compiere.model.MColumn;
|
||||
import org.compiere.model.MDepositBatch;
|
||||
import org.compiere.model.MDepositBatchLine;
|
||||
import org.compiere.model.MLookup;
|
||||
import org.compiere.model.MLookupFactory;
|
||||
import org.compiere.model.MPayment;
|
||||
|
@ -60,16 +61,15 @@ import org.zkoss.zul.Center;
|
|||
import org.zkoss.zul.Hbox;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form to create Deposit Batch ({@link MDepositBatch} and {@link MDepositBatchLine}) from payment transactions.
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WCreateFromDepositBatchUI extends CreateFromDepositBatch implements EventListener<Event>
|
||||
{
|
||||
/** UI form instance */
|
||||
private WCreateFromWindow window;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param tab
|
||||
*/
|
||||
public WCreateFromDepositBatchUI(GridTab tab)
|
||||
|
@ -96,12 +96,14 @@ public class WCreateFromDepositBatchUI extends CreateFromDepositBatch implements
|
|||
AEnv.showWindow(window);
|
||||
}
|
||||
|
||||
/** Window No */
|
||||
/** Window No */
|
||||
private int p_WindowNo;
|
||||
|
||||
/** Logger */
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WCreateFromDepositBatchUI.class);
|
||||
|
||||
/** form parameters for loading of payment transactions ({@link #loadBankAccount}) */
|
||||
|
||||
protected Label bankAccountLabel = new Label();
|
||||
protected WTableDirEditor bankAccountField;
|
||||
|
||||
|
@ -119,6 +121,7 @@ public class WCreateFromDepositBatchUI extends CreateFromDepositBatch implements
|
|||
|
||||
protected Label amtFromLabel = new Label(Msg.translate(Env.getCtx(), "PayAmt"));
|
||||
protected WNumberEditor amtFromField = new WNumberEditor("AmtFrom", false, false, true, DisplayType.Amount, Msg.translate(Env.getCtx(), "AmtFrom"));
|
||||
|
||||
protected Label amtToLabel = new Label("-");
|
||||
protected WNumberEditor amtToField = new WNumberEditor("AmtTo", false, false, true, DisplayType.Amount, Msg.translate(Env.getCtx(), "AmtTo"));
|
||||
|
||||
|
@ -127,6 +130,7 @@ public class WCreateFromDepositBatchUI extends CreateFromDepositBatch implements
|
|||
|
||||
protected Label dateFromLabel = new Label(Msg.translate(Env.getCtx(), "DateTrx"));
|
||||
protected WDateEditor dateFromField = new WDateEditor("DateFrom", false, false, true, Msg.translate(Env.getCtx(), "DateFrom"));
|
||||
|
||||
protected Label dateToLabel = new Label("-");
|
||||
protected WDateEditor dateToField = new WDateEditor("DateTo", false, false, true, Msg.translate(Env.getCtx(), "DateTo"));
|
||||
|
||||
|
@ -185,6 +189,10 @@ public class WCreateFromDepositBatchUI extends CreateFromDepositBatch implements
|
|||
return true;
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void zkInit() throws Exception
|
||||
{
|
||||
bankAccountLabel.setText(Msg.translate(Env.getCtx(), "C_BankAccount_ID"));
|
||||
|
@ -265,10 +273,11 @@ public class WCreateFromDepositBatchUI extends CreateFromDepositBatch implements
|
|||
}
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* Event Listener
|
||||
* @param e event
|
||||
* @throws Exception
|
||||
*/
|
||||
@Override
|
||||
public void onEvent(Event e) throws Exception
|
||||
{
|
||||
if (log.isLoggable(Level.CONFIG)) log.config("Action=" + e.getTarget().getId());
|
||||
|
|
|
@ -18,14 +18,15 @@ import org.compiere.grid.ICreateFrom;
|
|||
import org.compiere.model.GridTab;
|
||||
|
||||
/**
|
||||
*
|
||||
* Static method to instantiate {@link ICreateFrom} instance.
|
||||
* @author hengsin
|
||||
*
|
||||
*/
|
||||
public class WCreateFromFactory
|
||||
{
|
||||
/**
|
||||
*
|
||||
* Instantiate Create From form instance.
|
||||
* Delegate to {@link Extensions#getCreateFrom(GridTab)}.
|
||||
* @param mTab
|
||||
* @return ICreateFrom instance
|
||||
*/
|
||||
|
|
|
@ -45,31 +45,32 @@ import org.zkoss.zul.Separator;
|
|||
import org.zkoss.zul.South;
|
||||
|
||||
/**
|
||||
*
|
||||
* Create from form window
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form
|
||||
public class WCreateFromForm extends ADForm implements EventListener<Event>, WTableModelListener, DialogEvents
|
||||
{
|
||||
|
||||
{
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -3703236565441597403L;
|
||||
/** Form controller */
|
||||
private CreateFromForm form;
|
||||
|
||||
/** Form parameter panel. North of form. */
|
||||
private Panel parameterPanel = new Panel();
|
||||
/** Action buttons panel. South of form. */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
/** Form status bar. South of form. */
|
||||
private StatusBarPanel statusBar = new StatusBarPanel();
|
||||
/** Data grid. Center of form. */
|
||||
private WListbox dataTable = ListboxFactory.newDataTable();
|
||||
|
||||
/** true if form cancelled by user */
|
||||
private boolean isCancel;
|
||||
|
||||
/** Select all action button Id */
|
||||
public static final String SELECT_ALL = "SelectAll";
|
||||
|
||||
/**
|
||||
*
|
||||
* @param createFrom
|
||||
*/
|
||||
public WCreateFromForm(CreateFromForm createFrom)
|
||||
|
@ -100,6 +101,10 @@ public class WCreateFromForm extends ADForm implements EventListener<Event>, WTa
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout form.<br/>
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void zkInit() throws Exception
|
||||
{
|
||||
Borderlayout contentPane = new Borderlayout();
|
||||
|
@ -211,7 +216,7 @@ public class WCreateFromForm extends ADForm implements EventListener<Event>, WTa
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Call {@link CreateFromForm#save(org.compiere.minigrid.IMiniTable, String, org.compiere.model.GridTab)}.
|
||||
* @param trxName
|
||||
* @return true if save success
|
||||
*/
|
||||
|
@ -260,7 +265,6 @@ public class WCreateFromForm extends ADForm implements EventListener<Event>, WTa
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {@link WListbox}
|
||||
*/
|
||||
public WListbox getWListbox()
|
||||
|
@ -269,7 +273,6 @@ public class WCreateFromForm extends ADForm implements EventListener<Event>, WTa
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {@link Panel}
|
||||
*/
|
||||
public Panel getParameterPanel()
|
||||
|
@ -278,7 +281,6 @@ public class WCreateFromForm extends ADForm implements EventListener<Event>, WTa
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {@link ConfirmPanel}
|
||||
*/
|
||||
public ConfirmPanel getConfirmPanel()
|
||||
|
@ -287,7 +289,6 @@ public class WCreateFromForm extends ADForm implements EventListener<Event>, WTa
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true if cancel by user
|
||||
*/
|
||||
public boolean isCancel()
|
||||
|
|
|
@ -56,22 +56,22 @@ import org.zkoss.zk.ui.event.EventListener;
|
|||
import org.zkoss.zul.Space;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form to create Invoice Lines from Purchase Order, Material Receipt or Vendor RMA.
|
||||
* @author hengsin
|
||||
*
|
||||
*/
|
||||
public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventListener<Event>, ValueChangeListener
|
||||
{
|
||||
/** UI form instance */
|
||||
private WCreateFromWindow window;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param tab
|
||||
*/
|
||||
public WCreateFromInvoiceUI(GridTab tab)
|
||||
{
|
||||
super(tab);
|
||||
log.info(getGridTab().toString());
|
||||
if (log.isLoggable(Level.INFO))
|
||||
log.info(getGridTab().toString());
|
||||
|
||||
window = new WCreateFromWindow(this, getGridTab().getWindowNo());
|
||||
|
||||
|
@ -92,19 +92,22 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
AEnv.showWindow(window);
|
||||
}
|
||||
|
||||
/** Window No */
|
||||
/** Window No */
|
||||
private int p_WindowNo;
|
||||
|
||||
/** Logger */
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WCreateFromInvoiceUI.class);
|
||||
|
||||
protected Label bPartnerLabel = new Label();
|
||||
/** Business partner parameter field */
|
||||
protected WEditor bPartnerField;
|
||||
|
||||
protected Label orderLabel = new Label();
|
||||
/** Orders parameter field */
|
||||
protected Listbox orderField = ListboxFactory.newDropdownListbox();
|
||||
|
||||
protected Label shipmentLabel = new Label();
|
||||
/** Shipments parameter field */
|
||||
protected Listbox shipmentField = ListboxFactory.newDropdownListbox();
|
||||
|
||||
/** Label for the rma selection */
|
||||
|
@ -112,10 +115,16 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
/** Combo box for selecting RMA document */
|
||||
protected Listbox rmaField = ListboxFactory.newDropdownListbox();
|
||||
|
||||
/** Grid layout for parameter panel */
|
||||
private Grid parameterStdLayout;
|
||||
|
||||
private boolean isCreditMemo = false;
|
||||
|
||||
/** true when form is handling an event */
|
||||
private boolean m_actionActive = false;
|
||||
/** Number of column for {@link #parameterStdLayout} */
|
||||
private int noOfParameterColumn;
|
||||
|
||||
@Override
|
||||
public boolean dynInit() throws Exception
|
||||
{
|
||||
|
@ -143,6 +152,10 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
return true;
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void zkInit() throws Exception
|
||||
{
|
||||
bPartnerLabel.setText(Msg.getElement(Env.getCtx(), "C_BPartner_ID"));
|
||||
|
@ -194,6 +207,10 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
hideEmptyRow(rows);
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide a row if all parameter fields within a row is invisible.
|
||||
* @param rows
|
||||
*/
|
||||
private void hideEmptyRow(org.zkoss.zul.Rows rows) {
|
||||
for(Component a : rows.getChildren()) {
|
||||
Row row = (Row) a;
|
||||
|
@ -221,10 +238,6 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
}
|
||||
}
|
||||
|
||||
private boolean m_actionActive = false;
|
||||
|
||||
private int noOfParameterColumn;
|
||||
|
||||
@Override
|
||||
public void onEvent(Event e) throws Exception
|
||||
{
|
||||
|
@ -286,7 +299,7 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
window.tableChanged(null);
|
||||
} // vetoableChange
|
||||
|
||||
/**************************************************************************
|
||||
/**
|
||||
* Load BPartner Field
|
||||
* @param forInvoice true if Invoices are to be created, false receipts
|
||||
* @throws Exception if Lookups cannot be initialized
|
||||
|
@ -329,6 +342,10 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
initBPDetails(C_BPartner_ID);
|
||||
} // initBPartnerOIS
|
||||
|
||||
/**
|
||||
* Call {@link #initBPShipmentDetails(int)} and {@link #initBPRMADetails(int)}.
|
||||
* @param C_BPartner_ID
|
||||
*/
|
||||
private void initBPDetails(int C_BPartner_ID)
|
||||
{
|
||||
initBPShipmentDetails(C_BPartner_ID);
|
||||
|
@ -336,7 +353,7 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
}
|
||||
|
||||
/**
|
||||
* Load PBartner dependent Shipment Field.
|
||||
* Load BPartner dependent Shipments.
|
||||
* @param C_BPartner_ID
|
||||
*/
|
||||
private void initBPShipmentDetails(int C_BPartner_ID)
|
||||
|
@ -359,7 +376,7 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
}
|
||||
|
||||
/**
|
||||
* Load RMA that are candidates for billing
|
||||
* Load RMA documents that are candidates for billing
|
||||
* @param C_BPartner_ID BPartner
|
||||
*/
|
||||
private void initBPRMADetails(int C_BPartner_ID)
|
||||
|
@ -379,9 +396,9 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
}
|
||||
|
||||
/**
|
||||
* Load Order Line records
|
||||
* Load Order Line records.
|
||||
* @param C_Order_ID Order
|
||||
* @param forInvoice true if for invoice vs. delivery qty
|
||||
* @param forInvoice true for invoice line, false for inout line
|
||||
*/
|
||||
protected void loadOrder (int C_Order_ID, boolean forInvoice)
|
||||
{
|
||||
|
@ -407,7 +424,7 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
}
|
||||
|
||||
/**
|
||||
* Load datas into list box
|
||||
* Load data into list box
|
||||
* @param data data
|
||||
*/
|
||||
protected void loadTableOIS (Vector<?> data)
|
||||
|
@ -443,7 +460,7 @@ public class WCreateFromInvoiceUI extends CreateFromInvoice implements EventList
|
|||
}
|
||||
|
||||
/**
|
||||
* configure layout of parameter grid
|
||||
* Setup columns for parameterGrid
|
||||
* @param parameterGrid
|
||||
*/
|
||||
protected void setupColumns(Grid parameterGrid) {
|
||||
|
|
|
@ -26,16 +26,15 @@ import org.compiere.util.CLogger;
|
|||
import org.compiere.util.Env;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form to create shipment package lines (M_PackageLine) from shipment lines (through M_PackageMPS).
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WCreateFromPackageShipmentUI extends CreateFromPackageShipment
|
||||
{
|
||||
/** Create from window instance */
|
||||
private WCreateFromWindow window;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param mTab
|
||||
*/
|
||||
public WCreateFromPackageShipmentUI(GridTab mTab)
|
||||
|
@ -59,9 +58,12 @@ public class WCreateFromPackageShipmentUI extends CreateFromPackageShipment
|
|||
AEnv.showWindow(window);
|
||||
}
|
||||
|
||||
/** Logger */
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WCreateFromPackageShipmentUI.class);
|
||||
|
||||
/**
|
||||
* Load shipments lines
|
||||
*/
|
||||
@Override
|
||||
protected boolean dynInit() throws Exception
|
||||
{
|
||||
|
|
|
@ -43,16 +43,15 @@ import org.compiere.util.Env;
|
|||
import org.compiere.util.Msg;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form to create RMA lines from shipment lines.
|
||||
* @author hengsin
|
||||
*
|
||||
*/
|
||||
public class WCreateFromRMAUI extends CreateFromRMA implements ValueChangeListener
|
||||
{
|
||||
/** Create from window instance */
|
||||
private WCreateFromWindow window;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param tab
|
||||
*/
|
||||
public WCreateFromRMAUI(GridTab tab)
|
||||
|
@ -79,19 +78,20 @@ public class WCreateFromRMAUI extends CreateFromRMA implements ValueChangeListen
|
|||
AEnv.showWindow(window);
|
||||
}
|
||||
|
||||
/** Window No */
|
||||
/** Window No */
|
||||
private int p_WindowNo;
|
||||
|
||||
/** Logger */
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WCreateFromRMAUI.class);
|
||||
|
||||
protected Label bPartnerLabel = new Label();
|
||||
/** Business partner parameter field */
|
||||
protected WEditor bPartnerField;
|
||||
|
||||
@Override
|
||||
protected boolean dynInit() throws Exception
|
||||
{
|
||||
log.config("");
|
||||
if (log.isLoggable(Level.CONFIG)) log.config("");
|
||||
|
||||
super.dynInit();
|
||||
|
||||
|
@ -105,6 +105,10 @@ public class WCreateFromRMAUI extends CreateFromRMA implements ValueChangeListen
|
|||
return true;
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void zkInit() throws Exception
|
||||
{
|
||||
bPartnerLabel.setText(Msg.getElement(Env.getCtx(), "C_BPartner_ID"));
|
||||
|
@ -142,7 +146,7 @@ public class WCreateFromRMAUI extends CreateFromRMA implements ValueChangeListen
|
|||
window.tableChanged(null);
|
||||
} // vetoableChange
|
||||
|
||||
/**************************************************************************
|
||||
/**
|
||||
* Load BPartner Field
|
||||
* @param forInvoice true if Invoices are to be created, false receipts
|
||||
* @throws Exception if Lookups cannot be initialized
|
||||
|
@ -180,10 +184,9 @@ public class WCreateFromRMAUI extends CreateFromRMA implements ValueChangeListen
|
|||
ListModelTable model = new ListModelTable(data);
|
||||
model.addTableModelListener(window);
|
||||
window.getWListbox().setData(model, getOISColumnNames());
|
||||
//
|
||||
|
||||
//
|
||||
configureMiniTable(window.getWListbox());
|
||||
} // loadOrder
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showWindow()
|
||||
|
|
|
@ -64,13 +64,12 @@ import org.zkoss.zul.Space;
|
|||
import org.zkoss.zul.Vlayout;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form to create shipment lines (M_InOutLine) from Purchase Order, Vendor Invoice or Customer RMA.
|
||||
* @author hengsin
|
||||
*
|
||||
*/
|
||||
public class WCreateFromShipmentUI extends CreateFromShipment implements EventListener<Event>, ValueChangeListener
|
||||
{
|
||||
|
||||
/** Create from window instance */
|
||||
private WCreateFromWindow window;
|
||||
|
||||
/**
|
||||
|
@ -109,9 +108,11 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
private final static CLogger log = CLogger.getCLogger(WCreateFromShipmentUI.class);
|
||||
|
||||
protected Label bPartnerLabel = new Label();
|
||||
/** Business partner parameter field */
|
||||
protected WEditor bPartnerField;
|
||||
|
||||
protected Label orderLabel = new Label();
|
||||
/** Purchase order parameter field */
|
||||
protected Listbox orderField = ListboxFactory.newDropdownListbox();
|
||||
|
||||
/** Label for the rma selection */
|
||||
|
@ -120,17 +121,29 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
protected Listbox rmaField = ListboxFactory.newDropdownListbox();
|
||||
|
||||
protected Label invoiceLabel = new Label();
|
||||
/** Vendor invoice parameter field */
|
||||
protected Listbox invoiceField = ListboxFactory.newDropdownListbox();
|
||||
|
||||
/** True to show only documents from same warehouse with calling M_InOut record */
|
||||
protected Checkbox sameWarehouseCb = new Checkbox();
|
||||
|
||||
protected Label locatorLabel = new Label();
|
||||
/** Locator parameter field */
|
||||
protected WLocatorEditor locatorField = new WLocatorEditor();
|
||||
|
||||
protected Label upcLabel = new Label();
|
||||
/** Product UPC field. Use to select product in data grid. */
|
||||
protected WStringEditor upcField = new WStringEditor();
|
||||
|
||||
/** Grid layout for parameter panel */
|
||||
private Grid parameterStdLayout;
|
||||
|
||||
/** Number of column for {@link #parameterStdLayout} */
|
||||
private int noOfParameterColumn;
|
||||
|
||||
/** true when form is handling event */
|
||||
private boolean m_actionActive = false;
|
||||
|
||||
@Override
|
||||
protected boolean dynInit() throws Exception
|
||||
{
|
||||
|
@ -156,6 +169,10 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
return true;
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void zkInit() throws Exception
|
||||
{
|
||||
boolean isRMAWindow = ((getGridTab().getAD_Window_ID() == WINDOW_RETURNTOVENDOR) || (getGridTab().getAD_Window_ID() == WINDOW_CUSTOMERRETURN));
|
||||
|
@ -225,8 +242,6 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
}
|
||||
}
|
||||
|
||||
private boolean m_actionActive = false;
|
||||
|
||||
@Override
|
||||
public void onEvent(Event e) throws Exception
|
||||
{
|
||||
|
@ -288,8 +303,8 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
}
|
||||
|
||||
/**
|
||||
* Checks the UPC value and checks if the UPC matches any of the products in the
|
||||
* list.
|
||||
* Find product from data grid ({@link WCreateFromWindow#getWListbox()} with UPC value that matched the value from {@link #upcField}.<br/>
|
||||
* If a match is found, select the data grid row and set quantity to 1.
|
||||
*/
|
||||
private void checkProductUsingUPC()
|
||||
{
|
||||
|
@ -372,7 +387,7 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
} // initBPartner
|
||||
|
||||
/**
|
||||
* Init Details - load invoices not shipped
|
||||
* Load invoices not shipped for C_BPartner_ID
|
||||
* @param C_BPartner_ID BPartner
|
||||
*/
|
||||
private void initBPInvoiceDetails(int C_BPartner_ID)
|
||||
|
@ -396,7 +411,7 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
}
|
||||
|
||||
/**
|
||||
* Load BPartner dependent Order Field.
|
||||
* Load Orders for C_BPartner_ID
|
||||
* @param C_BPartner_ID BPartner
|
||||
* @param forInvoice for invoice
|
||||
*/
|
||||
|
@ -430,7 +445,8 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
} // initBPOrderDetails
|
||||
|
||||
/**
|
||||
* load bpartner related details
|
||||
* Load bpartner related details. <br/>
|
||||
* Call {@link #initBPInvoiceDetails(int)} and {@link #initBPRMADetails(int)}.
|
||||
* @param C_BPartner_ID
|
||||
*/
|
||||
protected void initBPDetails(int C_BPartner_ID)
|
||||
|
@ -438,7 +454,6 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
initBPInvoiceDetails(C_BPartner_ID);
|
||||
initBPRMADetails(C_BPartner_ID);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load RMA that are candidates for shipment
|
||||
|
@ -463,7 +478,7 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
/**
|
||||
* Load Order lines
|
||||
* @param C_Order_ID Order
|
||||
* @param forInvoice true if for invoice vs. delivery qty
|
||||
* @param forInvoice true for invoice line, false for shipment line
|
||||
* @param M_Locator_ID
|
||||
*/
|
||||
protected void loadOrder (int C_Order_ID, boolean forInvoice, int M_Locator_ID)
|
||||
|
@ -508,7 +523,7 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
//
|
||||
|
||||
configureMiniTable(window.getWListbox());
|
||||
} // loadOrder
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showWindow()
|
||||
|
@ -528,7 +543,7 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi
|
|||
}
|
||||
|
||||
/**
|
||||
* Configure layout of parameter grid
|
||||
* Setup columns of parameter grid
|
||||
* @param parameterGrid
|
||||
*/
|
||||
protected void setupColumns(Grid parameterGrid) {
|
||||
|
|
|
@ -59,12 +59,13 @@ import org.zkoss.zk.ui.event.Events;
|
|||
import org.zkoss.zul.Hbox;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form to create bank statement line (C_BankStatementLine) from payment transactions.
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WCreateFromStatementUI extends CreateFromStatement implements EventListener<Event>
|
||||
{
|
||||
/** Create from window instance */
|
||||
private WCreateFromWindow window;
|
||||
|
||||
/**
|
||||
|
@ -101,6 +102,8 @@ public class WCreateFromStatementUI extends CreateFromStatement implements Event
|
|||
/** Logger */
|
||||
private final static CLogger log = CLogger.getCLogger(WCreateFromStatementUI.class);
|
||||
|
||||
/** Parameter fields for {@link #parameterBankLayout} */
|
||||
|
||||
protected Label bankAccountLabel = new Label();
|
||||
protected WTableDirEditor bankAccountField;
|
||||
|
||||
|
@ -118,6 +121,7 @@ public class WCreateFromStatementUI extends CreateFromStatement implements Event
|
|||
|
||||
protected Label amtFromLabel = new Label(Msg.translate(Env.getCtx(), "PayAmt"));
|
||||
protected WNumberEditor amtFromField = new WNumberEditor("AmtFrom", false, false, true, DisplayType.Amount, Msg.translate(Env.getCtx(), "AmtFrom"));
|
||||
|
||||
protected Label amtToLabel = new Label("-");
|
||||
protected WNumberEditor amtToField = new WNumberEditor("AmtTo", false, false, true, DisplayType.Amount, Msg.translate(Env.getCtx(), "AmtTo"));
|
||||
|
||||
|
@ -126,15 +130,17 @@ public class WCreateFromStatementUI extends CreateFromStatement implements Event
|
|||
|
||||
protected Label dateFromLabel = new Label(Msg.translate(Env.getCtx(), "DateTrx"));
|
||||
protected WDateEditor dateFromField = new WDateEditor("DateFrom", false, false, true, Msg.translate(Env.getCtx(), "DateFrom"));
|
||||
|
||||
protected Label dateToLabel = new Label("-");
|
||||
protected WDateEditor dateToField = new WDateEditor("DateTo", false, false, true, Msg.translate(Env.getCtx(), "DateTo"));
|
||||
|
||||
/** Grid layout for parameter panel */
|
||||
protected Grid parameterBankLayout;
|
||||
|
||||
@Override
|
||||
protected boolean dynInit() throws Exception
|
||||
{
|
||||
log.config("");
|
||||
if (log.isLoggable(Level.CONFIG)) log.config("");
|
||||
|
||||
super.dynInit();
|
||||
|
||||
|
@ -180,6 +186,10 @@ public class WCreateFromStatementUI extends CreateFromStatement implements Event
|
|||
return true;
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void zkInit() throws Exception
|
||||
{
|
||||
LayoutUtils.addSclass("create-from-bank-statement", window);
|
||||
|
@ -247,7 +257,7 @@ public class WCreateFromStatementUI extends CreateFromStatement implements Event
|
|||
}
|
||||
|
||||
/**
|
||||
* Configure layout of parameter grid
|
||||
* Setup columns of {@link #parameterBankLayout}
|
||||
* @param parameterBankLayout
|
||||
*/
|
||||
protected void setupColumns(Grid parameterBankLayout) {
|
||||
|
@ -280,7 +290,7 @@ public class WCreateFromStatementUI extends CreateFromStatement implements Event
|
|||
}
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* Event Listener
|
||||
* @param e event
|
||||
* @throws Exception
|
||||
*/
|
||||
|
@ -296,7 +306,7 @@ public class WCreateFromStatementUI extends CreateFromStatement implements Event
|
|||
}
|
||||
|
||||
/**
|
||||
* load bank account transactions
|
||||
* load payment transactions
|
||||
*/
|
||||
protected void loadBankAccount()
|
||||
{
|
||||
|
@ -320,8 +330,7 @@ public class WCreateFromStatementUI extends CreateFromStatement implements Event
|
|||
ListModelTable model = new ListModelTable(data);
|
||||
model.addTableModelListener(window);
|
||||
window.getWListbox().setData(model, getOISColumnNames());
|
||||
//
|
||||
|
||||
//
|
||||
configureMiniTable(window.getWListbox());
|
||||
}
|
||||
|
||||
|
@ -343,6 +352,9 @@ public class WCreateFromStatementUI extends CreateFromStatement implements Event
|
|||
return window;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle onClientInfo event from browser.
|
||||
*/
|
||||
protected void onClientInfo()
|
||||
{
|
||||
if (ClientInfo.isMobile() && parameterBankLayout != null && parameterBankLayout.getColumns() != null)
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
package org.adempiere.webui.apps.form;
|
||||
|
||||
import org.adempiere.webui.LayoutUtils;
|
||||
import org.adempiere.webui.adwindow.StatusBar;
|
||||
import org.adempiere.webui.component.Button;
|
||||
import org.adempiere.webui.component.ConfirmPanel;
|
||||
import org.adempiere.webui.component.ListModelTable;
|
||||
|
@ -41,27 +42,33 @@ import org.zkoss.zul.Separator;
|
|||
import org.zkoss.zul.South;
|
||||
|
||||
/**
|
||||
*
|
||||
* Window for create from form
|
||||
* @author hengsin
|
||||
*
|
||||
*/
|
||||
public class WCreateFromWindow extends Window implements EventListener<Event>, WTableModelListener, DialogEvents
|
||||
{
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = 6750121735083748182L;
|
||||
|
||||
/** Create from form controller */
|
||||
private CreateFrom createFrom;
|
||||
private int windowNo;
|
||||
|
||||
/** Parameter panel. North of window. */
|
||||
private Panel parameterPanel = new Panel();
|
||||
/** Action buttons panel. South of window. */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
/** Status bar. South of window. */
|
||||
private StatusBarPanel statusBar = new StatusBarPanel();
|
||||
/** Data grid. Center of window. */
|
||||
private WListbox dataTable = ListboxFactory.newDataTable();
|
||||
|
||||
/** true if window is cancel by user */
|
||||
private boolean isCancel;
|
||||
|
||||
/** select all action */
|
||||
public static final String SELECT_DESELECT_ALL = "SelectAll";
|
||||
private boolean checkAllSelected = true;
|
||||
|
||||
|
@ -92,6 +99,10 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout window.
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void zkInit() throws Exception
|
||||
{
|
||||
Borderlayout contentPane = new Borderlayout();
|
||||
|
@ -223,7 +234,8 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Save changes.
|
||||
* Delegate to {@link CreateFrom#save(org.compiere.minigrid.IMiniTable, String)}.
|
||||
* @param trxName
|
||||
* @return true if save successfully
|
||||
*/
|
||||
|
@ -238,7 +250,8 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
|
|||
}
|
||||
|
||||
/**
|
||||
* update status
|
||||
* Update {@link #statusBar}.<br/>
|
||||
* Delegate to {@link CreateFrom#info(org.compiere.minigrid.IMiniTable, org.compiere.apps.IStatusBar)}.
|
||||
*/
|
||||
public void info()
|
||||
{
|
||||
|
@ -256,7 +269,8 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Update {@link #statusBar}.
|
||||
* Call {@link StatusBar#setStatusLine(String)}.
|
||||
* @param selectedRowCount
|
||||
* @param text
|
||||
*/
|
||||
|
@ -272,7 +286,6 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {@link StatusBarPanel}
|
||||
*/
|
||||
public StatusBarPanel getStatusBar()
|
||||
|
@ -281,16 +294,15 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param statusBar
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "11")
|
||||
public void setStatusBar(StatusBarPanel statusBar)
|
||||
{
|
||||
this.statusBar = statusBar;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {@link WListbox}
|
||||
*/
|
||||
public WListbox getWListbox()
|
||||
|
@ -299,7 +311,6 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {@link Panel}
|
||||
*/
|
||||
public Panel getParameterPanel()
|
||||
|
@ -308,7 +319,6 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {@link ConfirmPanel}
|
||||
*/
|
||||
public ConfirmPanel getConfirmPanel()
|
||||
|
@ -317,7 +327,6 @@ public class WCreateFromWindow extends Window implements EventListener<Event>, W
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true if dialog cancel by user
|
||||
*/
|
||||
public boolean isCancel()
|
||||
|
|
|
@ -71,6 +71,7 @@ import org.compiere.apps.form.FactReconcile;
|
|||
import org.compiere.model.MClient;
|
||||
import org.compiere.model.MColumn;
|
||||
import org.compiere.model.MFactAcct;
|
||||
import org.compiere.model.MFactReconciliation;
|
||||
import org.compiere.model.MLookup;
|
||||
import org.compiere.model.MLookupFactory;
|
||||
import org.compiere.model.X_C_ElementValue;
|
||||
|
@ -97,15 +98,16 @@ import org.zkoss.zul.South;
|
|||
public class WFactReconcile extends FactReconcile
|
||||
implements IFormController, EventListener<Event>, WTableModelListener, ValueChangeListener{
|
||||
|
||||
/** Form window instance */
|
||||
private CustomForm form = new CustomForm();
|
||||
|
||||
/** Format */
|
||||
/** Amount Format */
|
||||
private DecimalFormat m_format = DisplayType.getNumberFormat(DisplayType.Amount);
|
||||
/** Logger */
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WFactReconcile.class);
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* Default constructor
|
||||
*/
|
||||
public WFactReconcile()
|
||||
{
|
||||
|
@ -121,55 +123,65 @@ implements IFormController, EventListener<Event>, WTableModelListener, ValueChan
|
|||
}
|
||||
}
|
||||
|
||||
/** Main layout of {@link #form} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
/** Parameters panel. North of {@link #mainLayout} */
|
||||
private Panel parameterPanel = new Panel();
|
||||
private Label labelAcctSchema = new Label();
|
||||
private WTableDirEditor fieldAcctSchema = null;
|
||||
/** Grid layout of {@link #parameterPanel} */
|
||||
private Grid parameterLayout = GridFactory.newGridLayout();
|
||||
private Label labelAcctSchema = new Label();
|
||||
/** Accounting schema parameter */
|
||||
private WTableDirEditor fieldAcctSchema = null;
|
||||
private Label labelOrg = new Label();
|
||||
/** Organization parameter */
|
||||
private WTableDirEditor fieldOrg = null;
|
||||
private Label labelReconciled = new Label();
|
||||
/** Reconciled Yes/No parameter */
|
||||
private Checkbox isReconciled = new Checkbox();
|
||||
private Label labelAccount = new Label();
|
||||
/** Account parameter */
|
||||
private WTableDirEditor fieldAccount = null;
|
||||
private Label labelBPartner = new Label();
|
||||
/** Business Partner parameter */
|
||||
private WSearchEditor fieldBPartner = null;
|
||||
private Label labelDateAcct = new Label();
|
||||
/** Accounting Date parameter */
|
||||
private WDateEditor fieldDateAcct = new WDateEditor();
|
||||
private Label labelDateAcct2 = new Label();
|
||||
/** Accounting Date2 parameter */
|
||||
private WDateEditor fieldDateAcct2 = new WDateEditor();
|
||||
private Label labelProduct = new Label();
|
||||
/** Product parameter */
|
||||
private WSearchEditor fieldProduct = null;
|
||||
|
||||
// data panel
|
||||
private Label dataStatus = new Label();
|
||||
/** Data grid. Center of {@link #mainLayout} */
|
||||
private WListbox miniTable = ListboxFactory.newDataTable();
|
||||
|
||||
// command panel
|
||||
/** Command panel. South of {@link #mainLayout} */
|
||||
private Panel commandPanel = new Panel();
|
||||
ConfirmPanel cp = new ConfirmPanel();
|
||||
/** Grid layout of {@link #commandPanel} */
|
||||
private Grid commandLayout = GridFactory.newGridLayout();
|
||||
protected ConfirmPanel cp = new ConfirmPanel();
|
||||
private Button bCancel = cp.createButton(ConfirmPanel.A_CANCEL);
|
||||
private Button bGenerate = cp.createButton(ConfirmPanel.A_PROCESS);
|
||||
private Button bReset = cp.createButton(ConfirmPanel.A_RESET);
|
||||
private Button bZoom = cp.createButton(ConfirmPanel.A_ZOOM);
|
||||
private Button bZoomDoc = cp.createButton(ConfirmPanel.A_ZOOM);
|
||||
private Grid commandLayout = GridFactory.newGridLayout();
|
||||
private Button bRefresh = cp.createButton(ConfirmPanel.A_REFRESH);
|
||||
private Label labelDateAcct = new Label();
|
||||
private WDateEditor fieldDateAcct = new WDateEditor();
|
||||
private Label labelDateAcct2 = new Label();
|
||||
private WDateEditor fieldDateAcct2 = new WDateEditor();
|
||||
|
||||
private Label labelProduct = new Label();
|
||||
private WSearchEditor fieldProduct = null;
|
||||
private boolean loading = false;
|
||||
private Button bZoomDoc = cp.createButton(ConfirmPanel.A_ZOOM);
|
||||
private Button bRefresh = cp.createButton(ConfirmPanel.A_REFRESH);
|
||||
private Label differenceLabel = new Label();
|
||||
private Textbox differenceField = new Textbox();
|
||||
|
||||
private ToolBarButton bSelect = new ToolBarButton("SelectAll");
|
||||
private boolean checkAllSelected = true;
|
||||
|
||||
private boolean loading = false;
|
||||
|
||||
/**
|
||||
* init UI
|
||||
* Layout {@link #form}
|
||||
* @throws Exception
|
||||
*/
|
||||
private void zkInit() throws Exception
|
||||
{
|
||||
//
|
||||
form.appendChild(mainLayout);
|
||||
parameterPanel.appendChild(parameterLayout);
|
||||
bRefresh.addActionListener(this);
|
||||
|
@ -363,8 +375,10 @@ implements IFormController, EventListener<Event>, WTableModelListener, ValueChan
|
|||
fieldAccount = new WTableDirEditor("C_ElementValue_ID", true, false, true, lookupAccount);
|
||||
}
|
||||
|
||||
private void loadData(){
|
||||
|
||||
/**
|
||||
* Load data into {@link #miniTable}.
|
||||
*/
|
||||
private void loadData(){
|
||||
if(fieldAccount.isNullOrEmpty())
|
||||
throw new WrongValueException(fieldAccount.getComponent(), Msg.getMsg(Env.getCtx(), "FillMandatory"));
|
||||
|
||||
|
@ -420,7 +434,7 @@ implements IFormController, EventListener<Event>, WTableModelListener, ValueChan
|
|||
|
||||
/**
|
||||
* Calculate selected rows.
|
||||
* - add up selected rows
|
||||
* <li>add up selected rows</li>
|
||||
*/
|
||||
private void calculateSelection()
|
||||
{
|
||||
|
@ -505,6 +519,10 @@ implements IFormController, EventListener<Event>, WTableModelListener, ValueChan
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Call {@link #generate(org.compiere.minigrid.IMiniTable, List)}
|
||||
* to generate {@link MFactReconciliation} record from selected row in miniTable.
|
||||
*/
|
||||
private void generateReconciliation() {
|
||||
if (miniTable.getRowCount() == 0)
|
||||
return;
|
||||
|
@ -525,8 +543,9 @@ implements IFormController, EventListener<Event>, WTableModelListener, ValueChan
|
|||
}
|
||||
|
||||
/**
|
||||
* Zoom to target
|
||||
* @param tableID table id
|
||||
* Zoom to window for current focus row of {@link #miniTable}.
|
||||
* @param tableID if tableID is MFactAcct.Table_ID, zoom to window for MFactAcct. otherwise
|
||||
* zoom to AD_Table_ID and Record_ID value of focus row.
|
||||
*/
|
||||
protected void zoom (int tableID)
|
||||
{
|
||||
|
@ -547,6 +566,10 @@ implements IFormController, EventListener<Event>, WTableModelListener, ValueChan
|
|||
}
|
||||
} // zoom
|
||||
|
||||
/**
|
||||
* Call {@link #reset(org.compiere.minigrid.IMiniTable, List)} to
|
||||
* Reset/Delete {@link MFactReconciliation} record from selected row in {@link #miniTable}.
|
||||
*/
|
||||
private void resetReconciliation() {
|
||||
if (miniTable.getRowCount() == 0)
|
||||
return;
|
||||
|
@ -571,6 +594,10 @@ implements IFormController, EventListener<Event>, WTableModelListener, ValueChan
|
|||
return form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle {@link #bSelect} ON_CLICK event.<br/>
|
||||
* Select/Deselect all rows of {@link #miniTable}.
|
||||
*/
|
||||
private void onbSelect() {
|
||||
ListModelTable model = miniTable.getModel();
|
||||
int rows = model.getSize();
|
||||
|
|
|
@ -68,71 +68,93 @@ import org.zkoss.zul.South;
|
|||
import org.zkoss.zul.Vbox;
|
||||
|
||||
/**
|
||||
* Fixed length file import
|
||||
* Fixed length file import.<br/>
|
||||
* Import data from text file into DB with definition from AD_ImpFormat.
|
||||
*
|
||||
* @author Niraj Sohun
|
||||
* Aug 16, 2007
|
||||
*
|
||||
*/
|
||||
|
||||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VFileImport")
|
||||
public class WFileImport extends ADForm implements EventListener<Event>
|
||||
{
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -7462842139127270429L;
|
||||
private static final int MAX_LOADED_LINES = 100;
|
||||
private static final int MAX_SHOWN_LINES = 10;
|
||||
|
||||
/** Logger */
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WFileImport.class);
|
||||
|
||||
/** Current index pointer for {@link #m_data} */
|
||||
private int m_record = -1;
|
||||
|
||||
private Listbox pickFormat = new Listbox();
|
||||
private Listbox fCharset = new Listbox();
|
||||
|
||||
/** Lines of loaded text file */
|
||||
private ArrayList<String> m_data = new ArrayList<String>();
|
||||
private static final String s_none = "----"; // no format indicator
|
||||
|
||||
/** Import format helper */
|
||||
private ImpFormat m_format;
|
||||
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
|
||||
/** Parameter fields, child of {@link #northPanel} */
|
||||
|
||||
/** Button to load import file */
|
||||
private Button bFile = new Button();
|
||||
private Button bNext = new Button();
|
||||
/** Character set of import file */
|
||||
private Listbox fCharset = new Listbox();
|
||||
/** Info text for loaded file */
|
||||
private Label info = new Label();
|
||||
/** Label for {@link #pickFormat} */
|
||||
private Label labelFormat = new Label();
|
||||
/** List of import format (AD_ImpFormat) */
|
||||
private Listbox pickFormat = new Listbox();
|
||||
/** Button to decrease {@link #m_record} by 1 */
|
||||
private Button bPrevious = new Button();
|
||||
/** Info text for {@link #m_record} */
|
||||
private Label record = new Label();
|
||||
/** Button to increase {@link #m_record} by 1 */
|
||||
private Button bNext = new Button();
|
||||
/** Raw text from import file */
|
||||
private Textbox rawData = new Textbox();
|
||||
|
||||
/** Input file stream */
|
||||
private InputStream m_file_istream;
|
||||
|
||||
private Textbox rawData = new Textbox();
|
||||
/** Array of column/field. Child of {@link #previewPanel}. */
|
||||
private Textbox[] m_fields;
|
||||
|
||||
private Label info = new Label();
|
||||
/** Array of label for {@link #m_fields}. Child of {@link #previewPanel}. */
|
||||
private Label[] m_labels;
|
||||
private Label record = new Label();
|
||||
private Label labelFormat = new Label();
|
||||
|
||||
|
||||
/** Preview panel, child of {@link #centerPanel} */
|
||||
private Div previewPanel = new Div();
|
||||
|
||||
/** North part of form */
|
||||
private Vbox northPanel = new Vbox();
|
||||
|
||||
/** Center part of form */
|
||||
private Div centerPanel = new Div();
|
||||
|
||||
/** Action buttons panel. South of form */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
public WFileImport()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* Initialize form
|
||||
*/
|
||||
protected void initForm()
|
||||
{
|
||||
log.info("");
|
||||
if (log.isLoggable(Level.INFO)) log.info("");
|
||||
try
|
||||
{
|
||||
jbInit();
|
||||
zkInit();
|
||||
dynInit();
|
||||
|
||||
ZKUpdateUtil.setWidth(this, "100%");
|
||||
|
@ -163,11 +185,10 @@ public class WFileImport extends ADForm implements EventListener<Event>
|
|||
} // init
|
||||
|
||||
/**
|
||||
* Static Init
|
||||
* Layout form
|
||||
* @throws Exception
|
||||
*/
|
||||
|
||||
private void jbInit() throws Exception
|
||||
*/
|
||||
private void zkInit() throws Exception
|
||||
{
|
||||
Charset[] charsets = Ini.getAvailableCharsets();
|
||||
|
||||
|
@ -524,8 +545,7 @@ public class WFileImport extends ADForm implements EventListener<Event>
|
|||
/**
|
||||
* Apply Current Pattern
|
||||
* @param next next
|
||||
*/
|
||||
|
||||
*/
|
||||
private void cmd_applyFormat (boolean next)
|
||||
{
|
||||
if (m_format == null || m_data.size() == 0)
|
||||
|
|
|
@ -77,42 +77,58 @@ import org.zkoss.zul.North;
|
|||
import org.zkoss.zul.South;
|
||||
|
||||
/**
|
||||
* Generate custom form window
|
||||
*
|
||||
* Window for use together with {@link GenForm} to support the select source document and generate new target document UI pattern.
|
||||
*/
|
||||
public class WGenForm extends ADForm implements EventListener<Event>, WTableModelListener
|
||||
{
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = 4240430312911412710L;
|
||||
|
||||
/** Controller */
|
||||
private GenForm genForm;
|
||||
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WGenForm.class);
|
||||
//
|
||||
/** Center of form. Tabbox with Select and Generate tab. */
|
||||
private Tabbox tabbedPane = new Tabbox();
|
||||
/** Layout for Select tab */
|
||||
private Borderlayout selPanel = new Borderlayout();
|
||||
/** Grid layout for North of {@link #selPanel} */
|
||||
private Grid selNorthPanel = GridFactory.newGridLayout();
|
||||
/** Action buttons panel. South of {@link #selPanel} */
|
||||
private ConfirmPanel confirmPanelSel = new ConfirmPanel(true, true, false, false, false, false, false);
|
||||
/** Action buttons panel. South of {@link #genPanel} */
|
||||
private ConfirmPanel confirmPanelGen = new ConfirmPanel(false, false, false, false, false, false, false);
|
||||
/** Status bar. South of form */
|
||||
private StatusBarPanel statusBar = new StatusBarPanel();
|
||||
/** Layout for Generate tab */
|
||||
private Borderlayout genPanel = new Borderlayout();
|
||||
/** Child of {@link #messageDiv}. Info text from execution of Generate process */
|
||||
private Html info = new Html();
|
||||
/** Data grid for source document selection. Center of {@link #selPanel} */
|
||||
private WListbox miniTable = ListboxFactory.newDataTable();
|
||||
private BusyDialog progressWindow;
|
||||
/** Center of {@link #genPanel}. Info text from execution of Generate process */
|
||||
private Div messageDiv;
|
||||
/** Child of {@link #messageDiv}. Show message and link from {@link ProcessInfoLog} */
|
||||
private Table logMessageTable;
|
||||
|
||||
private int[] m_ids;
|
||||
|
||||
/**
|
||||
* @param genForm
|
||||
*/
|
||||
public WGenForm(GenForm genForm)
|
||||
{
|
||||
log.info("");
|
||||
if (log.isLoggable(Level.INFO)) log.info("");
|
||||
this.genForm = genForm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout form
|
||||
*/
|
||||
@Override
|
||||
protected void initForm()
|
||||
{
|
||||
|
@ -144,19 +160,18 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
} // init
|
||||
|
||||
/**
|
||||
* Static Init.
|
||||
* <pre>
|
||||
* selPanel (tabbed)
|
||||
* fOrg, fBPartner
|
||||
* scrollPane & miniTable
|
||||
* genPanel
|
||||
* info
|
||||
* </pre>
|
||||
* Layout Select and Generate tab.
|
||||
* <br/>
|
||||
* {@link #selPanel} tab:
|
||||
* <li>fOrg, fBPartner</li>
|
||||
* <li>scrollPane & miniTable</li>
|
||||
* <br/>
|
||||
* {@link #genPanel} tab:
|
||||
* <li>info</li>
|
||||
* @throws Exception
|
||||
*/
|
||||
void zkInit() throws Exception
|
||||
{
|
||||
//
|
||||
ZKUpdateUtil.setWidth(selPanel, "100%");
|
||||
ZKUpdateUtil.setHeight(selPanel, "100%");
|
||||
selPanel.setStyle("border: none; position: relative");
|
||||
|
@ -210,9 +225,9 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
} // jbInit
|
||||
|
||||
/**
|
||||
* Dynamic Init.
|
||||
* - Create GridController and Panel
|
||||
* - AD_Column_ID from C_Order
|
||||
* Dynamic Init.<br/>
|
||||
* - Configure {@link #miniTable}<br/>
|
||||
* - Setup listeners
|
||||
*/
|
||||
public void dynInit()
|
||||
{
|
||||
|
@ -227,6 +242,10 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
button.setEnabled(false);
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Handle onClick event from {@link ConfirmPanel#A_REFRESH} button.<br/>
|
||||
* Echo onExecuteQuery event.
|
||||
*/
|
||||
public void postQueryEvent()
|
||||
{
|
||||
Clients.showBusy(Msg.getMsg(Env.getCtx(), "Processing"));
|
||||
|
@ -234,7 +253,8 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
}
|
||||
|
||||
/**
|
||||
* Dont call this directly, use internally to handle execute query event
|
||||
* Dont call this directly, use internally to handle onExecuteQuery event. <br/>
|
||||
* Call {@link GenForm#executeQuery()}.
|
||||
*/
|
||||
public void onExecuteQuery()
|
||||
{
|
||||
|
@ -249,12 +269,13 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
}
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent(Event e) throws Exception
|
||||
{
|
||||
log.info("Cmd=" + e.getTarget().getId());
|
||||
if (log.isLoggable(Level.INFO)) log.info("Event Target Id=" + e.getTarget().getId());
|
||||
//
|
||||
if (e.getTarget().getId().equals(ConfirmPanel.A_CANCEL))
|
||||
{
|
||||
|
@ -287,10 +308,10 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
{
|
||||
super.onEvent(e);
|
||||
}
|
||||
} // actionPerformed
|
||||
}
|
||||
|
||||
/**
|
||||
* Table Model Listener
|
||||
* Table Model Listener for {@link #miniTable}.
|
||||
* @param e event
|
||||
*/
|
||||
public void tableChanged(WTableModelEvent e)
|
||||
|
@ -320,8 +341,8 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
} // saveSelection
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Generate Shipments
|
||||
/**
|
||||
* Generate Document
|
||||
*/
|
||||
public void generate()
|
||||
{
|
||||
|
@ -332,7 +353,8 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
} // generate
|
||||
|
||||
/**
|
||||
* Internal use, don't call this directly
|
||||
* Handle runProcess event echo from {@link #generate()} (don't call this directly). <br/>
|
||||
* Call {@link WProcessCtl#run()} to execute generate document process.
|
||||
*/
|
||||
public void runProcess()
|
||||
{
|
||||
|
@ -345,8 +367,8 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
}
|
||||
|
||||
/**
|
||||
* Complete generating shipments.
|
||||
* Called from Unlock UI
|
||||
* After complete generating documents.<br/>
|
||||
* Called from Unlock UI.
|
||||
* @param pi process info
|
||||
*/
|
||||
private void generateComplete ()
|
||||
|
@ -356,7 +378,7 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
progressWindow = null;
|
||||
}
|
||||
|
||||
// Switch Tabs
|
||||
// Set Generate tab as the active tab to display result from generate document process.
|
||||
tabbedPane.getTabpanel(1).getLinkedTab().setDisabled(false);
|
||||
tabbedPane.setSelectedIndex(1);
|
||||
//
|
||||
|
@ -365,11 +387,10 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
iText.append("<b>").append(genForm.getProcessInfo().getSummary())
|
||||
.append("</b><br>(")
|
||||
.append(Msg.getMsg(Env.getCtx(), genForm.getTitle()))
|
||||
// Shipments are generated depending on the Delivery Rule selection in the Order
|
||||
.append(")<br><br>");
|
||||
info.setContent(iText.toString());
|
||||
|
||||
//If log Message Table presents, remove it
|
||||
//If log Message Table exists, remove it first
|
||||
if(logMessageTable!=null){
|
||||
messageDiv.removeChild(logMessageTable);
|
||||
}
|
||||
|
@ -387,7 +408,9 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
|
||||
} // generateShipments_complete
|
||||
|
||||
|
||||
/**
|
||||
* Handle onAfterProcess event echo from {@link #generateComplete()}.
|
||||
*/
|
||||
public void onAfterProcess()
|
||||
{
|
||||
// OK to print
|
||||
|
@ -406,9 +429,12 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Print generated documents.
|
||||
*/
|
||||
public void onPrint()
|
||||
{
|
||||
// Loop through all items
|
||||
// Loop through all items
|
||||
List<File> pdfList = new ArrayList<File>();
|
||||
for (int i = 0; i < m_ids.length; i++)
|
||||
{
|
||||
|
@ -476,27 +502,39 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
generateComplete();
|
||||
} // unlockUI
|
||||
|
||||
/**
|
||||
* Close window
|
||||
*/
|
||||
public void dispose() {
|
||||
SessionManager.getAppDesktop().closeActiveWindow();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@link Grid} Parameter panel
|
||||
*/
|
||||
public Grid getParameterPanel()
|
||||
{
|
||||
return selNorthPanel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@link WListbox} source document list.
|
||||
*/
|
||||
public WListbox getMiniTable()
|
||||
{
|
||||
return miniTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@link StatusBarPanel}
|
||||
*/
|
||||
public StatusBarPanel getStatusBar()
|
||||
{
|
||||
return statusBar;
|
||||
}
|
||||
|
||||
/**
|
||||
*append process log info to response panel
|
||||
* Append process log info to {@link #logMessageTable}.
|
||||
* @param m_logs
|
||||
*/
|
||||
private void appendRecordLogInfo(ProcessInfoLog[] m_logs) {
|
||||
|
@ -512,8 +550,6 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
logMessageTable.setDynamicProperty("cellspacing", "0");
|
||||
logMessageTable.setDynamicProperty("width", "100%");
|
||||
|
||||
this.appendChild(logMessageTable);
|
||||
|
||||
boolean datePresents = false;
|
||||
boolean numberPresents = false;
|
||||
boolean msgPresents = false;
|
||||
|
@ -526,7 +562,6 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
if (log.getP_Msg() != null)
|
||||
msgPresents = true;
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i < m_logs.length; i++)
|
||||
{
|
||||
|
@ -575,6 +610,5 @@ public class WGenForm extends ADForm implements EventListener<Event>, WTableMode
|
|||
}
|
||||
}
|
||||
messageDiv.appendChild(logMessageTable);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ import org.zkoss.zul.Space;
|
|||
import org.zkoss.zul.Vlayout;
|
||||
|
||||
/**
|
||||
* Manual Matching
|
||||
* Form to perform Matching between Purchase Order, Vendor Invoice and Material Receipt.
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: VMatch.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
|
||||
|
@ -81,10 +81,11 @@ import org.zkoss.zul.Vlayout;
|
|||
public class WMatch extends Match
|
||||
implements IFormController, EventListener<Event>, WTableModelListener
|
||||
{
|
||||
/** UI form instance */
|
||||
private CustomForm form = new CustomForm();
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* Default constructor
|
||||
*/
|
||||
public WMatch()
|
||||
{
|
||||
|
@ -120,22 +121,22 @@ public class WMatch extends Match
|
|||
}
|
||||
}
|
||||
|
||||
/** Window No */
|
||||
/** Window No */
|
||||
private int m_WindowNo = 0;
|
||||
/** Logger */
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WMatch.class);
|
||||
|
||||
private int m_AD_Client_ID = Env.getAD_Client_ID(Env.getCtx());
|
||||
private int m_AD_Org_ID = Env.getAD_Org_ID(Env.getCtx());
|
||||
private int m_by = Env.getAD_User_ID(Env.getCtx());
|
||||
|
||||
/** Match Options */
|
||||
/** Matching To Options */
|
||||
private String[] m_matchOptions = new String[] {
|
||||
Msg.getElement(Env.getCtx(), "C_Invoice_ID", false),
|
||||
Msg.getElement(Env.getCtx(), "M_InOut_ID", false),
|
||||
Msg.getElement(Env.getCtx(), "C_Order_ID", false) };
|
||||
|
||||
/** Match Mode */
|
||||
/** Matching Mode */
|
||||
private String[] m_matchMode = new String[] {
|
||||
Msg.translate(Env.getCtx(), "NotMatched"),
|
||||
Msg.translate(Env.getCtx(), "Matched")};
|
||||
|
@ -145,15 +146,21 @@ public class WMatch extends Match
|
|||
private BigDecimal m_xMatched = Env.ZERO;
|
||||
private BigDecimal m_xMatchedTo = Env.ZERO;
|
||||
|
||||
//
|
||||
/** Main panel of {@link #form} */
|
||||
private Panel mainPanel = new Panel();
|
||||
private StatusBarPanel statusBar = new StatusBarPanel();
|
||||
/** Layout of {@link #mainPanel} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
|
||||
/** North of {@link #mainLayout}. Form parameters. */
|
||||
private Panel northPanel = new Panel();
|
||||
/** Grid layout of {@link #northPanel} */
|
||||
private Grid northLayout = GridFactory.newGridLayout();
|
||||
private Label matchFromLabel = new Label();
|
||||
/** Select matching source (order, invoice or material receipt) */
|
||||
private Listbox matchFrom = ListboxFactory.newDropdownListbox(m_matchOptions);
|
||||
private Label matchToLabel = new Label();
|
||||
/** Select matching target (order, invoice or material receipt) */
|
||||
private Listbox matchTo = ListboxFactory.newDropdownListbox();
|
||||
private Label matchModeLabel = new Label();
|
||||
private Listbox matchMode = ListboxFactory.newDropdownListbox(m_matchMode);
|
||||
|
@ -165,30 +172,52 @@ public class WMatch extends Match
|
|||
private Label dateToLabel = new Label();
|
||||
private WDateEditor dateFrom = new WDateEditor("DateFrom", false, false, true, "DateFrom");
|
||||
private WDateEditor dateTo = new WDateEditor("DateTo", false, false, true, "DateTo");
|
||||
/** Button to start searching of source document */
|
||||
private Button bSearch = new Button();
|
||||
|
||||
/** South of {@link #mainLayout}. Matching summary info text. */
|
||||
private Panel southPanel = new Panel();
|
||||
/** Grid layout of {@link #southPanel} */
|
||||
private Grid southLayout = GridFactory.newGridLayout();
|
||||
private Label xMatchedLabel = new Label();
|
||||
private Label xMatchedToLabel = new Label();
|
||||
private Label differenceLabel = new Label();
|
||||
/** Quantity from source documents */
|
||||
private WNumberEditor xMatched = new WNumberEditor("xMatched", false, true, false, DisplayType.Quantity, "xMatched");
|
||||
/** Quantity from target documents */
|
||||
private WNumberEditor xMatchedTo = new WNumberEditor("xMatchedTo", false, true, false, DisplayType.Quantity, "xMatchedTo");
|
||||
/** Difference between {@link #xMatched} and {@link #xMatchedTo} */
|
||||
private WNumberEditor difference = new WNumberEditor("Difference", false, true, false, DisplayType.Quantity, "Difference");
|
||||
/** Button to start the matching process */
|
||||
private Button bProcess = new Button();
|
||||
|
||||
/** Center of {@link #mainLayout} */
|
||||
private Panel centerPanel = new Panel();
|
||||
/** Layout of {@link #centerPanel} */
|
||||
private Borderlayout centerLayout = new Borderlayout();
|
||||
private Label xMatchedBorder = new Label("xMatched");
|
||||
/** North of {@link #centerLayout}. Source documents. */
|
||||
private WListbox xMatchedTable = ListboxFactory.newDataTable();
|
||||
private Label xMatchedToBorder = new Label("xMatchedTo");
|
||||
/** Center of {@link #centerLayout}. Target documents. */
|
||||
private WListbox xMatchedToTable = ListboxFactory.newDataTable();
|
||||
/**
|
||||
* Center of {@link #centerLayout} (Above {@link #xMatchedToTable}). <br/>
|
||||
* Container of {@link #sameProduct}, {@link #sameProduct} and {@link #sameQty}.
|
||||
*/
|
||||
private Panel xPanel = new Panel();
|
||||
/** Same product flag between source and target document */
|
||||
private Checkbox sameProduct = new Checkbox();
|
||||
/** Same business partner flag between source and target document */
|
||||
private Checkbox sameBPartner = new Checkbox();
|
||||
/** Same quantity flag between source and target document */
|
||||
private Checkbox sameQty = new Checkbox();
|
||||
|
||||
/** Number of column for {@link #northLayout} */
|
||||
private int noOfColumn;
|
||||
|
||||
/**
|
||||
* Static Init.
|
||||
* Layout form.
|
||||
* <pre>
|
||||
* mainPanel
|
||||
* northPanel
|
||||
|
@ -286,6 +315,9 @@ public class WMatch extends Match
|
|||
centerPanel.setStyle("min-height: 300px;");
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #northPanel} and {@link #southPanel}
|
||||
*/
|
||||
protected void layoutParameterAndSummary() {
|
||||
setupParameterColumns();
|
||||
|
||||
|
@ -341,6 +373,9 @@ public class WMatch extends Match
|
|||
LayoutUtils.compactTo(southLayout, noOfColumn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup columns of {@link #northLayout}
|
||||
*/
|
||||
protected void setupParameterColumns() {
|
||||
noOfColumn = 6;
|
||||
if (maxWidth(MEDIUM_WIDTH-1))
|
||||
|
@ -378,7 +413,7 @@ public class WMatch extends Match
|
|||
|
||||
/**
|
||||
* Dynamic Init.
|
||||
* Table Layout, Visual, Listener
|
||||
* Configure {@link #xMatchedTable} and {@link #xMatchedToTable}. Setup Listeners.
|
||||
*/
|
||||
private void dynInit()
|
||||
{
|
||||
|
@ -416,14 +451,16 @@ public class WMatch extends Match
|
|||
} // dynInit
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
* Close form.
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
SessionManager.getAppDesktop().closeActiveWindow();
|
||||
} // dispose
|
||||
|
||||
|
||||
/**
|
||||
* Handle onClientInfo event from browser.
|
||||
*/
|
||||
protected void onClientInfo()
|
||||
{
|
||||
if (ClientInfo.isMobile() && form.getPage() != null)
|
||||
|
@ -454,9 +491,9 @@ public class WMatch extends Match
|
|||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* Action Listener
|
||||
* @param e event
|
||||
/**
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent (Event e)
|
||||
|
@ -513,10 +550,9 @@ public class WMatch extends Match
|
|||
else if (AEnv.contains(xMatchedTable, e.getTarget()))
|
||||
cmd_searchTo();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Match To Changed - set Title
|
||||
* Handle selection change of {@link #matchTo}.
|
||||
*/
|
||||
private void cmd_matchTo()
|
||||
{
|
||||
|
@ -529,7 +565,7 @@ public class WMatch extends Match
|
|||
|
||||
|
||||
/**
|
||||
* Fill xMatchedTo
|
||||
* Fill {@link #xMatchedToTable} from selected row of {@link #xMatchedTable}.
|
||||
*/
|
||||
private void cmd_searchTo()
|
||||
{
|
||||
|
@ -565,14 +601,17 @@ public class WMatch extends Match
|
|||
statusBar.setStatusDB("0");
|
||||
} // cmd_seachTo
|
||||
|
||||
/**
|
||||
* @return selected text from {@link #matchTo}
|
||||
*/
|
||||
private String getMatchToLabel() {
|
||||
int index = matchTo.getSelectedIndex();
|
||||
return matchTo.getModel().getElementAt(index).toString();
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
* Table Model Listener - calculate matchd Qty
|
||||
* @param e event
|
||||
/**
|
||||
* Table Model Listener - calculate matched Qty
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void tableChanged (WTableModelEvent e)
|
||||
|
|
|
@ -49,32 +49,30 @@ import org.zkoss.zul.Center;
|
|||
import org.zkoss.zul.South;
|
||||
|
||||
/**
|
||||
* Merge Dialog.
|
||||
* Restriction - fails for Accounting
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: VMerge.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
|
||||
* Form to Merge source/from record to target/to record (support Organization, User, Business Partner and Product).
|
||||
* Restriction - fails for Accounting.
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VMerge")
|
||||
public class WMerge extends Merge implements IFormController, EventListener<Event>
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
private static final long serialVersionUID = 5797395051958101596L;
|
||||
|
||||
{
|
||||
/** UI form instance */
|
||||
private WMergeUI form;
|
||||
|
||||
private Label[] m_label = null;
|
||||
private WEditor[] m_from = null;
|
||||
private WEditor[] m_to = null;
|
||||
/** Editor to pick source/from record */
|
||||
private WEditor[] m_from = null;
|
||||
/** Editor to pick target/to record */
|
||||
private WEditor[] m_to = null;
|
||||
|
||||
/** Main layout of {@link #form} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
private Panel CenterPanel = new Panel();
|
||||
/** Center of {@link #mainLayout} */
|
||||
private Panel centerPanel = new Panel();
|
||||
/** Grid layout of {@link #centerPanel} */
|
||||
private Grid centerLayout = GridFactory.newGridLayout();
|
||||
private Label mergeFromLabel = new Label();
|
||||
private Label mergeToLabel = new Label();
|
||||
/** Action buttons panel. South of {@link #form} */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
private String m_msg;
|
||||
private boolean m_success;
|
||||
|
@ -82,7 +80,7 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
private MergeRunnable runnable;
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* Default constructor
|
||||
*/
|
||||
public WMerge()
|
||||
{
|
||||
|
@ -99,10 +97,10 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
{
|
||||
log.log(Level.SEVERE, "", ex);
|
||||
}
|
||||
} // init
|
||||
}
|
||||
|
||||
/**
|
||||
* Pre Init
|
||||
* Prepare m_columnName, {@link #m_label}, {@link #m_from} and {@link #m_to}.
|
||||
*/
|
||||
private void preInit()
|
||||
{
|
||||
|
@ -120,7 +118,7 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
} // preInit
|
||||
|
||||
/**
|
||||
* Pre Init Line
|
||||
* Prepare m_columnName, {@link #m_label}, {@link #m_from} and {@link #m_to}.
|
||||
* @param index index
|
||||
* @param AD_Column_ID id
|
||||
* @param displayType display type
|
||||
|
@ -146,7 +144,7 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
} // preInit
|
||||
|
||||
/**
|
||||
* Static init
|
||||
* Layout {@link #form}
|
||||
* @throws java.lang.Exception
|
||||
*/
|
||||
void zkInit () throws Exception
|
||||
|
@ -160,14 +158,11 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
south.appendChild(confirmPanel);
|
||||
confirmPanel.addActionListener(this);
|
||||
//
|
||||
Rows rows = centerLayout.newRows();
|
||||
|
||||
//
|
||||
CenterPanel.appendChild(centerLayout);
|
||||
|
||||
Rows rows = centerLayout.newRows();
|
||||
centerPanel.appendChild(centerLayout);
|
||||
Center center = new Center();
|
||||
mainLayout.appendChild(center);
|
||||
center.appendChild(CenterPanel);
|
||||
center.appendChild(centerPanel);
|
||||
|
||||
Row row = rows.newRow();
|
||||
row.appendChild(new Label());
|
||||
|
@ -186,10 +181,10 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
row.appendChild(m_from[i].getComponent());
|
||||
row.appendChild(m_to[i].getComponent());
|
||||
}
|
||||
} // jbInit
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
* Close window
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
|
@ -197,9 +192,10 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
} // dispose
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent (Event e)
|
||||
{
|
||||
if (e.getTarget().getId().equals(ConfirmPanel.A_CANCEL))
|
||||
|
@ -257,12 +253,14 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
Clients.showBusy("");
|
||||
runnable = new MergeRunnable(columnNameRef, fromIdRef, toIdRef);
|
||||
Clients.response(new AuEcho(form, "runProcess", null));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
} // actionPerformed
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom runnable to call {@link Merge#merge(String, int, int)}.
|
||||
*/
|
||||
private class MergeRunnable implements Runnable {
|
||||
private int to_ID;
|
||||
private int from_ID;
|
||||
|
@ -285,7 +283,8 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
}
|
||||
|
||||
/**
|
||||
* execute merge, call from echo event
|
||||
* Handle runProcess event echo from onEvent.
|
||||
* Call runnable.run() to execute merge.
|
||||
*/
|
||||
public void runProcess()
|
||||
{
|
||||
|
@ -293,7 +292,8 @@ public class WMerge extends Merge implements IFormController, EventListener<Even
|
|||
}
|
||||
|
||||
/**
|
||||
* clean up, call form echo event
|
||||
* After execution of merge.
|
||||
* Show info/error message and close form (if merge is success).
|
||||
*/
|
||||
public void onAfterProcess()
|
||||
{
|
||||
|
|
|
@ -16,25 +16,36 @@ package org.adempiere.webui.apps.form;
|
|||
import org.adempiere.webui.panel.CustomForm;
|
||||
|
||||
/**
|
||||
*
|
||||
* Custom form for {@link WMerge}.
|
||||
* @author hengsin
|
||||
*
|
||||
*/
|
||||
public class WMergeUI extends CustomForm {
|
||||
|
||||
/**
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -8576926702378868806L;
|
||||
|
||||
/** Controller */
|
||||
private WMerge m_merge;
|
||||
|
||||
/**
|
||||
* @param merge
|
||||
*/
|
||||
public WMergeUI(WMerge merge) {
|
||||
super();
|
||||
m_merge = merge;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run merge process
|
||||
*/
|
||||
public void runProcess() {
|
||||
m_merge.runProcess();
|
||||
}
|
||||
|
||||
/**
|
||||
* After execution of merge process
|
||||
*/
|
||||
public void onAfterProcess() {
|
||||
m_merge.onAfterProcess();
|
||||
}
|
||||
|
|
|
@ -58,6 +58,7 @@ import org.compiere.apps.form.PayPrint;
|
|||
import org.compiere.model.MLookup;
|
||||
import org.compiere.model.MLookupFactory;
|
||||
import org.compiere.model.MPaySelectionCheck;
|
||||
import org.compiere.model.X_C_Order;
|
||||
import org.compiere.util.DisplayType;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Msg;
|
||||
|
@ -70,11 +71,8 @@ import org.zkoss.zul.Filedownload;
|
|||
import org.zkoss.zul.South;
|
||||
|
||||
/**
|
||||
* Payment Print and Export
|
||||
* Form to Print and Export payment.
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: VPayPrint.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
|
||||
*
|
||||
* Contributors:
|
||||
* Carlos Ruiz - GlobalQSS - FR 3132033 - Make payment export class configurable per bank
|
||||
* Markus Bozem: IDEMPIERE-1546 / IDEMPIERE-3286
|
||||
|
@ -82,10 +80,11 @@ import org.zkoss.zul.South;
|
|||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VPayPrint")
|
||||
public class WPayPrint extends PayPrint implements IFormController, EventListener<Event>, ValueChangeListener
|
||||
{
|
||||
/** Custom form/window instance */
|
||||
private CustomForm form = new CustomForm();
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* Default constructor
|
||||
*/
|
||||
public WPayPrint()
|
||||
{
|
||||
|
@ -114,41 +113,54 @@ public class WPayPrint extends PayPrint implements IFormController, EventListene
|
|||
}
|
||||
} // WPayPrint
|
||||
|
||||
// Instance Variables
|
||||
protected Panel centerPanel = new Panel();
|
||||
protected ConfirmPanel southPanel = new ConfirmPanel(true, false, false, false, false, false, false);
|
||||
protected Grid centerLayout = GridFactory.newGridLayout();
|
||||
/** Action buttons panel. South of {@link #form} */
|
||||
protected ConfirmPanel southPanel = new ConfirmPanel(true, false, false, false, false, false, false);
|
||||
/** Button to print check */
|
||||
protected Button bPrint = southPanel.createButton(ConfirmPanel.A_PRINT);
|
||||
/** Button to export payment to file */
|
||||
protected Button bExport = southPanel.createButton(ConfirmPanel.A_EXPORT);
|
||||
protected Button bCancel = southPanel.getButton(ConfirmPanel.A_CANCEL);
|
||||
/** Button to process PAYMENTRULE_DirectDeposit payments */
|
||||
protected Button bProcess = southPanel.createButton(ConfirmPanel.A_PROCESS);
|
||||
|
||||
/** Center of {@link #form} */
|
||||
protected Panel centerPanel = new Panel();
|
||||
/** Layout of {@link #centerPanel} */
|
||||
protected Grid centerLayout = GridFactory.newGridLayout();
|
||||
protected Label lPaySelect = new Label();
|
||||
/** Payment selections */
|
||||
protected WSearchEditor paySelectSearch = null;
|
||||
protected Label lBank = new Label();
|
||||
/** Bank name from C_BankAccount.C_Bank_ID */
|
||||
protected Label fBank = new Label();
|
||||
protected Label lPaymentRule = new Label();
|
||||
/** Payment rules */
|
||||
protected Listbox fPaymentRule = ListboxFactory.newDropdownListbox();
|
||||
protected Label lDocumentNo = new Label();
|
||||
/** Bank account document number (C_BankAccountDoc). Usually for check number. */
|
||||
protected WNumberEditor fDocumentNo = new WNumberEditor();
|
||||
protected Label lNoPayments = new Label();
|
||||
/** Number of C_PaySelectionCheck records */
|
||||
protected Label fNoPayments = new Label();
|
||||
protected Label lBalance = new Label();
|
||||
/** C_PaySelection.CurrentBalance */
|
||||
protected WNumberEditor fBalance = new WNumberEditor();
|
||||
protected Label lCurrency = new Label();
|
||||
/** ISO_Code from C_BankAccount.C_Currency_ID */
|
||||
protected Label fCurrency = new Label();
|
||||
protected Label lDepositBatch = new Label();
|
||||
protected WYesNoEditor fDepositBatch = new WYesNoEditor("", "", "Book as one post", false, false, true) ;
|
||||
protected Label lSumPayments = new Label();
|
||||
/** Sum of C_PaySelectionCheck.PayAmt */
|
||||
protected WNumberEditor fSumPayments = new WNumberEditor();
|
||||
|
||||
|
||||
/**
|
||||
* Static Init
|
||||
* Layout {@link #form}
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void zkInit() throws Exception
|
||||
{
|
||||
//
|
||||
centerPanel.appendChild(centerLayout);
|
||||
//
|
||||
bPrint.addActionListener(this);
|
||||
|
@ -240,11 +252,10 @@ public class WPayPrint extends PayPrint implements IFormController, EventListene
|
|||
MLookup lookupPS = MLookupFactory.get (Env.getCtx(), m_WindowNo, 0, AD_Column_ID, DisplayType.Search);
|
||||
paySelectSearch = new WSearchEditor("C_PaySelection_ID", true, false, true, lookupPS);
|
||||
paySelectSearch.addValueChangeListener(this);
|
||||
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
* Close form.
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
|
@ -266,9 +277,9 @@ public class WPayPrint extends PayPrint implements IFormController, EventListene
|
|||
} // setsetPaySelection
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Action Listener
|
||||
* @param e event
|
||||
/**
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent(Event e)
|
||||
|
@ -289,7 +300,7 @@ public class WPayPrint extends PayPrint implements IFormController, EventListene
|
|||
}
|
||||
|
||||
/**
|
||||
* load pay selection details
|
||||
* load pay selection details
|
||||
*/
|
||||
protected void loadPaySelectInfo()
|
||||
{
|
||||
|
@ -349,8 +360,8 @@ public class WPayPrint extends PayPrint implements IFormController, EventListene
|
|||
|
||||
if(sumPayments != null)
|
||||
fSumPayments.setValue(sumPayments);
|
||||
|
||||
bProcess.setEnabled(PaymentRule.equals("T"));
|
||||
|
||||
bProcess.setEnabled(PaymentRule.equals(X_C_Order.PAYMENTRULE_DirectDeposit));
|
||||
|
||||
if(documentNo != null)
|
||||
fDocumentNo.setValue(documentNo);
|
||||
|
@ -398,8 +409,8 @@ public class WPayPrint extends PayPrint implements IFormController, EventListene
|
|||
} // getPluginFeatures
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Export payments to file
|
||||
/**
|
||||
* Export payments to file
|
||||
*/
|
||||
protected void cmd_export()
|
||||
{
|
||||
|
@ -568,7 +579,7 @@ public class WPayPrint extends PayPrint implements IFormController, EventListene
|
|||
} // cmd_print
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
/**
|
||||
* Get Checks
|
||||
* @param PaymentRule Payment Rule
|
||||
* @return true if payments were created
|
||||
|
@ -592,7 +603,7 @@ public class WPayPrint extends PayPrint implements IFormController, EventListene
|
|||
}
|
||||
|
||||
/**
|
||||
* Vetoable Change Listener.
|
||||
* Vetoable Change Listener.<br/>
|
||||
* - Payment Selection
|
||||
* @param e event
|
||||
*/
|
||||
|
@ -612,5 +623,4 @@ public class WPayPrint extends PayPrint implements IFormController, EventListene
|
|||
loadPaySelectInfo();
|
||||
}
|
||||
}
|
||||
|
||||
} // PayPrint
|
||||
}
|
||||
|
|
|
@ -83,53 +83,75 @@ import org.zkoss.zul.South;
|
|||
import org.zkoss.zul.Space;
|
||||
|
||||
/**
|
||||
* Create Manual Payments From (AP) Invoices or (AR) Credit Memos.
|
||||
* Allows user to select Invoices for payment.
|
||||
* When Processed, PaySelection is created
|
||||
* and optionally posted/generated and printed
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: VPaySelect.java,v 1.3 2006/07/30 00:51:28 jjanke Exp $
|
||||
* Create Manual Payments From (AP) Invoices or (AR) Credit Memos.<br/>
|
||||
* Allows user to select Invoices for payment.<br/>
|
||||
* When Processed, PaySelection is created and optionally process and printed.
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VPaySelect")
|
||||
public class WPaySelect extends PaySelect
|
||||
implements IFormController, EventListener<Event>, WTableModelListener, ValueChangeListener
|
||||
{
|
||||
/** Custom form/window instance */
|
||||
protected CustomForm form = new CustomForm();
|
||||
//
|
||||
|
||||
/** Main panel of {@link #form} */
|
||||
private Panel mainPanel = new Panel();
|
||||
/** Layout of {@link #mainPanel} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
|
||||
/** Parameters panel. North of {@link #mainLayout} */
|
||||
private Panel parameterPanel = new Panel();
|
||||
private Label labelBankAccount = new Label();
|
||||
/** Bank account parameter */
|
||||
private Listbox fieldBankAccount = ListboxFactory.newDropdownListbox();
|
||||
/** Layout of {@link #parameterPanel} */
|
||||
private Grid parameterLayout = GridFactory.newGridLayout();
|
||||
/** Label of {@link #labelBalance} */
|
||||
private Label labelBankBalance = new Label();
|
||||
/** Bank account currency */
|
||||
private Label labelCurrency = new Label();
|
||||
/** Current bank account balance */
|
||||
private Label labelBalance = new Label();
|
||||
private Checkbox onlyDue = new Checkbox();
|
||||
private Checkbox onlyPositiveBalance = new Checkbox();
|
||||
private Label labelBPartner = new Label();
|
||||
private Listbox fieldBPartner = ListboxFactory.newDropdownListbox();
|
||||
private Label dataStatus = new Label();
|
||||
private WListbox miniTable = ListboxFactory.newDataTable();
|
||||
private ConfirmPanel commandPanel = new ConfirmPanel(true, false, false, false, false, false, false);
|
||||
private Button bCancel = commandPanel.getButton(ConfirmPanel.A_CANCEL);
|
||||
private Button bGenerate = commandPanel.createButton(ConfirmPanel.A_PROCESS);
|
||||
private Button bRefresh = commandPanel.createButton(ConfirmPanel.A_REFRESH);
|
||||
private Label labelPayDate = new Label();
|
||||
/** C_PaySelection.PayDate */
|
||||
private WDateEditor fieldPayDate = new WDateEditor();
|
||||
private Label labelPaymentRule = new Label();
|
||||
private Listbox fieldPaymentRule = ListboxFactory.newDropdownListbox();
|
||||
private Label labelDtype = new Label();
|
||||
/** Document Type */
|
||||
private Listbox fieldDtype = ListboxFactory.newDropdownListbox();
|
||||
private Panel southPanel;
|
||||
/** MPaySelection.COLUMNNAME_IsOnePaymentPerInvoice */
|
||||
private Checkbox chkOnePaymentPerInv = new Checkbox();
|
||||
|
||||
/** Center of {@link #mainLayout}. Open document list. */
|
||||
private WListbox miniTable = ListboxFactory.newDataTable();
|
||||
|
||||
/** South of {@link #mainLayout} */
|
||||
private Panel southPanel;
|
||||
|
||||
/** Child of {@link #southPanel} */
|
||||
private Hlayout statusBar = new Hlayout();
|
||||
/** Child of {@link #statusBar} */
|
||||
private Label dataStatus = new Label();
|
||||
|
||||
/** Child of {@link #southPanel} */
|
||||
private ConfirmPanel commandPanel = new ConfirmPanel(true, false, false, false, false, false, false);
|
||||
private Button bCancel = commandPanel.getButton(ConfirmPanel.A_CANCEL);
|
||||
/** Child of {@link #commandPanel} */
|
||||
private Button bGenerate = commandPanel.createButton(ConfirmPanel.A_PROCESS);
|
||||
|
||||
/** Child of {@link #parameterLayout} */
|
||||
private Button bRefresh = commandPanel.createButton(ConfirmPanel.A_REFRESH);
|
||||
|
||||
private ProcessInfo m_pi;
|
||||
private boolean m_isLock;
|
||||
private Hlayout statusBar = new Hlayout();
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* Default constructor
|
||||
*/
|
||||
public WPaySelect()
|
||||
{
|
||||
|
@ -151,12 +173,11 @@ public class WPaySelect extends PaySelect
|
|||
}
|
||||
|
||||
/**
|
||||
* Init UI component and layout
|
||||
* Layout {@link #form}
|
||||
* @throws Exception
|
||||
*/
|
||||
private void zkInit() throws Exception
|
||||
{
|
||||
//
|
||||
form.appendChild(mainPanel);
|
||||
mainPanel.appendChild(mainLayout);
|
||||
mainPanel.setStyle("width: 100%; height: 100%; padding: 0; margin: 0");
|
||||
|
@ -305,13 +326,13 @@ public class WPaySelect extends PaySelect
|
|||
//
|
||||
commandPanel.addButton(bGenerate);
|
||||
commandPanel.getButton(ConfirmPanel.A_OK).setVisible(false);
|
||||
} // jbInit
|
||||
}
|
||||
|
||||
/**
|
||||
* Dynamic Init.
|
||||
* - Load Bank Info
|
||||
* - Load BPartner
|
||||
* - Init Table
|
||||
* Dynamic Initialization. <br/>
|
||||
* - Load Bank Accounts. <br/>
|
||||
* - Load BPartners. <br/>
|
||||
* - Initialize {@link #miniTable}. <br/>
|
||||
*/
|
||||
private void dynInit()
|
||||
{
|
||||
|
@ -342,7 +363,7 @@ public class WPaySelect extends PaySelect
|
|||
} // dynInit
|
||||
|
||||
/**
|
||||
* Load Bank Info - Load Info from Bank Account and valid Documents (PaymentRule)
|
||||
* Load Bank Info - Load Info from Bank Account and valid Documents (PaymentRule)
|
||||
*/
|
||||
protected void loadBankInfo()
|
||||
{
|
||||
|
@ -364,7 +385,7 @@ public class WPaySelect extends PaySelect
|
|||
} // loadBankInfo
|
||||
|
||||
/**
|
||||
* Load open documents
|
||||
* Load open documents into {@link #miniTable}
|
||||
*/
|
||||
protected void loadTableInfo()
|
||||
{
|
||||
|
@ -386,8 +407,7 @@ public class WPaySelect extends PaySelect
|
|||
Dialog.error(m_WindowNo, "VPaySelectNoBank");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
BankInfo bi = fieldBankAccount.getSelectedItem().getValue();
|
||||
|
||||
ValueNamePair paymentRule = (fieldPaymentRule.getSelectedItem() != null ? (ValueNamePair) fieldPaymentRule.getSelectedItem().getValue() : null);
|
||||
|
@ -405,7 +425,7 @@ public class WPaySelect extends PaySelect
|
|||
} // loadTableInfo
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
* Close form.
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
|
@ -413,9 +433,9 @@ public class WPaySelect extends PaySelect
|
|||
} // dispose
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* ActionListener
|
||||
* @param e event
|
||||
/**
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent (Event e)
|
||||
|
@ -510,7 +530,7 @@ public class WPaySelect extends PaySelect
|
|||
}
|
||||
|
||||
/**
|
||||
* Calculate selected rows.
|
||||
* Calculate selected rows.<br/>
|
||||
* - add up selected rows
|
||||
*/
|
||||
public void calculateSelection()
|
||||
|
@ -521,7 +541,7 @@ public class WPaySelect extends PaySelect
|
|||
} // calculateSelection
|
||||
|
||||
/**
|
||||
* Generate PaySelection
|
||||
* Generate C_PaySelection records.
|
||||
*/
|
||||
protected void generatePaySelect()
|
||||
{
|
||||
|
@ -545,12 +565,10 @@ public class WPaySelect extends PaySelect
|
|||
Dialog.error(m_WindowNo, "SaveError", msg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (MSysConfig.getBooleanValue(MSysConfig.PAYMENT_SELECTION_MANUAL_ASK_INVOKE_GENERATE, true, m_ps.getAD_Client_ID(), m_ps.getAD_Org_ID())) {
|
||||
// Ask to Post it
|
||||
// Open dialog to create MPaySelectionCheck records.
|
||||
Dialog.ask(m_WindowNo, "VPaySelectGenerate?", new Callback<Boolean>() {
|
||||
|
||||
@Override
|
||||
public void onCallback(Boolean result)
|
||||
{
|
||||
|
@ -559,7 +577,7 @@ public class WPaySelect extends PaySelect
|
|||
miniTable.clearSelection();
|
||||
loadTableInfo();
|
||||
// Prepare Process
|
||||
int AD_Proces_ID = PROCESS_C_PAYSELECTION_CREATEPAYMENT; // C_PaySelection_CreatePayment
|
||||
int AD_Proces_ID = PROCESS_C_PAYSELECTION_CREATEPAYMENT; // PaySelectionCreateCheck
|
||||
|
||||
// Execute Process
|
||||
ProcessModalDialog dialog = new ProcessModalDialog(WPaySelect.this, m_WindowNo,
|
||||
|
@ -591,8 +609,7 @@ public class WPaySelect extends PaySelect
|
|||
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
@ -603,8 +620,8 @@ public class WPaySelect extends PaySelect
|
|||
} // generatePaySelect
|
||||
|
||||
/**
|
||||
* Lock User Interface
|
||||
* Called from the Worker before processing
|
||||
* Lock User Interface.
|
||||
* Called from the Worker before processing.
|
||||
*/
|
||||
public void lockUI (ProcessInfo pi)
|
||||
{
|
||||
|
@ -615,7 +632,7 @@ public class WPaySelect extends PaySelect
|
|||
|
||||
/**
|
||||
* Unlock User Interface.
|
||||
* Called from the Worker when processing is done
|
||||
* Called from the Worker when processing is done.
|
||||
*/
|
||||
public void unlockUI (ProcessInfo pi)
|
||||
{
|
||||
|
@ -628,7 +645,6 @@ public class WPaySelect extends PaySelect
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true if UI is lock
|
||||
*/
|
||||
public boolean isUILocked() {
|
||||
|
@ -641,7 +657,6 @@ public class WPaySelect extends PaySelect
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {@link ProcessInfo}
|
||||
*/
|
||||
public ProcessInfo getProcessInfo() {
|
||||
|
|
|
@ -33,17 +33,17 @@ import org.adempiere.webui.util.ZKUpdateUtil;
|
|||
import org.adempiere.webui.window.Dialog;
|
||||
import org.compiere.grid.PaymentFormCash;
|
||||
import org.compiere.model.GridTab;
|
||||
import org.compiere.model.X_C_Order;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.KeyNamePair;
|
||||
import org.compiere.util.Msg;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form for cash payment rule ({@link X_C_Order#PAYMENTRULE_Cash}).
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WPaymentFormCash extends PaymentFormCash {
|
||||
|
||||
/** Payment form window instance */
|
||||
private WPaymentFormWindow window;
|
||||
|
||||
private Label bBankAccountLabel = new Label();
|
||||
|
@ -55,6 +55,10 @@ public class WPaymentFormCash extends PaymentFormCash {
|
|||
private Label bAmountLabel = new Label();
|
||||
private WNumberEditor bAmountField = new WNumberEditor();
|
||||
|
||||
/**
|
||||
* @param windowNo
|
||||
* @param mTab
|
||||
*/
|
||||
public WPaymentFormCash(int windowNo, GridTab mTab) {
|
||||
super(windowNo, mTab);
|
||||
bDateField = new WDateEditor("DateAcct", false, false, true, "DateAcct");
|
||||
|
@ -64,6 +68,9 @@ public class WPaymentFormCash extends PaymentFormCash {
|
|||
bAmountField.setValue(m_Amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
*/
|
||||
public void init() {
|
||||
Grid bPanelLayout = GridFactory.newGridLayout();
|
||||
window.getPanel().appendChild(bPanelLayout);
|
||||
|
|
|
@ -36,6 +36,7 @@ import org.adempiere.webui.window.Dialog;
|
|||
import org.compiere.grid.PaymentFormCheck;
|
||||
import org.compiere.model.GridTab;
|
||||
import org.compiere.model.MPaymentValidate;
|
||||
import org.compiere.model.X_C_Order;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.KeyNamePair;
|
||||
import org.compiere.util.Msg;
|
||||
|
@ -47,12 +48,11 @@ import org.zkoss.zk.ui.util.Clients;
|
|||
import org.zkoss.zul.Space;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form for check payment rule ({@link X_C_Order#PAYMENTRULE_Check}).
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WPaymentFormCheck extends PaymentFormCheck implements EventListener<Event> {
|
||||
|
||||
/** Payment form window instance */
|
||||
private WPaymentFormWindow window;
|
||||
|
||||
private Label sBankAccountLabel = new Label();
|
||||
|
@ -62,14 +62,15 @@ public class WPaymentFormCheck extends PaymentFormCheck implements EventListener
|
|||
private Label sRoutingLabel = new Label();
|
||||
private Textbox sRoutingField = new Textbox();
|
||||
private Label sNumberLabel = new Label();
|
||||
/** Account number field */
|
||||
private Textbox sNumberField = new Textbox();
|
||||
/** Check number field */
|
||||
private Textbox sCheckField = new Textbox();
|
||||
private Label sCheckLabel = new Label();
|
||||
private Button sOnline = new Button();
|
||||
private Label sStatus = new Label();
|
||||
|
||||
/**
|
||||
*
|
||||
* @param windowNo
|
||||
* @param mTab
|
||||
*/
|
||||
|
@ -78,7 +79,10 @@ public class WPaymentFormCheck extends PaymentFormCheck implements EventListener
|
|||
window = new WPaymentFormWindow(this, windowNo);
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
*/
|
||||
protected void init() {
|
||||
Grid sPanelLayout = GridFactory.newGridLayout();
|
||||
window.getPanel().appendChild(sPanelLayout);
|
||||
|
@ -164,6 +168,7 @@ public class WPaymentFormCheck extends PaymentFormCheck implements EventListener
|
|||
updateOnlineButton();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(Event e)
|
||||
{
|
||||
if (e.getTarget() == sAmountField)
|
||||
|
@ -177,6 +182,10 @@ public class WPaymentFormCheck extends PaymentFormCheck implements EventListener
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set visibility of {@link #sOnline} depends on the availability of bank account processor
|
||||
* ({@link #isBankAccountProcessorExist(int, BigDecimal)}).
|
||||
*/
|
||||
private void updateOnlineButton()
|
||||
{
|
||||
boolean exist = isBankAccountProcessorExist(m_C_Currency_ID, (BigDecimal) sAmountField.getValue());
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
package org.adempiere.webui.apps.form;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.adempiere.util.PaymentUtil;
|
||||
import org.adempiere.webui.component.Button;
|
||||
|
@ -36,6 +37,7 @@ import org.compiere.grid.PaymentFormCreditCard;
|
|||
import org.compiere.model.GridTab;
|
||||
import org.compiere.model.MBankAccountProcessor;
|
||||
import org.compiere.model.MInvoice;
|
||||
import org.compiere.model.X_C_Order;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Msg;
|
||||
import org.compiere.util.ValueNamePair;
|
||||
|
@ -47,19 +49,21 @@ import org.zkoss.zk.ui.util.Clients;
|
|||
import org.zkoss.zul.Space;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form for credit card payment rule ({@link X_C_Order#PAYMENTRULE_CreditCard}).
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WPaymentFormCreditCard extends PaymentFormCreditCard implements EventListener<Event> {
|
||||
|
||||
/** Payment form window instance */
|
||||
private WPaymentFormWindow window;
|
||||
|
||||
private Label kTypeLabel = new Label();
|
||||
/** Credit Card Type list */
|
||||
private Listbox kTypeCombo = ListboxFactory.newDropdownListbox();
|
||||
private Label kNumberLabel = new Label();
|
||||
/** Credit card number field */
|
||||
private Textbox kNumberField = new Textbox();
|
||||
private Label kExpLabel = new Label();
|
||||
/** Expire date field */
|
||||
private Textbox kExpField = new Textbox();
|
||||
private Label kAmountLabel = new Label();
|
||||
private WNumberEditor kAmountField = new WNumberEditor();
|
||||
|
@ -69,7 +73,6 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
|||
private Label kStatus = new Label();
|
||||
|
||||
/**
|
||||
*
|
||||
* @param windowNo
|
||||
* @param mTab
|
||||
*/
|
||||
|
@ -79,6 +82,9 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
|||
init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
*/
|
||||
protected void init() {
|
||||
Grid kLayout = GridFactory.newGridLayout();
|
||||
window.getPanel().appendChild(kLayout);
|
||||
|
@ -242,6 +248,9 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
|||
updateOnlineButton();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set state of {@link #kOnline} depending on availability of {@link MBankAccountProcessor} for selected Credit Card type.
|
||||
*/
|
||||
private void updateOnlineButton()
|
||||
{
|
||||
String CCType = null;
|
||||
|
@ -295,7 +304,7 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
|||
@Override
|
||||
public void processOnline()
|
||||
{
|
||||
log.config("");
|
||||
if (log.isLoggable(Level.CONFIG)) log.config("");
|
||||
if (!checkMandatory())
|
||||
return;
|
||||
|
||||
|
@ -311,7 +320,7 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
|||
if (processMsg != null)
|
||||
Dialog.info(getWindowNo(), "PaymentProcessed", processMsg);
|
||||
}
|
||||
} // online
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showWindow() {
|
||||
|
|
|
@ -45,28 +45,32 @@ import org.zkoss.zk.ui.util.Clients;
|
|||
import org.zkoss.zul.Space;
|
||||
|
||||
/**
|
||||
*
|
||||
* Abstract base payment form class for payment rule direct debit and direct deposit.
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public abstract class WPaymentFormDirect extends PaymentFormDirect implements EventListener<Event> {
|
||||
|
||||
/** Payment form window instance */
|
||||
private WPaymentFormWindow window;
|
||||
|
||||
private Label tAccountLabel = new Label();
|
||||
/** Bank accounts */
|
||||
private Listbox tAccountCombo = ListboxFactory.newDropdownListbox();
|
||||
private Button tOnline = new Button();
|
||||
/** Routing number */
|
||||
private Textbox tRoutingField = new Textbox();
|
||||
/** Account number */
|
||||
private Textbox tNumberField = new Textbox();
|
||||
private Label tStatus = new Label();
|
||||
/** Label for {@link #tRoutingField} */
|
||||
private Label tRoutingText = new Label();
|
||||
/** Label for {@link #tNumberField} */
|
||||
private Label tNumberText = new Label();
|
||||
|
||||
/**
|
||||
*
|
||||
* @param windowNo
|
||||
* @param mTab
|
||||
* @param isDebit
|
||||
* @param isDebit true for direct debit, false for direct deposit
|
||||
*/
|
||||
public WPaymentFormDirect(int windowNo, GridTab mTab, boolean isDebit) {
|
||||
super(windowNo, mTab, isDebit);
|
||||
|
@ -74,6 +78,9 @@ public abstract class WPaymentFormDirect extends PaymentFormDirect implements Ev
|
|||
init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
*/
|
||||
protected void init() {
|
||||
Grid tPanelLayout = GridFactory.newGridLayout();
|
||||
window.getPanel().appendChild(tPanelLayout);
|
||||
|
|
|
@ -14,17 +14,17 @@
|
|||
package org.adempiere.webui.apps.form;
|
||||
|
||||
import org.compiere.model.GridTab;
|
||||
import org.compiere.model.X_C_Order;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Form for direct debit payment rule ({@link X_C_Order#PAYMENTRULE_DirectDebit}).
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WPaymentFormDirectDebit extends WPaymentFormDirect {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param windowNo
|
||||
* @param mTab
|
||||
*/
|
||||
|
|
|
@ -14,17 +14,16 @@
|
|||
package org.adempiere.webui.apps.form;
|
||||
|
||||
import org.compiere.model.GridTab;
|
||||
import org.compiere.model.X_C_Order;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Form for direct deposit payment rule ({@link X_C_Order#PAYMENTRULE_DirectDeposit}).
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WPaymentFormDirectDeposit extends WPaymentFormDirect {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param windowNo
|
||||
* @param mTab
|
||||
*/
|
||||
|
|
|
@ -18,14 +18,13 @@ import org.compiere.grid.IPaymentForm;
|
|||
import org.compiere.model.GridTab;
|
||||
|
||||
/**
|
||||
*
|
||||
* Static method to initiate {@link IPaymentForm} instance.
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WPaymentFormFactory {
|
||||
|
||||
/**
|
||||
*
|
||||
* Call {@link Extensions#getPaymentForm(int, GridTab, String)}
|
||||
* @param windowNo
|
||||
* @param mTab
|
||||
* @param paymentRule
|
||||
|
|
|
@ -15,16 +15,22 @@ package org.adempiere.webui.apps.form;
|
|||
|
||||
import org.compiere.grid.PaymentFormMixedPOS;
|
||||
import org.compiere.model.GridTab;
|
||||
import org.compiere.model.X_C_Order;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form for mixed POS payment rule ({@link X_C_Order#PAYMENTRULE_MixedPOSPayment}).<br/>
|
||||
* As it is, this is a dummy implementation that doesn't do anything.
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WPaymentFormMixedPOS extends PaymentFormMixedPOS {
|
||||
|
||||
/** Payment form window instance */
|
||||
private WPaymentFormWindow window;
|
||||
|
||||
/**
|
||||
* @param windowNo
|
||||
* @param mTab
|
||||
*/
|
||||
public WPaymentFormMixedPOS(int windowNo, GridTab mTab) {
|
||||
super(windowNo, mTab);
|
||||
window = new WPaymentFormWindow(this, windowNo);
|
||||
|
|
|
@ -28,24 +28,24 @@ import org.adempiere.webui.component.Rows;
|
|||
import org.adempiere.webui.util.ZKUpdateUtil;
|
||||
import org.compiere.grid.PaymentFormOnCredit;
|
||||
import org.compiere.model.GridTab;
|
||||
import org.compiere.model.X_C_Order;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.KeyNamePair;
|
||||
import org.compiere.util.Msg;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form for on credit payment rule ({@link X_C_Order#PAYMENTRULE_OnCredit}).
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WPaymentFormOnCredit extends PaymentFormOnCredit {
|
||||
|
||||
/** Payment form window instance */
|
||||
private WPaymentFormWindow window;
|
||||
|
||||
private Label pTermLabel = new Label();
|
||||
/** Payment terms */
|
||||
private Listbox pTermCombo = ListboxFactory.newDropdownListbox();
|
||||
|
||||
/**
|
||||
*
|
||||
* @param windowNo
|
||||
* @param mTab
|
||||
*/
|
||||
|
@ -54,7 +54,10 @@ public class WPaymentFormOnCredit extends PaymentFormOnCredit {
|
|||
window = new WPaymentFormWindow(this, windowNo);
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Layout {@link #window}
|
||||
*/
|
||||
protected void init() {
|
||||
Grid pPanelLayout = GridFactory.newGridLayout();
|
||||
window.getPanel().appendChild(pPanelLayout);
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.adempiere.webui.event.DialogEvents;
|
|||
import org.adempiere.webui.theme.ThemeManager;
|
||||
import org.adempiere.webui.util.ZKUpdateUtil;
|
||||
import org.adempiere.webui.window.Dialog;
|
||||
import org.compiere.grid.IPaymentForm;
|
||||
import org.compiere.grid.PaymentForm;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Msg;
|
||||
|
@ -32,29 +33,37 @@ import org.zkoss.zul.Center;
|
|||
import org.zkoss.zul.South;
|
||||
|
||||
/**
|
||||
*
|
||||
* Window for {@link IPaymentForm}.
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
public class WPaymentFormWindow extends Window implements EventListener<Event>, DialogEvents {
|
||||
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = 2710316463655831868L;
|
||||
|
||||
/** Form Controller */
|
||||
private PaymentForm paymentForm;
|
||||
private int windowNo;
|
||||
|
||||
/** Main panel of form */
|
||||
private Panel mainPanel = new Panel();
|
||||
/** Center of {@link #mainLayout} */
|
||||
private Panel centerPanel = new Panel();
|
||||
/** Layout of {@link #mainPanel} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
/** South of {@link #mainLayout}. Action buttons panel. */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
|
||||
/** True when UI is lock */
|
||||
private boolean m_isLocked = false;
|
||||
/** Status of initialization */
|
||||
private boolean initOK = false;
|
||||
private BusyDialog progressWindow;
|
||||
|
||||
/**
|
||||
* @param paymentForm
|
||||
* @param windowNo
|
||||
*/
|
||||
public WPaymentFormWindow(PaymentForm paymentForm, int windowNo)
|
||||
{
|
||||
super();
|
||||
|
@ -79,10 +88,17 @@ public class WPaymentFormWindow extends Window implements EventListener<Event>,
|
|||
this.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return window number
|
||||
*/
|
||||
protected int getWindowNo() {
|
||||
return this.windowNo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout form.
|
||||
* @throws Exception
|
||||
*/
|
||||
private void zkInit() throws Exception {
|
||||
this.appendChild(mainPanel);
|
||||
mainPanel.appendChild(mainLayout);
|
||||
|
@ -104,34 +120,45 @@ public class WPaymentFormWindow extends Window implements EventListener<Event>,
|
|||
confirmPanel.addActionListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dynamic initialization.
|
||||
* Call {@link PaymentForm#dynInit()}.
|
||||
* @return initialization status
|
||||
* @throws Exception
|
||||
*/
|
||||
private boolean dynInit() throws Exception {
|
||||
boolean isInitOK = paymentForm.dynInit();
|
||||
centerPanel.setVisible(!paymentForm.isOnlyRule());
|
||||
return isInitOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@link #centerPanel}
|
||||
*/
|
||||
public Panel getPanel() {
|
||||
return centerPanel;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* Action Listener
|
||||
/**
|
||||
* Event Listener
|
||||
*
|
||||
* @param e
|
||||
* event
|
||||
* @param e event
|
||||
*/
|
||||
public void onEvent(Event e) {
|
||||
// Finish
|
||||
if (e.getTarget().getId().equals(ConfirmPanel.A_OK)) {
|
||||
if (paymentForm.checkMandatory()) {
|
||||
paymentForm.saveChanges(); // cannot recover
|
||||
paymentForm.saveChanges();
|
||||
dispose();
|
||||
}
|
||||
} else if (e.getTarget().getId().equals(ConfirmPanel.A_CANCEL))
|
||||
dispose();
|
||||
|
||||
} // actionPerformed
|
||||
dispose();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle runProcessOnline event.
|
||||
* Call {@link PaymentForm#processOnline()}.
|
||||
*/
|
||||
public void runProcessOnline() {
|
||||
try {
|
||||
paymentForm.processOnline();
|
||||
|
@ -140,6 +167,9 @@ public class WPaymentFormWindow extends Window implements EventListener<Event>,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unlock and update UI.
|
||||
*/
|
||||
public void unlockUI() {
|
||||
if (!m_isLocked) return;
|
||||
|
||||
|
@ -148,6 +178,9 @@ public class WPaymentFormWindow extends Window implements EventListener<Event>,
|
|||
updateUI();
|
||||
}
|
||||
|
||||
/**
|
||||
* Lock UI and show in progress dialog.
|
||||
*/
|
||||
public void lockUI() {
|
||||
if (m_isLocked) return;
|
||||
|
||||
|
@ -156,6 +189,9 @@ public class WPaymentFormWindow extends Window implements EventListener<Event>,
|
|||
showBusyDialog();
|
||||
}
|
||||
|
||||
/**
|
||||
* Close in progress dialog.
|
||||
*/
|
||||
private void hideBusyDialog() {
|
||||
if (progressWindow != null) {
|
||||
progressWindow.dispose();
|
||||
|
@ -163,17 +199,27 @@ public class WPaymentFormWindow extends Window implements EventListener<Event>,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update UI after completion of processing/save.<br/>
|
||||
* Call from {@link #unlockUI()}.
|
||||
*/
|
||||
private void updateUI() {
|
||||
if (paymentForm.isApproved())
|
||||
dispose();
|
||||
}
|
||||
|
||||
/**
|
||||
* Show in progress window.
|
||||
*/
|
||||
private void showBusyDialog() {
|
||||
progressWindow = new BusyDialog();
|
||||
progressWindow.setPage(this.getPage());
|
||||
progressWindow.doHighlighted();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if initialization have been completed sucessfully
|
||||
*/
|
||||
public boolean isInitOK()
|
||||
{
|
||||
return initOK;
|
||||
|
|
|
@ -67,18 +67,24 @@ import org.zkoss.zul.Vbox;
|
|||
@org.idempiere.ui.zk.annotation.Form
|
||||
public class WPluginManager extends ADForm implements EventListener<Event> {
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -5661912464378243252L;
|
||||
|
||||
/** Log. */
|
||||
private static final CLogger log = CLogger.getCLogger(WPluginManager.class);
|
||||
|
||||
/** Center of form */
|
||||
private WListbox pluginsTable;
|
||||
/** Available actions for plugins */
|
||||
private Listbox pluginActions;
|
||||
/** Button to apply {@link #pluginActions} to bundle */
|
||||
private Button pluginProcess;
|
||||
/** Data for {@link #pluginsTable} */
|
||||
private Vector<Vector<Object>> pluginData;
|
||||
/** Column headers of {@link #pluginsTable} */
|
||||
private Vector<String> pluginColumnNames;
|
||||
/** filter by bundle symbolic name (using contains) */
|
||||
private Textbox fFilter = new Textbox();
|
||||
private Button btnRefresh = null;
|
||||
|
||||
|
@ -158,6 +164,10 @@ public class WPluginManager extends ADForm implements EventListener<Event> {
|
|||
this.appendChild(vbox);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param state
|
||||
* @return Text for bundle state
|
||||
*/
|
||||
private String state(int state) {
|
||||
switch (state) {
|
||||
case Bundle.ACTIVE:
|
||||
|
@ -177,6 +187,9 @@ public class WPluginManager extends ADForm implements EventListener<Event> {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh {@link #pluginActions}
|
||||
*/
|
||||
private void refreshActionList() {
|
||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_UPDATE).setVisible(false); // not implemented yet
|
||||
pluginActions.getItemAtIndex(PLUGIN_ACTION_UNINSTALL).setVisible(false); // not implemented yet
|
||||
|
@ -221,6 +234,9 @@ public class WPluginManager extends ADForm implements EventListener<Event> {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return selected @link {@link Bundle}
|
||||
*/
|
||||
private Bundle getSelectedBundle() {
|
||||
Bundle retValue = null;
|
||||
int idx = pluginsTable.getSelectedIndex();
|
||||
|
@ -233,6 +249,9 @@ public class WPluginManager extends ADForm implements EventListener<Event> {
|
|||
return retValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply selected {@link #pluginActions} to selected {@link Bundle} (from selected {@link #pluginsTable} row).
|
||||
*/
|
||||
private void processPlugin() {
|
||||
Listitem actionItem = pluginActions.getSelectedItem();
|
||||
if (actionItem != null && actionItem.getValue() instanceof Integer) {
|
||||
|
@ -265,6 +284,10 @@ public class WPluginManager extends ADForm implements EventListener<Event> {
|
|||
refreshAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh {@link #pluginsTable}.
|
||||
* Bundle list is loaded from {@link BundleContext#getBundles()}.
|
||||
*/
|
||||
private void refreshPluginTable() {
|
||||
int idx = pluginsTable.getSelectedIndex();
|
||||
pluginsTable.getModel().removeAll(pluginData);
|
||||
|
@ -291,11 +314,15 @@ public class WPluginManager extends ADForm implements EventListener<Event> {
|
|||
pluginsTable.setSelectedIndex(idx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call {@link #refreshPluginTable()} and {@link #refreshActionList()}.
|
||||
*/
|
||||
private void refreshAll() {
|
||||
refreshPluginTable();
|
||||
refreshActionList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
if (Events.ON_SELECT.equals(event.getName()) && event.getTarget() == pluginsTable)
|
||||
refreshActionList();
|
||||
|
@ -308,5 +335,4 @@ public class WPluginManager extends ADForm implements EventListener<Event> {
|
|||
refreshAll();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -32,12 +32,13 @@ import org.compiere.util.Util;
|
|||
import org.idempiere.model.IProcessParameter;
|
||||
|
||||
/**
|
||||
* Form to create MSchedulerPara or MProcessDrillRulePara records.
|
||||
* @author hengsin
|
||||
*
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form
|
||||
public class WProcessParameter implements IFormController {
|
||||
|
||||
/** Form/window UI instance */
|
||||
private WProcessParameterForm parameterForm = null;
|
||||
|
||||
/**
|
||||
|
@ -56,22 +57,22 @@ public class WProcessParameter implements IFormController {
|
|||
}
|
||||
|
||||
/**
|
||||
* Save parameters
|
||||
* @param paras
|
||||
* Create MSchedulerPara or MProcessDrillRulePara from paras.
|
||||
* @param instanceParas
|
||||
* @param tableName
|
||||
*/
|
||||
public void saveParameters(MPInstancePara[] paras, String tableName) {
|
||||
public void saveParameters(MPInstancePara[] instanceParas, String tableName) {
|
||||
|
||||
MTable table = MTable.get(Env.getCtx(), tableName);
|
||||
PO po = table.getPO(parameterForm.getProcessInfo().getRecord_ID(), null);
|
||||
String idColumn = "";
|
||||
|
||||
int AD_Process_ID = po.get_ValueAsInt("AD_Process_ID"); //scheduler.getAD_Process_ID();
|
||||
if (AD_Process_ID > 0 && paras.length > 0) {
|
||||
if (AD_Process_ID > 0 && instanceParas.length > 0) {
|
||||
MProcess process = MProcess.get(Env.getCtx(), AD_Process_ID);
|
||||
MProcessPara[] processParameters = process.getParameters();
|
||||
|
||||
//delete parameters
|
||||
//clear old before create new
|
||||
if(tableName.equalsIgnoreCase(MScheduler.Table_Name)) {
|
||||
idColumn = "AD_Scheduler_ID";
|
||||
MScheduler scheduler = new MScheduler(Env.getCtx(), po.get_ID(), null);
|
||||
|
@ -88,9 +89,9 @@ public class WProcessParameter implements IFormController {
|
|||
para.deleteEx(true);
|
||||
}
|
||||
}
|
||||
//
|
||||
|
||||
//child table always must have "_Para" suffix
|
||||
for(MPInstancePara para : paras) {
|
||||
for(MPInstancePara instancePara : instanceParas) {
|
||||
table = MTable.get(Env.getCtx(), tableName+"_Para");
|
||||
IProcessParameter poPara = null;
|
||||
if(tableName.equalsIgnoreCase(MScheduler.Table_Name))
|
||||
|
@ -99,37 +100,37 @@ public class WProcessParameter implements IFormController {
|
|||
poPara = new MProcessDrillRulePara(Env.getCtx(), 0, null);
|
||||
poPara.setParentID(po.get_ValueAsInt(idColumn));
|
||||
for(MProcessPara processPara : processParameters) {
|
||||
if (processPara.getColumnName().equals(para.getParameterName())) {
|
||||
if (processPara.getColumnName().equals(instancePara.getParameterName())) {
|
||||
poPara.setAD_Process_Para_ID(processPara.getAD_Process_Para_ID());
|
||||
if (DisplayType.isNumeric(processPara.getAD_Reference_ID())) {
|
||||
if (para.get_Value(MPInstancePara.COLUMNNAME_P_Number) != null)
|
||||
poPara.setParameterDefault(para.getP_Number().toString());
|
||||
if (processPara.isRange() && para.get_Value(MPInstancePara.COLUMNNAME_P_Number_To) != null)
|
||||
poPara.setParameterToDefault(para.getP_Number_To().toString());
|
||||
if (instancePara.get_Value(MPInstancePara.COLUMNNAME_P_Number) != null)
|
||||
poPara.setParameterDefault(instancePara.getP_Number().toString());
|
||||
if (processPara.isRange() && instancePara.get_Value(MPInstancePara.COLUMNNAME_P_Number_To) != null)
|
||||
poPara.setParameterToDefault(instancePara.getP_Number_To().toString());
|
||||
} else if (DisplayType.isID(processPara.getAD_Reference_ID())) {
|
||||
if (para.get_Value(MPInstancePara.COLUMNNAME_P_Number) != null)
|
||||
poPara.setParameterDefault(Integer.toString(para.getP_Number().intValue()));
|
||||
if (processPara.isRange() && para.get_Value(MPInstancePara.COLUMNNAME_P_Number_To) != null)
|
||||
poPara.setParameterToDefault(Integer.toString(para.getP_Number_To().intValue()));
|
||||
if (instancePara.get_Value(MPInstancePara.COLUMNNAME_P_Number) != null)
|
||||
poPara.setParameterDefault(Integer.toString(instancePara.getP_Number().intValue()));
|
||||
if (processPara.isRange() && instancePara.get_Value(MPInstancePara.COLUMNNAME_P_Number_To) != null)
|
||||
poPara.setParameterToDefault(Integer.toString(instancePara.getP_Number_To().intValue()));
|
||||
} else if (DisplayType.isDate(processPara.getAD_Reference_ID())) {
|
||||
if (para.getP_Date() != null)
|
||||
poPara.setParameterDefault(para.getP_Date().toString());
|
||||
if (processPara.isRange() && para.getP_Date_To() != null)
|
||||
poPara.setParameterToDefault(para.getP_Date_To().toString());
|
||||
if (instancePara.getP_Date() != null)
|
||||
poPara.setParameterDefault(instancePara.getP_Date().toString());
|
||||
if (processPara.isRange() && instancePara.getP_Date_To() != null)
|
||||
poPara.setParameterToDefault(instancePara.getP_Date_To().toString());
|
||||
} else {
|
||||
poPara.setParameterDefault(para.getP_String());
|
||||
if (processPara.isRange() && para.getP_String_To() != null)
|
||||
poPara.setParameterToDefault(para.getP_String_To());
|
||||
poPara.setParameterDefault(instancePara.getP_String());
|
||||
if (processPara.isRange() && instancePara.getP_String_To() != null)
|
||||
poPara.setParameterToDefault(instancePara.getP_String_To());
|
||||
}
|
||||
if (!Util.isEmpty(para.getInfo())) {
|
||||
poPara.setDescription(para.getInfo());
|
||||
if (!Util.isEmpty(instancePara.getInfo())) {
|
||||
poPara.setDescription(instancePara.getInfo());
|
||||
}
|
||||
if (!Util.isEmpty(para.getInfo_To())) {
|
||||
if (!Util.isEmpty(instancePara.getInfo_To())) {
|
||||
String s = poPara.getDescription();
|
||||
if (Util.isEmpty(s))
|
||||
s = para.getInfo_To();
|
||||
s = instancePara.getInfo_To();
|
||||
else
|
||||
s = s + ", " + para.getInfo_To();
|
||||
s = s + ", " + instancePara.getInfo_To();
|
||||
poPara.setDescription(s);
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -50,7 +50,7 @@ import org.zkoss.zul.Column;
|
|||
import org.zkoss.zul.Columns;
|
||||
|
||||
/**
|
||||
* Quick entry form
|
||||
* Quick entry form.
|
||||
*
|
||||
* @author Logilite Technologies
|
||||
* @since Nov 03, 2017
|
||||
|
@ -58,17 +58,21 @@ import org.zkoss.zul.Columns;
|
|||
public class WQuickForm extends Window implements IQuickForm
|
||||
{
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -5363771364595732977L;
|
||||
|
||||
/** Main layout of form */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
/** Calling ADWindowContent instance */
|
||||
private AbstractADWindowContent adWinContent = null;
|
||||
/** Center of {@link #mainLayout}. Grid/List view for multi record entry. */
|
||||
private QuickGridView quickGridView = null;
|
||||
/** Current selected grid tab of {@link #adWinContent} */
|
||||
private GridTab gridTab;
|
||||
|
||||
/** Action buttons panel. South of {@link #mainLayout} */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true, true, false, false, false, false);
|
||||
|
||||
private Button bDelete = confirmPanel.createButton(ConfirmPanel.A_DELETE);
|
||||
private Button bSave = confirmPanel.createButton("Save");
|
||||
private Button bIgnore = confirmPanel.createButton("Ignore");
|
||||
|
@ -79,12 +83,17 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
|
||||
private int onlyCurrentDays = 0;
|
||||
|
||||
QuickGridView prevQGV = null;
|
||||
protected QuickGridView prevQGV = null;
|
||||
|
||||
private int windowNo;
|
||||
|
||||
private boolean stayInParent;
|
||||
|
||||
/**
|
||||
* @param winContent
|
||||
* @param m_onlyCurrentRows
|
||||
* @param m_onlyCurrentDays
|
||||
*/
|
||||
public WQuickForm(AbstractADWindowContent winContent, boolean m_onlyCurrentRows, int m_onlyCurrentDays)
|
||||
{
|
||||
super();
|
||||
|
@ -109,6 +118,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
addCallback(AFTER_PAGE_DETACHED, t -> adWinContent.focusToLastFocusEditor());
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize form.
|
||||
*/
|
||||
protected void initForm( )
|
||||
{
|
||||
initZk();
|
||||
|
@ -116,6 +128,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
quickGridView.refresh(gridTab);
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout form.
|
||||
*/
|
||||
private void initZk( )
|
||||
{
|
||||
// Center
|
||||
|
@ -213,6 +228,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
event.stopPropagation();
|
||||
} // onEvent
|
||||
|
||||
/**
|
||||
* Cancel/Close form.
|
||||
*/
|
||||
public void onCancel( )
|
||||
{
|
||||
if (gridTab.getTableModel().getRowChanged() > -1)
|
||||
|
@ -234,6 +252,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
}
|
||||
} // onCancel
|
||||
|
||||
/**
|
||||
* Reset sort state
|
||||
*/
|
||||
public void onUnSort( )
|
||||
{
|
||||
adWinContent.getActiveGridTab().getTableModel().resetCacheSortState();
|
||||
|
@ -247,6 +268,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
adWinContent.getStatusBarQF().setStatusLine(Msg.getMsg(Env.getCtx(), "UnSort"), false);
|
||||
} // onUnSort
|
||||
|
||||
/**
|
||||
* Open {@link CustomizeGridViewDialog} for {@link #quickGridView}.
|
||||
*/
|
||||
public void onCustomize( )
|
||||
{
|
||||
onSave();
|
||||
|
@ -271,6 +295,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
CustomizeGridViewDialog.showCustomize(0, gridTab.getAD_Tab_ID(), columnsWidth, gridFieldIds, null, quickGridView, true, null);
|
||||
} // onCustomize
|
||||
|
||||
/**
|
||||
* Ignore/Undo changes
|
||||
*/
|
||||
public void onIgnore( )
|
||||
{
|
||||
gridTab.dataIgnore();
|
||||
|
@ -284,6 +311,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
Events.echoEvent(QuickGridView.EVENT_ON_SET_FOCUS_TO_FIRST_CELL, quickGridView, null);
|
||||
} // onIgnore
|
||||
|
||||
/**
|
||||
* Delete selected rows.
|
||||
*/
|
||||
public void onDelete( )
|
||||
{
|
||||
if (gridTab == null || !quickGridView.isNewLineSaved)
|
||||
|
@ -346,6 +376,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
}
|
||||
} // onDelete
|
||||
|
||||
/**
|
||||
* Save {@link #quickGridView} changes.
|
||||
*/
|
||||
public void onSave( )
|
||||
{
|
||||
if (gridTab.getTableModel().getRowChanged() == gridTab.getCurrentRow())
|
||||
|
@ -363,6 +396,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
}
|
||||
} // onSave
|
||||
|
||||
/**
|
||||
* Refresh {@link #gridTab} and {@link #quickGridView}.
|
||||
*/
|
||||
public void onRefresh( )
|
||||
{
|
||||
gridTab.dataRefreshAll();
|
||||
|
@ -375,6 +411,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
createNewRow();
|
||||
} // onRefresh
|
||||
|
||||
/**
|
||||
* Close form.
|
||||
*/
|
||||
@Override
|
||||
public void dispose( )
|
||||
{
|
||||
|
@ -413,6 +452,9 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
}
|
||||
} // dispose
|
||||
|
||||
/**
|
||||
* Add new row to {@link #quickGridView}.
|
||||
*/
|
||||
private void createNewRow( )
|
||||
{
|
||||
int row = gridTab.getRowCount();
|
||||
|
@ -445,11 +487,10 @@ public class WQuickForm extends Window implements IQuickForm
|
|||
} // dataStatusChanged
|
||||
|
||||
/**
|
||||
* Return to parent when closing the quick form
|
||||
* If stayInParent is true, {@link #adWinContent} should navigate to parent record after closing this form instance.
|
||||
* @param stayInParent
|
||||
*/
|
||||
public void setStayInParent(boolean stayInParent) {
|
||||
this.stayInParent = stayInParent;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -72,66 +72,82 @@ import org.zkoss.zul.Hlayout;
|
|||
import org.zkoss.zul.Separator;
|
||||
import org.zkoss.zul.Vbox;
|
||||
|
||||
|
||||
/**
|
||||
* Form to customise print format of a {@link ReportEngine} instance (i.e starting from report output).<br/>
|
||||
* Open from {@link ZkReportViewer}.
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form
|
||||
public class WReportCustomization implements IFormController,EventListener<Event> {
|
||||
|
||||
/** Custom form/window instance */
|
||||
private CustomForm form = new CustomForm();
|
||||
|
||||
/** Window No */
|
||||
private int m_WindowNo = -1;
|
||||
|
||||
|
||||
/** Window No */
|
||||
private int m_WindowNo = -1;
|
||||
|
||||
int curStep = 0;
|
||||
/** Print Context */
|
||||
private Properties m_ctx;
|
||||
|
||||
private boolean m_isCanExport;
|
||||
protected int curStep = 0;
|
||||
/** Context */
|
||||
private Properties m_ctx;
|
||||
/** true if current login role has export right */
|
||||
private boolean m_isCanExport;
|
||||
|
||||
private ReportEngine m_reportEngine=null;
|
||||
public ArrayList<MPrintFormatItem> pfi ;
|
||||
/** Print format items from {@link ReportEngine#getPrintFormat()} */
|
||||
protected ArrayList<MPrintFormatItem> pfi ;
|
||||
|
||||
/** North of {@link #form} */
|
||||
private Hlayout headerPanel=new Hlayout();
|
||||
/** Print format name */
|
||||
private WStringEditor name = new WStringEditor();
|
||||
private String tempName = "";
|
||||
/** Button to create new print format */
|
||||
private Button newPrintFormat;
|
||||
private Label selectAll;
|
||||
private Label deselectAll;
|
||||
private Label pipeSeparator;
|
||||
private Button bExport = new Button();
|
||||
private Button bnext ;
|
||||
private Button btnSave;
|
||||
|
||||
/** Center of {@link #form} */
|
||||
private Tabbox tabbox = new Tabbox();
|
||||
private Tabs tabs = new Tabs();
|
||||
private Tabpanels tabpanels = new Tabpanels();
|
||||
private Window winExportFile = null;
|
||||
private Listbox cboType = new Listbox();
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
private ConfirmPanel confirmPanelMain = new ConfirmPanel(true);
|
||||
public boolean isChange=false;
|
||||
public ZkReportViewer viewer;
|
||||
MPrintFormat fm;
|
||||
|
||||
/** Dialog for export of {@link #m_reportEngine} to file */
|
||||
private Window winExportFile = null;
|
||||
/** Output type (pdf, html, etc) for {@link #winExportFile} */
|
||||
private Listbox cboType = new Listbox();
|
||||
/** Confirm panel for {@link #winExportFile} */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
|
||||
/** Footer of {@link #form} */
|
||||
private ConfirmPanel confirmPanelMain = new ConfirmPanel(true);
|
||||
private Button bExport = new Button();
|
||||
private Button bnext ;
|
||||
private Button btnSave;
|
||||
|
||||
/** true if {@link #name} has change */
|
||||
protected boolean isChange=false;
|
||||
/** Print format from {@link ReportEngine#getPrintFormat()} */
|
||||
protected MPrintFormat fm;
|
||||
|
||||
protected Tab tabdf1=new Tab(Msg.getMsg(Env.getCtx(), "DisplayFields"));
|
||||
protected Tab tabfo2=new Tab(Msg.getMsg(Env.getCtx(), "FieldOrder"));
|
||||
protected Tab tabsc3=new Tab(Msg.getMsg(Env.getCtx(), "SortCriteria"));
|
||||
protected Tab tabgc4=new Tab(Msg.getMsg(Env.getCtx(), "GroupingCriteria"));
|
||||
protected Tab tabsf5=new Tab(Msg.getMsg(Env.getCtx(), "SummaryFields"));
|
||||
|
||||
Tab tabdf1=new Tab(Msg.getMsg(Env.getCtx(), "DisplayFields"));
|
||||
Tab tabfo2=new Tab(Msg.getMsg(Env.getCtx(), "FieldOrder"));
|
||||
Tab tabsc3=new Tab(Msg.getMsg(Env.getCtx(), "SortCriteria"));
|
||||
Tab tabgc4=new Tab(Msg.getMsg(Env.getCtx(), "GroupingCriteria"));
|
||||
Tab tabsf5=new Tab(Msg.getMsg(Env.getCtx(), "SummaryFields"));
|
||||
|
||||
WRC1DisplayFieldsPanel tpdf1 = new WRC1DisplayFieldsPanel();
|
||||
WRC2FieldOrderPanel tpfo2 =new WRC2FieldOrderPanel();
|
||||
WRC3SortCriteriaPanel tpsc3=new WRC3SortCriteriaPanel();
|
||||
WRC4GroupingCriteriaPanel tpgc4=new WRC4GroupingCriteriaPanel();
|
||||
WRC5SummaryFieldsPanel tpsf5=new WRC5SummaryFieldsPanel();
|
||||
protected WRC1DisplayFieldsPanel tpdf1 = new WRC1DisplayFieldsPanel();
|
||||
protected WRC2FieldOrderPanel tpfo2 =new WRC2FieldOrderPanel();
|
||||
protected WRC3SortCriteriaPanel tpsc3=new WRC3SortCriteriaPanel();
|
||||
protected WRC4GroupingCriteriaPanel tpgc4=new WRC4GroupingCriteriaPanel();
|
||||
protected WRC5SummaryFieldsPanel tpsf5=new WRC5SummaryFieldsPanel();
|
||||
|
||||
/** selected tab index */
|
||||
private int oldtabidx = 0;
|
||||
|
||||
/** Logger */
|
||||
/** Logger */
|
||||
private static final CLogger log = CLogger.getCLogger(WReportCustomization.class);
|
||||
|
||||
/**
|
||||
* Static Layout
|
||||
* Default constructor
|
||||
* @throws Exception
|
||||
*/
|
||||
public WReportCustomization() {
|
||||
|
@ -141,11 +157,10 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
}
|
||||
|
||||
/**
|
||||
* Static Layout
|
||||
* Set report engine.
|
||||
* @throws Exception
|
||||
*/
|
||||
public void setReportEngine(ReportEngine re) {
|
||||
|
||||
m_reportEngine = re;
|
||||
m_isCanExport=MRole.getDefault().isCanExport();
|
||||
pfi = new ArrayList<MPrintFormatItem>() ;
|
||||
|
@ -165,14 +180,13 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #form}
|
||||
*/
|
||||
private void init()
|
||||
{
|
||||
|
||||
form.setStyle("width: 90%; height: 90%; position: absolute; border:none; padding:none; margin:none;");
|
||||
|
||||
//ZKUpdateUtil.setHeight(headerPanel, "40px");
|
||||
//headerPanel.setWidth("100%");
|
||||
|
||||
headerPanel.appendChild(new Separator("vertical"));
|
||||
|
||||
fm = new MPrintFormat(m_ctx, m_reportEngine.getPrintFormat().getAD_PrintFormat_ID(), null);
|
||||
|
@ -373,7 +387,7 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
}
|
||||
if (event.getTarget().getId().equals(ConfirmPanel.A_CANCEL)){
|
||||
close();
|
||||
}else if (event.getTarget().getId().equals(ConfirmPanel.A_OK)){
|
||||
} else if (event.getTarget().getId().equals(ConfirmPanel.A_OK)){
|
||||
((WRCTabPanel) tabbox.getSelectedTabpanel()).updatePFI();
|
||||
onSave();
|
||||
close();
|
||||
|
@ -393,6 +407,9 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
pipeSeparator.setVisible(oldtabidx == 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save changes ({@link #name} and/or {@link #pfi}).
|
||||
*/
|
||||
private void onSave() {
|
||||
|
||||
if (name.getValue() == null || Util.isEmpty((String) name.getValue()))
|
||||
|
@ -427,6 +444,9 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
setIsChanged(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update AD_PrintFormat_Trl
|
||||
*/
|
||||
private void updateTrl()
|
||||
{
|
||||
List<GenericPO> list = new Query(m_ctx, "AD_PrintFormat_Trl", "AD_PrintFormat_ID = ?", null)
|
||||
|
@ -446,7 +466,7 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
}
|
||||
|
||||
/**
|
||||
* Export
|
||||
* Export content of {@link #m_reportEngine} to file.
|
||||
*/
|
||||
private void cmd_export()
|
||||
{
|
||||
|
@ -513,6 +533,9 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
AEnv.showWindow(winExportFile);
|
||||
} // cmd_export
|
||||
|
||||
/**
|
||||
* Export content of {@link #m_reportEngine} to file.
|
||||
*/
|
||||
private void exportFile()
|
||||
{
|
||||
try
|
||||
|
@ -599,11 +622,17 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Close form.
|
||||
*/
|
||||
public void close()
|
||||
{
|
||||
form.detach();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new print format from m_reportEngine.getPrintFormat().
|
||||
*/
|
||||
public void copyFormat(){
|
||||
pfi.clear();
|
||||
MPrintFormat newpf=MPrintFormat.copyToClient(m_ctx, m_reportEngine.getPrintFormat().get_ID() ,Env.getAD_Client_ID(m_ctx));
|
||||
|
@ -640,11 +669,14 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
fm = newpf;
|
||||
}
|
||||
|
||||
public void setIsChanged(boolean change){
|
||||
isChange=change;
|
||||
/**
|
||||
* @param change
|
||||
*/
|
||||
public void setIsChanged(boolean change){
|
||||
isChange=change;
|
||||
|
||||
btnSave.setDisabled(!isChange);
|
||||
bExport.setDisabled(isChange);
|
||||
newPrintFormat.setDisabled(isChange);
|
||||
}
|
||||
btnSave.setDisabled(!isChange);
|
||||
bExport.setDisabled(isChange);
|
||||
newPrintFormat.setDisabled(isChange);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,9 +66,11 @@ import org.zkoss.zul.South;
|
|||
public class WResetPassword implements IFormController, EventListener<Event>, ValueChangeListener {
|
||||
|
||||
private static final CLogger log = CLogger.getCLogger(WResetPassword.class);
|
||||
|
||||
/** Custom form/window UI instance */
|
||||
private CustomForm form;
|
||||
/** Center of {@link #form}. Grid layout for form fields. */
|
||||
private Grid gridPanel;
|
||||
/** South of {@link #form} */
|
||||
private ConfirmPanel confirmPanel;
|
||||
|
||||
private Label lblUser;
|
||||
|
@ -90,6 +92,9 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
|
|||
private Textbox txtNewEMailUserPW;
|
||||
private Textbox txtRetypeNewEMailPW;
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public WResetPassword()
|
||||
{
|
||||
form = new CustomForm();
|
||||
|
@ -121,6 +126,10 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Dynamic initializatio of UI components.
|
||||
* @throws Exception
|
||||
*/
|
||||
private void dynInit() throws Exception
|
||||
{
|
||||
lblUser = new Label(Msg.translate(Env.getCtx(), "AD_User_ID"));
|
||||
|
@ -186,6 +195,10 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
|
|||
confirmPanel = new ConfirmPanel(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #gridPanel}
|
||||
* @throws Exception
|
||||
*/
|
||||
private void zkInit() throws Exception
|
||||
{
|
||||
gridPanel = GridFactory.newGridLayout();
|
||||
|
@ -253,7 +266,8 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
|
|||
|
||||
@Override
|
||||
public void valueChange(ValueChangeEvent e) {
|
||||
log.info(e.getPropertyName() + "=" + e.getNewValue());
|
||||
if (log.isLoggable(Level.INFO))
|
||||
log.info(e.getPropertyName() + "=" + e.getNewValue());
|
||||
if (e.getPropertyName().equals("AD_User_ID"))
|
||||
fUser.setValue(e.getNewValue());
|
||||
}
|
||||
|
@ -295,6 +309,9 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate changes and save.
|
||||
*/
|
||||
private void validateChangePassword()
|
||||
{
|
||||
int p_AD_User_ID = -1;
|
||||
|
@ -386,6 +403,9 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
|
|||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset form.
|
||||
*/
|
||||
private void clearForm()
|
||||
{
|
||||
fUser.setValue(null);
|
||||
|
|
|
@ -63,7 +63,7 @@ import org.zkoss.zul.Center;
|
|||
public class WSQLProcess extends ADForm implements EventListener<Event>
|
||||
{
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -4661224754061326223L;
|
||||
|
||||
|
@ -82,17 +82,17 @@ public class WSQLProcess extends ADForm implements EventListener<Event>
|
|||
private Textbox m_txbResultField = new Textbox();
|
||||
|
||||
/**
|
||||
* REGEX_REMOVE_COMMENTS
|
||||
* Remove comment
|
||||
*/
|
||||
private static final String REGEX_REMOVE_COMMENTS = "/\\*(?:.|[\\n\\r])*?\\*/";
|
||||
|
||||
/**
|
||||
* REGEX_REMOVE_QUOTED_STRINGS
|
||||
* Remove quoted string
|
||||
*/
|
||||
private static final String REGEX_REMOVE_QUOTED_STRINGS = "'(?:.|[\\n\\r])*?'";
|
||||
|
||||
/**
|
||||
* REGEX_REMOVE_LEADING_SPACES
|
||||
* Remove leading space
|
||||
*/
|
||||
private static final String REGEX_REMOVE_LEADING_SPACES = "^\\s+";
|
||||
|
||||
|
@ -103,6 +103,9 @@ public class WSQLProcess extends ADForm implements EventListener<Event>
|
|||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout form
|
||||
*/
|
||||
@Override
|
||||
protected void initForm() {
|
||||
Row rwTop = new Row();
|
||||
|
@ -178,7 +181,7 @@ public class WSQLProcess extends ADForm implements EventListener<Event>
|
|||
* Process a semicolon delimited list of SQL Statements.
|
||||
*
|
||||
* @param sqlStatements one or more statements separated by a semicolon (';')
|
||||
* @return a string summarizing the results
|
||||
* @return a string summarising the results
|
||||
*/
|
||||
public static String processStatements (String sqlStatements) {
|
||||
if (sqlStatements == null || sqlStatements.length() == 0)
|
||||
|
@ -199,7 +202,7 @@ public class WSQLProcess extends ADForm implements EventListener<Event>
|
|||
* Process SQL Statements.
|
||||
*
|
||||
* @param sqlStatement a single SQL statement
|
||||
* @return a string summarizing the results
|
||||
* @return a string summarising the results
|
||||
*/
|
||||
public static String processStatement (String sqlStatement) {
|
||||
if (sqlStatement == null)
|
||||
|
|
|
@ -64,13 +64,13 @@ import org.zkoss.zul.South;
|
|||
/**
|
||||
* A Custom Form to process SQL queries.
|
||||
*
|
||||
* The statement to be executed can be restricted using SysConfig
|
||||
* The statement to be executed can be restricted using SysConfig.
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form
|
||||
public class WSQLQuery extends ADForm implements EventListener<Event>
|
||||
{
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -6641250848300700313L;
|
||||
|
||||
|
@ -92,17 +92,17 @@ public class WSQLQuery extends ADForm implements EventListener<Event>
|
|||
private WListbox listbox = new WListbox();
|
||||
|
||||
/**
|
||||
* REGEX_REMOVE_COMMENTS
|
||||
* Remove comment
|
||||
*/
|
||||
private static final String REGEX_REMOVE_COMMENTS = "/\\*(?:.|[\\n\\r])*?\\*/";
|
||||
|
||||
/**
|
||||
* REGEX_REMOVE_QUOTED_STRINGS
|
||||
* Remove quoted string
|
||||
*/
|
||||
private static final String REGEX_REMOVE_QUOTED_STRINGS = "'(?:.|[\\n\\r])*?'";
|
||||
|
||||
/**
|
||||
* REGEX_REMOVE_LEADING_SPACES
|
||||
* Remove leading space
|
||||
*/
|
||||
private static final String REGEX_REMOVE_LEADING_SPACES = "^\\s+";
|
||||
|
||||
|
@ -113,6 +113,9 @@ public class WSQLQuery extends ADForm implements EventListener<Event>
|
|||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout form
|
||||
*/
|
||||
@Override
|
||||
protected void initForm() {
|
||||
North north = new North();
|
||||
|
@ -328,6 +331,7 @@ public class WSQLQuery extends ADForm implements EventListener<Event>
|
|||
* Process the events for this form
|
||||
* @param event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
if (event.getTarget() == m_btnSql)
|
||||
m_txbResultField.setText(processStatement(m_txbSqlField.getText()));
|
||||
|
|
|
@ -71,7 +71,7 @@ import org.zkoss.zul.Treerow;
|
|||
import org.zkoss.zul.Vbox;
|
||||
|
||||
/**
|
||||
* View for Setup Wizard
|
||||
* Form for Client/Tenant Setup Wizard
|
||||
*
|
||||
* @author Carlos Ruiz
|
||||
*
|
||||
|
@ -79,13 +79,18 @@ import org.zkoss.zul.Vbox;
|
|||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VSetupWizard")
|
||||
public class WSetupWizard extends SetupWizard implements IFormController, EventListener<Event>
|
||||
{
|
||||
/** Custom form/window UI instance */
|
||||
private CustomForm form = null;
|
||||
|
||||
/** Main layout of {@link #form} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
|
||||
/** North of {@link #mainLayout} */
|
||||
private Panel northPanel = new Panel();
|
||||
private Progressmeter progressbar = new Progressmeter();
|
||||
private Label progressLabel = new Label();
|
||||
//
|
||||
|
||||
/** Workflow nodes. Child of {@link #centerBox}. */
|
||||
private Tree wfnodeTree;
|
||||
private Treeitem prevti = null;
|
||||
private Treeitem firstOpenNode = null;
|
||||
|
@ -94,12 +99,16 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
private int cntNodes = 0;
|
||||
private int cntSolved = 0;
|
||||
|
||||
/** East of {@link #mainLayout}. Info for current selected node. */
|
||||
private Label pretitleLabel = new Label(Msg.getMsg(Env.getCtx(), "SetupTask"));
|
||||
private Label titleLabel = new Label();
|
||||
private Iframe helpFrame = new Iframe();
|
||||
private Label notesLabel = new Label(Msg.getElement(Env.getCtx(), MWizardProcess.COLUMNNAME_Note));
|
||||
private Textbox notesField = new Textbox();
|
||||
|
||||
/** Footer of east panel of {@link #mainLayout} */
|
||||
private Vbox westdown = new Vbox();
|
||||
/** {@link #westdown} contents */
|
||||
private Label userLabel = new Label(Msg.getMsg(Env.getCtx(), "User"));
|
||||
private WSearchEditor userField;
|
||||
|
||||
|
@ -111,8 +120,9 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
private Button bOK = new Button();
|
||||
private Button bNext = new Button();
|
||||
private Button bZoom = new Button();
|
||||
|
||||
/** Child of {@link #centerBoxdown} */
|
||||
private Button bExpand = new Button();
|
||||
|
||||
private Checkbox justmine = new Checkbox();
|
||||
private Checkbox showColors = new Checkbox();
|
||||
|
||||
|
@ -123,11 +133,15 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
private boolean expandTree = false;
|
||||
private boolean allFinished = true;
|
||||
private boolean allPending = true;
|
||||
/** Center of {@link #mainLayout} */
|
||||
private Vbox centerBox = new Vbox();
|
||||
private Vbox centerBoxdown = new Vbox();
|
||||
private Vbox westdown = new Vbox();
|
||||
/** Footer of {@link #centerBox} */
|
||||
private Vbox centerBoxdown = new Vbox();
|
||||
private ArrayList<Integer> openNodes = new ArrayList<Integer>();
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
public WSetupWizard()
|
||||
{
|
||||
try
|
||||
|
@ -139,7 +153,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
{
|
||||
log.log(Level.SEVERE, "WSetupWizard.init", ex);
|
||||
}
|
||||
} // init
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill Tree Combo
|
||||
|
@ -149,10 +163,11 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
form = new CustomForm()
|
||||
{
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = 8563773513335140396L;
|
||||
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception
|
||||
{
|
||||
if (event.getName().equals(WindowContainer.ON_WINDOW_CONTAINER_SELECTION_CHANGED_EVENT))
|
||||
|
@ -203,6 +218,10 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add workflow
|
||||
* @param wfwizard
|
||||
*/
|
||||
protected void addWfEntry(MWorkflow wfwizard) {
|
||||
allFinished = true;
|
||||
allPending = true;
|
||||
|
@ -258,6 +277,11 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Add workflow nodes
|
||||
* @param wfwizard
|
||||
* @param treeitemwf
|
||||
*/
|
||||
private void addNodes(MWorkflow wfwizard, Treeitem treeitemwf) {
|
||||
MWFNode[] nodes = wfwizard.getNodes(true, Env.getAD_Client_ID(Env.getCtx()));
|
||||
for (MWFNode node : nodes) {
|
||||
|
@ -265,6 +289,11 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add workflow node
|
||||
* @param node
|
||||
* @param treeitemwf
|
||||
*/
|
||||
private void addWfNode(MWFNode node, Treeitem treeitemwf) {
|
||||
if (MWFNode.ACTION_UserWindow.equals(node.getAction()) && node.getAD_Window_ID() > 0) {
|
||||
if (MRole.getDefault().getWindowAccess(node.getAD_Window_ID()) == null)
|
||||
|
@ -344,7 +373,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
}
|
||||
|
||||
/**
|
||||
* Static init
|
||||
* Layout {@link #form}
|
||||
* @throws Exception
|
||||
*/
|
||||
private void jbInit () throws Exception
|
||||
|
@ -506,6 +535,9 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
}
|
||||
} // jbInit
|
||||
|
||||
/**
|
||||
* Update {@link #progressbar}
|
||||
*/
|
||||
private void refreshProgress() {
|
||||
int percent = cntSolved * 100;
|
||||
if (cntNodes > 0)
|
||||
|
@ -520,7 +552,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
}
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
* Close form
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
|
@ -528,9 +560,10 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
} // dispose
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent (Event e)
|
||||
{
|
||||
if (e.getTarget() == wfnodeTree) {
|
||||
|
@ -557,8 +590,11 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
showColors();
|
||||
}
|
||||
|
||||
} // actionPerformed
|
||||
}
|
||||
|
||||
/**
|
||||
* Update colors of tree nodes.
|
||||
*/
|
||||
private void showColors() {
|
||||
if (showColors.isChecked())
|
||||
{
|
||||
|
@ -568,6 +604,9 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
repaintTree();
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter tree nodes by login user or show all (by {@link #justmine} value).
|
||||
*/
|
||||
private void justMine() {
|
||||
if (justmine.isChecked()) {
|
||||
showChildren(false);
|
||||
|
@ -576,6 +615,10 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter tree nodes by login user.
|
||||
* @param showmine true to filter by login user, false to show all.
|
||||
*/
|
||||
private void showChildren(boolean showmine) {
|
||||
int user = Env.getAD_User_ID(Env.getCtx());
|
||||
for (Treeitem nextItem : nextItems){
|
||||
|
@ -590,6 +633,9 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Expand or collapse all tree nodes.
|
||||
*/
|
||||
private void expandTree() {
|
||||
if(!expandTree){
|
||||
TreeUtils.expandAll(wfnodeTree);
|
||||
|
@ -601,6 +647,9 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Zoom to window, form or info window of current node.
|
||||
*/
|
||||
private void zoom() {
|
||||
if (m_node != null) {
|
||||
if (MWFNode.ACTION_UserWindow.equals(m_node.getAction())) {
|
||||
|
@ -616,6 +665,9 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Repaint {@link #wfnodeTree}.
|
||||
*/
|
||||
private void repaintTree() {
|
||||
openNodes.removeAll(openNodes);
|
||||
for (Treeitem nextItem : nextItems) {
|
||||
|
@ -629,6 +681,9 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
refreshProgress();
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigate to next node.
|
||||
*/
|
||||
private void navigateToNext() {
|
||||
boolean repaint = false;
|
||||
if (m_node != null) {
|
||||
|
@ -662,6 +717,10 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
showItem(ti);
|
||||
} // propertyChange
|
||||
|
||||
/**
|
||||
* Update UI for tree item.
|
||||
* @param ti
|
||||
*/
|
||||
private void showItem(Treeitem ti) {
|
||||
if (ti == null)
|
||||
return;
|
||||
|
@ -681,6 +740,11 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update right panel (east) UI.
|
||||
* @param ad_workflow_id
|
||||
* @param ad_wf_node_id
|
||||
*/
|
||||
private void showInRightPanel(int ad_workflow_id, int ad_wf_node_id) {
|
||||
String title = null;
|
||||
String help = null;
|
||||
|
@ -712,6 +776,10 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
helpFrame.invalidate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set visibility of components in notes panel (top part of east panel)
|
||||
* @param visible
|
||||
*/
|
||||
private void setNotesPanelVisible(boolean visible) {
|
||||
notesLabel.setVisible(visible);
|
||||
notesField.setVisible(visible);
|
||||
|
@ -724,9 +792,9 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL
|
|||
bZoom.setVisible(visible);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ADForm getForm()
|
||||
{
|
||||
return form;
|
||||
}
|
||||
|
||||
} // WSetupWizard
|
|
@ -44,6 +44,7 @@ import org.adempiere.webui.util.ZKUpdateUtil;
|
|||
import org.adempiere.webui.window.Dialog;
|
||||
import org.compiere.apps.form.StatementCreateFromBatch;
|
||||
import org.compiere.model.MBankStatement;
|
||||
import org.compiere.model.MBankStatementLine;
|
||||
import org.compiere.model.MColumn;
|
||||
import org.compiere.model.MLookup;
|
||||
import org.compiere.model.MLookupFactory;
|
||||
|
@ -58,13 +59,14 @@ import org.zkoss.zk.ui.event.Events;
|
|||
import org.zkoss.zul.Hbox;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form to create bank statement line ({@link MBankStatementLine}) from transactions (payment, receipt, etc).
|
||||
* @author Elaine
|
||||
*
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form
|
||||
public class WStatementCreateFromBatch extends StatementCreateFromBatch implements IFormController, EventListener<Event>
|
||||
{
|
||||
/** Create From Form instance */
|
||||
private WCreateFromForm form;
|
||||
|
||||
/**
|
||||
|
@ -102,35 +104,49 @@ public class WStatementCreateFromBatch extends StatementCreateFromBatch implemen
|
|||
private final static CLogger log = CLogger.getCLogger(WStatementCreateFromBatch.class);
|
||||
|
||||
protected Label bankAccountLabel = new Label();
|
||||
/** Bank account parameter */
|
||||
protected WTableDirEditor bankAccountField;
|
||||
|
||||
protected Label documentNoLabel = new Label(Msg.translate(Env.getCtx(), "DocumentNo"));
|
||||
/** Document number parameter */
|
||||
protected WStringEditor documentNoField = new WStringEditor();
|
||||
|
||||
protected Label documentTypeLabel = new Label();
|
||||
/** Document type parameter */
|
||||
protected WTableDirEditor documentTypeField;
|
||||
|
||||
protected Label authorizationLabel = new Label();
|
||||
/** Authorization code parameter */
|
||||
protected WStringEditor authorizationField = new WStringEditor();
|
||||
|
||||
protected Label tenderTypeLabel = new Label();
|
||||
/** Tender type parameter */
|
||||
protected WTableDirEditor tenderTypeField;
|
||||
|
||||
protected Label amtFromLabel = new Label(Msg.translate(Env.getCtx(), "PayAmt"));
|
||||
/** Amount from parameter */
|
||||
protected WNumberEditor amtFromField = new WNumberEditor("AmtFrom", false, false, true, DisplayType.Amount, Msg.translate(Env.getCtx(), "AmtFrom"));
|
||||
protected Label amtToLabel = new Label("-");
|
||||
/** Amount to parameter */
|
||||
protected WNumberEditor amtToField = new WNumberEditor("AmtTo", false, false, true, DisplayType.Amount, Msg.translate(Env.getCtx(), "AmtTo"));
|
||||
|
||||
protected Label BPartner_idLabel = new Label(Msg.translate(Env.getCtx(), "BPartner"));
|
||||
/** Business partner parameter */
|
||||
protected WEditor bPartnerLookup;
|
||||
|
||||
protected Label dateFromLabel = new Label(Msg.translate(Env.getCtx(), "DateTrx"));
|
||||
/** Date from parameter */
|
||||
protected WDateEditor dateFromField = new WDateEditor("DateFrom", false, false, true, Msg.translate(Env.getCtx(), "DateFrom"));
|
||||
protected Label dateToLabel = new Label("-");
|
||||
/** Date to parameter */
|
||||
protected WDateEditor dateToField = new WDateEditor("DateTo", false, false, true, Msg.translate(Env.getCtx(), "DateTo"));
|
||||
|
||||
/** Layout of parameter panel */
|
||||
protected Grid parameterBankLayout;
|
||||
|
||||
/**
|
||||
* Dynamic initialization of UI components.
|
||||
*/
|
||||
@Override
|
||||
protected boolean dynInit() throws Exception
|
||||
{
|
||||
|
@ -181,7 +197,7 @@ public class WStatementCreateFromBatch extends StatementCreateFromBatch implemen
|
|||
} // dynInit
|
||||
|
||||
/**
|
||||
* handle onClientInfo event
|
||||
* handle onClientInfo event from browser
|
||||
*/
|
||||
protected void onClientInfo()
|
||||
{
|
||||
|
@ -208,6 +224,10 @@ public class WStatementCreateFromBatch extends StatementCreateFromBatch implemen
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #form}
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void zkInit() throws Exception
|
||||
{
|
||||
bankAccountLabel.setText(Msg.translate(Env.getCtx(), "C_BankAccount_ID"));
|
||||
|
@ -273,7 +293,7 @@ public class WStatementCreateFromBatch extends StatementCreateFromBatch implemen
|
|||
}
|
||||
|
||||
/**
|
||||
* Configure layout of parameter grid
|
||||
* Setup columns of {@link #parameterBankLayout}
|
||||
* @param parameterBankLayout
|
||||
*/
|
||||
protected void setupColumns(Grid parameterBankLayout) {
|
||||
|
@ -327,7 +347,7 @@ public class WStatementCreateFromBatch extends StatementCreateFromBatch implemen
|
|||
}
|
||||
|
||||
/**
|
||||
* load data into list box
|
||||
* load data into list box ({@link WCreateFromForm#getWListbox()})
|
||||
* @param data
|
||||
*/
|
||||
protected void loadTableOIS (Vector<?> data)
|
||||
|
|
|
@ -85,7 +85,7 @@ import org.zkoss.zul.Vlayout;
|
|||
import org.zkoss.zul.West;
|
||||
|
||||
/**
|
||||
*
|
||||
* Form to visually layout an AD_Tab.
|
||||
* @author Juan David Arboleda
|
||||
* @author Carlos Ruiz
|
||||
*
|
||||
|
@ -94,9 +94,10 @@ import org.zkoss.zul.West;
|
|||
public class WTabEditor extends TabEditor implements IFormController, EventListener<Event>, ValueChangeListener
|
||||
{
|
||||
// TODO: create messages Property, VisibleFields, NonVisibleField
|
||||
|
||||
/** Form/window UI instance */
|
||||
private WTabEditorForm tabform = null;
|
||||
|
||||
/** Main layout of {@link #tabform} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
|
||||
/** Window No */
|
||||
|
@ -107,44 +108,61 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
|
||||
WEditor editorName = null;
|
||||
WEditor editorDescription = null;
|
||||
WEditor editorHelp = null;
|
||||
WEditor editorPlaceholder = null;
|
||||
WEditor editorAD_FieldGroup_ID = null;
|
||||
WEditor editorIsDisplayed = null;
|
||||
WEditor editorSeqNo = null;
|
||||
WEditor editorXPosition = null;
|
||||
WEditor editorColumnSpan = null;
|
||||
WEditor editorNumLines = null;
|
||||
WEditor editorDisplayLogic = null;
|
||||
WEditor editorMandatoryLogic = null;
|
||||
WEditor editorReadOnlyLogic = null;
|
||||
WEditor editorColumn = null;
|
||||
WYesNoEditor editorIsReadOnly = null;
|
||||
/** Properties editor for field (AD_Field). East of {@link #mainLayout} */
|
||||
|
||||
protected WEditor editorName = null;
|
||||
protected WEditor editorDescription = null;
|
||||
protected WEditor editorHelp = null;
|
||||
protected WEditor editorPlaceholder = null;
|
||||
protected WEditor editorAD_FieldGroup_ID = null;
|
||||
protected WEditor editorIsDisplayed = null;
|
||||
protected WEditor editorSeqNo = null;
|
||||
protected WEditor editorXPosition = null;
|
||||
protected WEditor editorColumnSpan = null;
|
||||
protected WEditor editorNumLines = null;
|
||||
protected WEditor editorDisplayLogic = null;
|
||||
protected WEditor editorMandatoryLogic = null;
|
||||
protected WEditor editorReadOnlyLogic = null;
|
||||
protected WEditor editorColumn = null;
|
||||
protected WYesNoEditor editorIsReadOnly = null;
|
||||
|
||||
//Child of westVLayout
|
||||
/** List of display fields */
|
||||
private Listbox visible = new Listbox();
|
||||
/** List of not dispaly fields */
|
||||
private Listbox invisible = new Listbox();
|
||||
|
||||
// The grid components
|
||||
Group currentGroup;
|
||||
ArrayList<Row> rowList;
|
||||
/** Current group. Temporary variable for form rendering in {@link #createUI()} */
|
||||
protected Group currentGroup;
|
||||
/** List of all form row */
|
||||
protected ArrayList<Row> rowList;
|
||||
|
||||
Map<Cell, GridField> mapCellField = new HashMap<Cell, GridField>();
|
||||
Map<Cell, Integer> mapEmptyCellField = new HashMap<Cell, Integer>();
|
||||
protected Map<Cell, GridField> mapCellField = new HashMap<Cell, GridField>();
|
||||
/** Cell:Integer to decode SeqNo and XPosition. Use to support DropEvent */
|
||||
protected Map<Cell, Integer> mapEmptyCellField = new HashMap<Cell, Integer>();
|
||||
|
||||
Grid form;
|
||||
Vlayout centerVLayout;
|
||||
Vlayout westVLayout;
|
||||
/** Grid layout for fields. Child of {@link #centerVLayout} */
|
||||
protected Grid form;
|
||||
/** Center of {@link #mainLayout} */
|
||||
protected Vlayout centerVLayout;
|
||||
/** West of {@link #mainLayout} */
|
||||
protected Vlayout westVLayout;
|
||||
|
||||
private static final int POSSEQMULTIPLIER = 10000000;
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
public WTabEditor()
|
||||
{
|
||||
tabform = new WTabEditorForm(this);
|
||||
LayoutUtils.addSclass("tab-editor-form", tabform);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize form
|
||||
*/
|
||||
public void initForm() {
|
||||
try
|
||||
{
|
||||
|
@ -177,7 +195,7 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
}
|
||||
|
||||
/**
|
||||
* Initialize List of visible and non visible Fields
|
||||
* Initialize List of visible and not visible fields
|
||||
*/
|
||||
private void dynList()
|
||||
{
|
||||
|
@ -197,8 +215,8 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
} // dynList
|
||||
|
||||
/**
|
||||
* Initialize Tab panel editor
|
||||
* Same createUI algorithm used on ADTabPanel
|
||||
* Initialize Tab panel editor.
|
||||
* Base on createUI algorithm from ADTabPanel.
|
||||
*/
|
||||
private void createUI() {
|
||||
mapCellField.clear();
|
||||
|
@ -253,7 +271,7 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
|
||||
while (numCols - actualxpos + 1 > 0) {
|
||||
row.appendCellChild(createSpacer(), 1);
|
||||
setLastCellProps(row.getLastCell(), actualxpos, field.getSeqNo());
|
||||
setEmptyCellProps(row.getLastCell(), actualxpos, field.getSeqNo());
|
||||
actualxpos++;
|
||||
}
|
||||
row.setGroup(currentGroup);
|
||||
|
@ -283,7 +301,6 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
Cell cell = (Cell) rowg.getFirstChild();
|
||||
cell.setSclass("z-group-inner");
|
||||
cell.setColspan(numCols + 1);
|
||||
// rowg.appendChild(cell);
|
||||
if (X_AD_FieldGroup.FIELDGROUPTYPE_Tab.equals(gridField.getFieldGroupType()) || gridField.getIsCollapsedByDefault())
|
||||
{
|
||||
rowg.setOpen(false);
|
||||
|
@ -301,7 +318,7 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
// Fill right part of the row with spacers until number of columns
|
||||
while (numCols - actualxpos + 1 > 0) {
|
||||
row.appendCellChild(createSpacer(), 1);
|
||||
setLastCellProps(row.getLastCell(), actualxpos, field.getSeqNo());
|
||||
setEmptyCellProps(row.getLastCell(), actualxpos, field.getSeqNo());
|
||||
actualxpos++;
|
||||
}
|
||||
row.setGroup(currentGroup);
|
||||
|
@ -314,7 +331,7 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
// Fill left part of the field
|
||||
if (gridField.getXPosition() - 1 - actualxpos > 0) {
|
||||
row.appendCellChild(createSpacer(), gridField.getXPosition() - 1 - actualxpos);
|
||||
setLastCellProps(row.getLastCell(), actualxpos, field.getSeqNo());
|
||||
setEmptyCellProps(row.getLastCell(), actualxpos, field.getSeqNo());
|
||||
}
|
||||
boolean paintLabel = ! (gridField.getDisplayType() == DisplayType.Button || gridField.getDisplayType() == DisplayType.YesNo || gridField.isFieldOnly());
|
||||
if (gridField.isHeading())
|
||||
|
@ -374,7 +391,7 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
row.appendCellChild(createSpacer(), 1);
|
||||
lastseq = lastseq + 10;
|
||||
// make every empty space droppable at the end
|
||||
setLastCellProps(row.getLastCell(), actualxpos, lastseq);
|
||||
setEmptyCellProps(row.getLastCell(), actualxpos, lastseq);
|
||||
actualxpos++;
|
||||
}
|
||||
row.setGroup(currentGroup);
|
||||
|
@ -383,6 +400,11 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
rowList.add(row);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup cell properties and listeners
|
||||
* @param lastCell
|
||||
* @param field
|
||||
*/
|
||||
private void setLastCellProps(Cell lastCell, GridField field) {
|
||||
lastCell.setDraggable("true");
|
||||
lastCell.setDroppable("true");
|
||||
|
@ -392,17 +414,29 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
mapCellField.put(lastCell, field);
|
||||
}
|
||||
|
||||
private void setLastCellProps(Cell lastCell, int actualxpos, int seqNo) {
|
||||
/**
|
||||
* Setup empty cell properties and listeners
|
||||
* @param lastCell
|
||||
* @param actualxpos
|
||||
* @param seqNo
|
||||
*/
|
||||
private void setEmptyCellProps(Cell lastCell, int actualxpos, int seqNo) {
|
||||
lastCell.setDroppable("true");
|
||||
lastCell.addEventListener(Events.ON_DROP, this);
|
||||
int value = (actualxpos + 1) * POSSEQMULTIPLIER + seqNo;
|
||||
mapEmptyCellField.put(lastCell, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@link Space}
|
||||
*/
|
||||
private Component createSpacer() {
|
||||
return new Space();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Number of column for grid form
|
||||
*/
|
||||
private int getNumColumns() {
|
||||
int maxcol = 0;
|
||||
for (GridField gridField : getGridFields())
|
||||
|
@ -423,8 +457,8 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
}
|
||||
|
||||
/**
|
||||
* Initialize Grid of Field's Properties
|
||||
* return @Grid
|
||||
* Create Grid of field properties editor.
|
||||
* return {@link Grid}
|
||||
*/
|
||||
private Grid createPropertiesGrid()
|
||||
{
|
||||
|
@ -527,7 +561,6 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
editorSeqNo = new WNumberEditor(MField.COLUMNNAME_SeqNo, false, true, false, DisplayType.Integer, labelSeqNo.getValue());
|
||||
row.appendChild(labelSeqNo.rightAlign());
|
||||
row.appendChild(editorSeqNo.getComponent());
|
||||
// editorSeqNo.addValueChangeListener(this);
|
||||
row.setGroup(group);
|
||||
rows.appendChild(row);
|
||||
|
||||
|
@ -576,8 +609,6 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
((Textbox) editorDisplayLogic.getComponent()).setMultiline(true);
|
||||
row.appendChild(labelDisplayLogic.rightAlign());
|
||||
row.appendChild(editorDisplayLogic.getComponent());
|
||||
//ZKUpdateUtil.setWidth((HtmlBasedComponent) row.getLastChild(), "100%");
|
||||
//ZKUpdateUtil.setHeight((HtmlBasedComponent) row.getLastChild(), "80px");
|
||||
editorDisplayLogic.addValueChangeListener(this);
|
||||
row.setGroup(group);
|
||||
rows.appendChild(row);
|
||||
|
@ -589,8 +620,6 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
((Textbox) editorMandatoryLogic.getComponent()).setMultiline(true);
|
||||
row.appendChild(labelMandatoryLogic.rightAlign());
|
||||
row.appendChild(editorMandatoryLogic.getComponent());
|
||||
//ZKUpdateUtil.setWidth((HtmlBasedComponent) row.getLastChild(), "100%");
|
||||
//ZKUpdateUtil.setHeight((HtmlBasedComponent) row.getLastChild(), "80px");
|
||||
editorMandatoryLogic.addValueChangeListener(this);
|
||||
row.setGroup(group);
|
||||
rows.appendChild(row);
|
||||
|
@ -602,8 +631,6 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
((Textbox) editorReadOnlyLogic.getComponent()).setMultiline(true);
|
||||
row.appendChild(labelReadOnlyLogic.rightAlign());
|
||||
row.appendChild(editorReadOnlyLogic.getComponent());
|
||||
//ZKUpdateUtil.setWidth((HtmlBasedComponent) row.getLastChild(), "100%");
|
||||
//ZKUpdateUtil.setHeight((HtmlBasedComponent) row.getLastChild(), "80px");
|
||||
editorReadOnlyLogic.addValueChangeListener(this);
|
||||
row.setGroup(group);
|
||||
rows.appendChild(row);
|
||||
|
@ -633,7 +660,7 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
}
|
||||
|
||||
/**
|
||||
* Static init
|
||||
* Layout {@link #tabform}
|
||||
* @throws Exception
|
||||
*/
|
||||
private void jbInit() throws Exception
|
||||
|
@ -700,7 +727,7 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
} // jbInit
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
* Close form
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
|
@ -708,9 +735,10 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
} // dispose
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent (Event e) throws Exception
|
||||
{
|
||||
// select an item within the list -- set it active and show the properties
|
||||
|
@ -867,8 +895,13 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
if (cmd_save())
|
||||
tabform.detach();
|
||||
}
|
||||
} // actionPerformed
|
||||
}
|
||||
|
||||
/**
|
||||
* Find ListItem from {@link #visible} with GridField from {@link #mapCellField}.
|
||||
* @param cell
|
||||
* @return {@link ListItem} or null
|
||||
*/
|
||||
private ListItem getItemFromCell(Cell cell) {
|
||||
GridField field = mapCellField.get(cell);
|
||||
if (field != null) {
|
||||
|
@ -882,6 +915,11 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Going through entries in {@link #mapCellField} and set background color for cell with editor for field.
|
||||
* Clear the background color of other cells.
|
||||
* @param field
|
||||
*/
|
||||
private void setBackgroundField(MField field) {
|
||||
Iterator<Entry<Cell, GridField>> it = mapCellField.entrySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
|
@ -894,9 +932,12 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
cell.setStyle("");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate properties editor for field (editorName, editorDescription, etc).
|
||||
* @param field
|
||||
*/
|
||||
private void setProperties(MField field) {
|
||||
String displayLogic = field.getDisplayLogic() == null ? "" : field.getDisplayLogic();
|
||||
String mandatoryLogic = field.getMandatoryLogic() == null ? "" : field.getMandatoryLogic();
|
||||
|
@ -939,11 +980,16 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ADForm getForm()
|
||||
{
|
||||
return tabform;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update {@link #visible} and {@link #invisible}.
|
||||
* @param focusField
|
||||
*/
|
||||
private void updateLists(MField focusField) {
|
||||
visible.removeAllItems();
|
||||
invisible.removeAllItems();
|
||||
|
@ -974,6 +1020,9 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle value change event from field properties editor (editorName editorDescription, etc).
|
||||
*/
|
||||
@Override
|
||||
public void valueChange(ValueChangeEvent e) {
|
||||
// changed a value on the properties editors
|
||||
|
@ -1031,6 +1080,9 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-create {@link #form}
|
||||
*/
|
||||
private void repaintGrid() {
|
||||
centerVLayout.removeChild(form);
|
||||
if (form.getRows() != null)
|
||||
|
|
|
@ -70,35 +70,57 @@ import org.zkoss.zul.Treecols;
|
|||
import org.zkoss.zul.Treeitem;
|
||||
import org.zkoss.zul.West;
|
||||
|
||||
/**
|
||||
* Form to view BOM tree.
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VTreeBOM")
|
||||
public class WTreeBOM extends TreeBOM implements IFormController, EventListener<Event> {
|
||||
|
||||
private int m_WindowNo = 0;
|
||||
/** Custom form/window UI instance */
|
||||
private CustomForm m_frame = new CustomForm();
|
||||
/** BOM Tree. Child of {@link #treePane}. */
|
||||
private Tree m_tree = new Tree();
|
||||
/** Main layout of {@link #m_frame} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
/** North of {@link #mainLayout}. Parameter panel. */
|
||||
private Panel northPanel = new Panel();
|
||||
private Panel southPanel = new Panel();
|
||||
private Label labelProduct = new Label();
|
||||
/** Product parameter */
|
||||
private WSearchEditor fieldProduct;
|
||||
private West west = new West();
|
||||
/** West of {@link #mainLayout} */
|
||||
private West west = new West();
|
||||
/** BOM Implosion Y/N parameter */
|
||||
private Checkbox implosion = new Checkbox ();
|
||||
/** Show M_Product.Value of {@link #fieldProduct} */
|
||||
private Label treeInfo = new Label ();
|
||||
|
||||
/** Center of {@link #mainLayout} */
|
||||
private Panel dataPane = new Panel();
|
||||
/** Tree panel. Child of {@link #west} */
|
||||
private Panel treePane = new Panel();
|
||||
|
||||
private mySimpleTreeNode m_selectedNode; // the selected model node
|
||||
/** M_Product_ID of selected tree node */
|
||||
private int m_selected_id = 0;
|
||||
/** Action buttons panel. Child of {@link #southLayout} */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||
/** List of BOM components. Child of {@link #dataPane} */
|
||||
private WListbox tableBOM = ListboxFactory.newDataTable();
|
||||
private Vector<Vector<Object>> dataBOM = new Vector<Vector<Object>>();
|
||||
/** Layout of {@link #northPanel} */
|
||||
private Hlayout northLayout = new Hlayout();
|
||||
/** Layout of {@link #southPanel} */
|
||||
private Hlayout southLayout = new Hlayout();
|
||||
private mySimpleTreeNode m_root = null;
|
||||
private boolean reload = false;
|
||||
/** Expand or collapse all tree nodes. Child of {@link #southLayout}. */
|
||||
private Checkbox treeExpand = new Checkbox();
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
public WTreeBOM(){
|
||||
try{
|
||||
m_WindowNo = m_frame.getWindowNo();
|
||||
|
@ -111,6 +133,9 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load data into {@link #tableBOM}.
|
||||
*/
|
||||
private void loadTableBOM()
|
||||
{
|
||||
// Header Info
|
||||
|
@ -136,6 +161,10 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
|
||||
} // dynInit
|
||||
|
||||
/**
|
||||
* Initialize fields and listeners
|
||||
* @throws Exception
|
||||
*/
|
||||
private void preInit() throws Exception
|
||||
{
|
||||
Properties ctx = Env.getCtx();
|
||||
|
@ -155,13 +184,14 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
};
|
||||
|
||||
implosion.addActionListener(this);
|
||||
treeExpand.addActionListener(this);
|
||||
|
||||
treeExpand.addActionListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #m_frame}
|
||||
*/
|
||||
private void jbInit()
|
||||
{
|
||||
|
||||
{
|
||||
ZKUpdateUtil.setWidth(m_frame, "99%");
|
||||
ZKUpdateUtil.setHeight(m_frame, "100%");
|
||||
m_frame.setStyle("position: absolute; padding: 0; margin: 0");
|
||||
|
@ -171,8 +201,7 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
northPanel.appendChild(northLayout);
|
||||
southPanel.appendChild(southLayout);
|
||||
ZKUpdateUtil.setVflex(southPanel, "min");
|
||||
|
||||
|
||||
|
||||
labelProduct.setText (Msg.getElement(Env.getCtx(), "M_Product_ID"));
|
||||
implosion.setText (Msg.getElement(Env.getCtx(), "Implosion"));
|
||||
treeInfo.setText (Msg.getElement(Env.getCtx(), "Sel_Product_ID")+": ");
|
||||
|
@ -240,6 +269,9 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
center.setAutoscroll(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Close form.
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
SessionManager.getAppDesktop().closeActiveWindow();
|
||||
|
@ -277,6 +309,9 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Expand of collapse all nodes of {@link #m_tree}.
|
||||
*/
|
||||
private void expandOrCollapse() {
|
||||
if (treeExpand.isChecked())
|
||||
{
|
||||
|
@ -291,8 +326,8 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
}
|
||||
|
||||
/**
|
||||
* Set the selected node & initiate all listeners
|
||||
* @param nd node
|
||||
* Set selected node & load BOM.
|
||||
* @param nd node
|
||||
* @throws Exception
|
||||
*/
|
||||
private void setSelectedNode (mySimpleTreeNode nd) throws Exception
|
||||
|
@ -306,10 +341,13 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
m_selected_id = ((KeyNamePair)nodeInfo.elementAt(2)).getKey() ;
|
||||
|
||||
if(m_selected_id > 0)
|
||||
action_reloadBOM();
|
||||
|
||||
action_reloadBOM();
|
||||
} // setSelectedNode
|
||||
|
||||
/**
|
||||
* Load BOM of selected product from {@link #fieldProduct}.
|
||||
* @throws Exception
|
||||
*/
|
||||
private void action_loadBOM() throws Exception
|
||||
{
|
||||
reload = false;
|
||||
|
@ -341,6 +379,7 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
|
||||
if (isImplosion())
|
||||
{
|
||||
//let selected product as BOM component and show BOM parent products as tree node.
|
||||
try{
|
||||
m_tree.setModel(null);
|
||||
}catch(Exception e)
|
||||
|
@ -370,6 +409,7 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
}
|
||||
else
|
||||
{
|
||||
//let selected product as BOM parent and show BOM components as tree node.
|
||||
try{
|
||||
m_tree.setModel(null);
|
||||
}catch(Exception e)
|
||||
|
@ -404,6 +444,10 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
treeExpand.setChecked(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load BOM of selected tree node.
|
||||
* @throws Exception
|
||||
*/
|
||||
private void action_reloadBOM() throws Exception
|
||||
{
|
||||
reload = true;
|
||||
|
@ -438,36 +482,49 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
loadTableBOM();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add bomline to tree and children of bomline (if any) recursively.<br/>
|
||||
* If bomline is component of current selected product ({@link #m_selected_id} or {@link #fieldProduct}), add to {@link #dataBOM}.
|
||||
* @param bomline
|
||||
* @param parent
|
||||
* @throws Exception
|
||||
*/
|
||||
public void addChild(MPPProductBOMLine bomline, mySimpleTreeNode parent) throws Exception
|
||||
{
|
||||
MProduct M_Product = MProduct.get(getCtx(), bomline.getM_Product_ID());
|
||||
MProduct M_Product = MProduct.get(getCtx(), bomline.getM_Product_ID());
|
||||
|
||||
Vector<Object> line = new Vector<Object>(10);
|
||||
line.add( Boolean.valueOf(bomline.isActive())); // 0 IsActive
|
||||
line.add( Integer.valueOf(bomline.getLine()).toString()); // 1 Line
|
||||
KeyNamePair pp = new KeyNamePair(M_Product.getM_Product_ID(),M_Product.getValue().concat("_").concat(M_Product.getName()));
|
||||
line.add(pp); // 2 M_Product_ID
|
||||
MUOM u = new MUOM(M_Product.getCtx(), M_Product.getC_UOM_ID(), M_Product.get_TrxName());
|
||||
KeyNamePair uom = new KeyNamePair(u.get_ID(),u.getUOMSymbol());
|
||||
line.add(uom); // 3 C_UOM_ID
|
||||
line.add((BigDecimal) ((bomline.getQtyBOM()!=null) ? bomline.getQtyBOM() : Env.ZERO).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros()); // 4 QtyBOM
|
||||
Vector<Object> line = new Vector<Object>(10);
|
||||
line.add( Boolean.valueOf(bomline.isActive())); // 0 IsActive
|
||||
line.add( Integer.valueOf(bomline.getLine()).toString()); // 1 Line
|
||||
KeyNamePair pp = new KeyNamePair(M_Product.getM_Product_ID(),M_Product.getValue().concat("_").concat(M_Product.getName()));
|
||||
line.add(pp); // 2 M_Product_ID
|
||||
MUOM u = new MUOM(M_Product.getCtx(), M_Product.getC_UOM_ID(), M_Product.get_TrxName());
|
||||
KeyNamePair uom = new KeyNamePair(u.get_ID(),u.getUOMSymbol());
|
||||
line.add(uom); // 3 C_UOM_ID
|
||||
line.add((BigDecimal) ((bomline.getQtyBOM()!=null) ? bomline.getQtyBOM() : Env.ZERO).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros()); // 4 QtyBOM
|
||||
|
||||
mySimpleTreeNode child = new mySimpleTreeNode(line,new ArrayList<TreeNode<Object>>());
|
||||
if (!reload)
|
||||
parent.getChildren().add(child);
|
||||
|
||||
if (m_selected_id == bomline.getParent().getM_Product_ID() || getM_Product_ID() == bomline.getParent().getM_Product_ID())
|
||||
dataBOM.add(line);
|
||||
|
||||
if (reload) return;
|
||||
mySimpleTreeNode child = new mySimpleTreeNode(line,new ArrayList<TreeNode<Object>>());
|
||||
if (!reload)
|
||||
parent.getChildren().add(child);
|
||||
|
||||
if (m_selected_id == bomline.getParent().getM_Product_ID() || getM_Product_ID() == bomline.getParent().getM_Product_ID())
|
||||
dataBOM.add(line);
|
||||
|
||||
if (reload) return;
|
||||
|
||||
for (MPPProductBOMLine bom : MPPProductBOMLine.getBOMLines(M_Product))
|
||||
{
|
||||
addChild(bom, child);
|
||||
}
|
||||
for (MPPProductBOMLine bom : MPPProductBOMLine.getBOMLines(M_Product))
|
||||
{
|
||||
addChild(bom, child);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add parent product of bomline to tree and parent of parent product (if any) recursively.<br/>
|
||||
* If bomline is component of current selected product ({@link #m_selected_id} or {@link #fieldProduct}), add to {@link #dataBOM}.
|
||||
* @param bomline
|
||||
* @param parent
|
||||
* @throws Exception
|
||||
*/
|
||||
public void addParent(MPPProductBOMLine bomline, mySimpleTreeNode parent) throws Exception
|
||||
{
|
||||
MPPProductBOM bom = new MPPProductBOM(getCtx(), bomline.getPP_Product_BOM_ID(), null);
|
||||
|
@ -498,6 +555,9 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return M_Product_ID from {@link #fieldProduct}
|
||||
*/
|
||||
private int getM_Product_ID() {
|
||||
Integer Product = (Integer)fieldProduct.getValue();
|
||||
if (Product == null)
|
||||
|
@ -505,6 +565,9 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
return Product.intValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true for implosion, false for explosion.
|
||||
*/
|
||||
private boolean isImplosion() {
|
||||
return implosion.isSelected();
|
||||
}
|
||||
|
@ -516,28 +579,29 @@ public class WTreeBOM extends TreeBOM implements IFormController, EventListener<
|
|||
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* mySimpleTreeNode
|
||||
* - Override toString method for display
|
||||
/**
|
||||
* mySimpleTreeNode
|
||||
* - Override toString method for display.
|
||||
*
|
||||
*/
|
||||
class mySimpleTreeNode extends DefaultTreeNode<Object>
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
* generated serial id
|
||||
*/
|
||||
private static final long serialVersionUID = -7430786399068849936L;
|
||||
|
||||
/**
|
||||
* @param data
|
||||
* @param children
|
||||
*/
|
||||
public mySimpleTreeNode(Object data, List<TreeNode<Object>> children) {
|
||||
|
||||
super(data, children);
|
||||
|
||||
super(data, children);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
|
||||
public String toString(){
|
||||
Vector <?> userObject = (Vector <?>)getData();
|
||||
// Product
|
||||
StringBuilder sb = new StringBuilder(((KeyNamePair)userObject.elementAt(2)).getName());
|
||||
|
@ -549,5 +613,4 @@ class mySimpleTreeNode extends DefaultTreeNode<Object>
|
|||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -56,40 +56,44 @@ import org.zkoss.zul.Hlayout;
|
|||
import org.zkoss.zul.ListModel;
|
||||
import org.zkoss.zul.North;
|
||||
import org.zkoss.zul.Space;
|
||||
import org.zkoss.zul.Splitter;
|
||||
import org.zkoss.zul.Tree;
|
||||
import org.zkoss.zul.TreeModel;
|
||||
import org.zkoss.zul.TreeNode;
|
||||
import org.zkoss.zul.Treeitem;
|
||||
|
||||
/**
|
||||
* Tree Maintenance
|
||||
*
|
||||
* @author Jorg Janke (modify: Sergio Oropeza sergioropeza@gmail.com, soropeza@dcsla.com 06/03/2014)
|
||||
* @version $Id: VTreeMaintenance.java,v 1.3 2006/07/30 00:51:28 jjanke Exp $
|
||||
* Tree maintenance form.
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VTreeMaintenance")
|
||||
public class WTreeMaintenance extends TreeMaintenance implements IFormController, EventListener<Event>
|
||||
{
|
||||
/** Custom form/window UI instance */
|
||||
private CustomForm form = new CustomForm();
|
||||
|
||||
/** Main layout of {@link #form} */
|
||||
private Borderlayout mainLayout = new Borderlayout ();
|
||||
|
||||
/** North of {@link #mainLayout}. Form parameters and controls. */
|
||||
private Panel northPanel = new Panel ();
|
||||
private Label treeLabel = new Label ();
|
||||
/** AD_Tree records drop down list. */
|
||||
private Listbox treeField;
|
||||
private ToolBarButton bAddAll = new ToolBarButton ();
|
||||
private ToolBarButton bAdd = new ToolBarButton ();
|
||||
private ToolBarButton bDelete = new ToolBarButton ();
|
||||
private ToolBarButton bDeleteAll = new ToolBarButton ();
|
||||
private Checkbox cbAllNodes = new Checkbox ();
|
||||
/** Text to filter {@link #centerList} **/
|
||||
private Searchbox searchBox = new Searchbox();
|
||||
//
|
||||
@SuppressWarnings("unused")
|
||||
private Splitter splitPane = new Splitter();
|
||||
|
||||
/** Center of {@link #mainLayout}. Tree of selected AD_Tree record from {@link #treeField}. */
|
||||
private Tree centerTree;
|
||||
/** East of {@link #mainLayout}. List of all tree node records. */
|
||||
private Listbox centerList = new Listbox();
|
||||
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
public WTreeMaintenance()
|
||||
{
|
||||
try
|
||||
|
@ -103,10 +107,10 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
{
|
||||
log.log(Level.SEVERE, "VTreeMaintenance.init", ex);
|
||||
}
|
||||
} // init
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill Tree Combo
|
||||
* Fill {@link #treeField} and create {@link #centerTree}.
|
||||
*/
|
||||
private void preInit()
|
||||
{
|
||||
|
@ -121,7 +125,7 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
} // preInit
|
||||
|
||||
/**
|
||||
* Static init
|
||||
* Layout {@link #form}
|
||||
* @throws Exception
|
||||
*/
|
||||
private void jbInit () throws Exception
|
||||
|
@ -234,7 +238,8 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
centerList.addDoubleClickListener(centerListListener);
|
||||
} // jbInit
|
||||
|
||||
EventListener<Event> centerListListener = new EventListener<Event>() {
|
||||
/** Double click listener for {@link #centerList} */
|
||||
protected EventListener<Event> centerListListener = new EventListener<Event>() {
|
||||
public void onEvent(Event event) throws Exception {
|
||||
if (Events.ON_DOUBLE_CLICK.equals(event.getName())) {
|
||||
add();
|
||||
|
@ -244,7 +249,7 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
};
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
* Close form.
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
|
@ -252,9 +257,10 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
} // dispose
|
||||
|
||||
/**
|
||||
* Action Listener
|
||||
* @param e event
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
@Override
|
||||
public void onEvent (Event e)
|
||||
{
|
||||
if (e.getTarget() == treeField)
|
||||
|
@ -283,9 +289,12 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
}
|
||||
else if (e.getTarget() == searchBox.getButton() || e.getTarget() == searchBox.getTextbox())
|
||||
searchElement();
|
||||
} // actionPerformed
|
||||
}
|
||||
|
||||
void add() {
|
||||
/**
|
||||
* Add selected {@link #centerList} item to {@link #centerTree}.
|
||||
*/
|
||||
protected void add() {
|
||||
SimpleListModel model = (SimpleListModel) centerList.getModel();
|
||||
int i = centerList.getSelectedIndex();
|
||||
if (i >= 0) {
|
||||
|
@ -293,8 +302,10 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
}
|
||||
}
|
||||
|
||||
void remove() {
|
||||
|
||||
/**
|
||||
* Remove selected {@link #centerList} item from {@link #centerTree}.
|
||||
*/
|
||||
protected void remove() {
|
||||
if (cbAllNodes.isChecked())
|
||||
return;
|
||||
|
||||
|
@ -305,24 +316,30 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter {@link #centerList} with text from {@link #searchBox}.
|
||||
*/
|
||||
private void searchElement() {
|
||||
String filter = searchBox.getText() == null ? "" : searchBox.getText();
|
||||
filter = Util.deleteAccents(filter.trim().toUpperCase());
|
||||
action_loadTree(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load tree records into {@link #centerList} and {@link #centerTree}.
|
||||
*/
|
||||
private void action_loadTree() {
|
||||
action_loadTree(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Action: Fill Tree with all nodes
|
||||
* @param filter
|
||||
* Load tree records into {@link #centerList} and {@link #centerTree}.
|
||||
* @param filter text to filter {@link #centerList} items (using contains).
|
||||
*/
|
||||
private void action_loadTree(String filter)
|
||||
{
|
||||
KeyNamePair tree = treeField.getSelectedItem().toKeyNamePair();
|
||||
log.info("Tree=" + tree);
|
||||
if (log.isLoggable(Level.INFO)) log.info("Tree=" + tree);
|
||||
if (tree.getKey() <= 0)
|
||||
{
|
||||
SimpleListModel tmp = new SimpleListModel();
|
||||
|
@ -371,11 +388,10 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
SimpleTreeModel.initADTree(centerTree, m_tree.getAD_Tree_ID(), m_WindowNo);
|
||||
if (m_tree.isLoadAllNodesImmediately())
|
||||
TreeUtils.collapseTree(centerTree, true);
|
||||
|
||||
} // action_fillTree
|
||||
|
||||
/**
|
||||
* List Selection Listener
|
||||
* On {@link #centerList} selection.
|
||||
* @param e event
|
||||
*/
|
||||
private void onListSelection(Event e)
|
||||
|
@ -390,7 +406,7 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
log.info("Selected=" + selected);
|
||||
if (log.isLoggable(Level.INFO)) log.info("Selected=" + selected);
|
||||
if (selected != null) // allow add if not in tree
|
||||
{
|
||||
SimpleTreeModel tm = (SimpleTreeModel)(TreeModel<?>) centerTree.getModel();
|
||||
|
@ -402,10 +418,10 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
}
|
||||
bAdd.setDisabled(stn != null);
|
||||
}
|
||||
} // valueChanged
|
||||
}
|
||||
|
||||
/**
|
||||
* Tree selection
|
||||
* On {@link #centerTree} selection.
|
||||
* @param e event
|
||||
*/
|
||||
private void onTreeSelection (Event e)
|
||||
|
@ -415,7 +431,7 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
MTreeNode tn = (MTreeNode)stn.getData();
|
||||
if (tn == null)
|
||||
return;
|
||||
log.info(tn.toString());
|
||||
if (log.isLoggable(Level.INFO)) log.info(tn.toString());
|
||||
ListModel<Object> model = centerList.getModel();
|
||||
int size = model.getSize();
|
||||
int found = -1;
|
||||
|
@ -428,15 +444,16 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
}
|
||||
}
|
||||
centerList.setSelectedIndex(found);
|
||||
} // propertyChange
|
||||
}
|
||||
|
||||
/**
|
||||
* Action: Add Node to Tree
|
||||
* @param item item
|
||||
* Add item to {@link #centerTree}.<br/>
|
||||
* Add Tree Node (MTree_NodePR, MTree_NodeBP, MTree_NodeMM or MTree_Node) record.
|
||||
* @param item {@link ListItem}
|
||||
*/
|
||||
private void action_treeAdd(ListItem item)
|
||||
{
|
||||
log.info("Item=" + item);
|
||||
if (log.isLoggable(Level.INFO)) log.info("Item=" + item);
|
||||
if (item != null)
|
||||
{
|
||||
SimpleTreeModel model = (SimpleTreeModel)(TreeModel<?>) centerTree.getModel();
|
||||
|
@ -455,25 +472,24 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
model.addNode(stn);
|
||||
// May cause Error if in tree
|
||||
addNode(item);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} // action_treeAdd
|
||||
|
||||
/**
|
||||
* Action: Delete Node from Tree
|
||||
* @param item item
|
||||
* Remove item from {@link #centerTree}.<br/>
|
||||
* Delete Tree Node (MTree_NodePR, MTree_NodeBP, MTree_NodeMM or MTree_Node) record.
|
||||
* @param item {@link ListItem}
|
||||
*/
|
||||
private void action_treeDelete(ListItem item)
|
||||
{
|
||||
log.info("Item=" + item);
|
||||
if (log.isLoggable(Level.INFO)) log.info("Item=" + item);
|
||||
if (item != null)
|
||||
{
|
||||
SimpleTreeModel model = (SimpleTreeModel)(TreeModel<?>) centerTree.getModel();
|
||||
DefaultTreeNode<Object> stn = model.find(model.getRoot(), item.id);
|
||||
if (stn != null)
|
||||
model.removeNode(stn);
|
||||
|
||||
model.removeNode(stn);
|
||||
//
|
||||
deleteNode(item);
|
||||
}
|
||||
|
@ -481,19 +497,18 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
|
||||
|
||||
/**
|
||||
* Action: Add All Nodes to Tree
|
||||
* Add all items from {@link #centerList} to {@link #centerTree}.
|
||||
*/
|
||||
private void action_treeAddAll()
|
||||
{
|
||||
// idempiere-85
|
||||
Dialog.ask(m_WindowNo, "TreeAddAllItems", new Callback<Boolean>() {
|
||||
|
||||
Dialog.ask(m_WindowNo, "TreeAddAllItems", new Callback<Boolean>() {
|
||||
@Override
|
||||
public void onCallback(Boolean result)
|
||||
{
|
||||
if (result)
|
||||
{
|
||||
log.info("");
|
||||
if (log.isLoggable(Level.INFO)) log.info("");
|
||||
ListModel<Object> model = centerList.getModel();
|
||||
int size = model.getSize();
|
||||
int index = -1;
|
||||
|
@ -508,14 +523,13 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
} // action_treeAddAll
|
||||
|
||||
/**
|
||||
* Action: Delete All Nodes from Tree
|
||||
* Delete All Nodes from Tree
|
||||
*/
|
||||
private void action_treeDeleteAll()
|
||||
{
|
||||
log.info("");
|
||||
if (log.isLoggable(Level.INFO)) log.info("");
|
||||
// idempiere-85
|
||||
Dialog.ask(m_WindowNo, "TreeRemoveAllItems", new Callback<Boolean>() {
|
||||
|
||||
@Override
|
||||
public void onCallback(Boolean result)
|
||||
{
|
||||
|
@ -535,9 +549,9 @@ public class WTreeMaintenance extends TreeMaintenance implements IFormController
|
|||
});
|
||||
} // action_treeDeleteAll
|
||||
|
||||
@Override
|
||||
public ADForm getForm()
|
||||
{
|
||||
return form;
|
||||
}
|
||||
|
||||
} // VTreeMaintenance
|
||||
}
|
||||
|
|
|
@ -58,24 +58,27 @@ import org.zkoss.zul.North;
|
|||
import org.zkoss.zul.South;
|
||||
|
||||
/**
|
||||
* Material Transaction History
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: VTrxMaterial.java,v 1.3 2006/07/30 00:51:28 jjanke Exp $
|
||||
* Form to view Material Transaction History.
|
||||
*/
|
||||
@org.idempiere.ui.zk.annotation.Form(name = "org.compiere.apps.form.VTrxMaterial")
|
||||
public class WTrxMaterial extends TrxMaterial
|
||||
implements IFormController, EventListener<Event>, ValueChangeListener
|
||||
{
|
||||
/** Custom form/window UI instance */
|
||||
private CustomForm form = new CustomForm();
|
||||
|
||||
/** GridController */
|
||||
/** Center of {@link #mainLayout} */
|
||||
private ADTabpanel m_gridController = null;
|
||||
|
||||
//
|
||||
/** Main panel of {@link #form} */
|
||||
private Panel mainPanel = new Panel();
|
||||
/** Layout of {@link #mainPanel} */
|
||||
private Borderlayout mainLayout = new Borderlayout();
|
||||
|
||||
/** North of {@link #mainLayout}. Form parameters panel */
|
||||
private Panel parameterPanel = new Panel();
|
||||
/** Layout of {@link #parameterPanel} */
|
||||
private Grid parameterLayout = GridFactory.newGridLayout();
|
||||
private Label orgLabel = new Label();
|
||||
private WTableDirEditor orgField;
|
||||
private Label locatorLabel = new Label();
|
||||
|
@ -88,20 +91,23 @@ public class WTrxMaterial extends TrxMaterial
|
|||
private WDateEditor dateTField;
|
||||
private Label mtypeLabel = new Label();
|
||||
private WTableDirEditor mtypeField;
|
||||
private Grid parameterLayout = GridFactory.newGridLayout();
|
||||
|
||||
/** South of {@link #mainLayout} */
|
||||
private Panel southPanel = new Panel();
|
||||
/** Action buttons panel. Child of {@link #southPanel} */
|
||||
private ConfirmPanel confirmPanel = new ConfirmPanel(true, true, false, false, false, true, false);
|
||||
/** Status bar */
|
||||
private StatusBarPanel statusBar = new StatusBarPanel();
|
||||
|
||||
/** Number of columns for {@link #parameterLayout} */
|
||||
private int noOfColumns;
|
||||
|
||||
|
||||
/**
|
||||
* Initialize Panel
|
||||
* Default constructor
|
||||
*/
|
||||
public WTrxMaterial()
|
||||
{
|
||||
log.info("");
|
||||
if (log.isLoggable(Level.INFO)) log.info("");
|
||||
try
|
||||
{
|
||||
m_WindowNo = form.getWindowNo();
|
||||
|
@ -115,10 +121,10 @@ public class WTrxMaterial extends TrxMaterial
|
|||
{
|
||||
log.log(Level.SEVERE, "", ex);
|
||||
}
|
||||
} // init
|
||||
}
|
||||
|
||||
/**
|
||||
* Static Init
|
||||
* Layout {@link #form}
|
||||
* @throws Exception
|
||||
*/
|
||||
void zkInit() throws Exception
|
||||
|
@ -163,8 +169,11 @@ public class WTrxMaterial extends TrxMaterial
|
|||
ZKUpdateUtil.setWidth(statusBar, "100%");
|
||||
|
||||
LayoutUtils.addSclass("status-border", statusBar);
|
||||
} // jbInit
|
||||
}
|
||||
|
||||
/**
|
||||
* Layout {@link #parameterLayout}
|
||||
*/
|
||||
protected void layoutParameters() {
|
||||
noOfColumns = 6;
|
||||
if (ClientInfo.maxWidth(639))
|
||||
|
@ -229,11 +238,9 @@ public class WTrxMaterial extends TrxMaterial
|
|||
// Organization
|
||||
MLookup orgLookup = MLookupFactory.get (ctx, m_WindowNo, 0, 3660, DisplayType.TableDir);
|
||||
orgField = new WTableDirEditor("AD_Org_ID", false, false, true, orgLookup);
|
||||
// orgField.addVetoableChangeListener(this);
|
||||
// Locator
|
||||
MLocatorLookup locatorLookup = new MLocatorLookup(ctx, m_WindowNo, null);
|
||||
locatorField = new WLocatorEditor ("M_Locator_ID", false, false, true, locatorLookup, m_WindowNo);
|
||||
// locatorField.addVetoableChangeListener(this);
|
||||
// Product
|
||||
MLookup productLookup = MLookupFactory.get (ctx, m_WindowNo, 0, 3668, DisplayType.Search);
|
||||
productField = new WSearchEditor("M_Product_ID", false, false, true, productLookup);
|
||||
|
@ -250,15 +257,15 @@ public class WTrxMaterial extends TrxMaterial
|
|||
} // dynParameter
|
||||
|
||||
/**
|
||||
* Dynamic Layout (Grid).
|
||||
* Based on AD_Window: Material Transactions
|
||||
* Initialize {@link #m_gridController}.
|
||||
* Based on AD_Window: Material Transactions (indirect use).
|
||||
*/
|
||||
private void dynInit()
|
||||
{
|
||||
super.dynInit(statusBar);
|
||||
//
|
||||
|
||||
//
|
||||
m_gridController = new ADTabpanel();
|
||||
// m_mTab is level 0 GridTab of Material Transactions (indirect use)
|
||||
m_gridController.init(null, m_mTab);
|
||||
if (!m_gridController.isGridView())
|
||||
m_gridController.switchRowPresentation();
|
||||
|
@ -269,19 +276,17 @@ public class WTrxMaterial extends TrxMaterial
|
|||
ZKUpdateUtil.setHflex(m_gridController, "1");
|
||||
} // dynInit
|
||||
|
||||
|
||||
/**
|
||||
* Dispose
|
||||
* Close form.
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
SessionManager.getAppDesktop().closeActiveWindow();
|
||||
} // dispose
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Action Listener
|
||||
* @param e event
|
||||
/**
|
||||
* Event Listener
|
||||
* @param e event
|
||||
*/
|
||||
public void onEvent (Event e)
|
||||
{
|
||||
|
@ -292,23 +297,20 @@ public class WTrxMaterial extends TrxMaterial
|
|||
refresh();
|
||||
else if (e.getTarget().getId().equals(ConfirmPanel.A_ZOOM))
|
||||
zoom();
|
||||
} // actionPerformed
|
||||
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* Property Listener
|
||||
* @param e event
|
||||
/**
|
||||
* Value change listener
|
||||
* @param e event
|
||||
*/
|
||||
public void valueChange (ValueChangeEvent e)
|
||||
{
|
||||
if (e.getPropertyName().equals("M_Product_ID"))
|
||||
productField.setValue(e.getNewValue());
|
||||
} // vetoableChange
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Refresh - Create Query and refresh grid
|
||||
/**
|
||||
* Refresh - Create Query and refresh {@link #m_gridController}.
|
||||
*/
|
||||
private void refresh()
|
||||
{
|
||||
|
@ -325,7 +327,7 @@ public class WTrxMaterial extends TrxMaterial
|
|||
} // refresh
|
||||
|
||||
/**
|
||||
* Zoom
|
||||
* Zoom to AD_Table_ID + Record_ID of current {@link #m_gridController} row.
|
||||
*/
|
||||
public void zoom()
|
||||
{
|
||||
|
@ -335,11 +337,15 @@ public class WTrxMaterial extends TrxMaterial
|
|||
AEnv.zoom(AD_Table_ID, Record_ID);
|
||||
} // zoom
|
||||
|
||||
@Override
|
||||
public ADForm getForm()
|
||||
{
|
||||
return form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle onClientInfo event from browser
|
||||
*/
|
||||
protected void onClientInfo()
|
||||
{
|
||||
if (noOfColumns > 0 && parameterLayout.getRows() != null)
|
||||
|
@ -357,4 +363,4 @@ public class WTrxMaterial extends TrxMaterial
|
|||
}
|
||||
}
|
||||
}
|
||||
} // VTrxMaterial
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue