Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 9.71 KB | None | 0 0
  1. --####################################################################################################################################################                
  2.   -- NOTE: when changing this query make sure to apply changes also to pkrema_esort_art.getDiscOnParentNodeExisItem since it is practicaly same query
  3.   --####################################################################################################################################################                
  4.   /*CURSOR C_ESM_DISC_CANDIDATES(i_root       IN VARCHAR2,
  5.                                i_lv         IN VARCHAR2,
  6.                                i_dir_deliv  IN NUMBER,
  7.                                i_re_opening IN NUMBER) IS*/
  8.     SELECT pricederivationid refcexrem,
  9.            description refcnuf,
  10.            NVL(concurrencecode, -1) refcnum,
  11.            businessunit refsite,
  12.            root refcexr,
  13.            lv refcexvl,
  14.            '0' refcexgat,
  15.            1 refregl,
  16.            2 refglob,
  17.            NVL((SELECT parpost
  18.                FROM   rema_parameters t
  19.                WHERE  t.code_nr = 'REFUREM'
  20.                AND    t.tekst = (CASE
  21.                         WHEN pricederivationid LIKE '%W' THEN
  22.                          SUBSTR(pricederivationid, 1, LENGTH(pricederivationid) - 1)
  23.                         ELSE
  24.                          pricederivationid
  25.                       END)),
  26.                -1) refurem,
  27.            (CASE
  28.              WHEN pricederivationid LIKE '%W' THEN
  29.               181
  30.              ELSE
  31.               NULL
  32.            END) refuapp,
  33.           NVL(CASE WHEN pricederivationid LIKE '910%' THEN 0 WHEN pricederivationid LIKE 'W%' THEN 0 WHEN pricederivationid LIKE 'J%' THEN 0 WHEN pricederivationid LIKE 'S%' THEN 0 WHEN pricederivationid LIKE 'B%' THEN 0 WHEN pricederivationid LIKE 'E%' THEN 0 ELSE retailpricepercent END,CASE WHEN pricederivationid LIKE '910%' THEN 0 WHEN pricederivationid LIKE 'W%' THEN 0 WHEN pricederivationid LIKE 'J%' THEN 0 WHEN pricederivationid LIKE 'S%' THEN 0 WHEN pricederivationid LIKE 'B%' THEN 0 WHEN pricederivationid LIKE 'E%' THEN 0 ELSE retailpriceamount END) refrepa,
  34.           NVL(CASE WHEN pricederivationid LIKE '910%' THEN 0 WHEN pricederivationid LIKE 'W%' THEN 0 WHEN pricederivationid LIKE 'J%' THEN 0 WHEN pricederivationid LIKE 'S%' THEN 0 WHEN pricederivationid LIKE 'B%' THEN 0 WHEN pricederivationid LIKE 'E%' THEN 0 ELSE retailpricepercent END,CASE WHEN pricederivationid LIKE '910%' THEN 0 WHEN pricederivationid LIKE 'W%' THEN 0 WHEN pricederivationid LIKE 'J%' THEN 0 WHEN pricederivationid LIKE 'S%' THEN 0 WHEN pricederivationid LIKE 'B%' THEN 0 WHEN pricederivationid LIKE 'E%' THEN 0 ELSE retailpriceamount END) refrepr,
  35.           NVL(CASE WHEN pricederivationid LIKE '910S%' THEN -retailpricepercent ELSE retailpricepercent END,CASE WHEN pricederivationid LIKE '910S%' THEN -retailpriceamount ELSE retailpriceamount END) refrepv,
  36.           NVL(CASE WHEN pricederivationid LIKE '910S%' THEN -retailpricepercent ELSE retailpricepercent END,CASE WHEN pricederivationid LIKE '910S%' THEN -retailpriceamount ELSE retailpriceamount END) refrepf,
  37.           --NVL(CASE WHEN pricederivationid LIKE '910%' THEN 0 WHEN pricederivationid LIKE 'W%' THEN 0 WHEN pricederivationid LIKE 'J%' THEN 0 WHEN pricederivationid LIKE 'S%' THEN 0 WHEN pricederivationid LIKE 'B%' THEN 0 WHEN pricederivationid LIKE 'E%' THEN 0 ELSE retailpricepercent END, CASE WHEN pricederivationid LIKE '910%' THEN 0 WHEN pricederivationid LIKE 'W%' THEN 0 WHEN pricederivationid LIKE 'J%' THEN 0 WHEN pricederivationid LIKE 'S%' THEN 0 WHEN pricederivationid LIKE 'B%' THEN 0 WHEN pricederivationid LIKE 'E%' THEN 0 ELSE retailpriceamount END) refrepf,                                                                                            
  38.           NVL(CASE WHEN pricederivationid LIKE '910%' THEN 0 WHEN pricederivationid LIKE 'W%' THEN 0 WHEN pricederivationid LIKE 'J%' THEN 0 WHEN pricederivationid LIKE 'S%' THEN 0 WHEN pricederivationid LIKE 'B%' THEN 0 WHEN pricederivationid LIKE 'E%' THEN 0 ELSE retailpricepercent END, CASE WHEN pricederivationid LIKE '910%' THEN 0 WHEN pricederivationid LIKE 'W%' THEN 0 WHEN pricederivationid LIKE 'J%' THEN 0 WHEN pricederivationid LIKE 'S%' THEN 0 WHEN pricederivationid LIKE 'B%' THEN 0 WHEN pricederivationid LIKE 'E%' THEN 0 ELSE retailpriceamount END) refreps,
  39.            GREATEST(NVL(TO_DATE(SUBSTR(validfrom, 0, 10), 'RRRR-MM-DD'), TRUNC(CURRENT_DATE + 1)),
  40.                     TRUNC(CURRENT_DATE) + 1) refddeb,
  41.            TO_DATE(NVL(SUBSTR(expirationdate, 0, 10), '2049-12-31'), 'RRRR-MM-DD') refdfin,
  42.            1 refact,
  43.            5 refflag,
  44.            0 reftrt,
  45.            TRUNC(CURRENT_DATE) refdtrt,
  46.            CURRENT_DATE refdcre,
  47.            CURRENT_DATE refdmaj,
  48.            'ESM' refutil,
  49.            'ESM_ART_01-' || TO_CHAR(SYSDATE, 'RRRRMMDDhh24miss') || '_' || root || '_' || lv reffich,
  50.            ROWNUM refnlig,
  51.            NVL(CASE WHEN pricederivationid LIKE '910S%' THEN -retailpricepercent ELSE retailpricepercent END,CASE WHEN pricederivationid LIKE '910S%' THEN -retailpriceamount ELSE retailpriceamount END) refrepm
  52.  
  53.  
  54.            ---------------- INFO COLS FOR FURTHER DATA PROCESSING ---------------
  55.           ,
  56.            prof network_level,
  57.            pkartvl.Get_Arlseqvl(0, lv, pkartrac.Get_Artcinr(0, root)) seqvl,
  58.            pkfoudgene.get_CFIN(0, description) cfin,
  59.            pkfouccom.get_CCIN(0, NVL(concurrencecode, -1)) ccin,
  60.            pkrema_esort_art.getDiscOnParentNodeExisItem(num_log        => 0,
  61.                                                       i_bussinesunit => businessunit,
  62.                                                       i_root         => root,
  63.                                                       i_lv           => lv,
  64.                                                       i_cexrem       => pricederivationid,
  65.                                                       i_dir_deliv    => 0/*i_dir_deliv*/,
  66.                                                       i_re_opening   => 0/*i_re_opening*/) parentNodeDisc
  67.     FROM   (SELECT DISTINCT e3.priceruleid        AS priceruleid,
  68.                             e3.pricederivationid  AS pricederivationid,
  69.                             e1.description        AS description,
  70.                             e1.concurrencecode    concurrencecode,
  71.                             resPERE               businessunit,
  72.                             a.root                root,
  73.                             a.lv                  lv,
  74.                             e3.retailpricepercent AS retailpricepercent,
  75.                             e3.retailpriceamount  AS retailpriceamount,
  76.                             a.validfrom           AS validfrom,
  77.                             e1.expirationdate     AS expirationdate,
  78.                             resPROF               prof
  79.             FROM   esort_art_xml a, esort_art_pp_xml e1, esort_art_pp_xml e3, reseau, rema_parameters t
  80.             WHERE  (a.process_type IN ('price', 'year') OR
  81.                    (0/*i_re_opening*/ != 0 AND a.process_type IN ('assortment')))
  82.             AND    e1.record_type = 1
  83.             AND    e3.record_type = 3
  84.             AND    a.lv_type = 'ItemID'
  85.             AND    a.root = '10073839'--i_root
  86.             AND    e1.root = a.root
  87.             AND    e3.root = e1.root
  88.             AND    a.lv = 1--i_lv
  89.             AND    e1.lv = a.lv
  90.             AND    e3.lv = e1.lv
  91.             AND    a.sv IS NOT NULL
  92.             AND    e1.businessunit = e3.businessunit
  93.                   -- in case records have validFrom date information, take into account only those. In case no validFrom date is available take also null validfrom data
  94.             AND    (CASE
  95.                     WHEN a.validfrom IS NULL THEN
  96.                      DECODE((SELECT 1
  97.                             FROM   esort_art_xml i
  98.                             WHERE  (i.process_type IN ('price', 'year') OR
  99.                                    (0/*i_re_opening*/ != 0 AND i.process_type IN ('assortment')))
  100.                             AND    i.lv_type = 'ItemID'
  101.                             AND    i.root = a.root
  102.                             AND    i.lv = a.lv
  103.                             AND    i.sv IS NOT NULL
  104.                             AND    i.validfrom IS NOT NULL
  105.                             AND    ROWNUM = 1),
  106.                             1,
  107.                             NULL,
  108.                             '1') --case validFrom date line exists in esort_art_xml skip lines that have validFrom blank (null), else take them into account
  109.                     ELSE
  110.                      a.validfrom
  111.                   END) IS NOT NULL
  112.                   --
  113.             AND    t.code_nr = 'REFTREM'
  114.             AND    t.tekst = (CASE
  115.                      WHEN e3.pricederivationid LIKE '%W' THEN
  116.                       SUBSTR(e3.pricederivationid, 1, LENGTH(e3.pricederivationid) - 1)
  117.                      ELSE
  118.                       e3.pricederivationid
  119.                    END)
  120.             AND    e1.businessunit = resSITE
  121.                   --Current rule to determine the bussinesUnit site/node
  122.             AND    resPERE = (CASE
  123.                      WHEN 0/*i_dir_deliv*/ = 1 AND e1.businessunit > 8000 THEN
  124.                       e1.businessunit - 8000
  125.                      WHEN 0/*i_dir_deliv*/ = 0 AND e1.businessunit = 8006 AND t.parpost BETWEEN 1 AND 199 THEN
  126.                       1
  127.                      WHEN 0/*i_dir_deliv*/ = 0 AND e1.businessunit = 8006 AND t.parpost BETWEEN 200 AND 299 THEN
  128.                       2
  129.                      WHEN e1.businessunit > 8000 THEN
  130.                       e1.businessunit - 8000
  131.                      ELSE
  132.                       e1.businessunit
  133.                    END)
  134.             ORDER  BY pricederivationid, prof);
  135.     ORDER  BY root, lv;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement