Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION gl_temp_posting_monthly_journal(bigint, character varying, character varying)
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE
  5.  
  6.     pTenantId           ALIAS FOR $1;
  7.     pSessionId          ALIAS FOR $2;
  8.     pProcessNo          ALIAS FOR $3;
  9.  
  10.     vProcessId              bigint;
  11.     vOuId                   bigint;
  12.     vUserId                 bigint;
  13.     vYearMonth              character varying(6);
  14.     vDatetime               character varying(14);
  15.     vPeriode                character varying(10);
  16.    
  17.     vMinYearMonth           character varying(6);
  18.     vMaxYearMonth           character varying(6);
  19.     vUnposted               bigint;
  20.  
  21. BEGIN
  22.    
  23.     vPeriode := 'MONTHLY';
  24.    
  25.     SELECT A.process_message_id INTO vProcessId
  26.     FROM t_process_message A
  27.     WHERE A.tenant_id = pTenantId AND
  28.         A.process_name = 'gl_temp_posting_monthly_journal' AND
  29.         A.process_no = pProcessNo;
  30.        
  31.     SELECT CAST(A.process_parameter_value AS bigint) INTO vOuId
  32.     FROM t_process_parameter A
  33.     WHERE A.process_message_id = vProcessId AND
  34.         A.process_parameter_key = 'ouId';
  35.    
  36.     SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  37.     FROM t_process_parameter A
  38.     WHERE A.process_message_id = vProcessId AND
  39.         A.process_parameter_key = 'userId';
  40.        
  41.     SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  42.     FROM t_process_parameter A
  43.     WHERE A.process_message_id = vProcessId AND
  44.         A.process_parameter_key = 'datetime';
  45.        
  46.     SELECT CAST(A.process_parameter_value AS character varying(6)) INTO vYearMonth
  47.     FROM t_process_parameter A
  48.     WHERE A.process_message_id = vProcessId AND
  49.         A.process_parameter_key = 'yearmonth';
  50.    
  51.    
  52.     SELECT B.journal_year_month INTO vMinYearMonth
  53.     FROM (
  54.         SELECT A.ou_id, A.journal_year_month, A.ledger_code, A.journal_type,
  55.             f_get_count_released_journal_trx(A.tenant_id, A.sub_ou_id, A.journal_year_month, A.journal_type) AS release_journal,
  56.             f_get_count_unreleased_journal_trx(A.tenant_id, A.sub_ou_id, A.journal_year_month, A.journal_type) AS unrelease_journal
  57.         FROM gl_admin_journal_trx A
  58.         WHERE A.journal_process_periode = vPeriode
  59.             AND A.tenant_id = pTenantId
  60.             AND A.ou_id = vOuId
  61.          ORDER BY A.ledger_code, A.journal_type
  62.          ) B
  63.     WHERE B.journal_type <> 'JV.MEMO'
  64.     GROUP BY B.ou_id, B.journal_year_month, B.ledger_code, B.journal_type
  65.     HAVING SUM(B.unrelease_journal) <> 0
  66.     ORDER BY B.journal_year_month ASC
  67.     LIMIT 1;
  68.    
  69.     WHILE vMinYearMonth <= vYearMonth LOOP
  70.        
  71.         SELECT SUM(B.unrelease_journal) AS unposted INTO vUnposted
  72.         FROM (
  73.             SELECT A.ou_id, A.journal_year_month, A.ledger_code, A.journal_type,
  74.                 f_get_count_released_journal_trx(A.tenant_id, A.sub_ou_id, A.journal_year_month, A.journal_type) AS release_journal,
  75.                 f_get_count_unreleased_journal_trx(A.tenant_id, A.sub_ou_id, A.journal_year_month, A.journal_type) AS unrelease_journal
  76.             FROM gl_admin_journal_trx A
  77.             WHERE A.journal_process_periode = vPeriode
  78.                 AND A.tenant_id = pTenantId
  79.                 AND A.ou_id = vOuId
  80.                 AND A.journal_year_month = vMinYearMonth
  81.              ORDER BY A.ledger_code, A.journal_type
  82.              ) B
  83.         WHERE B.journal_type <> 'JV.MEMO'
  84.         GROUP BY B.ou_id, B.journal_year_month, B.ledger_code, B.journal_type
  85.         HAVING SUM(B.unrelease_journal) <> 0
  86.         LIMIT 1;
  87.        
  88.         IF vUnposted <> 0 THEN
  89.             RAISE NOTICE '%',vMinYearMonth;
  90.            
  91.             /*
  92.              * Lakukan journal posting raw material, WIP, dan finish goods
  93.              */
  94.             PERFORM gl_temp_posting_raw_materials_costing_journal(pTenantId, pSessionId, vOuId, vUserId, vMinYearMonth, vDatetime);
  95.             PERFORM gl_temp_posting_finish_goods_costing_journal(pTenantId, pSessionId, vOuId, vUserId, vMinYearMonth, vDatetime)
  96.        
  97.         END IF;
  98.        
  99.         SELECT TO_CHAR(TO_DATE(vMinYearMonth,'YYYYMM') + interval '1 Month','YYYYMM') INTO vMinYearMonth;
  100.        
  101.     END LOOP;
  102.    
  103. END;
  104. $BODY$
  105.   LANGUAGE plpgsql VOLATILE
  106.   COST 100;
  107.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement