Advertisement
samuel025

Function Validasi Alokasi FIn AR

Feb 11th, 2022
1,185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION fi_val_cross_month_alloc_trx_for_closing_ar(bigint, character varying, bigint, character varying, bigint, character varying, bigint)
  2.   RETURNS integer AS
  3. $BODY$
  4. DECLARE
  5.  
  6.     pTenantId               ALIAS FOR $1;
  7.     pSessionId              ALIAS FOR $2;
  8.     pOuId                   ALIAS FOR $3;
  9.     pYearMonth              ALIAS FOR $4;
  10.     pAdminProcessLedgerId   ALIAS FOR $5;
  11.     pDatetime               ALIAS FOR $6;
  12.     pUserId                 ALIAS FOR $7;
  13.  
  14.     vFlagAlloc              character varying(1);
  15.     vResult                 integer;
  16.     vDocTypeIdCGReceipt     bigint := 624;
  17. BEGIN
  18.    
  19.     vFlagAlloc := 'Y';
  20.     vResult := 0;
  21.    
  22.     DELETE FROM fi_cross_month_allocation_cb_in_ar WHERE admin_process_ledger_id = pAdminProcessLedgerId;
  23.    
  24.     -- ambil data receipt ar balance sudah dialokasi
  25.     -- HS, 20201111 : exclude CG Receipt, karna tidak masalah dialokasi lintas bulan
  26.     -- karna saat buat CG Receipt tidak ada buat jurnal AR
  27.     INSERT INTO fi_cross_month_allocation_cb_in_ar(
  28.             tenant_id, admin_process_ledger_id,
  29.             ou_id, doc_type_id, doc_no, doc_date, cashbank_id, partner_id,
  30.             curr_code, amount, remark, alloc_id, alloc_doc_no, alloc_doc_date,
  31.             alloc_amount, process_datetime, process_user_id)    
  32.     SELECT A.tenant_id, pAdminProcessLedgerId, A.ou_id, A.doc_type_id, A.doc_no, A.doc_date,
  33.         A.cashbank_id, A.partner_id, A.curr_code, A.amount, A.remark,
  34.         D.allocation_ar_id, D.doc_no AS alloc_doc_no, D.doc_date AS alloc_doc_date,
  35.         SUM(E.credit_amount) AS alloc_amount, pDatetime, pUserId
  36.     FROM fi_receipt_ar_balance A
  37.     INNER JOIN dt_date B ON A.doc_date = B.string_date
  38.     INNER JOIN m_ou_structure C ON A.ou_id = C.ou_id
  39.     INNER JOIN fi_allocation_ar D ON A.ref_alloc_id = D.allocation_ar_id
  40.     INNER JOIn fi_allocation_ar_balance E ON D.allocation_ar_id = E.allocation_ar_id
  41.     WHERE A.tenant_id = pTenantId AND
  42.         A.doc_type_id <> vDocTypeIdCGReceipt AND
  43.         A.flg_alloc = vFlagAlloc AND
  44.         A.doc_date = B.string_date AND
  45.         B.year_month_date = pYearMonth AND
  46.         B.year_month_date <> SUBSTR(D.doc_date,1,6) AND
  47.         A.ou_id = pOuId
  48.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.doc_no, A.doc_date,
  49.         A.cashbank_id, A.partner_id, A.curr_code, A.amount, A.remark,
  50.         D.allocation_ar_id, D.doc_no, D.doc_date;
  51.    
  52.     IF (SELECT COUNT(*) FROM fi_cross_month_allocation_cb_in_ar WHERE admin_process_ledger_id = pAdminProcessLedgerId) > 0 THEN
  53.         vResult := 1;  
  54.     END IF;
  55.    
  56.     return vResult;
  57. END;
  58. $BODY$
  59.   LANGUAGE plpgsql VOLATILE
  60.   COST 100;
  61.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement