Advertisement
aadddrr

r_claim_note_vs_return_purch_invoice_list

Nov 22nd, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Adrian, Nov 22, 2017
  3.  * Menampilkan Claim Note yang sudah APPROVED
  4.  * dan Return Purchase Invoice yang dibuat berdasarkan Claim Note tersebut
  5.  */
  6. CREATE OR REPLACE FUNCTION r_claim_note_vs_return_purch_invoice_list(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, character varying, character varying)
  7.   RETURNS SETOF refcursor AS
  8. $BODY$
  9. DECLARE
  10.     pRefHeader          REFCURSOR := 'refHeader';
  11.     pRefDetail          REFCURSOR := 'refDetail';
  12.     pSessionId          ALIAS FOR $1;
  13.     pTenantId           ALIAS FOR $2;
  14.     pUserId             ALIAS FOR $3;
  15.     pRoleId             ALIAS FOR $4;
  16.     pDatetime           ALIAS FOR $5;
  17.     pOuId               ALIAS FOR $6;  
  18.     pDateFrom           ALIAS FOR $7;  
  19.     pDateTo             ALIAS FOR $8;  
  20.     pPartnerCodeName    ALIAS FOR $9;  
  21.     pProductCodeName    ALIAS FOR $10;
  22.    
  23.  
  24.     vEmptyId                bigint := -99;
  25.     vEmpty                  character varying := '';
  26.     vFilterPartner          text := '';
  27.     vFilterProduct          text := '';
  28.  
  29.     vClaimNoteDocType       bigint := 511;
  30.     vStatusDocRelease       character varying := 'R';
  31. BEGIN
  32.  
  33.     IF (pPartnerCodeName <> vEmpty) THEN
  34.         vFilterPartner := ' AND ( UPPER(f_get_partner_code(A.partner_id)) LIKE ''%' || UPPER(pPartnerCodeName) || '%'' OR UPPER(f_get_partner_name(A.partner_id)) LIKE ''%' || UPPER(pPartnerCodeName) || '%'' ) ';
  35.     END IF;
  36.    
  37.     IF (pProductCodeName <> vEmpty) THEN
  38.         vFilterProduct := ' AND ( UPPER(f_get_product_code(B.product_id)) LIKE ''%' || UPPER(pProductCodeName) || '%'' OR UPPER(f_get_product_name(B.product_id)) LIKE ''%' || UPPER(pProductCodeName) || '%'' ) ';
  39.     END IF;
  40.    
  41.     Open pRefHeader FOR
  42.         SELECT pOuId AS ou_id, f_get_ou_code(pOuId) AS ou_code, f_get_ou_name(pOuId) AS ou_name,
  43.             pDateFrom AS date_from, pDateTo AS date_to,
  44.             pPartnerCodeName AS partner_code_name,
  45.             pProductCodeName AS product_code_name,
  46.             f_get_username(pUserId)AS username, pDatetime AS datetime;
  47.     RETURN NEXT pRefHeader;
  48.    
  49.     Open pRefDetail FOR
  50.         EXECUTE
  51.             'SELECT A.doc_date, A.doc_no,
  52.                 f_get_partner_code(A.partner_id) AS partner_code, f_get_partner_name(A.partner_id) AS partner_name,  
  53.                 COALESCE(D.doc_date, $7) AS rpi_date, COALESCE(D.doc_no, $7) AS rpi_no,
  54.                 E.tax_no, E.tax_date,
  55.                 f_get_product_code(B.product_id) AS product_code, f_get_product_name(B.product_id)  AS product_name,
  56.                 C.qty_rcv_po,
  57.                 C.po_uom_id, f_get_uom_code(C.po_uom_id) AS po_uom_code, f_get_uom_name(C.po_uom_id) AS po_uom_name,
  58.                 C.curr_code, C.price_po
  59.             FROM in_inventory A
  60.             INNER JOIN in_inventory_item B ON A.inventory_id = B.inventory_id
  61.             INNER JOIN pu_po_balance_invoice C ON A.doc_no = C.ref_doc_no AND A.inventory_id = C.ref_id AND B.ref_item_id = C.ref_item_id
  62.             LEFT JOIN pu_invoice D ON A.ref_doc_type_id = D.ref_doc_type_id AND A.ref_id = D.ref_id AND C.invoice_id = D.invoice_id AND D.doc_type_id = 141
  63.             LEFT JOIN pu_invoice_tax E ON D.invoice_id = E.invoice_id
  64.             WHERE A.tenant_id = $1
  65.                 AND A.ou_from_id = $2
  66.                 AND A.doc_type_id = $3
  67.                 AND A.status_doc = $4
  68.                 AND A.doc_date BETWEEN $5 AND $6 ' ||
  69.                 vFilterPartner ||
  70.                 vFilterProduct ||
  71.             'ORDER BY A.doc_date'
  72.         USING pTenantId, pOuId, vClaimNoteDocType, vStatusDocRelease, pDateFrom, pDateTo, vEmpty;
  73.     RETURN NEXT pRefDetail ;
  74. END;
  75. $BODY$
  76.   LANGUAGE plpgsql VOLATILE
  77.   COST 100
  78.   ROWS 1000;
  79. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement