hg merge development (merge development into zk7)
This commit is contained in:
commit
f0a8c83af3
|
@ -0,0 +1,15 @@
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Dec 17, 2014 7:50:03 PM COT
|
||||||
|
-- IDEMPIERE-1996 InventoryLine inherits bad default
|
||||||
|
UPDATE AD_Column SET Callout='org.idempiere.model.CalloutFillLocator.fillLocator',Updated=TO_DATE('2014-12-17 19:50:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=3537
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 17, 2014 7:51:10 PM COT
|
||||||
|
UPDATE AD_Column SET Callout='org.idempiere.model.CalloutFillLocator.fillLocator;org.compiere.model.CalloutInventory.product',Updated=TO_DATE('2014-12-17 19:51:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=3564
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201412171953_IDEMPIERE-1996.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
-- Dec 17, 2014 7:50:03 PM COT
|
||||||
|
-- IDEMPIERE-1996 InventoryLine inherits bad default
|
||||||
|
UPDATE AD_Column SET Callout='org.idempiere.model.CalloutFillLocator.fillLocator',Updated=TO_TIMESTAMP('2014-12-17 19:50:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=3537
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 17, 2014 7:51:10 PM COT
|
||||||
|
UPDATE AD_Column SET Callout='org.idempiere.model.CalloutFillLocator.fillLocator;org.compiere.model.CalloutInventory.product',Updated=TO_TIMESTAMP('2014-12-17 19:51:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=3564
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201412171953_IDEMPIERE-1996.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -271,6 +271,7 @@ Export-Package: bsh,
|
||||||
org.eevolution.model,
|
org.eevolution.model,
|
||||||
org.idempiere.broadcast,
|
org.idempiere.broadcast,
|
||||||
org.idempiere.distributed,
|
org.idempiere.distributed,
|
||||||
|
org.idempiere.model,
|
||||||
org.jfree,
|
org.jfree,
|
||||||
org.jfree.base,
|
org.jfree.base,
|
||||||
org.jfree.base.config,
|
org.jfree.base.config,
|
||||||
|
|
|
@ -1752,6 +1752,10 @@ public class MInOut extends X_M_InOut implements DocAction
|
||||||
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
||||||
if (dt.isOverwriteDateOnComplete()) {
|
if (dt.isOverwriteDateOnComplete()) {
|
||||||
setMovementDate(new Timestamp (System.currentTimeMillis()));
|
setMovementDate(new Timestamp (System.currentTimeMillis()));
|
||||||
|
if (getDateAcct().before(getMovementDate())) {
|
||||||
|
setDateAcct(getMovementDate());
|
||||||
|
MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocType_ID(), getAD_Org_ID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (dt.isOverwriteSeqOnComplete()) {
|
if (dt.isOverwriteSeqOnComplete()) {
|
||||||
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
||||||
|
|
|
@ -595,6 +595,7 @@ public class MInventory extends X_M_Inventory implements DocAction
|
||||||
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
||||||
if (dt.isOverwriteDateOnComplete()) {
|
if (dt.isOverwriteDateOnComplete()) {
|
||||||
setMovementDate(new Timestamp (System.currentTimeMillis()));
|
setMovementDate(new Timestamp (System.currentTimeMillis()));
|
||||||
|
MPeriod.testPeriodOpen(getCtx(), getMovementDate(), MDocType.DOCBASETYPE_MaterialPhysicalInventory, getAD_Org_ID());
|
||||||
}
|
}
|
||||||
if (dt.isOverwriteSeqOnComplete()) {
|
if (dt.isOverwriteSeqOnComplete()) {
|
||||||
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
||||||
|
|
|
@ -2118,6 +2118,10 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
||||||
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
||||||
if (dt.isOverwriteDateOnComplete()) {
|
if (dt.isOverwriteDateOnComplete()) {
|
||||||
setDateInvoiced(new Timestamp (System.currentTimeMillis()));
|
setDateInvoiced(new Timestamp (System.currentTimeMillis()));
|
||||||
|
if (getDateAcct().before(getDateInvoiced())) {
|
||||||
|
setDateAcct(getDateInvoiced());
|
||||||
|
MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocTypeTarget_ID(), getAD_Org_ID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (dt.isOverwriteSeqOnComplete()) {
|
if (dt.isOverwriteSeqOnComplete()) {
|
||||||
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
||||||
|
|
|
@ -627,6 +627,10 @@ public class MJournal extends X_GL_Journal implements DocAction
|
||||||
if (dt.isOverwriteDateOnComplete()) {
|
if (dt.isOverwriteDateOnComplete()) {
|
||||||
if (this.getProcessedOn().signum() == 0) {
|
if (this.getProcessedOn().signum() == 0) {
|
||||||
setDateDoc(new Timestamp (System.currentTimeMillis()));
|
setDateDoc(new Timestamp (System.currentTimeMillis()));
|
||||||
|
if (getDateAcct().before(getDateDoc())) {
|
||||||
|
setDateAcct(getDateDoc());
|
||||||
|
MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocType_ID(), getAD_Org_ID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dt.isOverwriteSeqOnComplete()) {
|
if (dt.isOverwriteSeqOnComplete()) {
|
||||||
|
|
|
@ -510,6 +510,10 @@ public class MJournalBatch extends X_GL_JournalBatch implements DocAction
|
||||||
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
||||||
if (dt.isOverwriteDateOnComplete()) {
|
if (dt.isOverwriteDateOnComplete()) {
|
||||||
setDateDoc(new Timestamp (System.currentTimeMillis()));
|
setDateDoc(new Timestamp (System.currentTimeMillis()));
|
||||||
|
if (getDateAcct().before(getDateDoc())) {
|
||||||
|
setDateAcct(getDateDoc());
|
||||||
|
MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocType_ID(), getAD_Org_ID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (dt.isOverwriteSeqOnComplete()) {
|
if (dt.isOverwriteSeqOnComplete()) {
|
||||||
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
||||||
|
|
|
@ -548,6 +548,7 @@ public class MMovement extends X_M_Movement implements DocAction
|
||||||
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
||||||
if (dt.isOverwriteDateOnComplete()) {
|
if (dt.isOverwriteDateOnComplete()) {
|
||||||
setMovementDate(new Timestamp (System.currentTimeMillis()));
|
setMovementDate(new Timestamp (System.currentTimeMillis()));
|
||||||
|
MPeriod.testPeriodOpen(getCtx(), getMovementDate(), getC_DocType_ID(), getAD_Org_ID());
|
||||||
}
|
}
|
||||||
if (dt.isOverwriteSeqOnComplete()) {
|
if (dt.isOverwriteSeqOnComplete()) {
|
||||||
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
||||||
|
|
|
@ -2128,6 +2128,10 @@ public class MOrder extends X_C_Order implements DocAction
|
||||||
/* a42niem - BF IDEMPIERE-63 - check if document has been completed before */
|
/* a42niem - BF IDEMPIERE-63 - check if document has been completed before */
|
||||||
if (this.getProcessedOn().signum() == 0) {
|
if (this.getProcessedOn().signum() == 0) {
|
||||||
setDateOrdered(new Timestamp (System.currentTimeMillis()));
|
setDateOrdered(new Timestamp (System.currentTimeMillis()));
|
||||||
|
if (getDateAcct().before(getDateOrdered())) {
|
||||||
|
setDateAcct(getDateOrdered());
|
||||||
|
MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocTypeTarget_ID(), getAD_Org_ID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dt.isOverwriteSeqOnComplete()) {
|
if (dt.isOverwriteSeqOnComplete()) {
|
||||||
|
|
|
@ -654,7 +654,8 @@ public class MPayment extends X_C_Payment
|
||||||
*/
|
*/
|
||||||
protected boolean beforeSave (boolean newRecord)
|
protected boolean beforeSave (boolean newRecord)
|
||||||
{
|
{
|
||||||
if (isComplete() &&
|
if (isComplete() &&
|
||||||
|
! is_ValueChanged(COLUMNNAME_Processed) &&
|
||||||
( is_ValueChanged(COLUMNNAME_C_BankAccount_ID)
|
( is_ValueChanged(COLUMNNAME_C_BankAccount_ID)
|
||||||
|| is_ValueChanged(COLUMNNAME_C_BPartner_ID)
|
|| is_ValueChanged(COLUMNNAME_C_BPartner_ID)
|
||||||
|| is_ValueChanged(COLUMNNAME_C_Charge_ID)
|
|| is_ValueChanged(COLUMNNAME_C_Charge_ID)
|
||||||
|
@ -2094,6 +2095,10 @@ public class MPayment extends X_C_Payment
|
||||||
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
||||||
if (dt.isOverwriteDateOnComplete()) {
|
if (dt.isOverwriteDateOnComplete()) {
|
||||||
setDateTrx(new Timestamp (System.currentTimeMillis()));
|
setDateTrx(new Timestamp (System.currentTimeMillis()));
|
||||||
|
if (getDateAcct().before(getDateTrx())) {
|
||||||
|
setDateAcct(getDateTrx());
|
||||||
|
MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocType_ID(), getAD_Org_ID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (dt.isOverwriteSeqOnComplete()) {
|
if (dt.isOverwriteSeqOnComplete()) {
|
||||||
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
||||||
|
|
|
@ -364,6 +364,7 @@ public class MRequisition extends X_M_Requisition implements DocAction
|
||||||
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
|
||||||
if (dt.isOverwriteDateOnComplete()) {
|
if (dt.isOverwriteDateOnComplete()) {
|
||||||
setDateDoc(new Timestamp (System.currentTimeMillis()));
|
setDateDoc(new Timestamp (System.currentTimeMillis()));
|
||||||
|
MPeriod.testPeriodOpen(getCtx(), getDateDoc(), MDocType.DOCBASETYPE_PurchaseRequisition, getAD_Org_ID());
|
||||||
}
|
}
|
||||||
if (dt.isOverwriteSeqOnComplete()) {
|
if (dt.isOverwriteSeqOnComplete()) {
|
||||||
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this);
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class MSysConfig extends X_AD_SysConfig
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 2907227045981641758L;
|
private static final long serialVersionUID = -1248226696518701944L;
|
||||||
|
|
||||||
public static final String ADDRESS_VALIDATION = "ADDRESS_VALIDATION";
|
public static final String ADDRESS_VALIDATION = "ADDRESS_VALIDATION";
|
||||||
public static final String ALERT_SEND_ATTACHMENT_AS_XLS = "ALERT_SEND_ATTACHMENT_AS_XLS";
|
public static final String ALERT_SEND_ATTACHMENT_AS_XLS = "ALERT_SEND_ATTACHMENT_AS_XLS";
|
||||||
|
@ -80,6 +80,7 @@ public class MSysConfig extends X_AD_SysConfig
|
||||||
public static final String DPVIEWS_SHOWINFOSCHEDULE = "DPViews_ShowInfoSchedule";
|
public static final String DPVIEWS_SHOWINFOSCHEDULE = "DPViews_ShowInfoSchedule";
|
||||||
public static final String ENABLE_PAYMENTBOX_BUTTON = "ENABLE_PAYMENTBOX_BUTTON";
|
public static final String ENABLE_PAYMENTBOX_BUTTON = "ENABLE_PAYMENTBOX_BUTTON";
|
||||||
public static final String GRIDTABLE_LOAD_TIMEOUT_IN_SECONDS = "GRIDTABLE_LOAD_TIMEOUT_IN_SECONDS";
|
public static final String GRIDTABLE_LOAD_TIMEOUT_IN_SECONDS = "GRIDTABLE_LOAD_TIMEOUT_IN_SECONDS";
|
||||||
|
public static final String HTML_REPORT_THEME = "HTML_REPORT_THEME";
|
||||||
public static final String Invoice_ReverseUseNewNumber = "Invoice_ReverseUseNewNumber";
|
public static final String Invoice_ReverseUseNewNumber = "Invoice_ReverseUseNewNumber";
|
||||||
public static final String JASPER_SWAP_MAX_PAGES = "JASPER_SWAP_MAX_PAGES";
|
public static final String JASPER_SWAP_MAX_PAGES = "JASPER_SWAP_MAX_PAGES";
|
||||||
public static final String LASTRUN_RECORD_COUNT = "LASTRUN_RECORD_COUNT";
|
public static final String LASTRUN_RECORD_COUNT = "LASTRUN_RECORD_COUNT";
|
||||||
|
|
|
@ -1171,22 +1171,23 @@ public class MPrintFormat extends X_AD_PrintFormat
|
||||||
*/
|
*/
|
||||||
public static List<KeyNamePair> getAccessiblePrintFormats (int AD_Table_ID, int AD_Window_ID, String trxName, boolean makeNewWhenEmpty)
|
public static List<KeyNamePair> getAccessiblePrintFormats (int AD_Table_ID, int AD_Window_ID, String trxName, boolean makeNewWhenEmpty)
|
||||||
{
|
{
|
||||||
// append WHERE to can use MRole.getDefault().addAccessSQL
|
String constantForRoleAccess = "SELECT * FROM AD_PrintFormat WHERE ";
|
||||||
String sqlWhere = " WHERE AD_Table_ID=? AND IsTableBased='Y' ";
|
StringBuilder sqlWhereB = new StringBuilder(constantForRoleAccess)
|
||||||
|
.append("AD_Table_ID=? AND IsTableBased='Y' ");
|
||||||
if (AD_Window_ID > 0)
|
if (AD_Window_ID > 0)
|
||||||
sqlWhere += "AND (AD_Window_ID=? OR AD_Window_ID IS NULL) ";
|
sqlWhereB.append("AND (AD_Window_ID=? OR AD_Window_ID IS NULL)");
|
||||||
//
|
//
|
||||||
sqlWhere = MRole.getDefault().addAccessSQL (
|
String sqlWhere = MRole.getDefault().addAccessSQL (
|
||||||
sqlWhere, "AD_PrintFormat", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO);
|
sqlWhereB.toString(), "AD_PrintFormat", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO);
|
||||||
|
|
||||||
// remove " WHERE " to use in Query
|
// remove " WHERE " to use in Query
|
||||||
sqlWhere = sqlWhere.substring(6);
|
sqlWhere = sqlWhere.substring(constantForRoleAccess.length());
|
||||||
|
|
||||||
// add sql parameter
|
// add sql parameter
|
||||||
List<Object> lsParameter = new ArrayList<Object>();
|
List<Object> lsParameter = new ArrayList<Object>();
|
||||||
|
|
||||||
lsParameter.add(new Integer(AD_Table_ID));
|
lsParameter.add(new Integer(AD_Table_ID));
|
||||||
if (AD_Window_ID > 0)
|
if (AD_Window_ID > 0)
|
||||||
lsParameter.add(new Integer(AD_Window_ID));
|
lsParameter.add(new Integer(AD_Window_ID));
|
||||||
|
|
||||||
// init query
|
// init query
|
||||||
|
|
|
@ -57,8 +57,10 @@ import org.apache.ecs.xhtml.a;
|
||||||
import org.apache.ecs.xhtml.link;
|
import org.apache.ecs.xhtml.link;
|
||||||
import org.apache.ecs.xhtml.script;
|
import org.apache.ecs.xhtml.script;
|
||||||
import org.apache.ecs.xhtml.table;
|
import org.apache.ecs.xhtml.table;
|
||||||
|
import org.apache.ecs.xhtml.tbody;
|
||||||
import org.apache.ecs.xhtml.td;
|
import org.apache.ecs.xhtml.td;
|
||||||
import org.apache.ecs.xhtml.th;
|
import org.apache.ecs.xhtml.th;
|
||||||
|
import org.apache.ecs.xhtml.thead;
|
||||||
import org.apache.ecs.xhtml.tr;
|
import org.apache.ecs.xhtml.tr;
|
||||||
import org.compiere.model.MClient;
|
import org.compiere.model.MClient;
|
||||||
import org.compiere.model.MColumn;
|
import org.compiere.model.MColumn;
|
||||||
|
@ -71,7 +73,9 @@ import org.compiere.model.MProject;
|
||||||
import org.compiere.model.MQuery;
|
import org.compiere.model.MQuery;
|
||||||
import org.compiere.model.MRfQResponse;
|
import org.compiere.model.MRfQResponse;
|
||||||
import org.compiere.model.PrintInfo;
|
import org.compiere.model.PrintInfo;
|
||||||
|
|
||||||
import static org.compiere.model.SystemIDs.*;
|
import static org.compiere.model.SystemIDs.*;
|
||||||
|
|
||||||
import org.compiere.print.layout.LayoutEngine;
|
import org.compiere.print.layout.LayoutEngine;
|
||||||
import org.compiere.process.ProcessInfo;
|
import org.compiere.process.ProcessInfo;
|
||||||
import org.compiere.process.ServerProcessCtl;
|
import org.compiere.process.ServerProcessCtl;
|
||||||
|
@ -587,6 +591,8 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount)
|
||||||
}
|
}
|
||||||
doc.output(w);
|
doc.output(w);
|
||||||
}
|
}
|
||||||
|
thead thead = new thead();
|
||||||
|
tbody tbody = new tbody();
|
||||||
// for all rows (-1 = header row)
|
// for all rows (-1 = header row)
|
||||||
for (int row = -1; row < m_printData.getRowCount(); row++)
|
for (int row = -1; row < m_printData.getRowCount(); row++)
|
||||||
{
|
{
|
||||||
|
@ -598,6 +604,16 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount)
|
||||||
{
|
{
|
||||||
extension.extendRowElement(tr, m_printData);
|
extension.extendRowElement(tr, m_printData);
|
||||||
}
|
}
|
||||||
|
if (m_printData.isFunctionRow()) {
|
||||||
|
tr.setClass(cssPrefix + "-functionrow");
|
||||||
|
} else if ( row < m_printData.getRowCount() && m_printData.isFunctionRow(row+1)) {
|
||||||
|
tr.setClass(cssPrefix + "-lastgrouprow");
|
||||||
|
}
|
||||||
|
// add row to table body
|
||||||
|
tbody.addElement(tr);
|
||||||
|
} else {
|
||||||
|
// add row to table header
|
||||||
|
thead.addElement(tr);
|
||||||
}
|
}
|
||||||
// for all columns
|
// for all columns
|
||||||
for (int col = 0; col < m_printFormat.getItemCount(); col++)
|
for (int col = 0; col < m_printFormat.getItemCount(); col++)
|
||||||
|
@ -719,9 +735,11 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount)
|
||||||
}
|
}
|
||||||
} // printed
|
} // printed
|
||||||
} // for all columns
|
} // for all columns
|
||||||
tr.output(w);
|
|
||||||
} // for all rows
|
} // for all rows
|
||||||
|
|
||||||
|
thead.output(w);
|
||||||
|
tbody.output(w);
|
||||||
|
|
||||||
w.println();
|
w.println();
|
||||||
w.println("</table>");
|
w.println("</table>");
|
||||||
if (!onlyTable)
|
if (!onlyTable)
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* 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: *
|
||||||
|
* - Carlos Ruiz - globalqss *
|
||||||
|
**********************************************************************/
|
||||||
|
package org.idempiere.model;
|
||||||
|
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.compiere.model.CalloutEngine;
|
||||||
|
import org.compiere.model.GridField;
|
||||||
|
import org.compiere.model.GridTab;
|
||||||
|
import org.compiere.model.MLocator;
|
||||||
|
import org.compiere.model.MWarehouse;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
|
||||||
|
public class CalloutFillLocator extends CalloutEngine {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fillLocator - fill default Locator based on actual warehouse
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
* @param WindowNo
|
||||||
|
* @param mTab
|
||||||
|
* @param mField
|
||||||
|
* @param value
|
||||||
|
* @return error message or ""
|
||||||
|
*/
|
||||||
|
public String fillLocator(Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
|
||||||
|
{
|
||||||
|
Integer locatorID = (Integer) value;
|
||||||
|
if (locatorID == null || locatorID.intValue() == 0) {
|
||||||
|
int warehouseID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID", true);
|
||||||
|
if (warehouseID > 0) {
|
||||||
|
MWarehouse wh = MWarehouse.get(ctx, warehouseID);
|
||||||
|
MLocator defaultLocator = wh.getDefaultLocator();
|
||||||
|
if (defaultLocator != null) {
|
||||||
|
mTab.setValue(mField, defaultLocator.getM_Locator_ID());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -34,7 +34,9 @@ import java.util.logging.Level;
|
||||||
import org.adempiere.server.rpl.IImportProcessor;
|
import org.adempiere.server.rpl.IImportProcessor;
|
||||||
import org.compiere.model.AdempiereProcessor;
|
import org.compiere.model.AdempiereProcessor;
|
||||||
import org.compiere.model.MClient;
|
import org.compiere.model.MClient;
|
||||||
|
import org.compiere.model.MOrgInfo;
|
||||||
import org.compiere.model.X_IMP_Processor_Type;
|
import org.compiere.model.X_IMP_Processor_Type;
|
||||||
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.TimeUtil;
|
import org.compiere.util.TimeUtil;
|
||||||
import org.compiere.server.AdempiereServer;
|
import org.compiere.server.AdempiereServer;
|
||||||
import org.compiere.model.MIMPProcessor;
|
import org.compiere.model.MIMPProcessor;
|
||||||
|
@ -95,6 +97,16 @@ public class ReplicationProcessor extends AdempiereServer {
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// process is not started!
|
// process is not started!
|
||||||
|
|
||||||
|
// Prepare a ctx
|
||||||
|
Env.setContext(mImportProcessor.getCtx(), "#AD_Client_ID", mImportProcessor.getAD_Client_ID());
|
||||||
|
Env.setContext(mImportProcessor.getCtx(), "#AD_Org_ID", mImportProcessor.getAD_Org_ID());
|
||||||
|
if (mImportProcessor.getAD_Org_ID() != 0) {
|
||||||
|
MOrgInfo schedorg = MOrgInfo.get(getCtx(), mImportProcessor.getAD_Org_ID(), null);
|
||||||
|
if (schedorg.getM_Warehouse_ID() > 0)
|
||||||
|
Env.setContext(mImportProcessor.getCtx(), "#M_Warehouse_ID", schedorg.getM_Warehouse_ID());
|
||||||
|
}
|
||||||
|
Env.setContext(mImportProcessor.getCtx(), "#AD_User_ID", getAD_User_ID());
|
||||||
|
|
||||||
m_summary = new StringBuffer();
|
m_summary = new StringBuffer();
|
||||||
String trxName = mImportProcessor.get_TrxName();
|
String trxName = mImportProcessor.get_TrxName();
|
||||||
|
@ -148,6 +160,18 @@ public class ReplicationProcessor extends AdempiereServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected int getAD_User_ID() {
|
||||||
|
int AD_User_ID;
|
||||||
|
if (mImportProcessor.getCreatedBy() > 0)
|
||||||
|
AD_User_ID = mImportProcessor.getCreatedBy();
|
||||||
|
else if (mImportProcessor.getUpdatedBy() > 0)
|
||||||
|
AD_User_ID = mImportProcessor.getUpdatedBy();
|
||||||
|
else
|
||||||
|
AD_User_ID = 100; //fall back to SuperUser
|
||||||
|
|
||||||
|
return AD_User_ID;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getServerInfo()
|
public String getServerInfo()
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,6 +41,7 @@ import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.DisplayType;
|
import org.compiere.util.DisplayType;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Language;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
import org.compiere.util.TimeUtil;
|
import org.compiere.util.TimeUtil;
|
||||||
import org.compiere.util.Trx;
|
import org.compiere.util.Trx;
|
||||||
|
@ -93,7 +94,13 @@ public class AlertProcessor extends AdempiereServer
|
||||||
MAlert[] alerts = m_model.getAlerts(false);
|
MAlert[] alerts = m_model.getAlerts(false);
|
||||||
for (int i = 0; i < alerts.length; i++)
|
for (int i = 0; i < alerts.length; i++)
|
||||||
{
|
{
|
||||||
if (!processAlert(alerts[i]))
|
Language language = Env.getLanguage(getCtx());
|
||||||
|
// Try to get the language of the client's alert
|
||||||
|
MClient client = MClient.get(getCtx(), alerts[i].getAD_Client_ID());
|
||||||
|
if (client.getLanguage() != null)
|
||||||
|
language = client.getLanguage();
|
||||||
|
|
||||||
|
if (!processAlert(alerts[i], language))
|
||||||
countError++;
|
countError++;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
@ -119,7 +126,7 @@ public class AlertProcessor extends AdempiereServer
|
||||||
* @param alert alert
|
* @param alert alert
|
||||||
* @return true if processed
|
* @return true if processed
|
||||||
*/
|
*/
|
||||||
protected boolean processAlert (MAlert alert)
|
protected boolean processAlert (MAlert alert, Language language)
|
||||||
{
|
{
|
||||||
if (!alert.isValid())
|
if (!alert.isValid())
|
||||||
return false;
|
return false;
|
||||||
|
@ -164,8 +171,8 @@ public class AlertProcessor extends AdempiereServer
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String text = null;
|
String text = null;
|
||||||
if (MSysConfig.getBooleanValue(MSysConfig.ALERT_SEND_ATTACHMENT_AS_XLS, true, Env.getAD_Client_ID(getCtx())))
|
if (MSysConfig.getBooleanValue(MSysConfig.ALERT_SEND_ATTACHMENT_AS_XLS, true, alert.getAD_Client_ID()))
|
||||||
text = getExcelReport(rule, sql, null, attachments);
|
text = getExcelReport(rule, sql, language, null, attachments);
|
||||||
else
|
else
|
||||||
text = getPlainTextReport(rule, sql, null, attachments);
|
text = getPlainTextReport(rule, sql, null, attachments);
|
||||||
if (text != null && text.length() > 0)
|
if (text != null && text.length() > 0)
|
||||||
|
@ -220,9 +227,9 @@ public class AlertProcessor extends AdempiereServer
|
||||||
|
|
||||||
//
|
//
|
||||||
// Report footer - Date Generated
|
// Report footer - Date Generated
|
||||||
DateFormat df = DisplayType.getDateFormat(DisplayType.DateTime);
|
DateFormat df = DisplayType.getDateFormat(DisplayType.DateTime, language);
|
||||||
message.append("\n\n");
|
message.append("\n\n");
|
||||||
message.append(Msg.translate(getCtx(), "Date")).append(" : ")
|
message.append(Msg.translate(language, "Date")).append(" : ")
|
||||||
.append(df.format(new Timestamp(System.currentTimeMillis())));
|
.append(df.format(new Timestamp(System.currentTimeMillis())));
|
||||||
|
|
||||||
Collection<Integer> users = alert.getRecipientUsers();
|
Collection<Integer> users = alert.getRecipientUsers();
|
||||||
|
@ -408,7 +415,7 @@ public class AlertProcessor extends AdempiereServer
|
||||||
* @return summary message to be added into mail content
|
* @return summary message to be added into mail content
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
protected String getExcelReport(MAlertRule rule, String sql, String trxName, Collection<File> attachments)
|
protected String getExcelReport(MAlertRule rule, String sql, Language language, String trxName, Collection<File> attachments)
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
ArrayList<ArrayList<Object>> data = getData(sql, trxName);
|
ArrayList<ArrayList<Object>> data = getData(sql, trxName);
|
||||||
|
@ -418,10 +425,10 @@ public class AlertProcessor extends AdempiereServer
|
||||||
File file = rule.createReportFile("xls");
|
File file = rule.createReportFile("xls");
|
||||||
//
|
//
|
||||||
ArrayExcelExporter exporter = new ArrayExcelExporter(getCtx(), data);
|
ArrayExcelExporter exporter = new ArrayExcelExporter(getCtx(), data);
|
||||||
exporter.export(file, null, false);
|
exporter.export(file, language, false);
|
||||||
attachments.add(file);
|
attachments.add(file);
|
||||||
String msg = rule.getName() + " (@SeeAttachment@ "+file.getName()+")"+Env.NL;
|
String msg = rule.getName() + " (" + Msg.translate(language, "SeeAttachment") + " " + file.getName() + ")" + Env.NL;
|
||||||
return Msg.parseTranslation(Env.getCtx(), msg);
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -23,6 +23,8 @@ import org.adempiere.webui.event.ValueChangeEvent;
|
||||||
import org.adempiere.webui.window.WFieldRecordInfo;
|
import org.adempiere.webui.window.WFieldRecordInfo;
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Msg;
|
||||||
import org.zkoss.zk.ui.event.Event;
|
import org.zkoss.zk.ui.event.Event;
|
||||||
import org.zkoss.zk.ui.event.Events;
|
import org.zkoss.zk.ui.event.Events;
|
||||||
|
|
||||||
|
@ -77,8 +79,8 @@ public class WDatetimeEditor extends WEditor implements ContextMenuListener
|
||||||
|
|
||||||
public WDatetimeEditor()
|
public WDatetimeEditor()
|
||||||
{
|
{
|
||||||
this("Datetime", "Datetime", false, false, true);
|
this(Msg.getMsg(Env.getCtx(), "DateTime"), Msg.getMsg(Env.getCtx(), "DateTime"), false, false, true);
|
||||||
} // VDate
|
} // WDatetimeEditor
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -19,6 +19,7 @@ import org.apache.ecs.ConcreteElement;
|
||||||
import org.apache.ecs.xhtml.a;
|
import org.apache.ecs.xhtml.a;
|
||||||
import org.apache.ecs.xhtml.div;
|
import org.apache.ecs.xhtml.div;
|
||||||
import org.apache.ecs.xhtml.img;
|
import org.apache.ecs.xhtml.img;
|
||||||
|
import org.compiere.model.MSysConfig;
|
||||||
import org.compiere.print.IHTMLExtension;
|
import org.compiere.print.IHTMLExtension;
|
||||||
import org.compiere.print.PrintData;
|
import org.compiere.print.PrintData;
|
||||||
import org.compiere.print.PrintDataElement;
|
import org.compiere.print.PrintDataElement;
|
||||||
|
@ -32,14 +33,24 @@ import org.compiere.util.Msg;
|
||||||
*/
|
*/
|
||||||
public class HTMLExtension implements IHTMLExtension {
|
public class HTMLExtension implements IHTMLExtension {
|
||||||
|
|
||||||
private String contextPath;
|
|
||||||
private String classPrefix;
|
private String classPrefix;
|
||||||
private String componentId;
|
private String componentId;
|
||||||
|
private String scriptURL;
|
||||||
|
private String styleURL;
|
||||||
|
|
||||||
public HTMLExtension(String contextPath, String classPrefix, String componentId) {
|
public HTMLExtension(String contextPath, String classPrefix, String componentId) {
|
||||||
this.contextPath = contextPath;
|
|
||||||
|
String theme = MSysConfig.getValue(MSysConfig.HTML_REPORT_THEME, "/", Env.getAD_Client_ID(Env.getCtx()));
|
||||||
|
|
||||||
|
if (! theme.startsWith("/"))
|
||||||
|
theme = "/" + theme;
|
||||||
|
if (! theme.endsWith("/"))
|
||||||
|
theme = theme + "/";
|
||||||
|
|
||||||
this.classPrefix = classPrefix;
|
this.classPrefix = classPrefix;
|
||||||
this.componentId = componentId;
|
this.componentId = componentId;
|
||||||
|
this.scriptURL = contextPath + theme + "js/report.js";
|
||||||
|
this.styleURL = contextPath + theme + "css/report.css";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void extendIDColumn(int row, ConcreteElement columnElement, a href,
|
public void extendIDColumn(int row, ConcreteElement columnElement, a href,
|
||||||
|
@ -106,11 +117,11 @@ public class HTMLExtension implements IHTMLExtension {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getScriptURL() {
|
public String getScriptURL() {
|
||||||
return contextPath + "/js/report.js";
|
return scriptURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getStyleURL() {
|
public String getStyleURL() {
|
||||||
return contextPath + "/css/report.css";
|
return styleURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,9 @@ import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
@ -57,6 +59,7 @@ import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DisplayType;
|
import org.compiere.util.DisplayType;
|
||||||
import org.compiere.util.EMail;
|
import org.compiere.util.EMail;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Language;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
import org.compiere.util.Util;
|
import org.compiere.util.Util;
|
||||||
import org.zkforge.ckez.CKeditor;
|
import org.zkforge.ckez.CKeditor;
|
||||||
|
@ -120,6 +123,9 @@ public class WEMailDialog extends Window implements EventListener<Event>, ValueC
|
||||||
fMessage = new CKeditor();
|
fMessage = new CKeditor();
|
||||||
fMessage.setCustomConfigurationsPath("/js/ckeditor/config.js");
|
fMessage.setCustomConfigurationsPath("/js/ckeditor/config.js");
|
||||||
fMessage.setToolbar("MyToolbar");
|
fMessage.setToolbar("MyToolbar");
|
||||||
|
Map<String,Object> lang = new HashMap<String,Object>();
|
||||||
|
lang.put("language", Language.getLoginLanguage().getAD_Language());
|
||||||
|
fMessage.setConfig(lang);
|
||||||
|
|
||||||
commonInit(from, to, subject, message, attachment);
|
commonInit(from, to, subject, message, attachment);
|
||||||
} // EmailDialog
|
} // EmailDialog
|
||||||
|
|
|
@ -12,6 +12,9 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.adempiere.webui.window;
|
package org.adempiere.webui.window;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.adempiere.webui.component.ConfirmPanel;
|
import org.adempiere.webui.component.ConfirmPanel;
|
||||||
import org.adempiere.webui.component.Label;
|
import org.adempiere.webui.component.Label;
|
||||||
import org.adempiere.webui.component.Tab;
|
import org.adempiere.webui.component.Tab;
|
||||||
|
@ -21,6 +24,8 @@ import org.adempiere.webui.component.Tabpanels;
|
||||||
import org.adempiere.webui.component.Tabs;
|
import org.adempiere.webui.component.Tabs;
|
||||||
import org.adempiere.webui.component.Textbox;
|
import org.adempiere.webui.component.Textbox;
|
||||||
import org.adempiere.webui.component.Window;
|
import org.adempiere.webui.component.Window;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Language;
|
||||||
import org.zkforge.ckez.CKeditor;
|
import org.zkforge.ckez.CKeditor;
|
||||||
import org.zkoss.zk.au.out.AuScript;
|
import org.zkoss.zk.au.out.AuScript;
|
||||||
import org.zkoss.zk.ui.event.Event;
|
import org.zkoss.zk.ui.event.Event;
|
||||||
|
@ -162,6 +167,9 @@ public class WTextEditorDialog extends Window implements EventListener<Event>{
|
||||||
editor = new CKeditor();
|
editor = new CKeditor();
|
||||||
editor.setCustomConfigurationsPath("/js/ckeditor/config.js");
|
editor.setCustomConfigurationsPath("/js/ckeditor/config.js");
|
||||||
editor.setToolbar("MyToolbar");
|
editor.setToolbar("MyToolbar");
|
||||||
|
Map<String,Object> lang = new HashMap<String,Object>();
|
||||||
|
lang.put("language", Language.getLoginLanguage().getAD_Language());
|
||||||
|
editor.setConfig(lang);
|
||||||
tabPanel.appendChild(editor);
|
tabPanel.appendChild(editor);
|
||||||
editor.setVflex("1");
|
editor.setVflex("1");
|
||||||
editor.setWidth("100%");
|
editor.setWidth("100%");
|
||||||
|
|
|
@ -8,23 +8,35 @@
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
width: 90%;
|
width: 90%;
|
||||||
background-color: #EBF1EF;
|
background-color: #EBF1EF;
|
||||||
|
border-width: 0px;
|
||||||
}
|
}
|
||||||
.rp-table th {
|
.rp-table th {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
font-weight: normal;
|
font-weight: bold;
|
||||||
font-size: 13px;
|
|
||||||
background-color: #C6D1CD;
|
background-color: #C6D1CD;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-color: #BBBBBB;
|
border-color: black;
|
||||||
|
border-width: 2px 1px 2px 0px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rp-table th:last-child {
|
||||||
|
border-width: 2px 0px 2px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
.rp-table td {
|
.rp-table td {
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-color: #BBBBBB;
|
border-color: #BBBBBB;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
|
border-width: 1px 1px 1px 0px;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rp-table td:last-child {
|
||||||
|
border-width: 1px 0px 1px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
.rp-number {
|
.rp-number {
|
||||||
background-color: #EBF1EF;
|
background-color: #EBF1EF;
|
||||||
text-align: right !important;
|
text-align: right !important;
|
||||||
|
@ -34,4 +46,25 @@
|
||||||
background-color: #EBF1EF;
|
background-color: #EBF1EF;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rp-lastgrouprow td {
|
||||||
|
border-width: 0px 1px 2px 0px;
|
||||||
|
border-color: white #BBBBBB black white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rp-lastgrouprow td:last-child {
|
||||||
|
border-width: 0px 0px 2px 0px;
|
||||||
|
border-color: white #BBBBBB black white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rp-functionrow td {
|
||||||
|
background-color: #C6D1CD;
|
||||||
|
font-weight: bold;
|
||||||
|
border-width: 0px 1px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rp-functionrow td:last-child {
|
||||||
|
border-width: 0px 0px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -372,8 +372,8 @@ public abstract class PaymentFormCash extends PaymentForm {
|
||||||
m_mPayment.setC_Order_ID(C_Order_ID);
|
m_mPayment.setC_Order_ID(C_Order_ID);
|
||||||
m_needSave = true;
|
m_needSave = true;
|
||||||
}
|
}
|
||||||
m_mPayment.setDateTrx(m_DateAcct);
|
m_mPayment.setDateTrx(newDateAcct);
|
||||||
m_mPayment.setDateAcct(m_DateAcct);
|
m_mPayment.setDateAcct(newDateAcct);
|
||||||
m_mPayment.saveEx();
|
m_mPayment.saveEx();
|
||||||
|
|
||||||
// Save/Post
|
// Save/Post
|
||||||
|
@ -398,8 +398,6 @@ public abstract class PaymentFormCash extends PaymentForm {
|
||||||
*/
|
*/
|
||||||
log.config("Saving changes");
|
log.config("Saving changes");
|
||||||
//
|
//
|
||||||
if (!newDateAcct.equals(m_DateAcct))
|
|
||||||
getGridTab().setValue("DateAcct", newDateAcct);
|
|
||||||
// Set Payment
|
// Set Payment
|
||||||
if (m_mPayment.getC_Payment_ID() != m_C_Payment_ID)
|
if (m_mPayment.getC_Payment_ID() != m_C_Payment_ID)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue