Advertisement
widana

Function Report Kartu Piutang

Jul 25th, 2018
93
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, character varying, character varying, 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.     pCustomer                   ALIAS FOR $3;
  11.     pDateFrom                   ALIAS FOR $4;
  12.     pDateTo                     ALIAS FOR $5;
  13.  
  14.     vEmpty                      character varying := '';
  15.     vNo                         character varying := 'N';
  16.     vYes                        character varying := 'Y';
  17.    
  18.     vYearMonth                  character varying := '';
  19.     vFilterCustomer             character varying := '';
  20.  
  21. BEGIN
  22.  
  23.     IF pCustomer <> vEmpty THEN
  24.         vFilterCustomer := ' AND ( UPPER(f_get_customer_code(A.customer_id)) LIKE UPPER(''%'|| pCustomer ||'%'') OR UPPER(f_get_customer_name(A.customer_id)) LIKE UPPER(''%'|| pCustomer ||'%'') )';
  25.     END IF;
  26.    
  27.     OPEN pRefHeader FOR
  28.         SELECT f_get_record_owner_name(pRecordOwnerId) AS record_owner_name, pDateFrom AS date_from, pDateTo as date_to;
  29.     RETURN NEXT pRefHeader;
  30.    
  31.     OPEN pRefDetail FOR
  32.     EXECUTE '
  33.         SELECT A.doc_date, A.doc_no, f_get_doc_desc(A.doc_type_id) AS doc_desc, A.due_date,
  34.                 f_get_customer_code(A.customer_id) AS customer_code, f_get_customer_name(A.customer_id) AS customer_name,
  35.                 B.invoice_amount, B.payment_amount, B.invoice_amount - B.payment_amount AS balance_amount
  36.         FROM fi_invoice_ar A
  37.         INNER JOIN fi_invoice_ar_balance B ON A.invoice_ar_id = B.invoice_ar_id
  38.         WHERE A.record_owner_id = $1
  39.             ' || vFilterCustomer|| '
  40.             AND A.doc_date BETWEEN $2 AND $3
  41.         ORDER BY A.doc_date, A.doc_no DESC'
  42.     USING pRecordOwnerId, pDateFrom, pDateTo;
  43.     RETURN NEXT pRefDetail;
  44.    
  45. END;
  46. $BODY$
  47.   LANGUAGE plpgsql VOLATILE
  48.   SET search_path = public, mstr, ptg, htg, pb, pj, batch
  49.   COST 100;
  50.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement