strpom := 'U₧ivatel > '+uzivname+' < nenφ dosud zalo₧en(a).'#10'Chcete ho zalo₧it prßv∞ te∩ a pokraΦovat?'#10'(nutnΘ pouze na stran∞ webserveru)';
if YesNo_box('Varovßnφ',strpom) then
if Create_user(uzivname,'Internet','','user','', homesrv ,'',usernum) then Signalize;
end; //1
if not Find_object(uzivname,CATEG_USER,usernum) then
begin //1
rolename:="Internet_user";
if Find_object(rolename,CATEG_ROLE,rolenum) then
begin //2
strpom := ' nebyla nalezena. '#10'Chcete roli zalo₧it prßv∞ te∩ a pokraΦovat?';
if Yesno_box('Role Internet_User', strpom) then
if Insert_object("Internet_user",CATEG_ROLE,rolenum) then Signalize;
end; //2
if not Find_object(rolename,CATEG_ROLE,rolenum) then
begin //2
if GetSet_group_role(usernum,rolenum, CATEG_ROLE,OPER_GET,stav) then Signalize
else
if stav=0 then
begin //3
strpom := 'nenφ obsazen do role Internet_User. '#10'Chcete ho obsadit prßv∞ te∩ a pokraΦovat?';
if Yesno_box('U₧ivatel __WEB', strpom) then
begin //4
stav:=1;
if GetSet_group_role(usernum,rolenum, CATEG_ROLE,OPER_SET,stav) then Signalize
end; //4
end; //3
if GetSet_group_role(usernum,rolenum, CATEG_ROLE,OPER_GET,stav) then Signalize
else
if stav=0 then
begin //3
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="Internet user - __web";
CHYBY[chrec].irec:=0;
CHYBY[chrec].ID:=0;
CHYBY[chrec].CHYBA:="U₧ivatel __WEB nenφ obsazen do role Internet_user, bez toho nebudou funkΦnφ www objekty, u₧ivatel nebude mφt prßvo www objekty pou₧φvat";
end;
end //2
else
begin
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="OBJTAB";
CHYBY[chrec].irec:=0;
CHYBY[chrec].ID:=0;
CHYBY[chrec].CHYBA:="V aplikaci nenφ role Internet_user, bez tΘto role nebudete mφt prßvo pou₧φvat www objekty";
end;
end //1
else
begin
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="USERTAB";
CHYBY[chrec].irec:=0;
CHYBY[chrec].ID:=0;
CHYBY[chrec].CHYBA:="Na serveru nenφ u₧ivatel __WEB, bez tohoto u₧ivatele nebudou funkΦnφ www objekty";
end;
Rec_cnt(SYS_PAR, pocet);
if (pocet=1) then
begin
if sys_par[0].aplname<>Current_application then
begin
OK:=YesNo_box("JmΘno aplikace uvedenΘ v tabulce SYS_PAR"," nesouhlasφ se jmΘnem spuÜt∞nΘ aplikace, chcete ho p°epsat?");
if OK then sys_par[0].aplname:=Current_application
else
begin
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="SYS_PAR";
CHYBY[chrec].irec:=0;
CHYBY[chrec].ID:=0;
CHYBY[chrec].CHYBA:=sys_par[0].aplname+": jmΘno aplikace, uvedenΘ v tabulce SYS_PAR nesouhlasφ se jmΘnem spuÜt∞nΘ aplikace: "+Current_application;
if Open_SQL_cursor(ctest, "SELECT DISTINCT Obchodnici.logname FROM Obchodnici") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for i:=0 to pocet-1 do
begin //2
logname:=ctest[i].logname;
if Find_object(logname,CATEG_USER,usernum) then
begin //5
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="Obchodnici";
u:=logname;
ntab:=Look_up(Obchodnici,"logname",u);
if ntab<>-1 then
begin //6
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=Obchodnici[ntab].id_obchodnika;
end //6
else
begin //6
CHYBY[chrec].irec:=-1;
CHYBY[chrec].ID:=-1;
end; //6
if logname="" then CHYBY[chrec].CHYBA:="V tabulce OBCHODNICI nenφ zadanΘ p°ihlaÜovacφ jmΘno obchodnφka"
else CHYBY[chrec].CHYBA:="V tabulce OBCHODNICI je p°ihlaÜovacφ jmΘno ("+logname+"), kterΘ nenφ v seznamu u₧ivatel∙ na serveru, po₧ßdejte administrßtora aplikace o jeho vytvo°enφ a obsazenφ do role Obchodnφci";
end //5
else
begin //5
if Find_object('Obchodnici',CATEG_ROLE,rolenum) then
begin //6
chrec:=Insert(CHYBY);
CHYBY[chrec].irec:=-1;
CHYBY[chrec].ID:=-1;
CHYBY[chrec].TABNAME:="Obchodnici";
CHYBY[chrec].CHYBA:="Nelze nalΘzt roli Obchodnφci";
end //6
else
begin //6
if GetSet_group_role(usernum,rolenum, CATEG_ROLE,OPER_GET,stav) then Signalize;
if stav=0 then
begin //7
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="Obchodnici";
u:=logname;
ntab:=Look_up(Obchodnici,"logname",u);
if ntab<>-1 then
begin //8
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=Obchodnici[ntab].id_obchodnika;
end //8
else
begin //8
CHYBY[chrec].irec:=-1;
CHYBY[chrec].ID:=-1;
end; //8
CHYBY[chrec].CHYBA:="Obchodnik s p°ihlaÜovacφm jmΘnem- ("+logname+"), nenφ obsazen do role Obchodnφci";
CHYBY[chrec].CHYBA:="V cenφcφch nesouhlasφ poΦet zßznam∙, v tabulce cenik je ("+int2str(pocetc)+") zßznam∙, v tabulce CENIK je ("+int2str(pocet)+") zßznam∙. ";
end; //1
//test rabatu zadan²ch v Cenφku
if Open_SQL_cursor(ctest, "SELECT DISTINCT rabat FROM Cenik") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for i:=0 to pocet-1 do
begin //2
pomID:=ctest[i].rabat;
if ((pomID<>NONEINTEGER) AND (pomID<>0)) then
begin //20
u:=pomID;
irec:=Look_up(RABAT_HEADER,"metoda",u);
if irec=-1 then
begin //3
Q:="SELECT id_cenik, rabat FROM Cenik WHERE rabat="+int2str(pomID);
if Open_SQL_cursor(c, Q) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //4
for j:=0 to pocetc-1 do
begin //5
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="Cenik";
Translate(c,j,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[j].id_cenik;
CHYBY[chrec].CHYBA:="V tabulce CENIK je rabatovß metoda ("+int2str(pomID)+"), kterß nenφ v tabulce RABAT_HEADER";
end; //5
end; //4
close_cursor(c);
end; //3
end; //20
end; //2
end; //1
close_cursor(ctest);
//test za°azenφ do skupin v Cenφku
if Open_SQL_cursor(ctest, "SELECT DISTINCT skupina_zbozi FROM Cenik") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for i:=0 to pocet-1 do
begin //2
pomID:=ctest[i].skupina_zbozi;
u:=pomID;
irec:=Look_up(S_ZBOZI_SK,"id_skupiny",u);
if irec=-1 then
begin //3
if pomID=NONEINTEGER then Q:="SELECT id_cenik,skupina_zbozi FROM Cenik WHERE skupina_zbozi IS NULL "
else Q:="SELECT id_cenik,skupina_zbozi FROM Cenik WHERE skupina_zbozi="+int2str(pomID);
if Open_SQL_cursor(c, Q) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //4
for j:=0 to pocetc-1 do
begin //5
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="Cenik";
Translate(c,j,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[j].id_cenik;
if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce CENIK je polo₧ka neza°azenß do skupiny"
else CHYBY[chrec].CHYBA:="V tabulce CENIK je polo₧ka za°azenß do skupiny ("+int2str(pomID)+"), kterß nenφ v tabulce S_ZBOZI_SK";
end; //5
end; //4
close_cursor(c);
end; //3
end; //2
end; //1
close_cursor(ctest);
//test DPH pro letoÜnφ rok v Cenφku
if Open_SQL_cursor(ctest, "SELECT DISTINCT DPH FROM Cenik") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for i:=0 to pocet-1 do
begin //2
pomID:=ctest[i].DPH;
if pomID=NONEINTEGER then pocetc:=0
else
begin
podm:="uc_rok="+int2str(year(today))+ " AND ID_DPH=" + int2str(pomID);
if Open_sql_parts(c, "*", "S_DPH", podm, "") then Signalize
else Rec_cnt(c, pocetc);
close_cursor(c);
end;
if pocetc<=0 then
begin //3
if pomID=NONEINTEGER then Q:="SELECT id_cenik, DPH FROM Cenik WHERE DPH IS NULL"
else Q:="SELECT id_cenik, DPH FROM Cenik WHERE DPH="+int2str(pomID);
if Open_SQL_cursor(c, Q) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //4
for j:=0 to pocetc-1 do
begin //5
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="Cenik";
Translate(c,j,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[j].id_cenik;
if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce CENIK nenφ zadßno DPH pro letoÜnφ rok"
else CHYBY[chrec].CHYBA:="V tabulce CENIK je DPH ("+int2str(pomID)+"), kterΘ nenφ v tabulce S_DPH pro letoÜnφ rok";
end; //5
end; //4
close_cursor(c);
end; //3
end; //2
end; //1
close_cursor(ctest);
//test napln∞nφ cenφku
if Open_SQL_cursor(ctest, "SELECT deal_id FROM S_DEAL_SK WHERE kod<>"""" ") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for j:=0 to pocet-1 do
begin //2
pomdealsk:=ctest[j].deal_id;
case pomdealsk of
1: strcena:="cena1";
2: strcena:="cena2";
3: strcena:="cena3";
4: strcena:="cena4";
5: strcena:="cena5";
6: strcena:="cena6";
7: strcena:="cena7";
8: strcena:="cena8";
9: strcena:="cena9";
else: strcena:="min_cena";
end;
podm:="SELECT id_cenik FROM cenik WHERE "+strcena+" IS NULL";
if Open_SQL_cursor(c,podm) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //3
for i:=0 to pocetc-1 do
begin //4
pomID:=c[i].id_cenik;
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="cenik";
Translate(c,i,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[i].id_cenik;
CHYBY[chrec].CHYBA:="V tabulce cenik je polo₧ka ("+int2str(pomID)+"), u kterΘ nenφ zadanß "+strcena;
pocet, pocetc, i, j, pomID, delka1 , delka2: integer;
chrec, irec:trecnum;
chybatxt:string[2000];
Q:string[254];
ctest, c: cursor;
ncurs, ntab: trecnum;
pomstr:string[100];
begin
//test rabatu zadan²ch ve skupinßch zbo₧φ
/*
if Open_SQL_cursor(ctest, "SELECT DISTINCT rabat FROM S_ZBOZI_SK WHERE last=TRUE") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for i:=0 to pocet-1 do
begin //2
pomID:=ctest[i].rabat;
if (pomID<>0) then
begin //20
u:=pomID;
irec:=Look_up(RABAT_HEADER,"metoda",u);
if irec=-1 then
begin //3
if pomID=NONEINTEGER then Q:="SELECT id_skupiny, rabat FROM S_ZBOZI_SK WHERE rabat IS NULL"
else Q:="SELECT id_skupiny, rabat FROM S_ZBOZI_SK WHERE rabat="+int2str(pomID);
if Open_SQL_cursor(c, Q) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //4
for j:=0 to pocetc-1 do
begin //5
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:=" S_ZBOZI_SK";
Translate(c,j,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[j].id_skupiny;
if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce S_ZBOZI_SK nenφ zadßnß rabatovß metoda"
else CHYBY[chrec].CHYBA:="V tabulce S_ZBOZI_SK je rabatovß metoda ("+int2str(pomID)+"), kterß nenφ v tabulce RABAT_HEADER";
end; //5
end; //4
close_cursor(c);
end; //3
end; //20
end; //2
end; //1
close_cursor(ctest);
*/
//test max. ·rovn∞
if Open_sql_parts(c, "MAX(uroven) AS M", "KOD_STRUCTURA", "", "") then Signalize
else
begin
pocet:=C[0].M;
close_cursor(c);
end;
if Open_sql_parts(c, "MAX(uroven) AS M", "S_ZBOZI_SK", "", "") then Signalize
else
begin
pocetc:=C[0].M;
close_cursor(c);
end;
if pocet <> pocetc then
begin //1
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="S_ZBOZI_SK";
CHYBY[chrec].irec:=pocet;
CHYBY[chrec].ID:=pocetc;
CHYBY[chrec].CHYBA:="V tabulce S_ZBOZI_SK nesouhlasφ max. ·rove≥ ("+int2str(pocetc)+") a max. ·rovnφ v tabulce KOD_STRUCTURA ("+int2str(pocet)+")";
end; //1
Rec_cnt(KOD_STRUCTURA, pocet);
if pocet>0 then
for i:=0 to pocet-1 do
begin
pomID:=KOD_STRUCTURA[i].uroven;
Q:="SELECT SUM(pocet_zn) AS DELKA FROM KOD_STRUCTURA WHERE uroven<="+int2str(pomID);
if Open_SQL_cursor(ctest, Q) then Signalize
else delka1:=ctest[0].delka;
close_cursor(ctest);
if delka1>0 then
begin //3
Q:="SELECT id_skupiny, uroven, KOD_Skupiny FROM S_ZBOZI_SK WHERE uroven="+int2str(pomID);
if Open_SQL_cursor(c, Q) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //4
for j:=0 to pocetc-1 do
begin //5
pomstr:=c[j].KOD_Skupiny;
delka2:=Strlength(pomstr);
if delka2<>delka1 then
begin //6
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:=" S_ZBOZI_SK";
Translate(c,j,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[j].id_skupiny;
CHYBY[chrec].CHYBA:="V tabulce S_ZBOZI_SK je kod skupiny"+pomstr+" o dΘlce ("+int2str(delka2)+"), kterß nesouhlasφ s po₧adovanou dΘlkou("+int2str(delka1)+"), v tabulce KOD_STRUCTURA";
end; //6
end; //5
end; //4
close_cursor(c);
end; //3
end; //20
end;
FUNCTION Test_OBJ():Boolean;
var
u: untyped;
pocet, pocetc, i, j, pomID: integer;
chrec, irec:trecnum;
chybatxt:string[2000];
Q:string[254];
ctest, c: cursor;
ncurs, ntab: trecnum;
pomstr:string[50];
begin
//test zßkaznφk∙
if Open_SQL_cursor(ctest, "SELECT DISTINCT id_org FROM OBJ_HEADER") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for i:=0 to pocet-1 do
begin //2
pomID:=ctest[i].id_org;
u:=pomID;
irec:=Look_up(OBCHODNI_PARTNERI,"id",u);
if irec=-1 then
begin //3
if pomID=NONEINTEGER then Q:="SELECT id_dobj,id_org FROM OBJ_HEADER WHERE id_org IS NULL "
else Q:="SELECT id_dobj,id_org FROM OBJ_HEADER WHERE id_org="+int2str(pomID);
if Open_SQL_cursor(c, Q) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //4
for j:=0 to pocetc-1 do
begin //5
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="OBJ_HEADER";
Translate(c,j,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[j].id_dobj;
if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce OBJ_HEADER nenφ objednßvka p°i°azena zßkaznφkovi "
else CHYBY[chrec].CHYBA:="V tabulce OBJ_HEADER je objednßvka s neznßm²m zßkaznφkem ("+int2str(pomID)+"), kter² nenφ v tabulce OBCHODNI_PARTNERI";
end; //5
end; //4
close_cursor(c);
end; //3
end; //2
end; //1
close_cursor(ctest);
//test doprava
if Open_SQL_cursor(ctest, "SELECT DISTINCT doprav FROM OBJ_HEADER") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for i:=0 to pocet-1 do
begin //2
pomstr:=ctest[i].doprav;
u:=pomstr;
irec:=Look_up(S_DOPRAVA,"kod",u);
if irec=-1 then
begin //3
if pomstr="" then Q:="SELECT id_dobj,doprav FROM OBJ_HEADER WHERE doprav IS NULL"
else Q:="SELECT id_dobj,doprav FROM OBJ_HEADER WHERE doprav="+""""+pomstr+"""";
if Open_SQL_cursor(c, Q) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //4
for j:=0 to pocetc-1 do
begin //5
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="OBJ_HEADER";
Translate(c,j,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[j].id_dobj;
if pomstr="" then CHYBY[chrec].CHYBA:="V tabulce OBJ_HEADER nenφ v objednßvce zadßn zp∙sob dopravy"
else CHYBY[chrec].CHYBA:="V tabulce OBJ_HEADER je v objednßvce s neznßm² zp∙sob dopravy ("+pomstr+"), kter² nenφ v tabulce S_DOPRAVA";
end; //5
end; //4
close_cursor(c);
end; //3
end; //2
end; //1
close_cursor(ctest);
//test polo₧ky-header
if Open_SQL_cursor(ctest, "SELECT DISTINCT id_dobj FROM OBJ_POLOZKY") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for i:=0 to pocet-1 do
begin //2
pomID:=ctest[i].id_dobj;
u:=pomID;
irec:=Look_up(OBJ_HEADER,"id_dobj",u);
if irec=-1 then
begin //3
if pomID=NONEINTEGER then Q:="SELECT id_dobj FROM OBJ_POLOZKY WHERE id_dobj IS NULL"
else Q:="SELECT id_dobj FROM OBJ_POLOZKY WHERE id_dobj="+int2str(pomID);
if Open_SQL_cursor(c, Q) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //4
for j:=0 to pocetc-1 do
begin //5
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="OBJ_POLOZKY";
Translate(c,j,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[j].id_dobj;
if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce OBJ_POLOZKY jsou polo₧ky bez hlaviΦky OBJ_HEADER"
else CHYBY[chrec].CHYBA:="V tabulce OBJ_POLOZKY je objednßvka ("+int2str(pomID)+"), kterß nenφ v tabulce OBJ_HEADER";
end; //5
end; //4
close_cursor(c);
end; //3
end; //2
end; //1
close_cursor(ctest);
//test polo₧ky-cenik
if Open_SQL_cursor(ctest, "SELECT DISTINCT id_cnk FROM OBJ_POLOZKY") then Signalize
else Rec_cnt(ctest, pocet);
if pocet>0 then
begin //1
for i:=0 to pocet-1 do
begin //2
pomID:=ctest[i].id_cnk;
u:=pomID;
irec:=Look_up(cenik,"id_cenik",u);
if irec=-1 then
begin //3
if pomID=NONEINTEGER then Q:="SELECT id_dobj, id_cnk FROM OBJ_POLOZKY WHERE id_cnk IS NULL "
else Q:="SELECT id_dobj, id_cnk FROM OBJ_POLOZKY WHERE id_cnk="+int2str(pomID);
if Open_SQL_cursor(c, Q) then Signalize
else Rec_cnt(c, pocetc);
if pocetc>0 then
begin //4
for j:=0 to pocetc-1 do
begin //5
chrec:=Insert(CHYBY);
CHYBY[chrec].TABNAME:="OBJ_POLOZKY";
Translate(c,j,0,ntab);
CHYBY[chrec].irec:=ntab;
CHYBY[chrec].ID:=c[j].id_dobj;
if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce OBJ_POLOZKY bez odkazu na Cenik"
else CHYBY[chrec].CHYBA:="V tabulce OBJ_POLOZKY je polo₧ka cenφku ("+int2str(pomID)+"), kterß nenφ v tabulce cenik";