Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION in_submit_return_note(bigint, character varying, character varying)
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE
  5.     pTenantId           ALIAS FOR $1;
  6.     pSessionId          ALIAS FOR $2;
  7.     pProcessNo          ALIAS FOR $3;
  8.  
  9.     vProcessId      bigint;
  10.     vReturnNoteId   bigint;
  11.     vUserId         bigint;
  12.     vDatetime       character varying(14);
  13.     vFlagInvoice    character varying(1);
  14.     vEmptyId        bigint;
  15.     vStatusRelease  character varying(1);
  16.     vEmptyValue     character varying(1);
  17.     vStatusFinal    character varying(1);
  18.     vStatusDraft    character varying(1);  
  19.     vFlagYes            character varying(1);
  20.     vFlagNo             character varying(1);
  21.     vEmptyString        character varying(1);  
  22.     vJournalType        character varying(20);
  23.     vSignDebit          character varying(1);
  24.     vSignCredit         character varying(1);
  25.     vTypeRate           character varying(3);
  26.     vProductCOA         character varying(10);
  27.     vSystemCOA          character varying(10);
  28.     vParentOuId         bigint;
  29.     vJournalTrxId       bigint;
  30.     vNol                numeric;
  31.     vOuId               bigint;
  32.     vOuWarehouseId      bigint;
  33.    
  34.     vDocJournal                 DOC_JOURNAL%ROWTYPE;
  35.     vOuStructure                OU_BU_STRUCTURE%ROWTYPE;
  36.     vOuStructureJournalItem     OU_BU_STRUCTURE%ROWTYPE;
  37.     result                      RECORD;
  38.    
  39.     vReturnNoteDocTypeId bigint;
  40.     vRoundingModeNonTax character varying(5);
  41.    
  42. BEGIN
  43.    
  44.     vFlagInvoice := 'N';
  45.     vEmptyId := -99;
  46.     vEmptyValue := ' ';
  47.     vStatusRelease := 'R';
  48.     vStatusFinal := 'F';
  49.     vStatusDraft := 'D';   
  50.     vFlagYes := 'Y';
  51.     vFlagNo := 'N';
  52.     vEmptyString := ' ';
  53.     vSignDebit := 'D';
  54.     vSignCredit := 'C';
  55.     vTypeRate := 'COM';
  56.     vProductCOA := 'PRODUCT';
  57.     vSystemCOA := 'SYSTEM';
  58.     vNol := 0;
  59.    
  60.     vReturnNoteDocTypeId := 502;
  61.     SELECT f_get_value_system_config_by_param_code(pTenantId, 'rounding.mode.non.tax') INTO vRoundingModeNonTax;
  62.    
  63.    
  64.     SELECT A.process_message_id INTO vProcessId
  65.     FROM t_process_message A
  66.     WHERE A.tenant_id = pTenantId AND
  67.         A.process_name = 'in_submit_return_note' AND
  68.         A.process_no = pProcessNo;
  69.        
  70.     SELECT CAST(A.process_parameter_value AS bigint) INTO vReturnNoteId
  71.     FROM t_process_parameter A
  72.     WHERE A.process_message_id = vProcessId AND
  73.         A.process_parameter_key = 'returnNoteId';
  74.    
  75.     SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  76.     FROM t_process_parameter A
  77.     WHERE A.process_message_id = vProcessId AND
  78.         A.process_parameter_key = 'userId';
  79.  
  80.     SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  81.     FROM t_process_parameter A
  82.     WHERE A.process_message_id = vProcessId AND
  83.         A.process_parameter_key = 'datetime';
  84.  
  85.     DELETE FROM tt_in_so_balance_item WHERE session_id = pSessionId;   
  86.    
  87.     /*
  88.      * 1.update status doc in_inventory
  89.      * 2.update data ke in_product_balance_stock / insert data ke in_product-balance_stock
  90.      * 3.insert data ke in_log_product_balance_stock
  91.      * 4.update data sl_so_balance_item
  92.      * 5.insert data sl_log_so_balance_item
  93.      * 6.insert data sl_so_balance_invoice
  94.      * 7.insert data sl_so_balance_invoice_tax
  95.      * 8.update data in_balance_do_item
  96.      * 9.add trx jurnal
  97.      */
  98.        
  99.     SELECT f_get_ou_bu_structure(A.ou_from_id) AS ou, f_get_document_journal(A.doc_type_id) as doc
  100.     FROM in_inventory A
  101.     WHERE A.inventory_id = vReturnNoteId INTO result;
  102.    
  103.     vOuStructure := result.ou;
  104.     vDocJournal := result.doc; 
  105.    
  106.     UPDATE in_inventory SET status_doc = vStatusRelease, version = version + 1, update_datetime = vDatetime, update_user_id = vUserId
  107.     WHERE inventory_id = vReturnNoteId;
  108.    
  109.     /*
  110.      * create summary dari in_inventory_item untuk update yg sudah ada di in_product_balance_stock
  111.      */
  112.     INSERT INTO tt_in_product_balance_summary_stock
  113.             (session_id, tenant_id, inventory_id, warehouse_id, product_id, product_balance_id, product_status, base_uom_id, qty)
  114.     SELECT  pSessionId, A.tenant_id, A.inventory_id, A.warehouse_from_id, B.product_id, B.product_balance_id, B.product_status,
  115.             B.base_uom_id, SUM(B.qty_realization)
  116.     FROM    in_inventory A, in_inventory_item B
  117.     WHERE   A.inventory_id = B.inventory_id
  118.     AND     A.inventory_id = vReturnNoteId
  119.     GROUP BY A.tenant_id, A.inventory_id, A.warehouse_from_id, B.product_id, B.product_balance_id, B.product_status, B.base_uom_id;
  120.        
  121.     /*
  122.      * update product_balance_stock
  123.      */
  124.     UPDATE in_product_balance_stock SET qty = in_product_balance_stock.qty + A.qty, update_datetime = vDatetime, update_user_id = vUserId
  125.     FROM tt_in_product_balance_summary_stock A
  126.     WHERE A.session_id = pSessionId AND
  127.         A.inventory_id = vReturnNoteId AND
  128.         in_product_balance_stock.tenant_id = A.tenant_id AND
  129.         in_product_balance_stock.warehouse_id = A.warehouse_id AND
  130.         in_product_balance_stock.product_id = A.product_id AND
  131.         in_product_balance_stock.product_balance_id = A.product_balance_id AND
  132.         in_product_balance_stock.product_status = A.product_status;
  133.    
  134.     /*
  135.      * insert data in_product_balance_stock
  136.      */
  137.     INSERT INTO in_product_balance_stock
  138.     (tenant_id, warehouse_id, product_id, product_balance_id, product_status, base_uom_id, qty,
  139.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  140.     SELECT A.tenant_id, A.warehouse_from_id, B.product_id, B.product_balance_id, B.product_status, B.base_uom_id, SUM(B.qty_realization),
  141.             0, vDatetime, vUserId, vDatetime, vUserId
  142.     FROM in_inventory A, in_inventory_item B
  143.     WHERE A.inventory_id = B.inventory_id AND
  144.         A.inventory_id = vReturnNoteId AND
  145.         NOT EXISTS (SELECT 1 FROM in_product_balance_stock C
  146.                     WHERE C.tenant_id = A.tenant_id AND
  147.                         C.warehouse_id = A.warehouse_from_id AND
  148.                         C.product_id = B.product_id AND
  149.                         C.product_balance_id = B.product_balance_id AND
  150.                         C.product_status = B.product_status)
  151.     GROUP BY A.tenant_id, A.warehouse_from_id, B.product_id, B.product_balance_id, B.product_status, B.base_uom_id;
  152.        
  153.     /*
  154.      * insert data in_log_product_balance_stock
  155.      */    
  156.     INSERT INTO in_log_product_balance_stock
  157.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  158.      product_id, product_balance_id, warehouse_id, product_status, base_uom_id, qty,
  159.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  160.     SELECT A.tenant_id, A.ou_to_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  161.         B.product_id, B.product_balance_id, A.warehouse_to_id, B.product_status, B.base_uom_id, SUM(B.qty_realization),
  162.         0, vDatetime, vUserId, vDatetime, vUserId
  163.     FROM in_inventory A, in_inventory_item B
  164.     WHERE A.inventory_id = vReturnNoteId AND
  165.         A.inventory_id = B.inventory_id
  166.     GROUP BY A.tenant_id, A.ou_to_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  167.         B.product_id, B.product_balance_id, A.warehouse_to_id, B.product_status, B.base_uom_id;
  168.  
  169.     /*
  170.      * insert data temporer tt_in_so_balance_item
  171.      */
  172.     INSERT INTO tt_in_so_balance_item
  173.             (session_id, tenant_id, ou_id, doc_type_id,
  174.             doc_no, doc_date, inventory_id, partner_id,
  175.             inventory_item_id, so_id, do_id, do_item_id,
  176.             request_return_sales_id, request_return_sales_item_id,
  177.             qty_return, base_uom_id, remark,
  178.             so_item_id, curr_code, price,
  179.             flg_tax_amount, qty_so, qty_int_so,
  180.             so_uom_id, tax_id, tax_percentage)
  181.     SELECT  pSessionId, A.tenant_id, A.ou_from_id, A.doc_type_id,
  182.             A.doc_no, A.doc_date, A.inventory_id, BX.partner_id,
  183.             B.inventory_item_id, A.ref_id, COALESCE(D.do_id, -99), COALESCE(D.do_item_id, -99),
  184.             B.ref_id, B.ref_item_id,
  185.             SUM(B.qty_realization), B.base_uom_id, A.remark,
  186.             vEmptyId, C.curr_code, C.nett_sell_price,
  187.             C.flg_tax_amount, C.qty_return, C.qty_return,
  188.             C.uom_id, C.tax_id, C.tax_percentage
  189.     FROM in_inventory A
  190.     INNER JOIN in_inventory_item B ON A.inventory_id = B.inventory_id
  191.     INNER JOIN sl_request_return_sales BX ON  B.ref_id = BX.request_return_sales_id AND B.ref_doc_type_id = BX.doc_type_id
  192.     INNER JOIN sl_request_return_sales_item C ON B.ref_item_id = C.request_return_sales_item_id AND BX.request_return_sales_id = C.request_return_sales_id
  193.     LEFT JOIN in_balance_do_item D ON C.ref_id = D.do_item_id
  194.     WHERE A.inventory_id = vReturnNoteId
  195.     GROUP BY A.tenant_id, A.ou_from_id, A.doc_type_id,
  196.             A.doc_no, A.doc_date, A.inventory_id, BX.partner_id,
  197.             B.inventory_item_id, A.ref_id, B.ref_id, B.ref_item_id,
  198.             B.base_uom_id, C.curr_code, C.nett_sell_price, D.do_id, D.do_item_id,
  199.             C.flg_tax_amount, C.qty_return, C.qty_return, C.uom_id, C.tax_id, C.tax_percentage;
  200.            
  201.     /*
  202.      * update qty return di data sl_so_balance_item
  203.      */        
  204.     UPDATE sl_so_balance_item SET qty_return =  sl_so_balance_item.qty_return + ((A.qty_return * A.qty_so) / A.qty_int_so), qty_return_int = sl_so_balance_item.qty_return_int + A.qty_return, update_datetime = vDatetime, update_user_id = vUserId
  205.     FROM tt_in_so_balance_item A
  206.     WHERE A.session_id = pSessionId AND
  207.         sl_so_balance_item.so_item_id = A.so_item_id;
  208.            
  209.     /*
  210.      * buat data sl_log_so_balance_item
  211.      */
  212.     INSERT INTO sl_log_so_balance_item
  213.     (tenant_id, so_id, so_item_id, ref_doc_type_id, ref_id, ref_item_id,
  214.      qty_trx, trx_uom_id, qty_int, base_uom_id, remark,
  215.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  216.     SELECT A.tenant_id, A.so_id, A.so_item_id, A.doc_type_id, A.inventory_id, A.inventory_item_id,
  217.         ((A.qty_return * A.qty_so) / A.qty_int_so ), A.so_uom_id, A.qty_return, A.base_uom_id, A.remark,
  218.         0, vDatetime, vUserId, vDatetime, vUserId
  219.     FROM tt_in_so_balance_item A
  220.     WHERE A.session_id = pSessionId;
  221.          
  222.     /*
  223.      * buat data sl_so_balance_invoice
  224.      */
  225.     INSERT INTO sl_so_balance_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, qty_dlv_so, so_uom_id,
  228.     curr_code, price_so, item_amount, flg_invoice, invoice_id,
  229.     regular_disc_amount, promo_disc_amount, adj_regular_disc_amount, adj_promo_disc_amount,
  230.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  231.     SELECT A.tenant_id, A.ou_id, A.partner_id, A.so_id,
  232.         A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.do_item_id, SUM((A.qty_return * A.qty_so) / A.qty_int_so), A.so_uom_id,
  233.         A.curr_code, f_get_price_before_tax_and_disc(A.price, 0, A.flg_tax_amount, A.tax_percentage, f_get_digit_decimal_doc_curr(vReturnNoteDocTypeId, A.curr_code), vRoundingModeNonTax),
  234.         SUM(f_get_amount_before_tax_and_disc((A.qty_return * A.qty_so * A.price) / A.qty_int_so, 0, A.flg_tax_amount, A.tax_percentage, f_get_digit_decimal_doc_curr(vReturnNoteDocTypeId, A.curr_code), vRoundingModeNonTax)),    
  235.         vFlagInvoice, vEmptyId,
  236.         0, 0, 0, 0,
  237.         0, vDatetime, vUserId, vDatetime, vUserId
  238.     FROM tt_in_so_balance_item A
  239.     INNER JOIN sl_request_return_sales_item B ON B.request_return_sales_item_id = A.request_return_sales_item_id
  240.     WHERE A.session_id = pSessionId
  241.     GROUP BY A.tenant_id, A.ou_id, A.partner_id, A.so_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.do_item_id, A.so_uom_id, A.curr_code, A.price, A.flg_tax_amount, A.tax_percentage;
  242.          
  243.     /*
  244.      * buat data sl_so_balance_invoice_tax
  245.      */
  246.     INSERT INTO sl_so_balance_invoice_tax
  247.     (tenant_id, ou_id, partner_id, so_id,
  248.     ref_doc_type_id, ref_id, ref_item_id, tax_id, flg_amount,
  249.     tax_percentage, curr_code, base_amount, tax_amount, flg_invoice, invoice_id,
  250.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  251.     SELECT A.tenant_id, A.ou_id, A.partner_id, A.so_id,
  252.         A.doc_type_id, A.inventory_id, A.do_item_id, A.tax_id, D.flg_amount,
  253.         A.tax_percentage, A.curr_code,
  254.         SUM(f_get_amount_before_tax_and_disc((A.qty_return * A.qty_so * A.price) / A.qty_int_so, 0, A.flg_tax_amount, A.tax_percentage, f_get_digit_decimal_doc_curr(vReturnNoteDocTypeId, A.curr_code), vRoundingModeNonTax)),
  255.         f_tax_rounding(A.tenant_id, SUM(f_get_amount_before_tax((A.qty_return * A.qty_so * A.price) / A.qty_int_so, A.flg_tax_amount, A.tax_percentage, f_get_digit_decimal_doc_curr(vReturnNoteDocTypeId, A.curr_code), vRoundingModeNonTax)), A.tax_percentage),
  256.         vFlagInvoice, vEmptyId,
  257.         0, vDatetime, vUserId, vDatetime, vUserId
  258.     FROM tt_in_so_balance_item A, m_tax D, sl_request_return_sales_item B
  259.     WHERE A.session_id = pSessionId AND
  260.           A.tax_id = D.tax_id AND
  261.           A.request_return_sales_item_id = B.request_return_sales_item_id
  262.     GROUP BY A.tenant_id, A.ou_id, A.partner_id, A.so_id, A.doc_type_id, A.inventory_id, A.do_item_id, A.tax_id,
  263.         D.flg_amount, A.tax_percentage, A.curr_code;
  264.    
  265.    
  266.     UPDATE in_balance_do_item SET status_item = vStatusFinal
  267.     FROM tt_in_so_balance_item A
  268.     WHERE A.session_id = pSessionId AND
  269.         in_balance_do_item.do_item_id = A.do_item_id AND
  270.         in_balance_do_item.qty_dlv -in_balance_do_item.qty_return <= 0;
  271.  
  272.     UPDATE in_balance_do_item SET status_item = vStatusRelease
  273.     FROM tt_in_so_balance_item A
  274.     WHERE A.session_id = pSessionId AND
  275.         in_balance_do_item.do_item_id = A.do_item_id AND
  276.         in_balance_do_item.qty_dlv -in_balance_do_item.qty_return > 0;
  277.        
  278.     /*
  279.      * @author TKP, 9 Jun 2016
  280.      * Cek jika OU pada warehouse sama dengan OU pada dokumen maka nilai ou_bu_id dan ou_sub_bu_id =-99
  281.      * 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;
  282.      */
  283.     SELECT A.ou_from_id, B.ou_id INTO vOuId, vOuWarehouseId
  284.     FROM in_inventory A
  285.     INNER JOIN m_warehouse_ou B ON A.warehouse_from_id = B.warehouse_id
  286.     WHERE A.inventory_id = vReturnNoteId;
  287.    
  288.     IF (vOuId <> vOuWarehouseId) THEN
  289.         SELECT f_get_ou_bu_structure(vOuWarehouseId) as ou_structure INTO result;
  290.         vOuStructureJournalItem := result.ou_structure;
  291.     ELSE
  292.         vOuStructureJournalItem := ROW(-99, -99, -99);
  293.     END IF;
  294.        
  295.     /*
  296.      * journal return note
  297.      * Debit Inventory = dari nilai COGS
  298.      * Credit HPP
  299.      */
  300.     /*
  301.      * membuat data transaksi jurnal :
  302.      * 1. buat admin
  303.      * 2. buat temlate jurnal
  304.      */    
  305.     PERFORM gl_manage_admin_journal_trx(A.tenant_id, (vOuStructure).ou_bu_id, A.ou_from_id, (vDocJournal).journal_type, (vDocJournal).ledger_code, f_get_year_month_date(A.doc_date), 'MONTHLY', vDatetime, vUserId)
  306.     FROM in_inventory A
  307.     WHERE A.inventory_id = vReturnNoteId;
  308.        
  309.     SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  310.    
  311.     INSERT INTO gl_journal_trx
  312.     (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  313.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,  
  314.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  315.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  316.     SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date,
  317.         (vOuStructure).ou_bu_id, (vOuStructure).ou_branch_id, (vOuStructure).ou_sub_bu_id, A.partner_id, vEmptyId, A.warehouse_from_id, A.ext_doc_no, A.ext_doc_date,
  318.         A.ref_doc_type_id, A.ref_id, A.doc_date, f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), A.remark, vStatusDraft, 'DRAFT',
  319.         0, vDatetime, vUserId, vDatetime, vUserId
  320.     FROM in_inventory A
  321.     WHERE A.inventory_id = vReturnNoteId;
  322.    
  323.     INSERT INTO tt_journal_trx_item
  324.     (session_id, tenant_id, journal_trx_id, line_no,
  325.     ref_doc_type_id, ref_id,
  326.     partner_id, product_id, cashbank_id, ou_rc_id,
  327.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  328.     coa_id, curr_code, qty, uom_id,
  329.     amount, journal_date, type_rate,
  330.     numerator_rate, denominator_rate, journal_desc, remark)
  331.     SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  332.         A.doc_type_id, B.inventory_item_id,
  333.         A.partner_id, B.product_id, vEmptyId, vEmptyId,
  334.         vEmptyId, vSignDebit, vProductCOA, vEmptyId,
  335.         f_get_product_coa_group_product(A.tenant_id, B.product_id), f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), B.qty_realization, B.base_uom_id,
  336.         0 , A.doc_date, vTypeRate,
  337.         1, 1, 'PRODUCT_STOCK', B.remark
  338.     FROM in_inventory A, in_inventory_item B
  339.     WHERE A.inventory_id = vReturnNoteId AND
  340.         A.inventory_id = B.inventory_id;
  341.  
  342.        
  343. /* NK, 1 Feb 2014, journal HPP tidak perlu break down sampai ke product    
  344.     INSERT INTO tt_journal_trx_item
  345.     (session_id, tenant_id, journal_trx_id, line_no,
  346.     ref_doc_type_id, ref_id,
  347.     partner_id, product_id, cashbank_id, ou_rc_id,
  348.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  349.     coa_id, curr_code, qty, uom_id,
  350.     amount, journal_date, type_rate,
  351.     numerator_rate, denominator_rate, journal_desc, remark)
  352.     SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  353.         A.doc_type_id, B.inventory_item_id,
  354.         A.partner_id, B.product_id, vEmptyId, vEmptyId,
  355.         vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  356.         f_get_system_coa_by_group_coa(A.tenant_id, 'HargaPokokPenjualan'), f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), B.qty_realization, B.base_uom_id,
  357.         0 , A.doc_date, vTypeRate,
  358.         1, 1, 'HPP', B.remark
  359.     FROM in_inventory A, in_inventory_item B
  360.     WHERE A.inventory_id = vReturnNoteId AND
  361.         A.inventory_id = B.inventory_id;
  362. */     
  363. /*     
  364.     INSERT INTO tt_journal_trx_item
  365.     (session_id, tenant_id, journal_trx_id, line_no,
  366.     ref_doc_type_id, ref_id, ou_id, sub_ou_id,
  367.     partner_id, product_id, cashbank_id, ou_rc_id,
  368.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  369.     coa_id, curr_code, qty, uom_id,
  370.     amount, journal_date, type_rate,
  371.     numerator_rate, denominator_rate, journal_desc, remark)
  372.     SELECT pSessionId, A.tenant_id, B.journal_trx_id, 1,
  373.         A.doc_type_id, A.inventory_item_id, B.ou_id, B.sub_ou_id,
  374.         vEmptyId, C.product_id, vEmptyId, vEmptyId,
  375.         vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  376.         f_get_system_coa_by_group_coa(A.tenant_id, 'HargaPokokPenjualan'), A.curr_code, A.qty_return, A.base_uom_id,
  377.         f_get_amount_before_tax((A.qty_return * A.qty_so * A.price) / A.qty_int_so, A.flg_tax_amount, A.tax_percentage,0),
  378.         A.doc_date, vTypeRate,
  379.         1, 1, 'HPP', A.remark
  380.     FROM tt_in_so_balance_item A, gl_journal_trx B, in_inventory_item C
  381.     WHERE A.session_id = pSessionId AND
  382.         B.journal_trx_id = vJournalTrxId AND
  383.         A.inventory_item_id = C.inventory_item_id;
  384.  
  385.     INSERT INTO gl_journal_trx_mapping
  386.     (tenant_id, journal_trx_id, line_no,
  387.     ref_doc_type_id, ref_id,
  388.     partner_id, product_id, cashbank_id, ou_rc_id,
  389.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  390.     coa_id, curr_code, qty, uom_id,
  391.     amount, journal_date, type_rate,
  392.     numerator_rate, denominator_rate, journal_desc, remark,
  393.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  394.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  395.         A.ref_doc_type_id, A.ref_id,
  396.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  397.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  398.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  399.         A.amount, A.journal_date, A.type_rate,
  400.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  401.         0, vDatetime, vUserId, vDatetime, vUserId
  402.     FROM tt_journal_trx_item A
  403.     WHERE A.session_id = pSessionId AND
  404.         A.journal_desc = 'HPP';
  405.                
  406. */
  407.     INSERT INTO gl_journal_trx_item
  408.     (tenant_id, journal_trx_id, line_no,
  409.     ref_doc_type_id, ref_id,
  410.     partner_id, product_id, cashbank_id, ou_rc_id,
  411.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  412.     coa_id, curr_code, qty, uom_id,
  413.     amount, journal_date, type_rate,
  414.     numerator_rate, denominator_rate, journal_desc, remark,
  415.     "version", create_datetime, create_user_id, update_datetime, update_user_id,
  416.     ou_branch_id, ou_sub_bu_id)
  417.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  418.         A.ref_doc_type_id, A.ref_id,
  419.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  420.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  421.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  422.         A.amount, A.journal_date, A.type_rate,
  423.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  424.         0, vDatetime, vUserId, vDatetime, vUserId,
  425.         (vOuStructureJournalItem).ou_branch_id, (vOuStructureJournalItem).ou_sub_bu_id
  426.     FROM tt_journal_trx_item A
  427.     WHERE A.session_id = pSessionId AND
  428.         A.journal_desc = 'PRODUCT_STOCK';
  429.        
  430.     INSERT INTO gl_journal_trx_mapping
  431.     (tenant_id, journal_trx_id, line_no,
  432.     ref_doc_type_id, ref_id,
  433.     partner_id, product_id, cashbank_id, ou_rc_id,
  434.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  435.     coa_id, curr_code, qty, uom_id,
  436.     amount, journal_date, type_rate,
  437.     numerator_rate, denominator_rate, journal_desc, remark,
  438.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  439.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  440.         vEmptyId, vEmptyId,
  441.         vEmptyId, vEmptyId, vEmptyId, vEmptyId,
  442.         vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  443.         f_get_system_coa_by_group_coa(A.tenant_id, 'HargaPokokPenjualan'), f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), 0, vEmptyId,
  444.         0, A.journal_date, A.type_rate,
  445.         1, 1, 'COGS', vEmptyValue,
  446.         0, vDatetime, vUserId, vDatetime, vUserId
  447.     FROM tt_journal_trx_item A
  448.     WHERE A.session_id = pSessionId
  449.     GROUP BY A.tenant_id, A.journal_trx_id, A.journal_date, A.type_rate;
  450.  
  451.     DELETE FROM tt_in_product_balance_summary_stock WHERE session_id = pSessionId;
  452.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;     
  453.     DELETE FROM tt_in_so_balance_item WHERE session_id = pSessionId;         
  454. END;
  455. $BODY$
  456.   LANGUAGE plpgsql VOLATILE
  457.   COST 100;
  458.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement