--- /opt/OpenbravoERP-3.0/Openbravo-3.0MP29.1/src-db/database/sourcedata/AD_COLUMN.xml
+++ /opt/OpenbravoERP-3.0/flopec/src-db/database/sourcedata/AD_COLUMN.xml
@@ -220488,7 +220488,8 @@
 <!--03276FB53CC54CC1829E0AA6EC0F2EE6-->  <HELP><![CDATA[Financial account used to deposit / withdrawal money such as bank accounts or petty cash]]></HELP>
 <!--03276FB53CC54CC1829E0AA6EC0F2EE6-->  <COLUMNNAME><![CDATA[Fin_Financial_Account_ID]]></COLUMNNAME>
 <!--03276FB53CC54CC1829E0AA6EC0F2EE6-->  <AD_TABLE_ID><![CDATA[D1A97202E832470285C9B1EB026D54E2]]></AD_TABLE_ID>
-<!--03276FB53CC54CC1829E0AA6EC0F2EE6-->  <AD_REFERENCE_ID><![CDATA[19]]></AD_REFERENCE_ID>
+<!--03276FB53CC54CC1829E0AA6EC0F2EE6-->  <AD_REFERENCE_ID><![CDATA[18]]></AD_REFERENCE_ID>
+<!--03276FB53CC54CC1829E0AA6EC0F2EE6-->  <AD_REFERENCE_VALUE_ID><![CDATA[5654DF4C1C634AB2B93B792063AA0F32]]></AD_REFERENCE_VALUE_ID>
 <!--03276FB53CC54CC1829E0AA6EC0F2EE6-->  <FIELDLENGTH><![CDATA[0]]></FIELDLENGTH>
 <!--03276FB53CC54CC1829E0AA6EC0F2EE6-->  <ISKEY><![CDATA[N]]></ISKEY>
 <!--03276FB53CC54CC1829E0AA6EC0F2EE6-->  <ISPARENT><![CDATA[N]]></ISPARENT>
@@ -275515,7 +275516,7 @@
 <!--828EE0AE802F5FA1E040007F010067C7-->  <COLUMNNAME><![CDATA[FIN_Financial_Account_ID]]></COLUMNNAME>
 <!--828EE0AE802F5FA1E040007F010067C7-->  <AD_TABLE_ID><![CDATA[291]]></AD_TABLE_ID>
 <!--828EE0AE802F5FA1E040007F010067C7-->  <AD_REFERENCE_ID><![CDATA[18]]></AD_REFERENCE_ID>
-<!--828EE0AE802F5FA1E040007F010067C7-->  <AD_REFERENCE_VALUE_ID><![CDATA[DF1CEA94B3564A33AFDB37C07E1CE353]]></AD_REFERENCE_VALUE_ID>
+<!--828EE0AE802F5FA1E040007F010067C7-->  <AD_REFERENCE_VALUE_ID><![CDATA[5654DF4C1C634AB2B93B792063AA0F32]]></AD_REFERENCE_VALUE_ID>
 <!--828EE0AE802F5FA1E040007F010067C7-->  <FIELDLENGTH><![CDATA[32]]></FIELDLENGTH>
 <!--828EE0AE802F5FA1E040007F010067C7-->  <ISKEY><![CDATA[N]]></ISKEY>
 <!--828EE0AE802F5FA1E040007F010067C7-->  <ISPARENT><![CDATA[N]]></ISPARENT>
@@ -275551,7 +275552,7 @@
 <!--828EE0AE80305FA1E040007F010067C7-->  <COLUMNNAME><![CDATA[PO_Financial_Account_ID]]></COLUMNNAME>
 <!--828EE0AE80305FA1E040007F010067C7-->  <AD_TABLE_ID><![CDATA[291]]></AD_TABLE_ID>
 <!--828EE0AE80305FA1E040007F010067C7-->  <AD_REFERENCE_ID><![CDATA[18]]></AD_REFERENCE_ID>
