Advertisement
aadddrr

Untitled

Jun 13th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- MOdified by Adrian, June 13, 2017, ambil partner_id dari in_inventory pada insert/update in_borrowed_product_balance_stock
  2.  
  3. CREATE OR REPLACE FUNCTION in_submit_delivery_goods_borrowing(bigint, character varying, character varying)
  4.   RETURNS void AS
  5. $BODY$
  6. DECLARE
  7.     pTenantId           ALIAS FOR $1;
  8.     pSessionId          ALIAS FOR $2;
  9.     pProcessNo          ALIAS FOR $3;
  10.  
  11.     vProcessId      bigint;
  12.     vBorrowId           bigint;
  13.     vReqDGBDocTypeId    bigint;
  14.     vUserId         bigint;
  15.     vDatetime       character varying(14);
  16.     vFlagNo         character varying(1);
  17.     vStatusRelease  character varying(1);
  18.     vStatusFinal    character varying(1);
  19. BEGIN
  20.    
  21.     vFlagNo := 'N';
  22.     vStatusRelease := 'R';
  23.     vStatusFinal := 'F';
  24.     vReqDGBDocTypeId := 553;
  25.    
  26.     SELECT A.process_message_id INTO vProcessId
  27.     FROM t_process_message A
  28.     WHERE A.tenant_id = pTenantId AND
  29.         A.process_name = 'in_submit_delivery_goods_borrowing' AND
  30.         A.process_no = pProcessNo;
  31.        
  32.     SELECT CAST(A.process_parameter_value AS bigint) INTO vBorrowId
  33.     FROM t_process_parameter A
  34.     WHERE A.process_message_id = vProcessId AND
  35.         A.process_parameter_key = 'deliveryGoodsBorrowingId';
  36.    
  37.     SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  38.     FROM t_process_parameter A
  39.     WHERE A.process_message_id = vProcessId AND
  40.         A.process_parameter_key = 'userId';
  41.  
  42.     SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  43.     FROM t_process_parameter A
  44.     WHERE A.process_message_id = vProcessId AND
  45.         A.process_parameter_key = 'datetime';
  46.        
  47.     /*
  48.      * 1.update status doc in_inventory
  49.      * 2.insert data ke in_log_product_balance_stock --> untuk barang yang keluar
  50.      * 3.add saldo stok barang pinjaman
  51.      * 4.add log saldo stok barang pinjaman
  52.      * 5.update status item di in_balance_req_delivery_goods_borrowing jadi 'R'
  53.      * 6.update status item di in_balance_req_delivery_goods_borrowing jadi 'F' kalo udah full qty nya
  54.      */
  55.        
  56.     UPDATE in_inventory SET status_doc = vStatusRelease, update_datetime = vDatetime, update_user_id = vUserId
  57.     WHERE inventory_id = vBorrowId;
  58.  
  59.     INSERT INTO in_log_product_balance_stock
  60.     (tenant_id, ou_id, doc_type_id, ref_id, doc_no, doc_date, partner_id,
  61.      product_id, product_balance_id, warehouse_id, product_status, base_uom_id, qty,
  62.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  63.     SELECT A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  64.         B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id, SUM(B.qty_realization) * -1,
  65.         0, vDatetime, vUserId, vDatetime, vUserId
  66.     FROM in_inventory A, in_inventory_item B, m_warehouse_ou C
  67.     WHERE A.inventory_id = vBorrowId AND
  68.         A.inventory_id = B.inventory_id AND
  69.         A.warehouse_from_id = C.warehouse_id
  70.     GROUP BY A.tenant_id, C.ou_id, A.doc_type_id, A.inventory_id, A.doc_no, A.doc_date, A.partner_id,
  71.         B.product_id, B.product_balance_id, A.warehouse_from_id, B.product_status, B.base_uom_id;
  72.                
  73.     INSERT INTO in_borrowed_product_balance_stock
  74.     (tenant_id, ou_id, partner_id, partner_ship_address_id,
  75.     product_id, product_balance_id, product_status,
  76.     base_uom_id, qty,
  77.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  78.     SELECT A.tenant_id, A.ou_from_id, A.partner_id, A.partner_id,
  79.         B.product_id, B.product_balance_id, B.product_status,
  80.         B.base_uom_id, 0,
  81.         0, vDatetime, vUserId, vDatetime, vUserId
  82.     FROM in_inventory A, in_inventory_item B, in_inventory_borrow C
  83.     WHERE A.inventory_id = vBorrowId AND
  84.         A.inventory_id = B.inventory_id AND
  85.         A.inventory_id = C.inventory_id AND
  86.         NOT EXISTS (
  87.             SELECT 1
  88.             FROM in_borrowed_product_balance_stock Z
  89.             WHERE A.tenant_id = Z.tenant_id AND
  90.                 A.ou_from_id = Z.ou_id AND
  91.                 A.partner_id = Z.partner_id AND
  92.                 A.partner_id = Z.partner_ship_address_id AND
  93.                 B.product_id = Z.product_id AND
  94.                 B.product_balance_id = Z.product_balance_id AND
  95.                 B.product_status = Z.product_status
  96.         );
  97.                
  98.     UPDATE in_borrowed_product_balance_stock
  99.         SET qty = in_borrowed_product_balance_stock.qty + B.qty_realization,
  100.             version = in_borrowed_product_balance_stock.version + 1,
  101.             update_datetime = vDateTime, update_user_id = vUserId
  102.     FROM in_inventory A, in_inventory_item B, in_inventory_borrow C
  103.     WHERE A.inventory_id = vBorrowId AND
  104.         A.inventory_id = B.inventory_id AND
  105.         A.inventory_id = C.inventory_id AND
  106.         A.tenant_id = in_borrowed_product_balance_stock.tenant_id AND
  107.         A.ou_from_id = in_borrowed_product_balance_stock.ou_id AND
  108.         A.partner_id = in_borrowed_product_balance_stock.partner_id AND
  109.         A.partner_id = in_borrowed_product_balance_stock.partner_ship_address_id AND
  110.         B.product_id = in_borrowed_product_balance_stock.product_id AND
  111.         B.product_balance_id = in_borrowed_product_balance_stock.product_balance_id AND
  112.         B.product_status = in_borrowed_product_balance_stock.product_status;
  113.        
  114.     INSERT INTO in_log_borrowed_product_balance_stock
  115.     (tenant_id, ou_id, doc_type_id, ref_id,
  116.     doc_no, doc_date, partner_id, partner_ship_address_id,
  117.     product_id, product_balance_id, product_status,
  118.     base_uom_id, qty,
  119.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  120.     SELECT A.tenant_id, A.ou_from_id, A.doc_type_id, A.inventory_id,
  121.         A.doc_no, A.doc_date, C.partner_ship_to_id, C.partner_ship_address_id,
  122.         B.product_id, B.product_balance_id, B.product_status,
  123.         B.base_uom_id, B.qty_realization,
  124.         0, vDatetime, vUserId, vDatetime, vUserId
  125.     FROM in_inventory A, in_inventory_item B, in_inventory_borrow C
  126.     WHERE A.inventory_id = vBorrowId AND
  127.         A.inventory_id = B.inventory_id AND
  128.         A.inventory_id = C.inventory_id;
  129.    
  130.     INSERT INTO in_inventory_borrow_balance_item
  131.     (inventory_item_id, tenant_id, inventory_id,
  132.     partner_id, partner_ship_address_id, ou_id,  
  133.     qty_do, qty_return, qty_sales, due_date, base_uom_id, status_item,
  134.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  135.     SELECT B.inventory_item_id, A.tenant_id, A.inventory_id,
  136.         C.partner_ship_to_id, C.partner_ship_address_id, A.ou_from_id,
  137.         B.qty_realization, 0, 0, C.due_date, B.base_uom_id, vStatusRelease,
  138.         0, vDatetime, vUserId, vDatetime, vUserId
  139.     FROM in_inventory A, in_inventory_item B, in_inventory_borrow C
  140.     WHERE A.inventory_id = vBorrowId AND
  141.         A.inventory_id = B.inventory_id AND
  142.         A.inventory_id = C.inventory_id;
  143.  
  144.     --5.update status item di in_balance_req_delivery_goods_borrowing
  145.     UPDATE in_balance_req_delivery_goods_borrowing SET status_item = vStatusRelease, update_datetime = vDatetime, update_user_id = vUserId
  146.     FROM in_inventory A
  147.     JOIN in_inventory_item B ON a.inventory_id = b.inventory_id
  148.     WHERE B.ref_id = in_balance_req_delivery_goods_borrowing.request_delivery_goods_borrowing_item_id
  149.         AND A.ref_id = in_balance_req_delivery_goods_borrowing.request_delivery_goods_borrowing_id
  150.         AND A.ref_doc_type_id = vReqDGBDocTypeId
  151.         AND A.inventory_id = vBorrowId;
  152.    
  153.     --6.update status item di in_balance_req_delivery_goods_borrowing jadi 'F' kalo udah full qty nya
  154.     UPDATE in_balance_req_delivery_goods_borrowing SET status_item = vStatusFinal
  155.     FROM in_inventory A
  156.     JOIN in_inventory_item B ON a.inventory_id = b.inventory_id
  157.     WHERE B.ref_id = in_balance_req_delivery_goods_borrowing.request_delivery_goods_borrowing_item_id
  158.         AND A.ref_id = in_balance_req_delivery_goods_borrowing.request_delivery_goods_borrowing_id
  159.         AND A.ref_doc_type_id = vReqDGBDocTypeId
  160.         AND A.inventory_id = vBorrowId
  161.         AND in_balance_req_delivery_goods_borrowing.qty_request = in_balance_req_delivery_goods_borrowing.qty_realization;
  162.  
  163.        
  164. END;
  165. $BODY$
  166.   LANGUAGE plpgsql VOLATILE
  167.   COST 100;
  168.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement