details:   https://code.openbravo.com/erp/devel/pi/rev/6f90c7d6a7d2
changeset: 24269:6f90c7d6a7d2
user:      Atul Gaware <atul.gaware <at> openbravo.com>
date:      Wed Aug 06 15:41:34 2014 +0530
summary:   Fixes Issue 26792:Wrong Payment created from GL Journal when 
journal's currency
is different from General Ledger's currency

diffstat:

 
modules/org.openbravo.advpaymentmngt/build/classes/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLine.class
                    |    0 
 
modules/org.openbravo.advpaymentmngt/build/classes/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLineData.class
                |    0 
 
modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLine.java
         |   80 +
 
modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLine_data.xsql
    |  131 +++
 
modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLineData.java
 |  421 ++++++++++
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPaymentFromJournalLine.java
                                   |    8 +-
 src-db/database/sourcedata/AD_AUXILIARINPUT.xml                                
                                                                    |   11 +
 src-db/database/sourcedata/AD_COLUMN.xml                                       
                                                                    |    1 +
 src-db/database/sourcedata/AD_VAL_RULE.xml                                     
                                                                    |   11 +
 9 files changed, 660 insertions(+), 3 deletions(-)

diffs (truncated from 722 to 300 lines):

diff -r 97ca2cff8101 -r 6f90c7d6a7d2 
modules/org.openbravo.advpaymentmngt/build/classes/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLine.class
Binary file 
modules/org.openbravo.advpaymentmngt/build/classes/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLine.class
 has changed
diff -r 97ca2cff8101 -r 6f90c7d6a7d2 
modules/org.openbravo.advpaymentmngt/build/classes/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLineData.class
Binary file 
modules/org.openbravo.advpaymentmngt/build/classes/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLineData.class
 has changed
diff -r 97ca2cff8101 -r 6f90c7d6a7d2 
modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLine.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLine.java
        Wed Aug 06 15:41:34 2014 +0530
@@ -0,0 +1,80 @@
+/* 
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2014 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ *************************************************************************
+ */
+package org.openbravo.advpaymentmngt.modulescript;
+
+import javax.servlet.ServletException;
+
+import org.openbravo.database.ConnectionProvider;
+import org.openbravo.modulescript.ModuleScript;
+
+public class WrongPaymentsFromJournalLine extends ModuleScript {
+  
+  final static private String ALERT_RULE_SQL = "select distinct 
ad_column_identifier('FIN_Payment', p.fin_payment_id, 'en_US') as record_id, 
p.fin_payment_id  as referencekey_id, 0 as ad_role_id, null as ad_user_id, 
'This payment needs to be checked due to wrong amount.' as description, 'Y' as 
isActive, p.ad_org_id, p.ad_client_id, now() as created, 0 as createdBy, now() 
as updated, 0 as updatedBy from fin_payment p left join gl_journalline jl on 
jl.fin_payment_id = p.fin_payment_id where abs(jl.amtsourcedr-jl.amtsourcecr) 
!= p.amount order by 1";
+  
+  @Override
+  // Inserting Alerts for payments created from G/L Journal Line with wrong 
amounts
+  public void execute() {
+    try {
+      ConnectionProvider cp = getConnectionProvider();
+      WrongPaymentsFromJournalLineData[] data = 
WrongPaymentsFromJournalLineData.select(cp);
+      for (WrongPaymentsFromJournalLineData wrongPayment : data) {
+        createAlert(cp, wrongPayment);
+      }
+     } catch (Exception e) {
+      handleError(e);
+    }
+  }
+
+  private void createAlert(ConnectionProvider cp, 
WrongPaymentsFromJournalLineData wrongPayment)
+             throws ServletException {
+               final String PAYMENT_IN_WINDOW = 
"E547CE89D4C04429B6340FFA44E70716";
+           final String PAYMENT_OUT_WINDOW = 
"6F8F913FA60F4CBD93DC1D3AA696E76E";
+           final String PAYMENT_IN_TAB = "C4B6506838E14A349D6717D6856F1B56";
+           final String PAYMENT_OUT_TAB = "F7A52FDAAA0346EFA07D53C125B40404";
+           String WindowOrderId = PAYMENT_OUT_WINDOW;
+           String strTabId = PAYMENT_OUT_TAB;
+           String ALERT_RULE = "Wrong Payment Out Amount";
+           if ("Y".equals(wrongPayment.isreceipt)) {
+             strTabId = PAYMENT_IN_TAB;
+             WindowOrderId = PAYMENT_IN_WINDOW;            
+             ALERT_RULE = "Wrong Payment In Amount";
+           }
+           String strName = "Payment: '" + wrongPayment.paymentinfo
+                   + "' needs to be checked due to wrong amount.";
+           String oldAlertRuleId = 
WrongPaymentsFromJournalLineData.getAlertRuleId(cp, ALERT_RULE,
+                   wrongPayment.adClientId);
+           if (!WrongPaymentsFromJournalLineData.existsAlert(cp, 
oldAlertRuleId, wrongPayment.finPaymentId)) {
+           if (!WrongPaymentsFromJournalLineData.existsAlertRule(cp, 
ALERT_RULE, wrongPayment.adClientId)) {
+             WrongPaymentsFromJournalLineData.insertAlertRule(cp, 
wrongPayment.adClientId, ALERT_RULE, strTabId, "");
+             WrongPaymentsFromJournalLineData[] roles = 
WrongPaymentsFromJournalLineData.getRoleId(cp,
+                   WindowOrderId, wrongPayment.adClientId);
+               for (WrongPaymentsFromJournalLineData role : roles) {
+                 WrongPaymentsFromJournalLineData.insertAlertRecipient(cp, 
wrongPayment.adClientId,
+                     wrongPayment.adOrgId,
+                     WrongPaymentsFromJournalLineData.getAlertRuleId(cp, 
ALERT_RULE, wrongPayment.adClientId),
+                     role.adRoleId);
+               }
+             }
+               String alertRuleId = 
WrongPaymentsFromJournalLineData.getAlertRuleId(cp, ALERT_RULE,
+                   wrongPayment.adClientId);
+               WrongPaymentsFromJournalLineData.insertAlert(cp, 
wrongPayment.adClientId, wrongPayment.adOrgId,
+                 strName, alertRuleId, wrongPayment.paymentinfo, 
wrongPayment.finPaymentId);
+           }
+       }
+}
diff -r 97ca2cff8101 -r 6f90c7d6a7d2 
modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLine_data.xsql
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLine_data.xsql
   Wed Aug 06 15:41:34 2014 +0530
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ 
************************************************************************************
+ * Copyright (C) 2014 Openbravo S.L.U.
+ * Licensed under the Openbravo Commercial License version 1.0
+ * You may obtain a copy of the License at 
http://www.openbravo.com/legal/obcl.html
+ * or in the legal folder of this module distribution.
+ 
************************************************************************************
+-->
+<SqlClass name="WrongPaymentsFromJournalLineData" 
package="org.openbravo.advpaymentmngt.modulescript">
+   <SqlClassComment></SqlClassComment>
+   <SqlMethod name="select" type="preparedStatement" return="multiple">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql>
+      <![CDATA[
+      select distinct p.ad_client_id, ad_column_identifier('FIN_Payment', 
p.fin_payment_id, 'en_US') as paymentinfo, 
+      p.fin_payment_id, p.ad_org_id,  p.isreceipt, '' as ad_role_id, '' as 
ad_alertrule_id, '' as ad_alert_id 
+      from fin_payment p left join gl_journalline jl on jl.fin_payment_id = 
p.fin_payment_id 
+      where abs(jl.amtsourcedr-jl.amtsourcecr) != p.amount 
+      order by 1, 2
+      ]]>
+    </Sql>
+  </SqlMethod>
+  <SqlMethod name="existsAlertRule" type="preparedStatement" return="boolean">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+       SELECT COUNT(*) AS EXISTING
+       FROM AD_ALERTRULE
+       WHERE NAME = ?
+         AND ISACTIVE = 'Y'
+         AND AD_CLIENT_ID = ?
+      ]]>
+    </Sql>
+    <Parameter name="alertRule"/>
+    <Parameter name="client"/>
+  </SqlMethod>
+  <SqlMethod name="existsAlert" type="preparedStatement" return="boolean">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+       SELECT COUNT(*) AS EXISTING
+       FROM AD_ALERT
+       WHERE AD_ALERTRULE_ID = ?
+       AND REFERENCEKEY_ID = ?
+       AND ISFIXED = 'N'
+      ]]>
+    </Sql>
+    <Parameter name="alertRule"/>
+    <Parameter name="order"/>
+  </SqlMethod>
+  <SqlMethod name="getAlertRuleId" type="preparedStatement" return="string">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+       SELECT MAX(ad_alertrule_id) AS name
+       FROM AD_ALERTRULE
+       WHERE NAME LIKE ?
+         AND ISACTIVE = 'Y'
+         AND AD_CLIENT_ID = ?
+      ]]></Sql>
+    <Parameter name="name"/>
+    <Parameter name="client"/>
+  </SqlMethod>  
+  <SqlMethod name="getRoleId" type="preparedStatement" return="multiple">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+       SELECT distinct ad_role_id
+       FROM ad_window_access
+       WHERE ad_window_id = ?
+       AND AD_CLIENT_ID = ?
+         AND ISACTIVE = 'Y'
+      ]]></Sql>
+    <Parameter name="window"/>
+    <Parameter name="clientId"/>
+  </SqlMethod>
+  <SqlMethod name="insertAlertRule" type="preparedStatement" return="rowcount">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+      INSERT INTO AD_ALERTRULE (
+        AD_ALERTRULE_ID, AD_CLIENT_ID, AD_ORG_ID,ISACTIVE,
+        CREATED, CREATEDBY,  UPDATED, UPDATEDBY,
+        NAME, AD_TAB_ID, FILTERCLAUSE, TYPE,
+        SQL
+      ) VALUES (
+        get_uuid(), ?, '0', 'Y',
+        now(), '100', now(), '100',
+        ?, ?, '', 'E',
+        ?
+      )
+    ]]></Sql>
+    <Parameter name="clientId"/>
+    <Parameter name="name"/>
+    <Parameter name="tabId"/>
+    <Parameter name="sql"/>
+  </SqlMethod>
+  <SqlMethod name="insertAlert" type="preparedStatement" return="rowcount">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+      INSERT INTO AD_Alert (
+        AD_Alert_ID, AD_Client_ID, AD_Org_ID, IsActive,
+        Created, CreatedBy, Updated, UpdatedBy,
+        Description, AD_AlertRule_ID, Record_Id, Referencekey_ID
+      ) VALUES (
+        get_uuid(), ?, ?, 'Y',
+        NOW(), '0', NOW(), '0',
+        ?, ?, ?, ?)
+      ]]>
+    </Sql>
+    <Parameter name="client"/>
+    <Parameter name="org"/>
+    <Parameter name="description" />
+    <Parameter name="adAlertRuleId" />
+    <Parameter name="recordId" />
+    <Parameter name="referencekey_id" />
+  </SqlMethod>
+  <SqlMethod name="insertAlertRecipient" type="preparedStatement" 
return="rowcount">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+    INSERT INTO ad_alertrecipient(
+            ad_user_id, ad_client_id, ad_org_id, isactive, created, createdby, 
+            updated, updatedby, ad_alertrecipient_id, ad_alertrule_id, 
ad_role_id, 
+            sendemail)
+    VALUES (null, ?, ?, 'Y', now(), '100', 
+            now(), '100', get_uuid(), ?, ?, 
+            'N')
+      ]]>
+    </Sql>
+    <Parameter name="client"/>
+    <Parameter name="org"/>
+    <Parameter name="adAlertRuleId" />
+    <Parameter name="role" />
+  </SqlMethod>  
+</SqlClass>
diff -r 97ca2cff8101 -r 6f90c7d6a7d2 
modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLineData.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLineData.java
        Wed Aug 06 15:41:34 2014 +0530
@@ -0,0 +1,421 @@
+//Sqlc generated V1.O00-1
+package org.openbravo.advpaymentmngt.modulescript;
+
+import java.sql.*;
+
+import org.apache.log4j.Logger;
+
+import javax.servlet.ServletException;
+
+import org.openbravo.data.FieldProvider;
+import org.openbravo.database.ConnectionProvider;
+import org.openbravo.data.UtilSql;
+import java.util.*;
+
+class WrongPaymentsFromJournalLineData implements FieldProvider {
+static Logger log4j = Logger.getLogger(WrongPaymentsFromJournalLineData.class);
+  private String InitRecordNumber="0";
+  public String adClientId;
+  public String paymentinfo;
+  public String finPaymentId;
+  public String adOrgId;
+  public String isreceipt;
+  public String adRoleId;
+  public String adAlertruleId;
+  public String adAlertId;
+
+  public String getInitRecordNumber() {
+    return InitRecordNumber;
+  }
+
+  public String getField(String fieldName) {
+    if (fieldName.equalsIgnoreCase("ad_client_id") || 
fieldName.equals("adClientId"))
+      return adClientId;
+    else if (fieldName.equalsIgnoreCase("paymentinfo"))
+      return paymentinfo;
+    else if (fieldName.equalsIgnoreCase("fin_payment_id") || 
fieldName.equals("finPaymentId"))
+      return finPaymentId;
+    else if (fieldName.equalsIgnoreCase("ad_org_id") || 
fieldName.equals("adOrgId"))
+      return adOrgId;
+    else if (fieldName.equalsIgnoreCase("isreceipt"))
+      return isreceipt;
+    else if (fieldName.equalsIgnoreCase("ad_role_id") || 
fieldName.equals("adRoleId"))
+      return adRoleId;
+    else if (fieldName.equalsIgnoreCase("ad_alertrule_id") || 
fieldName.equals("adAlertruleId"))
+      return adAlertruleId;
+    else if (fieldName.equalsIgnoreCase("ad_alert_id") || 
fieldName.equals("adAlertId"))
+      return adAlertId;
+   else {
+     log4j.debug("Field does not exist: " + fieldName);
+     return null;
+   }
+ }
+
+  public static WrongPaymentsFromJournalLineData[] select(ConnectionProvider 
connectionProvider)    throws ServletException {
+    return select(connectionProvider, 0, 0);
+  }
+
+  public static WrongPaymentsFromJournalLineData[] select(ConnectionProvider 
connectionProvider, int firstRegister, int numberRegisters)    throws 
ServletException {
+    String strSql = "";
+    strSql = strSql + 
+      "      select distinct p.ad_client_id, 
ad_column_identifier('FIN_Payment', p.fin_payment_id, 'en_US') as paymentinfo, 
" +
+      "      p.fin_payment_id, p.ad_org_id,  p.isreceipt, '' as ad_role_id, '' 
as ad_alertrule_id, '' as ad_alert_id " +
+      "      from fin_payment p left join gl_journalline jl on 
jl.fin_payment_id = p.fin_payment_id " +
+      "      where abs(jl.amtsourcedr-jl.amtsourcecr) != p.amount " +
+      "      order by 1, 2";
+
+    ResultSet result;
+    Vector<java.lang.Object> vector = new Vector<java.lang.Object>(0);
+    PreparedStatement st = null;
+
+    try {
+    st = connectionProvider.getPreparedStatement(strSql);
+

------------------------------------------------------------------------------
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to