-<!--828EE0AE80305FA1E040007F010067C7-->  <AD_REFERENCE_VALUE_ID><![CDATA[DF1CEA94B3564A33AFDB37C07E1CE353]]></AD_REFERENCE_VALUE_ID>
+<!--828EE0AE80305FA1E040007F010067C7-->  <AD_REFERENCE_VALUE_ID><![CDATA[5654DF4C1C634AB2B93B792063AA0F32]]></AD_REFERENCE_VALUE_ID>
 <!--828EE0AE80305FA1E040007F010067C7-->  <FIELDLENGTH><![CDATA[32]]></FIELDLENGTH>
 <!--828EE0AE80305FA1E040007F010067C7-->  <ISKEY><![CDATA[N]]></ISKEY>
 <!--828EE0AE80305FA1E040007F010067C7-->  <ISPARENT><![CDATA[N]]></ISPARENT>
@@ -281177,7 +281178,8 @@
 <!--8B042E0FE87E44F68B30A31E67C1E158-->  <HELP><![CDATA[Financial account used to deposit / withdrawal money such as bank accounts or petty cash]]></HELP>
 <!--8B042E0FE87E44F68B30A31E67C1E158-->  <COLUMNNAME><![CDATA[Fin_Financial_Account_ID]]></COLUMNNAME>
 <!--8B042E0FE87E44F68B30A31E67C1E158-->  <AD_TABLE_ID><![CDATA[B9437A72163445C59A0A585209C8ECE5]]></AD_TABLE_ID>
-<!--8B042E0FE87E44F68B30A31E67C1E158-->  <AD_REFERENCE_ID><![CDATA[19]]></AD_REFERENCE_ID>
+<!--8B042E0FE87E44F68B30A31E67C1E158-->  <AD_REFERENCE_ID><![CDATA[18]]></AD_REFERENCE_ID>
+<!--8B042E0FE87E44F68B30A31E67C1E158-->  <AD_REFERENCE_VALUE_ID><![CDATA[5654DF4C1C634AB2B93B792063AA0F32]]></AD_REFERENCE_VALUE_ID>
 <!--8B042E0FE87E44F68B30A31E67C1E158-->  <FIELDLENGTH><![CDATA[32]]></FIELDLENGTH>
 <!--8B042E0FE87E44F68B30A31E67C1E158-->  <ISKEY><![CDATA[N]]></ISKEY>
 <!--8B042E0FE87E44F68B30A31E67C1E158-->  <ISPARENT><![CDATA[N]]></ISPARENT>
--- /opt/OpenbravoERP-3.0/Openbravo-3.0MP29.1/src-db/database/sourcedata/AD_REFERENCE.xml
+++ /opt/OpenbravoERP-3.0/flopec/src-db/database/sourcedata/AD_REFERENCE.xml
@@ -4947,6 +4947,18 @@
 <!--55BB57CFEF7E4EA0B3F429E4A55586D8-->  <ISVALUEDISPLAYED><![CDATA[N]]></ISVALUEDISPLAYED>
 <!--55BB57CFEF7E4EA0B3F429E4A55586D8--></AD_REFERENCE>
 
+<!--5654DF4C1C634AB2B93B792063AA0F32--><AD_REFERENCE>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_REFERENCE_ID><![CDATA[5654DF4C1C634AB2B93B792063AA0F32]]></AD_REFERENCE_ID>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <NAME><![CDATA[Fin_Financial_Account according to payment method]]></NAME>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <ISBASEREFERENCE><![CDATA[N]]></ISBASEREFERENCE>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <PARENTREFERENCE_ID><![CDATA[18]]></PARENTREFERENCE_ID>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <ISVALUEDISPLAYED><![CDATA[N]]></ISVALUEDISPLAYED>
+<!--5654DF4C1C634AB2B93B792063AA0F32--></AD_REFERENCE>
+
 <!--575BCB88A4694C27BC013DE9C73E6FE7--><AD_REFERENCE>
 <!--575BCB88A4694C27BC013DE9C73E6FE7-->  <AD_REFERENCE_ID><![CDATA[575BCB88A4694C27BC013DE9C73E6FE7]]></AD_REFERENCE_ID>
 <!--575BCB88A4694C27BC013DE9C73E6FE7-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
--- /opt/OpenbravoERP-3.0/Openbravo-3.0MP29.1/src-db/database/sourcedata/AD_REF_TABLE.xml
+++ /opt/OpenbravoERP-3.0/flopec/src-db/database/sourcedata/AD_REF_TABLE.xml
@@ -1206,6 +1206,18 @@
 <!--54AC2749F26440F3AEA33378858569E4-->  <ISVALUEDISPLAYED><![CDATA[N]]></ISVALUEDISPLAYED>
 <!--54AC2749F26440F3AEA33378858569E4--></AD_REF_TABLE>
 
+<!--5654DF4C1C634AB2B93B792063AA0F32--><AD_REF_TABLE>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_REFERENCE_ID><![CDATA[5654DF4C1C634AB2B93B792063AA0F32]]></AD_REFERENCE_ID>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_TABLE_ID><![CDATA[B129E53BC0E747879F7BA17F0AECEC32]]></AD_TABLE_ID>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_KEY><![CDATA[7891269C8400655DE040007F010155CE]]></AD_KEY>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <AD_DISPLAY><![CDATA[7891269C8409655DE040007F010155CE]]></AD_DISPLAY>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <ISVALUEDISPLAYED><![CDATA[N]]></ISVALUEDISPLAYED>
+<!--5654DF4C1C634AB2B93B792063AA0F32-->  <WHERECLAUSE><![CDATA[fin_financial_account_id in (select fin_financial_account_id from fin_finacc_paymentmethod where (fin_paymentmethod_id = @Fin_Paymentmethod_ID@ or @Fin_Paymentmethod_ID@ is null) and ((@Isreceipt@ = 'N' AND payout_allow = 'Y') OR (@Isreceipt@ = 'Y' AND payin_allow = 'Y')))]]></WHERECLAUSE>
+<!--5654DF4C1C634AB2B93B792063AA0F32--></AD_REF_TABLE>
+
 <!--595E4FB3F743477BA5A670452556C3DF--><AD_REF_TABLE>
 <!--595E4FB3F743477BA5A670452556C3DF-->  <AD_REFERENCE_ID><![CDATA[595E4FB3F743477BA5A670452556C3DF]]></AD_REFERENCE_ID>
 <!--595E4FB3F743477BA5A670452556C3DF-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
--- /opt/OpenbravoERP-3.0/Openbravo-3.0MP29.1/src/org/openbravo/erpCommon/ad_callouts/SE_PaymentMethod_FinAccount.java
+++ /opt/OpenbravoERP-3.0/flopec/src/org/openbravo/erpCommon/ad_callouts/SE_PaymentMethod_FinAccount.java
@@ -36,77 +36,47 @@
   @Override
   protected void execute(CalloutInfo info) throws ServletException {
 
-    String srtPaymentMethodId = info.getStringParameter("inpfinPaymentmethodId",
-        IsIDFilter.instance);
-    String srtPOPaymentMethodId = info.getStringParameter("inppoPaymentmethodId",
-        IsIDFilter.instance);
-
     String tabId = info.getTabId();
     boolean isVendorTab = "224".equals(tabId);
     String finIsReceipt = info.getStringParameter("inpisreceipt", null);
     boolean isPaymentOut = isVendorTab || "N".equals(finIsReceipt);
-    String srtOrgId = info.getStringParameter("inpadOrgId", IsIDFilter.instance);
+    String strOrgId = info.getStringParameter("inpadOrgId", IsIDFilter.instance);
+
+    String strSelectedPaymentMethod = info.getStringParameter(isVendorTab ? "inppoPaymentmethodId"
+        : "inpfinPaymentmethodId", IsIDFilter.instance);
 
     FIN_PaymentMethod paymentMethod = OBDal.getInstance().get(FIN_PaymentMethod.class,
-        isVendorTab ? srtPOPaymentMethodId : srtPaymentMethodId);
+        strSelectedPaymentMethod);
 
