src-db/database/model/functions/C_DP_MANAGEMENT_POST.xml
author Asier Lostalé <asier.lostale@openbravo.com>
Mon, 05 May 2008 06:59:24 +0000
changeset 799 fef2c5e2feb7
parent 756 ae11e4610537
child 1178 9d1c8b3fd305
permissions -rw-r--r--
Merged cleanup branch (r3931) with trunk
carlos@0
     1
<?xml version="1.0"?>
adrian@94
     2
  <database name="FUNCTION C_DP_MANAGEMENT_POST">
adrian@94
     3
    <function name="C_DP_MANAGEMENT_POST" type="NULL">
antonio@735
     4
      <parameter name="p_pinstance_id" type="NUMERIC" mode="in">
antonio@735
     5
        <default/>
antonio@735
     6
      </parameter>
antonio@735
     7
      <parameter name="p_dp_management_id" type="NUMERIC" mode="in">
antonio@735
     8
        <default><![CDATA[NULL]]></default>
antonio@735
     9
      </parameter>
gorkaion@239
    10
      <body><![CDATA[/*************************************************************************
carlos@0
    11
* The contents of this file are subject to the Openbravo  Public  License
carlos@0
    12
* Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
carlos@0
    13
* Version 1.1  with a permitted attribution clause; you may not  use this
carlos@0
    14
* file except in compliance with the License. You  may  obtain  a copy of
carlos@0
    15
* the License at http://www.openbravo.com/legal/license.html
carlos@0
    16
* Software distributed under the License  is  distributed  on  an "AS IS"
carlos@0
    17
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
carlos@0
    18
* License for the specific  language  governing  rights  and  limitations
carlos@0
    19
* under the License.
carlos@0
    20
* The Original Code is Openbravo ERP.
carlos@0
    21
* The Initial Developer of the Original Code is Openbravo SL
carlos@0
    22
* All portions are Copyright (C) 2001-2006 Openbravo SL
carlos@0
    23
* All Rights Reserved.
carlos@0
    24
* Contributor(s):  ______________________________________.
carlos@0
    25
************************************************************************/
carlos@0
    26
  --  Logistice
carlos@0
    27
  v_ResultStr VARCHAR2(2000):='';
carlos@0
    28
  v_Message VARCHAR2(2000):='';
carlos@0
    29
  v_Result NUMBER:=1; -- 0=failure
carlos@0
    30
  v_Record_ID NUMBER(10) ;
carlos@0
    31
  v_AD_User_ID NUMBER(10) ;
carlos@0
    32
  v_AD_Client_ID NUMBER(10) ;
carlos@0
    33
  v_AD_Org_ID NUMBER(10) ;
carlos@0
    34
  v_Processed CHAR(1) ;
carlos@0
    35
  v_Posted char(1) ;
carlos@0
    36
  v_Currency NUMBER;
carlos@0
    37
  v_Date DATE;
carlos@0
    38
  v_CashBook_ISO_Code VARCHAR(10) ;
carlos@0
    39
  v_Record_Description VARCHAR2(2000):='';
carlos@0
    40
  v_Debt_Payment_ID NUMBER(10) ;
carlos@0
    41
  --Addesd by PSarobe 12062007
carlos@0
    42
  v_line NUMBER;
carlos@0
    43
  v_DpManagementline_ID NUMBER (10);
carlos@0
    44
  v_Remittanceline_ID NUMBER(10);
carlos@0
    45
  v_documentno_Settlement VARCHAR2(40);
carlos@0
    46
  v_dateSettlement DATE;
carlos@0
    47
  v_Cancel_Processed CHAR(1);
carlos@0
    48
  v_nameBankstatement VARCHAR2 (60);
carlos@0
    49
  v_dateBankstatement DATE;
carlos@0
    50
  v_nameCash VARCHAR2 (60);
carlos@0
    51
  v_dateCash DATE;
carlos@0
    52
  v_Bankstatementline_ID NUMBER;
carlos@0
    53
  v_CashLine_ID NUMBER;
carlos@0
    54
  v_ispaid CHAR(1);
carlos@0
    55
  v_Settlement_Cancel_ID NUMBER;
asier@799
    56
  v_DBA_ErrorLog_ID NUMBER;
carlos@0
    57
  --  Parameter
carlos@0
    58
  TYPE RECORD IS REF CURSOR;
carlos@0
    59
    Cur_Parameter RECORD;
carlos@0
    60
    --  Parameter Variables
carlos@0
    61
    v_Aux NUMBER;
carlos@0
    62
    v_CanceledNotChargeAmt NUMBER:=0;
carlos@0
    63
    v_GeneratedAmt NUMBER:=0;
carlos@0
    64
    v_ChargedAmt NUMBER:=0;
carlos@0
    65
    v_ForcedOrg NUMBER;
carlos@0
    66
    v_ManualAmt NUMBER:=0;
carlos@0
    67
    Cur_Lines RECORD;
carlos@0
    68
    Cur_Line_DP RECORD;
carlos@0
    69
    Cur_DPDebtpayment RECORD;
carlos@0
    70
    FINISH_PROCESS BOOLEAN:=false;
carlos@0
    71
  BEGIN
carlos@0
    72
    IF(p_PInstance_ID IS NOT NULL) THEN
carlos@0
    73
      --  Update AD_PInstance
carlos@0
    74
      DBMS_OUTPUT.PUT_LINE('Updating PInstance - Processing ' || p_PInstance_ID) ;
carlos@0
    75
      v_ResultStr:='PInstanceNotFound';
carlos@0
    76
      AD_UPDATE_PINSTANCE(p_PInstance_ID, NULL, 'Y', NULL, NULL) ;
carlos@0
    77
      --  Get Parameters
carlos@0
    78
      v_ResultStr:='ReadingParameters';
carlos@0
    79
      FOR Cur_Parameter IN
carlos@0
    80
        (SELECT i.Record_ID,
carlos@0
    81
          i.AD_User_ID,
carlos@0
    82
          p.ParameterName,
carlos@0
    83
          p.P_String,
carlos@0
    84
          p.P_Number,
carlos@0
    85
          p.P_Date
carlos@0
    86
        FROM AD_PInstance i
carlos@0
    87
        LEFT JOIN AD_PInstance_Para p
carlos@0
    88
          ON i.AD_PInstance_ID=p.AD_PInstance_ID
carlos@0
    89
        WHERE i.AD_PInstance_ID=p_PInstance_ID
carlos@0
    90
        ORDER BY p.SeqNo
carlos@0
    91
        )
carlos@0
    92
      LOOP
carlos@0
    93
        v_Record_ID:=Cur_Parameter.Record_ID;
carlos@0
    94
      END LOOP; --  Get Parameter
carlos@0
    95
      DBMS_OUTPUT.PUT_LINE('  Record_ID=' || v_Record_ID) ;
carlos@0
    96
    ELSE
gorkaion@239
    97
      DBMS_OUTPUT.PUT_LINE('--<<C_Settlement_Post>>') ;
carlos@0
    98
      v_Record_ID:=p_DP_Management_ID;
carlos@0
    99
    END IF;
carlos@0
   100
  BEGIN --BODY
carlos@0
   101
    SELECT UpdatedBy,
carlos@0
   102
      AD_Client_ID,
carlos@0
   103
      Processed,
carlos@0
   104
      Posted
carlos@0
   105
    INTO v_AD_User_ID,
carlos@0
   106
      v_AD_Client_ID,
carlos@0
   107
      v_processed,
carlos@0
   108
      v_posted
carlos@0
   109
    FROM c_DP_Management
carlos@0
   110
    WHERE c_DP_Management_ID=v_Record_ID;
carlos@0
   111
carlos@0
   112
  --Check DP status, this is used for process and unprocess
carlos@0
   113
  -- Modified by PSarobe 12062007
carlos@0
   114
carlos@0
   115
	 SELECT COUNT(*), MAX(ml.C_DP_ManagementLine_Id)
carlos@0
   116
      INTO v_Aux, v_DpManagementline_ID
carlos@0
   117
      FROM C_DP_ManagementLine ml, C_DEBT_PAYMENT dp
carlos@0
   118
      WHERE C_DP_Management_ID=v_Record_ID
carlos@0
   119
        AND ml.c_debt_payment_id=dp.c_debt_payment_id
carlos@0
   120
        AND C_Debt_Payment_Status(dp.C_SETTLEMENT_CANCEL_ID, dp.CANCEL_PROCESSED, dp.GENERATE_PROCESSED, dp.IsPaid, dp.Isvalid, dp.C_CASHLINE_ID, dp.C_BANKSTATEMENTLINE_ID)!='P';
carlos@0
   121
carlos@0
   122
	 IF v_Aux!=0 THEN
carlos@0
   123
	  	SELECT ml.line, dp.c_Bankstatementline_Id, dp.c_cashline_id, dp.c_settlement_cancel_id, dp.ispaid, dp.cancel_processed
carlos@0
   124
		INTO v_line, v_Bankstatementline_ID, v_CashLine_ID, v_Settlement_Cancel_ID, v_ispaid, v_Cancel_Processed
carlos@0
   125
		FROM C_DP_ManagementLine ml, C_DEBT_PAYMENT dp
carlos@0
   126
		WHERE ml.c_debt_payment_id=dp.c_debt_payment_id
carlos@0
   127
		AND ml.C_DP_ManagementLine_ID = v_DpManagementline_ID;
carlos@0
   128
	       	   IF v_Bankstatementline_ID IS NOT NULL THEN
carlos@0
   129
			   	 SELECT C_BANKSTATEMENT.NAME, C_BANKSTATEMENT.STATEMENTDATE
carlos@0
   130
				 INTO v_nameBankstatement, v_dateBankstatement
carlos@0
   131
				 FROM C_BANKSTATEMENT, C_BANKSTATEMENTLINE
carlos@0
   132
				 WHERE C_BANKSTATEMENT.C_BANKSTATEMENT_ID = C_BANKSTATEMENTLINE.C_BANKSTATEMENT_ID
carlos@0
   133
				 AND C_BANKSTATEMENTLINE.C_BANKSTATEMENTLINE_ID = v_Bankstatementline_ID;
carlos@0
   134
          		 RAISE_APPLICATION_ERROR(-20000, '@Inline@'||v_line||' '||'@debtpayment@'||' '||'@ConciliatedDebtPaymentBank@'||v_nameBankstatement||' '||'@Bydate@'||v_dateBankstatement) ;
carlos@0
   135
			   END IF;
carlos@0
   136
			   IF v_CashLine_ID IS NOT NULL THEN
carlos@0
   137
			   	 SELECT C_CASH.NAME, C_CASH.STATEMENTDATE
carlos@0
   138
				 INTO v_nameCash, v_dateCash
carlos@0
   139
				 FROM C_CASH, C_CASHLINE
carlos@0
   140
				 WHERE C_CASH.C_CASH_ID = C_CASHLINE.C_CASH_ID
carlos@0
   141
				 AND C_CASHLINE.C_CASHLINE_ID = v_CashLine_ID;
carlos@0
   142
          		 RAISE_APPLICATION_ERROR(-20000, '@Inline@'||v_line||' '||'@debtpayment@'||' '||'@ConciliatedDebtPaymentCash@'||v_nameCash||' '||'@Bydate@'||v_dateCash) ;
carlos@0
   143
			   END IF;
carlos@0
   144
			   IF v_Cancel_Processed='Y' AND v_ispaid='N' THEN
carlos@0
   145
			   	 SELECT documentno, datetrx
carlos@0
   146
				 INTO v_documentno_Settlement, v_dateSettlement
carlos@0
   147
				 FROM C_SETTLEMENT
carlos@0
   148
				 WHERE C_SETTLEMENT_ID = v_Settlement_Cancel_ID;
carlos@0
   149
				 RAISE_APPLICATION_ERROR(-20000, '@Inline@'||v_line||' '||'@debtpayment@'||' '||'@ConciliatedDebtPaymentCancel@'||v_documentno_Settlement||' '||'@Bydate@'||v_dateSettlement) ;
carlos@0
   150
			   END IF;
carlos@0
   151
      END IF;
carlos@0
   152
carlos@0
   153
carlos@0
   154
carlos@0
   155
    IF(v_Processed='Y') and (not FINISH_PROCESS) THEN
carlos@0
   156
      --Checking restrictions for unprocessing
carlos@0
   157
      IF v_Posted='Y' THEN
carlos@0
   158
        RAISE_APPLICATION_ERROR(-20000, '@DPManagementDocumentPosted@') ;
carlos@0
   159
      END IF;
carlos@0
   160
      IF(NOT FINISH_PROCESS) THEN
carlos@0
   161
        SELECT count(*), MAX(ml.line)
carlos@0
   162
        INTO v_Aux, v_line
carlos@0
   163
        FROM C_DP_ManagementLine ml,
carlos@0
   164
          C_Debt_Payment dp
carlos@0
   165
        WHERE ml.C_DP_Management_ID=v_Record_ID
carlos@0
   166
          AND ml.C_Debt_Payment_ID=dp.C_Debt_Payment_ID
carlos@0
   167
          AND coalesce(dp.Status, 'DE')!=coalesce(ml.Status_To, 'DE') ;
carlos@0
   168
        IF v_Aux!=0 THEN
carlos@0
   169
          RAISE_APPLICATION_ERROR(-20000, '@Inline@'||v_line||' '||'@WrongStatusToFrom@') ;
carlos@0
   170
        END IF;
carlos@0
   171
      END IF ;--FINISH_PROCESS
carlos@0
   172
      IF(NOT FINISH_PROCESS) THEN
carlos@0
   173
        --unprocessing...
carlos@0
   174
        UPDATE C_DP_Management
carlos@0
   175
          SET Processed='N',
carlos@0
   176
          Updated=now(),
carlos@0
   177
          UpdatedBy=v_AD_User_ID
carlos@0
   178
        WHERE C_DP_Management_ID=v_Record_ID;
carlos@0
   179
        for Cur_Lines in
carlos@0
   180
          (SELECT *  FROM C_DP_ManagementLine  WHERE C_DP_Management_ID=v_Record_ID)
carlos@0
   181
        loop
carlos@0
   182
          UPDATE C_Debt_Payment
carlos@0
   183
            SET status=Cur_Lines.Status_From,
carlos@0
   184
            updated=now(),
carlos@0
   185
            UpdatedBy=v_AD_User_ID
carlos@0
   186
          WHERE C_Debt_Payment_ID=Cur_Lines.C_Debt_Payment_ID;
carlos@0
   187
        end loop;
carlos@0
   188
        v_Message:='@UnProcessedDPManagement@';
carlos@0
   189
        FINISH_PROCESS:=true;
carlos@0
   190
      END IF;--FINISH_PROCESS
carlos@0
   191
    END IF;
carlos@0
   192
    /*
carlos@0
   193
    *  Checking Restrictions
carlos@0
   194
    */
carlos@0
   195
    IF(NOT FINISH_PROCESS) THEN
carlos@0
   196
      SELECT count(*), MAX(ml.line)
carlos@0
   197
      INTO v_Aux, v_line
carlos@0
   198
      FROM C_DP_ManagementLine ml,
carlos@0
   199
        C_Debt_Payment dp
carlos@0
   200
      WHERE ml.C_DP_Management_ID=v_Record_ID
carlos@0
   201
        AND ml.C_Debt_Payment_ID=dp.C_Debt_Payment_ID
carlos@0
   202
        AND coalesce(dp.Status, 'DE')!=coalesce(ml.Status_From, 'DE') ;
carlos@0
   203
      IF v_Aux!=0 THEN
carlos@0
   204
        RAISE_APPLICATION_ERROR(-20000, '@Inline@'||v_line||' '||'@WrongStatusToFrom@') ;
carlos@0
   205
      END IF;
carlos@0
   206
    END IF;--FINISH_PROCESS
carlos@0
   207
  IF(NOT FINISH_PROCESS) THEN
carlos@0
   208
      SELECT count(*)
carlos@0
   209
      INTO v_Aux
carlos@0
   210
      FROM C_DP_Management m,
carlos@0
   211
       C_DocType
carlos@0
   212
      WHERE C_DocType.DocBaseType IN ('DPM')
gorkaion@239
   213
     AND AD_ISORGINCLUDED(M.AD_Org_ID,C_DocType.AD_Org_ID, M.AD_Client_ID) <> -1
carlos@0
   214
    AND M.C_DOCTYPE_ID = C_DOCTYPE.C_DOCTYPE_ID
carlos@0
   215
    AND M.C_DP_MANAGEMENT_ID=V_RECORD_ID;
carlos@0
   216
carlos@0
   217
      if v_Aux=0 then
carlos@0
   218
        RAISE_APPLICATION_ERROR(-20000, '@NotCorrectOrgDoctypeDPManagement@') ;
carlos@0
   219
      end if;
carlos@0
   220
    END IF;--FINISH_PROCESS
carlos@0
   221
  	/*To be deprecated. We are checking this restriction at the beginning. To be fixed
carlos@0
   222
    IF(NOT FINISH_PROCESS) THEN
carlos@0
   223
      for Cur_Line_DP in
carlos@0
   224
        (SELECT dp.*
carlos@0
   225
        FROM C_DP_ManagementLine ml,
carlos@0
   226
          C_Debt_Payment dp
carlos@0
   227
        WHERE ml.C_DP_Management_ID=v_Record_ID
carlos@0
   228
          AND dp.C_Debt_Payment_ID=ml.C_Debt_Payment_ID
carlos@0
   229
        )
carlos@0
   230
      loop
carlos@0
   231
        if C_Debt_Payment_Status(Cur_Line_DP.C_SETTLEMENT_CANCEL_ID, Cur_Line_DP.CANCEL_PROCESSED, Cur_Line_DP.GENERATE_PROCESSED, Cur_Line_DP.ISPAID, Cur_Line_DP.ISVALID, Cur_Line_DP.C_CASHLINE_ID, Cur_Line_DP.C_BANKSTATEMENTLINE_ID)!='P'then
carlos@0
   232
          v_Message:='@WrongDPStatus@';
carlos@0
   233
          v_Result:=0;
carlos@0
   234
          FINISH_PROCESS:=true;
carlos@0
   235
          EXIT;
carlos@0
   236
        end if;
carlos@0
   237
      end loop;
carlos@0
   238
    END IF;*/
carlos@0
   239
    IF(NOT FINISH_PROCESS) THEN
carlos@0
   240
      SELECT count(*), MAX(C_Debt_Payment_ID)
carlos@0
   241
      INTO v_Aux, v_Debt_Payment_ID
carlos@0
   242
      FROM
carlos@0
   243
        (SELECT C_Debt_Payment_ID
carlos@0
   244
        FROM C_DP_ManagementLine
carlos@0
   245
        WHERE C_DP_Management_ID=v_Record_ID
carlos@0
   246
        GROUP BY C_Debt_Payment_ID
gorkaion@239
   247
        HAVING count(*)>1
carlos@0
   248
        )
carlos@0
   249
        A;
carlos@0
   250
      IF v_Aux!=0 THEN
carlos@0
   251
        FOR Cur_DPDebtpayment IN (SELECT line
carlos@0
   252
		 	 						 	FROM C_DP_ManagementLine
carlos@0
   253
										WHERE C_DP_ManagementLine.C_DP_Management_id=v_Record_ID
carlos@0
   254
										AND C_DP_ManagementLine.c_debt_payment_id=v_Debt_Payment_ID) LOOP
carlos@0
   255
		 v_Message:=v_Message||Cur_DPDebtpayment.line||', ';
carlos@0
   256
		 END LOOP;
carlos@0
   257
		 RAISE_APPLICATION_ERROR(-20000, '@Inlines@'||v_Message||' '||'@Samedebtpayment@') ;
carlos@0
   258
      END IF;
carlos@0
   259
    END IF;--FINISH_PROCESS
carlos@0
   260
    IF(NOT FINISH_PROCESS) THEN
carlos@0
   261
      SELECT count(*), MAX(ml.line)
carlos@0
   262
      INTO v_Aux, v_line
carlos@0
   263
      FROM C_DP_ManagementLine ml,
carlos@0
   264
        C_DP_Management m
carlos@0
   265
      WHERE ml.C_DP_Management_ID=m.C_DP_Management_ID
carlos@0
   266
        AND m.C_DP_Management_ID=v_Record_ID
carlos@0
   267
        AND exists
carlos@0
   268
        (SELECT 1
carlos@0
   269
        FROM C_DP_ManagementLine ml1,
carlos@0
   270
          C_DP_Management m1
carlos@0
   271
        WHERE m1.C_DP_Management_ID=ml1.C_DP_Management_ID
carlos@0
   272
          AND ml1.C_Debt_Payment_ID=ml.C_Debt_Payment_ID
carlos@0
   273
          AND m1.processed='Y'
gorkaion@239
   274
          AND m1.DateAcct>m.DateAcct
carlos@0
   275
        )
carlos@0
   276
        ;
carlos@0
   277
      if v_Aux!=0 then
carlos@0
   278
       RAISE_APPLICATION_ERROR(-20000, '@Inline@'||v_line||' '||'@LaterChangeStatus@') ;
carlos@0
   279
      end if;
carlos@0
   280
    END IF;--FINISH_PROCESS
carlos@0
   281
    --Processing...
carlos@0
   282
    IF(NOT FINISH_PROCESS) THEN
carlos@0
   283
      UPDATE C_DP_Management
carlos@0
   284
        SET Processed='Y',
carlos@0
   285
        Updated=now(),
carlos@0
   286
        UpdatedBy=v_AD_User_ID
carlos@0
   287
      WHERE C_DP_Management_ID=v_Record_ID;
carlos@0
   288
      for Cur_Lines in
carlos@0
   289
        (SELECT *  FROM C_DP_ManagementLine  WHERE C_DP_Management_ID=v_Record_ID)
carlos@0
   290
      loop
carlos@0
   291
        UPDATE C_Debt_Payment
carlos@0
   292
          SET status=coalesce(Cur_Lines.Status_To, 'DE'),
carlos@0
   293
          updated=now(),
carlos@0
   294
          UpdatedBy=v_AD_User_ID
carlos@0
   295
        WHERE C_Debt_Payment_ID=Cur_Lines.C_Debt_Payment_ID;
carlos@0
   296
      end loop;
carlos@0
   297
    END IF;--FINISH_PROCESS
gorkaion@239
   298
    --<<FINISH_PROCESS>>
carlos@0
   299
    --  Update AD_PInstance
carlos@0
   300
    IF(p_PInstance_ID IS NOT NULL) THEN
carlos@0
   301
      DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || v_Message) ;
carlos@0
   302
      AD_UPDATE_PINSTANCE(p_PInstance_ID, NULL, 'N', v_Result, v_Message) ;
carlos@0
   303
    ELSE
gorkaion@239
   304
      DBMS_OUTPUT.PUT_LINE('--<<C_DP_Management_Post finished>> ' || v_Message) ;
carlos@0
   305
      IF(v_Result=0) THEN
carlos@0
   306
        RAISE_APPLICATION_ERROR(-20100, v_Message) ;
carlos@0
   307
      END IF;
carlos@0
   308
    END IF;
carlos@0
   309
    RETURN;
carlos@0
   310
  END; --BODY
carlos@0
   311
EXCEPTION
carlos@0
   312
WHEN OTHERS THEN
carlos@0
   313
  v_ResultStr:= '@ERROR=' || SQLERRM;
carlos@0
   314
  DBMS_OUTPUT.PUT_LINE(v_ResultStr) ;
carlos@0
   315
  IF(p_PInstance_ID IS NOT NULL) THEN
carlos@0
   316
    ROLLBACK;
carlos@0
   317
    AD_UPDATE_PINSTANCE(p_PInstance_ID, NULL, 'N', 0, v_ResultStr) ;
carlos@0
   318
  ELSE
carlos@0
   319
    DECLARE
carlos@0
   320
      v_Code NUMBER:=SQLCODE;
carlos@0
   321
    BEGIN
asier@799
   322
      AD_SEQUENCE_NEXT('DBA_ERRORLOG', v_AD_Client_ID, v_DBA_ErrorLog_ID);
carlos@0
   323
      INSERT
carlos@0
   324
      INTO DBA_ERRORLOG
carlos@0
   325
        (
carlos@0
   326
          DBA_ErrorLog_ID, Created, Code,
carlos@0
   327
          Msg, Info
carlos@0
   328
        )
carlos@0
   329
        VALUES
carlos@0
   330
        (
asier@799
   331
          v_DBA_ErrorLog_ID, now(), v_Code,
carlos@0
   332
          v_ResultStr, 'C_DP_Management_Post'
carlos@0
   333
        )
carlos@0
   334
        ;
carlos@0
   335
    END;
carlos@0
   336
    RAISE;
carlos@0
   337
  END IF;
carlos@0
   338
  RETURN;
antonio@735
   339
END C_DP_MANAGEMENT_POST
gorkaion@239
   340
]]></body>
adrian@94
   341
    </function>
adrian@94
   342
  </database>