Advertisement
aadddrr

r_claim_note_vs_return_purch_invoice_list

Dec 21st, 2017
84
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
  4.  * dan Return Purchase Invoice yang dibuat berdasarkan Claim Note tersebut
  5.  */
  6. /**
  7.  * Adrian, Dec 21, 2017
  8.  * Menampikan PO, status Penagihan, dan status Pembayaran
  9.  */
  10. 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, character varying, character varying)
  11.   RETURNS SETOF refcursor AS
  12. $BODY$
  13. DECLARE
  14.     pRefHeader              REFCURSOR := 'refHeader';
  15.     pRefDetail              REFCURSOR := 'refDetail';
  16.     pSessionId              ALIAS FOR $1;
  17.     pTenantId               ALIAS FOR $2;
  18.     pUserId                 ALIAS FOR $3;
  19.     pRoleId                 ALIAS FOR $4;
  20.     pDatetime               ALIAS FOR $5;
  21.     pOuId                   ALIAS FOR $6;  
  22.     pDateFrom               ALIAS FOR $7;  
  23.     pDateTo                 ALIAS FOR $8;  
  24.     pPartnerCodeName        ALIAS FOR $9;  
  25.     pProductCodeName        ALIAS FOR $10;
  26.     pClaimNoteStatus        ALIAS FOR $11; 
  27.     pReturnPurchInvStatus   ALIAS FOR $12;
  28.    
  29.  
  30.     vEmptyId                bigint := -99;
  31.     vEmpty                  character varying := '';
  32.     vFilterPartner          text := '';
  33.     vFilterProduct          text := '';
  34.  
  35.     vClaimNoteDocType       bigint := 511;
  36.     vStatusDocRelease       character varying := 'R';
  37.    
  38.     vStatusAll                      character varying := 'ALL STATUS';
  39.     vStatusApproved                 character varying := 'APPROVED';
  40.     vStatusApprovedOnly             character varying := 'APPROVED ONLY';
  41.     vStatusDraft                    character varying := 'DRAFT';
  42.     vStatusInProgress               character varying := 'IN PROGRESS';
  43.     vStatusDraftInProgress          character varying := 'DRAFT/IN PROGRESS';
  44.     vStatusUnpaid                   character varying := 'UNPAID';
  45.     vStatusPaid                     character varying := 'PAID';
  46.     vStatusNotCreatedYet            character varying := 'NOT CREATED YET';
  47.     vFilterClaimNoteStatus          text := '';
  48.     vFilterReturnPurchInvStatus     text := '';
  49.     vStatusDocDraft                 character varying := 'D';
  50.     vStatusDocInProgress            character varying := 'I';
  51.     vFlgYes                         character varying := 'Y';
  52.    
  53. BEGIN
  54.  
  55.     IF (pPartnerCodeName <> vEmpty) THEN
  56.         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) || '%'' ) ';
  57.     END IF;
  58.    
  59.     IF (pProductCodeName <> vEmpty) THEN
  60.         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) || '%'' ) ';
  61.     END IF;
  62.    
  63.     IF (pClaimNoteStatus = vStatusApprovedOnly) THEN
  64.         vFilterClaimNoteStatus := ' AND A.status_doc = ''' || vStatusDocRelease || ''' ';
  65.     END IF;
  66.    
  67.     IF (pReturnPurchInvStatus = vStatusDraftInProgress) THEN
  68.         vFilterReturnPurchInvStatus := ' AND (D.status_doc IN ( ''' || vStatusDocDraft || ''' , ''' || vStatusDocInProgress || ''' )) ';
  69.     ELSIF (pReturnPurchInvStatus = vStatusUnpaid) THEN
  70.         vFilterReturnPurchInvStatus := ' AND (G.flg_payment IS NULL OR H.flg_payment IS NULL OR G.flg_payment <> ''' || vFlgYes || ''' OR H.flg_payment <> ''' || vFlgYes || ''' ) ';
  71.     ELSIF (pReturnPurchInvStatus = vStatusPaid) THEN
  72.         vFilterReturnPurchInvStatus := ' AND (G.flg_payment = ''' || vFlgYes || ''' OR   H.flg_payment = ''' || vFlgYes || ''' ) ';
  73.     END IF;
  74.    
  75.     Open pRefHeader FOR
  76.         SELECT pOuId AS ou_id, f_get_ou_code(pOuId) AS ou_code, f_get_ou_name(pOuId) AS ou_name,
  77.             pDateFrom AS date_from, pDateTo AS date_to,
  78.             pPartnerCodeName AS partner_code_name,
  79.             pProductCodeName AS product_code_name,
  80.             pClaimNoteStatus AS claim_note_status,
  81.             pReturnPurchInvStatus AS return_purch_inv_status,
  82.             f_get_username(pUserId)AS username, pDatetime AS datetime;
  83.     RETURN NEXT pRefHeader;
  84.    
  85.     Open pRefDetail FOR
  86.         EXECUTE
  87.             'SELECT A.doc_date, A.doc_no,
  88.                 CASE WHEN A.status_doc = $9 THEN
  89.                     $10
  90.                 WHEN A.status_doc = $11 THEN
  91.                     $12
  92.                 WHEN A.status_doc = $4 THEN
  93.                     $13
  94.                 ELSE
  95.                     $7
  96.                 END AS doc_status,
  97.                 f_get_partner_code(A.partner_id) AS partner_code, f_get_partner_name(A.partner_id) AS partner_name,
  98.                 F.doc_date AS po_date, F.doc_no AS po_no,  
  99.                 CASE WHEN D.status_doc IS NULL THEN
  100.                     $8
  101.                 WHEN D.status_doc = $9 THEN
  102.                     $10
  103.                 WHEN D.status_doc = $11 THEN
  104.                     $12
  105.                 WHEN D.status_doc = $4 THEN
  106.                     $13
  107.                 ELSE
  108.                     $7
  109.                 END AS invoice_status,
  110.                 COALESCE(D.doc_date, $7) AS rpi_date, COALESCE(D.doc_no, $7) AS rpi_no,
  111.                 E.tax_no, E.tax_date,
  112.                 CASE WHEN G.flg_payment IS NULL THEN
  113.                     $14
  114.                 WHEN (G.flg_payment = $15 AND H.flg_payment = $15) THEN
  115.                     $16
  116.                 ELSE
  117.                     $14
  118.                 END AS paid_status,
  119.                 f_get_product_code(B.product_id) AS product_code, f_get_product_name(B.product_id)  AS product_name,
  120.                 COALESCE(C.qty_rcv_po, B.qty_realization * J.qty_po / J.qty_int) AS qty_rcv_po,
  121.                 COALESCE(C.po_uom_id, J.po_uom_id) AS po_uom_id, f_get_uom_code(COALESCE(C.po_uom_id, J.po_uom_id)) AS po_uom_code, f_get_uom_name(COALESCE(C.po_uom_id, J.po_uom_id)) AS po_uom_name,
  122.                 COALESCE(C.curr_code, J.curr_code) AS curr_code, COALESCE(C.price_po, J.gross_price_po - J.discount_amount) AS price_po
  123.             FROM in_inventory A
  124.             INNER JOIN in_inventory_item B ON A.inventory_id = B.inventory_id
  125.             LEFT 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
  126.             INNER JOIN pu_po F ON A.ref_doc_type_id = F.doc_type_id AND A.ref_id = F.po_id
  127.             INNER JOIN in_balance_receive_goods_item I ON B.ref_item_id = I.receive_goods_item_id
  128.             INNER JOIN pu_po_item J ON I.po_item_id = J.po_item_id
  129.             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
  130.             LEFT JOIN pu_invoice_tax E ON D.invoice_id = E.invoice_id
  131.             LEFT JOIN fi_invoice_ap_balance G ON D.tenant_id = G.tenant_id AND D.doc_type_id = G.doc_type_id AND D.invoice_id = G.invoice_ap_id  
  132.             LEFT JOIN fi_invoice_tax_ap_balance H ON G.tenant_id = H.tenant_id AND G.invoice_ap_balance_id = H.invoice_ap_balance_id    
  133.             WHERE A.tenant_id = $1
  134.                 AND A.ou_from_id = $2
  135.                 AND A.doc_type_id = $3
  136.                 AND A.doc_date BETWEEN $5 AND $6 ' ||
  137.                 vFilterPartner ||
  138.                 vFilterProduct ||
  139.                 vFilterClaimNoteStatus ||
  140.                 vFilterReturnPurchInvStatus ||
  141.             'ORDER BY A.doc_date'
  142.         USING pTenantId, pOuId, vClaimNoteDocType, vStatusDocRelease, pDateFrom, pDateTo, vEmpty,
  143.             vStatusNotCreatedYet,
  144.             vStatusDocDraft, vStatusDraft,
  145.             vStatusDocInProgress, vStatusDraftInProgress,
  146.             vStatusApproved,
  147.             vStatusUnpaid, vFlgYes, vStatusPaid;
  148.     RETURN NEXT pRefDetail ;
  149. END;
  150. $BODY$
  151.   LANGUAGE plpgsql VOLATILE
  152.   COST 100
  153.   ROWS 1000;
  154. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement