CREATE TRIGGER obrotfifo 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); DELETE FROM zasoby 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; /