Advertisement
tercnem

posting RM

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