Advertisement
aadddrr

SL SUBMIT DO

May 26th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Function: sl_submit_do(bigint, character varying, character varying)
  2.  
  3. -- DROP FUNCTION sl_submit_do(bigint, character varying, character varying);
  4.  
  5. CREATE OR REPLACE FUNCTION sl_submit_do(bigint, character varying, character varying)
  6.   RETURNS void AS
  7. $BODY$
  8. DECLARE
  9.     pTenantId           ALIAS FOR $1;
  10.     pSessionId          ALIAS FOR $2;
  11.     pProcessNo          ALIAS FOR $3;
  12.  
  13.     vProcessId              bigint;
  14.     vDoId                   bigint;
  15.     vUserId                 bigint;
  16.     vDatetime               character varying(14);
  17.     vFlagInvoice            character varying(1);
  18.     vEmptyId                bigint;
  19.     vStatusRelease          character varying(1);
  20.     vStatusDraft            character varying(1);  
  21.     vStatusFinal            character varying(1);
  22.     vEmptyValue             character varying(1);
  23.     vProductStatus          character varying(5);
  24.     vSignDebit              character varying(1);
  25.     vSignCredit             character varying(1);
  26.     vTypeRate               character varying(3);
  27.     vProductCOA             character varying(10);
  28.     vSystemCOA              character varying(10);
  29.     vSoId                   bigint;
  30.     vUnfinishedItem         bigint;
  31.     vNol                    bigint;
  32.     vParentOuId             bigint;
  33.     vOuId                   bigint;
  34.     vOuWarehouseId          bigint;
  35.     vJournalTrxId           bigint;    
  36.     vJournalType            character varying(20)
  37.    
  38.     vDocJournal             DOC_JOURNAL%ROWTYPE;
  39.     vOuStructure            OU_BU_STRUCTURE%ROWTYPE;
  40.     vOuStructureJournalItem     OU_BU_STRUCTURE%ROWTYPE;
  41.     result                  RECORD;
  42.    
  43.     vDeliveryOrderDocTypeId bigint;
  44.     vRoundingModeNonTax     character varying(5);
  45.    
  46. BEGIN
  47.    
  48.     vFlagInvoice := 'N';
  49.     vEmptyId := -99;
  50.     vStatusRelease := 'R';
  51.     vStatusDraft := 'D';   
  52.     vStatusFinal := 'F';
  53.     vEmptyValue := ' ';
  54.     vProductStatus := 'GOOD';
  55.     vSignDebit := 'D';
  56.     vSignCredit := 'C';
  57.     vTypeRate := 'COM';
  58.     vProductCOA := 'PRODUCT';
  59.     vSystemCOA := 'SYSTEM';
  60.     vUnfinishedItem := 0;
  61.     vNol := 0;
  62.    
  63.     vDeliveryOrderDocTypeId = 311;
  64.     SELECT f_get_value_system_config_by_param_code(pTenantId, 'rounding.mode.non.tax') INTO vRoundingModeNonTax;
  65.    
  66.    
  67.     SELECT A.process_message_id INTO vProcessId
  68.     FROM t_process_message A
  69.     WHERE A.tenant_id = pTenantId AND
  70.         A.process_name = 'sl_submit_do' AND
  71.         A.process_no = pProcessNo;
  72.        
  73.     SELECT CAST(A.process_parameter_value AS bigint) INTO vDoId
  74.     FROM t_process_parameter A
  75.     WHERE A.process_message_id = vProcessId AND
  76.         A.process_parameter_key = 'doId';
  77.    
  78.     SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  79.     FROM t_process_parameter A
  80.     WHERE A.process_message_id = vProcessId AND
  81.         A.process_parameter_key = 'userId';
  82.  
  83.     SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  84.     FROM t_process_parameter A
  85.     WHERE A.process_message_id = vProcessId AND
  86.         A.process_parameter_key = 'datetime';
  87.  
  88.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId; 
  89. /*
  90.  * 1. update status doc sl_do
  91.  * 2. add sl_log_so_balance_item
  92.  * 3. add sl_so_balance_invoice
  93.  * 4. add sl_so_balance_invoice_tax
  94.  * 5. add in_log_product_balance_stock
  95.  * 6. add in_balance_do_item
  96.  * 7. update status sl_so_balance_item
  97.  * 8. update status sl_so. Jika seluruh balance item sudah final/cancel, maka status menjadi Final.
  98.  * 9. add gl_journal_trx
  99.  * 10. add gl_journal_trx_item
  100.  * 11. add gl_journal_trx_mapping
  101.  *
  102.  */
  103.  
  104.     SELECT A.ref_id, f_get_ou_bu_structure(A.ou_id) AS ou, f_get_document_journal(A.doc_type_id) as doc
  105.     FROM sl_do A
  106.     WHERE A.do_id = vDoId INTO result;
  107.        
  108.     vSoId := result.ref_id;
  109.     vOuStructure := result.ou;
  110.     vDocJournal := result.doc;
  111.    
  112.     UPDATE sl_do SET status_doc = vStatusRelease, version = version + 1, update_datetime = vDatetime, update_user_id = vUserId
  113.     WHERE do_id = vDoId;
  114.    
  115.     INSERT INTO sl_log_so_balance_item
  116.     (tenant_id, so_id, so_item_id, ref_doc_type_id, ref_id, ref_item_id,
  117.      qty_trx, trx_uom_id, qty_int, base_uom_id, remark,
  118.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  119.     SELECT A.tenant_id, C.so_id, C.so_item_id, A.doc_type_id, A.do_id, B.do_item_id,
  120.         B.qty_dlv_so * -1, B.so_uom_id, B.qty_dlv_int  *-1, B.base_uom_id, B.remark,
  121.         0, vDatetime, vUserId, vDatetime, vUserId
  122.     FROM sl_do A, sl_do_item B, sl_so_item C
  123.     WHERE A.do_id = vDoId AND
  124.           A.do_id = B.do_id AND
  125.           B.ref_id = C.so_item_id;
  126.          
  127.     INSERT INTO sl_so_balance_invoice
  128.     (tenant_id, ou_id, partner_id, so_id,
  129.     ref_doc_type_id, ref_id, ref_doc_no, ref_doc_date, ref_item_id, qty_dlv_so, so_uom_id,
  130.     curr_code, price_so, item_amount, flg_invoice, invoice_id,
  131.     regular_disc_amount, promo_disc_amount, adj_regular_disc_amount, adj_promo_disc_amount,
  132.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  133.     SELECT A.tenant_id, A.ou_id, D.partner_bill_to_id, A.ref_id,
  134.         A.doc_type_id, A.do_id, A.doc_no, A.doc_date, B.do_item_id, B.qty_dlv_so, B.so_uom_id,
  135.         C.curr_code, C.nett_sell_price,
  136.         f_get_amount_before_tax_and_disc(B.qty_dlv_so * C.gross_sell_price, B.qty_dlv_so * C.discount_amount, C.flg_tax_amount, C.tax_percentage, f_get_digit_decimal_doc_curr(vDeliveryOrderDocTypeId, C.curr_code), vRoundingModeNonTax),
  137.         vFlagInvoice, vEmptyId,
  138.         C.discount_amount * B.qty_dlv_so, 0, 0, 0,
  139.         0, vDatetime, vUserId, vDatetime, vUserId
  140.     FROM sl_do A, sl_do_item B, sl_so_item C, sl_so D
  141.     WHERE A.do_id = vDoId AND
  142.           A.do_id = B.do_id AND
  143.           B.ref_id = C.so_item_id AND
  144.           C.so_id = D.so_id;
  145.        
  146.     INSERT INTO sl_so_balance_invoice_tax
  147.     (tenant_id, ou_id, partner_id, so_id,
  148.     ref_doc_type_id, ref_id, ref_item_id, tax_id, flg_amount,
  149.     tax_percentage, curr_code, base_amount, tax_amount, flg_invoice, invoice_id,
  150.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  151.     SELECT A.tenant_id, A.ou_id, E.partner_bill_to_id, A.ref_id,
  152.         A.doc_type_id, A.do_id, B.do_item_id, C.tax_id, D.flg_amount,
  153.         C.tax_percentage, C.curr_code,
  154.         f_get_amount_before_tax_and_disc(B.qty_dlv_so * C.gross_sell_price, B.qty_dlv_so * C.discount_amount, C.flg_tax_amount, C.tax_percentage, f_get_digit_decimal_doc_curr(vDeliveryOrderDocTypeId, C.curr_code), vRoundingModeNonTax),
  155.         f_tax_rounding(A.tenant_id, f_get_amount_before_tax(B.qty_dlv_so * (C.gross_sell_price - C.discount_amount), C.flg_tax_amount, C.tax_percentage, f_get_digit_decimal_doc_curr(vDeliveryOrderDocTypeId, C.curr_code), vRoundingModeNonTax), C.tax_percentage), vFlagInvoice, vEmptyId,
  156.         0, vDatetime, vUserId, vDatetime, vUserId
  157.     FROM sl_do A, sl_do_item B, sl_so_item C, m_tax D, sl_so E
  158.     WHERE A.do_id = vDoId AND
  159.           A.do_id = B.do_id AND
  160.           B.ref_id = C.so_item_id AND
  161.           C.tax_id = D.tax_id AND
  162.           C.so_id = E.so_id;
  163.          
  164.     /*
  165.      * buat data log product balance stock
  166.      * ref item id = do_product_id
  167.      */      
  168.     INSERT INTO in_log_product_balance_stock
  169.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  170.      product_id, product_balance_id, warehouse_id, product_status, base_uom_id, qty,
  171.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  172.     SELECT A.tenant_id, D.ou_id, A.doc_type_id, A.do_id, A.doc_no, A.doc_date, A.partner_ship_to_id,
  173.         C.product_id, C.product_balance_id, A.warehouse_id, C.product_status, C.base_uom_id, SUM(C.qty_dlv_int) * -1,
  174.         0, vDatetime, vUserId, vDatetime, vUserId      
  175.     FROM sl_do A, sl_do_item B, sl_do_product C, m_warehouse_ou D
  176.     WHERE A.do_id = vDoId AND
  177.         A.do_id = B.do_id AND
  178.         B.do_item_id = C.do_item_id AND
  179.         A.warehouse_id = D.warehouse_id
  180.     GROUP BY A.tenant_id, D.ou_id, A.doc_type_id, A.do_id, A.doc_no, A.doc_date, A.partner_ship_to_id,
  181.             C.product_id, C.product_balance_id, A.warehouse_id, C.product_status, C.base_uom_id;
  182.  
  183.     /*
  184.      * add data balance do item yang akan digunakan di inventory untuk pembuatan return note,
  185.      * saat akan membuat return note
  186.      */
  187.     INSERT INTO in_balance_do_item
  188.     (do_item_id, tenant_id, ou_id, do_id, doc_no, doc_date, partner_id,
  189.       so_id, so_no, so_date, so_item_id,
  190.       qty_dlv, qty_return, so_uom_id, qty_dlv_int, 
  191.       qty_return_int, base_uom_id, status_item,
  192.       "version", create_datetime, create_user_id, update_datetime, update_user_id)
  193.     SELECT B.do_item_id, A.tenant_id, A.ou_id, A.do_id, A.doc_no, A.doc_date, A.partner_ship_to_id,
  194.             A.ref_id, C.doc_no, C.doc_date, B.ref_id,
  195.             SUM(B.qty_dlv_so), 0, B.so_uom_id, SUM(B.qty_dlv_int),
  196.             0, B.base_uom_id, vStatusRelease,
  197.         0, vDatetime, vUserId, vDatetime, vUserId      
  198.     FROM sl_do A, sl_do_item B, sl_so C
  199.     WHERE A.do_id = vDoId AND
  200.         A.do_id = B.do_id AND
  201.         A.ref_id = C.so_id
  202.     GROUP BY B.do_item_id, A.tenant_id, A.ou_id, A.do_id, A.doc_no, A.doc_date, A.partner_ship_to_id,
  203.         A.ref_id, C.doc_no, C.doc_date, B.ref_id, B.so_uom_id, B.base_uom_id;
  204.    
  205.     UPDATE sl_so_balance_item SET status_item = vStatusRelease, update_datetime = vDatetime, update_user_id = vUserId
  206.     FROM sl_do_item A
  207.     WHERE sl_so_balance_item.so_item_id = A.ref_id AND
  208.         sl_so_balance_item.tenant_id = A.tenant_id AND
  209.         A.do_id = vDoId AND
  210.         sl_so_balance_item.qty_so - sl_so_balance_item.qty_cancel + sl_so_balance_item.qty_add - sl_so_balance_item.qty_dlv > 0;
  211.  
  212.     UPDATE sl_so_balance_item SET status_item = vStatusFinal, update_datetime = vDatetime, update_user_id = vUserId
  213.     FROM sl_do_item A
  214.     WHERE sl_so_balance_item.so_item_id = A.ref_id AND
  215.         sl_so_balance_item.tenant_id = A.tenant_id AND
  216.         A.do_id = vDoId AND
  217.         sl_so_balance_item.qty_so - sl_so_balance_item.qty_cancel + sl_so_balance_item.qty_add - sl_so_balance_item.qty_dlv <= 0;
  218.    
  219.     /*
  220.      * modified by Putra Soliman, 07 Maret 2016 untuk improvement Service RMA
  221.      * update sl_so_balance_warranty_item --> status_item F seperti di atas.. untuk item yg sama dengan balance itemnya
  222.      * INSERT ke sl_so_balance_warranty_invoice dan sl_so_balance_warranty_invoice_tax
  223.      */
  224.        
  225.     INSERT INTO sl_so_balance_warranty_invoice(
  226.             tenant_id, ou_id, partner_id, so_id,
  227.             ref_doc_type_id, ref_id, ref_doc_no, ref_doc_date, ref_item_id,
  228.             qty_dlv_so, so_uom_id, curr_code, warranty_sell_price, warranty_sell_amount, flg_default_warranty, flg_invoice,
  229.             invoice_id, warranty_type_id, flg_invoice_temp, do_receipt_item_id, def_warranty_time, warranty_time,
  230.             version, create_datetime, create_user_id,
  231.             update_datetime, update_user_id)
  232.     SELECT A.tenant_id, A.ou_id, D.partner_bill_to_id, A.ref_id,
  233.         A.doc_type_id, A.do_id, A.doc_no, A.doc_date, B.do_item_id,
  234.         B.qty_dlv_so, B.so_uom_id,
  235.         C.curr_code, E.warranty_sell_price, B.qty_dlv_so * E.warranty_sell_price, E.flg_default_warranty, vFlagInvoice,
  236.         vEmptyId, E.warranty_type_id, vFlagInvoice, vEmptyId, E.def_warranty_time, E.warranty_time,
  237.         0, vDatetime, vUserId,
  238.         vDatetime, vUserId
  239.     FROM sl_do A, sl_do_item B, sl_so_item C, sl_so D, sl_so_warranty_item E
  240.     WHERE A.do_id = vDoId AND
  241.           A.do_id = B.do_id AND
  242.           B.ref_id = C.so_item_id AND
  243.           C.so_id = D.so_id AND
  244.           E.so_item_id = C.so_item_id;
  245.    
  246.     INSERT INTO sl_so_balance_warranty_invoice_tax(
  247.             tenant_id, ou_id, partner_id,
  248.             so_id, ref_doc_type_id, ref_id, ref_item_id, tax_id, flg_amount,
  249.             tax_percentage, curr_code, base_amount, tax_amount,
  250.             flg_invoice, invoice_id, warranty_type_id,
  251.             version, create_datetime, create_user_id, update_datetime, update_user_id)
  252.     SELECT A.tenant_id, A.ou_id, D.partner_bill_to_id,
  253.         A.ref_id, A.doc_type_id, A.do_id, B.do_item_id, C.tax_id, F.flg_amount,
  254.         C.tax_percentage, C.curr_code,
  255.         f_get_amount_before_tax_and_disc(B.qty_dlv_so * E.warranty_sell_price, vNol, C.flg_tax_amount, C.tax_percentage, f_get_digit_decimal_doc_curr(vDeliveryOrderDocTypeId, C.curr_code), vRoundingModeNonTax),
  256.         f_tax_rounding(A.tenant_id, f_get_amount_before_tax(B.qty_dlv_so * E.warranty_sell_price, C.flg_tax_amount, C.tax_percentage, f_get_digit_decimal_doc_curr(vDeliveryOrderDocTypeId, C.curr_code), vRoundingModeNonTax), C.tax_percentage),
  257.         vFlagInvoice, vEmptyId, E.warranty_type_id,
  258.         0, vDatetime, vUserId, vDatetime, vUserId
  259.     FROM sl_do A, sl_do_item B, sl_so_item C, sl_so D, sl_so_warranty_item E, m_tax F
  260.     WHERE A.do_id = vDoId AND
  261.           A.do_id = B.do_id AND
  262.           B.ref_id = C.so_item_id AND
  263.           C.so_id = D.so_id AND
  264.           E.so_item_id = C.so_item_id AND
  265.           F.tax_id = C.tax_id;
  266.          
  267.     UPDATE sl_so_balance_warranty_item SET status_item = vStatusRelease, update_datetime = vDatetime, update_user_id = vUserId
  268.     FROM sl_do_item A, sl_so_warranty_item B, sl_so_balance_item C
  269.     WHERE B.so_item_id = A.ref_id
  270.         AND sl_so_balance_warranty_item.tenant_id = A.tenant_id
  271.         AND A.do_id = vDoId
  272.         AND sl_so_balance_warranty_item.so_warranty_item_id = B.so_warranty_item_id
  273.         AND sl_so_balance_warranty_item.so_item_id = C.so_item_id
  274.         AND C.qty_so - C.qty_cancel + C.qty_add - C.qty_dlv > 0;
  275.  
  276.     UPDATE sl_so_balance_warranty_item SET status_item = vStatusFinal, update_datetime = vDatetime, update_user_id = vUserId
  277.     FROM sl_do_item A, sl_so_warranty_item B, sl_so_balance_item C
  278.     WHERE sl_so_balance_warranty_item.tenant_id = A.tenant_id
  279.         AND A.do_id = vDoId
  280.         AND sl_so_balance_warranty_item.so_warranty_item_id = B.so_warranty_item_id
  281.         AND sl_so_balance_warranty_item.so_item_id = C.so_item_id
  282.         AND C.qty_so - C.qty_cancel + C.qty_add - C.qty_dlv <= 0;
  283.            
  284.     SELECT COUNT(1) INTO vUnfinishedItem
  285.     FROM sl_so_balance_item A, sl_so_item B
  286.     WHERE A.so_item_id = B.so_item_id AND
  287.         B.so_id = vSoId AND
  288.         A.status_item = vStatusRelease;
  289.        
  290.     IF vUnfinishedItem = 0 THEN
  291.         UPDATE sl_so SET status_doc = vStatusFinal
  292.         WHERE so_id = vSoId;
  293.     END IF;
  294.    
  295.     /*
  296.      * @author TKP, 9 Jun 2016
  297.      * Cek jika OU pada warehouse sama dengan OU pada dokumen maka nilai ou_bu_id dan ou_sub_bu_id =-99
  298.      * jika OU pada warehouse tidak sama dengan OU pada dokumen maka nilai ou_bu_id dan ou_sub_bu_id didapat pada f_get_ou_bu_structure;
  299.      */
  300.    
  301.     SELECT A.ou_id, B.ou_id INTO vOuId, vOuWarehouseId
  302.     FROM sl_do A
  303.     INNER JOIN m_warehouse_ou B ON A.warehouse_id = B.warehouse_id
  304.     WHERE A.do_id = vDoId;
  305.    
  306.     IF (vOuId <> vOuWarehouseId) THEN
  307.         SELECT f_get_ou_bu_structure(vOuWarehouseId) as ou_structure INTO result;
  308.         vOuStructureJournalItem := result.ou_structure;
  309.     ELSE
  310.         vOuStructureJournalItem := ROW(-99, -99, -99);
  311.     END IF;
  312.    
  313.        
  314.     /*
  315.      * membuat data transaksi jurnal :
  316.      * 1. buat admin
  317.      * 2. buat temlate jurnal
  318.      */
  319.  
  320.     PERFORM gl_manage_admin_journal_trx(A.tenant_id, (vOuStructure).ou_bu_id, A.ou_id, (vDocJournal).journal_type, (vDocJournal).ledger_code, f_get_year_month_date(A.doc_date), 'MONTHLY', vDatetime, vUserId)
  321.     FROM sl_do A
  322.     WHERE A.do_id = vDoId;
  323.    
  324.     SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  325.    
  326.     INSERT INTO gl_journal_trx
  327.     (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  328.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,  
  329.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  330.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  331.     SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, A.doc_type_id, A.do_id, A.doc_no, A.doc_date,
  332.         (vOuStructure).ou_bu_id, (vOuStructure).ou_branch_id, (vOuStructure).ou_sub_bu_id, A.partner_ship_to_id, vEmptyId, A.warehouse_id, A.ext_doc_no, A.ext_doc_date,
  333.         A.ref_doc_type_id, A.ref_id, A.doc_date, B.curr_code, A.remark, vStatusDraft, 'DRAFT',
  334.         0, vDatetime, vUserId, vDatetime, vUserId
  335.     FROM sl_do A, sl_so B
  336.     WHERE A.do_id = vDoId AND
  337.         A.ref_doc_type_id = B.doc_type_id AND
  338.         A.ref_id = B.so_id;
  339.    
  340.     INSERT INTO tt_journal_trx_item
  341.     (session_id, tenant_id, journal_trx_id, line_no,
  342.     ref_doc_type_id, ref_id,
  343.     partner_id, product_id, cashbank_id, ou_rc_id,
  344.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  345.     coa_id, curr_code, qty, uom_id,
  346.     amount, journal_date, type_rate,
  347.     numerator_rate, denominator_rate, journal_desc, remark)
  348.     SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  349.         A.doc_type_id, B.do_item_id,
  350.         A.partner_ship_to_id, B.product_id, vEmptyId, vEmptyId,
  351.         vEmptyId, vSignCredit, vProductCOA, vEmptyId,
  352.         f_get_product_coa_group_product(A.tenant_id, B.product_id), f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), B.qty_dlv_int, B.base_uom_id,
  353.         0, A.doc_date, vTypeRate,
  354.         1, 1, 'PRODUCT_STOCK', B.remark
  355.     FROM sl_do A, sl_do_item B, sl_so_item C
  356.     WHERE A.do_id = vDoId AND
  357.         A.do_id = B.do_id AND
  358.         B.ref_id = C.so_item_id;
  359.        
  360.     INSERT INTO gl_journal_trx_item
  361.     (tenant_id, journal_trx_id, line_no,
  362.     ref_doc_type_id, ref_id,
  363.     partner_id, product_id, cashbank_id, ou_rc_id,
  364.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  365.     coa_id, curr_code, qty, uom_id,
  366.     amount, journal_date, type_rate,
  367.     numerator_rate, denominator_rate, journal_desc, remark,
  368.     "version", create_datetime, create_user_id, update_datetime, update_user_id,
  369.     ou_branch_id, ou_sub_bu_id)
  370.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  371.         A.ref_doc_type_id, A.ref_id,
  372.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  373.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  374.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  375.         A.amount, A.journal_date, A.type_rate,
  376.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  377.         0, vDatetime, vUserId, vDatetime, vUserId,
  378.         (vOuStructureJournalItem).ou_branch_id, (vOuStructureJournalItem).ou_sub_bu_id
  379.     FROM tt_journal_trx_item A
  380.     WHERE A.session_id = pSessionId;
  381.    
  382.     INSERT INTO gl_journal_trx_mapping
  383.     (tenant_id, journal_trx_id, line_no,
  384.     ref_doc_type_id, ref_id,
  385.     partner_id, product_id, cashbank_id, ou_rc_id,
  386.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  387.     coa_id, curr_code, qty, uom_id,
  388.     amount, journal_date, type_rate,
  389.     numerator_rate, denominator_rate, journal_desc, remark,
  390.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  391.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  392.         vEmptyId, vEmptyId,
  393.         vEmptyId, vEmptyId, vEmptyId, vEmptyId,
  394.         vEmptyId, vSignDebit, vSystemCOA, vEmptyId,
  395.         f_get_system_coa_by_group_coa(A.tenant_id, 'HargaPokokPenjualan'), f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), 0, vEmptyId,
  396.         0, A.journal_date, A.type_rate,
  397.         1, 1, 'COGS', vEmptyValue,
  398.         0, vDatetime, vUserId, vDatetime, vUserId
  399.     FROM tt_journal_trx_item A
  400.     WHERE A.session_id = pSessionId
  401.     GROUP BY A.tenant_id, A.journal_trx_id, A.journal_date, A.type_rate;
  402.        
  403.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId; 
  404. END;   
  405. $BODY$
  406.   LANGUAGE plpgsql VOLATILE
  407.   COST 100;
  408. ALTER FUNCTION sl_submit_do(bigint, character varying, character varying)
  409.   OWNER TO sts;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement