Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION in_submit_put_away(bigint, character varying, character varying)
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE
  5.     pTenantId           ALIAS FOR $1;
  6.     pSessionId          ALIAS FOR $2;
  7.     pProcessNo          ALIAS FOR $3;
  8.  
  9.     vProcessId          bigint;
  10.     vId                 bigint;
  11.     vUserId             bigint;
  12.     vDatetime           character varying(14);
  13.     vFlagNo             character varying(1);
  14.     vFlagYes            character varying(1);
  15.     vStatusRelease      character varying(1);
  16. BEGIN
  17.    
  18.     vFlagNo := 'N';
  19.     vFlagYes := 'Y';
  20.     vStatusRelease := 'R';
  21.    
  22.     SELECT A.process_message_id INTO vProcessId
  23.     FROM t_process_message A
  24.     WHERE A.tenant_id = pTenantId AND
  25.         A.process_name = 'in_submit_put_away' AND
  26.         A.process_no = pProcessNo;
  27.        
  28.     SELECT CAST(A.process_parameter_value AS bigint) INTO vId
  29.     FROM t_process_parameter A
  30.     WHERE A.process_message_id = vProcessId AND
  31.         A.process_parameter_key = 'id';
  32.    
  33.     SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  34.     FROM t_process_parameter A
  35.     WHERE A.process_message_id = vProcessId AND
  36.         A.process_parameter_key = 'userId';
  37.  
  38.     SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  39.     FROM t_process_parameter A
  40.     WHERE A.process_message_id = vProcessId AND
  41.         A.process_parameter_key = 'datetime';
  42.        
  43.     ------------------------------- ini bagian warehouse from --------------------------------------   
  44.        
  45.     UPDATE in_inventory SET status_doc = vStatusRelease, update_datetime = vDatetime, update_user_id = vUserId
  46.     WHERE inventory_id = vId;
  47.    
  48.     INSERT INTO in_log_product_balance_stock
  49.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  50.      product_id, product_balance_id, warehouse_id, product_status, base_uom_id, qty,
  51.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  52.     SELECT A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  53.         B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id, SUM(B.qty_realization) * -1,
  54.         0, vDatetime, vUserId, vDatetime, vUserId
  55.     FROM in_inventory A, in_inventory_item B, m_warehouse_ou C, m_product_custom D
  56.     WHERE A.inventory_id = vId AND
  57.         A.inventory_id = B.inventory_id AND
  58.         A.warehouse_from_id = C.warehouse_id
  59.         AND B.product_id = D.product_id
  60.         AND D.flg_buy_konsinyasi = vFlagNo
  61.     GROUP BY A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  62.         B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id;
  63.    
  64.     INSERT INTO in_log_product_consignment_balance_stock(
  65.         tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  66.         product_id, warehouse_id, product_balance_id, product_status, base_uom_id, qty,
  67.         version, create_datetime, create_user_id, update_datetime, update_user_id)
  68.     SELECT A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  69.         B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id, SUM(B.qty_realization) * -1,
  70.         0, vDatetime, vUserId, vDatetime, vUserId
  71.     FROM in_inventory A, in_inventory_item B, m_warehouse_ou C, m_product_custom D
  72.     WHERE A.inventory_id = vId AND
  73.         A.inventory_id = B.inventory_id AND
  74.         A.warehouse_from_id = C.warehouse_id
  75.         AND B.product_id = D.product_id
  76.         AND D.flg_buy_konsinyasi = vFlagYes
  77.     GROUP BY A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  78.         B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id;
  79.    
  80.     -- INSERT kan ke in_balance_transfer_out langsung dengan flg_real = Y
  81.     INSERT INTO in_balance_transfer_out
  82.     (inventory_id, tenant_id, ou_id, warehouse_id, flg_real, remark,
  83.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  84.     SELECT A.inventory_id, A.tenant_id, A.ou_to_id, A.warehouse_to_id, vFlagYes, A.remark,
  85.         0, vDatetime, vUserId, vDatetime, vUserId
  86.     FROM in_inventory A
  87.     WHERE A.inventory_id = vId;
  88.    
  89.     -----------------------------------------------------------------------------------------
  90.     -------------------------------ini bagian warehouse to-----------------------------------
  91.    
  92.    
  93.     DELETE FROM tt_in_product_balance_summary_stock WHERE session_id = pSessionId;
  94.  
  95.         /*
  96.      * 1.insert data ke in_log_product_balance_stock
  97.      */
  98.     INSERT INTO in_log_product_balance_stock
  99.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  100.      product_id, product_balance_id, warehouse_id, product_status, base_uom_id, qty,
  101.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  102.     SELECT A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  103.         B.product_id, B.product_balance_id, A.warehouse_to_id, B.product_status, B.base_uom_id, SUM(B.qty_realization),
  104.         0, vDatetime, vUserId, vDatetime, vUserId
  105.     FROM in_inventory A, in_inventory_item B, m_warehouse_ou C, m_product_custom D
  106.     WHERE A.inventory_id = vId AND
  107.         A.inventory_id = B.inventory_id AND
  108.         A.warehouse_to_id = C.warehouse_id AND
  109.         B.product_id = D.product_id AND
  110.         D.flg_buy_konsinyasi = vFlagNo
  111.     GROUP BY A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  112.         B.product_id, B.product_balance_id, A.warehouse_to_id, B.product_status, B.base_uom_id;
  113.    
  114.     /*
  115.      * insert data ke in_log_product_consignment_balance_stock
  116.      */
  117.     INSERT INTO in_log_product_consignment_balance_stock(
  118.         tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  119.         product_id, warehouse_id, product_balance_id, product_status, base_uom_id, qty,
  120.         version, create_datetime, create_user_id, update_datetime, update_user_id)
  121.     SELECT A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  122.         B.product_id, A.warehouse_to_id, B.product_balance_id, B.product_status, B.base_uom_id, SUM(B.qty_realization),
  123.         0, vDatetime, vUserId, vDatetime, vUserId
  124.     FROM in_inventory A, in_inventory_item B, m_warehouse_ou C, m_product_custom D
  125.     WHERE A.inventory_id = vId AND
  126.         A.inventory_id = B.inventory_id AND
  127.         A.warehouse_to_id = C.warehouse_id AND
  128.         B.product_id = D.product_id AND
  129.         D.flg_buy_konsinyasi = vFlagYes
  130.     GROUP BY A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  131.         B.product_id, B.product_balance_id, A.warehouse_to_id, B.product_status, B.base_uom_id;
  132.        
  133.     /*
  134.      * create summary dari in_inventory_item untuk update yg sudah ada di in_product_balance_stock
  135.      */
  136.     INSERT INTO tt_in_product_balance_summary_stock
  137.             (session_id, tenant_id, inventory_id, warehouse_id, product_id, product_balance_id, product_status, base_uom_id, qty)
  138.     SELECT  pSessionId, A.tenant_id, A.inventory_id, A.warehouse_to_id, B.product_id, B.product_balance_id, B.product_status,
  139.             B.base_uom_id, SUM(B.qty_realization)
  140.     FROM    in_inventory A, in_inventory_item B
  141.     WHERE   A.inventory_id = B.inventory_id
  142.     AND     A.inventory_id = vId
  143.     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;
  144.        
  145.     UPDATE in_product_balance_stock SET qty = in_product_balance_stock.qty + A.qty, update_datetime = vDatetime, update_user_id = vUserId
  146.     FROM tt_in_product_balance_summary_stock A
  147.     WHERE A.session_id = pSessionId AND
  148.         A.inventory_id = vId AND
  149.         in_product_balance_stock.tenant_id = A.tenant_id AND
  150.         in_product_balance_stock.warehouse_id = A.warehouse_id AND
  151.         in_product_balance_stock.product_id = A.product_id AND
  152.         in_product_balance_stock.product_balance_id = A.product_balance_id AND
  153.         in_product_balance_stock.product_status = A.product_status;
  154.        
  155.     /*
  156.      * insert data in_product_balance_stock
  157.      */
  158.     INSERT INTO in_product_balance_stock
  159.     (tenant_id, warehouse_id, product_id, product_balance_id, product_status, base_uom_id, qty,
  160.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  161.     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),
  162.            0, vDatetime, vUserId, vDatetime, vUserId
  163.     FROM in_inventory A
  164.     INNER JOIN in_inventory_item B ON A.inventory_id = B.inventory_id
  165.     WHERE A.inventory_id = vId AND
  166.     NOT EXISTS (SELECT 1 FROM in_product_balance_stock C
  167.                 WHERE A.tenant_id = C.tenant_id AND
  168.                       A.warehouse_to_id = C.warehouse_id AND
  169.                       B.product_id = C.product_id AND
  170.                       B.product_balance_id = C.product_balance_id AND
  171.                       B.product_status = C.product_status)
  172.     GROUP BY A.tenant_id, A.warehouse_to_id, B.product_id, B.product_balance_id, B.product_status, B.base_uom_id;
  173.  
  174.  
  175.     INSERT INTO in_balance_transfer_in_item
  176.     (inventory_item_id, tenant_id, inventory_id, line_no, ou_from_id, ou_to_id, qty_out, qty_in,
  177.      base_uom_id, warehouse_from_id, warehouse_to_id, product_id, product_balance_id, product_status,
  178.      ref_doc_type_id, ref_id, ref_item_id, flg_receipt, receipt_id,
  179.      version, create_datetime, create_user_id, update_datetime, update_user_id)
  180.     SELECT A.inventory_item_id, A.tenant_id, A.inventory_id, A.line_no, B.ou_from_id, B.ou_to_id, A.qty_request, A.qty_realization,
  181.            A.base_uom_id, B.warehouse_from_id, B.warehouse_to_id, A.product_id, A.product_balance_id, A.product_status,
  182.            A.ref_doc_type_id, A.ref_id, A.ref_item_id, vFlagNo, vEmptyId,
  183.            0, vDatetime, vUserId, vDatetime, vUserId
  184.     FROM in_inventory_item A
  185.     INNER JOIN in_inventory B ON A.inventory_id = B.inventory_id
  186.     WHERE B.inventory_id = vId
  187.     AND A.qty_request <> A.qty_realization;
  188.    
  189.     INSERT INTO in_balance_transfer_in_item
  190.     (inventory_item_id, tenant_id, inventory_id, line_no, ou_from_id, ou_to_id, qty_out, qty_in,
  191.      base_uom_id, warehouse_from_id, warehouse_to_id, product_id, product_balance_id, product_status,
  192.      ref_doc_type_id, ref_id, ref_item_id, flg_receipt, receipt_id,
  193.      version, create_datetime, create_user_id, update_datetime, update_user_id)
  194.     SELECT A.inventory_item_id, A.tenant_id, A.inventory_id, A.line_no, B.ou_from_id, B.ou_to_id, A.qty_request, A.qty_realization,
  195.            A.base_uom_id, B.warehouse_from_id, B.warehouse_to_id, A.product_id, A.product_balance_id, A.product_status,
  196.            A.ref_doc_type_id, A.ref_id, A.ref_item_id, vFlagYes, vEmptyId,
  197.            0, vDatetime, vUserId, vDatetime, vUserId
  198.     FROM in_inventory_item A
  199.     INNER JOIN in_inventory B ON A.inventory_id = B.inventory_id
  200.     WHERE B.inventory_id = vId
  201.     AND A.qty_request = A.qty_realization;
  202.    
  203.    
  204.     DELETE FROM tt_in_product_balance_summary_stock WHERE session_id = pSessionId;
  205.    
  206.    
  207. END;
  208. $BODY$
  209.   LANGUAGE plpgsql VOLATILE
  210.   COST 100;
  211.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement