aadddrr

Untitled

Jan 30th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Adrian, Jan 30 2017
  2.  
  3. CREATE OR REPLACE FUNCTION r_tagging_po_internal_so_igs(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, bigint, character varying)
  4.   RETURNS SETOF refcursor AS
  5. $BODY$
  6. DECLARE
  7.     pRefHeader          REFCURSOR := 'refHeader';
  8.     pRefDetail          REFCURSOR := 'refDetail';
  9.    
  10.     pSessionId          ALIAS FOR $1;
  11.     pTenantId           ALIAS FOR $2;
  12.     pUserId             ALIAS FOR $3;
  13.     pRoleId             ALIAS FOR $4;
  14.     pDatetime           ALIAS FOR $5;
  15.    
  16.     pPoInternalOuId     ALIAS FOR $6;
  17.     pPoInternalNo       ALIAS FOR $7;
  18.     pPoNo               ALIAS FOR $8;
  19.     pSoOuId             ALIAS FOR $9;
  20.     pSoNo               ALIAS FOR $10;
  21.    
  22.     vFilterPoInternalNo text := '';
  23.     vFilterPoNo         text := '';
  24.     vFilterSoNo         text := '';
  25.    
  26.     vEmptyString        character varying := '';
  27.    
  28. BEGIN
  29.    
  30.     IF (pPoInternalNo <> vEmptyString) THEN
  31.         vFilterPoInternalNo := ' AND A.doc_no = ' || pPoInternalNo || '';
  32.     END IF;
  33.    
  34.     Open pRefHeader FOR
  35.     SELECT pPoInternalOuId AS po_internal_ou_id, f_get_ou_code(pPoInternalOuId) AS po_internal_ou_code, f_get_ou_name(pPoInternalOuId) AS po_internal_ou_name,
  36.         pPoInternalNo AS po_internal_no, pPoNo AS po_no,    
  37.         pSoOuId AS so_ou_id, f_get_ou_code(pSoOuId) AS so_ou_code, f_get_ou_name(pSoOuId) AS so_ou_name,
  38.         pSoNo AS so_no;
  39.     RETURN NEXT pRefHeader;
  40.    
  41.     Open pRefDetail FOR
  42.     EXECUTE '
  43.     SELECT C.doc_no AS so_no, C.doc_date AS so_date,
  44.         f_get_product_code(D.product_id) AS product_code, f_get_product_name(D.product_id) AS product_name,
  45.         D.nett_item_amount AS so_item_amount, G.doc_no AS sales_invoice_no, F.ref_item_amount AS sales_invoice_item_amount,
  46.         D.curr_code AS curr_code
  47.     FROM pu_po_internal A
  48.     INNER JOIN pu_po_internal_doc_no B ON B.po_internal_id = A.po_internal_id
  49.     INNER JOIN sl_so C ON C.doc_no = B.ref_doc_no
  50.     INNER JOIN sl_so_item D ON D.so_id = C.so_id
  51.     LEFT JOIN sl_do_item E ON E.ref_id = D.so_item_id
  52.     LEFT JOIN sl_invoice_item F ON F.ref_item_id = E.do_item_id
  53.     INNER JOIN sl_invoice G ON G.invoice_id = F.invoice_id
  54.     INNER JOIN pu_po H ON H.ref_id = C.ref_id
  55.     WHERE A.ou_buy_id = $1 AND A.ou_sell_id = $2 AND A.tenant_id = $3 '||
  56.         vFilterPoInternalNo ||
  57.         ' AND C.doc_no = $4 AND H.doc_no = $5' USING pPoInternalOuId, pSoOuId, pTenantId, pSoNo, pPoNo;
  58.     RETURN NEXT pRefDetail ;
  59.    
  60. END;
  61. $BODY$
  62.   LANGUAGE plpgsql VOLATILE
  63.   COST 100
  64.   ROWS 1000;
  65. /
Add Comment
Please, Sign In to add comment