Advertisement
tercnem

GTIR ERP

Dec 11th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * modify by TKP, 16 Nov 2015
  3.  * menambahkan qty correction
  4.  *
  5.  * qty missing dan rejected akan kembali ke gudang keluar
  6.  * qty correction akan masuk ke gudang terima
  7.  * qty lost akan tetap dianggap hilang
  8.  *
  9.  */
  10. CREATE OR REPLACE FUNCTION in_submit_transfer_in_receipt(bigint, character varying, character varying)
  11.   RETURNS void AS
  12. $BODY$
  13. DECLARE
  14.     pTenantId           ALIAS FOR $1;
  15.     pSessionId          ALIAS FOR $2;
  16.     pProcessNo          ALIAS FOR $3;
  17.  
  18.     vProcessId      bigint;
  19.     vTrfInReceiptId bigint;
  20.     vUserId         bigint;
  21.     vEmptyId        bigint;
  22.     vDatetime       character varying(14);
  23.     vFlagYes        character varying(1);
  24.     vFlagNo         character varying(1);
  25.     vFlagLost       character varying(1);
  26.     vFlagMissing    character varying(1);
  27.     vFlagRejected   character varying(1);
  28.     vFlagCorrection character varying(1);
  29.     vStatusRelease  character varying(1);
  30.     vStatusDraft    character varying(1);
  31.     vOutletFromId   bigint;
  32.     vOutletToId     bigint;
  33.     vDbVersion      character varying(10);
  34.     vEmptyValue     character varying(1);
  35.    
  36.     vActivityCOA        character varying(20);
  37.     vSignDebit          character varying(1);
  38.     vSignCredit         character varying(1);
  39.     vTypeRate           character varying(3);
  40.     vProductCOA         character varying(10);
  41.     vParentOuId         bigint;
  42.     vJournalTrxId       bigint;
  43.     vCountLost          bigint;
  44.     vGoodsTransferInReceiptLostDocTypeId bigint;
  45.  
  46.     vDocJournal             DOC_JOURNAL%ROWTYPE;
  47.     vOuStructure            OU_BU_STRUCTURE%ROWTYPE;
  48.     result                  RECORD;
  49. BEGIN
  50.    
  51.     vFlagYes := 'Y';
  52.     vFlagNo := 'N';
  53.     vStatusRelease := 'R';
  54.     vStatusDraft := 'D';
  55.     vFlagLost := 'L';
  56.     vFlagMissing := 'M';
  57.     vFlagRejected := 'R';
  58.     vFlagCorrection := 'C';
  59.     vEmptyId := -99;
  60.     vOutletFromId := -99;
  61.     vOutletToId := -99;
  62.     vDbVersion := '1.0';
  63.     vSignDebit := 'D';
  64.     vSignCredit := 'C';
  65.     vTypeRate := 'COM';
  66.     vProductCOA := 'PRODUCT';
  67.     vActivityCOA := 'ACTIVITY';
  68.     vCountLost := 0;
  69.     vEmptyValue := ' ';
  70.     vGoodsTransferInReceiptLostDocTypeId := 537;
  71.    
  72.     DELETE FROM tt_in_product_balance_summary_stock WHERE session_id = pSessionId;
  73.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  74.    
  75.     SELECT A.process_message_id INTO vProcessId
  76.     FROM t_process_message A
  77.     WHERE A.tenant_id = pTenantId AND
  78.         A.process_name = 'in_submit_transfer_in_receipt' AND
  79.         A.process_no = pProcessNo;
  80.        
  81.     SELECT CAST(A.process_parameter_value AS bigint) INTO vTrfInReceiptId
  82.     FROM t_process_parameter A
  83.     WHERE A.process_message_id = vProcessId AND
  84.         A.process_parameter_key = 'trfInReceiptId';
  85.    
  86.     SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  87.     FROM t_process_parameter A
  88.     WHERE A.process_message_id = vProcessId AND
  89.         A.process_parameter_key = 'userId';
  90.  
  91.     SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  92.     FROM t_process_parameter A
  93.     WHERE A.process_message_id = vProcessId AND
  94.         A.process_parameter_key = 'datetime';
  95.  
  96.     /*
  97.      * 1. update status doc in_inventory
  98.      * 2. update flag receipt untuk in_balance_transfer_in_item
  99.      * 3. insert data ke in_log_product_balance_stock (rejected dan missing, correction, dan lost)
  100.      * 4. insert / update data ke in_product_balance_stock (rejected dan missing, correction)
  101.      * 5. buat data log untuk update stok outlet jika ou from nya ini adalah ou outlet
  102.      * 6. buat data log untuk update stok outlet jika ou to nya ini adalah ou outlet
  103.      * 7. buat jurnal (jika ada yg lost)
  104.      */
  105.        
  106.     SELECT f_get_ou_bu_structure(A.ou_from_id) AS ou, f_get_document_journal(vGoodsTransferInReceiptLostDocTypeId) as doc
  107.     FROM in_inventory A
  108.     WHERE A.inventory_id = vTrfInReceiptId INTO result;
  109.    
  110.     vOuStructure := result.ou;
  111.     vDocJournal := result.doc;
  112.        
  113.     /*
  114.      * 1. update status doc in_inventory
  115.      */
  116.     UPDATE in_inventory SET status_doc = vStatusRelease, update_datetime = vDatetime, update_user_id = vUserId
  117.     WHERE inventory_id = vTrfInReceiptId;
  118.    
  119.     /*
  120.      * 2. update flag receipt untuk in_balance_transfer_in_item
  121.      */
  122.     UPDATE in_balance_transfer_in_item
  123.     SET flg_receipt = vFlagYes, update_datetime = vDatetime, update_user_id = vUserId
  124.     WHERE receipt_id = vTrfInReceiptId;
  125.        
  126.     /*
  127.      * 3. a. insert data ke in_log_product_balance_stock (kembalikan stok seperti tidak pernah goods transfer out)
  128.      * missing and rejected
  129.      */
  130.     INSERT INTO in_log_product_balance_stock
  131.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  132.      product_id, product_balance_id, warehouse_id, product_status, base_uom_id, qty,
  133.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  134.     SELECT A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  135.         B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id, SUM(B.qty_realization),
  136.         0, vDatetime, vUserId, vDatetime, vUserId
  137.     FROM in_inventory A, in_inventory_item_receipt B, m_warehouse_ou C
  138.     WHERE A.inventory_id = vTrfInReceiptId AND
  139.         A.inventory_id = B.inventory_id AND
  140.         B.reason_receipt_code IN (vFlagMissing,vFlagRejected) AND
  141.         A.warehouse_from_id = C.warehouse_id
  142.     GROUP BY A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  143.         B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id;
  144.        
  145.     /*
  146.      * 3. b. insert data ke in_log_product_balance_stock untuk yang correction
  147.      * correction
  148.      */
  149.     INSERT INTO in_log_product_balance_stock
  150.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  151.      product_id, product_balance_id, warehouse_id, product_status, base_uom_id, qty,
  152.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  153.     SELECT A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  154.         B.product_id, B.product_balance_id, A.warehouse_to_id, B.product_status, B.base_uom_id, SUM(B.qty_realization),
  155.         0, vDatetime, vUserId, vDatetime, vUserId
  156.     FROM in_inventory A, in_inventory_item_receipt B, m_warehouse_ou C
  157.     WHERE A.inventory_id = vTrfInReceiptId AND
  158.         A.inventory_id = B.inventory_id AND
  159.         B.reason_receipt_code = vFlagCorrection AND
  160.         A.warehouse_to_id = C.warehouse_id
  161.     GROUP BY A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  162.         B.product_id, B.product_balance_id, A.warehouse_to_id, B.product_status, B.base_uom_id;
  163.        
  164.     /*
  165.      * 3. c. insert data ke in_log_product_balance_stock untuk yang lost dengan referensi doc type khusus (qty * -1)
  166.      * lost
  167.      */
  168.     INSERT INTO in_goods_transfer_lost_item_balance
  169.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  170.      product_id, product_balance_id, warehouse_id, product_status, base_uom_id, qty,
  171.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  172.     SELECT A.tenant_id, C.ou_id, vGoodsTransferInReceiptLostDocTypeId, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  173.         B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id, SUM(-1 * B.qty_realization),
  174.         0, vDatetime, vUserId, vDatetime, vUserId
  175.     FROM in_inventory A, in_inventory_item_receipt B, m_warehouse_ou C
  176.     WHERE A.inventory_id = vTrfInReceiptId AND
  177.         A.inventory_id = B.inventory_id AND
  178.         B.reason_receipt_code = vFlagLost AND
  179.         A.warehouse_from_id = C.warehouse_id
  180.     GROUP BY A.tenant_id, C.ou_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  181.              B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id;
  182.        
  183.        
  184.     /*
  185.      * 4. insert / update data ke in_product_balance_stock
  186.      *
  187.      * a. create summary dari in_inventory_item untuk update yg sudah ada di in_product_balance_stock for missing and rejected
  188.      */
  189.     INSERT INTO tt_in_product_balance_summary_stock
  190.             (session_id, tenant_id, inventory_id, warehouse_id, product_id, product_balance_id, product_status, base_uom_id, qty)
  191.     SELECT  pSessionId, A.tenant_id, A.inventory_id, A.warehouse_from_id, B.product_id, B.product_balance_id, B.product_status,
  192.             B.base_uom_id, SUM(B.qty_realization)
  193.     FROM    in_inventory A, in_inventory_item_receipt B
  194.     WHERE   A.inventory_id = B.inventory_id
  195.     AND     A.inventory_id = vTrfInReceiptId
  196.     AND     B.reason_receipt_code IN (vFlagMissing,vFlagRejected)
  197.     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;
  198.    
  199.     /*
  200.      * b. create summary dari in_inventory_item untuk update yg sudah ada di in_product_balance_stock for correction
  201.      *  
  202.      */
  203.     INSERT INTO tt_in_product_balance_summary_stock
  204.             (session_id, tenant_id, inventory_id, warehouse_id, product_id, product_balance_id, product_status, base_uom_id, qty)
  205.     SELECT  pSessionId, A.tenant_id, A.inventory_id, A.warehouse_to_id, B.product_id, B.product_balance_id, B.product_status,
  206.             B.base_uom_id, SUM(B.qty_realization)
  207.     FROM    in_inventory A, in_inventory_item_receipt B
  208.     WHERE   A.inventory_id = B.inventory_id
  209.     AND     A.inventory_id = vTrfInReceiptId
  210.     AND     B.reason_receipt_code = vFlagCorrection
  211.     GROUP BY A.tenant_id, A.inventory_id, A.warehouse_to_id, B.product_id, B.product_balance_id, B.product_status, B.base_uom_id;
  212.        
  213.     -- update product balance stock
  214.     UPDATE in_product_balance_stock SET qty = in_product_balance_stock.qty + A.qty, update_datetime = vDatetime, update_user_id = vUserId,
  215.         version = version + 1
  216.     FROM tt_in_product_balance_summary_stock A
  217.     WHERE A.session_id = pSessionId AND
  218.         A.inventory_id = vTrfInReceiptId AND
  219.         in_product_balance_stock.tenant_id = A.tenant_id AND
  220.         in_product_balance_stock.warehouse_id = A.warehouse_id AND
  221.         in_product_balance_stock.product_id = A.product_id AND
  222.         in_product_balance_stock.product_balance_id = A.product_balance_id AND
  223.         in_product_balance_stock.product_status = A.product_status;
  224.        
  225.     /*
  226.      * c. insert data in_product_balance_stock for missing and rejected
  227.      */
  228.     INSERT INTO in_product_balance_stock
  229.     (tenant_id, warehouse_id, product_id, product_balance_id, product_status, base_uom_id, qty,
  230.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  231.     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),
  232.            0, vDatetime, vUserId, vDatetime, vUserId
  233.     FROM in_inventory A
  234.     INNER JOIN in_inventory_item_receipt B ON A.inventory_id = B.inventory_id
  235.     WHERE A.inventory_id = vTrfInReceiptId AND
  236.           B.reason_receipt_code IN (vFlagMissing,vFlagRejected) AND
  237.     NOT EXISTS (SELECT 1 FROM in_product_balance_stock C
  238.                 WHERE A.tenant_id = C.tenant_id AND
  239.                       A.warehouse_from_id = C.warehouse_id AND
  240.                       B.product_id = C.product_id AND
  241.                       B.product_balance_id = C.product_balance_id AND
  242.                       B.product_status = C.product_status)
  243.     GROUP BY A.tenant_id, A.warehouse_from_id, B.product_id, B.product_balance_id, B.product_status, B.base_uom_id;
  244.    
  245.     /*
  246.      * d. insert data in_product_balance_stock for correction
  247.      */
  248.     INSERT INTO in_product_balance_stock
  249.     (tenant_id, warehouse_id, product_id, product_balance_id, product_status, base_uom_id, qty,
  250.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  251.     SELECT A.tenant_id, A.warehouse_to_id, B.product_id, B.product_balance_id, B.product_status, B.base_uom_id, SUM(B.qty_realization),
  252.            0, vDatetime, vUserId, vDatetime, vUserId
  253.     FROM in_inventory A
  254.     INNER JOIN in_inventory_item_receipt B ON A.inventory_id = B.inventory_id
  255.     WHERE A.inventory_id = vTrfInReceiptId AND
  256.           B.reason_receipt_code = vFlagCorrection AND
  257.     NOT EXISTS (SELECT 1 FROM in_product_balance_stock C
  258.                 WHERE A.tenant_id = C.tenant_id AND
  259.                       A.warehouse_to_id = C.warehouse_id AND
  260.                       B.product_id = C.product_id AND
  261.                       B.product_balance_id = C.product_balance_id AND
  262.                       B.product_status = C.product_status)
  263.     GROUP BY A.tenant_id, A.warehouse_to_id, B.product_id, B.product_balance_id, B.product_status, B.base_uom_id;
  264.    
  265.     /*
  266.      * 5. buat data log untuk update stok outlet jika ou from ini adalah ou outlet
  267.      */
  268.     -- cek dulu apakah ou from yang digunakan ini merupakan ou outlet
  269.     IF EXISTS(SELECT 1 FROM in_inventory A INNER JOIN i_outlet B ON A.ou_from_id = B.ou_id WHERE A.inventory_id = vTrfInReceiptId) THEN
  270.         SELECT B.outlet_id INTO vOutletFromId
  271.         FROM in_inventory A
  272.         INNER JOIN i_outlet B ON A.ou_from_id = B.ou_id
  273.         WHERE A.inventory_id = vTrfInReceiptId;
  274.     END IF;
  275.    
  276.     -- jika outlet, maka harus tulis data log agar outlet bisa lakukan update
  277.     IF vOutletFromId <> vEmptyId THEN
  278.         vDbVersion := f_get_value_system_config_by_param_code(pTenantId, 'DbVersion');
  279.    
  280.         INSERT INTO i_trx_data_log(
  281.             tenant_id, ou_id, doc_date, db_version, type_data,
  282.             mode_log, data_log, version, create_datetime, create_user_id,
  283.             update_datetime, update_user_id)
  284.         SELECT A.tenant_id, A.ou_from_id, A.doc_date, vDbVersion, 'in_log_product_balance_stock',
  285.                'A', '{"tenantId":'||B.tenant_id||',"createDateTime":"'||B.create_datetime||'","baseUomId":'||B.base_uom_id||',"ouId":'||B.ou_id||',"docNo":"'||B.doc_no||'","refId":'||B.ref_id||',"partnerId":'||B.partner_id||',"qty":'||B.qty||',"warehouseId":'||B.warehouse_id||',"version":'||B.version||',"productId":'||B.product_id||',"updateUserId":'||B.update_user_id||',"productStatus":"'||B.product_status||'","docDate":"'||B.doc_date||'","updateDateTime":"'||B.update_datetime||'","productBalanceId":'||B.product_balance_id||',"createUserId":'||B.create_user_id||',"docTypeId":'||B.doc_type_id||'}',
  286.                0, vDatetime, vUserId, vDatetime, vUserId
  287.         FROM in_inventory A
  288.         INNER JOIN in_log_product_balance_stock B ON B.tenant_id = A.tenant_id AND B.ou_id = A.ou_from_id AND B.doc_no = A.doc_no AND B.doc_date = A.doc_date AND B.warehouse_id = A.warehouse_from_id
  289.         WHERE A.inventory_id = vTrfInReceiptId;
  290.     END IF;
  291.    
  292.     /*
  293.      * 6. buat data log untuk update stok outlet jika ou to nya ini adalah ou outlet
  294.      */
  295.     -- cek dulu apakah ou to yang digunakan ini merupakan ou outlet
  296.     IF EXISTS(SELECT 1 FROM in_inventory A INNER JOIN i_outlet B ON A.ou_to_id = B.ou_id WHERE A.inventory_id = vTrfInReceiptId) THEN
  297.         SELECT B.outlet_id INTO vOutletToId
  298.         FROM in_inventory A
  299.         INNER JOIN i_outlet B ON A.ou_from_id = B.ou_id
  300.         WHERE A.inventory_id = vTrfInReceiptId;
  301.     END IF;
  302.    
  303.     -- jika outlet (sudah cek di poin 5), maka harus tulis data log agar outlet bisa lakukan update
  304.     IF vOutletToId <> vEmptyId THEN
  305.         vDbVersion := f_get_value_system_config_by_param_code(pTenantId, 'DbVersion');
  306.    
  307.         INSERT INTO i_trx_data_log(
  308.             tenant_id, ou_id, doc_date, db_version, type_data,
  309.             mode_log, data_log, version, create_datetime, create_user_id,
  310.             update_datetime, update_user_id)
  311.         SELECT A.tenant_id, A.ou_to_id, A.doc_date, vDbVersion, 'in_log_product_balance_stock',
  312.                'A', '{"tenantId":'||B.tenant_id||',"createDateTime":"'||B.create_datetime||'","baseUomId":'||B.base_uom_id||',"ouId":'||B.ou_id||',"docNo":"'||B.doc_no||'","refId":'||B.ref_id||',"partnerId":'||B.partner_id||',"qty":'||B.qty||',"warehouseId":'||B.warehouse_id||',"version":'||B.version||',"productId":'||B.product_id||',"updateUserId":'||B.update_user_id||',"productStatus":"'||B.product_status||'","docDate":"'||B.doc_date||'","updateDateTime":"'||B.update_datetime||'","productBalanceId":'||B.product_balance_id||',"createUserId":'||B.create_user_id||',"docTypeId":'||B.doc_type_id||'}',
  313.                0, vDatetime, vUserId, vDatetime, vUserId
  314.         FROM in_inventory A
  315.         INNER JOIN in_log_product_balance_stock B ON B.tenant_id = A.tenant_id AND B.ou_id = A.ou_to_id AND B.doc_no = A.doc_no AND B.doc_date = A.doc_date AND B.warehouse_id = A.warehouse_to_id
  316.         WHERE A.inventory_id = vTrfInReceiptId;
  317.     END IF;
  318.    
  319.    
  320.     /*
  321.      * journal goods transfer in receipt
  322.      * Credit Inventory (Stock = PRODUCT_STOCK)
  323.      * Debit Lost Stock (lost amount = LOST_STOCK)
  324.      *
  325.      * Mapping ke account activity gl
  326.      */
  327.     /*
  328.      * membuat data transaksi jurnal :
  329.      * 1. buat admin
  330.      * 2. buat temlate jurnal
  331.      */    
  332.     SELECT COUNT(1) INTO vCountLost
  333.     FROM in_inventory_item_receipt A
  334.     WHERE A.tenant_id = pTenantId
  335.     AND A.inventory_id = vTrfInReceiptId
  336.     AND A.reason_receipt_code = vFlagLost;
  337.  
  338.     IF vCountLost > 0 THEN
  339.         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)
  340.         FROM in_inventory A
  341.         WHERE A.inventory_id = vTrfInReceiptId;
  342.  
  343.         SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  344.  
  345.         INSERT INTO gl_journal_trx
  346.         (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  347.         ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,  
  348.         ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  349.         "version", create_datetime, create_user_id, update_datetime, update_user_id)
  350.         SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, vGoodsTransferInReceiptLostDocTypeId, A.inventory_id, A.doc_no, A.doc_date,
  351.             (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,
  352.             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',
  353.             0, vDatetime, vUserId, vDatetime, vUserId
  354.         FROM in_inventory A
  355.         WHERE A.inventory_id = vTrfInReceiptId;
  356.  
  357.         INSERT INTO tt_journal_trx_item
  358.         (session_id, tenant_id, journal_trx_id, line_no,
  359.         ref_doc_type_id, ref_id,
  360.         partner_id, product_id, cashbank_id, ou_rc_id,
  361.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  362.         coa_id, curr_code, qty, uom_id,
  363.         amount, journal_date, type_rate,
  364.         numerator_rate, denominator_rate, journal_desc, remark)
  365.         SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  366.             vGoodsTransferInReceiptLostDocTypeId, B.inventory_item_receipt_id,
  367.             A.partner_id, B.product_id, vEmptyId, vEmptyId,
  368.             vEmptyId, vSignCredit, vProductCOA, vEmptyId,
  369.             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,
  370.             0, A.doc_date, vTypeRate,
  371.             1, 1, 'PRODUCT_STOCK', B.remark
  372.         FROM in_inventory A, in_inventory_item_receipt B
  373.         WHERE A.inventory_id = vTrfInReceiptId AND
  374.             A.inventory_id = B.inventory_id AND
  375.             B.reason_receipt_code = vFlagLost;
  376.  
  377.         INSERT INTO tt_journal_trx_item
  378.         (session_id, tenant_id, journal_trx_id, line_no,
  379.         ref_doc_type_id, ref_id,
  380.         partner_id, product_id, cashbank_id, ou_rc_id,
  381.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  382.         coa_id, curr_code, qty, uom_id,
  383.         amount, journal_date, type_rate,
  384.         numerator_rate, denominator_rate, journal_desc, remark)
  385.         SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  386.             vEmptyId, vEmptyId,
  387.             vEmptyId, vEmptyId, vEmptyId, A.ou_rc_id,
  388.             A.segment_id, vSignDebit, vActivityCOA, A.activity_gl_id,
  389.             D.coa_id, f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), 0, vEmptyId,
  390.             0, A.doc_date, vTypeRate,
  391.             1, 1, 'LOST_STOCK', vEmptyValue
  392.         FROM in_inventory A, in_inventory_item_receipt B, m_activity_gl D
  393.         WHERE A.inventory_id = vTrfInReceiptId AND
  394.             A.inventory_id = B.inventory_id AND
  395.             A.activity_gl_id = D.activity_gl_id AND
  396.             B.reason_receipt_code = vFlagLost
  397.         GROUP BY A.tenant_id, A.segment_id, A.ou_rc_id, D.coa_id, A.doc_date, A.activity_gl_id;
  398.  
  399.         INSERT INTO gl_journal_trx_item
  400.         (tenant_id, journal_trx_id, line_no,
  401.         ref_doc_type_id, ref_id,
  402.         partner_id, product_id, cashbank_id, ou_rc_id,
  403.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  404.         coa_id, curr_code, qty, uom_id,
  405.         amount, journal_date, type_rate,
  406.         numerator_rate, denominator_rate, journal_desc, remark,
  407.         "version", create_datetime, create_user_id, update_datetime, update_user_id)
  408.         SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  409.             A.ref_doc_type_id, A.ref_id,
  410.             A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  411.             A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  412.             A.coa_id, A.curr_code, A.qty, A.uom_id,
  413.             A.amount, A.journal_date, A.type_rate,
  414.             A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  415.             0, vDatetime, vUserId, vDatetime, vUserId
  416.         FROM tt_journal_trx_item A
  417.         WHERE A.session_id = pSessionId AND
  418.             A.journal_desc = 'PRODUCT_STOCK';
  419.  
  420.         INSERT INTO gl_journal_trx_mapping
  421.         (tenant_id, journal_trx_id, line_no,
  422.         ref_doc_type_id, ref_id,
  423.         partner_id, product_id, cashbank_id, ou_rc_id,
  424.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  425.         coa_id, curr_code, qty, uom_id,
  426.         amount, journal_date, type_rate,
  427.         numerator_rate, denominator_rate, journal_desc, remark,
  428.         "version", create_datetime, create_user_id, update_datetime, update_user_id)
  429.         SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  430.             A.ref_doc_type_id, A.ref_id,
  431.             A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  432.             A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  433.             A.coa_id, A.curr_code, A.qty, A.uom_id,
  434.             A.amount, A.journal_date, A.type_rate,
  435.             A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  436.             0, vDatetime, vUserId, vDatetime, vUserId
  437.         FROM tt_journal_trx_item A
  438.         WHERE A.session_id = pSessionId AND
  439.             A.journal_desc = 'LOST_STOCK';
  440.     END IF;
  441.  
  442.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  443.     DELETE FROM tt_in_product_balance_summary_stock WHERE session_id = pSessionId;
  444.    
  445. END;
  446. $BODY$
  447.   LANGUAGE plpgsql VOLATILE
  448.   COST 100;
  449.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement