CREATE OR REPLACE PROCEDURE NewRegICAPriceRoland(inbruker IN ANVANDARE.ANVANDARID%TYPE, inUnderlagid IN PBK.PRISREGISTER.UNDERLAGID%TYPE, inDatum IN VARCHAR2) IS -- This procedure registers prices in table PRISREGISTER -- The prices registered are selected from shops -- gods (article) databases. -- Note ONLY PRICES FOR SHOPS IN DWH are registered by this -- routine. Other prices are registered by routine RegImportprice -- Author : Mikael Sjöblom 2000-10-17 -- Modified by Mikael Sjöblom and Roland Sköldblom 2001-10-16 -- Added code for data on different computers -- Added code to select price for PLU- articles from imported data. TYPE t_ref_cur IS REF CURSOR; lvSQL VARCHAR2(2800); ButikExist VARCHAR2(50); AvdNr RIK2.AVD.AVDNR%TYPE; ButikId PBK.BUTIKKORGBUTIKREL.BUTIKID%TYPE; varenr PBK.VARUKORGEANREL.VARENR%TYPE; levnr PBK.VARUKORGEANREL.LEVNR%TYPE; vare_snr PBK.VARUKORGEANREL.VARE_SNR%TYPE; lagstapris PBK.VARUKORGEANREL.LAGSTAPRIS%TYPE; Ean PBK.VARUKORGEANREL.EAN%TYPE; EanLPVara PBK.VARUKORGEANREL.EAN%TYPE; substitutean PBK.LPKORGEANREL.EANREL%TYPE; tmpsubstitutean PBK.LPKORGEANREL.EANREL%TYPE; strsubstitutean VARCHAR2(100); ButikPris PBK.PRISREGISTER.Pris%TYPE; ButikFSGPris PBK.PRISREGISTER.Pris%TYPE; ButikPantBelopp PBK.PRISREGISTER.Pris%TYPE; strButikPris VARCHAR2(10); SubstitutPris PBK.PRISREGISTER.Pris%TYPE; tmpSubstitutPris PBK.PRISREGISTER.Pris%TYPE; IcaStatus PBK.PRISREGISTER.REGICASTATUS%TYPE; Period PBK.PRISREGISTER.PERIOD%TYPE; ButikKorgId BUTIKKORG.BUTIKKORGID%TYPE; VaruKorgId VARUKORG.VARUKORGID%TYPE; varutyp PBK.PRISREGISTER.VARUTYP%TYPE; SubstitutVarutyp PBK.LPKORGEANREL.VARUTYP%TYPE; tmpSubstitutVarutyp PBK.LPKORGEANREL.VARUTYP%TYPE; lastAvdnr Varchar2(1); lookUpServerName PBK.SERVER_NAME.SERVER_NAME%TYPE; borttags_flagg number; v_ErrorCode number; v_ErrorText VarChar2(500); eanost boolean; c_t_Butik t_ref_cur; -- all shops c_t_Varu t_ref_cur; -- all articles c_t_Pris t_ref_cur; -- Used to fetch prices for a shop c_t_PrisSubstitut t_ref_cur; -- Used to fetch substitute prices for a shop c_t_ButikExist t_ref_cur; -- Used to check if shop data exists c_t_LPKORG t_ref_cur; -- Used to Find LP BEGIN SELECT BUTIKKORGID,VARUKORGID,PERIOD into ButikKorgId, VaruKorgId, Period FROM PBK.UNDERLAG WHERE PBK.UNDERLAG.UNDERLAGID = inUnderlagid; DBMS_OUTPUT.PUT_LINE('ButikKorgId= '||ButikKorgId); DBMS_OUTPUT.PUT_LINE('VaruKorgId= '||VaruKorgId); DBMS_OUTPUT.PUT_LINE('Period= '||Period); lvSQL := 'SELECT AVDNR,BUTIKS_NR,SUBSTR(avdnr,LENGTH(AVDNR),1) ' || 'FROM RIK2.AVD,PBK.BUTIKKORGBUTIKREL ' || 'WHERE PBK.BUTIKKORGBUTIKREL.BUTIKKORGID=' ||ButikKorgId|| ' ' || 'AND PBK.BUTIKKORGBUTIKREL.BUTIKTYP=0 ' || 'AND RIK2.AVD.BUTIKS_NR=PBK.BUTIKKORGBUTIKREL.BUTIKID ' || 'AND RIK2.AVD.SELSKAP=''11'' ' || 'AND RIK2.AVD.DT_SLUTT is null'; OPEN c_t_Butik FOR lvSQL; LOOP FETCH c_t_Butik INTO Avdnr,ButikId,lastAvdnr; EXIT WHEN c_t_Butik%NOTFOUND; -- Code to find computer thar stores information Select Server_Name Into LookUpServerName From PBK.SERVER_NAME Where Server_ID=lastAvdnr; lvSQL := 'SELECT TABLE_NAME FROM ALL_TABLES@'||LookUpServerName|| ' '|| 'WHERE TABLE_NAME=''ICA_ARTIKEL'' ' || 'AND OWNER=''A'||Avdnr||''''; DBMS_OUTPUT.PUT_LINE(lvSQL); OPEN c_t_ButikExist FOR lvSQL; FETCH c_t_ButikExist INTO ButikExist; IF c_t_ButikExist%FOUND THEN -- Fetch all articles in Varukorg lvSQL := 'SELECT EAN,VARENR,LEVNR,VARE_SNR,LAGSTAPRIS,VARUTYP ' || 'FROM PBK.VARUKORGEANREL ' || 'WHERE PBK.VARUKORGEANREL.VARUKORGID=' ||VaruKorgId; DBMS_OUTPUT.PUT_LINE(lvSQL); OPEN c_t_Varu FOR lvSQL; LOOP /* Kommentar för att hantera ostar tab ort kommentar när klart FETCH c_t_Varu INTO Ean,varenr,levnr,vare_snr,lagstapris,varutyp; EXIT WHEN c_t_Varu%NOTFOUND; */ /*Ta bort all kod inom loopen när ostar ar klara */ Loop FETCH c_t_Varu INTO Ean,varenr,levnr,vare_snr,lagstapris,varutyp; EXIT WHEN c_t_Varu%NOTFOUND; if ean >599 and ean <699 then eanost := false; --'ndrat denna rad till false else eanost := false; end if; EXIT WHEN eanost = false; end loop; EXIT WHEN c_t_Varu%NOTFOUND; SubstitutPris := null; substitutean := null; ButikPris := null; ButikPantBelopp := null; SubstitutVarutyp := null; if lagstapris = 1 then -- Is this article marked for "Lägsta pris" -- If Plu article.Try to look up price in imported data from shop if varutyp = 4 then lvSQL := 'SELECT PRIS ' || 'FROM PBK.PLUBUTIKPRISREL '|| 'WHERE PERIOD='''||Period|| ''' ' || 'AND BUTIKS_NR='||butikId||' ' || 'AND PBKPLU='|| ean; DBMS_OUTPUT.PUT_LINE(lvSQL); OPEN c_t_Pris FOR lvSQL; FETCH c_t_Pris into ButikPris; CLOSE c_t_Pris; end if; --insert into pbk.Error (Err_Code,Err_Text,SQL_TEXT) Values --(1,'PLU LP',lvSQL); --commit; -- If PLU price NOT found in imported data from shop -- Or if this is not a PLU then -- Retreive prices for articles according to the LP-relational table. if ButikPris is null then lvSQL := 'SELECT EANREL ' || 'FROM PBK.LPKORGEANREL ' || 'WHERE EANLP='||Ean|| ' ' || 'AND VARENRLP='||varenr|| ' ' || 'AND VARE_SNRLP='||vare_snr; OPEN c_t_LPKorg FOR lvSQL; Loop FETCH c_t_LPKorg into EanLPVara; EXIT WHEN c_t_LPKorg%NOTFOUND; tmpSubstitutPris := null; ButikPantBelopp := null; tmpsubstitutean := null; tmpSubstitutVarutyp := null; tmpSubstitutEan:=EanLPVara; lvSQL := 'SELECT ICA_ARTIKEL.FSGPRIS,ICA_ARTIKEL.BORTTAGS_FLAGG,ICA_ARTIKEL.PANTBELOPP ' || --PBK.LPKORGEANREL.EANREL,PBK.LPKORGEANREL.VARUTYP ' || 'FROM A'||AvdNr||'.ICA_ARTIKEL@'||LookUpServerName|| ' ' || --PBK.LPKORGEANREL ' || 'WHERE ICA_ARTIKEL.EAN=' || EanLPVara || ' ' || 'AND ICA_ARTIKEL.DATUM 4 then lvSQL := 'SELECT ICA_ARTIKEL.FSGPRIS,ICA_ARTIKEL.PANTBELOPP ' || 'FROM A'||Avdnr||'.ICA_ARTIKEL@'||LookUpServerName|| ' ' || 'WHERE ICA_ARTIKEL.EAN='||Ean|| ' ' || 'AND ICA_ARTIKEL.DATUM