- Este debate está vacío.
-
AutorEntradas
-
6 noviembre, 2015 a las 10:47 pm #33137Saulo GilMiembro
Existen muchos reportes que tienen un cuadro de búsqueda de EC junto con un desplegable Reporte de con las opciones: Cliente, Proveedor, Ambos. A la fecha, este cuadro de búsqueda ignora el valor del desplegable, trayendo siempre clientes o siempre proveedores, de acuerdo a si se está tratando (o no) con una transacción de ventas. Para solucionar este problema de usabilidad creé el siguiente parche, el cual es compatible con las versiones web y desktop.
Code:diff –git base/src/org/openXpertya/model/MReference.java base/src/org/openXpertya/model/MReference.java
index b339459..823ee26 100644
— base/src/org/openXpertya/model/MReference.java
+++ base/src/org/openXpertya/model/MReference.java
@@ -4,8 +4,10 @@ import java.sql.ResultSet;
import java.util.Properties;import org.openXpertya.util.DB;
+import org.openXpertya.util.Env;public class MReference extends X_AD_Reference {
+ private final static int REF_ACCOUNT_TYPE = 1000072;public MReference(Properties ctx, ResultSet rs, String trxName) {
super(ctx, rs, trxName);
@@ -24,5 +26,26 @@ public class MReference extends X_AD_Reference {
{
return DB.getSQLValueString(null, ” SELECT name FROM AD_Reference WHERE AD_Reference_ID = ? “, refID);
}
+
+ // Some (core) references might need to adjust values in the environment
+ public static void referenceChanged(Properties ctx, int WindowNo, int referenceID, Object value ){
+ if(referenceID==REF_ACCOUNT_TYPE)
+ onAccountTypeSelected(ctx, WindowNo, referenceID, value == null ? null : value.toString());
+ }
+
+ private static void onAccountTypeSelected(Properties ctx, int WindowNo, int referenceID, String value){
+ if(value==null)
+ return;
+
+ String newIsSOTrx = null;
+
+ if(value.equals(“C”))
+ newIsSOTrx = “Y”;
+ else if(value.equals(“V”))
+ newIsSOTrx = “N”;
+
+ if(newIsSOTrx!=null)
+ Env.setContext(ctx, WindowNo, “IsSOTrx”, newIsSOTrx);
+ }}
diff –git client/Src/org/openXpertya/grid/ed/VLookup.java client/Src/org/openXpertya/grid/ed/VLookup.java
index 77a9a6c..3866b8b 100644
— client/Src/org/openXpertya/grid/ed/VLookup.java
+++ client/Src/org/openXpertya/grid/ed/VLookup.java
@@ -60,6 +60,7 @@ import org.openXpertya.model.MField;
import org.openXpertya.model.MLookup;
import org.openXpertya.model.MLookupFactory;
import org.openXpertya.model.MQuery;
+import org.openXpertya.model.MReference;
import org.openXpertya.model.MRole;
import org.openXpertya.model.MTab;
import org.openXpertya.model.X_AD_Table;
@@ -773,6 +774,11 @@ public class VLookup extends JComponent implements VEditor,ActionListener,FocusL
actionCombo( null ); // data binding (calls setValue again)
m_value = null;
}
+ }else if(m_lookup instanceof MLookup){
+ // let MReference change environment variables if needed
+ MLookup ml = (MLookup) m_lookup;
+ MReference.referenceChanged(Env.getCtx(), m_lookup.getWindowNo()
+ , ml.getAD_Reference_Value_ID(), value);
}m_settingValue = false;
diff –git zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java
index 62a3d2c..0e647dc 100644
— zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java
+++ zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java
@@ -31,6 +31,8 @@ import org.adempiere.webui.event.ValueChangeEvent;
import org.adempiere.webui.window.WFieldRecordInfo;
import org.openXpertya.model.MField;
import org.openXpertya.model.Lookup;
+import org.openXpertya.model.MLookup;
+import org.openXpertya.model.MReference;
import org.openXpertya.model.MRole;
import org.openXpertya.util.CLogger;
import org.openXpertya.util.DisplayType;
@@ -187,7 +189,14 @@ ContextMenuListener, IZoomableEditor
if (value != null && (value instanceof Integer || value instanceof String))
{– getComponent().setValue(value);
+ getComponent().setValue(value);
+
+ if(lookup instanceof MLookup){
+ MLookup ml = (MLookup) lookup;
+ MReference.referenceChanged(Env.getCtx(), lookup.getWindowNo()
+ , ml.getAD_Reference_Value_ID(), value);
+ }
+
if (!getComponent().isSelected(value))
{
if (isReadWrite() && lookup != null)Aparentemente no sobran lugares donde meter estos hooks. Si alguien tiene una idea mejor, bienvenida sea.
Saludos
-
AutorEntradas
- Debes estar registrado para responder a este debate.