SET TERM ^ ; create or alter procedure UPDATEUSLOVIULAZIST(RID INTEGER) as declare variable DB_ROBAID integer; declare variable DB_CENA numeric(15,4); declare variable DB_DEVIZNA_CENA numeric(15,4); declare variable DB_RABAT numeric(15,4); declare variable DB_DATUM date; declare variable DB_PPID integer; declare variable DB_MAGACINID SMALLINT; declare variable DB_VALUTA varchar(3); declare variable DB_LINKED varchar(10); declare variable DB_VRDOK smallint; declare variable LAST_ROBAID integer; declare variable LAST_MAGACINID smallint; declare variable LAST_PPID integer; declare variable LAST_VALUTA varchar(3); BEGIN LAST_ROBAID = -1; LAST_MAGACINID = -1; LAST_PPID = -1; LAST_VALUTA = 'XXX'; IF (:RID <= 0) THEN BEGIN FOR SELECT S.ROBAID, S.FAKTURNACENA, S.DEVIZNACENA, S.RABAT, S.MAGACINID, D.PPID, D.VALUTA, D.DATUM, D.LINKED, D.VRDOK FROM STAVKA S LEFT JOIN DOKUMENT D ON S.VRDOK = D.VRDOK AND S.BRDOK = D.BRDOK WHERE S.VRDOK IN (1,2,11,12) ORDER BY S.ROBAID, S.MAGACINID, D.PPID, D.VALUTA, D.DATUM DESC, D.LINKED DESC INTO :DB_ROBAID, :DB_CENA, :DB_DEVIZNA_CENA, :DB_RABAT, :DB_MAGACINID, :DB_PPID, :DB_VALUTA, :DB_DATUM, :DB_LINKED, :DB_VRDOK DO BEGIN IF ((:LAST_ROBAID <> :DB_ROBAID) OR (:LAST_MAGACINID <> :DB_MAGACINID) OR (:LAST_PPID <> :DB_PPID) OR (:LAST_VALUTA <> :DB_VALUTA)) THEN BEGIN IF (DB_VRDOK = 2) THEN DB_CENA = :DB_DEVIZNA_CENA; UPDATE OR INSERT INTO USLOVI_ULAZ_IST (ROBAID, MAGACINID, PPID, VALUTA, DATUM, LINKED, CENA, RABAT) VALUES (:DB_ROBAID, :DB_MAGACINID, :DB_PPID, :DB_VALUTA, :DB_DATUM, :DB_LINKED, :DB_CENA, :DB_RABAT); LAST_ROBAID = :DB_ROBAID; LAST_MAGACINID = :DB_MAGACINID; LAST_PPID = :DB_PPID; LAST_VALUTA = :DB_VALUTA; END END END ELSE BEGIN FOR SELECT S.ROBAID, S.FAKTURNACENA, S.DEVIZNACENA, S.RABAT, S.MAGACINID, D.PPID, D.VALUTA, D.DATUM, D.LINKED, D.VRDOK FROM STAVKA S LEFT JOIN DOKUMENT D ON S.VRDOK = D.VRDOK AND S.BRDOK = D.BRDOK WHERE S.VRDOK IN (1,2,11,12) AND S.ROBAID = :RID ORDER BY S.ROBAID, S.MAGACINID, D.PPID, D.VALUTA, D.DATUM DESC, D.LINKED DESC INTO :DB_ROBAID, :DB_CENA, :DB_DEVIZNA_CENA, :DB_RABAT, :DB_MAGACINID, :DB_PPID, :DB_VALUTA, :DB_DATUM, :DB_LINKED, :DB_VRDOK DO BEGIN IF ((:LAST_MAGACINID <> :DB_MAGACINID) OR (:LAST_PPID <> :DB_PPID) OR (:LAST_VALUTA <> :DB_VALUTA)) THEN BEGIN IF (DB_VRDOK = 2) THEN DB_CENA = :DB_DEVIZNA_CENA; UPDATE OR INSERT INTO USLOVI_ULAZ_IST (ROBAID, MAGACINID, PPID, VALUTA, DATUM, LINKED, CENA, RABAT) VALUES (:DB_ROBAID, :DB_MAGACINID, :DB_PPID, :DB_VALUTA, :DB_DATUM, :DB_LINKED, :DB_CENA, :DB_RABAT); LAST_MAGACINID = :DB_MAGACINID; LAST_PPID = :DB_PPID; LAST_VALUTA = :DB_VALUTA; END END END END ^