hg merge release-5.1 (merge release5.1 into default)
This commit is contained in:
commit
af32053a03
|
@ -0,0 +1,10 @@
|
|||
SET SQLBLANKLINES ON
|
||||
SET DEFINE OFF
|
||||
|
||||
-- IDEMPIERE-3589 Add a 'Warning' Message
|
||||
-- Dec 29, 2017 9:22:30 AM CET
|
||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Warning',0,0,'Y',TO_DATE('2017-12-29 09:22:30','YYYY-MM-DD HH24:MI:SS'),0,TO_DATE('2017-12-29 09:22:30','YYYY-MM-DD HH24:MI:SS'),0,200442,'Warning','D','ef025d76-6391-4a0c-88c0-64d12196b53e')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201712290930_IDEMPIERE-3589.sql') FROM dual
|
||||
;
|
|
@ -0,0 +1,22 @@
|
|||
SET SQLBLANKLINES ON
|
||||
SET DEFINE OFF
|
||||
|
||||
-- IDEMPIERE-3529 Add parameters to InvoicePrint process
|
||||
-- Jan 11, 2018 7:02:29 PM CET
|
||||
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200222,0,0,'Y',TO_DATE('2018-01-11 19:02:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2018-01-11 19:02:28','YYYY-MM-DD HH24:MI:SS'),100,'Printed','Indicates if this document / line is printed','The Printed checkbox indicates if this document or line will included when printing.',200,80,17,319,'N',0,'N','IsPrinted','Y','D',399,'24d72545-9015-4b87-921d-7de97eaa5079','N')
|
||||
;
|
||||
|
||||
-- Jan 11, 2018 7:03:51 PM CET
|
||||
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200223,0,0,'Y',TO_DATE('2018-01-11 19:03:50','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2018-01-11 19:03:50','YYYY-MM-DD HH24:MI:SS'),100,'Payment Rule','How you pay the invoice','The Payment Rule indicates the method of invoice payment.',200,90,200012,'N',1,'N','PaymentRule','Y','D',1143,'d7b2cef8-86cc-4a2d-91c2-ea452a71ffa3','N')
|
||||
;
|
||||
|
||||
-- Jan 11, 2018 7:05:08 PM CET
|
||||
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,AD_Val_Rule_ID,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200224,0,0,'Y',TO_DATE('2018-01-11 19:05:07','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2018-01-11 19:05:07','YYYY-MM-DD HH24:MI:SS'),100,'Payment Term','The terms of Payment (timing, discount)','Payment Terms identify the method and timing of payment.',200,100,19,'N',52098,22,'N','C_PaymentTerm_ID','Y','D',204,'77ec6576-ac60-48b8-a072-63af04afd7b5','N')
|
||||
;
|
||||
|
||||
-- Jan 11, 2018 7:06:08 PM CET
|
||||
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200225,0,0,'Y',TO_DATE('2018-01-11 19:06:07','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2018-01-11 19:06:07','YYYY-MM-DD HH24:MI:SS'),100,'Document Status','The current status of the document','The Document Status indicates the status of a document at this time. If you want to change the document status, use the Document Action field',200,110,17,131,'N',0,'N','DocStatus','Y','D',289,'409de69f-31b2-4742-8339-7a0a30272480','N')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201801111909_IDEMPIERE-3529.sql') FROM dual
|
||||
;
|
|
@ -0,0 +1,7 @@
|
|||
-- IDEMPIERE-3589 Add a 'Warning' Message
|
||||
-- Dec 29, 2017 9:22:30 AM CET
|
||||
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Warning',0,0,'Y',TO_TIMESTAMP('2017-12-29 09:22:30','YYYY-MM-DD HH24:MI:SS'),0,TO_TIMESTAMP('2017-12-29 09:22:30','YYYY-MM-DD HH24:MI:SS'),0,200442,'Warning','D','ef025d76-6391-4a0c-88c0-64d12196b53e')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201712290930_IDEMPIERE-3589.sql') FROM dual
|
||||
;
|
|
@ -0,0 +1,19 @@
|
|||
-- IDEMPIERE-3529 Add parameters to InvoicePrint process
|
||||
-- Jan 11, 2018 7:02:29 PM CET
|
||||
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200222,0,0,'Y',TO_TIMESTAMP('2018-01-11 19:02:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2018-01-11 19:02:28','YYYY-MM-DD HH24:MI:SS'),100,'Printed','Indicates if this document / line is printed','The Printed checkbox indicates if this document or line will included when printing.',200,80,17,319,'N',0,'N','IsPrinted','Y','D',399,'24d72545-9015-4b87-921d-7de97eaa5079','N')
|
||||
;
|
||||
|
||||
-- Jan 11, 2018 7:03:51 PM CET
|
||||
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200223,0,0,'Y',TO_TIMESTAMP('2018-01-11 19:03:50','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2018-01-11 19:03:50','YYYY-MM-DD HH24:MI:SS'),100,'Payment Rule','How you pay the invoice','The Payment Rule indicates the method of invoice payment.',200,90,200012,'N',1,'N','PaymentRule','Y','D',1143,'d7b2cef8-86cc-4a2d-91c2-ea452a71ffa3','N')
|
||||
;
|
||||
|
||||
-- Jan 11, 2018 7:05:08 PM CET
|
||||
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,AD_Val_Rule_ID,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200224,0,0,'Y',TO_TIMESTAMP('2018-01-11 19:05:07','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2018-01-11 19:05:07','YYYY-MM-DD HH24:MI:SS'),100,'Payment Term','The terms of Payment (timing, discount)','Payment Terms identify the method and timing of payment.',200,100,19,'N',52098,22,'N','C_PaymentTerm_ID','Y','D',204,'77ec6576-ac60-48b8-a072-63af04afd7b5','N')
|
||||
;
|
||||
|
||||
-- Jan 11, 2018 7:06:08 PM CET
|
||||
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200225,0,0,'Y',TO_TIMESTAMP('2018-01-11 19:06:07','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2018-01-11 19:06:07','YYYY-MM-DD HH24:MI:SS'),100,'Document Status','The current status of the document','The Document Status indicates the status of a document at this time. If you want to change the document status, use the Document Action field',200,110,17,131,'N',0,'N','DocStatus','Y','D',289,'409de69f-31b2-4742-8339-7a0a30272480','N')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201801111909_IDEMPIERE-3529.sql') FROM dual
|
||||
;
|
|
@ -20,8 +20,8 @@
|
|||
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc}"/>
|
||||
<stringAttribute key="pde.version" value="3.3"/>
|
||||
<stringAttribute key="product" value="org.adempiere.server.server_product"/>
|
||||
<stringAttribute key="selected_target_plugins" value="bcpkix*1.56.0@default:default,bcprov*1.56.0@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.ibm.icu*58.2.0@default:default,com.itextpdf@default:default,com.sun.mail.javax.mail@default:default,groovy-all*2.4.8@default:default,java_cup.runtime@default:default,javax.activation@default:default,javax.annotation-api@default:default,javax.annotation@default:default,javax.ejb@default:default,javax.inject@default:default,javax.jms@default:default,javax.management.j2ee-api@default:default,javax.transaction@default:false,javax.xml.rpc@default:default,javax.xml.soap@default:default,javax.xml@default:default,joda-time*2.9.7@default:default,net.sf.supercsv.super-csv@default:default,org.apache.activemq.activemq-core@default:default,org.apache.activemq.kahadb@default:default,org.apache.ant@default:default,org.apache.bcel@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.poi@default:default,org.apache.servicemix.bundles.cglib@default:default,org.apache.xalan@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.cryptacular@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.jdt.core.compiler.batch@default:default,org.eclipse.jetty.osgi-servlet-api@default:default,org.eclipse.jetty.osgi.alpn.fragment@default:false,org.eclipse.osgi.compatibility.plugins@default:false,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.junit@default:default,org.mortbay.jasper.apache-el*8.5.9@default:default,org.mortbay.jasper.apache-jsp*8.0.27@default:default,org.passay@default:default,org.restlet@default:default,org.slf4j.api@default:default,org.slf4j.jcl@default:default"/>
|
||||
<stringAttribute key="selected_workspace_plugins" value="org.adempiere.base.callout@default:default,org.adempiere.base@default:default,org.adempiere.extend@default:false,org.adempiere.install@default:default,org.adempiere.plugin.utils@default:default,org.adempiere.report.jasper.library@default:default,org.adempiere.ui@default:default,org.apache.ecs@default:default,org.compiere.db.oracle.provider@default:default,org.compiere.db.postgresql.provider@default:default,org.idempiere.fitrecorder@default:default,org.idempiere.webservices@default:default,org.slf4j.jdk14@default:false"/>
|
||||
<stringAttribute key="selected_target_plugins" value="bcpkix@default:default,bcprov@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.ibm.icu@default:default,com.itextpdf@default:default,com.jaspersoft.studio.bundles.barbecue@default:default,com.jaspersoft.studio.bundles.poi@default:default,com.sun.mail.javax.mail@default:default,groovy-all@default:default,java_cup.runtime@default:default,javax.activation@default:default,javax.annotation-api@default:default,javax.ejb@default:default,javax.inject@default:default,javax.jms@default:default,javax.management.j2ee-api@default:default,javax.transaction@default:false,javax.xml.rpc@default:default,javax.xml.soap@default:default,javax.xml.stream@default:default,javax.xml@default:default,joda-time@default:default,net.sf.jasperreports.engine@default:default,net.sf.supercsv.super-csv@default:default,org.apache.activemq.activemq-core@default:default,org.apache.activemq.kahadb@default:default,org.apache.ant@default:default,org.apache.bcel@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.scr@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.poi@default:default,org.apache.servicemix.bundles.cglib@default:default,org.apache.servicemix.bundles.xmlbeans@default:default,org.apache.xalan@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.cryptacular@default:default,org.dom4j@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.jdt.core.compiler.batch@default:default,org.eclipse.jetty.osgi-servlet-api@default:default,org.eclipse.jetty.osgi.alpn.fragment@default:false,org.eclipse.osgi.compatibility.plugins@default:false,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jfree.chart-osgi@default:default,org.jfree.jcommon-osgi@default:default,org.junit@default:default,org.krysalis.barcode4j@default:default,org.mortbay.jasper.apache-el@default:default,org.passay@default:default,org.restlet@default:default,org.slf4j.api@default:default,org.slf4j.jcl@default:default"/>
|
||||
<stringAttribute key="selected_workspace_plugins" value="de.bxservice.report.fonts@default:default,org.adempiere.base.callout@default:default,org.adempiere.base@default:default,org.adempiere.extend@default:false,org.adempiere.install@default:default,org.adempiere.plugin.utils@default:default,org.adempiere.report.jasper.fonts@default:default,org.adempiere.report.jasper.library@default:false,org.adempiere.ui@default:default,org.apache.ecs@default:default,org.compiere.db.oracle.provider@default:default,org.compiere.db.postgresql.provider@default:default,org.idempiere.fitrecorder@default:default,org.idempiere.webservices@default:default,org.slf4j.jdk14@default:false"/>
|
||||
<booleanAttribute key="show_selected_only" value="false"/>
|
||||
<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
|
|
|
@ -833,6 +833,8 @@ public class CalloutOrder extends CalloutEngine
|
|||
if (product.isStocked() && Env.getContext(ctx, WindowNo, "IsDropShip").equals("N"))
|
||||
{
|
||||
BigDecimal QtyOrdered = (BigDecimal)mTab.getValue("QtyOrdered");
|
||||
if (QtyOrdered == null)
|
||||
QtyOrdered = Env.ZERO;
|
||||
int M_Warehouse_ID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID");
|
||||
int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_AttributeSetInstance_ID");
|
||||
BigDecimal available = MStorageReservation.getQtyAvailable
|
||||
|
@ -1036,7 +1038,11 @@ public class CalloutOrder extends CalloutEngine
|
|||
BigDecimal QtyEntered, QtyOrdered, PriceEntered, PriceActual, PriceLimit, Discount, PriceList;
|
||||
// get values
|
||||
QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
|
||||
if (QtyEntered == null)
|
||||
QtyEntered = Env.ZERO;
|
||||
QtyOrdered = (BigDecimal)mTab.getValue("QtyOrdered");
|
||||
if (QtyOrdered == null)
|
||||
QtyOrdered = Env.ZERO;
|
||||
if (log.isLoggable(Level.FINE)) log.fine("QtyEntered=" + QtyEntered + ", Ordered=" + QtyOrdered + ", UOM=" + C_UOM_To_ID);
|
||||
//
|
||||
PriceEntered = (BigDecimal)mTab.getValue("PriceEntered");
|
||||
|
|
|
@ -26,7 +26,6 @@ import org.compiere.model.I_AD_Role_Included;
|
|||
import org.compiere.model.MRole;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Msg;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -76,7 +75,7 @@ public class CopyRole extends SvrProcess
|
|||
protected String doIt() throws Exception
|
||||
{
|
||||
if (! MRole.getDefault().isAccessAdvanced()) {
|
||||
throw new AdempiereException(Msg.getMsg(getCtx(), "CannotAccessProcess", new Object[] {getProcessInfo().getAD_Process_ID(), MRole.getDefault().getName()}));
|
||||
return "@Error@ @Advanced@ @Process@";
|
||||
}
|
||||
|
||||
if (m_AD_Role_ID_From == m_AD_Role_ID_To)
|
||||
|
|
|
@ -43,6 +43,7 @@ import org.compiere.model.DataStatusEvent;
|
|||
import org.compiere.model.DataStatusListener;
|
||||
import org.compiere.model.GridField;
|
||||
import org.compiere.model.GridTab;
|
||||
import org.compiere.model.GridTable;
|
||||
import org.compiere.model.GridWindow;
|
||||
import org.compiere.model.MImportTemplate;
|
||||
import org.compiere.model.MLookup;
|
||||
|
@ -75,6 +76,7 @@ public class ImportCSVProcess extends SvrProcess implements DataStatusListener {
|
|||
}
|
||||
}
|
||||
|
||||
GridWindow m_gridWindow = null;
|
||||
GridTab m_gridTab = null;
|
||||
List<GridTab> m_Childs = null;
|
||||
|
||||
|
@ -101,15 +103,15 @@ public class ImportCSVProcess extends SvrProcess implements DataStatusListener {
|
|||
if (!m_importTemplate.isAllowed(p_ImportMode, Env.getAD_Role_ID(Env.getCtx())))
|
||||
throw new AdempiereException("Template/Mode not allowed for this role");
|
||||
|
||||
GridWindow gWin = GridWindow.get(getCtx(), -1, l_AD_Window_ID);
|
||||
Env.setContext(getCtx(), -1, "IsSOTrx", gWin.isSOTrx());
|
||||
m_gridWindow = GridWindow.get(getCtx(), -1, l_AD_Window_ID);
|
||||
Env.setContext(getCtx(), -1, "IsSOTrx", m_gridWindow.isSOTrx());
|
||||
m_Childs = new ArrayList<GridTab>();
|
||||
for (int i = 0; i < gWin.getTabCount(); i++) {
|
||||
GridTab gridtab = gWin.getTab(i);
|
||||
for (int i = 0; i < m_gridWindow.getTabCount(); i++) {
|
||||
GridTab gridtab = m_gridWindow.getTab(i);
|
||||
if (!gridtab.isLoadComplete())
|
||||
gWin.initTab(i);
|
||||
if (gWin.getTab(i).getAD_Tab_ID() == l_AD_Tab_ID) {
|
||||
m_gridTab = gWin.getTab(i);
|
||||
m_gridWindow.initTab(i);
|
||||
if (m_gridWindow.getTab(i).getAD_Tab_ID() == l_AD_Tab_ID) {
|
||||
m_gridTab = m_gridWindow.getTab(i);
|
||||
} else {
|
||||
if (m_gridTab != null && gridtab.getTabLevel() > m_gridTab.getTabLevel())
|
||||
m_Childs.add(gridtab);
|
||||
|
@ -119,6 +121,8 @@ public class ImportCSVProcess extends SvrProcess implements DataStatusListener {
|
|||
if (m_gridTab == null)
|
||||
throw new Exception("No Active Tab");
|
||||
m_gridTab.addDataStatusListener(this);
|
||||
for (GridTab childTab : m_Childs)
|
||||
childTab.addDataStatusListener(this);
|
||||
}
|
||||
|
||||
protected IGridTabImporter initImporter() throws Exception {
|
||||
|
@ -161,23 +165,33 @@ public class ImportCSVProcess extends SvrProcess implements DataStatusListener {
|
|||
public void dataStatusChanged(DataStatusEvent e)
|
||||
{
|
||||
int col = e.getChangedColumn();
|
||||
if (log.isLoggable(Level.CONFIG)) log.config("(" + m_gridTab + ") Col=" + col + ": " + e.toString());
|
||||
if (col < 0)
|
||||
return;
|
||||
|
||||
GridTab l_gridTab = null;
|
||||
if (e.getSource() != null && e.getSource() instanceof GridTable) {
|
||||
GridTable gt = (GridTable) e.getSource();
|
||||
l_gridTab = m_gridWindow.getTab(gt.getTabNo());
|
||||
if (l_gridTab.getAD_Table_ID() != e.AD_Table_ID)
|
||||
throw new RuntimeException("Table doesn't match with updated tab");
|
||||
}
|
||||
if (log.isLoggable(Level.CONFIG)) log.config("(" + l_gridTab + ") Col=" + col + ": " + e.toString());
|
||||
|
||||
// Process Callout
|
||||
GridField mField = m_gridTab.getField(col);
|
||||
GridField mField = l_gridTab.getField(col);
|
||||
if (mField != null
|
||||
&& (mField.getCallout().length() > 0
|
||||
|| (Core.findCallout(m_gridTab.getTableName(), mField.getColumnName())).size()>0
|
||||
|| m_gridTab.hasDependants(mField.getColumnName())))
|
||||
|| (Core.findCallout(l_gridTab.getTableName(), mField.getColumnName())).size()>0
|
||||
|| l_gridTab.hasDependants(mField.getColumnName())))
|
||||
{
|
||||
String msg = m_gridTab.processFieldChange(mField); // Dependencies & Callout
|
||||
String msg = l_gridTab.processFieldChange(mField); // Dependencies & Callout
|
||||
if (msg.length() > 0)
|
||||
{
|
||||
log.warning(msg);
|
||||
}
|
||||
|
||||
// Refresh the list on dependant fields
|
||||
for (GridField dependentField : m_gridTab.getDependantFields(mField.getColumnName()))
|
||||
for (GridField dependentField : l_gridTab.getDependantFields(mField.getColumnName()))
|
||||
{
|
||||
// if the field has a lookup
|
||||
if (dependentField != null && dependentField.getLookup() instanceof MLookup)
|
||||
|
|
|
@ -22,7 +22,7 @@ bin.includes = META-INF/,\
|
|||
OSGI-INF/defaultaddressvalidationfactory.xml,\
|
||||
OSGI-INF/defaulttaxproviderfactory.xml,\
|
||||
OSGI-INF/addressvalidationeventhandler.xml,\
|
||||
OSGI-INF/defaultproductpricingfactory.xml\
|
||||
OSGI-INF/defaultproductpricingfactory.xml,\
|
||||
schema/,\
|
||||
bsh-2.0b6.jar,\
|
||||
commons-validator-1.6.jar
|
||||
|
|
|
@ -91,6 +91,9 @@ public interface IEventTopics {
|
|||
|
||||
public static final String PREF_AFTER_LOAD = "adempiere/pref/afterLoad";
|
||||
|
||||
/** Called after next document actions are set */
|
||||
public static final String DOCACTION = "adempiere/docAction";
|
||||
|
||||
public static final String BROADCAST_MESSAGE = "idempiere/broadcastMsg";
|
||||
|
||||
public static final String REQUEST_SEND_EMAIL = "idempiere/requestSendEMail";
|
||||
|
|
|
@ -99,11 +99,10 @@ import org.compiere.util.ValueNamePair;
|
|||
public class GridTable extends AbstractTableModel
|
||||
implements Serializable
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -4982992333796276205L;
|
||||
private static final long serialVersionUID = -4651516342985623070L;
|
||||
|
||||
public static final String DATA_REFRESH_MESSAGE = "Refreshed";
|
||||
public static final String DATA_UPDATE_COPIED_MESSAGE = "UpdateCopied";
|
||||
|
@ -3879,6 +3878,15 @@ public class GridTable extends AbstractTableModel
|
|||
return tabNo;
|
||||
}
|
||||
|
||||
/**
|
||||
* get Tab No
|
||||
* @return Tab No
|
||||
*/
|
||||
public int getTabNo()
|
||||
{
|
||||
return m_TabNo;
|
||||
}
|
||||
|
||||
private boolean isNotNullAndIsEmpty (Object value) {
|
||||
if (value != null
|
||||
&& (value instanceof String)
|
||||
|
|
|
@ -574,7 +574,7 @@ public class MInventory extends X_M_Inventory implements DocAction
|
|||
Timestamp dateMPolicy= qtyDiff.signum() > 0 ? getMovementDate() : null;
|
||||
if (line.getM_AttributeSetInstance_ID() > 0)
|
||||
{
|
||||
Timestamp t = MStorageOnHand.getDateMaterialPolicy(line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(), line.get_TrxName());
|
||||
Timestamp t = MStorageOnHand.getDateMaterialPolicy(line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(), line.getM_Locator_ID(), line.get_TrxName());
|
||||
if (t != null)
|
||||
dateMPolicy = t;
|
||||
}
|
||||
|
|
|
@ -536,7 +536,7 @@ public class MLocation extends X_C_Location implements Comparator<Object>
|
|||
if (isAddressLinesReverse())
|
||||
{
|
||||
// City, Region, Postal
|
||||
retStr.append(", ").append(parseCRP (getCountry()));
|
||||
retStr.append(parseCRP (getCountry()));
|
||||
if (getAddress5() != null && getAddress5().length() > 0)
|
||||
retStr.append(", ").append(getAddress5());
|
||||
if (getAddress4() != null && getAddress4().length() > 0)
|
||||
|
@ -546,7 +546,7 @@ public class MLocation extends X_C_Location implements Comparator<Object>
|
|||
if (getAddress2() != null && getAddress2().length() > 0)
|
||||
retStr.append(", ").append(getAddress2());
|
||||
if (getAddress1() != null)
|
||||
retStr.append(getAddress1());
|
||||
retStr.append(", ").append(getAddress1());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -563,6 +563,7 @@ public class MLocation extends X_C_Location implements Comparator<Object>
|
|||
// City, Region, Postal
|
||||
retStr.append(", ").append(parseCRP (getCountry()));
|
||||
// Add Country would come here
|
||||
// retStr.append(", ").append(getCountry());
|
||||
}
|
||||
return retStr.toString();
|
||||
} // toString
|
||||
|
|
|
@ -32,6 +32,7 @@ import org.adempiere.base.event.EventManager;
|
|||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Language;
|
||||
import org.compiere.util.Msg;
|
||||
import org.idempiere.distributed.IMessageService;
|
||||
import org.idempiere.distributed.ITopic;
|
||||
|
@ -219,8 +220,15 @@ public class MPInstance extends X_AD_PInstance
|
|||
{
|
||||
MRole role = MRole.get(getCtx(), AD_Role_ID);
|
||||
Boolean access = role.getProcessAccess(AD_Process_ID);
|
||||
if (access == null || !access.booleanValue())
|
||||
throw new IllegalStateException(Msg.getMsg(getCtx(), "CannotAccessProcess", new Object[] {AD_Process_ID, role.getName()}));
|
||||
if (access == null || !access.booleanValue()) {
|
||||
MProcess proc = MProcess.get(getCtx(), AD_Process_ID);
|
||||
StringBuilder procMsg = new StringBuilder("[");
|
||||
if (! Language.isBaseLanguage (Env.getAD_Language(getCtx()))) {
|
||||
procMsg.append(proc.get_Translation("Name")).append(" / ");
|
||||
}
|
||||
procMsg.append(proc.getName()).append("]");
|
||||
throw new IllegalStateException(Msg.getMsg(getCtx(), "CannotAccessProcess", new Object[] {procMsg.toString(), role.getName()}));
|
||||
}
|
||||
}
|
||||
super.setAD_Process_ID (AD_Process_ID);
|
||||
} // setAD_Process_ID
|
||||
|
|
|
@ -64,9 +64,11 @@ public class MRecentItem extends X_AD_RecentItem
|
|||
{
|
||||
super (ctx, AD_RecentItem_ID, trxName);
|
||||
if (AD_RecentItem_ID > 0) {
|
||||
Integer key = new Integer (AD_RecentItem_ID);
|
||||
if (!s_cache.containsKey(key))
|
||||
s_cache.put (key, this);
|
||||
synchronized (MRecentItem.class) {
|
||||
Integer key = new Integer (AD_RecentItem_ID);
|
||||
if (!s_cache.containsKey(key))
|
||||
s_cache.put (key, this);
|
||||
}
|
||||
}
|
||||
} // MRecentItem
|
||||
|
||||
|
@ -85,8 +87,10 @@ public class MRecentItem extends X_AD_RecentItem
|
|||
} catch (SQLException e) {
|
||||
throw new AdempiereException(e);
|
||||
}
|
||||
if (key != null && !s_cache.containsKey(key))
|
||||
s_cache.put (key, this);
|
||||
synchronized (MRecentItem.class) {
|
||||
if (key != null && !s_cache.containsKey(key))
|
||||
s_cache.put (key, this);
|
||||
}
|
||||
} // MRecentItem
|
||||
|
||||
/**
|
||||
|
@ -95,7 +99,7 @@ public class MRecentItem extends X_AD_RecentItem
|
|||
* @param AD_RecentItem_ID id
|
||||
* @return recent item
|
||||
*/
|
||||
public static MRecentItem get (Properties ctx, int AD_RecentItem_ID)
|
||||
public static synchronized MRecentItem get (Properties ctx, int AD_RecentItem_ID)
|
||||
{
|
||||
Integer ii = new Integer (AD_RecentItem_ID);
|
||||
MRecentItem ri = (MRecentItem)s_cache.get(ii);
|
||||
|
@ -111,7 +115,7 @@ public class MRecentItem extends X_AD_RecentItem
|
|||
* @param Record_ID recordID
|
||||
* @return recent item
|
||||
*/
|
||||
public static MRecentItem get (Properties ctx, int AD_Table_ID, int Record_ID, int AD_User_ID)
|
||||
public static synchronized MRecentItem get (Properties ctx, int AD_Table_ID, int Record_ID, int AD_User_ID)
|
||||
{
|
||||
Iterator<MRecentItem> it = s_cache.values().iterator();
|
||||
while (it.hasNext())
|
||||
|
@ -262,7 +266,9 @@ public class MRecentItem extends X_AD_RecentItem
|
|||
@Override
|
||||
public boolean delete(boolean force) {
|
||||
Integer ii = new Integer (getAD_RecentItem_ID());
|
||||
s_cache.remove(ii);
|
||||
synchronized (MRecentItem.class) {
|
||||
s_cache.remove(ii);
|
||||
}
|
||||
return super.delete(force);
|
||||
}
|
||||
|
||||
|
|
|
@ -3174,9 +3174,26 @@ public final class MRole extends X_AD_Role
|
|||
+ "WHERE AD_Table_ID = ? "
|
||||
+ " AND iw.IsActive = 'Y' "
|
||||
+ " AND iwa.IsActive = 'Y' "
|
||||
+ " AND iwa.AD_Role_ID = ?";
|
||||
int cnt = DB.getSQLValueEx(null, sql, I_M_Product.Table_ID, getAD_Role_ID());
|
||||
+ " AND (iwa.AD_Role_ID = ? OR iwa.AD_Role_ID IN"
|
||||
+ " (SELECT ri.Included_Role_ID FROM AD_Role_Included ri WHERE ri.IsActive='Y' AND ri.AD_Role_ID=?))";
|
||||
int cnt = DB.getSQLValueEx(get_TrxName(), sql, I_M_Product.Table_ID, getAD_Role_ID(), getAD_Role_ID());
|
||||
m_canAccess_Info_Product = new Boolean(cnt > 0);
|
||||
|
||||
// Verify if is excluded in the specific role (it can be allowed in included role and inactive in specific role)
|
||||
if (m_canAccess_Info_Product) {
|
||||
String sqlInactive = ""
|
||||
+ "SELECT COUNT(*) "
|
||||
+ "FROM AD_InfoWindow iw "
|
||||
+ " JOIN AD_InfoWindow_Access iwa "
|
||||
+ " ON ( iwa.AD_InfoWindow_ID = iw.AD_InfoWindow_ID ) "
|
||||
+ "WHERE AD_Table_ID = ? "
|
||||
+ " AND iw.IsActive = 'Y' "
|
||||
+ " AND iwa.IsActive = 'N' "
|
||||
+ " AND iwa.AD_Role_ID = ?";
|
||||
int cntInactive = DB.getSQLValueEx(get_TrxName(), sqlInactive, I_M_Product.Table_ID, getAD_Role_ID());
|
||||
if (cntInactive > 0)
|
||||
m_canAccess_Info_Product = new Boolean(false);
|
||||
}
|
||||
}
|
||||
return m_canAccess_Info_Product.booleanValue();
|
||||
}
|
||||
|
|
|
@ -83,6 +83,16 @@ public class Query
|
|||
private int queryTimeout = 0;
|
||||
private List<String> joinClauseList = new ArrayList<String>();
|
||||
|
||||
/**
|
||||
* Limit current query rows return.
|
||||
*/
|
||||
private int pageSize;
|
||||
|
||||
/**
|
||||
* Number of pages will be skipped on query run.
|
||||
*/
|
||||
private int pagesToSkip;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param table
|
||||
|
@ -753,9 +763,72 @@ public class Query
|
|||
if (DB.isPostgreSQL())
|
||||
sql = sql + " OF " + table.getTableName();
|
||||
}
|
||||
if (log.isLoggable(Level.FINEST)) log.finest("TableName = "+table.getTableName()+"... SQL = " +sql); //red1 - to assist in debugging SQL
|
||||
return sql;
|
||||
}
|
||||
|
||||
// If have pagination
|
||||
if (pageSize > 0) {
|
||||
sql = appendPagination(sql);
|
||||
}
|
||||
|
||||
if (log.isLoggable(Level.FINEST))
|
||||
log.finest("TableName = " + table.getTableName() + "... SQL = " + sql); // red1 - to assist in debugging SQL
|
||||
|
||||
return sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the pagination of the query.
|
||||
*
|
||||
* @param pPageSize
|
||||
* Limit current query rows return.
|
||||
*
|
||||
* @return current Query
|
||||
*/
|
||||
public Query setPageSize(int pPageSize) {
|
||||
this.pageSize = pPageSize;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the pagination of the query.
|
||||
*
|
||||
* @param pPageSize
|
||||
* Limit current query rows return.
|
||||
*
|
||||
* @param pPagesToSkip
|
||||
* Number of pages will be skipped on query run. ZERO for first page
|
||||
*
|
||||
* @return current Query
|
||||
*/
|
||||
public Query setPage(int pPageSize, int pPagesToSkip) {
|
||||
this.pageSize = pPageSize;
|
||||
this.pagesToSkip = pPagesToSkip;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* If top is bigger than 0 set the pagination on query
|
||||
*
|
||||
* @param query
|
||||
* SQL String
|
||||
* @param pageSize
|
||||
* number
|
||||
* @param skip
|
||||
* number
|
||||
*/
|
||||
private String appendPagination(String pQuery) {
|
||||
|
||||
String query = pQuery;
|
||||
|
||||
if (pageSize > 0) {
|
||||
if (DB.getDatabase().isPagingSupported()) {
|
||||
query = DB.getDatabase().addPagingSQL(query, (pageSize*pagesToSkip) + 1, pageSize * (pagesToSkip+1));
|
||||
} else {
|
||||
throw new IllegalArgumentException("Pagination not supported by database");
|
||||
}
|
||||
}
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
private final ResultSet createResultSet (PreparedStatement pstmt) throws SQLException
|
||||
{
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package org.compiere.process;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import org.compiere.model.PO;
|
||||
|
||||
public class DocActionEventData {
|
||||
|
||||
public String docStatus;
|
||||
public Object processing;
|
||||
public String orderType;
|
||||
public String isSOTrx;
|
||||
public int AD_Table_ID;
|
||||
public ArrayList<String> docAction;
|
||||
public ArrayList<String> options;
|
||||
public AtomicInteger indexObj;
|
||||
public PO po;
|
||||
|
||||
public DocActionEventData(String docStatus, Object processing, String orderType, String isSOTrx,
|
||||
int AD_Table_ID, ArrayList<String> docAction, ArrayList<String> options, AtomicInteger indexObj, PO po) {
|
||||
this.docStatus = docStatus;
|
||||
this.processing = processing;
|
||||
this.orderType = orderType;
|
||||
this.isSOTrx = isSOTrx;
|
||||
this.AD_Table_ID = AD_Table_ID;
|
||||
this.docAction = docAction;
|
||||
this.options = options;
|
||||
this.indexObj = indexObj;
|
||||
this.po = po;
|
||||
}
|
||||
|
||||
}
|
|
@ -22,9 +22,14 @@ import java.sql.PreparedStatement;
|
|||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.adempiere.base.event.EventManager;
|
||||
import org.adempiere.base.event.EventProperty;
|
||||
import org.adempiere.base.event.IEventTopics;
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.compiere.acct.Doc;
|
||||
import org.compiere.model.MAcctSchema;
|
||||
|
@ -55,6 +60,7 @@ import org.eevolution.model.I_DD_Order;
|
|||
import org.eevolution.model.I_HR_Process;
|
||||
import org.eevolution.model.I_PP_Cost_Collector;
|
||||
import org.eevolution.model.I_PP_Order;
|
||||
import org.osgi.service.event.Event;
|
||||
|
||||
/**
|
||||
* Document Action Engine
|
||||
|
@ -907,7 +913,7 @@ public class DocumentEngine implements DocAction
|
|||
* @return Number of valid options
|
||||
*/
|
||||
public static int getValidActions(String docStatus, Object processing,
|
||||
String orderType, String isSOTrx, int AD_Table_ID, String[] docAction, String[] options, boolean periodOpen)
|
||||
String orderType, String isSOTrx, int AD_Table_ID, String[] docAction, String[] options, boolean periodOpen, PO po)
|
||||
{
|
||||
if (options == null)
|
||||
throw new IllegalArgumentException("Option array parameter is null");
|
||||
|
@ -1214,6 +1220,25 @@ public class DocumentEngine implements DocAction
|
|||
options[index++] = DocumentEngine.ACTION_Void;
|
||||
}
|
||||
}
|
||||
|
||||
if (po instanceof DocOptions)
|
||||
index = ((DocOptions) po).customizeValidActions(docStatus, processing, orderType, isSOTrx,
|
||||
AD_Table_ID, docAction, options, index);
|
||||
|
||||
AtomicInteger indexObj = new AtomicInteger(index);
|
||||
ArrayList<String> docActionsArray = new ArrayList<String>(Arrays.asList(docAction));
|
||||
ArrayList<String> optionsArray = new ArrayList<String>(Arrays.asList(options));
|
||||
DocActionEventData eventData = new DocActionEventData(docStatus, processing, orderType, isSOTrx, AD_Table_ID, docActionsArray, optionsArray, indexObj, po);
|
||||
Event event = EventManager.newEvent(IEventTopics.DOCACTION,
|
||||
new EventProperty(EventManager.EVENT_DATA, eventData),
|
||||
new EventProperty("tableName", po.get_TableName()));
|
||||
EventManager.getInstance().sendEvent(event);
|
||||
index = indexObj.get();
|
||||
for (int i = 0; i < optionsArray.size(); i++)
|
||||
options[i] = optionsArray.get(i);
|
||||
for (int i = 0; i < docActionsArray.size(); i++)
|
||||
docAction[i] = docActionsArray.get(i);
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,21 +14,21 @@ url.maven2.lib=http://central.maven.org
|
|||
|
||||
url.maven.zkoss=http://mavensync.zkoss.org
|
||||
url.maven.zkoss.lib=http://mavensync.zkoss.org
|
||||
url.zkoss.osgi=${local.repository.root}/jarfile/zk-p2/zk-8.5.0/
|
||||
url.zkoss.osgi=http://downloads.sourceforge.net/project/idempiere/binary.file/jarfile/zk-p2/zk-8.5.0/
|
||||
|
||||
url.equinox=http://download.eclipse.org/eclipse/updates/4.7
|
||||
url.jetty=http://download.eclipse.org/jetty/updates/jetty-bundles-9.x
|
||||
url.orbit=http://download.eclipse.org/tools/orbit/downloads/drops/R20170919201930/repository/
|
||||
|
||||
url.file.srv=${local.repository.root}
|
||||
url.file.srv=http://downloads.sourceforge.net/project/idempiere/binary.file
|
||||
|
||||
url.restlet.p2=http://p2.restlet.com/2.3
|
||||
|
||||
url.modify.bundle=${local.repository.root}/jarfile/modifyBundle-1.0.0
|
||||
url.modify.bundle=http://downloads.sourceforge.net/project/idempiere/binary.file/jarfile/modifyBundle-1.0.0
|
||||
|
||||
url.file.jp.lib=${local.repository.root}/jarfile/jp-6.3.1
|
||||
url.file.jp.lib=http://downloads.sourceforge.net/project/idempiere/binary.file/jarfile/jp-6.3.1
|
||||
|
||||
url.jp.p2=${local.repository.root}/jarfile/jp-p2/jp-6.3.1
|
||||
url.jp.p2=http://downloads.sourceforge.net/project/idempiere/binary.file/jarfile/jp-p2/jp-6.3.1
|
||||
|
||||
url.alpn.boot=http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.11.v20170118/alpn-boot-8.1.11.v20170118.jar
|
||||
|
||||
|
|
|
@ -42,7 +42,6 @@ import org.compiere.model.MProduction;
|
|||
import org.compiere.model.MTable;
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.process.DocAction;
|
||||
import org.compiere.process.DocOptions;
|
||||
import org.compiere.process.DocumentEngine;
|
||||
import org.compiere.swing.CComboBox;
|
||||
import org.compiere.swing.CDialog;
|
||||
|
@ -245,11 +244,7 @@ public class VDocAction extends CDialog
|
|||
|
||||
String[] docActionHolder = new String[] {DocAction};
|
||||
index = DocumentEngine.getValidActions(DocStatus, Processing, OrderType, IsSOTrx, m_AD_Table_ID,
|
||||
docActionHolder, options, periodOpen);
|
||||
|
||||
if (po instanceof DocOptions)
|
||||
index = ((DocOptions) po).customizeValidActions(DocStatus, Processing, OrderType, IsSOTrx,
|
||||
m_AD_Table_ID, docActionHolder, options, index);
|
||||
docActionHolder, options, periodOpen, po);
|
||||
|
||||
Integer doctypeId = (Integer)m_mTab.getValue("C_DocType_ID");
|
||||
if(doctypeId==null || doctypeId.intValue()==0){
|
||||
|
|
|
@ -1118,6 +1118,7 @@ public class WAcctViewer extends Window implements EventListener<Event>
|
|||
|
||||
table.setItemRenderer(new WListItemRenderer());
|
||||
table.setModel(listmodeltable);
|
||||
table.setSizedByContent(true);
|
||||
|
||||
resultPanel.invalidate();
|
||||
|
||||
|
|
|
@ -484,9 +484,13 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
|||
decimalFormat.setRoundingMode(RoundingMode.DOWN);
|
||||
String columnWidth = decimalFormat.format(equalWidth);
|
||||
|
||||
for (int h=0;h<numCols;h++){
|
||||
for (int h=0;h<numCols+1;h++){
|
||||
Column col = new Column();
|
||||
ZKUpdateUtil.setWidth(col, columnWidth + "%");
|
||||
if (h == numCols) {
|
||||
ZKUpdateUtil.setWidth(col, "5%");
|
||||
} else {
|
||||
ZKUpdateUtil.setWidth(col, columnWidth + "%");
|
||||
}
|
||||
columns.appendChild(col);
|
||||
}
|
||||
|
||||
|
@ -587,8 +591,10 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
|||
actualxpos = 0;
|
||||
}
|
||||
|
||||
// get the column span for field
|
||||
int columnSpan = field.getColumnSpan();
|
||||
int xpos = field.getXPosition();
|
||||
if (xpos > numCols && diff > 0)
|
||||
if (xpos + columnSpan > numCols && diff > 0)
|
||||
{
|
||||
xpos = xpos - diff;
|
||||
if (xpos <= 0)
|
||||
|
@ -613,10 +619,16 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
|||
if (xpos-1 - actualxpos > 0)
|
||||
row.appendCellChild(createSpacer(), xpos-1 - actualxpos);
|
||||
boolean paintLabel = ! (field.getDisplayType() == DisplayType.Button || field.getDisplayType() == DisplayType.YesNo || field.isFieldOnly());
|
||||
|
||||
// Adjust column spam to the remain columns size
|
||||
int remainCols = numCols - actualxpos;
|
||||
if (columnSpan > remainCols)
|
||||
columnSpan = remainCols-1 > 0 ? remainCols-1 : 1;
|
||||
|
||||
if (field.isHeading())
|
||||
actualxpos = xpos;
|
||||
else
|
||||
actualxpos = xpos + field.getColumnSpan()-1 + (paintLabel ? 1 : 0);
|
||||
actualxpos = xpos + columnSpan-1 + (paintLabel ? 1 : 0);
|
||||
|
||||
if (! field.isHeading()) {
|
||||
|
||||
|
@ -645,7 +657,8 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
|||
div.appendChild(label.getDecorator());
|
||||
row.appendCellChild(div,1);
|
||||
}
|
||||
row.appendCellChild(editor.getComponent(), field.getColumnSpan());
|
||||
|
||||
row.appendCellChild(editor.getComponent(), columnSpan );
|
||||
//to support float/absolute editor
|
||||
row.getLastCell().setStyle("position: relative; overflow: visible;");
|
||||
|
||||
|
|
|
@ -559,12 +559,17 @@ public abstract class WEditor implements EventListener<Event>, PropertyChangeLis
|
|||
}
|
||||
}
|
||||
|
||||
public void updateStyle() {
|
||||
applyLabelStyles();
|
||||
applyFieldStyles();
|
||||
public void updateStyle(boolean applyDictionaryStyle) {
|
||||
applyLabelStyles(applyDictionaryStyle);
|
||||
applyFieldStyles(applyDictionaryStyle);
|
||||
}
|
||||
|
||||
protected void applyLabelStyles() {
|
||||
public void updateStyle() {
|
||||
applyLabelStyles(true);
|
||||
applyFieldStyles(true);
|
||||
}
|
||||
|
||||
protected void applyLabelStyles(boolean applyDictionaryStyle) {
|
||||
if (label != null) {
|
||||
boolean zoomable = isZoomable();
|
||||
String style = (zoomable ? STYLE_ZOOMABLE_LABEL : "") + (isMandatoryStyle() ? STYLE_EMPTY_MANDATORY_LABEL : STYLE_NORMAL_LABEL);
|
||||
|
@ -573,7 +578,7 @@ public abstract class WEditor implements EventListener<Event>, PropertyChangeLis
|
|||
style = style + STYLE_MOBILE_ZOOMABLE;
|
||||
}
|
||||
}
|
||||
if (gridField.getAD_LabelStyle_ID() > 0)
|
||||
if (applyDictionaryStyle && gridField.getAD_LabelStyle_ID() > 0)
|
||||
{
|
||||
String s = buildStyle(gridField.getAD_LabelStyle_ID());
|
||||
if (!Util.isEmpty(s)) {
|
||||
|
@ -593,12 +598,13 @@ public abstract class WEditor implements EventListener<Event>, PropertyChangeLis
|
|||
label.setStyle(style);
|
||||
}
|
||||
|
||||
protected void applyFieldStyles() {
|
||||
if (gridField.getAD_FieldStyle_ID() > 0)
|
||||
protected void applyFieldStyles(boolean applyDictionaryStyle) {
|
||||
String style = null;
|
||||
if (applyDictionaryStyle && gridField.getAD_FieldStyle_ID() > 0)
|
||||
{
|
||||
String style = buildStyle(gridField.getAD_FieldStyle_ID());
|
||||
setFieldStyle(style);
|
||||
style = buildStyle(gridField.getAD_FieldStyle_ID());
|
||||
}
|
||||
setFieldStyle(style);
|
||||
}
|
||||
|
||||
protected void setFieldStyle(String style) {
|
||||
|
|
|
@ -2164,7 +2164,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
|
||||
vqe.loadRecord (0);
|
||||
|
||||
final ISupportMask parent = LayoutUtils.showWindowWithMask(vqe, this, LayoutUtils.OVERLAP_TAB_PANEL);
|
||||
final ISupportMask parent = LayoutUtils.showWindowWithMask(vqe, this, LayoutUtils.OVERLAP_SELF);
|
||||
|
||||
vqe.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener<Event>() {
|
||||
@Override
|
||||
|
|
|
@ -46,7 +46,6 @@ import org.compiere.model.MProduction;
|
|||
import org.compiere.model.MTable;
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.process.DocAction;
|
||||
import org.compiere.process.DocOptions;
|
||||
import org.compiere.process.DocumentEngine;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
|
@ -172,15 +171,11 @@ public class WDocActionPanel extends Window implements EventListener<Event>, Dia
|
|||
|
||||
String[] docActionHolder = new String[]{DocAction};
|
||||
index = DocumentEngine.getValidActions(DocStatus, Processing, OrderType, IsSOTrx,
|
||||
m_AD_Table_ID, docActionHolder, options, periodOpen);
|
||||
m_AD_Table_ID, docActionHolder, options, periodOpen, po);
|
||||
|
||||
if (po instanceof DocOptions)
|
||||
index = ((DocOptions) po).customizeValidActions(DocStatus, Processing, OrderType, IsSOTrx,
|
||||
m_AD_Table_ID, docActionHolder, options, index);
|
||||
|
||||
Integer doctypeId = (Integer)gridTab.getValue("C_DocType_ID");
|
||||
Integer doctypeId = (Integer)gridTab.getValue("C_DocTypeTarget_ID");
|
||||
if(doctypeId==null || doctypeId.intValue()==0){
|
||||
doctypeId = (Integer)gridTab.getValue("C_DocTypeTarget_ID");
|
||||
doctypeId = (Integer)gridTab.getValue("C_DocType_ID");
|
||||
}
|
||||
if (doctypeId == null && MAllocationHdr.Table_ID == m_AD_Table_ID) {
|
||||
doctypeId = MDocType.getDocType(MDocType.DOCBASETYPE_PaymentAllocation);
|
||||
|
|
|
@ -70,6 +70,10 @@ public class InvoicePrint extends SvrProcess
|
|||
protected String m_DocumentNo_To = null;
|
||||
private String p_IsPaid = null;
|
||||
private int m_C_DocType_ID = 0;
|
||||
private String p_IsPrinted = null;
|
||||
private String m_PaymentRule = null;
|
||||
private int m_C_PaymentTerm_ID = 0;
|
||||
private String m_DocStatus = null;
|
||||
|
||||
protected volatile StringBuffer sql = new StringBuffer();
|
||||
protected volatile List<Object> params = new ArrayList<Object>();
|
||||
|
@ -107,6 +111,14 @@ public class InvoicePrint extends SvrProcess
|
|||
p_IsPaid = (String)para[i].getParameter();
|
||||
else if (name.equals("C_DocType_ID"))
|
||||
m_C_DocType_ID = para[i].getParameterAsInt();
|
||||
else if (name.equals("IsPrinted"))
|
||||
p_IsPrinted = (String)para[i].getParameter();
|
||||
else if (name.equals("PaymentRule"))
|
||||
m_PaymentRule = (String)para[i].getParameter();
|
||||
else if (name.equals("C_PaymentTerm_ID"))
|
||||
m_C_PaymentTerm_ID = para[i].getParameterAsInt();
|
||||
else if (name.equals("DocStatus"))
|
||||
m_DocStatus = (String)para[i].getParameter();
|
||||
else
|
||||
log.log(Level.SEVERE, "prepare - Unknown Parameter: " + name);
|
||||
}
|
||||
|
@ -132,7 +144,11 @@ public class InvoicePrint extends SvrProcess
|
|||
+ ", DateInvoiced=" + m_dateInvoiced_From + "-" + m_dateInvoiced_To
|
||||
+ ", DocumentNo=" + m_DocumentNo_From + "-" + m_DocumentNo_To
|
||||
+ ", IsPaid=" + p_IsPaid
|
||||
+ ", C_DocType_ID=" + m_C_DocType_ID);
|
||||
+ ", C_DocType_ID=" + m_C_DocType_ID
|
||||
+ ", IsPrinted=" + p_IsPrinted
|
||||
+ ", PaymentRule=" + m_PaymentRule
|
||||
+ ", C_PaymentTerm_ID=" + m_C_PaymentTerm_ID
|
||||
+ ", DocStatus=" + m_DocStatus);
|
||||
|
||||
MMailText mText = null;
|
||||
if (p_R_MailText_ID != 0)
|
||||
|
@ -144,7 +160,8 @@ public class InvoicePrint extends SvrProcess
|
|||
|
||||
// Too broad selection
|
||||
if (m_C_BPartner_ID == 0 && m_C_Invoice_ID == 0 && m_dateInvoiced_From == null && m_dateInvoiced_To == null
|
||||
&& m_DocumentNo_From == null && m_DocumentNo_To == null)
|
||||
&& m_DocumentNo_From == null && m_DocumentNo_To == null && m_PaymentRule == null && m_C_PaymentTerm_ID == 0
|
||||
&& m_DocStatus == null)
|
||||
throw new AdempiereUserError ("@RestrictSelection@");
|
||||
|
||||
MClient client = MClient.get(getCtx());
|
||||
|
@ -395,6 +412,26 @@ public class InvoicePrint extends SvrProcess
|
|||
sql.append (" AND i.C_DocTypeTarget_ID=?");
|
||||
params.add(m_C_DocType_ID);
|
||||
}
|
||||
if (p_IsPrinted != null && p_IsPrinted.length() == 1)
|
||||
{
|
||||
sql.append (" AND i.IsPrinted=?");
|
||||
params.add(p_IsPrinted);
|
||||
}
|
||||
if (m_PaymentRule != null)
|
||||
{
|
||||
sql.append (" AND i.PaymentRule=?");
|
||||
params.add(m_PaymentRule);
|
||||
}
|
||||
if (m_C_PaymentTerm_ID != 0)
|
||||
{
|
||||
sql.append (" AND i.C_PaymentTerm_ID=?");
|
||||
params.add(m_C_PaymentTerm_ID);
|
||||
}
|
||||
if (m_DocStatus != null)
|
||||
{
|
||||
sql.append (" AND i.DocStatus=?");
|
||||
params.add(m_DocStatus);
|
||||
}
|
||||
}
|
||||
String orgWhere = MRole.getDefault(getCtx(), false).getOrgWhere(MRole.SQL_RO);
|
||||
if (!Util.isEmpty(orgWhere, true)) {
|
||||
|
|
|
@ -1104,6 +1104,7 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
|
|||
editor.setMandatory(false);
|
||||
editor.setReadWrite(true);
|
||||
editor.dynamicDisplay();
|
||||
editor.updateStyle(false);
|
||||
editor.addValueChangeListener(this);
|
||||
Label label = editor.getLabel();
|
||||
Component fieldEditor = editor.getComponent();
|
||||
|
@ -1122,6 +1123,7 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
|
|||
editorTo.setMandatory(false);
|
||||
editorTo.setReadWrite(true);
|
||||
editorTo.dynamicDisplay();
|
||||
editorTo.updateStyle(false);
|
||||
editorTo.addValueChangeListener(this);
|
||||
//
|
||||
if (displayLength > 0) // set it back
|
||||
|
@ -1157,6 +1159,7 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
|
|||
m_sEditorsFlag.add(null);
|
||||
m_sEditorsTo.add(null);
|
||||
editor.fillHorizontal();
|
||||
editor.updateStyle(false);
|
||||
}
|
||||
panel.appendChild(new Space());
|
||||
if (group != null)
|
||||
|
@ -2021,6 +2024,7 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
|
|||
editor.setReadWrite(enabled);
|
||||
editor.setVisible(enabled);
|
||||
editor.dynamicDisplay();
|
||||
editor.updateStyle(false);
|
||||
if (editor instanceof WPaymentEditor) {
|
||||
((WPaymentEditor)editor).getComponent().setEnabled(true, false);
|
||||
}
|
||||
|
|
|
@ -663,6 +663,7 @@ public class DB_Oracle implements AdempiereDatabase
|
|||
boolean testConnectionOnCheckout = getBooleanProperty(poolProperties, "TestConnectionOnCheckout", false);
|
||||
String mlogClass = getStringProperty(poolProperties, "com.mchange.v2.log.MLog", "com.mchange.v2.log.FallbackMLog");
|
||||
int checkoutTimeout = getIntProperty(poolProperties, "CheckoutTimeout", 0);
|
||||
int statementCacheNumDeferredCloseThreads = getIntProperty(poolProperties, "StatementCacheNumDeferredCloseThreads", 1);
|
||||
try
|
||||
{
|
||||
System.setProperty("com.mchange.v2.log.MLog", mlogClass);
|
||||
|
@ -681,7 +682,7 @@ public class DB_Oracle implements AdempiereDatabase
|
|||
cpds.setTestConnectionOnCheckout(testConnectionOnCheckout);
|
||||
if (checkoutTimeout > 0)
|
||||
cpds.setCheckoutTimeout(checkoutTimeout);
|
||||
|
||||
cpds.setStatementCacheNumDeferredCloseThreads(statementCacheNumDeferredCloseThreads);
|
||||
cpds.setMaxIdleTimeExcessConnections(maxIdleTimeExcessConnections);
|
||||
cpds.setMaxIdleTime(maxIdleTime);
|
||||
if (Ini.isClient())
|
||||
|
@ -1287,12 +1288,20 @@ public class DB_Oracle implements AdempiereDatabase
|
|||
}
|
||||
|
||||
public String addPagingSQL(String sql, int start, int end) {
|
||||
//not supported, too many corner case that doesn't work using rownum. to investigate later
|
||||
return sql;
|
||||
StringBuilder newSql = new StringBuilder("select * from (")
|
||||
.append(" select tb.*, ROWNUM oracle_native_rownum_ from (")
|
||||
.append(sql)
|
||||
.append(") tb) where oracle_native_rownum_ >= ")
|
||||
.append(start)
|
||||
.append(" AND oracle_native_rownum_ <= ")
|
||||
.append(end)
|
||||
.append(" order by oracle_native_rownum_");
|
||||
|
||||
return newSql.toString();
|
||||
}
|
||||
|
||||
public boolean isPagingSupported() {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private int getIntProperty(Properties properties, String key, int defaultValue)
|
||||
|
|
Loading…
Reference in New Issue