Advertisement
widana

r_report_inquiry_sales_outlet_csv

Oct 25th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION r_report_inquiry_sales_outlet_csv(CHARACTER VARYING, BIGINT, BIGINT, BIGINT, CHARACTER VARYING, 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.     pTenantId               ALIAS FOR $2;
  10.     pGroupOutletId          ALIAS FOR $3;
  11.     pOutletId               ALIAS FOR $4;
  12.     pPeriodStart            ALIAS FOR $5;
  13.     pPeriodEnd              ALIAS FOR $6;
  14.     pFlgVerified            ALIAS FOR $7;
  15.     pFlgUnused              ALIAS FOR $8;
  16.    
  17.     vVerified               CHARACTER VARYING := 'Verified';
  18.     vNotVerified            CHARACTER VARYING := 'Not Verified';
  19.     vInProgressVerified     CHARACTER VARYING := 'In Progress';
  20.     vYes                    CHARACTER VARYING := 'Y';
  21.     vNo                     CHARACTER VARYING := 'N';
  22.     vInProgress             CHARACTER VARYING := 'I';
  23.     vUse                    CHARACTER VARYING := 'Dipakai';
  24.     vUnUsed                 CHARACTER VARYING := 'Tidak Dipakai';
  25.     vFine                   CHARACTER VARYING := 'Denda';
  26.     vNotFine                CHARACTER VARYING := 'Tidak Denda';
  27.     vEmptyValue             CHARACTER VARYING := '';
  28.     vFilterVerified         CHARACTER VARYING := '';
  29.     vFilterStatus           CHARACTER VARYING := '';
  30.     vFilterOutlet           CHARACTER VARYING := '';
  31.     vEmptyId                BIGINT := -99;
  32.      
  33. BEGIN
  34.    
  35.     IF (pFlgVerified <> vEmptyValue) THEN
  36.         vFilterVerified := ' AND A.status_item = '''|| pFlgVerified || ''' ';
  37.     END IF;
  38.  
  39.     IF (pFlgUnused <> vEmptyValue) THEN
  40.         vFilterStatus := ' AND A.flg_unused = '''|| pFlgUnused || ''' ';
  41.     END IF;
  42.  
  43.     IF (pOutletId <> vEmptyId) THEN
  44.         vFilterOutlet := ' AND D.outlet_id = '|| pOutletId || '';
  45.     END IF;
  46.    
  47.     OPEN pRefHeader FOR
  48.     SELECT 18 AS _COUNT,
  49.             'Dept Store', 'Outlet', 'Doc No',
  50.             'Doc Date', 'Promo', 'Status',
  51.             'Verified', 'Artikel', 'Harga Gross',
  52.             'Harga Nett System', 'Harga Nett Diinput', 'Harga Nett Koreksi',
  53.             'Qty Diinput', 'Qty Koreksi', 'Denda SPG',
  54.             'Nilai Denda', 'Status', 'Sub Total',
  55.             1 AS ordial;
  56.     RETURN NEXT pRefHeader;
  57.      
  58.     OPEN pRefDetail FOR
  59.         EXECUTE '
  60.             WITH TEMP AS (  
  61.                     SELECT A.doc_no, A.doc_date, B.product_code, A.gross_sell_price,
  62.                         A.nett_sell_price_system,  A.nett_sell_price, A.nett_sell_price_verified, A.qty, A.qty_verified, A.flg_unused,  
  63.                         A.nett_sell_price_verified * A.qty_verified AS sub_total, C.flg_denda, COALESCE(D.fine_amount,0) AS denda,
  64.                         A.outlet_id, A.promo_code_verified, A.status_item
  65.                     FROM i_trx_mobile_pos_item_balance A  
  66.                     INNER JOIN m_product B  ON A.product_id = B.product_id  
  67.                     INNER JOIN i_verification_trx_mobile_pos_item C  ON A.trx_mobile_pos_item_id = C.ref_item_id  
  68.                     LEFT JOIN i_spg_fine D  ON C.verification_trx_item_id = D.ref_item_id  
  69.                     UNION  
  70.                     SELECT A.doc_no, A.doc_date, B.product_code, A.gross_sell_price,
  71.                         A.nett_sell_price_system,  A.nett_sell_price, A.nett_sell_price_verified, A.qty, A.qty_verified, A.flg_unused,  
  72.                         A.nett_sell_price_verified * A.qty_verified AS sub_total, C.flg_denda, COALESCE(D.fine_amount,0) AS denda,
  73.                         A.outlet_id, A.promo_code_verified, A.status_item
  74.                     FROM i_trx_mobile_pos_item_balance A  
  75.                     INNER JOIN m_product B  ON A.product_id = B.product_id  
  76.                     INNER JOIN i_verification_trx_mobile_pos_item C  ON A.trx_mobile_pos_item_id = C.verification_trx_item_id  
  77.                         AND C.ref_item_id = -99  LEFT JOIN i_spg_fine D  ON C.verification_trx_item_id = D.ref_item_id  
  78.                     UNION  
  79.                     SELECT A.doc_no, A.doc_date, B.product_code, A.gross_sell_price,
  80.                         A.nett_sell_price_system,  A.nett_sell_price, A.nett_sell_price_verified, A.qty, A.qty_verified, A.flg_unused,  
  81.                         A.nett_sell_price_verified * A.qty_verified AS sub_total, $9 AS flg_denda, 0 AS denda,
  82.                         A.outlet_id, A.promo_code_verified, A.status_item
  83.                     FROM i_trx_mobile_pos_item_balance A  
  84.                     INNER JOIN m_product B  ON A.product_id = B.product_id  
  85.                     WHERE NOT EXISTS(  
  86.                         SELECT 1  FROM i_verification_trx_mobile_pos_item C  
  87.                         LEFT JOIN i_spg_fine D  ON C.verification_trx_item_id = D.ref_item_id  
  88.                         WHERE A.trx_mobile_pos_item_id = C.verification_trx_item_id  
  89.                         AND C.ref_item_id = -99 ))  
  90.                 SELECT 18 AS _COUNT,C.group_outlet_name, D.outlet_name, A.doc_no, A.doc_date, A.promo_code_verified,
  91.                     CASE WHEN A.status_item = $8 THEN $5
  92.                         WHEN A.status_item = $9 THEN $6
  93.                         WHEN A.status_item = $10 THEN $7 END status_item,
  94.                     CASE WHEN A.flg_unused = $9 THEN $11 ELSE $12 END flg_unused,
  95.                     A.product_code, A.gross_sell_price,
  96.                     A.nett_sell_price_system, A.nett_sell_price, A.nett_sell_price_verified, A.qty, A.qty_verified,
  97.                     CASE WHEN A.flg_denda = $8 THEN $13 ELSE $14 END flg_denda, A.denda, CASE WHEN A.flg_unused = $9 THEN $11 ELSE $12 END AS flg_unused2,
  98.                     A.sub_total
  99.                 FROM TEMP A
  100.                 INNER JOIN m_outlet_group B ON A.outlet_id = B.outlet_id
  101.                 INNER JOIN m_group_outlet C ON B.group_outlet_id = C.group_outlet_id
  102.                 INNER JOIN i_outlet D ON A.outlet_id = D.outlet_id
  103.                 WHERE  C.group_outlet_id = $1
  104.                        AND A.doc_date BETWEEN $3 AND $4'
  105.                        || vFilterVerified  || vFilterStatus || vFilterOutlet || '
  106.                 ORDER BY A.doc_no, A.doc_date ASC'
  107.         USING pGroupOutletId, pOutletId, pPeriodStart, pPeriodEnd, vVerified, vNotVerified, vInProgressVerified,
  108.                 vYes, vNo, vInProgress, vUse, vUnUsed, vFine, vNotFine;
  109.     RETURN NEXT pRefDetail;
  110.    
  111. END
  112. $BODY$
  113.   LANGUAGE plpgsql VOLATILE
  114.   COST 100
  115.   ROWS 1000
  116. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement