/#START_PROC#/ /#PROCDEF_NAZWA#/ Premia /#PROCDEF_KOD#/ XXX_PREMIA /#PROCDEF_RODZAJ#/ 0 /#PROCDEF_NAZWADB#/ SP$_XXX_PREMIA /#PROCDEF_OPIS#/ /#PROCDEF_TRESCPROC#/ CREATE PROCEDURE SP$_XXX_PREMIA ( ID_DEFCENY INTEGER, XDTOD TIMESTAMP, XDTDO TIMESTAMP ) RETURNS ( XPH VARCHAR(200), XINDEKS VARCHAR(50), XIDENTYFIKATOR VARCHAR(150), XCNETTO NUMERIC(18,2), XWNETTO NUMERIC(18,2), XILOSC NUMERIC(18,2), XCBAZOWA NUMERIC(18,2), XZRODLO VARCHAR(5), XMARZAW NUMERIC(18,2), XMARZAP NUMERIC(18,2), XSRMARZA NUMERIC(18,2) ) AS DECLARE VARIABLE ATYPDOK INTEGER; DECLARE VARIABLE AIDPH INTEGER; DECLARE VARIABLE ALPPOZ INTEGER; DECLARE VARIABLE AIDNAGL INTEGER; DECLARE VARIABLE ASPRZEDAZWBAZOWEJ NUMERIC(18,2); DECLARE VARIABLE ACENAROZN NUMERIC(18,2); DECLARE VARIABLE AID_KARTOTEKA INTEGER; DECLARE VARIABLE ACENAPO NUMERIC(18,2); BEGIN for select PH.NazwiskoImie, PH.id_akwizytor from Akwizytor PH into :xPH, :aIdPH do begin for select CB.CenaN, KTT.Indeks, KTT.NazwaSkr , P.CenaNetto,DD.id_SpisDok, P.ilosc, P.lp, N.id_nagl, KTT.id_kartoteka from POZ P join NAGL N on (N.id_nagl = P.id_nagl)and(p.bazapoz = 0) join KARTOTEKA KTT on (P.id_kartoteka = KTT.id_kartoteka) and (KTT.id_RodzajKart=1) join Cennik CB on (KTT.id_kartoteka = CB.id_kartoteka)and(CB.id_defceny = :id_DefCeny) join defdok dd on DD.id_defdok = N.id_defdok and dd.id_grupadok = 10 where n.datadok between :xDtOD and :xDtDo and n.id_defdok not in (20) and n.bazanagl = 0 and n.id_akwizytor = :aIdPH into :xcBazowa, :xIndeks, :xIdentyfikator, :xcNetto, :aTypDok, :xIlosc, :aLpPoz, :aIdNagl, :aId_kartoteka do begin if (aTypDok not in(60)) then begin xZrodlo = 'F'; xwNetto = :xIlosc * :xCNetto; xMarzaW = :xIlosc * (:xCNetto - :xCBazowa); xMarzaP = 100* (:xCNetto - :xCBazowa)/:xcNetto; insert into XXX_PREMIA(zrodlo,id_akwizytor,id_kartoteka,cbazowa,cnetto, ilosc, wartosc) values(:xZrodlo,:aIdPH,:aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc, :xcNetto*:xIlosc); /* suspend; */ end if (aTypDok in(60)) then begin xZrodlo = 'K'; if (xIlosc<>0) then begin select P1.cenanetto from POZ P1 where P1.id_nagl = :aIDNagl and P1.lp=:aLpPoz and P1.BazaPoz = 1 into :xcNetto; xwNetto = :xIlosc * :xCNetto; insert into XXX_PREMIA(zrodlo,id_akwizytor,id_kartoteka,cbazowa,cnetto, ilosc, wartosc) values(:xZrodlo,:aIdPH,:aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc, :xcNetto*:xIlosc); end if (xIlosc = 0) then begin select P2.ilosc*(-1),P2.CenaNetto from POZ P2 where P2.id_nagl = :aIDNagl and P2.lp=:aLpPoz and P2.BazaPoz = 1 into :xIlosc, :aCenaPo; xcNetto= :aCenaPo - xcNetto; xMarzaW =0; xMarzaP=0; insert into XXX_PREMIA(zrodlo,id_akwizytor,id_kartoteka,cbazowa,cnetto, ilosc, wartosc) values(:xZrodlo,:aIdPH,:aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc, :xcNetto*:xIlosc); /* suspend; */ xCNetto = :aCenaPo; xIlosc = :xIlosc*(-1); xwNetto = :xIlosc * :xCNetto; insert into XXX_PREMIA(zrodlo,id_akwizytor,id_kartoteka,cbazowa,cnetto, ilosc, wartosc) values(:xZrodlo,:aIdPH,:aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc, :xcNetto*:xIlosc); end xMarzaW = :xIlosc * (:xCNetto - :xCBazowa); xMarzaP = 100* (:xCNetto - :xCBazowa)/:xcNetto; /* suspend; */ end end end for select PH1.id_akwizytor, PH1.NazwiskoImie from Akwizytor PH1 order by PH1.NazwiskoImie into :aIDPH, :xPH do begin select sum(X1.ilosc*X1.cBazowa),sum(X1.Ilosc*X1.cNetto) from XXX_PREMIA X1 where X1.id_akwizytor = :aIdPH into :aSprzedazwBazowej, :xwNetto; xIdentyfikator = 'Suma ceny bazowej'; xZrodlo = 'S'; if (xwNetto <> 0) then begin xSrMArza = 100*(:xwNetto-:aSprzedazwBazowej)/:xwNetto; end else xSrMArza = 0; /* suspend; */ for select PH.NazwiskoImie, KT.Indeks, KT.NazwaSkr, X.id_akwizytor, X.id_kartoteka, X.cBazowa, X.cNetto, sum(X.Ilosc) from XXX_PREMIA X join Akwizytor PH on (PH.id_akwizytor = X.id_akwizytor) join KARTOTEKA KT on (KT.id_kartoteka = X.id_kartoteka) where X.id_akwizytor = :aIdPH group by PH.NazwiskoImie, KT.Indeks, KT.NazwaSkr, X.id_akwizytor, X.id_kartoteka, X.cBazowa, X.cNetto order by PH.NazwiskoImie, KT.Indeks into :xPH, :xIndeks, :xIdentyfikator, :aIdPH, :aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc do begin xZrodlo = 'T'; xwNetto = 0; xMarzaW = 0; xMarzaP = 0; if (xilosc<>0) then begin xwNetto = :xcNetto * :xIlosc; xMarzaW = :xIlosc * (:xCNetto - :xCBazowa); if (xIlosc>0) then xMarzaP = 100* (:xCNetto - :xCBazowa)/:xcNetto; end suspend; end end END /#PROCDEF_USERTRESCPROC#/ for select PH.NazwiskoImie, PH.id_akwizytor from Akwizytor PH into :xPH, :aIdPH do begin for select CB.CenaN, KTT.Indeks, KTT.NazwaSkr , P.CenaNetto,DD.id_SpisDok, P.ilosc, P.lp, N.id_nagl, KTT.id_kartoteka from POZ P join NAGL N on (N.id_nagl = P.id_nagl)and(p.bazapoz = 0) join KARTOTEKA KTT on (P.id_kartoteka = KTT.id_kartoteka) and (KTT.id_RodzajKart=1) join Cennik CB on (KTT.id_kartoteka = CB.id_kartoteka)and(CB.id_defceny = :id_DefCeny) join defdok dd on DD.id_defdok = N.id_defdok and dd.id_grupadok = 10 where n.datadok between :xDtOD and :xDtDo and n.id_defdok not in (20) and n.bazanagl = 0 and n.id_akwizytor = :aIdPH into :xcBazowa, :xIndeks, :xIdentyfikator, :xcNetto, :aTypDok, :xIlosc, :aLpPoz, :aIdNagl, :aId_kartoteka do begin if (aTypDok not in(60)) then begin xZrodlo = 'F'; xwNetto = :xIlosc * :xCNetto; xMarzaW = :xIlosc * (:xCNetto - :xCBazowa); xMarzaP = 100* (:xCNetto - :xCBazowa)/:xcNetto; insert into XXX_PREMIA(zrodlo,id_akwizytor,id_kartoteka,cbazowa,cnetto, ilosc, wartosc) values(:xZrodlo,:aIdPH,:aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc, :xcNetto*:xIlosc); /* suspend; */ end if (aTypDok in(60)) then begin xZrodlo = 'K'; if (xIlosc<>0) then begin select P1.cenanetto from POZ P1 where P1.id_nagl = :aIDNagl and P1.lp=:aLpPoz and P1.BazaPoz = 1 into :xcNetto; xwNetto = :xIlosc * :xCNetto; insert into XXX_PREMIA(zrodlo,id_akwizytor,id_kartoteka,cbazowa,cnetto, ilosc, wartosc) values(:xZrodlo,:aIdPH,:aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc, :xcNetto*:xIlosc); end if (xIlosc = 0) then begin select P2.ilosc*(-1),P2.CenaNetto from POZ P2 where P2.id_nagl = :aIDNagl and P2.lp=:aLpPoz and P2.BazaPoz = 1 into :xIlosc, :aCenaPo; xcNetto= :aCenaPo - xcNetto; xMarzaW =0; xMarzaP=0; insert into XXX_PREMIA(zrodlo,id_akwizytor,id_kartoteka,cbazowa,cnetto, ilosc, wartosc) values(:xZrodlo,:aIdPH,:aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc, :xcNetto*:xIlosc); /* suspend; */ xCNetto = :aCenaPo; xIlosc = :xIlosc*(-1); xwNetto = :xIlosc * :xCNetto; insert into XXX_PREMIA(zrodlo,id_akwizytor,id_kartoteka,cbazowa,cnetto, ilosc, wartosc) values(:xZrodlo,:aIdPH,:aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc, :xcNetto*:xIlosc); end xMarzaW = :xIlosc * (:xCNetto - :xCBazowa); xMarzaP = 100* (:xCNetto - :xCBazowa)/:xcNetto; /* suspend; */ end end end for select PH1.id_akwizytor, PH1.NazwiskoImie from Akwizytor PH1 order by PH1.NazwiskoImie into :aIDPH, :xPH do begin select sum(X1.ilosc*X1.cBazowa),sum(X1.Ilosc*X1.cNetto) from XXX_PREMIA X1 where X1.id_akwizytor = :aIdPH into :aSprzedazwBazowej, :xwNetto; xIdentyfikator = 'Suma ceny bazowej'; xZrodlo = 'S'; if (xwNetto <> 0) then begin xSrMArza = 100*(:xwNetto-:aSprzedazwBazowej)/:xwNetto; end else xSrMArza = 0; /* suspend; */ for select PH.NazwiskoImie, KT.Indeks, KT.NazwaSkr, X.id_akwizytor, X.id_kartoteka, X.cBazowa, X.cNetto, sum(X.Ilosc) from XXX_PREMIA X join Akwizytor PH on (PH.id_akwizytor = X.id_akwizytor) join KARTOTEKA KT on (KT.id_kartoteka = X.id_kartoteka) where X.id_akwizytor = :aIdPH group by PH.NazwiskoImie, KT.Indeks, KT.NazwaSkr, X.id_akwizytor, X.id_kartoteka, X.cBazowa, X.cNetto order by PH.NazwiskoImie, KT.Indeks into :xPH, :xIndeks, :xIdentyfikator, :aIdPH, :aId_kartoteka, :xcBazowa, :xcNetto, :xIlosc do begin xZrodlo = 'T'; xwNetto = 0; xMarzaW = 0; xMarzaP = 0; if (xilosc<>0) then begin xwNetto = :xcNetto * :xIlosc; xMarzaW = :xIlosc * (:xCNetto - :xCBazowa); if (xIlosc>0) then xMarzaP = 100* (:xCNetto - :xCBazowa)/:xcNetto; end suspend; end end /#PROCDEF_KATALOG#/ Zestawienia proceduralne /#PROCDEF_PLUGINSTYPE#/ 0 /#PROCDEF_PLUGINS_A#/ /#PROCDEF_PLUGINS_B#/ /#STOP_PROC#/ /#START_PARAMS#/ /#PROCDEFPARAM_TYTUL#/ Cena bazowa /#PROCDEFPARAM_NAZWA#/ id_defceny /#PROCDEFPARAM_OPISTYP#/ Integer /#PROCDEFPARAM_RODZAJ#/ 0 /#PROCDEFPARAM_ROZMIAR#/ /#PROCDEFPARAM_TYP#/ 0 /#PROCDEFPARAM_TYTUL#/ Data od /#PROCDEFPARAM_NAZWA#/ xDtOd /#PROCDEFPARAM_OPISTYP#/ TimeStamp /#PROCDEFPARAM_RODZAJ#/ 0 /#PROCDEFPARAM_ROZMIAR#/ /#PROCDEFPARAM_TYP#/ 3 /#PROCDEFPARAM_TYTUL#/ Data do /#PROCDEFPARAM_NAZWA#/ xDtDo /#PROCDEFPARAM_OPISTYP#/ TimeStamp /#PROCDEFPARAM_RODZAJ#/ 0 /#PROCDEFPARAM_ROZMIAR#/ /#PROCDEFPARAM_TYP#/ 3 /#PROCDEFPARAM_TYTUL#/ Handlowiec /#PROCDEFPARAM_NAZWA#/ xPH /#PROCDEFPARAM_OPISTYP#/ Varchar(200) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 200 /#PROCDEFPARAM_TYP#/ 4 /#PROCDEFPARAM_TYTUL#/ /#PROCDEFPARAM_NAZWA#/ aTypDok /#PROCDEFPARAM_OPISTYP#/ Integer /#PROCDEFPARAM_RODZAJ#/ 2 /#PROCDEFPARAM_ROZMIAR#/ /#PROCDEFPARAM_TYP#/ 0 /#PROCDEFPARAM_TYTUL#/ Cena bazowa /#PROCDEFPARAM_NAZWA#/ xcBazowa /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#PROCDEFPARAM_TYTUL#/ /#PROCDEFPARAM_NAZWA#/ aIdPH /#PROCDEFPARAM_OPISTYP#/ Integer /#PROCDEFPARAM_RODZAJ#/ 2 /#PROCDEFPARAM_ROZMIAR#/ /#PROCDEFPARAM_TYP#/ 0 /#PROCDEFPARAM_TYTUL#/ /#PROCDEFPARAM_NAZWA#/ aLpPoz /#PROCDEFPARAM_OPISTYP#/ Integer /#PROCDEFPARAM_RODZAJ#/ 2 /#PROCDEFPARAM_ROZMIAR#/ /#PROCDEFPARAM_TYP#/ 0 /#PROCDEFPARAM_TYTUL#/ Źródło /#PROCDEFPARAM_NAZWA#/ xZrodlo /#PROCDEFPARAM_OPISTYP#/ Varchar(5) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 5 /#PROCDEFPARAM_TYP#/ 4 /#PROCDEFPARAM_TYTUL#/ Indeks /#PROCDEFPARAM_NAZWA#/ xIndeks /#PROCDEFPARAM_OPISTYP#/ Varchar(50) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 50 /#PROCDEFPARAM_TYP#/ 4 /#PROCDEFPARAM_TYTUL#/ Kartoteka /#PROCDEFPARAM_NAZWA#/ xIdentyfikator /#PROCDEFPARAM_OPISTYP#/ Varchar(150) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 150 /#PROCDEFPARAM_TYP#/ 4 /#PROCDEFPARAM_TYTUL#/ Cena netto /#PROCDEFPARAM_NAZWA#/ xcNetto /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#PROCDEFPARAM_TYTUL#/ Sprzedaż netto /#PROCDEFPARAM_NAZWA#/ xwNetto /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#PROCDEFPARAM_TYTUL#/ Ilość /#PROCDEFPARAM_NAZWA#/ xIlosc /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#PROCDEFPARAM_TYTUL#/ /#PROCDEFPARAM_NAZWA#/ aIdNagl /#PROCDEFPARAM_OPISTYP#/ Integer /#PROCDEFPARAM_RODZAJ#/ 2 /#PROCDEFPARAM_ROZMIAR#/ /#PROCDEFPARAM_TYP#/ 0 /#PROCDEFPARAM_TYTUL#/ /#PROCDEFPARAM_NAZWA#/ aSprzedazwBazowej /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 2 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#PROCDEFPARAM_TYTUL#/ /#PROCDEFPARAM_NAZWA#/ aCenaRozn /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 2 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#PROCDEFPARAM_TYTUL#/ Marża (W) /#PROCDEFPARAM_NAZWA#/ xMarzaW /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#PROCDEFPARAM_TYTUL#/ Marża (%) /#PROCDEFPARAM_NAZWA#/ xMarzaP /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#PROCDEFPARAM_TYTUL#/ /#PROCDEFPARAM_NAZWA#/ aId_kartoteka /#PROCDEFPARAM_OPISTYP#/ Integer /#PROCDEFPARAM_RODZAJ#/ 2 /#PROCDEFPARAM_ROZMIAR#/ /#PROCDEFPARAM_TYP#/ 0 /#PROCDEFPARAM_TYTUL#/ Średnia marża /#PROCDEFPARAM_NAZWA#/ xSrMarza /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 1 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#PROCDEFPARAM_TYTUL#/ /#PROCDEFPARAM_NAZWA#/ aCenaPo /#PROCDEFPARAM_OPISTYP#/ Numeric(18,2) /#PROCDEFPARAM_RODZAJ#/ 2 /#PROCDEFPARAM_ROZMIAR#/ 18,2 /#PROCDEFPARAM_TYP#/ 1 /#STOP_PARAMS#/