Advertisement
tercnem

i_process_pos_shop

Apr 2nd, 2020
1,567
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION i_process_pos_shop(bigint, character varying, character varying, bigint, bigint, bigint, character varying, bigint)
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE
  5.     pTenantId           ALIAS FOR $1;
  6.     pSessionId          ALIAS FOR $2;
  7.     pProcessNo          ALIAS FOR $3;
  8.     pOutletId           ALIAS FOR $4;
  9.     pOuId               ALIAS FOR $5;
  10.     pWarehouseId        ALIAS FOR $6;
  11.     pDatetime           ALIAS FOR $7;
  12.     pUserId             ALIAS FOR $8;
  13.  
  14.     vFlagNo                 character varying(1);
  15.     vProductStatus          character varying(5);
  16.     vEmptyId                bigint;
  17.     vDocTypeAdjStock        bigint;
  18.     vFlagCash               character varying(1);
  19.     vDebitType              character varying(1);
  20.     vFlagYes                character varying(1);
  21.     vEmptyValue             character varying(1);
  22.     vJournalType            character varying(20);
  23.     vJournalTypeDoPos       character varying(20);
  24.     vJournalTypeAdjStock    character varying(20)
  25.     vSignDebit              character varying(1);
  26.     vSignCredit             character varying(1);
  27.     vTypeRate               character varying(3);
  28.     vProductCOA             character varying(10);
  29.     vSystemCOA              character varying(10);
  30.     vTaxCOA                 character varying(10);
  31.     vCashBankCOA            character varying(10);
  32.     vDocTypeDoPos           bigint;
  33.     vDocTypePos             bigint;
  34.     vDocTypeNempilBarang    bigint;
  35.     vRounding               integer;
  36.     vParentOuId             bigint;
  37.     vActivityCOA            character varying(10);
  38.     vStatusPos              character varying(1);
  39.     vActivityChargesId      bigint;
  40.     vStatusDraft            character varying(1);
  41.    
  42.     vDocJournalDoPos        DOC_JOURNAL%ROWTYPE;
  43.     vDocJournalAdjStock     DOC_JOURNAL%ROWTYPE;   
  44.     vOuStructure            OU_BU_STRUCTURE%ROWTYPE;
  45.     result                  RECORD;
  46.    
  47.     vLedgerCode             character varying(10);
  48.     vRetail                 character varying(10);
  49.     vPosDocTypeId bigint;
  50.     vRoundingModeNonTax     character varying(5);
  51.     vCount                  character varying;
  52.     vFlagRole               character varying(1);
  53.     vDebtNoteARDocScheme    character varying(10);
  54.     vDocTypeDebtNoteAr      bigint;
  55.     vDefaultRoleId          bigint;
  56.     vFlowArDebtNoteId       bigint;
  57.     vStateDraft             character varying(10);
  58.     vFlgPkp                 character varying;
  59.     vTotalTaxItem           integer;
  60.     vTotalTaxItemNempil     integer;
  61.     vTaxNempilBarang        bigint;
  62.     vCountBelumDiBayar      numeric;
  63. BEGIN
  64.    
  65.     vFlgPkp := 'N';
  66.     vStatusPos := 'S';
  67.     vFlagNo := 'N';
  68.     vProductStatus := 'GOOD';
  69.     vEmptyId := -99;
  70.     vDocTypeAdjStock := 413;
  71.     vFlagCash := 'C';
  72.     vDebitType := 'D';
  73.     vFlagYes := 'Y';
  74.     vEmptyValue := ' ';
  75.     vSignDebit := 'D';
  76.     vSignCredit := 'C';
  77.     vTypeRate := 'COM';
  78.     vProductCOA := 'PRODUCT';
  79.     vSystemCOA := 'SYSTEM';
  80.     vTaxCOA := 'TAX';
  81.     vCashBankCOA := 'CASHBANK';
  82.     vParentOuId := pOuId;
  83.     vActivityCOA := 'ACTIVITY'; -- DanieL : tambahan sementara agar tidak error
  84.     --vActivityChargesId := 2;
  85.     vActivityChargesId := f_get_value_system_config_by_param_code(pTenantId, 'CHARGES');
  86.     vStatusDraft := 'D';
  87.     vJournalType := 'SALES.POS';
  88.     vLedgerCode := 'SALES';
  89.     vFlagRole := 'R';
  90.     vDebtNoteARDocScheme := 'DF01';
  91.     vDocTypeDebtNoteAr := 241;
  92.     vStateDraft := 'DRAFT';
  93.     vCountBelumDiBayar := 0;
  94.     vTotalTaxItem := 0;
  95.     vTotalTaxItemNempil := 0;
  96.    
  97.     vRetail := 'RETAIL';
  98.     vTaxNempilBarang := 0;
  99.    
  100.     vPosDocTypeId := 401;
  101.     SELECT f_get_value_system_config_by_param_code(pTenantId, 'rounding.mode.non.tax') INTO vRoundingModeNonTax;
  102.    
  103.    
  104.     SELECT f_get_value_system_config_by_param_code(pTenantId, 'taxNempilBarang') INTO vTaxNempilBarang;
  105.    
  106.    
  107.     /* Nempil Barang, void pos , dan POS Shop */
  108.     vDocTypeNempilBarang :=432;
  109.     vDocTypePos          :=401;
  110.    
  111.     /*
  112.      * jenis transaksi bayangan untuk Delivery Order POS untuk kepentingan jurnal inventory POS
  113.      */
  114.     vDocTypeDoPos := 431;
  115. /*  NK, 22 Jan 2014
  116.     SELECT f_get_parent_ou_bu(pTenantId, pOuId) INTO vParentOuId;
  117.     SELECT f_get_journal_type(vDocTypeDoPos) INTO vJournalTypeDoPos;
  118.     SELECT f_get_journal_type(vDocTypeAdjStock) INTO vJournalTypeAdjStock;
  119.     */
  120.     SELECT f_get_ou_bu_structure(pOuId) AS ou, f_get_document_journal(vDocTypeDoPos) as doc_do_pos, f_get_document_journal(vDocTypeAdjStock) as doc_adj_stock
  121.         INTO result;
  122.  
  123.     vOuStructure := result.ou;
  124.     vDocJournalDoPos := result.doc_do_pos;
  125.     vDocJournalAdjStock := result.doc_adj_stock;   
  126.            
  127.     /*
  128.      * rounding nilai tax
  129.      */
  130.     vRounding := 0;
  131.    
  132.     -- Add by: Ping An 27Nov2015
  133.     -- get flag_pkp
  134.     SELECT C.flg_pkp INTO vFlgPkp
  135.     FROM m_ou_structure A
  136.     INNER JOIN t_ou B ON A.ou_bu_id = B.ou_id
  137.     INNER JOIN t_ou_legal C ON B.ou_id = C.ou_id AND B.tenant_id = C.tenant_id
  138.     WHERE A.ou_id = pOuId AND B.tenant_id = pTenantId;
  139.    
  140.    
  141.     -- add by: Ping An , 26 Nov 2015 cek LUNAS , jika count = 0 berarti LUNAS
  142.     -- lUNAS = guest atau corporate bayar lunas    
  143.     -- get Lunas
  144.     SELECT count(B.under_payment_amount) INTO vCountBelumDiBayar
  145.     FROM
  146.     i_trx_pos A
  147.     INNER JOIN i_trx_pos_ext E ON A.tenant_id = E.tenant_id AND A.process_no = E.process_no AND A.trx_pos_id = E.trx_pos_id
  148.     INNER JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  149.     INNER JOIN t_ou C ON A.ou_id = C.ou_id AND A.tenant_id = C.tenant_id
  150.     WHERE A.tenant_id = pTenantId
  151.         AND A.process_no = pProcessNo
  152.         AND A.ou_id = pOuId
  153.         AND B.under_payment_amount > 0;
  154.        
  155.    
  156.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  157.        
  158.     DELETE FROM i_tt_pos_cash_balance WHERE session_id = pSessionId;
  159.    
  160.     DELETE FROM i_tt_pos_product_balance_stock WHERE session_id = pSessionId;
  161.        
  162.     DELETE FROM i_tt_nempil_barang_balance_stock WHERE session_id = pSessionId;
  163.    
  164.     DELETE FROM i_tt_nempil_barang_product WHERE session_id = pSessionId;
  165.    
  166.     /* UPDATE Saldo Nempil - Add by Ping An */     
  167.     /* Persiapan insert ke temp semua produk nempil dari transaksi nempil */
  168.     INSERT INTO i_tt_nempil_barang_product
  169.     (session_id, tenant_id, ou_id, product_code, product_name, qty)
  170.     -- rev by:ping An 25nov2015, karena di trx nempil boleh punya item productcode yg sama di linenumber berbeda
  171.     -- SELECT pSessionId, A.tenant_id, A.ou_id, B.product_code, B.product_name, SUM(B.qty)
  172.     SELECT pSessionId, A.tenant_id, A.ou_id, B.product_code, vEmptyValue, SUM(B.qty)
  173.     FROM i_trx_nempil_barang A, i_trx_nempil_barang_item B
  174.     WHERE A.tenant_id = pTenantId AND
  175.         A.ou_id = pOuId AND
  176.         A.process_no = pProcessNo AND
  177.         A.process_no = B.process_no AND
  178.         A.trx_nempil_barang_id = B.trx_nempil_barang_id AND
  179.         A.tenant_id = B.tenant_id      
  180.     GROUP BY A.tenant_id, A.ou_id, B.product_code; --, B.product_name;
  181.    
  182.     -- update product name dengan productname yang max
  183.     UPDATE i_tt_nempil_barang_product F SET product_name =
  184.     (SELECT MAX(B.product_name)
  185.         FROM i_trx_nempil_barang A, i_trx_nempil_barang_item B
  186.         WHERE   A.tenant_id = pTenantId AND
  187.                 A.ou_id = pOuId AND
  188.                 A.process_no = pProcessNo AND
  189.                 A.process_no = B.process_no AND
  190.                 A.trx_nempil_barang_id = B.trx_nempil_barang_id AND
  191.                 A.tenant_id = B.tenant_id AND
  192.                 F.session_id = pSessionId AND
  193.                 F.tenant_id = B.tenant_id AND
  194.                 F.ou_id =A.ou_id AND
  195.                 F.product_code =B.product_code
  196.                 )
  197.     WHERE
  198.         F.product_name = vEmptyValue AND
  199.         F.session_id = pSessionId;     
  200.  
  201.     /* Persiapan insert ke temp semua produk nempil dari saldo nempil diERP */
  202.     INSERT INTO i_tt_nempil_barang_product
  203.     (session_id, tenant_id, ou_id, product_code, product_name, qty)
  204.     SELECT pSessionId, A.tenant_id, A.ou_id, A.product_code, A.product_name, SUM(A.qty)
  205.     FROM in_nempil_barang_balance_stock A
  206.     WHERE A.tenant_id = pTenantId AND
  207.           A.ou_id = pOuId AND
  208.           NOT EXISTS (SELECT 1 FROM i_tt_nempil_barang_product B
  209.                          WHERE B.session_id = pSessionId AND
  210.                                B.tenant_id = A.tenant_id AND
  211.                                B.ou_id = A.ou_id AND
  212.                                B.product_code = A.product_code )
  213.                            
  214.     GROUP BY A.tenant_id, A.ou_id, A.product_code, A.product_name;
  215.    
  216.     /* 1.Tulis ke temp saldo nempil dari TRANSAKSI NEMPIL, bisa menambah atau megurangi saldo nempil
  217.      */
  218.     INSERT INTO i_tt_nempil_barang_balance_stock
  219.     (session_id, tenant_id, ou_id, doc_type_id,
  220.     doc_no, doc_date, partner_name, product_code, product_name, qty)
  221.     SELECT pSessionId, A.tenant_id, A.ou_id, A.doc_type_id,
  222.         A.doc_no, A.doc_date, A.partner_name, B.product_code, D.product_name, SUM(B.qty)
  223.     -- rev by: ping An, 26Nov 2015, karena productCodenya boleh sama di linenumber berbeda perlu join ke i_tt_nempil_barang_product
  224.     -- FROM i_trx_nempil_barang A, i_trx_nempil_barang_item B,
  225.     FROM i_trx_nempil_barang A, i_trx_nempil_barang_item B, i_tt_nempil_barang_product D
  226.     WHERE A.tenant_id = pTenantId AND
  227.         A.ou_id = pOuId AND
  228.         A.process_no = pProcessNo AND
  229.         A.process_no = B.process_no AND
  230.         A.trx_nempil_barang_id = B.trx_nempil_barang_id AND
  231.         A.tenant_id = B.tenant_id AND
  232.         A.tenant_id = D.tenant_id AND
  233.         A.ou_id = D.ou_id  AND
  234.         B.product_code = D.product_code AND
  235.         D.session_id = pSessionId      
  236.        
  237.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id,
  238.         A.doc_no, A.doc_date, A.partner_name, B.product_code, D.product_name;
  239.    
  240.     /* 2.Tulis ke temp saldo nempil dari TRANSAKSI POS, mengurangi saldo nempil
  241.      */
  242.     INSERT INTO i_tt_nempil_barang_balance_stock
  243.     (session_id, tenant_id, ou_id, doc_type_id,
  244.     doc_no, doc_date, partner_name, product_code, product_name, qty)
  245.     SELECT pSessionId, A.tenant_id, A.ou_id, A.doc_type_id,
  246.         A.doc_no, A.doc_date, C.partner_name, B.product_code, D.product_name, SUM(B.qty) * -1
  247.     FROM i_trx_pos A, i_trx_pos_ext C, i_trx_pos_item_nempil_barang B, i_tt_nempil_barang_product D
  248.     WHERE  A.tenant_id = pTenantId AND
  249.            A.ou_id = pOuId AND
  250.            A.process_no = pProcessNo AND
  251.            A.status = vStatusPos AND                   
  252.            A.process_no = B.process_no AND
  253.            A.trx_pos_id = B.trx_pos_id AND
  254.            A.tenant_id = B.tenant_id AND
  255.            A.process_no = C.process_no AND
  256.            A.trx_pos_id = C.trx_pos_id AND
  257.            A.tenant_id = C.tenant_id AND
  258.            A.tenant_id = D.tenant_id AND
  259.            A.ou_id = D.ou_id  AND
  260.            B.product_code = D.product_code AND
  261.            D.session_id = pSessionId           
  262.            
  263.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id,
  264.         A.doc_no, A.doc_date, C.partner_name, B.product_code, D.product_name;      
  265.                
  266.    
  267.     /*
  268.      * update nempil barang balance stock  yang sudah ada
  269.      */    
  270.     UPDATE in_nempil_barang_balance_stock SET qty = in_nempil_barang_balance_stock.qty + B.qty
  271.     FROM (SELECT A.tenant_id, A.ou_id, A.product_code,
  272.                 SUM(A.qty) AS qty
  273.         FROM i_tt_nempil_barang_balance_stock A
  274.         WHERE A.session_id = pSessionId AND        
  275.               A.doc_type_id IN(vDocTypeNempilBarang, vDocTypePos)
  276.         GROUP BY A.tenant_id, A.ou_id, A.product_code) B
  277.     WHERE B.tenant_id = in_nempil_barang_balance_stock.tenant_id AND
  278.         B.ou_id = in_nempil_barang_balance_stock.ou_id AND
  279.         B.product_code = in_nempil_barang_balance_stock.product_code;
  280.    
  281.        
  282.     /*
  283.      * insert nempil barang balance stock yang data belum ada
  284.      */    
  285.     INSERT INTO in_nempil_barang_balance_stock
  286.     (tenant_id, ou_id, product_code, product_name,
  287.     qty,
  288.     version, create_datetime, create_user_id, update_datetime, update_user_id)
  289.     SELECT A.tenant_id, A.ou_id, A.product_code, A.product_name,
  290.         sum(qty),
  291.         0, pDatetime, pUserId, pDatetime, pUserId
  292.     FROM i_tt_nempil_barang_balance_stock A
  293.     WHERE A.session_id = pSessionId AND
  294.           A.doc_type_id IN(vDocTypeNempilBarang, vDocTypePos) AND
  295.         NOT EXISTS (SELECT 1 FROM in_nempil_barang_balance_stock B
  296.                     WHERE A.tenant_id = B.tenant_id AND
  297.                         A.ou_id = B.ou_id AND
  298.                         A.product_code = B.product_code)
  299.     GROUP BY A.tenant_id, A.ou_id, A.product_code, A.product_name;
  300.  
  301.    
  302.     /* insert log nempil barang balance stock berdasarkan data tampung di i_tt_nempil_barang_balance_stock
  303.      */    
  304.     INSERT INTO in_log_nempil_barang_balance_stock
  305.     (tenant_id, ou_id, doc_type_id, doc_no, doc_date,
  306.      partner_name, product_code, product_name, qty, version, create_datetime, create_user_id, update_datetime, update_user_id)
  307.     SELECT A.tenant_id, A.ou_id, A.doc_type_id, A.doc_no, A.doc_date,
  308.         A.partner_name, A.product_code, A.product_name, SUM(A.qty), 0, pDatetime, pUserId, pDatetime, pUserId
  309.     FROM i_tt_nempil_barang_balance_stock A
  310.     WHERE A.session_id = pSessionId AND
  311.           A.doc_type_id IN(vDocTypeNempilBarang, vDocTypePos)
  312.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.doc_no, A.doc_date,
  313.         A.partner_name, A.product_code, A.product_name;
  314.        
  315.     /* end add nempil barang by:Ping An */
  316.  
  317.                    
  318.        
  319.     /*
  320.      * mengolah data pos untuk :
  321.      * 1.update in_product_balance_stock
  322.      * 2.insert in_log_product_balance_stock
  323.      * 3.update/insert cb_cashbank_balance
  324.      * 4.insert cb_trx_cashbank_balance
  325.      * 5.insert cb_balance_settlement
  326.      *
  327.      * mengolah data inventory adjusment stok untuk :
  328.      * 1.update in_product_balance_stock
  329.      * 2.insert in_log_product_balance_stock
  330.      *
  331.      * journal :
  332.      * 1.journal DO POS Shop
  333.      * 2.journal POS Shop
  334.      */
  335.    
  336.     /*
  337.      * buat data product pos yang akan digunakan untuk buat log product balance stock dan
  338.      * update product balance stock
  339.      * 1.product yang bukan product assembly ( product balance id <> -99 ) -- Didit : bukan service (product balance id <> -99)  
  340.      * 2.product assembly ( dari i_trx_pos_assembly_product )
  341.      */
  342.     INSERT INTO i_tt_pos_product_balance_stock
  343.     (session_id, tenant_id, ou_id, doc_type_id, ref_id, partner_id,
  344.     doc_no, doc_date, product_id, warehouse_id,
  345.     product_balance_id, product_status, base_uom_id, qty)
  346.     SELECT pSessionId, A.tenant_id, A.ou_id, A.doc_type_id, A.trx_pos_id, vEmptyId,
  347.         A.doc_no, A.doc_date, B.product_id, pWarehouseId,
  348.         B.product_balance_id, vProductStatus, B.base_uom_id, SUM(B.qty)
  349.     FROM i_trx_pos A, i_trx_pos_item B
  350.     WHERE A.tenant_id = pTenantId AND
  351.         A.ou_id = pOuId AND
  352.         A.process_no = pProcessNo AND
  353.         A.status = vStatusPos AND
  354.         A.process_no = B.process_no AND
  355.         A.trx_pos_id = B.trx_pos_id AND
  356.         A.tenant_id = B.tenant_id AND
  357.         B.product_balance_id <> vEmptyId
  358.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.trx_pos_id,
  359.         A.doc_no, A.doc_date, B.product_id, B.product_balance_id, B.base_uom_id;
  360.    
  361.     INSERT INTO i_tt_pos_product_balance_stock
  362.     (session_id, tenant_id, ou_id, doc_type_id, ref_id, partner_id,
  363.     doc_no, doc_date, product_id, warehouse_id,
  364.     product_balance_id, product_status, base_uom_id, qty)
  365.     SELECT pSessionId, A.tenant_id, A.ou_id, A.doc_type_id, A.trx_pos_id, vEmptyId,
  366.         A.doc_no, A.doc_date, C.product_id, pWarehouseId,
  367.         C.product_balance_id, C.product_status, C.base_uom_id, SUM(C.qty)
  368.     FROM i_trx_pos A, i_trx_pos_item B, i_trx_pos_assembly_product C
  369.     WHERE A.tenant_id = pTenantId AND
  370.         A.ou_id = pOuId AND
  371.         A.process_no = pProcessNo AND
  372.         A.status = vStatusPos AND
  373.         A.process_no = B.process_no AND
  374.         A.trx_pos_id = B.trx_pos_id AND
  375.         A.tenant_id = B.tenant_id AND
  376.         B.product_balance_id = vEmptyId AND    
  377.         B.trx_pos_id = C.trx_pos_id AND
  378.         B.process_no = C.process_no AND
  379.         B.tenant_id = C.tenant_id AND
  380.         B.line_no = C.ref_line_no
  381.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.trx_pos_id,
  382.         A.doc_no, A.doc_date, C.product_id, C.product_balance_id, C.product_status, C.base_uom_id;
  383.  
  384.     /*
  385.      * insert log product balance stock berdasarkan data tampung di i_tt_pos_product_balance_stock
  386.      */    
  387.     INSERT INTO in_log_product_balance_stock
  388.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date,
  389.      partner_id, product_id, warehouse_id, product_balance_id, product_status,
  390.      base_uom_id, qty, version, create_datetime, create_user_id, update_datetime, update_user_id)
  391.     SELECT A.tenant_id, A.ou_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date,
  392.         A.partner_id, A.product_id, A.warehouse_id, A.product_balance_id, A.product_status,
  393.         A.base_uom_id, SUM(A.qty) * -1, 0, pDatetime, pUserId, pDatetime, pUserId
  394.     FROM i_tt_pos_product_balance_stock A
  395.     WHERE A.session_id = pSessionId
  396.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date,
  397.         A.partner_id, A.product_id, A.warehouse_id, A.product_balance_id, A.product_status, A.base_uom_id ;
  398.    
  399.     /*
  400.      * update product balance stock berdasarkan data tampung di i_tt_pos_product_balance_stock
  401.      */
  402.     WITH i_tt_pos_product_balance_stock_for_update_current AS (
  403.         SELECT pSessionId AS session_id, A.tenant_id, A.warehouse_id, A.product_id, A.product_balance_id, A.product_status, SUM(A.qty) AS qty
  404.         FROM i_tt_pos_product_balance_stock A
  405.         WHERE A.tenant_id = pTenantId
  406.         AND A.session_id = pSessionId
  407.         GROUP BY A.tenant_id, A.warehouse_id, A.product_id, A.product_balance_id, A.product_status
  408.     )      
  409.     UPDATE in_product_balance_stock SET qty = in_product_balance_stock.qty - A.qty, update_datetime = pDatetime , update_user_id = pUserId,
  410.         version = in_product_balance_stock.version + 1
  411.     FROM i_tt_pos_product_balance_stock_for_update_current A
  412.     WHERE A.session_id = pSessionId AND
  413.         A.tenant_id = in_product_balance_stock.tenant_id AND
  414.         A.warehouse_id = in_product_balance_stock.warehouse_id AND
  415.         A.product_id = in_product_balance_stock.product_id AND
  416.         A.product_balance_id = in_product_balance_stock.product_balance_id AND
  417.         A.product_status = in_product_balance_stock.product_status;
  418.    
  419.     /*
  420.      * tampung data pos cash payment untuk update ke data cb_cashbank_balance
  421.      * dan cb_trx_cashbank_balance
  422.      */
  423.     INSERT INTO i_tt_pos_cash_balance
  424.     (session_id, tenant_id, ou_id, doc_type_id, doc_no, payment_id,
  425.     partner_id, curr_code, amount,
  426.     cashbank_id, cash_bank_date, ref_doc_type_id, ref_id)
  427.     SELECT pSessionId, A.tenant_id, A.ou_id, A.doc_type_id, A.doc_no, A.trx_pos_id,
  428.         A.partner_id, B.curr_payment_code, SUM(B.payment_amount),
  429.         C.cashbank_id, A.doc_date, A.doc_type_id, A.trx_pos_id
  430.     FROM i_trx_pos A, i_trx_pos_cash_payment B, i_cash_bank_data_outlet C, m_cashbank D
  431.     WHERE A.tenant_id = pTenantId AND
  432.         A.ou_id = pOuId AND
  433.         A.process_no = pProcessNo AND
  434.         A.status = vStatusPos AND      
  435.         A.process_no = B.process_no AND
  436.         A.trx_pos_id = B.trx_pos_id AND
  437.         A.tenant_id = B.tenant_id AND
  438.         C.outlet_id = pOutletId AND
  439.         C.cashbank_id = D.cashbank_id AND
  440.         B.curr_payment_code = D.curr_code AND
  441.         D.flg_cash_bank = vFlagCash
  442.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.doc_no, A.trx_pos_id,
  443.         A.partner_id, B.curr_payment_code, C.cashbank_id, A.doc_date;
  444.  
  445.     /*
  446.      * tampung data pos total refund untuk update ke data cb_cashbank_balance
  447.      * dan cb_trx_cashbank_balance
  448.      */
  449.     INSERT INTO i_tt_pos_cash_balance
  450.     (session_id, tenant_id, ou_id, doc_type_id, doc_no, payment_id,
  451.     partner_id, curr_code, amount,
  452.     cashbank_id, cash_bank_date, ref_doc_type_id, ref_id)
  453.     SELECT pSessionId, A.tenant_id, A.ou_id, A.doc_type_id, A.doc_no, A.trx_pos_id,
  454.         A.partner_id, A.curr_code, SUM(A.total_refund) * -1,
  455.         B.cashbank_id, A.doc_date, A.doc_type_id, A.trx_pos_id
  456.     FROM i_trx_pos A, i_cash_bank_data_outlet B, m_cashbank C
  457.     WHERE A.tenant_id = pTenantId AND
  458.         A.ou_id = pOuId AND
  459.         A.process_no = pProcessNo AND
  460.         A.status = vStatusPos AND
  461.         A.total_refund >= 0 AND -- Didit : penanda untuk corporate yg tidak hutang
  462.         B.outlet_id = pOutletId AND
  463.         B.cashbank_id = C.cashbank_id AND
  464.         A.curr_code = C.curr_code AND
  465.         C.flg_cash_bank = vFlagCash
  466.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.doc_no, A.trx_pos_id,
  467.         A.partner_id, A.curr_code, B.cashbank_id, A.doc_date;
  468.        
  469.     /*
  470.      * insert ke data cb_trx_cashbank_balance
  471.      */
  472.     INSERT INTO cb_trx_cashbank_balance
  473.     (tenant_id, ou_id, doc_type_id, payment_id,
  474.     payment_doc_no, payment_doc_date, payment_remark,
  475.     partner_id, partner_bank_id, curr_code, amount,
  476.     due_date, flg_payment, ref_doc_type_id, ref_id,
  477.     version, create_datetime, create_user_id, update_datetime, update_user_id)
  478.     SELECT A.tenant_id, A.ou_id, A.doc_type_id, A.payment_id,
  479.         A.doc_no, A.cash_bank_date, vEmptyValue,
  480.         A.partner_id, vEmptyId, A.curr_code, SUM(A.amount),
  481.         A.cash_bank_date, vFlagYes, A.ref_doc_type_id, A.ref_id,
  482.         0, pDatetime, pUserId, pDatetime, pUserId
  483.     FROM i_tt_pos_cash_balance A
  484.     WHERE A.session_id = pSessionId
  485.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.payment_id, A.doc_no, A.partner_id, A.curr_code,
  486.         A.cashbank_id, A.cash_bank_date, A.ref_doc_type_id, A.ref_id;
  487.    
  488.     /*
  489.      * insert cb_cashbank_balance yang data belum ada
  490.      */    
  491.     INSERT INTO cb_cashbank_balance
  492.     (tenant_id, ou_id, cashbank_id, cash_bank_date,
  493.     rec_type, curr_code, amount,
  494.     version, create_datetime, create_user_id, update_datetime, update_user_id)
  495.     SELECT A.tenant_id, D.ou_id, A.cashbank_id, A.cash_bank_date,
  496.         vDebitType, A.curr_code, 0,
  497.         0, pDatetime, pUserId, pDatetime, pUserId
  498.     FROM i_tt_pos_cash_balance A, m_cashbank_ou D
  499.     WHERE A.session_id = pSessionId AND
  500.         D.cashbank_id = A.cashbank_id AND
  501.         NOT EXISTS (SELECT 1 FROM cb_cashbank_balance B
  502.                     WHERE A.tenant_id = B.tenant_id AND
  503.                         D.ou_id = B.ou_id AND
  504.                         A.cashbank_id = B.cashbank_id AND
  505.                         A.cash_bank_date = B.cash_bank_date AND
  506.                         B.rec_type = vDebitType)
  507.     GROUP BY A.tenant_id, A.cashbank_id, A.cash_bank_date, A.curr_code, D.ou_id;
  508.  
  509.     /*
  510.      * update cb_cashbank_balance yang sudah ada
  511.      */    
  512.     UPDATE cb_cashbank_balance SET amount = cb_cashbank_balance.amount + B.amount
  513.     FROM (SELECT A.tenant_id, D.ou_id, A.cashbank_id, A.cash_bank_date, A.curr_code,
  514.                 SUM(A.amount) AS amount
  515.         FROM i_tt_pos_cash_balance A, m_cashbank_ou D
  516.         WHERE A.session_id = pSessionId AND
  517.             D.cashbank_id = A.cashbank_id
  518.         GROUP BY A.tenant_id, A.cashbank_id, A.cash_bank_date, A.curr_code, D.ou_id) B
  519.     WHERE B.tenant_id = cb_cashbank_balance.tenant_id AND
  520.         B.ou_id = cb_cashbank_balance.ou_id AND
  521.         B.cashbank_id = cb_cashbank_balance.cashbank_id AND
  522.         B.cash_bank_date = cb_cashbank_balance.cash_bank_date AND
  523.         B.curr_code = cb_cashbank_balance.curr_code AND
  524.         cb_cashbank_balance.rec_type = vDebitType;
  525.    
  526.     /*
  527.      * buat saldo payment non cash, menggunakan EDC
  528.      */    
  529.     INSERT INTO cb_balance_settlement
  530.     (tenant_id, ou_id, doc_type_id, doc_no, doc_date,
  531.     device_merchant_id, card_type, bank_card_code, card_no,
  532.     curr_payment_code, amount_payment, flg_settle, cashbank_id, cash_bank_date,
  533.     ref_doc_type_id, ref_id,
  534.     version, create_datetime, create_user_id, update_datetime, update_user_id)
  535.     SELECT A.tenant_id, A.ou_id, A.doc_type_id, A.doc_no, A.doc_date,
  536.         B.device_merchant_id, B.card_type, B.bank_card_code, B.card_no,
  537.         B.curr_payment_code, SUM(B.payment_amount), vFlagNo, vEmptyId, vEmptyValue,
  538.         vEmptyId, vEmptyId,
  539.         0, pDatetime, pUserId, pDatetime, pUserId
  540.     FROM i_trx_pos A, i_trx_pos_non_cash_payment B
  541.     WHERE A.tenant_id = pTenantId AND
  542.         A.ou_id = pOuId AND
  543.         A.process_no = pProcessNo AND
  544.         A.status = vStatusPos AND
  545.         A.trx_pos_id = B.trx_pos_id AND
  546.         A.process_no = B.process_no AND
  547.         A.tenant_id = B.tenant_id
  548.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.doc_no, A.doc_date,
  549.         B.device_merchant_id, B.card_type, B.bank_card_code, B.card_no,
  550.         B.curr_payment_code;
  551.    
  552.     /*
  553.      * buat data product adjusment stock yang akan digunakan untuk buat log product balance stock dan
  554.      * update product balance stock
  555.      */
  556.     INSERT INTO i_tt_pos_product_balance_stock
  557.     (session_id, tenant_id, ou_id, doc_type_id, ref_id, partner_id,
  558.     doc_no, doc_date, product_id, warehouse_id,
  559.     product_balance_id, product_status, base_uom_id, qty)
  560.     SELECT pSessionId, A.tenant_id, A.ou_id, B.doc_type_id, B.trx_inventory_id, vEmptyId,
  561.         B.doc_no, B.doc_date, C.product_id, B.warehouse_from_id,
  562.         C.product_balance_id, C.product_status, C.base_uom_id, SUM(C.qty_realization) -- DanieL : perubahan qty menjadi qty_realization
  563.     FROM i_outlet A, i_trx_inventory B, i_trx_inventory_item C
  564.     WHERE A.tenant_id = pTenantId AND
  565.         A.tenant_id = B.tenant_id AND
  566.         A.ou_id = B.ou_id AND
  567.         B.process_no = pProcessNo AND
  568.         B.process_no = C.process_no AND
  569.         B.trx_inventory_id = C.trx_inventory_id AND
  570.         B.tenant_id = C.tenant_id AND
  571.         B.doc_type_id = vDocTypeAdjStock AND
  572.         C.product_balance_id <> vEmptyId
  573.     GROUP BY A.tenant_id, A.ou_id, B.doc_type_id, B.trx_inventory_id, B.warehouse_from_id,
  574.         B.doc_no, B.doc_date, C.product_id, C.product_balance_id, C.product_status, C.base_uom_id;
  575.        
  576.     /*
  577.      * insert log product balance stock berdasarkan data tampung di i_tt_pos_product_balance_stock
  578.      */    
  579.     INSERT INTO in_log_product_balance_stock
  580.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date,
  581.      partner_id, product_id, warehouse_id, product_balance_id, product_status,
  582.      base_uom_id, qty, version, create_datetime, create_user_id, update_datetime, update_user_id)
  583.     SELECT A.tenant_id, A.ou_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date,
  584.         A.partner_id, A.product_id, A.warehouse_id, A.product_balance_id, A.product_status,
  585.         A.base_uom_id, SUM(A.qty), 0, pDatetime, pUserId, pDatetime, pUserId
  586.     FROM i_tt_pos_product_balance_stock A
  587.     WHERE A.session_id = pSessionId AND
  588.         A.doc_type_id = vDocTypeAdjStock AND
  589.         A.product_balance_id <> vEmptyId
  590.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date,
  591.         A.partner_id, A.product_id, A.warehouse_id, A.product_balance_id, A.product_status, A.base_uom_id;
  592.  
  593.     /*
  594.      * update product balance stock berdasarkan data tampung di i_tt_pos_product_balance_stock
  595.      */
  596.     WITH i_tt_pos_product_balance_stock_for_update_current_adj_stock AS (
  597.         SELECT pSessionId AS session_id, A.doc_type_id, A.tenant_id, A.warehouse_id, A.product_id, A.product_balance_id, A.product_status, SUM(A.qty) AS qty
  598.         FROM i_tt_pos_product_balance_stock A
  599.         WHERE A.tenant_id = pTenantId
  600.         AND A.session_id = pSessionId
  601.         AND A.doc_type_id = vDocTypeAdjStock
  602.         AND A.product_balance_id <> vEmptyId
  603.         GROUP BY A.doc_type_id, A.tenant_id, A.warehouse_id, A.product_id, A.product_balance_id, A.product_status
  604.     )      
  605.     UPDATE in_product_balance_stock SET qty = in_product_balance_stock.qty - A.qty, update_datetime = pDatetime , update_user_id = pUserId,
  606.         version = in_product_balance_stock.version + 1
  607.     FROM i_tt_pos_product_balance_stock_for_update_current_adj_stock A
  608.     WHERE A.session_id = pSessionId AND
  609.         A.doc_type_id = vDocTypeAdjStock AND
  610.         A.product_balance_id <> vEmptyId AND
  611.         A.tenant_id = in_product_balance_stock.tenant_id AND
  612.         A.warehouse_id = in_product_balance_stock.warehouse_id AND
  613.         A.product_id = in_product_balance_stock.product_id AND
  614.         A.product_balance_id = in_product_balance_stock.product_balance_id AND
  615.         A.product_status = in_product_balance_stock.product_status;
  616.  
  617.     /*
  618.      * journal DO POS di group by product
  619.      * Credit Inventory
  620.      * Debit COGS
  621.      */
  622.        
  623.     PERFORM gl_manage_admin_journal_trx(A.tenant_id, (vOuStructure).ou_bu_id, A.ou_id, (vDocJournalDoPos).journal_type, (vDocJournalDoPos).ledger_code, f_get_year_month_date(A.doc_date), 'MONTHLY', pDatetime, pUserId)
  624.     FROM i_trx_pos A
  625.     WHERE A.tenant_id = pTenantId AND
  626.         A.ou_id = pOuId AND
  627.         A.process_no = pProcessNo AND
  628.         A.status = vStatusPos;
  629.            
  630.     INSERT INTO gl_journal_trx
  631.     (tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  632.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,  
  633.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  634.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  635.     SELECT A.tenant_id, (vDocJournalDoPos).journal_type, vDocTypeDoPos, A.trx_pos_id, A.doc_no, A.doc_date,
  636.         (vOuStructure).ou_bu_id, (vOuStructure).ou_branch_id, (vOuStructure).ou_sub_bu_id, A.partner_id, vEmptyId, pWarehouseId, A.ext_doc_no, A.ext_doc_date,
  637.         A.ref_doc_type_id, A.ref_id, A.doc_date, f_get_value_system_config_by_param_code(A.tenant_id, 'ValutaBuku'), A.remark, vStatusDraft, 'DRAFT',
  638.         0, pDatetime, pUserId, pDatetime, pUserId
  639.     FROM i_trx_pos A
  640.     WHERE A.tenant_id = pTenantId AND
  641.         A.ou_id = pOuId AND
  642.         A.process_no = pProcessNo AND
  643.         A.status = vStatusPos AND
  644.         EXISTS( -- added by Didit, 25 Juni 2018. Transaksi POS yang hanya produk nempil saja / service saja tidak perlu dibuatkan jurnal stock
  645.             SELECT 1 FROM i_trx_pos_item B
  646.             WHERE A.trx_pos_id = B.trx_pos_id AND
  647.                 A.process_no = B.process_no AND
  648.                 A.tenant_id = B.tenant_id
  649.         );
  650.    
  651.     INSERT INTO tt_journal_trx_item
  652.     (session_id, tenant_id, journal_trx_id, line_no,
  653.     ref_doc_type_id, ref_id,
  654.     partner_id, product_id, cashbank_id, ou_rc_id,
  655.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  656.     coa_id, curr_code, qty, uom_id,
  657.     amount, journal_date, type_rate,
  658.     numerator_rate, denominator_rate, journal_desc, remark)
  659.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  660.         A.doc_type_id, vEmptyId,
  661.         A.partner_id, B.product_id, vEmptyId, vEmptyId,
  662.         vEmptyId, vSignCredit, vProductCOA, vEmptyId,
  663.         f_get_product_coa_group_product(A.tenant_id, B.product_id), f_get_value_system_config_by_param_code(A.tenant_id, 'ValutaBuku'), SUM(B.qty), B.base_uom_id,
  664.         0 , A.doc_date, vTypeRate,
  665.         1, 1, 'PRODUCT_STOCK', vEmptyValue
  666.     FROM i_trx_pos A, i_trx_pos_item B, gl_journal_trx C
  667.     WHERE A.tenant_id = pTenantId AND
  668.         A.ou_id = pOuId AND
  669.         A.process_no = pProcessNo AND
  670.         A.status = vStatusPos AND
  671.         A.trx_pos_id = B.trx_pos_id AND
  672.         A.process_no = B.process_no AND
  673.         A.tenant_id = B.tenant_id AND
  674.         A.trx_pos_id = C.doc_id AND
  675.         A.tenant_id = C.tenant_id AND
  676.         C.doc_type_id = vDocTypeDoPos AND
  677.         C.journal_type = (vDocJournalDoPos).journal_type AND
  678.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  679.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  680.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  681. --      A.ou_id = C.sub_ou_id AND
  682.         A.doc_no = C.doc_no
  683.     GROUP BY A.tenant_id, C.journal_trx_id, A.doc_type_id,
  684.         A.partner_id, B.product_id, B.base_uom_id, A.doc_date;
  685.        
  686.     INSERT INTO gl_journal_trx_item
  687.     (tenant_id, journal_trx_id, line_no,
  688.     ref_doc_type_id, ref_id,
  689.     partner_id, product_id, cashbank_id, ou_rc_id,
  690.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  691.     coa_id, curr_code, qty, uom_id,
  692.     amount, journal_date, type_rate,
  693.     numerator_rate, denominator_rate, journal_desc, remark,
  694.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  695.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  696.         A.ref_doc_type_id, A.ref_id,
  697.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  698.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  699.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  700.         A.amount, A.journal_date, A.type_rate,
  701.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  702.         0, pDatetime, pUserId, pDatetime, pUserId
  703.     FROM tt_journal_trx_item A
  704.     WHERE A.session_id = pSessionId;
  705. /*
  706.  * NK, 1 Feb 2014
  707.  * journal COGS tidak perlu breakdown per product, karena nilainya akan merupakan summary dari PRODUCT_STOCK
  708.  * (sebelumnya breakdown per product)
  709.  */    
  710.     INSERT INTO gl_journal_trx_mapping
  711.     (tenant_id, journal_trx_id, line_no,
  712.     ref_doc_type_id, ref_id,
  713.     partner_id, product_id, cashbank_id, ou_rc_id,
  714.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  715.     coa_id, curr_code, qty, uom_id,
  716.     amount, journal_date, type_rate,
  717.     numerator_rate, denominator_rate, journal_desc, remark, -- DanieL : penambahan journal_desc
  718.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  719.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  720.         vEmptyId, vEmptyId,    
  721.         vEmptyId, vEmptyId, vEmptyId, vEmptyId,
  722.         vEmptyId, vSignDebit, vSystemCOA, vEmptyId,
  723.         f_get_system_coa_by_group_coa(A.tenant_id, 'HargaPokokPenjualan'), A.curr_code, 0, vEmptyId,
  724.         0, A.journal_date, A.type_rate,
  725.         1, 1, 'COGS', vEmptyValue,
  726.         0, pDatetime, pUserId, pDatetime, pUserId
  727.     FROM tt_journal_trx_item A
  728.     WHERE A.session_id = pSessionId
  729.     GROUP BY A.tenant_id, A.journal_trx_id, A.journal_date, A.type_rate, A.curr_code;
  730.    
  731.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  732.    
  733.     /*
  734.      * journal Adjusment Stock
  735.      * Credit Inventory
  736.      * Debit Biaya
  737.      */
  738.     PERFORM gl_manage_admin_journal_trx(A.tenant_id, (vOuStructure).ou_bu_id, A.ou_id, (vDocJournalAdjStock).journal_type, (vDocJournalAdjStock).ledger_code, f_get_year_month_date(A.doc_date), 'MONTHLY', pDatetime, pUserId)
  739.     FROM i_trx_inventory A
  740.     WHERE A.tenant_id = pTenantId AND
  741.         A.ou_id = pOuId AND
  742.         A.process_no = pProcessNo AND
  743.         A.doc_type_id = vDocTypeAdjStock;
  744.    
  745.     INSERT INTO gl_journal_trx
  746.     (tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  747.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,  
  748.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  749.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  750.     SELECT A.tenant_id, (vDocJournalAdjStock).journal_type, A.doc_type_id, A.trx_inventory_id, A.doc_no, A.doc_date,
  751.         (vOuStructure).ou_bu_id, (vOuStructure).ou_branch_id, (vOuStructure).ou_sub_bu_id, vEmptyId, vEmptyId, pWarehouseId, vEmptyValue, vEmptyValue, -- DanieL : tidak ada field A.ext_doc_no, A.ext_doc_dat
  752.         A.ref_doc_type_id, A.ref_id, A.doc_date, f_get_value_system_config_by_param_code(A.tenant_id, 'ValutaBuku'), A.remark, vStatusDraft, 'DRAFT',
  753.         0, pDatetime, pUserId, pDatetime, pUserId
  754.     FROM i_trx_inventory A
  755.     WHERE A.tenant_id = pTenantId AND
  756.         A.ou_id = pOuId AND
  757.         A.process_no = pProcessNo AND
  758.         A.doc_type_id = vDocTypeAdjStock;
  759.    
  760.     INSERT INTO tt_journal_trx_item
  761.     (session_id, tenant_id, journal_trx_id, line_no,
  762.     ref_doc_type_id, ref_id,
  763.     partner_id, product_id, cashbank_id, ou_rc_id,
  764.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  765.     coa_id, curr_code, qty, uom_id,
  766.     amount, journal_date, type_rate,
  767.     numerator_rate, denominator_rate, journal_desc, remark)
  768.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  769.         A.doc_type_id, B.trx_inventory_item_id,
  770.         vEmptyId, B.product_id, vEmptyId, vEmptyId,
  771.         vEmptyId, vSignCredit, vProductCOA, vEmptyId,
  772.         f_get_product_coa_group_product(A.tenant_id, B.product_id), f_get_value_system_config_by_param_code(A.tenant_id, 'ValutaBuku'), B.qty_realization, B.base_uom_id,
  773.         0 , A.doc_date, vTypeRate,
  774.         1, 1, 'PRODUCT_STOCK', B.remark
  775.     FROM i_trx_inventory A, i_trx_inventory_item B, gl_journal_trx C
  776.     WHERE A.tenant_id = pTenantId AND
  777.         A.ou_id = pOuId AND
  778.         A.process_no = pProcessNo AND
  779.         A.doc_type_id = vDocTypeAdjStock AND
  780.         A.trx_inventory_id = B.trx_inventory_id AND
  781.         A.process_no = B.process_no AND
  782.         A.tenant_id = B.tenant_id AND
  783.         A.trx_inventory_id = C.doc_id AND
  784.         A.tenant_id = C.tenant_id AND
  785.         A.doc_type_id = C.doc_type_id AND
  786.         C.journal_type =  (vDocJournalAdjStock).journal_type AND
  787.         B.qty_realization < 0 AND
  788.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  789.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  790.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  791. --      A.ou_id = C.sub_ou_id AND
  792.         A.doc_no = C.doc_no;
  793.        
  794.     INSERT INTO tt_journal_trx_item
  795.     (session_id, tenant_id, journal_trx_id, line_no,
  796.     ref_doc_type_id, ref_id,
  797.     partner_id, product_id, cashbank_id, ou_rc_id,
  798.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  799.     coa_id, curr_code, qty, uom_id,
  800.     amount, journal_date, type_rate,
  801.     numerator_rate, denominator_rate, journal_desc, remark)
  802.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  803.         A.doc_type_id, B.trx_inventory_item_id,
  804.         vEmptyId, B.product_id, vEmptyId, vEmptyId,
  805.         vEmptyId, vSignDebit, vProductCOA, vEmptyId,
  806.         f_get_product_coa_group_product(A.tenant_id, B.product_id), f_get_value_system_config_by_param_code(A.tenant_id, 'ValutaBuku'), B.qty_realization, B.base_uom_id,
  807.         0 , A.doc_date, vTypeRate,
  808.         1, 1, 'PRODUCT_STOCK', B.remark
  809.     FROM i_trx_inventory A, i_trx_inventory_item B, gl_journal_trx C
  810.     WHERE A.tenant_id = pTenantId AND
  811.         A.ou_id = pOuId AND
  812.         A.process_no = pProcessNo AND
  813.         A.doc_type_id = vDocTypeAdjStock AND
  814.         A.trx_inventory_id = B.trx_inventory_id AND
  815.         A.process_no = B.process_no AND
  816.         A.tenant_id = B.tenant_id AND
  817.         A.trx_inventory_id = C.doc_id AND
  818.         A.tenant_id = C.tenant_id AND
  819.         A.doc_type_id = C.doc_type_id AND
  820.         C.journal_type =  (vDocJournalAdjStock).journal_type AND
  821.         B.qty_realization > 0 AND
  822.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  823.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  824.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  825. --      A.ou_id = C.sub_ou_id AND
  826.         A.doc_no = C.doc_no;
  827.  
  828. /*
  829.  * NK, 1 Feb 2014
  830.  * jurnal activity gl tidak di break down per product
  831.  */    
  832.     INSERT INTO tt_journal_trx_item
  833.     (session_id, tenant_id, journal_trx_id, line_no,
  834.     ref_doc_type_id, ref_id,
  835.     partner_id, product_id, cashbank_id, ou_rc_id,
  836.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  837.     coa_id, curr_code, qty, uom_id,
  838.     amount, journal_date, type_rate,
  839.     numerator_rate, denominator_rate, journal_desc, remark)
  840.     SELECT pSessionId, A.tenant_id, D.journal_trx_id, 1,
  841.         vEmptyId, vEmptyId,
  842.         vEmptyId, vEmptyId, vEmptyId, vEmptyId,
  843.         vEmptyId, vSignDebit, vActivityCOA, A.activity_gl_id,
  844.         C.coa_id, f_get_value_system_config_by_param_code(A.tenant_id, 'ValutaBuku'), 0, vEmptyId,
  845.         0 , A.doc_date, vTypeRate,
  846.         1, 1, 'ADJUSMENT_STOCK', vEmptyValue
  847.     FROM i_trx_inventory A, m_activity_gl C, gl_journal_trx D
  848.     WHERE A.tenant_id = pTenantId AND
  849.         A.ou_id = pOuId AND
  850.         A.process_no = pProcessNo AND
  851.         A.doc_type_id = vDocTypeAdjStock AND
  852.         A.activity_gl_id = C.activity_gl_id AND
  853.         A.trx_inventory_id = D.doc_id AND
  854.         A.tenant_id = D.tenant_id AND
  855.         A.doc_type_id = D.doc_type_id AND
  856.         D.journal_type =  (vDocJournalAdjStock).journal_type AND
  857.         D.ou_bu_id = (vOuStructure).ou_bu_id AND
  858.         D.ou_branch_id = (vOuStructure).ou_branch_id AND
  859.         D.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  860. --      A.ou_id = D.sub_ou_id AND
  861.         A.doc_no = D.doc_no;
  862.        
  863. /*     
  864.     INSERT INTO tt_journal_trx_item
  865.     (session_id, tenant_id, journal_trx_id, line_no,
  866.     ref_doc_type_id, ref_id,
  867.     partner_id, product_id, cashbank_id, ou_rc_id,
  868.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  869.     coa_id, curr_code, qty, uom_id,
  870.     amount, journal_date, type_rate,
  871.     numerator_rate, denominator_rate, journal_desc, remark)
  872.     SELECT pSessionId, A.tenant_id, D.journal_trx_id, 1,
  873.         A.doc_type_id, B.trx_inventory_item_id,
  874.         vEmptyId, B.product_id, vEmptyId, A.ou_id,
  875.         vEmptyId, vSignDebit, vActivityCOA, A.activity_gl_id,
  876.         C.coa_id, f_get_value_system_config_by_param_code(A.tenant_id, 'ValutaBuku'), B.qty_realization, B.base_uom_id,
  877.         0 , A.doc_date, vTypeRate,
  878.         1, 1, 'ADJUSMENT_STOCK', B.remark
  879.     FROM i_trx_inventory A, i_trx_inventory_item B, m_activity_gl C, gl_journal_trx D
  880.     WHERE A.tenant_id = pTenantId AND
  881.         A.ou_id = pOuId AND
  882.         A.process_no = pProcessNo AND
  883.         A.doc_type_id = vDocTypeAdjStock AND
  884.         A.trx_inventory_id = B.trx_inventory_id AND
  885.         A.process_no = B.process_no AND
  886.         A.tenant_id = B.tenant_id AND
  887.         A.activity_gl_id = C.activity_gl_id AND
  888.         A.trx_inventory_id = D.doc_id AND
  889.         A.tenant_id = D.tenant_id AND
  890.         A.doc_type_id = D.doc_type_id AND
  891.         D.journal_type =  (vDocJournalAdjStock).journal_type AND
  892.         B.qty_realization < 0 AND
  893.         D.ou_bu_id = (vOuStructure).ou_bu_id AND
  894.         D.ou_branch_id = (vOuStructure).ou_branch_id AND
  895.         D.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  896. --      A.ou_id = D.sub_ou_id AND
  897.         A.doc_no = D.doc_no;
  898.  
  899.     INSERT INTO tt_journal_trx_item
  900.     (session_id, tenant_id, journal_trx_id, line_no,
  901.     ref_doc_type_id, ref_id,
  902.     partner_id, product_id, cashbank_id, ou_rc_id,
  903.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  904.     coa_id, curr_code, qty, uom_id,
  905.     amount, journal_date, type_rate,
  906.     numerator_rate, denominator_rate, journal_desc, remark)
  907.     SELECT pSessionId, A.tenant_id, D.journal_trx_id, 1,
  908.         A.doc_type_id, B.trx_inventory_item_id,
  909.         vEmptyId, B.product_id, vEmptyId, A.ou_id,
  910.         vEmptyId, vSignCredit, vActivityCOA, A.activity_gl_id,
  911.         C.coa_id, f_get_value_system_config_by_param_code(A.tenant_id, 'ValutaBuku'), B.qty_realization, B.base_uom_id,
  912.         0 , A.doc_date, vTypeRate,
  913.         1, 1, 'ADJUSMENT_STOCK', B.remark
  914.     FROM i_trx_inventory A, i_trx_inventory_item B, m_activity_gl C, gl_journal_trx D
  915.     WHERE A.tenant_id = pTenantId AND
  916.         A.ou_id = pOuId AND
  917.         A.process_no = pProcessNo AND
  918.         A.doc_type_id = vDocTypeAdjStock AND
  919.         A.trx_inventory_id = B.trx_inventory_id AND
  920.         A.process_no = B.process_no AND
  921.         A.tenant_id = B.tenant_id AND
  922.         A.activity_gl_id = C.activity_gl_id AND
  923.         A.trx_inventory_id = D.doc_id AND
  924.         A.tenant_id = D.tenant_id AND
  925.         A.doc_type_id = D.doc_type_id AND
  926.         D.journal_type =  (vDocJournalAdjStock).journal_type AND
  927.         B.qty_realization > 0 AND
  928.         D.ou_bu_id = (vOuStructure).ou_bu_id AND
  929.         D.ou_branch_id = (vOuStructure).ou_branch_id AND
  930.         D.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  931. --      A.ou_id = D.sub_ou_id AND
  932.         A.doc_no = D.doc_no;
  933. */
  934.     INSERT INTO gl_journal_trx_item
  935.     (tenant_id, journal_trx_id, line_no,
  936.     ref_doc_type_id, ref_id,
  937.     partner_id, product_id, cashbank_id, ou_rc_id,
  938.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  939.     coa_id, curr_code, qty, uom_id,
  940.     amount, journal_date, type_rate,
  941.     numerator_rate, denominator_rate, journal_desc, remark,
  942.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  943.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  944.         A.ref_doc_type_id, A.ref_id,
  945.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  946.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  947.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  948.         A.amount, A.journal_date, A.type_rate,
  949.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  950.         0, pDatetime, pUserId, pDatetime, pUserId
  951.     FROM tt_journal_trx_item A
  952.     WHERE A.session_id = pSessionId AND
  953.         A.journal_desc = 'PRODUCT_STOCK';
  954.        
  955.     INSERT INTO gl_journal_trx_mapping
  956.     (tenant_id, journal_trx_id, line_no,
  957.     ref_doc_type_id, ref_id,
  958.     partner_id, product_id, cashbank_id, ou_rc_id,
  959.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  960.     coa_id, curr_code, qty, uom_id,
  961.     amount, journal_date, type_rate,
  962.     numerator_rate, denominator_rate, journal_desc, remark,
  963.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  964.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  965.         A.ref_doc_type_id, A.ref_id,
  966.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  967.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  968.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  969.         A.amount, A.journal_date, A.type_rate,
  970.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  971.         0, pDatetime, pUserId, pDatetime, pUserId
  972.     FROM tt_journal_trx_item A
  973.     WHERE A.session_id = pSessionId AND
  974.         A.journal_desc = 'ADJUSMENT_STOCK';
  975.  
  976.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  977.    
  978.     /*
  979.      * journal POS
  980.      * Credit Sales           nett price * qty, without tax
  981.      * Credit BankCharges     add amount
  982.      * Credit Tax Amount      tax amount ( sudah nett price )
  983.      * Credit Rounding         rouding
  984.      * Credit Refund Cash       refund amount
  985.      * Debit Cash             cash payment          
  986.      * Debit AccSettlement    non cash payment  
  987.      */
  988.     PERFORM gl_manage_admin_journal_trx(A.tenant_id, (vOuStructure).ou_bu_id, A.ou_id, vJournalType, vLedgerCode, f_get_year_month_date(A.doc_date), 'DAILY', pDatetime, pUserId)
  989.     FROM i_trx_pos A
  990.     WHERE A.tenant_id = pTenantId AND
  991.         A.ou_id = pOuId AND
  992.         A.process_no = pProcessNo AND
  993.         A.status = vStatusPos;
  994.    
  995.     INSERT INTO gl_journal_trx
  996.     (tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  997.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,  
  998.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  999.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  1000.     SELECT A.tenant_id, vJournalType, A.doc_type_id, A.trx_pos_id, A.doc_no, A.doc_date,
  1001.         (vOuStructure).ou_bu_id, (vOuStructure).ou_branch_id, (vOuStructure).ou_sub_bu_id, A.partner_id, vEmptyId, pWarehouseId, A.ext_doc_no, A.ext_doc_date,
  1002.         A.ref_doc_type_id, A.ref_id, A.doc_date, A.curr_code, A.remark, vStatusDraft, 'DRAFT',
  1003.         0, pDatetime, pUserId, pDatetime, pUserId
  1004.     FROM i_trx_pos A
  1005.     WHERE A.tenant_id = pTenantId AND
  1006.         A.ou_id = pOuId AND
  1007.         A.process_no = pProcessNo AND
  1008.         A.status = vStatusPos;
  1009.    
  1010.     INSERT INTO tt_journal_trx_item
  1011.     (session_id, tenant_id, journal_trx_id, line_no,
  1012.     ref_doc_type_id, ref_id,
  1013.     partner_id, product_id, cashbank_id, ou_rc_id,
  1014.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1015.     coa_id, curr_code, qty, uom_id,
  1016.     amount, journal_date, type_rate,
  1017.     numerator_rate, denominator_rate, journal_desc, remark)
  1018.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1019.         A.doc_type_id, vEmptyId,
  1020.         A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  1021.         vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  1022.         f_get_system_coa_by_group_coa(A.tenant_id, 'PendapatanPenjualan'), B.curr_code, SUM(B.qty), B.base_uom_id,
  1023.         --f_get_amount_before_tax(SUM(B.nett_sell_price * B.qty),B.flg_tax_amount,B.tax_percentage,f_get_digit_decimal_doc_curr(vPosDocTypeId, B.curr_code),vRoundingModeNonTax) , A.doc_date, vTypeRate,
  1024.         CASE WHEN vFlgPkp = vFlagYes THEN
  1025.         f_get_amount_before_tax(SUM(B.nett_sell_price * B.qty),B.flg_tax_amount,B.tax_percentage,f_get_digit_decimal_doc_curr(vPosDocTypeId, B.curr_code),vRoundingModeNonTax) ELSE
  1026.         f_calculate_dpp_amount_from_gross_price(SUM(B.nett_sell_price * B.qty),1,0,B.flg_tax_amount,B.tax_percentage,f_get_digit_decimal_doc_curr(vPosDocTypeId, B.curr_code),'RHU') + f_calculate_tax_amount_from_gross_price(SUM(B.nett_sell_price * B.qty),1,0,B.flg_tax_amount,B.tax_percentage,f_get_digit_decimal_doc_curr(vPosDocTypeId, B.curr_code),'RHU')
  1027.         --f_get_amount_before_tax(SUM(B.nett_sell_price * B.qty),B.flg_tax_amount,B.tax_percentage,f_get_digit_decimal_doc_curr(vPosDocTypeId, B.curr_code),vRoundingModeNonTax) + SUM(B.tax_amount)
  1028.         END
  1029.         , A.doc_date, vTypeRate,
  1030.         1, 1, 'SALES_POS', vEmptyValue
  1031.     FROM i_trx_pos A, i_trx_pos_item B, gl_journal_trx C
  1032.     WHERE A.tenant_id = pTenantId AND
  1033.         A.ou_id = pOuId AND
  1034.         A.process_no = pProcessNo AND
  1035.         A.status = vStatusPos AND
  1036.         A.trx_pos_id = B.trx_pos_id AND
  1037.         A.process_no = B.process_no AND
  1038.         A.tenant_id = B.tenant_id AND
  1039.         A.trx_pos_id = C.doc_id AND
  1040.         A.tenant_id = C.tenant_id AND
  1041.         A.doc_type_id = C.doc_type_id AND
  1042.         C.journal_type = vJournalType AND
  1043.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1044.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1045.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  1046. --      A.ou_id = C.sub_ou_id AND
  1047.         A.doc_no = C.doc_no
  1048.     GROUP BY A.tenant_id, C.journal_trx_id, A.doc_type_id,
  1049.         A.partner_id, B.curr_code, B.base_uom_id, B.flg_tax_amount, B.tax_percentage, A.doc_date;
  1050.  
  1051.        
  1052.     IF vFlgPkp = vFlagYes THEN 
  1053.     -- hitung total tax item   
  1054.     SELECT sum(B.tax_amount) INTO vTotalTaxItem
  1055.     FROM i_trx_pos A, i_trx_pos_item B
  1056.     WHERE A.tenant_id = pTenantId AND
  1057.         A.ou_id = pOuId AND
  1058.         A.process_no = pProcessNo AND
  1059.         A.status = vStatusPos AND
  1060.         A.trx_pos_id = B.trx_pos_id AND
  1061.         A.process_no = B.process_no AND
  1062.         A.tenant_id = B.tenant_id;
  1063.                
  1064.     IF vTotalTaxItem > 0 THEN
  1065.    
  1066.     SELECT sum(B.tax_amount)-vTotalTaxItem INTO vTotalTaxItemNempil
  1067.     FROM i_trx_pos A, i_trx_pos_tax B
  1068.     WHERE A.tenant_id = pTenantId AND
  1069.         A.ou_id = pOuId AND
  1070.         A.process_no = pProcessNo AND
  1071.         A.status = vStatusPos AND
  1072.         A.trx_pos_id = B.trx_pos_id AND
  1073.         A.process_no = B.process_no AND
  1074.         A.tenant_id = B.tenant_id;
  1075.    
  1076.     END IF;
  1077.     END IF;
  1078.    
  1079.    
  1080. -- jurnal penjualan dari produk nempil, 6 Nov 2015 
  1081.     WITH data_tax_pos AS(
  1082.         SELECT A.trx_pos_id, A.tenant_id,
  1083.             A.doc_type_id, sum(B.tax_amount) AS tax_amount
  1084.         FROM i_trx_pos A, i_trx_pos_item B
  1085.         WHERE A.tenant_id = pTenantId AND
  1086.             A.ou_id = pOuId AND
  1087.             A.process_no = pProcessNo AND
  1088.             A.status = vStatusPos AND
  1089.             A.trx_pos_id = B.trx_pos_id AND
  1090.             A.process_no = B.process_no AND
  1091.             A.tenant_id = B.tenant_id
  1092.         GROUP BY A.trx_pos_id, A.tenant_id,
  1093.             A.doc_type_id
  1094.     ),
  1095.     data_tax_total AS(
  1096.         SELECT A.trx_pos_id, A.tenant_id,
  1097.             A.doc_type_id, sum(B.tax_amount) AS tax_amount
  1098.         FROM i_trx_pos A, i_trx_pos_tax B
  1099.         WHERE A.tenant_id = pTenantId AND
  1100.             A.ou_id = pOuId AND
  1101.             A.process_no = pProcessNo AND
  1102.             A.status = vStatusPos AND
  1103.             A.trx_pos_id = B.trx_pos_id AND
  1104.             A.process_no = B.process_no AND
  1105.             A.tenant_id = B.tenant_id
  1106.         GROUP BY A.trx_pos_id, A.tenant_id,
  1107.             A.doc_type_id
  1108.     ),
  1109.     data_tax_nempil AS(
  1110.         SELECT A.trx_pos_id, A.tenant_id,
  1111.             A.doc_type_id, A.tax_amount - COALESCE(B.tax_amount,0) AS tax_amount
  1112.         FROM data_tax_total A
  1113.         LEFT JOIN data_tax_pos B ON A.trx_pos_id = B.trx_pos_id AND
  1114.                                        A.tenant_id = B.tenant_id AND
  1115.                                        A.doc_type_id = B.doc_type_id
  1116.     )
  1117.     INSERT INTO tt_journal_trx_item
  1118.     (session_id, tenant_id, journal_trx_id, line_no,
  1119.     ref_doc_type_id, ref_id,
  1120.     partner_id, product_id, cashbank_id, ou_rc_id,
  1121.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1122.     coa_id, curr_code, qty, uom_id,
  1123.     amount, journal_date, type_rate,
  1124.     numerator_rate, denominator_rate, journal_desc, remark)
  1125.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1126.         A.doc_type_id, vEmptyId,
  1127.         A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  1128.         vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  1129.         f_get_system_coa_by_group_coa(A.tenant_id, 'PendapatanPenjualan'), B.curr_code, SUM(B.qty), vEmptyId,
  1130.         CASE WHEN vFlgPkp = vFlagYes THEN
  1131.         SUM(B.sell_price) - COALESCE(D.tax_amount, 0) ELSE -- sell price = gross sell price * qty
  1132.         SUM(B.sell_price)
  1133.         END,
  1134.         A.doc_date, vTypeRate,
  1135.         1, 1, 'SALES_POS', vEmptyValue
  1136.     FROM i_trx_pos A
  1137.     INNER JOIN i_trx_pos_item_nempil_barang B ON A.trx_pos_id = B.trx_pos_id AND
  1138.                                                  A.process_no = B.process_no AND
  1139.                                                  A.tenant_id = B.tenant_id
  1140.     INNER JOIN gl_journal_trx C ON A.trx_pos_id = C.doc_id AND
  1141.                                    A.tenant_id = C.tenant_id AND
  1142.                                    A.doc_type_id = C.doc_type_id AND
  1143.                                    A.doc_no = C.doc_no
  1144.     LEFT JOIN data_tax_nempil D ON A.trx_pos_id = D.trx_pos_id AND
  1145.                                    A.tenant_id = D.tenant_id AND
  1146.                                    A.doc_type_id = D.doc_type_id
  1147.     WHERE A.tenant_id = pTenantId AND
  1148.         A.ou_id = pOuId AND
  1149.         A.process_no = pProcessNo AND
  1150.         A.status = vStatusPos AND
  1151.         C.journal_type = vJournalType AND
  1152.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1153.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1154.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id
  1155. --      A.ou_id = C.sub_ou_id AND
  1156.     GROUP BY A.tenant_id, C.journal_trx_id, A.doc_type_id,
  1157.         A.partner_id, B.curr_code, A.doc_date, D.tax_amount;
  1158.        
  1159.     INSERT INTO tt_journal_trx_item
  1160.     (session_id, tenant_id, journal_trx_id, line_no,
  1161.     ref_doc_type_id, ref_id,
  1162.     partner_id, product_id, cashbank_id, ou_rc_id,
  1163.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1164.     coa_id, curr_code, qty, uom_id,
  1165.     amount, journal_date, type_rate,
  1166.     numerator_rate, denominator_rate, journal_desc, remark)
  1167.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1168.         A.doc_type_id, B.trx_pos_add_cost_id,
  1169.         A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  1170.         vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  1171.         f_get_system_coa_by_group_coa(A.tenant_id, 'BiayaKartuKredit'), B.curr_code, 0, vEmptyId,
  1172.         B.add_amount, A.doc_date, vTypeRate,
  1173.         1, 1, 'CHARGES_POS', B.remark
  1174.     FROM i_trx_pos A, i_trx_pos_add_cost B, gl_journal_trx C
  1175.     WHERE A.tenant_id = pTenantId AND
  1176.         A.ou_id = pOuId AND
  1177.         A.process_no = pProcessNo AND
  1178.         A.status = vStatusPos AND
  1179.         A.trx_pos_id = B.trx_pos_id AND
  1180.         A.process_no = B.process_no AND
  1181.         A.tenant_id = B.tenant_id AND
  1182.         A.trx_pos_id = C.doc_id AND
  1183.         A.tenant_id = C.tenant_id AND
  1184.         A.doc_type_id = C.doc_type_id AND
  1185.         C.journal_type = vJournalType AND
  1186.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1187.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1188.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  1189. --      A.ou_id = C.sub_ou_id AND
  1190.         A.doc_no = C.doc_no AND
  1191.         B.activity_gl_id = vActivityChargesId;
  1192.    
  1193.         -- add if By: Ping An , 27 Nov 2015
  1194.     -- Jurnal VAT Hanya untuk yang PKP saja , kalo non PKP gak perlu dijurnal PPN karena non PKP tidak memungut dan melaporkan PPN
  1195.     IF vFlgPkp = vFlagYes THEN
  1196.    
  1197.         INSERT INTO tt_journal_trx_item
  1198.         (session_id, tenant_id, journal_trx_id, line_no,
  1199.         ref_doc_type_id, ref_id,
  1200.         partner_id, product_id, cashbank_id, ou_rc_id,
  1201.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1202.         coa_id, curr_code, qty, uom_id,
  1203.         amount, journal_date, type_rate,
  1204.         numerator_rate, denominator_rate, journal_desc, remark)
  1205.         SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1206.             A.doc_type_id, vEmptyId,
  1207.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  1208.             vEmptyId, vSignCredit, vTaxCOA, vEmptyId,
  1209.             D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
  1210.             B.tax_amount , A.doc_date, vTypeRate,
  1211.             1, 1, 'VAT_OUT_POS', vEmptyValue
  1212.         FROM i_trx_pos A, i_trx_pos_tax B, gl_journal_trx C, m_tax D
  1213.         WHERE A.tenant_id = pTenantId AND
  1214.             A.ou_id = pOuId AND
  1215.             A.process_no = pProcessNo AND
  1216.             A.status = vStatusPos AND
  1217.             A.trx_pos_id = B.trx_pos_id AND
  1218.             A.process_no = B.process_no AND
  1219.             A.tenant_id = B.tenant_id AND
  1220.             B.tax_id = D.tax_id AND
  1221.             A.trx_pos_id = C.doc_id AND
  1222.             A.tenant_id = C.tenant_id AND
  1223.             A.doc_type_id = C.doc_type_id AND
  1224.             C.journal_type = vJournalType AND
  1225.             C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1226.             C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1227.             C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  1228.     --      A.ou_id = C.sub_ou_id AND
  1229.             A.doc_no = C.doc_no;
  1230.        
  1231.        
  1232.     END IF;
  1233.      
  1234.      
  1235.     INSERT INTO tt_journal_trx_item
  1236.     (session_id, tenant_id, journal_trx_id, line_no,
  1237.     ref_doc_type_id, ref_id,
  1238.     partner_id, product_id, cashbank_id, ou_rc_id,
  1239.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1240.     coa_id, curr_code, qty, uom_id,
  1241.     amount, journal_date, type_rate,
  1242.     numerator_rate, denominator_rate, journal_desc, remark)
  1243.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1244.         A.doc_type_id, vEmptyId,
  1245.         A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  1246.         vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  1247.         f_get_system_coa_by_group_coa(A.tenant_id, 'BiayaPembulatanNilai'), A.curr_code, 0, vEmptyId,
  1248.         A.rounding_amount, A.doc_date, vTypeRate,
  1249.         1, 1, 'ROUNDING_POS', C.remark
  1250.     FROM i_trx_pos A, gl_journal_trx C
  1251.     WHERE A.tenant_id = pTenantId AND
  1252.         A.ou_id = pOuId AND
  1253.         A.process_no = pProcessNo AND
  1254.         A.status = vStatusPos AND
  1255.         A.trx_pos_id = C.doc_id AND
  1256.         A.tenant_id = C.tenant_id AND
  1257.         A.doc_type_id = C.doc_type_id AND
  1258.         C.journal_type = vJournalType AND
  1259.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1260.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1261.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  1262. --      A.ou_id = C.sub_ou_id AND
  1263.         A.doc_no = C.doc_no;       
  1264.        
  1265.     INSERT INTO tt_journal_trx_item
  1266.     (session_id, tenant_id, journal_trx_id, line_no,
  1267.     ref_doc_type_id, ref_id,
  1268.     partner_id, product_id, cashbank_id, ou_rc_id,
  1269.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1270.     coa_id, curr_code, qty, uom_id,
  1271.     amount, journal_date, type_rate,
  1272.     numerator_rate, denominator_rate, journal_desc, remark)
  1273.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1274.         A.doc_type_id, vEmptyId,
  1275.         A.partner_id, vEmptyId, E.cashbank_id, vEmptyId,
  1276.         vEmptyId, vSignCredit, vCashBankCOA, vEmptyId,
  1277.         E.coa_id, A.curr_code, 0, vEmptyId,
  1278.         A.total_refund, A.doc_date, vTypeRate,
  1279.         1, 1, 'REFUND_POS', A.remark
  1280.     FROM i_trx_pos A, gl_journal_trx C, i_cash_bank_data_outlet D, m_cashbank E
  1281.     WHERE A.tenant_id = pTenantId AND
  1282.         A.ou_id = pOuId AND
  1283.         A.process_no = pProcessNo AND
  1284.         A.status = vStatusPos AND
  1285.         A.trx_pos_id = C.doc_id AND
  1286.         A.tenant_id = C.tenant_id AND
  1287.         A.doc_type_id = C.doc_type_id AND
  1288.         D.outlet_id = pOutletId AND
  1289.         D.cashbank_id = E.cashbank_id AND
  1290.         A.curr_code = E.curr_code AND
  1291.         E.flg_cash_bank = vFlagCash AND    
  1292.         C.journal_type = vJournalType AND
  1293.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1294.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1295.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  1296. --      A.ou_id = C.sub_ou_id AND
  1297.         A.doc_no = C.doc_no AND
  1298.         A.total_refund > 0;    
  1299.  
  1300.     INSERT INTO tt_journal_trx_item
  1301.     (session_id, tenant_id, journal_trx_id, line_no,
  1302.     ref_doc_type_id, ref_id,
  1303.     partner_id, product_id, cashbank_id, ou_rc_id,
  1304.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1305.     coa_id, curr_code, qty, uom_id,
  1306.     amount, journal_date, type_rate,
  1307.     numerator_rate, denominator_rate, journal_desc, remark)
  1308.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1309.         A.doc_type_id, B.trx_pos_cash_payment_id,
  1310.         A.partner_id, vEmptyId, E.cashbank_id, vEmptyId,
  1311.         vEmptyId, vSignDebit, vCashBankCOA, vEmptyId,
  1312.         E.coa_id, B.curr_payment_code, 0, vEmptyId,
  1313.         B.payment_amount, A.doc_date, vTypeRate,
  1314.         1, 1, 'CASH_PAYMENT_POS', B.remark
  1315.     FROM i_trx_pos A, i_trx_pos_cash_payment B, gl_journal_trx C, i_cash_bank_data_outlet D, m_cashbank E
  1316.     WHERE A.tenant_id = pTenantId AND
  1317.         A.ou_id = pOuId AND
  1318.         A.process_no = pProcessNo AND
  1319.         A.status = vStatusPos AND
  1320.         A.process_no = B.process_no AND
  1321.         A.trx_pos_id = B.trx_pos_id AND
  1322.         A.tenant_id = B.tenant_id AND
  1323.         D.outlet_id = pOutletId AND
  1324.         D.cashbank_id = E.cashbank_id AND
  1325.         B.curr_payment_code = E.curr_code AND
  1326.         E.flg_cash_bank = vFlagCash AND
  1327.         A.trx_pos_id = C.doc_id AND
  1328.         A.tenant_id = C.tenant_id AND
  1329.         A.doc_type_id = C.doc_type_id AND
  1330.         C.journal_type = vJournalType AND
  1331.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1332.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1333.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  1334. --      A.ou_id = C.sub_ou_id AND
  1335.         A.doc_no = C.doc_no AND
  1336.         B.payment_amount > 0; -- add by: Ping An 30 Nov 2015, ditambah filter kalau tidak ada pembayaran tidak perlu dijurnal
  1337.  
  1338.     INSERT INTO tt_journal_trx_item
  1339.     (session_id, tenant_id, journal_trx_id, line_no,
  1340.     ref_doc_type_id, ref_id,
  1341.     partner_id, product_id, cashbank_id, ou_rc_id,
  1342.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1343.     coa_id, curr_code, qty, uom_id,
  1344.     amount, journal_date, type_rate,
  1345.     numerator_rate, denominator_rate, journal_desc, remark)
  1346.     SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1347.         A.doc_type_id, B.trx_pos_non_cash_payment_id,
  1348.         A.partner_id, vEmptyId, E.cashbank_id, vEmptyId,
  1349.         vEmptyId, vSignDebit, vCashBankCOA, vEmptyId,
  1350.         E.settle_coa_id, B.curr_payment_code, 0, vEmptyId,
  1351.         B.payment_amount, A.doc_date, vTypeRate,
  1352.         1, 1, 'NON_CASH_PAYMENT_POS', B.remark
  1353.     FROM i_trx_pos A, i_trx_pos_non_cash_payment B, gl_journal_trx C, i_device_merchant_data_outlet D, m_device_merchant E
  1354.     WHERE A.tenant_id = pTenantId AND
  1355.         A.ou_id = pOuId AND
  1356.         A.process_no = pProcessNo AND
  1357.         A.status = vStatusPos AND
  1358.         A.process_no = B.process_no AND
  1359.         A.trx_pos_id = B.trx_pos_id AND
  1360.         A.tenant_id = B.tenant_id AND
  1361.         D.outlet_id = pOutletId AND
  1362.         B.device_merchant_id = D.device_merchant_id AND
  1363.         D.device_merchant_id = E.device_merchant_id AND
  1364.         A.trx_pos_id = C.doc_id AND
  1365.         A.tenant_id = C.tenant_id AND
  1366.         A.doc_type_id = C.doc_type_id AND
  1367.         C.journal_type = vJournalType AND
  1368.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1369.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1370.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  1371. --      A.ou_id = C.sub_ou_id AND
  1372.         A.doc_no = C.doc_no AND
  1373.         B.payment_amount > 0; -- add by: Ping An 30 Nov 2015, ditambah filter kalau tidak ada pembayaran tidak perlu dijurnal
  1374.  
  1375.        
  1376.  
  1377.     -- hanya dijalankan jika ada kurang bayar(BELUM LUNAS PEMBAYARANNYA ), kalau sudah lunas tidak perlu dijurnal DP   
  1378.     IF vCountBelumDiBayar > 0 THEN
  1379.         -- sisa pembayaran dipindahkan ke AR       
  1380.             INSERT INTO tt_journal_trx_item
  1381.             (session_id, tenant_id, journal_trx_id, line_no,
  1382.             ref_doc_type_id, ref_id,
  1383.             partner_id, product_id, cashbank_id, ou_rc_id,
  1384.             segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1385.             coa_id, curr_code, qty, uom_id,
  1386.             amount, journal_date, type_rate,
  1387.             numerator_rate, denominator_rate, journal_desc, remark)
  1388.             SELECT pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1389.                 A.doc_type_id, A.ref_id,
  1390.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  1391.                 vEmptyId, vSignDebit, vSystemCOA, vEmptyId,
  1392.                 f_get_ar_coa_partner(A.tenant_id, D.partner_id), A.curr_code, 0, vEmptyId,
  1393.                 -- rev by Ping An 17 Nov 2015, ambil nilai utuhnya karena nnti di submit invoice debt note ar yg dari POS dijaga tidak akan dijurnal
  1394.                 -- B.under_payment_amount, A.doc_date, vTypeRate,
  1395.                 A.total_amount, A.doc_date, vTypeRate,
  1396.                 1, 1, 'AR_POS', 'NILAI DEBIT NOTE AR'
  1397.             FROM i_trx_pos A, gl_journal_trx C, i_trx_pos_ext D, i_trx_pos_termin_payment E
  1398.             WHERE A.tenant_id = pTenantId AND
  1399.                 A.ou_id = pOuId AND
  1400.                 A.process_no = pProcessNo AND
  1401.                 A.status = vStatusPos AND
  1402.                 A.trx_pos_id = D.trx_pos_id AND
  1403.                 -- rev by: Ping An , 28 Jan 2016 joinnya kurang process_no dan tenant_id
  1404.                 A.process_no = D.process_no AND
  1405.                 A.tenant_id = D.tenant_id AND
  1406.                 A.tenant_id = E.tenant_id AND
  1407.                 A.process_no = E.process_no AND
  1408.                 A.trx_pos_id = E.trx_pos_id AND
  1409.                 E.under_payment_amount > 0 AND
  1410.                
  1411.                 A.trx_pos_id = C.doc_id AND
  1412.                 A.tenant_id = C.tenant_id AND
  1413.                 A.doc_type_id = C.doc_type_id AND
  1414.                 C.journal_type = vJournalType AND
  1415.                 C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1416.                 C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1417.                 C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  1418.         --      A.ou_id = C.sub_ou_id AND
  1419.                 A.doc_no = C.doc_no;       
  1420.                
  1421.  
  1422.      END IF;
  1423.            
  1424.        
  1425.        
  1426. -- TAMBAHKAN JURNAL DP add by Ping An 18 Nov 2015
  1427. -- karena nantinya di function submit invoice AR, debt note ar yang tercreate dari POS tidak akan di jurnal, jadi perlu dijurnal disini DP ARnya
  1428. -- jika ada bayar termin dari customer corporate
  1429.         --      K   m_activity_gl                   SYSTEM  DP_AR_POS
  1430. INSERT INTO tt_journal_trx_item
  1431.             (   session_id, tenant_id, journal_trx_id, line_no,
  1432.                 ref_doc_type_id, ref_id,
  1433.                 partner_id, product_id, cashbank_id, ou_rc_id,
  1434.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1435.                 coa_id, curr_code, qty, uom_id,
  1436.                 amount, journal_date, type_rate,
  1437.                 numerator_rate, denominator_rate, journal_desc, remark)
  1438.         SELECT  pSessionId, A.tenant_id, C.journal_trx_id, 1,
  1439.                 A.trx_pos_id, B.trx_pos_termin_payment_id,
  1440.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,            
  1441.                 vEmptyId, vSignCredit, vSystemCOA, D.activity_gl_id,
  1442.                 D.coa_id, B.curr_payment_code, 0, vEmptyId,            
  1443.                 B.payment_amount, A.doc_date, vTypeRate,
  1444.                 1, 1, 'DP_AR_POS', 'NILAI DP AR'
  1445.         FROM i_trx_pos A, i_trx_pos_termin_payment B, gl_journal_trx C, m_activity_gl D
  1446.     WHERE A.tenant_id = pTenantId AND
  1447.         A.ou_id = pOuId AND
  1448.         A.process_no = pProcessNo AND
  1449.         A.status = vStatusPos AND
  1450.         A.process_no = B.process_no AND
  1451.         A.trx_pos_id = B.trx_pos_id AND
  1452.         A.tenant_id = B.tenant_id AND
  1453.         A.trx_pos_id = C.doc_id AND
  1454.         A.tenant_id = C.tenant_id AND
  1455.         A.doc_type_id = C.doc_type_id AND
  1456.         C.journal_type = vJournalType AND
  1457.         C.ou_bu_id = (vOuStructure).ou_bu_id AND
  1458.         C.ou_branch_id = (vOuStructure).ou_branch_id AND
  1459.         C.ou_sub_bu_id = (vOuStructure).ou_sub_bu_id AND
  1460. --      A.ou_id = C.sub_ou_id AND
  1461.         A.doc_no = C.doc_no AND
  1462.         B.under_payment_amount > 0 AND -- ditambah filter: jika LUNAS tidak perlu di jurnal DP     
  1463.         B.payment_amount > 0 AND -- ditambah filter : jika tidak ada pembayaran juga tidak perlu di jurnal DP
  1464.         D.activity_gl_id = f_get_activity_gl_id_for_downpayment(A.tenant_id);          
  1465.            
  1466. -- END PENAMBAHKAN JURNAL DP add by Ping An 18 Nov 2015        
  1467.                            
  1468.     INSERT INTO gl_journal_trx_item
  1469.     (tenant_id, journal_trx_id, line_no,
  1470.     ref_doc_type_id, ref_id,
  1471.     partner_id, product_id, cashbank_id, ou_rc_id,
  1472.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1473.     coa_id, curr_code, qty, uom_id,
  1474.     amount, journal_date, type_rate,
  1475.     numerator_rate, denominator_rate, journal_desc, remark,
  1476.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  1477.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  1478.         A.ref_doc_type_id, A.ref_id,
  1479.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  1480.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  1481.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  1482.         A.amount, A.journal_date, A.type_rate,
  1483.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  1484.         0, pDatetime, pUserId, pDatetime, pUserId
  1485.     FROM tt_journal_trx_item A
  1486.     WHERE A.session_id = pSessionId AND
  1487.         A.journal_desc IN ('SALES_POS','CHARGES_POS','VAT_OUT_POS', 'ROUNDING_POS', 'REFUND_POS', 'DP_AR_POS');
  1488.        
  1489.     INSERT INTO gl_journal_trx_mapping
  1490.     (tenant_id, journal_trx_id, line_no,
  1491.     ref_doc_type_id, ref_id,
  1492.     partner_id, product_id, cashbank_id, ou_rc_id,
  1493.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  1494.     coa_id, curr_code, qty, uom_id,
  1495.     amount, journal_date, type_rate,
  1496.     numerator_rate, denominator_rate, journal_desc, remark,
  1497.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  1498.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  1499.         A.ref_doc_type_id, A.ref_id,
  1500.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  1501.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  1502.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  1503.         A.amount, A.journal_date, A.type_rate,
  1504.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  1505.         0, pDatetime, pUserId, pDatetime, pUserId
  1506.     FROM tt_journal_trx_item A
  1507.     WHERE A.session_id = pSessionId AND
  1508.          -- rev by Ping An 18nov2015 A.journal_desc IN ('CASH_PAYMENT_POS','NON_CASH_PAYMENT_POS');
  1509.          A.journal_desc IN ('CASH_PAYMENT_POS','NON_CASH_PAYMENT_POS','AR_POS');
  1510.    
  1511.     -- buat nota debit ar untuk transaksi pos yg masih hutang
  1512.     -- added by didit, 25 September 2015
  1513.     PERFORM f_migrate_data_trx_pos_to_debt_note_ar(pSessionId, A.tenant_id, A.process_no, A.ou_id, pUserId, pDatetime, vFlgPkp, CASE WHEN COALESCE(B.under_payment_amount, -1) < 0 THEN 0 ELSE 1 END, A.trx_pos_id)
  1514.     FROM i_trx_pos A
  1515.     LEFT JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  1516.     WHERE A.tenant_id = pTenantId
  1517.         AND A.process_no = pProcessNo
  1518.         AND A.ou_id = pOuId;
  1519.    
  1520.     /**
  1521.        Bagian ini untuk melengkapi data awe
  1522.        Harus dipastikan sudah:
  1523.          1. di setting system config ROLE.IARD.ID -> diisi dengan Role ID Invoice AR Debt
  1524.          2. sudah set approval flow untuk INVOICE AR DEBT DF01, dan hanya 1
  1525.     **/
  1526.     -- Mendapatkan default role yang dipakai dari sysconfig
  1527.     /*
  1528.       * Mod By Didit, 1 Des 2016
  1529.      * tidak perlu lagi insert ke tabel awe_*
  1530.      * karena dokumennya sekarang sudah langsung approved semua
  1531.     SELECT f_get_value_system_config_by_param_code(pTenantId, 'ROLE.IARD.ID') INTO vDefaultRoleId;
  1532.  
  1533.     -- Mendapatkan default approval flow ID yang dipakai dari sysconfig
  1534.     SELECT awe_flow_id INTO vFlowArDebtNoteId
  1535.     FROM awe_flow WHERE scheme = vDebtNoteARDocScheme AND flg_validate = vFlagYes LIMIT 1;
  1536.  
  1537.     -- Generate unique Request ID
  1538.     --SELECT f_make_uid() INTO vReqId;
  1539.    
  1540.     -- Generate data awe_currdoc_status
  1541.     INSERT INTO awe_currdoc_status(
  1542.                 req_id, tenant_id, scheme, doc_id, doc_no, doc_date, current_state,
  1543.                 remark, current_user_id, current_role_id, flg_user_role, label,
  1544.                 data, flow_id, create_datetime, create_user_id, create_role_id,
  1545.                 update_datetime, update_user_id, update_role_id, version)
  1546.     SELECT f_make_uid(), pTenantId, vDebtNoteARDocScheme, B.invoice_ar_id, B.doc_no, B.doc_date, vStateDraft,
  1547.            ' ', vEmptyId, vDefaultRoleId, vFlagRole, 'AR DEBT NOTE'||B.doc_no,
  1548.            '{}', vFlowArDebtNoteId, pDateTime, pUserId, vDefaultRoleId, pDateTime,pUserId, vDefaultRoleId, 0
  1549.     FROM i_trx_pos A
  1550.     INNER JOIN fi_invoice_ar B ON A.doc_no = B.doc_no AND A.doc_date = B.doc_date AND A.tenant_id = B.tenant_id AND B.doc_type_id = vDocTypeDebtNoteAr
  1551.     WHERE B.status_doc = vStatusDraft
  1552.         AND A.tenant_id = pTenantId
  1553.         AND A.process_no = pProcessNo
  1554.         AND A.ou_id = pOuId;
  1555.  
  1556.     -- Generate data awe_worklist
  1557.     INSERT INTO awe_worklist(
  1558.             req_id, user_id, role_id, no_item, tenant_id, scheme, doc_id,
  1559.             doc_no, doc_date, status, remark, flg_user_role, flg_to_do, create_datetime,
  1560.             create_user_id, update_datetime, update_user_id, version)
  1561.     SELECT C.req_id, -99, vDefaultRoleId, 1, pTenantId, vDebtNoteARDocScheme, B.invoice_ar_id,
  1562.         B.doc_no, B.doc_date, vStateDraft, ' ', vFlagRole, vFlagYes, pDateTime,
  1563.         pUserId, pDateTime, pUserId, 0
  1564.     FROM i_trx_pos A
  1565.     INNER JOIN fi_invoice_ar B ON A.doc_no = B.doc_no AND A.doc_date = B.doc_date AND A.tenant_id = B.tenant_id AND B.doc_type_id = vDocTypeDebtNoteAr
  1566.     INNER JOIN awe_currdoc_status C ON C.doc_id = B.invoice_ar_id AND C.doc_no = B.doc_no AND C.doc_date = B.doc_date
  1567.     WHERE B.status_doc = vStatusDraft
  1568.         AND A.tenant_id = pTenantId
  1569.         AND A.process_no = pProcessNo
  1570.         AND A.ou_id = pOuId;
  1571.  
  1572.     -- Generate data awe_historydoc
  1573.     INSERT INTO awe_historydoc(
  1574.             tenant_id, req_id, doc_id, scheme, user_id, role_id,
  1575.             activity, previous_state, next_state, remark, next_user_id, next_role_id,
  1576.             flg_user_role, activity_datetime, version)
  1577.     SELECT pTenantId, C.req_id, B.invoice_ar_id, vDebtNoteARDocScheme, vEmptyId, vDefaultRoleId,
  1578.         'CREATE', '', 'DRAFT', '', vEmptyId, vEmptyId,
  1579.         'U', pDateTime, 0
  1580.     FROM i_trx_pos A
  1581.     INNER JOIN fi_invoice_ar B ON A.doc_no = B.doc_no AND A.doc_date = B.doc_date AND A.tenant_id = B.tenant_id AND B.doc_type_id = vDocTypeDebtNoteAr
  1582.     INNER JOIN awe_currdoc_status C ON C.doc_id = B.invoice_ar_id AND C.doc_no = B.doc_no AND C.doc_date = B.doc_date
  1583.     WHERE B.status_doc = vStatusDraft
  1584.         AND A.tenant_id = pTenantId
  1585.         AND A.process_no = pProcessNo
  1586.         AND A.ou_id = pOuId;
  1587.     */
  1588.    
  1589.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  1590.    
  1591.     DELETE FROM i_tt_pos_cash_balance WHERE session_id = pSessionId;
  1592.    
  1593.     DELETE FROM i_tt_pos_product_balance_stock WHERE session_id = pSessionId;
  1594.    
  1595.     DELETE FROM i_tt_nempil_barang_balance_stock WHERE session_id = pSessionId;
  1596.     DELETE FROM i_tt_nempil_barang_product WHERE session_id = pSessionId;
  1597.        
  1598. END;   
  1599. $BODY$
  1600.   LANGUAGE plpgsql VOLATILE
  1601.   COST 100;
  1602. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement