widana

Laporan Kartu Piutang

Jul 23rd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION rpt.r_report_kartu_piutang(character varying, BIGINT, BIGINT, character varying)
  2.   RETURNS SETOF refcursor AS
  3. $BODY$
  4. DECLARE
  5.     pRefHeader                  REFCURSOR := 'refHeader';
  6.     pRefDetail                  REFCURSOR := 'refDetail';
  7.    
  8.     pSessionId                  ALIAS FOR $1;
  9.     pRecordOwnerId              ALIAS FOR $2;
  10.     pCustomerId                 ALIAS FOR $3;
  11.     pDate                       ALIAS FOR $4;
  12.    
  13.     vEmptyId                    bigint := -99;
  14.     vNullLongId                 bigint := -1;
  15.  
  16.     vEmpty                      character varying := '';
  17.     vNo                         character varying := 'N';
  18.     vYes                        character varying := 'Y';
  19.    
  20.     vYearMonth                  character varying := '';
  21.     vFilerCustomer              character varying := '';
  22.  
  23. BEGIN
  24.  
  25.     IF pCustomerId <> vNullLongId THEN
  26.         vFilerCustomer := ' AND A.customer_id =  '''|| pCustomerId ||'''';
  27.     END IF;
  28.    
  29.     OPEN pRefHeader FOR
  30.         SELECT f_get_record_owner_name(pRecordOwnerId) AS record_owner_name, CASE WHEN pCustomerId <> vNullLongId
  31.             THEN concat(f_get_customer_code(pCustomerId), ' - ', f_get_customer_name(pCustomerId)) ELSE 'ALL' END AS customer,
  32.             pDate AS date;
  33.     RETURN NEXT pRefHeader;
  34.    
  35.     OPEN pRefDetail FOR
  36.     EXECUTE '
  37.         SELECT A.doc_date, A.doc_no, f_get_doc_desc(A.doc_type_id) AS doc_desc, A.due_date,
  38.                 f_get_customer_code(A.customer_id) AS customer_code, f_get_customer_name(A.customer_id) AS customer_name,
  39.                 B.invoice_amount, B.payment_amount, B.invoice_amount - B.payment_amount AS balance_amount
  40.         FROM fi_invoice_ar A
  41.         INNER JOIN fi_invoice_ar_balance B ON A.invoice_ar_id = B.invoice_ar_id
  42.         WHERE A.record_owner_id = $1
  43.             ' || vFilerCustomer|| '
  44.             AND A.doc_date <= $2
  45.         ORDER BY A.doc_date, A.doc_no DESC'
  46.     USING pRecordOwnerId, pDate;
  47.     RETURN NEXT pRefDetail;
  48.    
  49. END;
  50. $BODY$
  51.   LANGUAGE plpgsql VOLATILE
  52.   SET search_path = public, mstr, ptg, htg, pb, pj, batch
  53.   COST 100;
  54.   /
Add Comment
Please, Sign In to add comment