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