Advertisement
aadddrr

in_submit_return_note_xcom

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