diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFactReconcile.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFactReconcile.java index be06bff1ef..53ac423184 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFactReconcile.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFactReconcile.java @@ -94,7 +94,7 @@ implements IFormController, EventListener, WTableModelListener, ValueChan private Label labelReconciled = new Label(); private Checkbox isReconciled = new Checkbox(); private Label labelAccount = new Label(); - private Listbox fieldAccount = null; + private Listbox fieldAccount = new Listbox(); private Label labelBPartner = new Label(); private WSearchEditor fieldBPartner = null; @@ -252,6 +252,7 @@ implements IFormController, EventListener, WTableModelListener, ValueChan fieldAcctSchema = new WTableDirEditor("C_AcctSchema_ID", true, false, true, lookupAS); fieldAcctSchema.setValue(MClient.get(Env.getCtx()).getAcctSchema().getC_AcctSchema_ID()); fieldAcctSchema.addValueChangeListener(this); + m_C_AcctSchema_ID = (Integer)fieldAcctSchema.getValue(); // Organization AD_Column_ID = FactReconcile.col_AD_Org_ID; //C_Period.AD_Org_ID (needed to allow org 0) @@ -273,17 +274,25 @@ implements IFormController, EventListener, WTableModelListener, ValueChan fieldProduct = new WSearchEditor("M_Product_ID", false, false, true, lookupProduct); // Account + loadAccounts(); + } + + private void loadAccounts(){ + fieldAccount.removeAllItems(); Vector vector = getAccount(); - KeyNamePair[] listAccount = new KeyNamePair[vector.size()]; for(int i=0;i, WTableModelListener, ValueChan m_AD_Org_ID = (Integer)fieldOrg.getValue(); else m_AD_Org_ID = 0; - - if(fieldAcctSchema.getValue()!=null) - m_C_AcctSchema_ID = (Integer)fieldAcctSchema.getValue(); - else - m_C_AcctSchema_ID = 0; m_isReconciled = isReconciled.isChecked(); @@ -375,8 +379,17 @@ implements IFormController, EventListener, WTableModelListener, ValueChan @Override public void valueChange(ValueChangeEvent evt) { - // TODO Auto-generated method stub + String name = evt.getPropertyName(); + Object value = evt.getNewValue(); + if (log.isLoggable(Level.CONFIG)) log.config(name + "=" + value); + if (value == null) + return; + + if (name.equals("C_AcctSchema_ID")) { + m_C_AcctSchema_ID = ((Integer)value).intValue(); + loadAccounts(); + } } @Override diff --git a/org.adempiere.ui/src/org/compiere/apps/form/FactReconcile.java b/org.adempiere.ui/src/org/compiere/apps/form/FactReconcile.java index a07b3f11ee..05b68014b2 100644 --- a/org.adempiere.ui/src/org/compiere/apps/form/FactReconcile.java +++ b/org.adempiere.ui/src/org/compiere/apps/form/FactReconcile.java @@ -260,8 +260,9 @@ public class FactReconcile { "SELECT ev.C_ElementValue_ID, ev.Value || ' ' || ev.Name FROM C_ElementValue ev", "ev", MRole.SQL_FULLYQUALIFIED, MRole.SQL_RO) + "AND ev.IsActive='Y' AND ev.IsSummary='N' " - + "AND ev.C_Element_ID IN (SELECT C_Element_ID FROM C_AcctSchema_Element ase " - + "WHERE ase.ElementType='AC' AND ase.AD_Client_ID=" + m_AD_Client_ID + ") " + + "AND EXISTS (SELECT 1 FROM C_AcctSchema_Element ase " + + "WHERE ase.C_Element_ID=ev.C_Element_ID AND ase.ElementType='AC' " + + "AND ase.C_AcctSchema_ID=" + m_C_AcctSchema_ID + " AND ase.AD_Client_ID=" + m_AD_Client_ID + ") " + "ORDER BY 2"; PreparedStatement pstmt = null;