src-db/database/model/triggers/C_CASH_CHK_RESTRICTIONS_TRG.xml
author Armaignac <collazoandy4@gmail.com>
Thu, 05 Dec 2019 15:06:14 +0100
changeset 36846 4f441ebb434f
parent 16390 588bdc741142
permissions -rw-r--r--
Fixes BUG-42398: When validating a new costing rule, physical inventories should
be created in the warehouse's organization

The warehouse organization is not taked into account when the inventory count is created
in the costing rule validation process

Now the warehouse organization is used to create the physical inventories when validating
a new costing rule
<?xml version="1.0"?>
  <database name="TRIGGER C_CASH_CHK_RESTRICTIONS_TRG">
    <trigger name="C_CASH_CHK_RESTRICTIONS_TRG" table="C_CASH" fires="before" insert="true" update="true" delete="true" foreach="row">
      <body><![CDATA[





    /*************************************************************************
    * 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) 2001-2012 Openbravo SLU
    * All Rights Reserved.
    * Contributor(s):  ______________________________________.
    ************************************************************************/
    v_DateNull DATE := TO_DATE('01-01-1900','DD-MM-YYYY');
        
BEGIN
    
    IF AD_isTriggerEnabled()='N' THEN RETURN;
    END IF;

  IF UPDATING
      THEN  IF(:old.Processed='Y'
        AND ((COALESCE(:old.STATEMENTDATE, v_DateNull) <> COALESCE(:new.STATEMENTDATE, v_DateNull))
        OR(COALESCE(:old.AD_ORGTRX_ID, '0') <> COALESCE(:new.AD_ORGTRX_ID, '0'))
        OR(COALESCE(:old.USER1_ID, '0') <> COALESCE(:new.USER1_ID, '0'))
        OR(COALESCE(:old.USER2_ID, '0') <> COALESCE(:new.USER2_ID, '0'))
        OR(COALESCE(:old.AD_ORG_ID, '0') <> COALESCE(:new.AD_ORG_ID, '0'))
        OR(COALESCE(:old.AD_CLIENT_ID, '0') <> COALESCE(:new.AD_CLIENT_ID, '0')))) THEN
          RAISE_APPLICATION_ERROR(-20000, '@20501@') ;
      END IF;
      IF(:old.Posted='Y'
        AND ((COALESCE(:old.DATEACCT, v_DateNull) <> COALESCE(:new.DATEACCT, v_DateNull))
        OR(COALESCE(:old.C_CAMPAIGN_ID, '0') <> COALESCE(:new.C_CAMPAIGN_ID, '0'))
        OR(COALESCE(:old.C_PROJECT_ID, '0') <> COALESCE(:new.C_PROJECT_ID, '0'))
        OR(COALESCE(:old.C_ACTIVITY_ID, '0') <> COALESCE(:new.C_ACTIVITY_ID, '0')))) THEN
          RAISE_APPLICATION_ERROR(-20000, '@20501@') ;
      END IF;
    END IF;

   IF(DELETING) THEN
    IF(:old.Processed='Y') THEN
      RAISE_APPLICATION_ERROR(-20000, '@20501@') ;
    END IF;
   END IF;
   IF(INSERTING) THEN
    IF(:NEW.Processed='Y') THEN
      RAISE_APPLICATION_ERROR(-20000, '@20501@') ;
    END IF;
   END IF;
  END C_CASH_CHK_RESTRICTIONS_TRG
]]></body>
    </trigger>
  </database>