-    info.addSelect(isVendorTab ? "inppoFinancialAccountId" : "inpfinFinancialAccountId");
-    String srtSelectedFinancialAccount = info.getStringParameter(
+    String strSelectedFinancialAccount = info.getStringParameter(
         isVendorTab ? "inppoFinancialAccountId" : "inpfinFinancialAccountId", IsIDFilter.instance);
 
-    boolean isSelected = true;
+    FIN_FinancialAccount financialAccount = OBDal.getInstance().get(FIN_FinancialAccount.class,
+        strSelectedFinancialAccount);
+
     boolean isMultiCurrencyEnabled = false;
 
-    // No Payment Method selected
-    if (srtPaymentMethodId.isEmpty() && srtPOPaymentMethodId.isEmpty()) {
-      OBCriteria<FIN_FinancialAccount> obc = OBDal.getInstance().createCriteria(
-          FIN_FinancialAccount.class);
-      obc.add(Restrictions.in("organization.id", OBContext.getOBContext()
-          .getOrganizationStructureProvider().getNaturalTree(srtOrgId)));
-      obc.setFilterOnReadableOrganization(false);
-      for (FIN_FinancialAccount acc : obc.list()) {
-        info.addSelectResult(acc.getId(), acc.getIdentifier());
-      }
-
-    } else {
+    if (paymentMethod != null && financialAccount != null) {
       OBCriteria<FinAccPaymentMethod> obc = OBDal.getInstance().createCriteria(
           FinAccPaymentMethod.class);
+      // (paymentmethod, financial_account) is unique
       obc.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_PAYMENTMETHOD, paymentMethod));
+      obc.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_ACCOUNT, financialAccount));
       obc.add(Restrictions.in("organization.id", OBContext.getOBContext()
-          .getOrganizationStructureProvider().getNaturalTree(srtOrgId)));
-      if (isPaymentOut) {
-        obc.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_PAYOUTALLOW, true));
-      } else {
-        obc.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_PAYINALLOW, true));
-      }
+          .getOrganizationStructureProvider().getNaturalTree(strOrgId)));
 
-      FinAccPaymentMethod selectedPaymentMethod = null;
-      for (FinAccPaymentMethod accPm : obc.list()) {
-        if (accPm.getAccount().isActive()) {
-          if (srtSelectedFinancialAccount.equals(accPm.getAccount().getId())) {
-            isSelected = true;
-          } else if (srtSelectedFinancialAccount.isEmpty()) {
-            srtSelectedFinancialAccount = accPm.getAccount().getIdentifier();
-            isSelected = true;
-          }
-          selectedPaymentMethod = accPm;
+      if (obc.count() > 0) {
+        FinAccPaymentMethod selectedAccPaymentMethod = obc.list().get(0);
 
-          info.addSelectResult(accPm.getAccount().getId(), accPm.getAccount().getIdentifier(),
-              isSelected);
-        }
-        isSelected = false;
-      }
-      if (selectedPaymentMethod != null) {
         if (isPaymentOut) {
-          isMultiCurrencyEnabled = selectedPaymentMethod.isPayoutAllow()
-              && selectedPaymentMethod.isPayoutIsMulticurrency();
+          isMultiCurrencyEnabled = selectedAccPaymentMethod.isPayoutAllow()
+              && selectedAccPaymentMethod.isPayoutIsMulticurrency();
         } else {
-          isMultiCurrencyEnabled = selectedPaymentMethod.isPayinAllow()
-              && selectedPaymentMethod.isPayinIsMulticurrency();
+          isMultiCurrencyEnabled = selectedAccPaymentMethod.isPayinAllow()
+              && selectedAccPaymentMethod.isPayinIsMulticurrency();
         }
       }
     }
-    info.endSelect();
     info.addResult("inpismulticurrencyenabled", isMultiCurrencyEnabled ? "Y" : "N");
   }
 }
