Advertisement
Kwards

Untitled

Sep 19th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION f_get_inquiry_stock_qty_for_paloma(character varying, bigint, bigint, bigint, bigint, bigint, character varying, character varying, character varying, character varying, bigint, bigint)
  2.   RETURNS SETOF refcursor AS
  3. $BODY$
  4. DECLARE
  5.     pRefQtyDetail       REFCURSOR := 'refQtyDetail';
  6.     pSessionId          ALIAS FOR $1;
  7.     pTenantId           ALIAS FOR $2;
  8.     pOuId               ALIAS FOR $3;
  9.     pBrandId            ALIAS FOR $4;
  10.     pCtgrProductId      ALIAS FOR $5;
  11.     pSubCtgrProductId   ALIAS FOR $6;
  12.     pProductCode            ALIAS FOR $7;
  13.     pProductName            ALIAS FOR $8;
  14.     pShowData           ALIAS FOR $9;
  15.     pWarehouseName      ALIAS FOR $10;
  16.     pLimit              ALIAS FOR $11;
  17.     pOffset             ALIAS FOR $12;
  18.    
  19.     vEmptyId            bigint := -99;
  20.    
  21.     vEmptyIdString      character varying := '-99';
  22.     vEmptyString        character varying := '';
  23.     vFlagYes            character varying := 'Y';
  24.    
  25.     vFilterBrandId            text := '';
  26.     vFilterCtgrProductId      text := '';
  27.     vFilterSubCtgrProductId   text := '';
  28.     vFilterProductCode        text := '';
  29.     vFilterProductName        text := '';  
  30.     vFilterProductCode2       text := '';
  31.     vFilterProductName2       text := '';
  32.     vFilterWarehouseName      text := '';
  33.     vFilterShowData           text := '';
  34.     vFilterLimit              text := '';
  35.     vFilterOffset             text := '';      
  36.     vUpperProductCode         text := UPPER(pProductCode);
  37.     vUpperProductName         text := UPPER(pProductName);
  38.     vUpperWarehouseName       text := UPPER(pWarehouseName);
  39.  
  40. BEGIN
  41.     -- hapus tabel penampung data stok produk semua warehouse tanpa filter warehousename
  42.     DELETE FROM tr_get_inquiry_stock_qty WHERE session_id = pSessionId;
  43.     -- hapus tabel penampung data stok produk semua warehouse dengan filter warehousename
  44.     DELETE FROM tr_get_inquiry_stock_all_qty WHERE session_id = pSessionId;
  45.     -- hapus tabel penampung data warehouse
  46.     DELETE FROM tr_warehouse_inquiry_stock WHERE session_id = pSessionId;
  47.     -- hapus tabel penampung data product    
  48.     DELETE FROM tr_product_inquiry_stock WHERE session_id = pSessionId;
  49.    
  50.     /**
  51.      * Ambil dari table saldo filter berdasarkan ,
  52.      * Tenant, OU, Brand, kategory, subkategory, produk , dan qty
  53.      */
  54.    
  55.     IF (pBrandId <> vEmptyId) THEN
  56.         vFilterBrandId := ' AND E.brand_id = ' || pBrandId;
  57.     END IF;
  58.    
  59.     IF (pCtgrProductId <> vEmptyId) THEN
  60.         vFilterCtgrProductId := ' AND E.ctgr_product_id = ' || pCtgrProductId;
  61.     END IF;
  62.    
  63.     IF (pSubCtgrProductId <> vEmptyId) THEN
  64.         vFilterSubCtgrProductId := ' AND E.sub_ctgr_product_id = ' || pSubCtgrProductId;
  65.     END IF;
  66.    
  67.     IF (pProductCode <> vEmptyString) THEN
  68.         vFilterProductCode := ' AND UPPER(E.product_code) = ''' || vUpperProductCode || '''';
  69.     END IF;
  70.    
  71.     IF (pProductName <> vEmptyString) THEN
  72.         vFilterProductName := ' AND UPPER(E.product_name) like ''%' || vUpperProductName || '%''';
  73.     END IF;
  74.    
  75.     IF (pWarehouseName <> vEmptyString) THEN
  76.         vFilterWarehouseName  := ' AND UPPER(F.warehouse_name) like ''%' || vUpperWarehouseName || '%''';
  77.     END IF;
  78.    
  79.     IF (pShowData <> vEmptyIdString) THEN
  80.         vFilterShowData := ' HAVING SUM(A.qty) > 0 ';
  81.     END IF;
  82.    
  83.    
  84.     IF (pLimit <> vEmptyId) THEN
  85.         vFilterLimit := ' LIMIT  ' || pLimit;
  86.     END IF;
  87.        
  88.     IF (pOffset <> vEmptyId) THEN
  89.         vFilterOffset := ' OFFSET  ' || pOffset;
  90.     END IF;
  91.        
  92.     Open pRefQtyDetail FOR
  93.       EXECUTE  ' SELECT A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name, '||
  94.                '        A.warehouse_id, f_get_warehouse_code(A.warehouse_id) AS warehouse_code, f_get_warehouse_name(A.warehouse_id) AS warehouse_name, '||
  95.                '        SUM(A.qty) AS qty, A.base_uom_id, f_get_uom_code(A.base_uom_id) AS base_uom_code, f_get_uom_name(A.base_uom_id) AS base_uom_name, D.flg_serial_number, '||
  96.                '        A.product_status, A.whs_location_code '||
  97.                ' FROM in_product_balance_stock A '||
  98.                ' INNER JOIN m_product E ON A.product_id = E.product_id '||
  99.                ' INNER JOIN m_warehouse_ou B ON A.warehouse_id = B.warehouse_id '||
  100.                ' INNER JOIN m_warehouse F ON A.warehouse_id = F.warehouse_id '||
  101.                ' INNER JOIN m_sub_ctgr_product D ON E.sub_ctgr_product_id = D.sub_ctgr_product_id '||
  102.                ' WHERE A.tenant_id = '|| pTenantId ||              
  103.                 vFilterWarehouseName ||            
  104.                 vFilterProductCode ||
  105.                 vFilterProductName ||
  106.                 vFilterSubCtgrProductId ||
  107.                 vFilterCtgrProductId ||
  108.                 vFilterBrandId ||
  109.                 ' AND B.ou_id IN ( ' ||
  110.                 '     SELECT C.ou_id FROM m_ou_structure C WHERE C.ou_bu_id = '|| pOuId ||' OR C.ou_branch_id = '|| pOuId ||' OR C.ou_sub_bu_id = '|| pOuId ||
  111.                 ' ) ' ||
  112.                 ' GROUP BY A.product_id, A.warehouse_id, A.base_uom_id, D.flg_serial_number, A.product_status ,A.whs_location_code '||
  113.                 vFilterShowData ||
  114.                 ' ORDER BY product_code ASC, product_name ASC, warehouse_name ASC, qty DESC ' ||
  115.                 vFilterLimit ||
  116.                 vFilterOffset;
  117.    
  118.             RETURN NEXT pRefQtyDetail ;
  119.    
  120.  
  121.     -- hapus tabel penampung data stok produk semua warehouse tanpa filter warehousename
  122.     DELETE FROM tr_get_inquiry_stock_qty WHERE session_id = pSessionId;
  123.     -- hapus tabel penampung data stok produk semua warehouse dengan filter warehousename
  124.     DELETE FROM tr_get_inquiry_stock_all_qty WHERE session_id = pSessionId;
  125.     -- hapus tabel penampung data warehouse
  126.     DELETE FROM tr_warehouse_inquiry_stock WHERE session_id = pSessionId;
  127.     -- hapus tabel penampung data product    
  128.     DELETE FROM tr_product_inquiry_stock WHERE session_id = pSessionId;
  129.    
  130. END;
  131. $BODY$
  132.   LANGUAGE plpgsql VOLATILE
  133.   COST 100
  134.   ROWS 1000;
  135. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement