Advertisement
widana

Untitled

Jul 18th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION r_inquiry_rekap_hutang(CHARACTER VARYING, BIGINT, CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING)
  2.   RETURNS SETOF refcursor AS
  3. $BODY$
  4. DECLARE
  5.     pRefHeader              REFCURSOR := 'refHeader';
  6.     pRefDetail              REFCURSOR := 'refDetail';
  7.     pSessionId              ALIAS FOR $1;
  8.     pRecordOwnerId          ALIAS FOR $2;
  9.     pFilterSupplier         ALIAS FOR $3;
  10.     pStartDate              ALIAS FOR $4;
  11.     pEndDate                ALIAS FOR $5;
  12.    
  13.     vEmptyId                BIGINT := -99;
  14.     vEmpty                  TEXT := '';
  15.     vNone                   CHARACTER VARYING := '-';
  16.     vNo                     CHARACTER VARYING := 'N';
  17.     vYes                    CHARACTER VARYING := 'Y';
  18.     vCreditDocTypeId        BIGINT :=201;
  19.     vDateNow                CHARACTER VARYING := '';
  20.     vStartDate              CHARACTER VARYING := '';
  21.     vEndDate                CHARACTER VARYING := '';
  22.     vSql                    CHARACTER VARYING := '';
  23. BEGIN
  24.     SELECT pEndDate INTO vEndDate;
  25.     Open pRefHeader FOR
  26.         SELECT record_owner_code, ou_company, pStartDate, pEndDate  
  27.         FROM m_record_owner WHERE record_owner_id=pRecordOwnerId;
  28.     RETURN NEXT pRefHeader;
  29.    
  30.     -- hari sekarang
  31.     SELECT TO_CHAR(NOW(),'YYYYMM') INTO vDateNow;
  32.     -- periode mulai
  33.     IF pStartDate='' THEN
  34.         SELECT '0' INTO vStartDate;
  35.     ELSE
  36.         SELECT pStartDate INTO vStartDate;
  37.     END IF;
  38.     -- periode selesai
  39.     IF pEndDate='' THEN
  40.         SELECT vDateNow INTO vEndDate;
  41.     ELSE
  42.         SELECT pEndDate INTO vEndDate;
  43.     END IF;
  44.     -- ambil nominal hutang lancar dari fi_invoice_ap_balance
  45.     vSql := 'INSERT INTO tt_rekap_hutang(session_uuid, supplier_id, before_due_amount,
  46.        over_due_amount, payment_amount)
  47.    SELECT ''' || pSessionId || ''', B.supplier_id,
  48.        COALESCE(SUM(A.invoice_amount), 0), 0, 0
  49.    FROM fi_invoice_ap_balance A
  50.    INNER JOIN fi_invoice_ap B ON A.invoice_ap_id=B.invoice_ap_id
  51.    WHERE A.flg_paid='''|| vNo ||''' AND A.record_owner_id=' || pRecordOwnerId || '
  52.        AND A.doc_type_id=' || vCreditDocTypeId || ' AND B.doc_date <= ''' || vEndDate || '''';
  53.     -- tambahkan filter jika periode mulai dipilih
  54.     IF pStartDate <> '' THEN
  55.         vSql := vSql || ' AND B.doc_date >= ''' || pStartDate || '''';
  56.     END IF;
  57.      -- tambahkan filter jika supplier dipilih
  58.     IF pFilterSupplier <> '' THEN
  59.         vSql := vSql || ' AND A.supplier_id=' || pFilterSupplier;
  60.     END IF;
  61.     vSql := vSql || ' AND B.due_date <= ''' || vDateNow || ''' GROUP BY B.supplier_id';
  62.     EXECUTE vSql;
  63.     -- ambil nominal hutang lewat jauth tempo dari fi_invoice_ap_balance
  64.     vSql := 'INSERT INTO tt_rekap_hutang(session_uuid, supplier_id, before_due_amount,
  65.        over_due_amount, payment_amount)
  66.    SELECT ''' || pSessionId || ''', B.supplier_id,
  67.        0, COALESCE(SUM(A.invoice_amount), 0), 0
  68.    FROM fi_invoice_ap_balance A
  69.    INNER JOIN fi_invoice_ap B ON A.invoice_ap_id=B.invoice_ap_id
  70.    WHERE A.flg_paid='''|| vNo ||''' AND A.record_owner_id=' || pRecordOwnerId || '
  71.        AND A.doc_type_id=' || vCreditDocTypeId || ' AND B.doc_date <= ''' || vEndDate || '''';
  72.     -- tambahkan filter jika periode mulai dipilih
  73.     IF pStartDate <> '' THEN
  74.         vSql := vSql || ' AND B.doc_date >= ''' || pStartDate || '''';
  75.     END IF;
  76.      -- tambahkan filter jika supplier dipilih
  77.     IF pFilterSupplier <> '' THEN
  78.         vSql := vSql || ' AND A.supplier_id=' || pFilterSupplier;
  79.     END IF;
  80.     vSql := vSql || ' AND B.due_date > ''' || vDateNow || ''' GROUP BY B.supplier_id';
  81.     EXECUTE vSql;
  82.     -- ambil nominal nominal bayar dari fi_invoice_ap_balance
  83.     vSql := 'INSERT INTO tt_rekap_hutang(session_uuid, supplier_id, before_due_amount,
  84.        over_due_amount, payment_amount)
  85.    SELECT ''' || pSessionId || ''', B.supplier_id,
  86.        0, 0, COALESCE(SUM(A.payment_amount), 0)
  87.    FROM fi_invoice_ap_balance A
  88.    INNER JOIN fi_invoice_ap B ON A.invoice_ap_id=B.invoice_ap_id
  89.    WHERE A.flg_paid='''|| vNo ||''' AND A.record_owner_id=' || pRecordOwnerId || '
  90.        AND A.doc_type_id=' || vCreditDocTypeId || ' AND B.doc_date <= ''' || vEndDate || '''';
  91.     -- tambahkan filter jika periode mulai dipilih
  92.     IF pStartDate <> '' THEN
  93.         vSql := vSql || ' AND B.doc_date >= ''' || pStartDate || '''';
  94.     END IF;
  95.     -- tambahkan filter jika supplier dipilih
  96.     IF pFilterSupplier <> '' THEN
  97.         vSql := vSql || ' AND A.supplier_id=' || pFilterSupplier;
  98.     END IF;
  99.     vSql := vSql || ' GROUP BY B.supplier_id';
  100.     EXECUTE vSql;
  101.     Open pRefDetail FOR
  102.         SELECT A.supplier_id, B.supplier_name,
  103.             COALESCE(SUM(A.before_due_amount),0) AS before_due_amount,
  104.             COALESCE(SUM(A.over_due_amount),0) AS over_due_amount,
  105.             COALESCE(SUM(A.payment_amount),0) AS payment_amount
  106.             -- (before_due_amount+over_due_amount-payment_amount) AS balance_amount
  107.         FROM tt_rekap_hutang A
  108.         INNER JOIN m_supplier B ON A.supplier_id=B.supplier_id
  109.         GROUP BY A.supplier_id, B.supplier_name;
  110.     RETURN NEXT pRefDetail ;
  111.     DELETE FROM tt_rekap_hutang WHERE session_uuid=pSessionId;
  112. END;
  113. $BODY$
  114.   LANGUAGE plpgsql VOLATILE
  115.   SET search_path = public, mstr, ptg, htg, pb, pj, batch
  116.   COST 100;
  117.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement