Advertisement
tercnem

Untitled

Nov 18th, 2020
763
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * WTC, 20161219:
  3.  *   1. Update sign journal untuk trx mapping adj stock qty (521), baik yg bernilai minus maupun plus (sebelumnya hanya yg bernilai minus)
  4.  *   2. Exclude adj stock amount dalam proses posting journal ini, melainkan set status doc nya saja menjadi R
  5.  */
  6. CREATE OR REPLACE FUNCTION gl_posting_raw_materials_costing_journal(bigint, character varying, bigint, bigint, character varying, character varying)
  7.   RETURNS void AS
  8. $BODY$
  9. DECLARE
  10.  
  11.     pTenantId           ALIAS FOR $1;
  12.     pSessionId          ALIAS FOR $2;
  13.     pOuId               ALIAS FOR $3;
  14.     pUserId             ALIAS FOR $4;
  15.     pYearMonth          ALIAS FOR $5;
  16.     pDatetime           ALIAS FOR $6;
  17.  
  18.     vStatusRelease          character varying(1);
  19.     vEmptyValue             character varying(1);
  20.     vEmptyId                bigint;
  21.     vJournalProcessPeriode  character varying(10);
  22.     vLedgerCode             character varying(10);
  23.     vCurrGL                 character varying(5);
  24.     vRoundingAmount         integer;
  25.     vSignCredit             character varying(1);
  26.     vSignDebit              character varying(1);
  27.     vSystemCOA              character varying(10);
  28.    
  29. BEGIN
  30.    
  31.     vStatusRelease := 'R';
  32.     vEmptyId := -99;
  33.     vEmptyValue := ' ';
  34.     vJournalProcessPeriode := 'MONTHLY';
  35.     vLedgerCode := 'COSTING.FG';
  36.     vSignCredit := 'C';
  37.     vSignDebit := 'D';
  38.     vSystemCOA := 'SYSTEM';
  39.  
  40.     DELETE FROM tt_gl_journal_costing WHERE session_id = pSessionId;
  41.     DELETE FROM tt_gl_summary_amount_product WHERE session_id = pSessionId;
  42.     DELETE FROM tt_gl_summary_journal WHERE session_id = pSessionId;
  43.     DELETE FROM tt_gl_journal_trx_mapping WHERE session_id = pSessionId;
  44.     DELETE FROM tt_gl_admin_journal_rate WHERE session_id = pSessionId;
  45.    
  46.     vCurrGL := f_get_value_system_config_by_param_code(pTenantId,'ValutaBuku');
  47.     vRoundingAmount := CAST(f_get_value_system_config_by_param_code(pTenantId,'rounding.gl.amount') AS integer);   
  48.    
  49.     /*
  50.      * 1.ambil data journal trx yang melakukan Debit / Credit Stok finish goods product
  51.      *   doc type : 502, 521, 413, 511, 311, 154, 354, 431, 526, 537
  52.      *   doc_desc : adj stok amount balance, return note, adj stok qty, adj stok outlet qty,
  53.      *              Nota klaim, DO, DO Internal, Sales Invoice Konsinyasi, POS Shop, Return POS Shop, Pos Shop In Shop, Return POS Shop In Shop,
  54.      *              DO Receipt, Goods Transfer In Receipt Lost
  55.      * 2.berikan nilai tiap journal trx item sesuai dengan product, doc_type_id, ou_bu_id, ou_branch_id, ou_sub_bu_id di in_summary_monthly_product
  56.      * 3.update nilai amount, untuk memastikan jumlah amount di in_summary_monthly_product = jumlah nilai product di tt_gl_journal_costing
  57.      *
  58.      * WTC, 20161219, adjustment stock amount tidak perlu diset lagi dari hasil proses costing, melainkan diset saja status nya menjadi R
  59.      */
  60.     INSERT INTO tt_gl_journal_costing
  61.     (session_id, tenant_id, ou_bu_id, ou_branch_id, ou_sub_bu_id,
  62.     journal_trx_id, doc_type_id, journal_trx_item_id, sign_journal, product_id,
  63.     qty, uom_id, amount, total_amount_product, total_qty_product)
  64.     SELECT pSessionId, A.tenant_id, A.ou_bu_id,
  65.         CASE WHEN B.ou_branch_id = vEmptyId AND B.ou_sub_bu_id = vEmptyId THEN A.ou_branch_id ELSE B.ou_branch_id END,
  66.         CASE WHEN B.ou_branch_id = vEmptyId AND B.ou_sub_bu_id = vEmptyId THEN A.ou_sub_bu_id ELSE B.ou_sub_bu_id END,
  67.         A.journal_trx_id, A.doc_type_id, B.journal_trx_item_id, B.sign_journal, B.product_id,
  68.         B.qty, B.uom_id, 0, 0, 0
  69.     FROM gl_journal_trx A, gl_journal_trx_item B, dt_date C, vw_raw_materials_product D
  70.     WHERE A.tenant_id = pTenantId AND
  71.         A.ou_bu_id = pOuId AND
  72.         A.doc_type_id IN (502, 521, 413, 511, 311, 154, 354, 431, 526, 537) AND
  73.         A.doc_date = C.string_date AND
  74.         C.year_month_date = pYearMonth AND
  75.         A.journal_trx_id = B.journal_trx_id AND
  76.         B.product_id <> vEmptyId AND
  77.         B.product_id = D.product_id;
  78.        
  79.     /* Update amount dipisahkan menjadi 3 bagian, yaitu:
  80.         1. Tuk doc selain adj qty
  81.         2. Tuk doc adj qty yg qty > 0
  82.         3. Tuk doc adj qty yg qty < 0
  83.        Hal ini perlu dilakukan, karena pada in_summary_monthly_amount bisa ada 2 nilai berbeda tuk doc adj qty dgn product_id yg sama,
  84.        yaitu yg mengurangi stock dan yg menambah stock, dimana yg mengurangi stock nilainya berdasarkan nilai cogs,
  85.        sedangkan yg menambah stock nilainya berdasarkan harga standar/
  86.     */
  87.     UPDATE tt_gl_journal_costing SET amount = ROUND(tt_gl_journal_costing.qty * (A.gl_amount / A.qty), vRoundingAmount),
  88.                                     total_amount_product = CASE WHEN (A.gl_amount / A.qty) < 0 THEN -1*ABS(A.gl_amount) ELSE ABS(A.gl_amount) END,
  89.                                     total_qty_product = ABS(A.qty)
  90.     FROM in_summary_monthly_amount A
  91.     WHERE  tt_gl_journal_costing.session_id = pSessionId AND
  92.         tt_gl_journal_costing.tenant_id = A.tenant_id AND
  93.         tt_gl_journal_costing.ou_bu_id = A.ou_bu_id AND
  94.         tt_gl_journal_costing.ou_branch_id = A.ou_branch_id AND
  95.         tt_gl_journal_costing.ou_sub_bu_id = A.ou_sub_bu_id AND
  96.         tt_gl_journal_costing.doc_type_id = A.doc_type_id AND
  97.         tt_gl_journal_costing.product_id = A.product_id AND
  98.         A.date_year_month = pYearMonth AND
  99.         A.qty <> 0 AND
  100.         A.doc_type_id <> 521;
  101.  
  102.     UPDATE tt_gl_journal_costing SET amount = ROUND(tt_gl_journal_costing.qty * (A.gl_amount / A.qty), vRoundingAmount),
  103.                                     total_amount_product = CASE WHEN (A.gl_amount / A.qty) < 0 THEN -1*ABS(A.gl_amount) ELSE ABS(A.gl_amount) END,
  104.                                     total_qty_product = ABS(A.qty)
  105.     FROM in_summary_monthly_amount A
  106.     WHERE  tt_gl_journal_costing.session_id = pSessionId AND
  107.         tt_gl_journal_costing.tenant_id = A.tenant_id AND
  108.         tt_gl_journal_costing.ou_bu_id = A.ou_bu_id AND
  109.         tt_gl_journal_costing.ou_branch_id = A.ou_branch_id AND
  110.         tt_gl_journal_costing.ou_sub_bu_id = A.ou_sub_bu_id AND
  111.         tt_gl_journal_costing.doc_type_id = A.doc_type_id AND
  112.         tt_gl_journal_costing.product_id = A.product_id AND
  113.         A.date_year_month = pYearMonth AND
  114.         A.doc_type_id = 521 AND
  115.         A.qty > 0 AND
  116.         tt_gl_journal_costing.sign_journal = vSignDebit;
  117.  
  118.     UPDATE tt_gl_journal_costing SET amount = ROUND(tt_gl_journal_costing.qty * (A.gl_amount / A.qty), vRoundingAmount),
  119.                                     total_amount_product = CASE WHEN (A.gl_amount / A.qty) < 0 THEN -1*ABS(A.gl_amount) ELSE ABS(A.gl_amount) END,
  120.                                     total_qty_product = ABS(A.qty)
  121.     FROM in_summary_monthly_amount A
  122.     WHERE  tt_gl_journal_costing.session_id = pSessionId AND
  123.         tt_gl_journal_costing.tenant_id = A.tenant_id AND
  124.         tt_gl_journal_costing.ou_bu_id = A.ou_bu_id AND
  125.         tt_gl_journal_costing.ou_branch_id = A.ou_branch_id AND
  126.         tt_gl_journal_costing.ou_sub_bu_id = A.ou_sub_bu_id AND
  127.         tt_gl_journal_costing.doc_type_id = A.doc_type_id AND
  128.         tt_gl_journal_costing.product_id = A.product_id AND
  129.         A.date_year_month = pYearMonth AND
  130.         A.doc_type_id = 521 AND
  131.         A.qty < 0 AND
  132.         tt_gl_journal_costing.sign_journal = vSignCredit;
  133.        
  134.     /*
  135.      * summary untuk menghitung total nilai alokasi hasil costing dari in_summary_monthly_amount
  136.      * selisih nilai alokasi dan total nilai dari in_summary_monthly_amount akan diberikan
  137.      * ke item journal trx yang paling maksimum id nya.
  138.      * Mod by WTC, 20161019, Khusus untuk dokumen adj stock qty, perlu memperhatikan sign journal nya juga
  139.      */    
  140.     INSERT INTO tt_gl_summary_amount_product
  141.     (session_id, tenant_id, ou_bu_id, ou_branch_id, ou_sub_bu_id,
  142.      doc_type_id, product_id, journal_trx_item_id, alloc_amount, gl_amount)
  143.     SELECT A.session_id, A.tenant_id, A.ou_bu_id, A.ou_branch_id, A.ou_sub_bu_id,
  144.         A.doc_type_id, A.product_id, MAX(A.journal_trx_item_id), SUM(A.amount), A.total_amount_product
  145.     FROM tt_gl_journal_costing A
  146.     WHERE A.session_id = pSessionId AND
  147.         A.doc_type_id NOT IN (521)
  148.     GROUP BY A.session_id, A.tenant_id, A.ou_bu_id, A.ou_branch_id, A.ou_sub_bu_id,
  149.             A.doc_type_id, A.product_id, A.total_amount_product;
  150.      
  151.     INSERT INTO tt_gl_summary_amount_product
  152.     (session_id, tenant_id, ou_bu_id, ou_branch_id, ou_sub_bu_id,
  153.      doc_type_id, product_id, journal_trx_item_id, alloc_amount, gl_amount, sign_journal)
  154.     SELECT A.session_id, A.tenant_id, A.ou_bu_id, A.ou_branch_id, A.ou_sub_bu_id,
  155.         A.doc_type_id, A.product_id, MAX(A.journal_trx_item_id), SUM(A.amount), A.total_amount_product, A.sign_journal
  156.     FROM tt_gl_journal_costing A
  157.     WHERE A.session_id = pSessionId AND
  158.         A.doc_type_id IN (521)
  159.     GROUP BY A.session_id, A.tenant_id, A.ou_bu_id, A.ou_branch_id, A.ou_sub_bu_id,
  160.             A.doc_type_id, A.product_id, A.total_amount_product, A.sign_journal;
  161.      
  162.     UPDATE tt_gl_journal_costing SET amount = amount + A.gl_amount - A.alloc_amount
  163.     FROM tt_gl_summary_amount_product A
  164.     WHERE A.session_id = pSessionId AND
  165.         tt_gl_journal_costing.session_id = A.session_id AND
  166.         tt_gl_journal_costing.journal_trx_item_id = A.journal_trx_item_id AND
  167.         A.alloc_amount <> A.gl_amount;
  168.    
  169.     /*
  170.      * update nilai buku untuk semua transaksi di gl_journal_trx_item
  171.      */
  172.     UPDATE gl_journal_trx_item SET numerator_rate = 1, denominator_rate = 1,
  173.                                 gl_amount = A.amount,
  174.                                 gl_curr_code = vCurrGL
  175.     FROM tt_gl_journal_costing A
  176.     WHERE A.session_id = pSessionId AND
  177.         gl_journal_trx_item.journal_trx_item_id = A.journal_trx_item_id;
  178.        
  179.     /*
  180.      * hitung summary journal per trx, nilai summary akan digunakan
  181.      *  1.untuk update nilai item journal mapping
  182.      *  2.untuk hitung selisih forex : hny untuk trx Nota Klaim  
  183.      */
  184.     INSERT INTO tt_gl_summary_journal
  185.     (session_id, ctgr_journal, journal_trx_id, sign_journal,
  186.     gl_amount, temp_amount)
  187.     SELECT A.session_id, 'ITEM', A.journal_trx_id, A.sign_journal,
  188.             SUM(A.amount), SUM(A.amount)
  189.     FROM tt_gl_journal_costing A
  190.     WHERE A.session_id = pSessionId
  191.     GROUP BY session_id, journal_trx_id, sign_journal;
  192.  
  193.     /*
  194.      * ambil data journal trx mapping untuk doc type id = Nota Klaim
  195.      * hitung rate dan nilai buku nya
  196.      * update langsung data gl_journal_trx_mapping nya
  197.      */
  198.     INSERT INTO tt_gl_journal_trx_mapping
  199.     (session_id, doc_type_id, journal_trx_mapping_id, journal_trx_id, line_no,
  200.     sign_journal, curr_code, amount,
  201.     journal_date, type_rate)   
  202.     SELECT pSessionId, A.doc_type_id, D.journal_trx_mapping_id, D.journal_trx_id, D.line_no,
  203.         D.sign_journal, D.curr_code, D.amount,
  204.         D.journal_date, D.type_rate
  205.     FROM tt_gl_journal_costing A, gl_journal_trx_mapping D
  206.     WHERE A.session_id = pSessionId AND
  207.         A.doc_type_id = 511 AND
  208.         A.journal_trx_id = D.journal_trx_id
  209.     GROUP BY A.doc_type_id, D.journal_trx_mapping_id, D.journal_trx_id, D.line_no,
  210.         D.sign_journal, D.curr_code, D.amount, D.journal_date, D.type_rate;
  211.    
  212.     INSERT INTO tt_gl_admin_journal_rate
  213.     (session_id, type_rate, journal_date, curr_code, gl_curr_code, data_exchange_rate) 
  214.     SELECT pSessionId, A.type_rate, A.journal_date, A.curr_code, vCurrGL, f_get_exchange_rate(pTenantId, A.type_rate, A.journal_date, A.curr_code, vCurrGL)
  215.     FROM (     
  216.         SELECT A.journal_date, A.type_rate, A.curr_code
  217.         FROM tt_gl_journal_trx_mapping A
  218.         WHERE A.session_id = pSessionId
  219.         GROUP BY journal_date, type_rate, curr_code) A;
  220.        
  221.     UPDATE tt_gl_journal_trx_mapping SET numerator_rate = (data_exchange_rate).numerator_rate,
  222.                                         denominator_rate = (data_exchange_rate).denominator_rate,
  223.                                         gl_amount = ROUND(amount * (data_exchange_rate).numerator_rate / (data_exchange_rate).denominator_rate, vRoundingAmount)                                       
  224.     FROM tt_gl_admin_journal_rate A
  225.     WHERE tt_gl_journal_trx_mapping.session_id = pSessionId AND
  226.         tt_gl_journal_trx_mapping.session_id = A.session_id AND
  227.         tt_gl_journal_trx_mapping.type_rate = A.type_rate AND
  228.         tt_gl_journal_trx_mapping.journal_date = A.journal_date AND
  229.         tt_gl_journal_trx_mapping.curr_code = A.curr_code;
  230.    
  231.     /*
  232.      * update nilai buku untuk item journal mapping Nota Klaim
  233.      */
  234.     UPDATE gl_journal_trx_mapping SET numerator_rate = A.numerator_rate, denominator_rate = A.denominator_rate, gl_amount = A.gl_amount, gl_curr_code = vCurrGL
  235.     FROM tt_gl_journal_trx_mapping A
  236.     WHERE A.session_id = pSessionId AND
  237.         gl_journal_trx_mapping.journal_trx_mapping_id = A.journal_trx_mapping_id;
  238.        
  239.     /*
  240.      * buat data journal trx mapping untuk doc type yang bukan nota klaim
  241.      * dengan menghitung total nilai dari tt_gl_journal_costing
  242.      * hal ini dilakukan untuk memastikan jika terjadi kesalahan coding dalam membuat template journal
  243.      * maka nanti akan bisa muncul Forex, padahal transaksi selain Nota Klaim seharusnya tidak ada forex.
  244.      *
  245.      * Khusus untuk adj qty, amountnya harus memperhatikan sign journal nya, karena dlm 1 trx adj qty,
  246.      * bisa saja memiliki 2 jenis journal item dengan sign journal yg berbeda.
  247.      */
  248.     INSERT INTO tt_gl_journal_trx_mapping
  249.     (session_id, doc_type_id, journal_trx_mapping_id, journal_trx_id, line_no,
  250.     sign_journal, curr_code, amount, gl_amount,
  251.     journal_date, type_rate)   
  252.     SELECT pSessionId, A.doc_type_id, D.journal_trx_mapping_id, D.journal_trx_id, D.line_no,
  253.         D.sign_journal, D.curr_code, D.amount, SUM(A.amount),
  254.         D.journal_date, D.type_rate
  255.     FROM tt_gl_journal_costing A, gl_journal_trx_mapping D
  256.     WHERE A.session_id = pSessionId AND
  257.         A.doc_type_id NOT IN (511, 521, 536) AND
  258.         A.journal_trx_id = D.journal_trx_id
  259.     GROUP BY A.doc_type_id, D.journal_trx_mapping_id, D.journal_trx_id, D.line_no,
  260.         D.sign_journal, D.curr_code, D.journal_date, D.type_rate;
  261.            
  262.     INSERT INTO tt_gl_journal_trx_mapping
  263.     (session_id, doc_type_id, journal_trx_mapping_id, journal_trx_id, line_no,
  264.     sign_journal, curr_code, amount, gl_amount,
  265.     journal_date, type_rate)   
  266.     SELECT pSessionId, A.doc_type_id, D.journal_trx_mapping_id, D.journal_trx_id, D.line_no,
  267.         D.sign_journal, D.curr_code, D.amount, SUM(CASE WHEN A.sign_journal = vSignDebit THEN A.amount ELSE -1 * A.amount END),
  268.         D.journal_date, D.type_rate
  269.     FROM tt_gl_journal_costing A, gl_journal_trx_mapping D
  270.     WHERE A.session_id = pSessionId AND
  271.         A.doc_type_id IN (521, 536) AND
  272.         A.journal_trx_id = D.journal_trx_id
  273.     GROUP BY A.doc_type_id, D.journal_trx_mapping_id, D.journal_trx_id, D.line_no,
  274.         D.sign_journal, D.curr_code, D.journal_date, D.type_rate;
  275.        
  276.     /*
  277.      * WTC, 170130, Harus update yg gl_amount nya positif dl. Jika terbalik, maka akibatnya semua akan terupdate sign_journal menjadi C (karena semua gl_amount sudah bernilai positif)
  278.      * Update sign_journal menjadi C untuk doc adj qty yg amountnya > 0
  279.      */
  280.     UPDATE tt_gl_journal_trx_mapping SET sign_journal = vSignCredit
  281.     WHERE doc_type_id IN (521, 536) AND
  282.         gl_amount > 0 AND
  283.         session_id = pSessionId;
  284.        
  285.     /*
  286.      * Update sign_journal menjadi D untuk doc adj qty yg amountnya < 0
  287.      */
  288.     UPDATE tt_gl_journal_trx_mapping SET sign_journal = vSignDebit, gl_amount = ABS(gl_amount)
  289.     WHERE doc_type_id IN (521, 536) AND
  290.         gl_amount < 0 AND
  291.         session_id = pSessionId;
  292.            
  293.     /*
  294.      * update gl_journal_trx_mapping untuk nilai buku transaksi yang bukan Nota Klaim
  295.      */
  296.     UPDATE gl_journal_trx_mapping SET numerator_rate = 1, denominator_rate = 1,
  297.                                 gl_amount = A.gl_amount,
  298.                                 gl_curr_code = vCurrGL,
  299.                                 sign_journal = A.sign_journal
  300.     FROM tt_gl_journal_trx_mapping A
  301.     WHERE A.session_id = pSessionId AND
  302.         A.doc_type_id <> 511 AND
  303.         gl_journal_trx_mapping.journal_trx_mapping_id = A.journal_trx_mapping_id;
  304.                        
  305.     INSERT INTO tt_gl_summary_journal
  306.     (session_id, ctgr_journal, journal_trx_id, sign_journal, gl_amount, temp_amount)
  307.     SELECT A.session_id, 'MAPPING', A.journal_trx_id, A.sign_journal, SUM(A.gl_amount), SUM(A.gl_amount)
  308.     FROM tt_gl_journal_trx_mapping A
  309.     WHERE A.session_id = pSessionId
  310.     GROUP BY session_id, journal_trx_id, sign_journal;
  311.        
  312.     UPDATE tt_gl_summary_journal SET temp_amount = temp_amount * -1
  313.     WHERE sign_journal = vSignCredit AND
  314.         session_id = pSessionId;
  315.    
  316.     INSERT INTO tt_gl_summary_journal
  317.     (session_id, ctgr_journal, journal_trx_id, sign_journal, gl_amount, temp_amount)
  318.     SELECT A.session_id, 'ALL', A.journal_trx_id, vSignCredit, 0, SUM(A.temp_amount)
  319.     FROM tt_gl_summary_journal A
  320.     WHERE A.session_id = pSessionId
  321.     GROUP BY A.session_id, A.journal_trx_id;
  322.    
  323.     UPDATE tt_gl_summary_journal SET sign_journal = vSignDebit, temp_amount = temp_amount * -1
  324.     WHERE session_id = pSessionId AND
  325.         ctgr_journal = 'ALL' AND
  326.         temp_amount < 0;
  327.        
  328.     DELETE FROM gl_journal_trx_fx A
  329.     WHERE EXISTS (
  330.         SELECT 1
  331.         FROM tt_gl_summary_journal B
  332.         WHERE A.journal_trx_id = B.journal_trx_id AND
  333.               B.ctgr_journal = 'ALL' AND
  334.               B.session_id = pSessionId
  335.     );
  336.        
  337.     /*
  338.      * buat transaksi forex
  339.      * seharusnya cuma ada untuk transaksi Nota Klaim
  340.      */
  341.     INSERT INTO gl_journal_trx_fx
  342.     (tenant_id, journal_trx_id, line_no, ref_doc_type_id, ref_id,  
  343.     partner_id, product_id, cashbank_id, ou_rc_id, segmen_id,
  344.     sign_journal, flg_source_coa, activity_gl_id, coa_id,
  345.     curr_code, amount, journal_date, type_rate,
  346.     numerator_rate, denominator_rate, gl_curr_code, gl_amount,  
  347.     journal_desc, remark,
  348.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  349.     SELECT B.tenant_id, A.journal_trx_id, 1, vEmptyId, vEmptyId,
  350.         vEmptyId, vEmptyId, vEmptyId, vEmptyId, vEmptyId,
  351.         A.sign_journal, vSystemCOA, vEmptyId, f_get_system_coa_by_group_coa(B.tenant_id, 'BiayaSelisihKurs'),
  352.         vCurrGL, A.temp_amount, B.doc_date, vEmptyValue,
  353.         1, 1, vCurrGL, A.temp_amount,
  354.         'FX', 'Forex ' || C.doc_desc || ' ' || B.doc_date,
  355.         0, pDatetime, pUserId, pDatetime, pUserId
  356.     FROM tt_gl_summary_journal A,
  357.         gl_journal_trx B, m_document C
  358.     WHERE A.session_id = pSessionId AND
  359.         A.journal_trx_id = B.journal_trx_id AND
  360.         B.doc_type_id = C.doc_type_id AND
  361.         A.ctgr_journal = 'ALL' AND
  362.         A.temp_amount <> 0;
  363.        
  364.     /*
  365.      * data rate dari transaksi klaim
  366.      */    
  367.     INSERT INTO gl_admin_journal_rate
  368.     (tenant_id, journal_year_month, process_datetime, process_user_id,  
  369.     journal_date, type_rate, curr_code, gl_curr_code, numerator_rate, denominator_rate)
  370.     SELECT pTenantId, pYearMonth, pDatetime, pUserId,
  371.         journal_date, type_rate, curr_code, gl_curr_code, (data_exchange_rate).numerator_rate, (data_exchange_rate).denominator_rate
  372.     FROM tt_gl_admin_journal_rate
  373.     WHERE session_id = pSessionId AND
  374.         curr_code <> gl_curr_code;
  375.            
  376.     UPDATE gl_admin_journal_trx SET process_datetime = pDatetime, process_user_id = pUserId
  377.     WHERE tenant_id = pTenantId AND
  378.         ou_id = pOuId AND
  379.         journal_process_periode = vJournalProcessPeriode AND
  380.         ledger_code = vLedgerCode AND
  381.         journal_year_month = pYearMonth;
  382.        
  383.     UPDATE gl_journal_trx SET status_doc = vStatusRelease, version = version + 1, update_datetime = pDatetime, update_user_id = pUserId
  384.     FROM (SELECT journal_trx_id
  385.             FROM tt_gl_journal_costing A
  386.             WHERE A.session_id = pSessionId
  387.             GROUP BY journal_trx_id) A
  388.     WHERE gl_journal_trx.journal_trx_id = A.journal_trx_id;    
  389.    
  390.     -- update status document khusus untuk document cost allocation to product (528), dan adjustment stok amount (522)
  391.     UPDATE gl_journal_trx SET status_doc = vStatusRelease, version = version + 1, update_datetime = pDatetime, update_user_id = pUserId
  392.     WHERE doc_type_id IN (528,522)
  393.     AND SUBSTRING(doc_date, 1, 6) = pYearMonth;
  394.    
  395.     DELETE FROM tt_gl_journal_costing WHERE session_id = pSessionId;
  396.     DELETE FROM tt_gl_summary_amount_product WHERE session_id = pSessionId;
  397.     DELETE FROM tt_gl_summary_journal WHERE session_id = pSessionId;
  398.     DELETE FROM tt_gl_journal_trx_mapping WHERE session_id = pSessionId;
  399.     DELETE FROM tt_gl_admin_journal_rate WHERE session_id = pSessionId;
  400.    
  401. END;
  402. $BODY$
  403.   LANGUAGE plpgsql VOLATILE
  404.   COST 100;
  405.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement