Advertisement
widana

yang betul

Aug 8th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. BEGIN;
  2. SELECT mlm_r_report_summary_mutasi_saldo('SESSION_DATA', 11, 14, '201707',333, 12);
  3. FETCH ALL IN "refHeader";
  4. ROLLBACK;
  5.  
  6. CREATE OR REPLACE FUNCTION mlm_r_report_summary_mutasi_saldo(character varying, bigint, bigint, character varying, bigint, bigint)
  7.   RETURNS SETOF refcursor AS
  8. $BODY$
  9. DECLARE
  10.     pSessionId          ALIAS FOR $1;
  11.     pTenantId           ALIAS FOR $2;
  12.     pOuId               ALIAS FOR $3;
  13.     pPeriod             ALIAS FOR $4;
  14.     pUserId             ALIAS FOR $5;
  15.     pRoleId             ALIAS FOR $6;
  16.    
  17.     pRefHeader          REFCURSOR := 'refHeader';
  18.    
  19.     vDocTypeDpBalance   bigint := 252;
  20.     vDocTypeCnArBonus   bigint := 255;
  21.     vTglAwalBulan       character varying(8);
  22.     vEmptyId        bigint := -99;
  23.     vPartnerRank        character varying := 'PARTNERRANK';
  24.     vYes            character varying := 'Y';
  25.     vGroupCustomer      character varying := 'C';
  26.     vCustomerDs     character varying := 'CUSTOMER DS';
  27.  
  28. BEGIN
  29.    
  30.     DELETE FROM tt_mlm_r_report_mutasi_saldo WHERE session_id = pSessionId;
  31.  
  32.     /*
  33.     * insert ke table temporary untuk credit amount dan debt amount panggil function f_get_saldo_awal_partner_credit_limit_usage untuk
  34.     * menentukan nilai nya.
  35.     */
  36.     INSERT INTO tt_mlm_r_report_mutasi_saldo(session_id, partner_id, order_type, credit_amount, debt_amount, remark)
  37.     SELECT pSessionId, a.partner_id, 'Saldo Akhir',
  38.         CASE WHEN f_get_saldo_awal_partner_credit_limit_usage(a.tenant_id, a.partner_id, pPeriod) > 0 THEN f_get_saldo_awal_partner_credit_limit_usage(a.tenant_id, a.partner_id, pPeriod) ELSE 0 END AS credit_amount,
  39.         CASE WHEN f_get_saldo_awal_partner_credit_limit_usage(a.tenant_id, a.partner_id, pPeriod) < 0 THEN f_get_saldo_awal_partner_credit_limit_usage(a.tenant_id, a.partner_id, pPeriod) * -1 ELSE 0 END AS debt_amount,
  40.         'Saldo Akhir'
  41.     FROM m_partner a
  42.     INNER JOIN  m_partner_cp n ON  a.partner_id = n.partner_id
  43.     INNER JOIN m_ctgr_partner b ON b.tenant_id = a.tenant_id AND b.ctgr_partner_id = a.ctgr_partner_id  
  44.     INNER JOIN  mlm_ds  h ON a.partner_id = h.partner_id  
  45.     INNER JOIN  mlm_member  i ON h.member_id = i.member_id  
  46.     WHERE a.tenant_id = pTenantId;
  47.  
  48.     /*
  49.     * tambahkan credit amount dan debt amount dari dokumen DNAP.
  50.     */
  51.     WITH TEMP AS (
  52.         SELECT B.mlm_r_report_mutasi_saldo_id, A.partner_id, B.order_type, SUM(CASE WHEN A.record_type = 1 THEN A.amount ELSE 0 END) AS credit_amount, SUM(CASE WHEN A.record_type = -1 THEN A.amount ELSE 0 END) AS debt_amount
  53.         FROM sl_log_partner_credit_limit_usage A, tt_mlm_r_report_mutasi_saldo B
  54.         WHERE A.tenant_id = pTenantId
  55.             AND B.session_id = pSessionId
  56.             AND A.partner_id = B.partner_id
  57.             AND SUBSTRING(A.doc_date, 1, 6) = pPeriod
  58.             AND A.amount <> 0
  59.             AND A.record_type <> 0
  60.         GROUP BY A.partner_id, B.order_type, B.mlm_r_report_mutasi_saldo_id)
  61.     UPDATE tt_mlm_r_report_mutasi_saldo Z
  62.         SET credit_amount = Z.credit_amount+A.credit_amount, debt_amount = Z.debt_amount+A.debt_amount
  63.     FROM TEMP A
  64.     WHERE Z.session_id = pSessionId
  65.         AND A.mlm_r_report_mutasi_saldo_id = Z.mlm_r_report_mutasi_saldo_id
  66.         AND A.partner_id = Z.partner_id
  67.         AND A.order_type = Z.order_type;
  68.  
  69.     OPEN pRefHeader FOR
  70.         SELECT B.partner_code, B.partner_name,
  71.             A.credit_amount, A.debt_amount, (A.debt_amount-A.credit_amount) AS total_saldo_akhir,
  72.             CASE WHEN C.active = vYes THEN 'Aktif' ELSE 'Tidak Aktif' END AS status
  73.         FROM tt_mlm_r_report_mutasi_saldo A
  74.         INNER JOIN m_partner B ON A.partner_id = B.partner_id
  75.         INNER JOIN mlm_ds C ON B.partner_id = C.partner_id
  76.         WHERE session_id = pSessionId
  77.         ORDER BY B.partner_code ASC;
  78.     RETURN NEXT pRefHeader;
  79.    
  80.     DELETE FROM tt_mlm_r_report_mutasi_saldo WHERE session_id = pSessionId;
  81.    
  82. END;
  83. $BODY$
  84.   LANGUAGE plpgsql VOLATILE
  85.   COST 100
  86.   ROWS 1000;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement