widana

Untitled

Jul 8th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Function: r_cb_inquiry_payment_order(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, character varying, character varying, character varying)
  2.  
  3. -- DROP FUNCTION r_cb_inquiry_payment_order(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, character varying, character varying, character varying);
  4.  
  5. CREATE OR REPLACE FUNCTION r_cb_inquiry_payment_order(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, character varying, character varying, character varying)
  6.   RETURNS SETOF refcursor AS
  7. $BODY$
  8. DECLARE
  9.     pRefHeader              REFCURSOR := 'refHeader';
  10.     pRefDetail              REFCURSOR := 'refDetail';
  11.     pSessionId              ALIAS FOR $1;
  12.     pTenantId               ALIAS FOR $2;
  13.     pUserId                 ALIAS FOR $3;
  14.     pRoleId                 ALIAS FOR $4;
  15.     pDatetime               ALIAS FOR $5;
  16.     pOuId                   ALIAS FOR $6;
  17.     pPartnerCodeName        ALIAS FOR $7;
  18.     pCurrCode               ALIAS FOR $8;
  19.     pDocDateFrom            ALIAS FOR $9;
  20.     pDocDateTo              ALIAS FOR $10;
  21.     pDocNo                  ALIAS FOR $11;
  22.    
  23.     vEmptyId                bigint := -99;
  24.     vEmpty                  text := '';
  25.     vDocTypeId              bigint := 601;
  26.     vFilterCurrCode         text := '';
  27.     vFilterPartnerCodeName  text := '';
  28.     vNone                   character varying := '-';
  29.     vFilterDocNo            text := '';
  30.     vFilterOu               text := '';
  31. BEGIN
  32.     IF (pCurrCode <> vEmpty) THEN
  33.         vFilterCurrCode := ' AND UPPER(A.curr_code) LIKE UPPER(''%' || pCurrCode || '%'') ';
  34.     END IF;
  35.  
  36.     IF (pPartnerCodeName <> vEmpty) THEN
  37.         vFilterPartnerCodeName := ' AND (UPPER(C.partner_code) LIKE UPPER(''%' || pPartnerCodeName || '%'') OR
  38.             UPPER(C.partner_name) LIKE UPPER(''%' || pPartnerCodeName || '%'') )';
  39.     END IF;
  40.    
  41.     IF (pDocNo <> vEmpty) THEN
  42.         vFilterDocNo := ' AND UPPER(A.payment_doc_no) LIKE UPPER(''%' || pDocNo || '%'')';
  43.     END IF;
  44.  
  45.     IF (pOuId <> vEmptyId) THEN
  46.         vFilterOu := ' AND B.ou_bu_id = ' || pOuId;
  47.     END IF;
  48.    
  49.     Open pRefHeader FOR
  50.     SELECT CASE WHEN pPartnerCodeName = vEmpty THEN 'All' ELSE pPartnerCodeName END AS partner_code_name,
  51.         CASE WHEN pCurrCode = vEmpty THEN 'All' ELSE pCurrCode END AS curr_code,
  52.         f_get_username(pUserId) AS user_name, f_get_role_name(pRoleId) AS role_name,
  53.         pDocDateFrom AS doc_date_from, pDocDateTo AS doc_date_to, pDatetime AS print_datetime,
  54.         CASE WHEN pOuId = vEmptyId THEN 'All' ELSE f_get_ou_code(pOuId) || ' / ' || f_get_ou_name(pOuId) END AS ou_name,
  55.         pOuId AS ou_id;
  56.     RETURN NEXT pRefHeader;
  57.    
  58.     Open pRefDetail FOR
  59.     EXECUTE '
  60.         SELECT A.ou_id, A.payment_id, A.payment_doc_no, A.payment_doc_date, f_get_partner_code(A.partner_id) AS partner_code,
  61.             f_get_partner_name(A.partner_id) AS partner_name, A.payment_remark, A.curr_code, A.amount,
  62.             f_get_ou_name(A.ou_id) AS ou_name, A.due_date, A.flg_payment, A.ref_doc_type_id, A.ref_id,
  63.             COALESCE(D.doc_no, '''|| vNone ||''') AS cb_out_doc_no, COALESCE(D.doc_date,'''|| vNone ||''') AS cb_out_doc_date,
  64.             E.status_doc, f_get_ou_code(A.ou_id) AS ou_code, G.ou_type_id
  65.         FROM cb_trx_cashbank_balance A
  66.         INNER JOIN m_ou_structure B ON A.ou_id = B.ou_id
  67.         INNER JOIN m_partner C ON A.partner_id = C.partner_id AND A.tenant_id = C.tenant_id
  68.         LEFT OUTER JOIN cb_in_out_cashbank D ON A.tenant_id = D.tenant_id AND A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.in_out_cashbank_id
  69.         INNER JOIN cb_payment_order E ON A.tenant_id = E.tenant_id AND A.ou_id = E.ou_id AND A.payment_id = E.payment_order_id
  70.         INNER JOIN t_ou G ON A.ou_id = G.ou_id
  71.         INNER JOIN t_ou_type F ON G.ou_type_id = F.ou_type_id
  72.         WHERE A.tenant_id = $1
  73.         AND A.doc_type_id = $2
  74.         AND A.payment_doc_date BETWEEN $3 AND $4
  75.         '|| vFilterOu
  76.          || vFilterPartnerCodeName
  77.          || vFilterCurrCode
  78.          || vFilterDocNo
  79.          ||' ORDER BY F.flg_bu DESC, F.flg_sub_bu ASC, F.flg_branch ASC, ou_code, A.payment_doc_date ' USING pTenantId, vDocTypeId, pDocDateFrom, pDocDateTo;
  80.     RETURN NEXT pRefDetail ;
  81. END;
  82. $BODY$
  83.   LANGUAGE plpgsql VOLATILE
  84.   COST 100
  85.   ROWS 1000;
  86. ALTER FUNCTION r_cb_inquiry_payment_order(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, character varying, character varying, character varying)
  87.   OWNER TO sts;
Add Comment
Please, Sign In to add comment