# HG changeset patch
# User Naiara Martinez <naiara.martinez@openbravo.com>
# Date 1337787154 -7200
# Node ID 3a3cc545e9edad510020226035f69c5fea45eb5b
# Parent  9715e09221737aa448431bcd7c8d73f84697019c
fixed bug 20294 Not allow updating org in Accounting Schema.Buildvalidation

diff --git a/referencedata/sampledata/QA_Testing.xml b/referencedata/sampledata/QA_Testing.xml
--- a/referencedata/sampledata/QA_Testing.xml
+++ b/referencedata/sampledata/QA_Testing.xml
@@ -226305,7 +226305,7 @@
     <accountingSchema id="9A68A0F8D72D4580B3EC3CAA00A5E1F0"/>
     <table id="D4C23A17190649E7B78F55A05AF3438C"/>
     <client id="4028E6C72959682B01295A070852010D"/>
-    <organization id="0"/>
+    <organization id="43D590B4814049C6B85C6545E8264E37"/>
     <active>true</active>
     <createfactTemplate xsi:nil="true"/>
     <sQLDescription xsi:nil="true"/>
@@ -226415,7 +226415,7 @@
     <accountingSchema id="432EAC71E1B8451E97C7F54718C4A06B"/>
     <table id="D4C23A17190649E7B78F55A05AF3438C"/>
     <client id="4028E6C72959682B01295A070852010D"/>
-    <organization id="0"/>
+    <organization id="5EFF95EB540740A3B10510D9814EFAD5"/>
     <active>true</active>
     <createfactTemplate xsi:nil="true"/>
     <sQLDescription xsi:nil="true"/>
diff --git a/src-db/database/sourcedata/AD_COLUMN.xml b/src-db/database/sourcedata/AD_COLUMN.xml
--- a/src-db/database/sourcedata/AD_COLUMN.xml
+++ b/src-db/database/sourcedata/AD_COLUMN.xml
@@ -34632,7 +34632,7 @@
 <!--2465-->  <ISKEY><![CDATA[N]]></ISKEY>
 <!--2465-->  <ISPARENT><![CDATA[N]]></ISPARENT>
 <!--2465-->  <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
-<!--2465-->  <ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE>
+<!--2465-->  <ISUPDATEABLE><![CDATA[N]]></ISUPDATEABLE>
 <!--2465-->  <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
 <!--2465-->  <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
 <!--2465-->  <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
diff --git a/src-util/buildvalidation/build/classes/org/openbravo/buildvalidation/DifferentOrgInAccSchema.class b/src-util/buildvalidation/build/classes/org/openbravo/buildvalidation/DifferentOrgInAccSchema.class
new file mode 100644
index 0000000000000000000000000000000000000000..4a66636aeae065cc27c742ff96d19774a4a4283c
GIT binary patch
literal 10185
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

diff --git a/src-util/buildvalidation/build/classes/org/openbravo/buildvalidation/DifferentOrgInAccSchemaData.class b/src-util/buildvalidation/build/classes/org/openbravo/buildvalidation/DifferentOrgInAccSchemaData.class
new file mode 100644
index 0000000000000000000000000000000000000000..1c56616ce70901d9d1b0c26ada3ccabd417d8e6e
GIT binary patch
literal 24341
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

diff --git a/src-util/buildvalidation/src/org/openbravo/buildvalidation/DifferentOrgInAccSchema.java b/src-util/buildvalidation/src/org/openbravo/buildvalidation/DifferentOrgInAccSchema.java
new file mode 100644
--- /dev/null
+++ b/src-util/buildvalidation/src/org/openbravo/buildvalidation/DifferentOrgInAccSchema.java
@@ -0,0 +1,233 @@
+/*
+ *************************************************************************
+  * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (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) 2012 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+ */
+package org.openbravo.buildvalidation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.openbravo.database.ConnectionProvider;
+
+/**
+ * This validation is related to this issue: https://issues.openbravo.com/view.php?id=20142
+ *  
+ * Same Org has to exist in parent tab and child tab
+ * 
+ */
+public class DifferentOrgInAccSchema extends BuildValidation {
+  private static final String ELEMENT = "ELEMENT";
+  private static final String TABLE = "TABLE";
+  private static final String DOCTYPE = "DOCTYPE";
+  private static final String PROCESS = "PROCESS";
+  private static final String GL = "GL";
+  private static final String DEFAULT = "DEFAULT";
+    
+  
+  private static final String ELEMENT_TAB = "217";
+  private static final String TABLE_TAB = "800041";
+  private static final String DOCTYPE_TAB = "1007400000";
+  private static final String PROCESS_TAB = "4F9E1C27F7F040C58C5CA2E6FD5B26CB";
+  private static final String GL_TAB = "200";
+  private static final String DEFAULT_TAB = "252";
+  
+  
+  private static final String AccSchema_WINDOW = "125";
+  
+  @Override
+  public List<String> execute() {
+    ConnectionProvider cp = getConnectionProvider();
+    ArrayList<String> errors = new ArrayList<String>();
+    try {
+      // Prevent error when upgrading from a pure 2.50
+      //if (DuplicateDocExchangeRateData.existAPRMbasetables(cp)) {
+        
+        String errorMessage = "It is not allowed to have different organization for accounting schema and its child tabs . " +
+            "To fix this problem in your instance, please CONTACT YOUR SYSTEM ADMINISTRATOR. You can know the entries that are incorrect and by reviewing Alerts in your system. " + 
+            "Once you find the incorrect entries you should correct them. After fixing all these entries you should be able to apply this MP.";
+        
+        // ELEMENT
+        DifferentOrgInAccSchemaData[] listOfIncorrectElement = DifferentOrgInAccSchemaData.selectDifOrgInElement(cp);
+        if (listOfIncorrectElement != null && listOfIncorrectElement.length > 0) {
+          errors.add(String.format(errorMessage, "ELEMENT"));
+        }
+        for (DifferentOrgInAccSchemaData incorrectElement : listOfIncorrectElement) {
+          processAlert(cp, incorrectElement, ELEMENT);
+        }
+
+        // TABLE
+        DifferentOrgInAccSchemaData[] listOfIncorrectTable = DifferentOrgInAccSchemaData.selectDifOrgInTable(cp);
+        if (listOfIncorrectTable != null && listOfIncorrectTable.length > 0) {
+          errors.add(String.format(errorMessage, "TABLE"));
+        }
+        for (DifferentOrgInAccSchemaData incorrectTable : listOfIncorrectTable) {
+          processAlert(cp, incorrectTable, TABLE);
+        }
+        
+        // DocType
+        DifferentOrgInAccSchemaData[] listOfIncorrectDoc = DifferentOrgInAccSchemaData.selectDifOrgInDoc(cp);
+        if (listOfIncorrectDoc != null && listOfIncorrectDoc.length > 0) {
+          errors.add(String.format(errorMessage, "DOCTYPE"));
+        }
+        for (DifferentOrgInAccSchemaData incorrectDoc : listOfIncorrectDoc) {
+          processAlert(cp, incorrectDoc, DOCTYPE);
+        }
+        
+        // PROCESS
+        DifferentOrgInAccSchemaData[] listOfIncorrectProcess = DifferentOrgInAccSchemaData.selectDifOrgInProcess(cp);
+        if (listOfIncorrectProcess != null && listOfIncorrectProcess.length > 0) {
+          errors.add(String.format(errorMessage, "PROCESS"));
+        }
+        for (DifferentOrgInAccSchemaData incorrectProcess : listOfIncorrectProcess) {
+          processAlert(cp, incorrectProcess, PROCESS);
+        }
+        
+        // GL
+        DifferentOrgInAccSchemaData[] listOfIncorrectGL = DifferentOrgInAccSchemaData.selectDifOrgInGL(cp);
+        if (listOfIncorrectGL != null && listOfIncorrectGL.length > 0) {
+          errors.add(String.format(errorMessage, "GL"));
+        }
+        for (DifferentOrgInAccSchemaData incorrectGL : listOfIncorrectGL) {
+          processAlert(cp, incorrectGL, GL);
+        }
+        
+        // Default
+        DifferentOrgInAccSchemaData[] listOfIncorrectDefault = DifferentOrgInAccSchemaData.selectDifOrgInDefault(cp);
+        if (listOfIncorrectDefault != null && listOfIncorrectDefault.length > 0) {
+          errors.add(String.format(errorMessage, "DEFAULT"));
+        }
+        for (DifferentOrgInAccSchemaData incorrectDefault : listOfIncorrectDefault) {
+          processAlert(cp, incorrectDefault, DEFAULT);
+        }
+               
+     // }
+    } catch (Exception e) {
+      return handleError(e);
+    }
+    return errors;
+  }
+  
+  private void processAlert(ConnectionProvider cp, DifferentOrgInAccSchemaData incorrectOrg, String type) throws Exception {
+    String ALERT_RULE_NAME = "";
+    String alertDescription = "";
+    String strTabId = "";
+    String strWindowId = AccSchema_WINDOW;
+    String ALERT_RULE_SQL = "";
+    String strRecordId = incorrectOrg.referencekeyId;
+    
+    if (ELEMENT.equals(type)) {
+      //String invoice = "Y".equals(exchangeRate.issotrx) ? "Sales Invoice" : "Purchase Invoice";
+      ALERT_RULE_NAME = "Different Org for Acct Schema and Acct Schema Element";
+      alertDescription = "Different organization for Accounting Schema and Account Schema Element. Please ensure the same organization exists";
+      strTabId = ELEMENT_TAB;
+           
+      ALERT_RULE_SQL = " select e.C_AcctSchema_Element_id as referencekey_id, ad_column_identifier('C_AcctSchema_Element', e.C_AcctSchema_Element_id,'en_US') as record_id, " +
+          " 0 as ad_role_id, null as ad_user_id, '" + alertDescription + "' as description, " +
+          " 'Y' as isActive, e.ad_client_id, e.ad_org_id, now() as created, 0 as createdBy, now() as updated, 0 as updatedBy " +
+          " from C_AcctSchema c inner join C_AcctSchema_Element e ON c.c_acctSchema_id = e.c_acctSchema_id " +
+          " where c.ad_org_id <> e.ad_org_id";
+      
+    } else if (TABLE.equals(type)) {
+      //String payment = "Y".equals(exchangeRate.isreceipt) ? "Payment IN" : "Payment OUT";
+      ALERT_RULE_NAME = "Different Org for Acct Schema and Acct Schema Tables";
+      alertDescription = "Different organization for Accounting Schema and Account Schema Tables. Please ensure the same organization exists";
+      strTabId = TABLE_TAB;
+             
+      ALERT_RULE_SQL = " select t.C_AcctSchema_Table_id as referencekey_id, ad_column_identifier('C_AcctSchema_Table', t.C_AcctSchema_Table_id,'en_US') as record_id, " +
+          " 0 as ad_role_id, null as ad_user_id, '" + alertDescription + "' as description, " +
+          " 'Y' as isActive, t.ad_client_id, t.ad_org_id, now() as created, 0 as createdBy, now() as updated, 0 as updatedBy " +
+          " from C_AcctSchema c inner join C_AcctSchema_Table t on c.c_acctSchema_id = t.c_acctSchema_id " +
+          " WHERE c.ad_org_id <> t.ad_org_id";
+      
+    } else if (DOCTYPE.equals(type)) {
+      ALERT_RULE_NAME = "Different Org for Acct Schema and Documents";
+      alertDescription = "Different organization for Accounting Schema and Documents. Please ensure the same organization exists";
+      strTabId = DOCTYPE_TAB;
+      
+      ALERT_RULE_SQL = " select d.C_AcctSchema_Table_DocType_id as referencekey_id, ad_column_identifier('C_AcctSchema_Table_DocType', d.C_AcctSchema_Table_DocType_id,'en_US') as record_id, " +
+          " 0 as ad_role_id, null as ad_user_id, '" + alertDescription + "' as description, " +
+          " 'Y' as isActive, d.ad_client_id, d.ad_org_id, now() as created, 0 as createdBy,  now() as updated, 0 as updatedBy " +
+          " from (C_AcctSchema c inner join C_AcctSchema_Table t on c.c_acctSchema_id =t.c_acctSchema_id) " +
+          " inner join C_AcctSchema_Table_DocType d on  t.C_AcctSchema_Table_id = d.C_AcctSchema_Table_id  " + 
+          " where c.ad_org_id <> d.ad_org_id";
+      
+    } else if (PROCESS.equals(type)) {
+      ALERT_RULE_NAME = "Different Org for Acct Schema and Process";
+      alertDescription = "Different organization for Accounting Schema and Process. Please ensure the same organization exists";
+      strTabId = PROCESS_TAB;
+      
+      ALERT_RULE_SQL = " select p.C_AcctSchema_Process_id as referencekey_id, ad_column_identifier('C_AcctSchema_Process', p.C_AcctSchema_Process_id,'en_US') as record_id, " +
+          " 0 as ad_role_id, null as ad_user_id, '" + alertDescription + "' as description, " +
+          " 'Y' as isActive, p.ad_client_id, p.ad_org_id, now() as created, 0 as createdBy,  now() as updated, 0 as updatedBy " +
+          " from C_AcctSchema c inner join C_AcctSchema_Process p on c.c_acctSchema_id = p.c_acctSchema_id " + 
+          " where c.ad_org_id <> p.ad_org_id";
+      
+    } else if (GL.equals(type)) {
+      ALERT_RULE_NAME = "Different Org for Acct Schema and General Ledger";
+      alertDescription = "Different organization for Accounting Schema and General Ledger. Please ensure the same organization exists";
+      strTabId = GL_TAB;
+      
+      ALERT_RULE_SQL = " select gl.C_AcctSchema_GL_id as referencekey_id, ad_column_identifier('C_AcctSchema_GL', gl.C_AcctSchema_GL_id,'en_US') as record_id, " +
+          " 0 as ad_role_id, null as ad_user_id, '" + alertDescription + "' as description, " +
+          " 'Y' as isActive, gl.ad_client_id, gl.ad_org_id, now() as created, 0 as createdBy,  now() as updated, 0 as updatedBy " +
+          " from C_AcctSchema c inner join  C_AcctSchema_GL gl on c.c_acctSchema_id = gl.c_acctSchema_id  " + 
+          " where c.ad_org_id <> gl.ad_org_id";
+      
+    } else if (DEFAULT.equals(type)) {
+      ALERT_RULE_NAME = "Different Org for Acct Schema and Defaults";
+      alertDescription = "Different organization for Accounting Schema and Defaults. Please ensure the same organization exists";
+      strTabId = DEFAULT_TAB;
+      
+     ALERT_RULE_SQL = " select d.C_AcctSchema_Default_id as referencekey_id, ad_column_identifier('C_AcctSchema_Default', d.C_AcctSchema_Default_id,'en_US') as record_id, " +
+          " 0 as ad_role_id, null as ad_user_id, '" + alertDescription + "' as description, " +
+          " 'Y' as isActive, d.ad_client_id, d.ad_org_id, now() as created, 0 as createdBy,  now() as updated, 0 as updatedBy " +
+          " from C_AcctSchema c inner join  C_AcctSchema_Default d on c.c_acctSchema_id = d.c_acctSchema_id " + 
+          " where c.ad_org_id <> d.ad_org_id";
+      
+    } else {
+      //invalid type
+    }
+    
+    String alertRuleId = "";
+
+    // Check if exists the alert rule
+    if (!DifferentOrgInAccSchemaData.existsAlertRule(cp, ALERT_RULE_NAME, incorrectOrg.adClientId)) {
+      DifferentOrgInAccSchemaData.insertAlertRule(cp, incorrectOrg.adClientId, incorrectOrg.adOrgId,
+          ALERT_RULE_NAME, strTabId, ALERT_RULE_SQL);
+
+      alertRuleId = DifferentOrgInAccSchemaData.getAlertRuleId(cp, ALERT_RULE_NAME,
+          incorrectOrg.adClientId);
+      DifferentOrgInAccSchemaData[] roles = DifferentOrgInAccSchemaData.getRoleId(cp,
+          strWindowId, incorrectOrg.adClientId);
+      for (DifferentOrgInAccSchemaData role : roles) {
+        DifferentOrgInAccSchemaData.insertAlertRecipient(cp, incorrectOrg.adClientId,
+            incorrectOrg.adOrgId, alertRuleId, role.adRoleId);
+      }
+    } else {
+      alertRuleId = DifferentOrgInAccSchemaData.getAlertRuleId(cp, ALERT_RULE_NAME,
+          incorrectOrg.adClientId);
+    }
+
+    // Check if exist the concrete alert
+    if (!DifferentOrgInAccSchemaData.existsAlert(cp, alertRuleId, strRecordId)) {
+      DifferentOrgInAccSchemaData.insertAlert(cp, incorrectOrg.adClientId, alertDescription,
+          alertRuleId, incorrectOrg.recordinfo, strRecordId);
+    }
+
+  }
+
+}
\ No newline at end of file
diff --git a/src-util/buildvalidation/src/org/openbravo/buildvalidation/DifferentOrgInAccSchema_data.xsql b/src-util/buildvalidation/src/org/openbravo/buildvalidation/DifferentOrgInAccSchema_data.xsql
new file mode 100644
--- /dev/null
+++ b/src-util/buildvalidation/src/org/openbravo/buildvalidation/DifferentOrgInAccSchema_data.xsql
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (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) 2012 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+-->
+
+
+<SqlClass name="DifferentOrgInAccSchemaData" package="org.openbravo.buildvalidation">
+  <SqlMethod name="dummy" type="preparedStatement" return="multiple">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+      SELECT '' AS documentno, '' AS referencekey_id, '' AS ad_client_id,
+             '' AS ad_org_id, '' AS recordinfo, '' AS ad_role_id
+      FROM DUAL
+    ]]></Sql>
+  </SqlMethod>
+  <SqlMethod name="selectDifOrgInElement" type="preparedStatement" return="multiple">
+      <SqlMethodComment></SqlMethodComment>
+      <Sql><![CDATA[
+             select e.C_AcctSchema_Element_id as referencekey_id, e.ad_client_id, e.ad_org_id,
+                    ad_column_identifier('C_AcctSchema_Element', e.C_AcctSchema_Element_id,'en_US') as recordinfo
+             from C_AcctSchema c inner join C_AcctSchema_Element e ON c.c_acctSchema_id = e.c_acctSchema_id
+             where c.ad_org_id <> e.ad_org_id
+      ]]></Sql>
+   </SqlMethod>
+   <SqlMethod name="selectDifOrgInTable" type="preparedStatement" return="multiple">
+      <SqlMethodComment></SqlMethodComment>
+      <Sql><![CDATA[
+             select t.C_AcctSchema_Table_id as referencekey_id, t.ad_client_id, t.ad_org_id,
+                    ad_column_identifier('C_AcctSchema_Table', t.C_AcctSchema_Table_id,'en_US') as recordinfo
+             from C_AcctSchema c inner join C_AcctSchema_Table t on c.c_acctSchema_id = t.c_acctSchema_id 
+             WHERE c.ad_org_id <> t.ad_org_id
+      ]]></Sql>
+   </SqlMethod>
+   <SqlMethod name="selectDifOrgInDoc" type="preparedStatement" return="multiple">
+      <SqlMethodComment></SqlMethodComment>
+      <Sql><![CDATA[
+             select d.C_AcctSchema_Table_DocType_id as referencekey_id, d.ad_client_id, d.ad_org_id,
+                    ad_column_identifier('C_AcctSchema_Table_DocType', d.C_AcctSchema_Table_DocType_id,'en_US') as recordinfo
+             from (C_AcctSchema c inner join C_AcctSchema_Table t on c.c_acctSchema_id =t.c_acctSchema_id) 
+             inner join C_AcctSchema_Table_DocType d on  t.C_AcctSchema_Table_id = d.C_AcctSchema_Table_id  
+             where  c.ad_org_id <> d.ad_org_id
+      ]]></Sql>
+   </SqlMethod>
+   <SqlMethod name="selectDifOrgInProcess" type="preparedStatement" return="multiple">
+      <SqlMethodComment></SqlMethodComment>
+      <Sql><![CDATA[
+             select p.C_AcctSchema_Process_id as referencekey_id, p.ad_client_id, p.ad_org_id,
+                    ad_column_identifier('C_AcctSchema_Process', p.C_AcctSchema_Process_id,'en_US') as recordinfo
+             from C_AcctSchema c inner join C_AcctSchema_Process p on c.c_acctSchema_id = p.c_acctSchema_id  
+             where c.ad_org_id <> p.ad_org_id
+      ]]></Sql>
+   </SqlMethod>
+   <SqlMethod name="selectDifOrgInGL" type="preparedStatement" return="multiple">
+      <SqlMethodComment></SqlMethodComment>
+      <Sql><![CDATA[
+             select gl.C_AcctSchema_GL_id as referencekey_id, gl.ad_client_id, gl.ad_org_id,
+                    ad_column_identifier('C_AcctSchema_GL', gl.C_AcctSchema_GL_id,'en_US') as recordinfo
+             from C_AcctSchema c inner join  C_AcctSchema_GL gl on c.c_acctSchema_id = gl.c_acctSchema_id 
+             where c.ad_org_id <> gl.ad_org_id
+      ]]></Sql>
+   </SqlMethod>
+   <SqlMethod name="selectDifOrgInDefault" type="preparedStatement" return="multiple">
+      <SqlMethodComment></SqlMethodComment>
+      <Sql><![CDATA[
+             select d.C_AcctSchema_Default_id as referencekey_id, d.ad_client_id, d.ad_org_id,
+                    ad_column_identifier('C_AcctSchema_Default', d.C_AcctSchema_Default_id,'en_US') as recordinfo
+             from C_AcctSchema c inner join  C_AcctSchema_Default d on c.c_acctSchema_id = d.c_acctSchema_id 
+             where c.ad_org_id <> d.ad_org_id
+      ]]></Sql>
+   </SqlMethod>
+   <SqlMethod name="getAlertRuleId" type="preparedStatement" return="string">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+       SELECT MAX(ad_alertrule_id) AS name
+       FROM AD_ALERTRULE
+       WHERE NAME = ?
+         AND ISACTIVE = 'Y'
+         AND AD_CLIENT_ID = ?
+      ]]></Sql>
+    <Parameter name="name"/>
+    <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="payment"/>
+  </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="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(), ?, ?, 'Y',
+        now(), '100', now(), '100',
+        ?, ?, '', 'D',
+        ?
+      )
+    ]]></Sql>
+    <Parameter name="clientId"/>
+    <Parameter name="orgId"/>
+    <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(), ?, '0', 'Y',
+        NOW(), '0', NOW(), '0',
+        ?, ?, ?, ?)
+      ]]>
+    </Sql>
+    <Parameter name="client"/>
+    <Parameter name="description" />
+    <Parameter name="adAlertRuleId" />
+    <Parameter name="recordId" />
+    <Parameter name="referencekey_id" />
+  </SqlMethod>
+  <SqlMethod name="getRoleId" type="preparedStatement" return="multiple">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql><![CDATA[
+       SELECT distinct r.ad_role_id
+       FROM ad_window_access wa join ad_role r on (wa.ad_role_id=r.ad_role_id)
+       WHERE wa.ad_window_id = ?
+             AND wa.ad_client_id = ?
+             AND wa.isactive = 'Y'
+             AND r.isactive = 'Y'
+             AND r.ismanual = 'Y'
+      ]]></Sql>
+    <Parameter name="window"/>
+    <Parameter name="clientId"/>
+  </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>
+  <SqlMethod name="existAPRMbasetables" type="preparedStatement" return="boolean">
+    <SqlMethodComment>Check if the FIN_Finacc_Transaction table exist</SqlMethodComment>
+    <Sql><![CDATA[
+       SELECT count(*) AS EXISTING
+       FROM ad_table
+       WHERE ad_table_id = '4D8C3B3C31D1410DA046140C9F024D17'
+      ]]>
+    </Sql>
+  </SqlMethod>
+</SqlClass>
+
