Advertisement
aadddrr

f_cleanup_order_blibli

Aug 3rd, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Adrian, Aug 3, 2018
  3.  */
  4.  
  5. CREATE OR REPLACE FUNCTION f_cleanup_order_blibli(bigint, bigint, character varying)
  6.     RETURNS void AS
  7. $BODY$
  8. DECLARE
  9.     pOrderId            ALIAS FOR $1;
  10.     pUserId             ALIAS FOR $2;
  11.     pDatetime           ALIAS FOR $3;
  12.    
  13.     vChannelId          bigint;
  14.     vChannelCode        character varying;
  15.     vEmptyString        character varying(1);
  16.     vKeyLastDate        character varying;
  17.     vKeyLastItemNo      character varying;
  18.     vKeyLastNo          character varying;
  19. BEGIN
  20.  
  21.     vEmptyString := '';
  22.     vKeyLastDate := 'blibli.newOrder.lastDate';
  23.     vKeyLastItemNo := 'blibli.newOrder.lastItemNo';
  24.     vKeyLastNo := 'blibli.newOrder.lastNo';
  25.     vChannelCode := 'BLIBLI';
  26.    
  27.     SELECT channel_id FROM m_channel WHERE channel_code = vChannelCode INTO vChannelId;
  28.    
  29.     --Update stock available
  30.     WITH tt_product_qty AS (
  31.         SELECT A.product_id, SUM(A.qty) AS qty
  32.         FROM sdp_order_item A
  33.         INNER JOIN sdp_order B ON A.order_id = B.order_id
  34.         WHERE B.order_id >= pOrderId
  35.             AND B.channel_id = vChannelId
  36.         GROUP BY A.product_id
  37.     )
  38.     UPDATE sdp_product_balance_available_stock A
  39.     SET qty = A.qty + B.qty,
  40.         update_datetime = pDatetime,
  41.         update_user_id = pUserId
  42.     FROM tt_product_qty B
  43.     WHERE A.product_id = B.product_id;
  44.    
  45.     --Hapus log stock
  46.     DELETE FROM sdp_log_product_balance_stock Z WHERE EXISTS (
  47.         SELECT 1
  48.         FROM sdp_order_item A
  49.         INNER JOIN sdp_order B ON A.order_id = B.order_id
  50.         WHERE B.order_id >= pOrderId
  51.             AND B.channel_id = vChannelId
  52.             AND Z.ref_id = A.order_id
  53.             AND Z.ref_doc_no = B.order_no
  54.     );
  55.  
  56.     --Hapus SDP Order Shipment
  57.     DELETE FROM sdp_order_shipment A WHERE EXISTS (
  58.         SELECT 1 FROM sdp_order B
  59.         WHERE B.order_id >= pOrderId
  60.             AND B.channel_id = vChannelId
  61.             AND A.order_id = B.order_id
  62.     );
  63.    
  64.     --Hapus SDP Order Item
  65.     DELETE FROM sdp_order_item A WHERE EXISTS (
  66.         SELECT 1 FROM sdp_order B
  67.         WHERE B.order_id >= pOrderId
  68.             AND B.channel_id = vChannelId
  69.             AND A.order_id = B.order_id
  70.     );
  71.    
  72.     --Hapus SDP Order Ext
  73.     DELETE FROM sdp_order_ext A WHERE EXISTS (
  74.         SELECT 1 FROM sdp_order B
  75.         WHERE B.order_id >= pOrderId
  76.             AND B.channel_id = vChannelId
  77.             AND A.order_id = B.order_id
  78.     );
  79.    
  80.     --Hapus SDP Order
  81.     DELETE FROM sdp_order A WHERE A.order_id >= pOrderId AND A.channel_id = vChannelId;  
  82.  
  83.     --Update system config
  84.     PERFORM f_set_system_config(pUserId, pDatetime, A.tenant_id, vKeyLastDate, vEmptyString)
  85.     FROM t_tenant A;
  86.    
  87.     PERFORM f_set_system_config(pUserId, pDatetime, A.tenant_id, vKeyLastItemNo, vEmptyString)
  88.     FROM t_tenant A;
  89.    
  90.     PERFORM f_set_system_config(pUserId, pDatetime, A.tenant_id, vKeyLastNo, vEmptyString)
  91.     FROM t_tenant A;
  92.    
  93. END;   
  94. $BODY$
  95.   LANGUAGE plpgsql VOLATILE
  96.   COST 100;
  97. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement