diff --git a/migration/i2.1/oracle/201412171953_IDEMPIERE-1996.sql b/migration/i2.1/oracle/201412171953_IDEMPIERE-1996.sql new file mode 100644 index 0000000000..b564475e26 --- /dev/null +++ b/migration/i2.1/oracle/201412171953_IDEMPIERE-1996.sql @@ -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 +; + diff --git a/migration/i2.1/postgresql/201412171953_IDEMPIERE-1996.sql b/migration/i2.1/postgresql/201412171953_IDEMPIERE-1996.sql new file mode 100644 index 0000000000..0e1160a63b --- /dev/null +++ b/migration/i2.1/postgresql/201412171953_IDEMPIERE-1996.sql @@ -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 +; + diff --git a/org.adempiere.base/META-INF/MANIFEST.MF b/org.adempiere.base/META-INF/MANIFEST.MF index 38c11743ab..063d996c14 100644 --- a/org.adempiere.base/META-INF/MANIFEST.MF +++ b/org.adempiere.base/META-INF/MANIFEST.MF @@ -271,6 +271,7 @@ Export-Package: bsh, org.eevolution.model, org.idempiere.broadcast, org.idempiere.distributed, + org.idempiere.model, org.jfree, org.jfree.base, org.jfree.base.config, diff --git a/org.adempiere.base/src/org/compiere/model/MInOut.java b/org.adempiere.base/src/org/compiere/model/MInOut.java index ab1be4ae26..7798c5d2c9 100644 --- a/org.adempiere.base/src/org/compiere/model/MInOut.java +++ b/org.adempiere.base/src/org/compiere/model/MInOut.java @@ -1752,6 +1752,10 @@ public class MInOut extends X_M_InOut implements DocAction MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); if (dt.isOverwriteDateOnComplete()) { setMovementDate(new Timestamp (System.currentTimeMillis())); + if (getDateAcct().before(getMovementDate())) { + setDateAcct(getMovementDate()); + MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocType_ID(), getAD_Org_ID()); + } } if (dt.isOverwriteSeqOnComplete()) { String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this); diff --git a/org.adempiere.base/src/org/compiere/model/MInventory.java b/org.adempiere.base/src/org/compiere/model/MInventory.java index 62f44e20cc..e8ab43fe8c 100644 --- a/org.adempiere.base/src/org/compiere/model/MInventory.java +++ b/org.adempiere.base/src/org/compiere/model/MInventory.java @@ -595,6 +595,7 @@ public class MInventory extends X_M_Inventory implements DocAction MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); if (dt.isOverwriteDateOnComplete()) { setMovementDate(new Timestamp (System.currentTimeMillis())); + MPeriod.testPeriodOpen(getCtx(), getMovementDate(), MDocType.DOCBASETYPE_MaterialPhysicalInventory, getAD_Org_ID()); } if (dt.isOverwriteSeqOnComplete()) { String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this); diff --git a/org.adempiere.base/src/org/compiere/model/MInvoice.java b/org.adempiere.base/src/org/compiere/model/MInvoice.java index 13a12db064..542def1ddd 100644 --- a/org.adempiere.base/src/org/compiere/model/MInvoice.java +++ b/org.adempiere.base/src/org/compiere/model/MInvoice.java @@ -2118,6 +2118,10 @@ public class MInvoice extends X_C_Invoice implements DocAction MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); if (dt.isOverwriteDateOnComplete()) { setDateInvoiced(new Timestamp (System.currentTimeMillis())); + if (getDateAcct().before(getDateInvoiced())) { + setDateAcct(getDateInvoiced()); + MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocTypeTarget_ID(), getAD_Org_ID()); + } } if (dt.isOverwriteSeqOnComplete()) { String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this); diff --git a/org.adempiere.base/src/org/compiere/model/MJournal.java b/org.adempiere.base/src/org/compiere/model/MJournal.java index 170f93aa52..8953a199de 100644 --- a/org.adempiere.base/src/org/compiere/model/MJournal.java +++ b/org.adempiere.base/src/org/compiere/model/MJournal.java @@ -627,6 +627,10 @@ public class MJournal extends X_GL_Journal implements DocAction if (dt.isOverwriteDateOnComplete()) { if (this.getProcessedOn().signum() == 0) { setDateDoc(new Timestamp (System.currentTimeMillis())); + if (getDateAcct().before(getDateDoc())) { + setDateAcct(getDateDoc()); + MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocType_ID(), getAD_Org_ID()); + } } } if (dt.isOverwriteSeqOnComplete()) { diff --git a/org.adempiere.base/src/org/compiere/model/MJournalBatch.java b/org.adempiere.base/src/org/compiere/model/MJournalBatch.java index 9270bdfe45..7b5a10583e 100644 --- a/org.adempiere.base/src/org/compiere/model/MJournalBatch.java +++ b/org.adempiere.base/src/org/compiere/model/MJournalBatch.java @@ -510,6 +510,10 @@ public class MJournalBatch extends X_GL_JournalBatch implements DocAction MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); if (dt.isOverwriteDateOnComplete()) { setDateDoc(new Timestamp (System.currentTimeMillis())); + if (getDateAcct().before(getDateDoc())) { + setDateAcct(getDateDoc()); + MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocType_ID(), getAD_Org_ID()); + } } if (dt.isOverwriteSeqOnComplete()) { String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this); diff --git a/org.adempiere.base/src/org/compiere/model/MMovement.java b/org.adempiere.base/src/org/compiere/model/MMovement.java index 75f705f3df..5d920457f9 100644 --- a/org.adempiere.base/src/org/compiere/model/MMovement.java +++ b/org.adempiere.base/src/org/compiere/model/MMovement.java @@ -548,6 +548,7 @@ public class MMovement extends X_M_Movement implements DocAction MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); if (dt.isOverwriteDateOnComplete()) { setMovementDate(new Timestamp (System.currentTimeMillis())); + MPeriod.testPeriodOpen(getCtx(), getMovementDate(), getC_DocType_ID(), getAD_Org_ID()); } if (dt.isOverwriteSeqOnComplete()) { String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this); diff --git a/org.adempiere.base/src/org/compiere/model/MOrder.java b/org.adempiere.base/src/org/compiere/model/MOrder.java index 6f70fcc5ef..c3a61334bb 100644 --- a/org.adempiere.base/src/org/compiere/model/MOrder.java +++ b/org.adempiere.base/src/org/compiere/model/MOrder.java @@ -2128,6 +2128,10 @@ public class MOrder extends X_C_Order implements DocAction /* a42niem - BF IDEMPIERE-63 - check if document has been completed before */ if (this.getProcessedOn().signum() == 0) { setDateOrdered(new Timestamp (System.currentTimeMillis())); + if (getDateAcct().before(getDateOrdered())) { + setDateAcct(getDateOrdered()); + MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocTypeTarget_ID(), getAD_Org_ID()); + } } } if (dt.isOverwriteSeqOnComplete()) { diff --git a/org.adempiere.base/src/org/compiere/model/MPayment.java b/org.adempiere.base/src/org/compiere/model/MPayment.java index eaa222be18..cbc31d6be2 100644 --- a/org.adempiere.base/src/org/compiere/model/MPayment.java +++ b/org.adempiere.base/src/org/compiere/model/MPayment.java @@ -654,7 +654,8 @@ public class MPayment extends X_C_Payment */ protected boolean beforeSave (boolean newRecord) { - if (isComplete() && + if (isComplete() && + ! is_ValueChanged(COLUMNNAME_Processed) && ( is_ValueChanged(COLUMNNAME_C_BankAccount_ID) || is_ValueChanged(COLUMNNAME_C_BPartner_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()); if (dt.isOverwriteDateOnComplete()) { setDateTrx(new Timestamp (System.currentTimeMillis())); + if (getDateAcct().before(getDateTrx())) { + setDateAcct(getDateTrx()); + MPeriod.testPeriodOpen(getCtx(), getDateAcct(), getC_DocType_ID(), getAD_Org_ID()); + } } if (dt.isOverwriteSeqOnComplete()) { String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this); diff --git a/org.adempiere.base/src/org/compiere/model/MRequisition.java b/org.adempiere.base/src/org/compiere/model/MRequisition.java index 54b89140b8..e9108c17df 100644 --- a/org.adempiere.base/src/org/compiere/model/MRequisition.java +++ b/org.adempiere.base/src/org/compiere/model/MRequisition.java @@ -364,6 +364,7 @@ public class MRequisition extends X_M_Requisition implements DocAction MDocType dt = MDocType.get(getCtx(), getC_DocType_ID()); if (dt.isOverwriteDateOnComplete()) { setDateDoc(new Timestamp (System.currentTimeMillis())); + MPeriod.testPeriodOpen(getCtx(), getDateDoc(), MDocType.DOCBASETYPE_PurchaseRequisition, getAD_Org_ID()); } if (dt.isOverwriteSeqOnComplete()) { String value = DB.getDocumentNo(getC_DocType_ID(), get_TrxName(), true, this); diff --git a/org.adempiere.base/src/org/compiere/model/MSysConfig.java b/org.adempiere.base/src/org/compiere/model/MSysConfig.java index 5bbbe2e5bb..c8b19c466e 100644 --- a/org.adempiere.base/src/org/compiere/model/MSysConfig.java +++ b/org.adempiere.base/src/org/compiere/model/MSysConfig.java @@ -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 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 ENABLE_PAYMENTBOX_BUTTON = "ENABLE_PAYMENTBOX_BUTTON"; 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 JASPER_SWAP_MAX_PAGES = "JASPER_SWAP_MAX_PAGES"; public static final String LASTRUN_RECORD_COUNT = "LASTRUN_RECORD_COUNT"; diff --git a/org.adempiere.base/src/org/compiere/print/MPrintFormat.java b/org.adempiere.base/src/org/compiere/print/MPrintFormat.java index 3a03d8dedf..593a9a8a6a 100644 --- a/org.adempiere.base/src/org/compiere/print/MPrintFormat.java +++ b/org.adempiere.base/src/org/compiere/print/MPrintFormat.java @@ -1171,22 +1171,23 @@ public class MPrintFormat extends X_AD_PrintFormat */ public static List getAccessiblePrintFormats (int AD_Table_ID, int AD_Window_ID, String trxName, boolean makeNewWhenEmpty) { - // append WHERE to can use MRole.getDefault().addAccessSQL - String sqlWhere = " WHERE AD_Table_ID=? AND IsTableBased='Y' "; + String constantForRoleAccess = "SELECT * FROM AD_PrintFormat WHERE "; + StringBuilder sqlWhereB = new StringBuilder(constantForRoleAccess) + .append("AD_Table_ID=? AND IsTableBased='Y' "); 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 ( - sqlWhere, "AD_PrintFormat", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO); - + String sqlWhere = MRole.getDefault().addAccessSQL ( + sqlWhereB.toString(), "AD_PrintFormat", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO); + // remove " WHERE " to use in Query - sqlWhere = sqlWhere.substring(6); + sqlWhere = sqlWhere.substring(constantForRoleAccess.length()); // add sql parameter List lsParameter = new ArrayList(); - + lsParameter.add(new Integer(AD_Table_ID)); - if (AD_Window_ID > 0) + if (AD_Window_ID > 0) lsParameter.add(new Integer(AD_Window_ID)); // init query diff --git a/org.adempiere.base/src/org/compiere/print/ReportEngine.java b/org.adempiere.base/src/org/compiere/print/ReportEngine.java index ebbfb2d69a..ca3f98851f 100644 --- a/org.adempiere.base/src/org/compiere/print/ReportEngine.java +++ b/org.adempiere.base/src/org/compiere/print/ReportEngine.java @@ -57,8 +57,10 @@ import org.apache.ecs.xhtml.a; import org.apache.ecs.xhtml.link; import org.apache.ecs.xhtml.script; import org.apache.ecs.xhtml.table; +import org.apache.ecs.xhtml.tbody; import org.apache.ecs.xhtml.td; import org.apache.ecs.xhtml.th; +import org.apache.ecs.xhtml.thead; import org.apache.ecs.xhtml.tr; import org.compiere.model.MClient; import org.compiere.model.MColumn; @@ -71,7 +73,9 @@ import org.compiere.model.MProject; import org.compiere.model.MQuery; import org.compiere.model.MRfQResponse; import org.compiere.model.PrintInfo; + import static org.compiere.model.SystemIDs.*; + import org.compiere.print.layout.LayoutEngine; import org.compiere.process.ProcessInfo; import org.compiere.process.ServerProcessCtl; @@ -587,6 +591,8 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) } doc.output(w); } + thead thead = new thead(); + tbody tbody = new tbody(); // for all rows (-1 = header 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); } + 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 (int col = 0; col < m_printFormat.getItemCount(); col++) @@ -719,9 +735,11 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) } } // printed } // for all columns - tr.output(w); } // for all rows + thead.output(w); + tbody.output(w); + w.println(); w.println(""); if (!onlyTable) diff --git a/org.adempiere.base/src/org/idempiere/model/CalloutFillLocator.java b/org.adempiere.base/src/org/idempiere/model/CalloutFillLocator.java new file mode 100644 index 0000000000..80d11a0e2f --- /dev/null +++ b/org.adempiere.base/src/org/idempiere/model/CalloutFillLocator.java @@ -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 ""; + } + +} diff --git a/org.adempiere.replication.server/src/org/compiere/server/ReplicationProcessor.java b/org.adempiere.replication.server/src/org/compiere/server/ReplicationProcessor.java index a86279ab57..542d25058c 100644 --- a/org.adempiere.replication.server/src/org/compiere/server/ReplicationProcessor.java +++ b/org.adempiere.replication.server/src/org/compiere/server/ReplicationProcessor.java @@ -34,7 +34,9 @@ import java.util.logging.Level; import org.adempiere.server.rpl.IImportProcessor; import org.compiere.model.AdempiereProcessor; import org.compiere.model.MClient; +import org.compiere.model.MOrgInfo; import org.compiere.model.X_IMP_Processor_Type; +import org.compiere.util.Env; import org.compiere.util.TimeUtil; import org.compiere.server.AdempiereServer; import org.compiere.model.MIMPProcessor; @@ -95,6 +97,16 @@ public class ReplicationProcessor extends AdempiereServer { else { // 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(); 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 public String getServerInfo() { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/report/HTMLExtension.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/report/HTMLExtension.java index bcfbfa902c..fea7606e7f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/report/HTMLExtension.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/report/HTMLExtension.java @@ -19,6 +19,7 @@ import org.apache.ecs.ConcreteElement; import org.apache.ecs.xhtml.a; import org.apache.ecs.xhtml.div; import org.apache.ecs.xhtml.img; +import org.compiere.model.MSysConfig; import org.compiere.print.IHTMLExtension; import org.compiere.print.PrintData; import org.compiere.print.PrintDataElement; @@ -32,14 +33,24 @@ import org.compiere.util.Msg; */ public class HTMLExtension implements IHTMLExtension { - private String contextPath; private String classPrefix; private String componentId; + private String scriptURL; + private String styleURL; 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.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, @@ -106,11 +117,11 @@ public class HTMLExtension implements IHTMLExtension { } public String getScriptURL() { - return contextPath + "/js/report.js"; + return scriptURL; } public String getStyleURL() { - return contextPath + "/css/report.css"; + return styleURL; } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WEMailDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WEMailDialog.java index aab089e8c5..afaa6b83ac 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WEMailDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WEMailDialog.java @@ -22,7 +22,9 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.StringTokenizer; import java.util.logging.Level; import java.util.regex.Matcher; @@ -57,6 +59,7 @@ import org.compiere.util.CLogger; import org.compiere.util.DisplayType; import org.compiere.util.EMail; import org.compiere.util.Env; +import org.compiere.util.Language; import org.compiere.util.Msg; import org.compiere.util.Util; import org.zkforge.ckez.CKeditor; @@ -120,6 +123,9 @@ public class WEMailDialog extends Window implements EventListener, ValueC fMessage = new CKeditor(); fMessage.setCustomConfigurationsPath("/js/ckeditor/config.js"); fMessage.setToolbar("MyToolbar"); + Map lang = new HashMap(); + lang.put("language", Language.getLoginLanguage().getAD_Language()); + fMessage.setConfig(lang); commonInit(from, to, subject, message, attachment); } // EmailDialog diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WTextEditorDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WTextEditorDialog.java index 3efe983d31..66a63f4615 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WTextEditorDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WTextEditorDialog.java @@ -12,6 +12,9 @@ *****************************************************************************/ package org.adempiere.webui.window; +import java.util.HashMap; +import java.util.Map; + import org.adempiere.webui.component.ConfirmPanel; import org.adempiere.webui.component.Label; 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.Textbox; import org.adempiere.webui.component.Window; +import org.compiere.util.Env; +import org.compiere.util.Language; import org.zkforge.ckez.CKeditor; import org.zkoss.zk.au.out.AuScript; import org.zkoss.zk.ui.event.Event; @@ -161,6 +166,9 @@ public class WTextEditorDialog extends Window implements EventListener{ editor = new CKeditor(); editor.setCustomConfigurationsPath("/js/ckeditor/config.js"); editor.setToolbar("MyToolbar"); + Map lang = new HashMap(); + lang.put("language", Language.getLoginLanguage().getAD_Language()); + editor.setConfig(lang); tabPanel.appendChild(editor); editor.setVflex("1"); editor.setWidth("100%"); diff --git a/org.adempiere.ui.zk/css/report.css b/org.adempiere.ui.zk/css/report.css index 31aef0a60b..4084e2d790 100644 --- a/org.adempiere.ui.zk/css/report.css +++ b/org.adempiere.ui.zk/css/report.css @@ -8,23 +8,35 @@ border-collapse: collapse; width: 90%; background-color: #EBF1EF; + border-width: 0px; } .rp-table th { text-align: center; padding: 2px; - font-weight: normal; - font-size: 13px; + font-weight: bold; background-color: #C6D1CD; border-width: 1px; - border-color: #BBBBBB; + border-color: black; + border-width: 2px 1px 2px 0px; border-style: solid; } + +.rp-table th:last-child { + border-width: 2px 0px 2px 0px; +} + .rp-table td { border-width: 1px; border-color: #BBBBBB; border-style: solid; + border-width: 1px 1px 1px 0px; padding: 3px; } + +.rp-table td:last-child { + border-width: 1px 0px 1px 0px; +} + .rp-number { background-color: #EBF1EF; text-align: right !important; @@ -34,4 +46,25 @@ background-color: #EBF1EF; text-align: left; padding: 3px; -} \ No newline at end of file +} + +.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; +} + diff --git a/org.adempiere.ui/src/org/compiere/grid/PaymentFormCash.java b/org.adempiere.ui/src/org/compiere/grid/PaymentFormCash.java index 1d8eac3536..c5caba8dbc 100644 --- a/org.adempiere.ui/src/org/compiere/grid/PaymentFormCash.java +++ b/org.adempiere.ui/src/org/compiere/grid/PaymentFormCash.java @@ -372,8 +372,8 @@ public abstract class PaymentFormCash extends PaymentForm { m_mPayment.setC_Order_ID(C_Order_ID); m_needSave = true; } - m_mPayment.setDateTrx(m_DateAcct); - m_mPayment.setDateAcct(m_DateAcct); + m_mPayment.setDateTrx(newDateAcct); + m_mPayment.setDateAcct(newDateAcct); m_mPayment.saveEx(); // Save/Post @@ -398,8 +398,6 @@ public abstract class PaymentFormCash extends PaymentForm { */ log.config("Saving changes"); // - if (!newDateAcct.equals(m_DateAcct)) - getGridTab().setValue("DateAcct", newDateAcct); // Set Payment if (m_mPayment.getC_Payment_ID() != m_C_Payment_ID) {