CREATE USER pracownik_log IDENTIFIED BY log568;
CREATE USER adminitrator2 IDENTIFIED BY admin222;
GRANT CONNECT, RESOURCE TO pracownik_hr;
GRANT CONNECT, RESOURCE TO pracownik_log;
GRANT DBA TO adminitrator2;
GRANT SELECT, INSERT, UPDATE,
AFTER INSERT ON pozycjedokumentu
FOR EACH ROW
WHEN (new.handlowymagazynowy='M' AND new.kierunekmagazynu=-1)
DECLARE
konroz NUMBER(10);
dataroz DATE;
iloscroz NUMBER;
algo NUMBER(1);
okres NUMBER(1);
ile NUMBER;
dataprz DATE;
cena NUMBER(12,2);
dokprz NUMBER(10);
partia NUMBER(10);
konprz NUMBER(10);
magazyn NUMBER(10);
pozdok NUMBER(10);
BEGIN
iloscroz:=:new.ilosc;
SELECT kontrahent INTO konroz FROM DOKUMENTY
WHERE id=:new.dokument;
SELECT data INTO dataroz FROM DOKUMENTY
WHERE id=:new.dokument;
SELECT algorytm INTO algo FROM MAGAZYNY
WHERE (id=:new.magazyn);
SELECT id INTO okres FROM OKRESYMAGAZYNOWE
WHERE (czyzamkniety='N');
GOTO skok;
<
iloscroz:=(iloscroz-ile);
GRANT SELECT, INSERT, UPDATE, DELETE ON adresy TO pracownik_log;
GRANT SELECT, INSERT, UPDATE, DELETE ON dokumenty TO pracownik_log;
WHERE (towar=:new.towary AND data=dataprz);
<
SELECT min(data) INTO dataprz FROM ZASOBY
WHERE (towar=:new.towary AND magazyn=magazynroz);
SELECT ilosc INTO ile FROM zasoby
WHERE (towar=:new.towary AND data=dataprz AND magazyn=:new.magazyn);
SELECT cena INTO cena FROM zasoby
WHERE (towar=:new.towary AND data=dataprz AND magazyn=:new.magazyn);
SELECT dokument INTO dokprz FROM zasoby
WHERE (towar=:new.towary AND data=dataprz AND magazyn=:new.magazyn);
SELECT partiatowaru INTO partia FROM zasoby
WHERE (towar=:new.towary AND data=dataprz AND magazyn=:new.magazyn);
SELECT kontrahent INTO konprz FROM zasoby
WHERE (towar=:new.towary AND data=dataprz AND magazyn=:new.magazyn);
SELECT pozycjadokumentu INTO pozdok FROM zasoby
WHERE (towar=:new.towary AND data=dataprz AND magazyn=:new.magazyn);
WHILE iloscroz >= ile AND algo=0 LOOP
INSERT INTO obroty
VALUES (s_id_ob.nextval, ile, cena, dataprz, :new.cena,
dataroz, dokprz, :new.dokument, partia, :new.towary, :new.magazyn,
okres, konprz, konroz, pozdok, :new.id);
GOTO skok2;
END LOOP;
IF algo=0 AND iloscroz !=0 THEN
INSERT INTO obroty
VALUES (s_id_ob.nextval, iloscroz, cena, dataprz,
:new.cena, dataroz, dokprz, :new.dokument, partia, :new.towary,
:new.magazyn, okres, konprz, konroz, pozdok, :new.id);
END IF;
UPDATE zasoby
SET ilosc = (ilosc-iloscroz)
WHERE towar=:new.towary AND data=dataprz;
END;
/