Advertisement
Guest User

Untitled

a guest
Oct 24th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. CREATE OR REPLACE FUNCTION public.r_report_raw_data_sales_order (in int8, in int8, in varchar, in varchar) RETURNS SETOF refcursor AS
  3. $BODY$
  4. DECLARE
  5.     pRefHeader              REFCURSOR := 'refHeader';
  6.     pRefDetail              REFCURSOR := 'refDetail';
  7.    
  8.     pTenantId           ALIAS FOR $1;
  9.     pReportMessageId    ALIAS FOR $2;
  10.     pSessionId          ALIAS FOR $3;
  11.     pProcessNo          ALIAS FOR $4;
  12.    
  13.     vOuId                       bigint;
  14.     vDateFrom                   character varying
  15.     vDateTo                     character varying;
  16.     vCustomerCodeName           character varying;
  17.     vSalesmanCodeName           character varying;
  18.     vGolonganProductCodeName    character varying;
  19.    
  20.     vEmptyString                character varying;
  21.     vOuBuId                     bigint;
  22.     vYes                        character varying := 'Y';
  23.     vVoid                       character varying := 'V';
  24.     vIndustryTypeComboId        character varying := 'INDUSTRYTYPE';
  25.     vGRoupBrandComboId          character varying := 'GROUPBRAND';
  26.     vFilterOu                   character varying;
  27.     vFilterCustomer             character varying;
  28.     vFilterSalesman             character varying;
  29.     vFilterGolonganProduct      character varying;
  30.    
  31. BEGIN
  32.     vOuId := CAST(f_get_report_parameter_value_by_id(pReportMessageId, 'ouId') AS bigint);
  33.     vDateFrom := f_get_report_parameter_value_by_id(pReportMessageId, 'dateFrom');
  34.     vDateTo := f_get_report_parameter_value_by_id(pReportMessageId, 'dateTo');
  35.     vCustomerCodeName := f_get_report_parameter_value_by_id(pReportMessageId, 'customerCodeName');
  36.     vSalesmanCodeName := f_get_report_parameter_value_by_id(pReportMessageId, 'salesmanCodeName');
  37.     vGolonganProductCodeName := f_get_report_parameter_value_by_id(pReportMessageId, 'golonganProductCodeName');
  38.  
  39.     vEmptyString :='';
  40.     vFilterOu := '';
  41.     vFilterCustomer := '';
  42.     vFilterSalesman := '';
  43.     vFilterGolonganProduct := '';
  44.    
  45.     SELECT (f_get_ou_bu_structure(vOuId)).ou_bu_id INTO vOuBuId;
  46.     --filter ou
  47.     IF(vOuId <> vOuBuId) THEN
  48.         vFilterOu := ' AND C.ou_id = '|| vOuId;
  49.     END IF;
  50.    
  51.     --filter customer
  52.     IF(vCustomerCodeName <> vEmptyString) THEN
  53.         vFilterCustomer := ' AND (UPPER(E.partner_code) LIKE UPPER('''||'%'||vCustomerCodeName||'%'||''') OR UPPER(E.partner_name) LIKE UPPER('''||'%'||vCustomerCodeName||'%'||''')) ';
  54.     END IF;
  55.    
  56.     --filter salesman
  57.     IF(vSalesmanCodeName <> vEmptyString) THEN
  58.         vFilterSalesman := ' AND (UPPER(f_get_partner_code(C.salesman_id)) LIKE UPPER('''||'%'||vSalesmanCodeName||'%'||''') OR UPPER(f_get_partner_name(C.salesman_id)) LIKE UPPER('''||'%'||vSalesmanCodeName||'%'||''')) ';
  59.     END IF;
  60.    
  61.     --filter golongan
  62.     IF(vGolonganProductCodeName <> vEmptyString) THEN
  63.         vFilterGolonganProduct :=' AND (UPPER(f_get_code_golongan_product(B.product_id)) LIKE UPPER('''||'%'||vGolonganProductCodeName||'%'||''') OR UPPER(f_get_name_golongan_product(B.product_id)) LIKE UPPER('''||'%'||vGolonganProductCodeName||'%'||''')) ';
  64.     END IF;
  65.    
  66.     --RAISE NOTICE ''vFilterOu : %'',vFilterOu;
  67.     --RAISE NOTICE ''vFilterCustomer : %'',vFilterCustomer;
  68.     --RAISE NOTICE ''vFilterSalesman : %'',vFilterSalesman;
  69.     --RAISE NOTICE ''vGolonganProductCodeName : %'',vGolonganProductCodeName;
  70.     --RAISE NOTICE ''vFilterGolonganProduct : %'',vFilterGolonganProduct;
  71.    
  72.     Open pRefHeader FOR
  73.         SELECT 29 AS _COUNT,
  74.         'KODEAREA', 'NAMAAREA', 'KODESALES', 'NAMASALES',
  75.         'KOTA', 'NOSPB', 'TGLSPB', 'BULAN',
  76.         'STATUSDO',
  77.         'JENIS', 'NAMAJENIS','KODELANG','NAMALANG',
  78.         'ALAMAT',
  79.         'KODEGOL','GOL',
  80.         'KODEPROD','KODEHARGA', 'NAMAPROD',
  81.         'KATEGORI','SUBKATEGORI', 'PROMO',
  82.         'HARGA',
  83.         'JUMSPB',
  84.         'NILAISPB',
  85.         'AREACOVER','SUPPLIER',
  86.         'JENISBRG','TAHUN',1 AS ordinal
  87.         order by ordinal;
  88.     RETURN NEXT pRefHeader;
  89.    
  90.     Open pRefDetail FOR
  91.         EXECUTE
  92.         'SELECT f_get_ou_code(C.ou_id) as ou_code, f_get_ou_name(C.ou_id) as ou_name, f_get_partner_code(C.salesman_id) as salesman_code, f_get_partner_name(C.salesman_id) as salesman_name,
  93.                f_get_city_name_official(c.partner_id) as city, C.doc_no, c.doc_date, SUBSTRING(c.doc_date,5,2) as month,
  94.                CASE WHEN EXISTS( SELECT 1
  95.                                  FROM sl_so_balance_invoice K
  96.                                  WHERE K.so_id = C.so_id    ) THEN 1 ELSE 0 END as status_do,
  97.                E.industry_type, f_get_combo_prop_key($1,E.industry_type) as desc_industry, E.partner_code, E.partner_name,
  98.                f_concat_partner_address_official(C.partner_id) AS address,
  99.               f_get_code_golongan_product(B.product_id) as gol_code, f_get_name_golongan_product(B.product_id) as gol_name,
  100.               L.product_code as product_code, E.price_level, L.product_name as product_name,
  101.               f_get_ctgr_product_name(L.ctgr_product_id) as category, f_get_sub_ctgr_product_name(L.sub_ctgr_product_id) as sub_category, coalesce(K.promo_desc,'''') as promo_desc,
  102.               CASE WHEN flg_tax_amount =$3 THEN B.gross_sell_price ELSE B.gross_sell_price + B.tax_price END as harga_spb,
  103.               A.qty_so + A.qty_add - A.qty_cancel as qty,
  104.               (A.qty_so + A.qty_add - A.qty_cancel) * (CASE WHEN flg_tax_amount =$3 THEN B.gross_sell_price ELSE B.gross_sell_price + B.tax_price END) as nilai_spb,
  105.               I.region_name, f_get_partner_name(G.supplier_id) as supplier_name,
  106.               H.group_brand_product as group_brand, SUBSTRING(c.doc_date,1,4) as year
  107.         FROM sl_so_balance_item A
  108.         INNER JOIN sl_so_item B ON B.so_item_id = A.so_item_id
  109.         INNER JOIN sl_so C ON C.so_id = B.so_id
  110.         INNER JOIN sl_so_additional_for_dlg D ON D.so_id = C.so_id
  111.         INNER JOIN m_partner E ON E.partner_id = C.partner_id
  112.         INNER JOIN m_product_custom_for_dlg G ON G.product_id = B.product_id
  113.         INNER JOIN m_product_group_brand H ON H.product_id = B.product_id
  114.         INNER JOIN m_region I ON I.region_id = D.region_id
  115.         INNER JOIN m_ou_structure J ON J.ou_id = C.ou_id
  116.        INNER JOIN m_product L ON L.product_id = B.product_id
  117.        LEFT JOIN m_promo_sales K ON K.promo_sales_id = D.promo_sales_id
  118.         WHERE A.status_item <> $5 AND
  119.               A.qty_so + A.qty_add - A.qty_cancel > 0 AND
  120.               A.tenant_id = $6  AND
  121.               C.doc_date BETWEEN $7 AND $8 AND
  122.               J.ou_bu_id = $9 '||
  123.               vFilterOu ||
  124.               vFilterCustomer ||
  125.               vFilterSalesman ||
  126.               vFilterGolonganProduct ||
  127.         ' ORDER BY ou_code, c.doc_date, C.doc_no '
  128.         USING  vIndustryTypeComboId, vEmptyString, vYes, vGRoupBrandComboId, vVoid, pTenantId,
  129.                vDateFrom, vDateTo, vOuBuId;
  130.     RETURN NEXT pRefDetail;
  131.            
  132. END;
  133. $BODY$
  134. LANGUAGE 'plpgsql'
  135. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement