hg merge release-6.2 (merge release6.2 into default)
This commit is contained in:
commit
6db1526cdd
|
@ -0,0 +1,9 @@
|
|||
SET SQLBLANKLINES ON
|
||||
SET DEFINE OFF
|
||||
|
||||
-- Oct 13, 2018 4:35:41 PM IST
|
||||
INSERT INTO AD_SysConfig (AD_SysConfig_ID,AD_Client_ID,AD_Org_ID,Created,Updated,CreatedBy,UpdatedBy,IsActive,Name,Value,Description,EntityType,ConfigurationLevel,AD_SysConfig_UU) VALUES (200146,0,0,TO_DATE('2018-10-13 16:35:40','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2018-10-13 16:35:40','YYYY-MM-DD HH24:MI:SS'),100,100,'Y','ALogin_ShowDate','Y','Defaulted to Y. If value changed to N, date field is not displayed on role window.','D','S','54085add-8245-4bfe-a978-3583bbe2cc2a')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201810131655_IDEMPIERE-1311.sql') FROM dual
|
||||
;
|
|
@ -0,0 +1,11 @@
|
|||
SET SQLBLANKLINES ON
|
||||
SET DEFINE OFF
|
||||
|
||||
-- IDEMPIERE-1311 Ability to hide fields on Connection panel
|
||||
-- Jan 25, 2019, 2:53:25 PM 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','Defaults',0,0,'Y',TO_DATE('2019-01-25 14:53:25','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-01-25 14:53:25','YYYY-MM-DD HH24:MI:SS'),100,200486,'Defaults','D','4b2b5e32-b978-47d9-a843-7e6c9eb647f2')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201901251453_IDEMPIERE-1311.sql') FROM dual
|
||||
;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
SET SQLBLANKLINES ON
|
||||
SET DEFINE OFF
|
||||
|
||||
-- IDEMPIERE-3509:Message about can't find out direct table reference
|
||||
-- Sep 30, 2017 11:59:56 PM ICT
|
||||
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 ('E','Can''''t resolve reference table for column "{0}"',0,0,'Y',TO_DATE('2017-09-30 23:59:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2017-09-30 23:59:55','YYYY-MM-DD HH24:MI:SS'),100,200432,'NotReferenceTable','D','4f338d58-5c2d-4dda-8817-93f1954ab4eb')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201901261333_IDEMPIERE-3509.sql') FROM dual
|
||||
;
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
-- Oct 13, 2018 4:35:41 PM IST
|
||||
INSERT INTO AD_SysConfig (AD_SysConfig_ID,AD_Client_ID,AD_Org_ID,Created,Updated,CreatedBy,UpdatedBy,IsActive,Name,Value,Description,EntityType,ConfigurationLevel,AD_SysConfig_UU) VALUES (200146,0,0,TO_TIMESTAMP('2018-10-13 16:35:40','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2018-10-13 16:35:40','YYYY-MM-DD HH24:MI:SS'),100,100,'Y','ALogin_ShowDate','Y','Defaulted to Y. If value changed to N, date field is not displayed on role window.','D','S','54085add-8245-4bfe-a978-3583bbe2cc2a')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201810131655_IDEMPIERE-1311.sql') FROM dual
|
||||
;
|
|
@ -0,0 +1,8 @@
|
|||
-- IDEMPIERE-1311 Ability to hide fields on Connection panel
|
||||
-- Jan 25, 2019, 2:53:25 PM 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','Defaults',0,0,'Y',TO_TIMESTAMP('2019-01-25 14:53:25','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-01-25 14:53:25','YYYY-MM-DD HH24:MI:SS'),100,200486,'Defaults','D','4b2b5e32-b978-47d9-a843-7e6c9eb647f2')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201901251453_IDEMPIERE-1311.sql') FROM dual
|
||||
;
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
-- IDEMPIERE-3509:Message about can't find out direct table reference
|
||||
-- Sep 30, 2017 11:59:56 PM ICT
|
||||
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 ('E','Can''''t resolve reference table for column "{0}"',0,0,'Y',TO_TIMESTAMP('2017-09-30 23:59:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2017-09-30 23:59:55','YYYY-MM-DD HH24:MI:SS'),100,200432,'NotReferenceTable','D','4f338d58-5c2d-4dda-8817-93f1954ab4eb')
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201901261333_IDEMPIERE-3509.sql') FROM dual
|
||||
;
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -65,7 +65,7 @@ public class CopyFromInvoice extends SvrProcess
|
|||
MInvoice from = new MInvoice (getCtx(), m_C_Invoice_ID, get_TrxName());
|
||||
MInvoice to = new MInvoice (getCtx(), To_C_Invoice_ID, get_TrxName());
|
||||
//
|
||||
int no = to.copyLinesFrom (from, false, false);
|
||||
int no = to.copyLinesFrom (from, false, false, false);
|
||||
//
|
||||
return "@Copied@=" + no;
|
||||
} // doIt
|
||||
|
|
|
@ -247,7 +247,7 @@ public class InOutGenerate extends SvrProcess
|
|||
.append(" INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID) ")
|
||||
.append("WHERE iol.C_OrderLine_ID=C_OrderLine.C_OrderLine_ID AND io.DocStatus IN ('DR','IN','IP','WC'))");
|
||||
// Deadlock Prevention - Order by M_Product_ID
|
||||
MOrderLine[] lines = order.getLines (where.toString(), "C_BPartner_Location_ID, M_Product_ID");
|
||||
MOrderLine[] lines = order.getLines (where.toString(), "C_BPartner_Location_ID, M_Product_ID, Line");
|
||||
for (int i = 0; i < lines.length; i++)
|
||||
{
|
||||
MOrderLine line = lines[i];
|
||||
|
|
|
@ -20,6 +20,8 @@ import java.util.logging.Level;
|
|||
|
||||
import org.compiere.model.MMatchInv;
|
||||
import org.compiere.util.AdempiereUserError;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.ValueNamePair;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -54,8 +56,14 @@ public class MatchInvDelete extends SvrProcess
|
|||
throw new AdempiereUserError("@NotFound@ @M_MatchInv_ID@ " + p_M_MatchInv_ID);
|
||||
if (inv.delete(true))
|
||||
return "@OK@";
|
||||
inv.saveEx();
|
||||
return "@Error@";
|
||||
|
||||
String msg = null;
|
||||
ValueNamePair err = CLogger.retrieveError();
|
||||
if (err != null)
|
||||
msg = err.getName();
|
||||
if (msg == null || msg.length() == 0)
|
||||
msg = " - Check log";
|
||||
return "@Error@: " + msg;
|
||||
} // doIt
|
||||
|
||||
} // MatchInvDelete
|
||||
|
|
|
@ -26,8 +26,9 @@ import java.util.List;
|
|||
import java.util.logging.Level;
|
||||
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineFactory;
|
||||
import javax.script.ScriptEngineManager;
|
||||
|
||||
import org.adempiere.base.osgi.OSGiScriptEngineManager;
|
||||
import org.adempiere.model.IAddressValidation;
|
||||
import org.adempiere.model.IShipmentProcessor;
|
||||
import org.adempiere.model.ITaxProvider;
|
||||
|
@ -47,7 +48,6 @@ import org.compiere.process.ProcessCall;
|
|||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.PaymentExport;
|
||||
import org.compiere.util.ReplenishInterface;
|
||||
import org.osgi.framework.FrameworkUtil;
|
||||
|
||||
/**
|
||||
* This is a facade class for the Service Locator.
|
||||
|
@ -55,8 +55,6 @@ import org.osgi.framework.FrameworkUtil;
|
|||
*
|
||||
* @author viola
|
||||
* @author hengsin
|
||||
* @author Silvano Trinchero, www.freepath.it
|
||||
* <li>IDEMPIERE-3243 added getScriptEngine to manage both registered engines and engines provided by osgi bundles
|
||||
*/
|
||||
public class Core {
|
||||
|
||||
|
@ -437,17 +435,31 @@ public class Core {
|
|||
}
|
||||
|
||||
|
||||
/** Get script engine, checking classpath first, and then osgi plugins
|
||||
/** Get script engine
|
||||
*
|
||||
* @param engineName
|
||||
* @return ScriptEngine found, or null
|
||||
*/
|
||||
public static ScriptEngine getScriptEngine(String engineName)
|
||||
{
|
||||
OSGiScriptEngineManager osgiFactory = new OSGiScriptEngineManager( FrameworkUtil.getBundle(Core.class).getBundleContext());
|
||||
ScriptEngine engine = osgiFactory.getEngineByName(engineName);
|
||||
|
||||
return engine;
|
||||
ScriptEngineManager manager = new ScriptEngineManager(Core.class.getClassLoader());
|
||||
ScriptEngine engine = manager.getEngineByName(engineName);
|
||||
if (engine != null)
|
||||
return engine;
|
||||
|
||||
List<ScriptEngineFactory> factoryList =
|
||||
Service.locator().list(ScriptEngineFactory.class).getServices();
|
||||
if (factoryList != null) {
|
||||
for(ScriptEngineFactory factory : factoryList) {
|
||||
for (String name : factory.getNames()) {
|
||||
if (engineName.equals(name)) {
|
||||
return factory.getScriptEngine();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
/*
|
||||
* Copyright 2005 The Apache Software Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
package org.adempiere.base.osgi;
|
||||
|
||||
import java.io.Reader;
|
||||
|
||||
import javax.script.Bindings;
|
||||
import javax.script.ScriptContext;
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineFactory;
|
||||
import javax.script.ScriptException;
|
||||
|
||||
/**
|
||||
* Imported from Apache Felix project.
|
||||
* Original file:
|
||||
* http://svn.apache.org/repos/asf/felix/trunk/mishell/src/main/java/org/apache/felix/mishell/OSGiScriptEngine.java
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
public class OSGiScriptEngine implements ScriptEngine{
|
||||
private ScriptEngine engine;
|
||||
private OSGiScriptEngineFactory factory;
|
||||
public OSGiScriptEngine(ScriptEngine engine, OSGiScriptEngineFactory factory){
|
||||
this.engine=engine;
|
||||
this.factory=factory;
|
||||
}
|
||||
public Bindings createBindings() {
|
||||
return engine.createBindings();
|
||||
}
|
||||
public Object eval(Reader reader, Bindings n) throws ScriptException {
|
||||
return engine.eval(reader, n);
|
||||
}
|
||||
public Object eval(Reader reader, ScriptContext context) throws ScriptException {
|
||||
return engine.eval(reader, context);
|
||||
}
|
||||
public Object eval(Reader reader) throws ScriptException {
|
||||
return engine.eval(reader);
|
||||
}
|
||||
public Object eval(String script, Bindings n) throws ScriptException {
|
||||
return engine.eval(script, n);
|
||||
}
|
||||
public Object eval(String script, ScriptContext context) throws ScriptException {
|
||||
return engine.eval(script, context);
|
||||
}
|
||||
public Object eval(String script) throws ScriptException {
|
||||
return engine.eval(script);
|
||||
}
|
||||
public Object get(String key) {
|
||||
return engine.get(key);
|
||||
}
|
||||
public Bindings getBindings(int scope) {
|
||||
return engine.getBindings(scope);
|
||||
}
|
||||
public ScriptContext getContext() {
|
||||
return engine.getContext();
|
||||
}
|
||||
public ScriptEngineFactory getFactory() {
|
||||
return factory;
|
||||
}
|
||||
public void put(String key, Object value) {
|
||||
engine.put(key, value);
|
||||
}
|
||||
public void setBindings(Bindings bindings, int scope) {
|
||||
engine.setBindings(bindings, scope);
|
||||
}
|
||||
public void setContext(ScriptContext context) {
|
||||
engine.setContext(context);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,89 +0,0 @@
|
|||
/*
|
||||
* Copyright 2005 The Apache Software Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
package org.adempiere.base.osgi;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineFactory;
|
||||
|
||||
/**
|
||||
* This is a wrapper class for the ScriptEngineFactory class that deals with context class loader issues
|
||||
* It is necessary because engines (at least ruby) use the context classloader to find their resources (i.e., their "native" classes)
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Imported from Apache Felix project.
|
||||
* Original file:
|
||||
* http://svn.apache.org/repos/asf/felix/trunk/mishell/src/main/java/org/apache/felix/mishell/OSGiScriptEngineFactory.java
|
||||
*
|
||||
*/
|
||||
public class OSGiScriptEngineFactory implements ScriptEngineFactory{
|
||||
private ScriptEngineFactory factory;
|
||||
private ClassLoader contextClassLoader;
|
||||
public OSGiScriptEngineFactory (ScriptEngineFactory factory, ClassLoader contextClassLoader){
|
||||
this.factory=factory;
|
||||
this.contextClassLoader=contextClassLoader;
|
||||
}
|
||||
public String getEngineName() {
|
||||
return factory.getEngineName();
|
||||
}
|
||||
public String getEngineVersion() {
|
||||
return factory.getEngineVersion();
|
||||
}
|
||||
public List<String> getExtensions() {
|
||||
return factory.getExtensions();
|
||||
}
|
||||
public String getLanguageName() {
|
||||
return factory.getLanguageName();
|
||||
}
|
||||
public String getLanguageVersion() {
|
||||
return factory.getLanguageVersion();
|
||||
}
|
||||
public String getMethodCallSyntax(String obj, String m, String... args) {
|
||||
return factory.getMethodCallSyntax(obj, m, args);
|
||||
}
|
||||
public List<String> getMimeTypes() {
|
||||
return factory.getMimeTypes();
|
||||
}
|
||||
public List<String> getNames() {
|
||||
return factory.getNames();
|
||||
}
|
||||
public String getOutputStatement(String toDisplay) {
|
||||
return factory.getOutputStatement(toDisplay);
|
||||
}
|
||||
public Object getParameter(String key) {
|
||||
return factory.getParameter(key);
|
||||
}
|
||||
public String getProgram(String... statements) {
|
||||
return factory.getProgram(statements);
|
||||
}
|
||||
public ScriptEngine getScriptEngine() {
|
||||
ScriptEngine engine=null;
|
||||
if(contextClassLoader!=null){
|
||||
ClassLoader old=Thread.currentThread().getContextClassLoader();
|
||||
Thread.currentThread().setContextClassLoader(contextClassLoader);
|
||||
engine=factory.getScriptEngine();
|
||||
Thread.currentThread().setContextClassLoader(old);
|
||||
}
|
||||
else engine=factory.getScriptEngine();
|
||||
return engine;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,216 +0,0 @@
|
|||
/*
|
||||
* Copyright 2005 The Apache Software Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
package org.adempiere.base.osgi;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.script.Bindings;
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineFactory;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import javax.script.SimpleBindings;
|
||||
|
||||
import org.adempiere.base.Service;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* This class acts as a delegate for all the available ScriptEngineManagers. Unluckily, the standard did not
|
||||
* define it as an interface, so we need to extend it to allow polymorphism. However, no calls to super are used.
|
||||
* It wraps all available ScriptEngineManagers in the OSGi ServicePlatform into a merged ScriptEngineManager.
|
||||
*
|
||||
* Internally, what this class does is creating ScriptEngineManagers for each bundle
|
||||
* that contains a ScriptEngineFactory and includes a META-INF/services/javax.script.ScriptEngineFactory file.
|
||||
* It assumes that the file contains a list of @link ScriptEngineFactory classes. For each bundle, it creates a
|
||||
* ScriptEngineManager, then merges them. @link ScriptEngineFactory objects are wrapped
|
||||
* into @link OSGiScriptEngineFactory objects to deal with problems of context class loader:
|
||||
* Those scripting engines that rely on the ContextClassloader for finding resources need to use this wrapper
|
||||
* and the @link OSGiScriptFactory. Mainly, jruby does.
|
||||
*
|
||||
* Note that even if no context classloader issues arose, it would still be needed to search manually for the
|
||||
* factories and either use them directly (losing the mimeType/extension/shortName mechanisms for finding engines
|
||||
* or manually registering them) or still use this class, which would be smarter. In the latter case,
|
||||
* it would only be needed to remove the hack that temporarily sets the context classloader to the appropriate,
|
||||
* bundle-related, class loader.
|
||||
*
|
||||
* Caveats:
|
||||
* <ul><li>
|
||||
* All factories are wrapped with an {@link OSGiScriptEngineFactory}. As Engines are not wrapped,
|
||||
* calls like
|
||||
* <code>
|
||||
* ScriptEngineManager osgiManager=new OSGiScriptEngineManager(context);<br>
|
||||
* ScriptEngine engine=osgiManager.getEngineByName("ruby");
|
||||
* ScriptEngineFactory factory=engine.getFactory() //this does not return the OSGiFactory wrapper
|
||||
* factory.getScriptEngine(); //this might fail, as it does not use OSGiScriptEngineFactory wrapper
|
||||
* </code>
|
||||
* might result in unexpected errors. Future versions may wrap the ScriptEngine with a OSGiScriptEngine to solve this
|
||||
* issue, but for the moment it is not needed.
|
||||
* </li>
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Imported from Apache Felix project.
|
||||
* Original file:
|
||||
* http://svn.apache.org/repos/asf/felix/trunk/mishell/src/main/java/org/apache/felix/mishell/OSGiScriptEngineManager.java
|
||||
*
|
||||
* @author Silvano Trinchero, www.freepath.it
|
||||
* <li>IDEMPIERE-3243 fixed class discovery to avoid comment lines
|
||||
*
|
||||
*/
|
||||
|
||||
public class OSGiScriptEngineManager extends ScriptEngineManager{
|
||||
private Bindings bindings;
|
||||
private Map <ScriptEngineManager, ClassLoader> classLoaders;
|
||||
private BundleContext context;
|
||||
|
||||
public OSGiScriptEngineManager(BundleContext context){
|
||||
this.context=context;
|
||||
bindings=new SimpleBindings();
|
||||
this.classLoaders=findManagers(context);
|
||||
}
|
||||
/**
|
||||
* This method is the only one that is visible and not part of the ScriptEngineManager class.
|
||||
* Its purpose is to find new managers that weren't available before, but keeping the globalScope bindings
|
||||
* set.
|
||||
* If you want to clean the bindings you can either get a fresh instance of OSGiScriptManager or
|
||||
* setting up a new bindings object.
|
||||
* This can be done with:
|
||||
* <code>
|
||||
* ScriptEngineManager manager=new OSGiScriptEngineManager(context);
|
||||
* (...)//do stuff
|
||||
* osgiManager=(OSGiScriptEngineManager)manager;//cast to ease reading
|
||||
* osgiManager.reloadManagers();
|
||||
*
|
||||
* manager.setBindings(new OSGiBindings());//or you can use your own bindings implementation
|
||||
*
|
||||
* </code>
|
||||
*
|
||||
*/
|
||||
public void reloadManagers(){
|
||||
this.classLoaders=findManagers(context);
|
||||
}
|
||||
|
||||
public Object get(String key) {
|
||||
return bindings.get(key);
|
||||
}
|
||||
|
||||
public Bindings getBindings() {
|
||||
return bindings;
|
||||
}
|
||||
|
||||
public ScriptEngine getEngineByExtension(String extension) {
|
||||
//TODO this is a hack to deal with context class loader issues
|
||||
ScriptEngine engine=null;
|
||||
for(ScriptEngineManager manager: classLoaders.keySet()){
|
||||
ClassLoader old=Thread.currentThread().getContextClassLoader();
|
||||
Thread.currentThread().setContextClassLoader(classLoaders.get(manager));
|
||||
engine=manager.getEngineByExtension(extension);
|
||||
Thread.currentThread().setContextClassLoader(old);
|
||||
if (engine!=null) break;
|
||||
}
|
||||
return engine;
|
||||
}
|
||||
|
||||
public ScriptEngine getEngineByMimeType(String mimeType) {
|
||||
//TODO this is a hack to deal with context class loader issues
|
||||
ScriptEngine engine=null;
|
||||
for(ScriptEngineManager manager: classLoaders.keySet()){
|
||||
ClassLoader old=Thread.currentThread().getContextClassLoader();
|
||||
Thread.currentThread().setContextClassLoader(classLoaders.get(manager));
|
||||
engine=manager.getEngineByMimeType(mimeType);
|
||||
Thread.currentThread().setContextClassLoader(old);
|
||||
if (engine!=null) break;
|
||||
}
|
||||
return engine;
|
||||
}
|
||||
|
||||
public ScriptEngine getEngineByName(String shortName) {
|
||||
//TODO this is a hack to deal with context class loader issues
|
||||
for(ScriptEngineManager manager: classLoaders.keySet()){
|
||||
ClassLoader old=Thread.currentThread().getContextClassLoader();
|
||||
Thread.currentThread().setContextClassLoader(classLoaders.get(manager));
|
||||
ScriptEngine engine=manager.getEngineByName(shortName);
|
||||
Thread.currentThread().setContextClassLoader(old);
|
||||
if (engine!=null){
|
||||
return new OSGiScriptEngine(engine, new OSGiScriptEngineFactory(engine.getFactory(), classLoaders.get(manager)));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public List<ScriptEngineFactory> getEngineFactories() {
|
||||
List<ScriptEngineFactory> osgiFactories=new ArrayList<ScriptEngineFactory>();
|
||||
for(ScriptEngineManager engineManager: classLoaders.keySet()){
|
||||
for (ScriptEngineFactory factory : engineManager.getEngineFactories()){
|
||||
osgiFactories.add(new OSGiScriptEngineFactory(factory, classLoaders.get(engineManager)));
|
||||
}
|
||||
}
|
||||
return osgiFactories;
|
||||
}
|
||||
|
||||
public void put(String key, Object value) {
|
||||
bindings.put(key, value);
|
||||
}
|
||||
|
||||
public void registerEngineExtension(String extension, ScriptEngineFactory factory) {
|
||||
for(ScriptEngineManager engineManager: classLoaders.keySet())
|
||||
engineManager.registerEngineExtension(extension, factory);
|
||||
}
|
||||
|
||||
public void registerEngineMimeType(String type, ScriptEngineFactory factory) {
|
||||
for(ScriptEngineManager engineManager: classLoaders.keySet())
|
||||
engineManager.registerEngineMimeType(type, factory);
|
||||
}
|
||||
|
||||
public void registerEngineName(String name, ScriptEngineFactory factory) {
|
||||
for(ScriptEngineManager engineManager: classLoaders.keySet())
|
||||
engineManager.registerEngineName(name, factory);
|
||||
}
|
||||
/**
|
||||
* Follows the same behavior of @link javax.script.ScriptEngineManager#setBindings(Bindings)
|
||||
* This means that the same bindings are applied to all the underlying managers.
|
||||
* @param bindings
|
||||
*/
|
||||
public void setBindings(Bindings bindings) {
|
||||
this.bindings=bindings;
|
||||
for(ScriptEngineManager manager: classLoaders.keySet()){
|
||||
manager.setBindings(bindings);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Map<ScriptEngineManager, ClassLoader> findManagers(BundleContext context) {
|
||||
|
||||
Map<ScriptEngineManager, ClassLoader> managers=new HashMap<ScriptEngineManager, ClassLoader>();
|
||||
|
||||
List<ScriptEngineFactory> seFactoryList =
|
||||
Service.locator().list(ScriptEngineFactory.class).getServices();
|
||||
if (seFactoryList != null) {
|
||||
for(ScriptEngineFactory seFactory : seFactoryList) {
|
||||
ClassLoader factoryLoader = seFactory.getClass().getClassLoader();
|
||||
ScriptEngineManager manager=new ScriptEngineManager(factoryLoader);
|
||||
manager.setBindings(bindings);
|
||||
managers.put(manager, factoryLoader);
|
||||
}
|
||||
}
|
||||
|
||||
return managers;
|
||||
}
|
||||
|
||||
}
|
|
@ -29,6 +29,7 @@ import java.util.logging.Level;
|
|||
import javax.script.ScriptEngine;
|
||||
|
||||
import org.adempiere.base.Core;
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.compiere.model.MProcess;
|
||||
import org.compiere.model.MRule;
|
||||
import org.compiere.process.ProcessCall;
|
||||
|
@ -217,6 +218,9 @@ public final class ProcessUtil {
|
|||
}
|
||||
|
||||
ScriptEngine engine = rule.getScriptEngine();
|
||||
if (engine == null) {
|
||||
throw new AdempiereException("Engine not found: " + rule.getEngineName());
|
||||
}
|
||||
|
||||
// Window context are W_
|
||||
// Login context are G_
|
||||
|
|
|
@ -415,16 +415,6 @@ public class Doc_Invoice extends Doc
|
|||
serviceAmt = serviceAmt.add(amt);
|
||||
}
|
||||
}
|
||||
// Set Locations
|
||||
FactLine[] fLines = fact.getLines();
|
||||
for (int i = 0; i < fLines.length; i++)
|
||||
{
|
||||
if (fLines[i] != null)
|
||||
{
|
||||
fLines[i].setLocationFromOrg(fLines[i].getAD_Org_ID(), true); // from Loc
|
||||
fLines[i].setLocationFromBPartner(getC_BPartner_Location_ID(), false); // to Loc
|
||||
}
|
||||
}
|
||||
|
||||
// Receivables DR
|
||||
int receivables_ID = getValidCombination_ID(Doc.ACCTTYPE_C_Receivable, as);
|
||||
|
@ -446,6 +436,17 @@ public class Doc_Invoice extends Doc
|
|||
if (serviceAmt.signum() != 0)
|
||||
fact.createLine(null, MAccount.get(getCtx(), receivablesServices_ID),
|
||||
getC_Currency_ID(), serviceAmt, null);
|
||||
|
||||
// Set Locations
|
||||
FactLine[] fLines = fact.getLines();
|
||||
for (int i = 0; i < fLines.length; i++)
|
||||
{
|
||||
if (fLines[i] != null)
|
||||
{
|
||||
fLines[i].setLocationFromOrg(fLines[i].getAD_Org_ID(), true); // from Loc
|
||||
fLines[i].setLocationFromBPartner(getC_BPartner_Location_ID(), false); // to Loc
|
||||
}
|
||||
}
|
||||
}
|
||||
// ARC
|
||||
else if (getDocumentType().equals(DOCTYPE_ARCredit))
|
||||
|
@ -496,16 +497,7 @@ public class Doc_Invoice extends Doc
|
|||
serviceAmt = serviceAmt.add(amt);
|
||||
}
|
||||
}
|
||||
// Set Locations
|
||||
FactLine[] fLines = fact.getLines();
|
||||
for (int i = 0; i < fLines.length; i++)
|
||||
{
|
||||
if (fLines[i] != null)
|
||||
{
|
||||
fLines[i].setLocationFromOrg(fLines[i].getAD_Org_ID(), true); // from Loc
|
||||
fLines[i].setLocationFromBPartner(getC_BPartner_Location_ID(), false); // to Loc
|
||||
}
|
||||
}
|
||||
|
||||
// Receivables CR
|
||||
int receivables_ID = getValidCombination_ID (Doc.ACCTTYPE_C_Receivable, as);
|
||||
int receivablesServices_ID = getValidCombination_ID (Doc.ACCTTYPE_C_Receivable_Services, as);
|
||||
|
@ -526,6 +518,17 @@ public class Doc_Invoice extends Doc
|
|||
if (serviceAmt.signum() != 0)
|
||||
fact.createLine(null, MAccount.get(getCtx(), receivablesServices_ID),
|
||||
getC_Currency_ID(), null, serviceAmt);
|
||||
|
||||
// Set Locations
|
||||
FactLine[] fLines = fact.getLines();
|
||||
for (int i = 0; i < fLines.length; i++)
|
||||
{
|
||||
if (fLines[i] != null)
|
||||
{
|
||||
fLines[i].setLocationFromOrg(fLines[i].getAD_Org_ID(), true); // from Loc
|
||||
fLines[i].setLocationFromBPartner(getC_BPartner_Location_ID(), false); // to Loc
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ** API
|
||||
|
@ -600,16 +603,6 @@ public class Doc_Invoice extends Doc
|
|||
line.getDescription(), getTrxName());
|
||||
}
|
||||
}
|
||||
// Set Locations
|
||||
FactLine[] fLines = fact.getLines();
|
||||
for (int i = 0; i < fLines.length; i++)
|
||||
{
|
||||
if (fLines[i] != null)
|
||||
{
|
||||
fLines[i].setLocationFromBPartner(getC_BPartner_Location_ID(), true); // from Loc
|
||||
fLines[i].setLocationFromOrg(fLines[i].getAD_Org_ID(), false); // to Loc
|
||||
}
|
||||
}
|
||||
|
||||
// Liability CR
|
||||
int payables_ID = getValidCombination_ID (Doc.ACCTTYPE_V_Liability, as);
|
||||
|
@ -631,6 +624,18 @@ public class Doc_Invoice extends Doc
|
|||
if (serviceAmt.signum() != 0)
|
||||
fact.createLine(null, MAccount.get(getCtx(), payablesServices_ID),
|
||||
getC_Currency_ID(), null, serviceAmt);
|
||||
|
||||
// Set Locations
|
||||
FactLine[] fLines = fact.getLines();
|
||||
for (int i = 0; i < fLines.length; i++)
|
||||
{
|
||||
if (fLines[i] != null)
|
||||
{
|
||||
fLines[i].setLocationFromBPartner(getC_BPartner_Location_ID(), true); // from Loc
|
||||
fLines[i].setLocationFromOrg(fLines[i].getAD_Org_ID(), false); // to Loc
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
updateProductPO(as); // Only API
|
||||
}
|
||||
|
@ -705,16 +710,7 @@ public class Doc_Invoice extends Doc
|
|||
line.getDescription(), getTrxName());
|
||||
}
|
||||
}
|
||||
// Set Locations
|
||||
FactLine[] fLines = fact.getLines();
|
||||
for (int i = 0; i < fLines.length; i++)
|
||||
{
|
||||
if (fLines[i] != null)
|
||||
{
|
||||
fLines[i].setLocationFromBPartner(getC_BPartner_Location_ID(), true); // from Loc
|
||||
fLines[i].setLocationFromOrg(fLines[i].getAD_Org_ID(), false); // to Loc
|
||||
}
|
||||
}
|
||||
|
||||
// Liability DR
|
||||
int payables_ID = getValidCombination_ID (Doc.ACCTTYPE_V_Liability, as);
|
||||
int payablesServices_ID = getValidCombination_ID (Doc.ACCTTYPE_V_Liability_Services, as);
|
||||
|
@ -735,6 +731,17 @@ public class Doc_Invoice extends Doc
|
|||
if (serviceAmt.signum() != 0)
|
||||
fact.createLine(null, MAccount.get(getCtx(), payablesServices_ID),
|
||||
getC_Currency_ID(), serviceAmt, null);
|
||||
|
||||
// Set Locations
|
||||
FactLine[] fLines = fact.getLines();
|
||||
for (int i = 0; i < fLines.length; i++)
|
||||
{
|
||||
if (fLines[i] != null)
|
||||
{
|
||||
fLines[i].setLocationFromBPartner(getC_BPartner_Location_ID(), true); // from Loc
|
||||
fLines[i].setLocationFromOrg(fLines[i].getAD_Org_ID(), false); // to Loc
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -156,7 +156,7 @@ public class Doc_MatchInv extends Doc
|
|||
setC_Currency_ID (as.getC_Currency_ID());
|
||||
boolean isInterOrg = isInterOrg(as);
|
||||
|
||||
/** Needs to be handeled in PO Matching as no Receipt info
|
||||
/** Needs to be handled in PO Matching as no Receipt info
|
||||
if (m_pc.isService())
|
||||
{
|
||||
log.fine("Service - skipped");
|
||||
|
@ -168,8 +168,7 @@ public class Doc_MatchInv extends Doc
|
|||
// NotInvoicedReceipt DR
|
||||
// From Receipt
|
||||
BigDecimal multiplier = getQty()
|
||||
.divide(m_receiptLine.getMovementQty(), 12, RoundingMode.HALF_UP)
|
||||
.abs();
|
||||
.divide(m_receiptLine.getMovementQty(), 12, RoundingMode.HALF_UP);
|
||||
FactLine dr = fact.createLine (null,
|
||||
getAccount(Doc.ACCTTYPE_NotInvoicedReceipts, as),
|
||||
as.getC_Currency_ID(), Env.ONE, null); // updated below
|
||||
|
@ -192,12 +191,9 @@ public class Doc_MatchInv extends Doc
|
|||
}
|
||||
else
|
||||
{
|
||||
BigDecimal effMultiplier = multiplier;
|
||||
if (getQty().signum() < 0)
|
||||
effMultiplier = effMultiplier.negate();
|
||||
if (!dr.updateReverseLine (MInOut.Table_ID, // Amt updated
|
||||
m_receiptLine.getM_InOut_ID(), m_receiptLine.getM_InOutLine_ID(),
|
||||
effMultiplier))
|
||||
multiplier))
|
||||
{
|
||||
p_Error = "Mat.Receipt not posted yet";
|
||||
return null;
|
||||
|
@ -213,8 +209,7 @@ public class Doc_MatchInv extends Doc
|
|||
expense = m_pc.getAccount(ProductCost.ACCTTYPE_P_Expense, as);
|
||||
BigDecimal LineNetAmt = m_invoiceLine.getLineNetAmt();
|
||||
multiplier = getQty()
|
||||
.divide(m_invoiceLine.getQtyInvoiced(), 12, RoundingMode.HALF_UP)
|
||||
.abs();
|
||||
.divide(m_invoiceLine.getQtyInvoiced(), 12, RoundingMode.HALF_UP);
|
||||
if (multiplier.compareTo(Env.ONE) != 0)
|
||||
LineNetAmt = LineNetAmt.multiply(multiplier);
|
||||
if (m_pc.isService())
|
||||
|
@ -246,13 +241,10 @@ public class Doc_MatchInv extends Doc
|
|||
else
|
||||
{
|
||||
cr.setQty(getQty().negate());
|
||||
BigDecimal effMultiplier = multiplier;
|
||||
if (getQty().signum() < 0)
|
||||
effMultiplier = effMultiplier.negate();
|
||||
|
||||
// Set AmtAcctCr/Dr from Invoice (sets also Project)
|
||||
if (!cr.updateReverseLine (MInvoice.Table_ID, // Amt updated
|
||||
m_invoiceLine.getC_Invoice_ID(), m_invoiceLine.getC_InvoiceLine_ID(), effMultiplier))
|
||||
m_invoiceLine.getC_Invoice_ID(), m_invoiceLine.getC_InvoiceLine_ID(), multiplier))
|
||||
{
|
||||
p_Error = "Invoice not posted yet";
|
||||
return null;
|
||||
|
@ -454,8 +446,7 @@ public class Doc_MatchInv extends Doc
|
|||
|
||||
BigDecimal LineNetAmt = m_invoiceLine.getLineNetAmt();
|
||||
BigDecimal multiplier = getQty()
|
||||
.divide(m_invoiceLine.getQtyInvoiced(), 12, RoundingMode.HALF_UP)
|
||||
.abs();
|
||||
.divide(m_invoiceLine.getQtyInvoiced(), 12, RoundingMode.HALF_UP);
|
||||
if (multiplier.compareTo(Env.ONE) != 0)
|
||||
LineNetAmt = LineNetAmt.multiply(multiplier);
|
||||
|
||||
|
@ -470,7 +461,7 @@ public class Doc_MatchInv extends Doc
|
|||
{
|
||||
tQty = tQty.add(mInv[i].getQty());
|
||||
multiplier = mInv[i].getQty()
|
||||
.divide(m_invoiceLine.getQtyInvoiced(), 12, RoundingMode.HALF_UP).abs();
|
||||
.divide(m_invoiceLine.getQtyInvoiced(), 12, RoundingMode.HALF_UP);
|
||||
tAmt = tAmt.add(m_invoiceLine.getLineNetAmt().multiply(multiplier));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2880,6 +2880,11 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
|||
}
|
||||
|
||||
ScriptEngine engine = rule.getScriptEngine();
|
||||
if (engine == null) {
|
||||
retValue = "Callout Invalid, engine not found: " + rule.getEngineName();
|
||||
log.log(Level.SEVERE, retValue);
|
||||
return retValue;
|
||||
}
|
||||
|
||||
// Window context are W_
|
||||
// Login context are G_
|
||||
|
|
|
@ -274,7 +274,25 @@ public class MColumn extends X_AD_Column
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( displayType == DisplayType.TableDir ||
|
||||
(displayType == DisplayType.Search && getAD_Reference_Value_ID() <= 0))
|
||||
{
|
||||
// verify the foreign table exists
|
||||
String foreignTableName = getReferenceTableName();
|
||||
MTable foreignTable = MTable.get(getCtx(), foreignTableName);
|
||||
if (foreignTable == null || foreignTable.getAD_Table_ID() <= 0) {
|
||||
log.saveError("Error", Msg.getMsg(getCtx(), "NotReferenceTable", new Object[] {getColumnName()}));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (displayType == DisplayType.Table && getAD_Reference_Value_ID() <= 0)
|
||||
{
|
||||
log.saveError("FillMandatory", Msg.getElement(getCtx(), "AD_Reference_Value_ID"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (displayType != DisplayType.Button)
|
||||
{
|
||||
if (! ISTOOLBARBUTTON_Window.equals(getIsToolbarButton()))
|
||||
|
|
|
@ -68,7 +68,7 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -9210893813732918522L;
|
||||
private static final long serialVersionUID = -3191227310812025813L;
|
||||
|
||||
/**
|
||||
* Get Payments Of BPartner
|
||||
|
@ -725,7 +725,7 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
|||
}
|
||||
m_lines = null;
|
||||
} // renumberLines
|
||||
|
||||
|
||||
/**
|
||||
* Copy Lines From other Invoice.
|
||||
* @param otherInvoice invoice
|
||||
|
@ -733,7 +733,19 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
|||
* @param setOrder set order links
|
||||
* @return number of lines copied
|
||||
*/
|
||||
public int copyLinesFrom (MInvoice otherInvoice, boolean counter, boolean setOrder)
|
||||
public int copyLinesFrom (MInvoice otherInvoice, boolean counter, boolean setOrder){
|
||||
return copyLinesFrom (otherInvoice, counter, setOrder, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy Lines From other Invoice.
|
||||
* @param otherInvoice invoice
|
||||
* @param counter create counter links
|
||||
* @param setOrder set order links
|
||||
* @param copyClientOrg copy also Client and Org
|
||||
* @return number of lines copied
|
||||
*/
|
||||
public int copyLinesFrom (MInvoice otherInvoice, boolean counter, boolean setOrder, boolean copyClientOrg)
|
||||
{
|
||||
if (isProcessed() || isPosted() || otherInvoice == null)
|
||||
return 0;
|
||||
|
@ -743,7 +755,7 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
|||
{
|
||||
MInvoiceLine line = new MInvoiceLine (getCtx(), 0, get_TrxName());
|
||||
MInvoiceLine fromLine = fromLines[i];
|
||||
if (counter) // header
|
||||
if (counter || !copyClientOrg) // header
|
||||
PO.copyValues (fromLine, line, getAD_Client_ID(), getAD_Org_ID());
|
||||
else
|
||||
PO.copyValues (fromLine, line, fromLine.getAD_Client_ID(), fromLine.getAD_Org_ID());
|
||||
|
|
|
@ -230,9 +230,15 @@ public class MMatchInv extends X_M_MatchInv
|
|||
{
|
||||
MInOutLine line = new MInOutLine(getCtx(), getM_InOutLine_ID(), get_TrxName());
|
||||
BigDecimal matchedQty = DB.getSQLValueBD(get_TrxName(), "SELECT Coalesce(SUM(Qty),0) FROM M_MatchInv WHERE M_InOutLine_ID=?" , getM_InOutLine_ID());
|
||||
if (matchedQty != null && matchedQty.compareTo(line.getMovementQty()) > 0)
|
||||
BigDecimal matchedQtyDB = matchedQty;
|
||||
BigDecimal movementQty = line.getMovementQty();
|
||||
if (movementQty.signum() < 0) {
|
||||
movementQty = movementQty.negate();
|
||||
matchedQty = matchedQty.negate();
|
||||
}
|
||||
if (matchedQty != null && matchedQty.compareTo(movementQty) > 0)
|
||||
{
|
||||
throw new IllegalStateException("Total matched qty > movement qty. MatchedQty="+matchedQty+", MovementQty="+line.getMovementQty()+", Line="+line);
|
||||
throw new IllegalStateException("Total matched qty > movement qty. MatchedQty="+matchedQtyDB+", MovementQty="+line.getMovementQty()+", Line="+line);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -240,9 +246,15 @@ public class MMatchInv extends X_M_MatchInv
|
|||
{
|
||||
MInvoiceLine line = new MInvoiceLine(getCtx(), getC_InvoiceLine_ID(), get_TrxName());
|
||||
BigDecimal matchedQty = DB.getSQLValueBD(get_TrxName(), "SELECT Coalesce(SUM(Qty),0) FROM M_MatchInv WHERE C_InvoiceLine_ID=?" , getC_InvoiceLine_ID());
|
||||
if (matchedQty != null && matchedQty.compareTo(line.getQtyInvoiced()) > 0)
|
||||
BigDecimal matchedQtyDB = matchedQty;
|
||||
BigDecimal qtyInvoiced = line.getQtyInvoiced();
|
||||
if (qtyInvoiced.signum() < 0) {
|
||||
qtyInvoiced = qtyInvoiced.negate();
|
||||
matchedQty = matchedQty.negate();
|
||||
}
|
||||
if (matchedQty != null && matchedQty.compareTo(qtyInvoiced) > 0)
|
||||
{
|
||||
throw new IllegalStateException("Total matched qty > invoiced qty. MatchedQty="+matchedQty+", InvoicedQty="+line.getQtyInvoiced()+", Line="+line);
|
||||
throw new IllegalStateException("Total matched qty > invoiced qty. MatchedQty="+matchedQtyDB+", InvoicedQty="+line.getQtyInvoiced()+", Line="+line);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -28,6 +28,7 @@ import java.util.logging.Level;
|
|||
import javax.script.ScriptEngine;
|
||||
|
||||
import org.adempiere.apps.graph.GraphColumn;
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.adempiere.util.MeasureInterface;
|
||||
import org.compiere.util.CCache;
|
||||
import org.compiere.util.DB;
|
||||
|
@ -613,6 +614,9 @@ public class MMeasure extends X_PA_Measure
|
|||
break;
|
||||
}
|
||||
ScriptEngine engine = rule.getScriptEngine();
|
||||
if (engine == null) {
|
||||
throw new AdempiereException("Engine not found: " + rule.getEngineName());
|
||||
}
|
||||
MRule.setContext(engine, po.getCtx(), 0);
|
||||
engine.put(MRule.ARGUMENTS_PREFIX + "Ctx", po.getCtx());
|
||||
engine.put(MRule.ARGUMENTS_PREFIX + "PO", po);
|
||||
|
|
|
@ -34,8 +34,6 @@ import org.compiere.util.Util;
|
|||
/**
|
||||
* Persistent Rule Model
|
||||
* @author Carlos Ruiz
|
||||
* @author Silvano Trinchero, www.freepath.it
|
||||
* <li>IDEMPIERE-3243 refactored getScriptEngine to use Core.getScriptEngine
|
||||
* @version $Id: MRule.java
|
||||
*
|
||||
*/
|
||||
|
@ -196,12 +194,9 @@ public class MRule extends X_AD_Rule
|
|||
* @return ScriptEngine
|
||||
*/
|
||||
public ScriptEngine getScriptEngine() {
|
||||
|
||||
String engineName = getEngineName();
|
||||
|
||||
if(engineName != null)
|
||||
if (engineName != null)
|
||||
engine = Core.getScriptEngine(engineName);
|
||||
|
||||
return engine;
|
||||
}
|
||||
|
||||
|
|
|
@ -42,14 +42,15 @@ public class MSysConfig extends X_AD_SysConfig
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 2856526441538434702L;
|
||||
private static final long serialVersionUID = -1401329788730986024L;
|
||||
|
||||
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 ALLOCATION_DESCRIPTION = "ALLOCATION_DESCRIPTION";
|
||||
public static final String ALLOW_APPLY_PAYMENT_TO_CREDITMEMO = "ALLOW_APPLY_PAYMENT_TO_CREDITMEMO";
|
||||
public static final String ALLOW_OVER_APPLIED_PAYMENT = "ALLOW_OVER_APPLIED_PAYMENT";
|
||||
public static final String ALogin_ShowOneRole = "ALogin_ShowOneRole";
|
||||
public static final String ALogin_ShowDate = "ALogin_ShowDate";
|
||||
public static final String ALogin_ShowOneRole = "ALogin_ShowOneRole"; // deprecated
|
||||
public static final String APPLICATION_DATABASE_VERSION = "APPLICATION_DATABASE_VERSION";
|
||||
public static final String APPLICATION_DATABASE_VERSION_SHOWN = "APPLICATION_DATABASE_VERSION_SHOWN";
|
||||
public static final String APPLICATION_HOST_SHOWN = "APPLICATION_HOST_SHOWN";
|
||||
|
|
|
@ -35,6 +35,7 @@ import org.adempiere.base.event.IEventManager;
|
|||
import org.adempiere.base.event.IEventTopics;
|
||||
import org.adempiere.base.event.ImportEventData;
|
||||
import org.adempiere.base.event.LoginEventData;
|
||||
import org.adempiere.exceptions.AdempiereException;
|
||||
import org.adempiere.model.ImportValidator;
|
||||
import org.adempiere.process.ImportProcess;
|
||||
import org.compiere.acct.Fact;
|
||||
|
@ -241,6 +242,9 @@ public class ModelValidationEngine
|
|||
String error;
|
||||
try {
|
||||
ScriptEngine engine = loginRule.getScriptEngine();
|
||||
if (engine == null) {
|
||||
throw new AdempiereException("Engine not found: " + loginRule.getEngineName());
|
||||
}
|
||||
|
||||
MRule.setContext(engine, Env.getCtx(), 0); // no window
|
||||
// now add the method arguments to the engine
|
||||
|
@ -378,6 +382,9 @@ public class ModelValidationEngine
|
|||
String error;
|
||||
try {
|
||||
ScriptEngine engine = rule.getScriptEngine();
|
||||
if (engine == null) {
|
||||
throw new AdempiereException("Engine not found: " + rule.getEngineName());
|
||||
}
|
||||
|
||||
MRule.setContext(engine, po.getCtx(), 0); // no window
|
||||
// now add the method arguments to the engine
|
||||
|
@ -542,6 +549,9 @@ public class ModelValidationEngine
|
|||
String error;
|
||||
try {
|
||||
ScriptEngine engine = rule.getScriptEngine();
|
||||
if (engine == null) {
|
||||
throw new AdempiereException("Engine not found: " + rule.getEngineName());
|
||||
}
|
||||
|
||||
MRule.setContext(engine, po.getCtx(), 0); // no window
|
||||
// now add the method arguments to the engine
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -85,13 +85,13 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 372661654078492488L;
|
||||
private static final long serialVersionUID = 4486118071892173802L;
|
||||
|
||||
protected LoginWindow wndLogin;
|
||||
protected Login login;
|
||||
|
||||
protected Combobox lstRole, lstClient, lstOrganisation, lstWarehouse;
|
||||
protected Label lblRole, lblClient, lblOrganisation, lblWarehouse, lblDate;
|
||||
protected Label lblRole, lblClient, lblDef, lblOrganisation, lblWarehouse, lblDate;
|
||||
protected WDateEditor lstDate;
|
||||
protected Button btnOk, btnCancel;
|
||||
|
||||
|
@ -156,12 +156,10 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
|||
AuFocus auf = null;
|
||||
if (lstClient.getItemCount() > 1) {
|
||||
auf = new AuFocus(lstClient);
|
||||
} else if (lstRole.getItemCount() > 1) {
|
||||
auf = new AuFocus(lstRole);
|
||||
} else {
|
||||
if (MSysConfig.getBooleanValue(MSysConfig.ALogin_ShowOneRole, true) || lstRole.getItemCount() > 1) {
|
||||
auf = new AuFocus(lstRole);
|
||||
} else {
|
||||
auf = new AuFocus(lstOrganisation);
|
||||
}
|
||||
auf = new AuFocus(lstOrganisation);
|
||||
}
|
||||
Clients.response(auf);
|
||||
} else {
|
||||
|
@ -225,6 +223,19 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
|||
tr.appendChild(td);
|
||||
td.appendChild(lstRole);
|
||||
|
||||
tr = new Tr();
|
||||
tr.setId("rowLabelDefault");
|
||||
table.appendChild(tr);
|
||||
//td = new Td();
|
||||
//tr.appendChild(td);
|
||||
td = new Td();
|
||||
tr.appendChild(td);
|
||||
td.setSclass(ITheme.LOGIN_LABEL_CLASS);
|
||||
div = new Div();
|
||||
div.setStyle("text-align: right; text-decoration: underline");
|
||||
div.appendChild(lblDef);
|
||||
td.appendChild(div);
|
||||
|
||||
tr = new Tr();
|
||||
tr.setId("rowOrganisation");
|
||||
table.appendChild(tr);
|
||||
|
@ -288,6 +299,10 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
|||
lblRole.setId("lblRole");
|
||||
lblRole.setValue(Msg.getMsg(language,"Role"));
|
||||
|
||||
lblDef = new Label();
|
||||
lblDef.setId("lblDef");
|
||||
lblDef.setValue(Msg.getMsg(language,"Defaults"));
|
||||
|
||||
lblOrganisation = new Label();
|
||||
lblOrganisation.setId("lblOrganisation");
|
||||
lblOrganisation.setValue(Msg.getMsg(language,"Organization"));
|
||||
|
@ -373,14 +388,19 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
|||
//
|
||||
|
||||
if (m_clientKNPairs!=null && m_clientKNPairs.length == 1) {
|
||||
// don't show client if is just one
|
||||
// disable client if is just one
|
||||
lstClient.setSelectedIndex(0);
|
||||
lblClient.setVisible(false);
|
||||
lstClient.setVisible(false);
|
||||
lstClient.setEnabled(false);
|
||||
} else {
|
||||
lblClient.setVisible(true);
|
||||
lstClient.setVisible(true);
|
||||
lstClient.setEnabled(true);
|
||||
}
|
||||
|
||||
// Disable date combo-box at login screen
|
||||
if (!MSysConfig.getBooleanValue(MSysConfig.ALogin_ShowDate, true))
|
||||
{
|
||||
lstDate.setReadWrite(false);
|
||||
}
|
||||
|
||||
setUserID();
|
||||
updateRoleList();
|
||||
|
||||
|
@ -425,18 +445,14 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
|||
|
||||
//force reload of default role
|
||||
MRole.getDefault(m_ctx, true);
|
||||
|
||||
// If we have only one role, we can hide the combobox - metas-2009_0021_AP1_G94
|
||||
if (m_clientKNPairs.length == 1 && lstRole.getItemCount() == 1 && ! MSysConfig.getBooleanValue(MSysConfig.ALogin_ShowOneRole, true))
|
||||
|
||||
// If we have only one role, we can make readonly the combobox
|
||||
if (lstRole.getItemCount() == 1)
|
||||
{
|
||||
lstRole.setSelectedIndex(0);
|
||||
lblRole.setVisible(false);
|
||||
lstRole.setVisible(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
lblRole.setVisible(true);
|
||||
lstRole.setVisible(true);
|
||||
lstRole.setEnabled(false);
|
||||
} else {
|
||||
lstRole.setEnabled(true);
|
||||
}
|
||||
}
|
||||
setUserID();
|
||||
|
@ -477,6 +493,15 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
|||
lstOrganisation.setSelectedIndex(0);
|
||||
}
|
||||
}
|
||||
|
||||
// If we have only one org, we can make readonly the combobox
|
||||
if (lstOrganisation.getItemCount() == 1)
|
||||
{
|
||||
lstOrganisation.setSelectedIndex(0);
|
||||
lstOrganisation.setEnabled(false);
|
||||
} else {
|
||||
lstOrganisation.setEnabled(true);
|
||||
}
|
||||
//
|
||||
}
|
||||
updateWarehouseList();
|
||||
|
|
Loading…
Reference in New Issue