home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / tema / SW602 / Winbase / EShop_demo / TESTY.PGM < prev    next >
Text File  |  2000-03-16  |  48KB  |  1,284 lines

  1. {$$3220792584                                }INCLUDE
  2.  
  3. Table CHYBY, S_DOPRAVA, CEN_SLEVY; 
  4.  
  5. procedure test_uziv();
  6. /*********************************************************************/
  7.  var
  8.   uzivname, rolename : string[50];
  9.   query, strpom : string[255];
  10.   pocet,stav      : integer;
  11.   curs       : cursor;
  12.   chrec      : trecnum;
  13.   usernum, rolenum: tobjnum;
  14.   homesrv : binary[12];
  15.   OK: Boolean;
  16.  
  17. begin  //0
  18.     uzivname:="__WEB";
  19.     if Find_object(uzivname,CATEG_USER,usernum) then
  20.      begin //1  
  21.        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)';
  22.        if  YesNo_box('Varovßnφ',strpom) then
  23.          if Create_user(uzivname,'Internet','','user','', homesrv ,'',usernum) then Signalize;
  24.      end;  //1
  25.  
  26.  
  27.     if  not Find_object(uzivname,CATEG_USER,usernum) then
  28.      begin   //1
  29.        rolename:="Internet_user";
  30.         if Find_object(rolename,CATEG_ROLE,rolenum) then 
  31.           begin //2
  32.             strpom := '  nebyla nalezena. '#10'Chcete roli zalo₧it prßv∞ te∩ a pokraΦovat?';
  33.             if Yesno_box('Role Internet_User', strpom) then 
  34.             if  Insert_object("Internet_user",CATEG_ROLE,rolenum) then  Signalize;
  35.           end;    //2
  36.  
  37.             if not Find_object(rolename,CATEG_ROLE,rolenum) then 
  38.              begin   //2
  39.                  if GetSet_group_role(usernum,rolenum, CATEG_ROLE,OPER_GET,stav) then Signalize
  40.                     else 
  41.                       if stav=0 then 
  42.                          begin  //3
  43.                             strpom := 'nenφ obsazen do role Internet_User. '#10'Chcete ho obsadit prßv∞ te∩ a pokraΦovat?';
  44.                             if Yesno_box('U₧ivatel __WEB', strpom) then 
  45.                               begin //4
  46.                                  stav:=1;
  47.                                  if GetSet_group_role(usernum,rolenum, CATEG_ROLE,OPER_SET,stav) then Signalize
  48.                               end;  //4
  49.                          end;   //3
  50.                   if GetSet_group_role(usernum,rolenum, CATEG_ROLE,OPER_GET,stav) then Signalize
  51.                     else 
  52.                      if stav=0 then 
  53.                         begin  //3
  54.                            chrec:=Insert(CHYBY);
  55.                            CHYBY[chrec].TABNAME:="Internet user - __web";
  56.                            CHYBY[chrec].irec:=0;
  57.                            CHYBY[chrec].ID:=0;
  58.                            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";
  59.                         end;
  60.              end //2
  61.               else  
  62.                begin
  63.                 chrec:=Insert(CHYBY);
  64.                 CHYBY[chrec].TABNAME:="OBJTAB";
  65.                 CHYBY[chrec].irec:=0;
  66.                 CHYBY[chrec].ID:=0;
  67.                 CHYBY[chrec].CHYBA:="V aplikaci nenφ role Internet_user, bez tΘto role nebudete mφt prßvo pou₧φvat www objekty";
  68.                end;
  69.   
  70.     end //1
  71.       else
  72.        begin
  73.         chrec:=Insert(CHYBY);
  74.         CHYBY[chrec].TABNAME:="USERTAB";
  75.         CHYBY[chrec].irec:=0;
  76.         CHYBY[chrec].ID:=0;
  77.         CHYBY[chrec].CHYBA:="Na serveru nenφ u₧ivatel __WEB, bez tohoto u₧ivatele nebudou funkΦnφ www objekty";
  78.        end;
  79.  
  80.   Rec_cnt(SYS_PAR, pocet);
  81.   if (pocet=1) then 
  82.     begin
  83.       if sys_par[0].aplname<>Current_application then
  84.         begin
  85.           OK:=YesNo_box("JmΘno aplikace uvedenΘ v tabulce SYS_PAR"," nesouhlasφ se jmΘnem spuÜt∞nΘ aplikace, chcete ho p°epsat?");
  86.           if OK then sys_par[0].aplname:=Current_application
  87.                 else
  88.                   begin
  89.                    chrec:=Insert(CHYBY);
  90.                    CHYBY[chrec].TABNAME:="SYS_PAR";
  91.                    CHYBY[chrec].irec:=0;
  92.                    CHYBY[chrec].ID:=0;
  93.                    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;
  94.                   end;
  95.  
  96.         end;
  97.     end;
  98.  
  99.  
  100. end;
  101.  
  102. procedure smaz_prazdne(podm:string[254]);
  103. /*********************************************************************/
  104.  var
  105.   pocet      : integer;
  106.   c          : cursor;
  107. //  idtab      :tobjnum;
  108.  
  109.  begin  
  110.    if Open_SQL_cursor(c, podm) then Signalize
  111.     else Rec_cnt(c, pocet);
  112.    if pocet>0 then   Delete_all_records(c);
  113.     close_cursor(c);
  114. //   if not Find_object("CEN_SLEVY", CATEG_TABLE, idtab) then  Free_deleted(idtab);
  115.  end;
  116.  
  117.  
  118. procedure smaz_tzv_prazdne();
  119. /*********************************************************************/
  120.  var
  121.   podm       : string[254];
  122.   
  123.  begin   //0
  124.    podm:="SELECT * FROM CEN_SLEVY WHERE nad_mnoz IS NULL";
  125.    smaz_prazdne(podm);
  126.  
  127.    podm:="SELECT id_cenik FROM CENIK WHERE id_cenik IS NULL";
  128.    smaz_prazdne(podm);
  129.  
  130.    podm:="SELECT id_cenik FROM  cenik WHERE id_cenik IS NULL";
  131.    smaz_prazdne(podm);
  132.  
  133.    podm:="SELECT idj FROM JEDNOTKA WHERE idj IS NULL";
  134.    smaz_prazdne(podm);
  135.  
  136.    podm:="SELECT * FROM KOD_STRUCTURA WHERE uroven IS NULL";
  137.    smaz_prazdne(podm);
  138.  
  139.    podm:="SELECT id FROM OBCHODNI_PARTNERI WHERE id IS NULL";
  140.    smaz_prazdne(podm);
  141.  
  142.    podm:="SELECT id_obchodnika FROM OBCHODNICI WHERE id_obchodnika IS NULL";
  143.    smaz_prazdne(podm);
  144.  
  145.    podm:="SELECT id_dobj FROM OBJ_HEADER WHERE id_dobj IS NULL";
  146.    smaz_prazdne(podm);
  147.  
  148.  
  149.    podm:="SELECT id_dobj FROM  OBJ_POLOZKY WHERE id_dobj IS NULL";
  150.    smaz_prazdne(podm);
  151.  
  152.    podm:="SELECT metoda FROM RABAT WHERE metoda IS NULL";
  153.    smaz_prazdne(podm);
  154.  
  155.    podm:="SELECT metoda FROM  RABAT_HEADER WHERE metoda IS NULL";
  156.    smaz_prazdne(podm);
  157.  
  158.    podm:="SELECT deal_id FROM S_DEAL_SK WHERE deal_id IS NULL";
  159.    smaz_prazdne(podm);
  160.  
  161.    podm:="SELECT id_doprava FROM S_DOPRAVA  WHERE id_doprava IS NULL";
  162.    smaz_prazdne(podm);
  163.  
  164.    podm:="SELECT id FROM S_PLATBA  WHERE id IS NULL";
  165.    smaz_prazdne(podm);
  166.  
  167.    podm:="SELECT id_dph FROM S_DPH  WHERE id_dph IS NULL";
  168.    smaz_prazdne(podm);
  169.  
  170.    podm:="SELECT id_round FROM S_TAB_ROUND WHERE id_round IS NULL";
  171.    smaz_prazdne(podm);
  172.  
  173.    podm:="SELECT id_typ FROM S_TYP_UZIV WHERE id_typ IS NULL";
  174.    smaz_prazdne(podm);
  175.  
  176.    podm:="SELECT id_skupiny  FROM S_ZBOZI_SK WHERE id_skupiny IS NULL";
  177.    smaz_prazdne(podm);
  178.  
  179.  end;
  180.  
  181.  
  182.  
  183.  
  184. procedure srovnej_lastid();
  185. /*********************************************************************/
  186. //najde v tabulkßch poslednφ id a zapφÜe do sys_par
  187. var
  188.  curs:cursor;
  189.  ipom, pocet: integer;
  190.  podm:string[100];
  191.  
  192.  begin
  193.      Set_status_text("Porovnßvßm maximßlnφ ID v tabulkßch s hodnotou v tabulce SYS_PAR.");
  194.       podm:="uc_rok="+int2str(year(today));
  195.       if Open_sql_parts(curs, "*", "S_DPH", podm, "") then Signalize
  196.       else Rec_cnt(curs, pocet);
  197.       if pocet<=0 then Info_box("UPOZORN╠N═", "Pro letoÜnφ rok jste nezadali skupiny DPH");
  198.       close_cursor(curs);
  199.  
  200.       if Open_sql_parts(curs, "MAX(id_cenik) AS M", "cenik", "", "") then Signalize
  201.       else
  202.        begin
  203.          ipom:=CURS[0].M;
  204.          if sys_par[0].id_last_c<ipom then sys_par[0].id_last_c:=CURS[0].M;
  205.        end;
  206.       close_cursor(curs);
  207.  
  208.       if Open_sql_parts(curs, "MAX(id_dobj) AS M", "OBJ_HEADER", "", "") then Signalize
  209.       else 
  210.        begin
  211.          ipom:=CURS[0].M;
  212.          if sys_par[0].id_last_r<ipom then sys_par[0].id_last_r:=CURS[0].M;
  213.        end;
  214.       close_cursor(curs);
  215.  
  216.       if Open_sql_parts(curs, "MAX(id) AS M", "OBCHODNI_PARTNERI", "", "") then Signalize
  217.       else 
  218.        begin
  219.          ipom:=CURS[0].M;
  220.          if sys_par[0].id_last_od<ipom then sys_par[0].id_last_od:=CURS[0].M;
  221.         end;
  222.       close_cursor(curs);
  223.  
  224.       if Open_sql_parts(curs, "MAX(id_obchodnika) AS M", "OBCHODNICI", "", "") then Signalize
  225.       else 
  226.        begin
  227.          ipom:=CURS[0].M;
  228.          if sys_par[0].id_last_obch<ipom then sys_par[0].id_last_obch:=CURS[0].M;
  229.        end;
  230.       close_cursor(curs);
  231.  
  232.      Set_status_text("");
  233.    Info_box("","Kontrola ID dokonΦena");
  234.  end;
  235.  
  236.  
  237. procedure Zaloz_tab();
  238. /*********************************************************************/
  239. var
  240.   infostr, infoname:string[255];
  241.   NAME:string[100];
  242.   idtab:tobjnum;
  243.   i, pocet:integer;
  244.   prennum:tobjnum;
  245.   
  246. begin
  247.      pocet:=0;
  248.  //zalo₧enφ tabulky   KOD_STRUCTURA POCET_ZN 
  249.    Set_status_text("Tabulka KOD_STRUCTURA struktura skupin.");
  250.       Rec_cnt(KOD_STRUCTURA, pocet);
  251.       if pocet<=0 then 
  252.        begin
  253.         irec:=Insert(KOD_STRUCTURA); 
  254.         KOD_STRUCTURA[irec].UROVEN:=0;
  255.         KOD_STRUCTURA[irec].POCET_ZN:=1;
  256.        end; 
  257.  
  258.      pocet:=0;
  259.  //zalo₧enφ tabulky pro zaokrouhlovßnφ
  260.    Set_status_text("Tabulka S_TAB_ROUND pro zaokrouhlovßnφ.");
  261.       Rec_cnt(S_TAB_ROUND, pocet);
  262.       if pocet<=0 then 
  263.        begin
  264.         irec:=Insert(S_TAB_ROUND); 
  265.         S_TAB_ROUND[irec].ID_ROUND:=0;
  266.         S_TAB_ROUND[irec].koef:=0.010;
  267.         S_TAB_ROUND[irec].nazev:="bez zaokrouhlenφ";
  268.         irec:=Insert(S_TAB_ROUND); 
  269.         S_TAB_ROUND[irec].ID_ROUND:=1;
  270.         S_TAB_ROUND[irec].koef:=0.100;
  271.         S_TAB_ROUND[irec].nazev:="desetihalΘ°e";
  272.         irec:=Insert(S_TAB_ROUND); 
  273.         S_TAB_ROUND[irec].ID_ROUND:=2;
  274.         S_TAB_ROUND[irec].koef:=1.000;
  275.         S_TAB_ROUND[irec].nazev:="koruny";
  276.        end; 
  277.  
  278.      pocet:=0;
  279.  //zalo₧enφ tabulky typ u₧ivatele
  280.    Set_status_text("Tabulka S_TYP_UZIV - typ u₧ivatele.");
  281.       Rec_cnt(S_TYP_UZIV, pocet);
  282.       if pocet<=0 then 
  283.        begin
  284.         irec:=Insert(S_TYP_UZIV); 
  285.         S_TYP_UZIV[irec].ID_TYP:=1;
  286.         S_TYP_UZIV[irec].nazev_TYP:="Soukromß osoba";
  287.         irec:=Insert(S_TYP_UZIV); 
  288.         S_TYP_UZIV[irec].ID_TYP:=3;
  289.         S_TYP_UZIV[irec].nazev_TYP:="Fyzickß osoba";
  290.         irec:=Insert(S_TYP_UZIV); 
  291.         S_TYP_UZIV[irec].ID_TYP:=5;
  292.         S_TYP_UZIV[irec].nazev_TYP:="Prßvnickß osoba";
  293.        end; 
  294.  
  295.      pocet:=0;
  296.  //zalo₧enφ tabulky formulß°e
  297.    Set_status_text("Tabulka S_PLATBA pro v²b∞r formulß°e.");
  298.       Rec_cnt(S_PLATBA, pocet);
  299.       if pocet<=0 then 
  300.        begin
  301.         irec:=Insert(S_PLATBA); 
  302.         S_PLATBA[irec].ID:=0;
  303.         S_PLATBA[irec].nazev:="Bez formulß°e";
  304.         irec:=Insert(S_PLATBA); 
  305.         S_PLATBA[irec].ID:=1;
  306.         S_PLATBA[irec].nazev:="P°φkaz k ·hrad∞";
  307.         irec:=Insert(S_PLATBA); 
  308.         S_PLATBA[irec].ID:=2;
  309.         S_PLATBA[irec].nazev:="Proforma";
  310.         irec:=Insert(S_PLATBA); 
  311.         S_PLATBA[irec].ID:=3;
  312.         S_PLATBA[irec].nazev:="Slo₧enka";
  313.         irec:=Insert(S_PLATBA); 
  314.         S_PLATBA[irec].ID:=4;
  315.         S_PLATBA[irec].nazev:="Expandia";
  316.         irec:=Insert(S_PLATBA); 
  317.         S_PLATBA[irec].ID:=5;
  318.         S_PLATBA[irec].nazev:="SET KB";
  319.        end; 
  320.  
  321.      pocet:=0;
  322. //zalo₧enφ tabulky SYS_PAR
  323.    Set_status_text("Tabulka SYS_PAR.");
  324.       Rec_cnt(SYS_PAR, pocet);
  325.       if pocet<=0 then irec:=Insert(SYS_PAR);
  326.       if pocet>1 then 
  327.        begin
  328.         Info_box("!!!!!", "V tabulce SYS_PAR je vφce ne₧ 1 zßznam, co₧ m∙₧e zp∙sobit nefunkΦnost celΘ aplikace"); 
  329.         Info_box("!!!!!", "ZruÜte a uvoln∞te nadbyteΦnΘ zßznamy!"); 
  330.        end;
  331.    Set_status_text("");
  332.  
  333.  
  334.      pocet:=0;
  335. //zalo₧enφ tabulky EP_EXPANDIA
  336.    Set_status_text("Tabulka EP_EXPANDIA.");
  337.       Rec_cnt(EP_EXPANDIA, pocet);
  338.       if pocet<=0 then irec:=Insert(EP_EXPANDIA);
  339.       if pocet>1 then 
  340.        begin
  341.         Info_box("!!!!!", "V tabulce EP_EXPANDIA je vφce ne₧ 1 zßznam, co₧ m∙₧e zp∙sobit problΘmy p°i odesφlßnφ objednßvky"); 
  342.         Info_box("!!!!!", "ZruÜte a uvoln∞te nadbyteΦnΘ zßznamy!"); 
  343.        end;
  344.    Set_status_text("");
  345.  
  346.  
  347.      pocet:=0;
  348. //zalo₧enφ tabulky INFO_PROVOZOVATEL
  349.    Set_status_text("Tabulka INFO_PROVOZOVATEL.");
  350.       Rec_cnt(INFO_PROVOZOVATEL, pocet);
  351.       if pocet<=0 then irec:=Insert(INFO_PROVOZOVATEL);
  352.       if pocet>1 then 
  353.        begin
  354.         Info_box("!!!!!", "V tabulce INFO_PROVOZOVATEL je vφce ne₧ 1 zßznam, co₧ m∙₧e zp∙sobit problemy v aplikaci"); 
  355.         Info_box("!!!!!", "ZruÜte a uvoln∞te nadbyteΦnΘ zßznamy!"); 
  356.        end;
  357.    Set_status_text("");
  358.      pocet:=0;
  359. //zalo₧enφ tabulky Default_hodnoty
  360.    Set_status_text("Tabulka Default_hodnoty.");
  361.       Rec_cnt(Default_hodnoty, pocet);
  362.       if pocet<=0 then irec:=Insert(Default_hodnoty);
  363.       if pocet>1 then 
  364.        begin
  365.         Info_box("!!!!!", "V tabulce Default_hodnoty je vφce ne₧ 1 zßznam, co₧ m∙₧e zp∙sobit nefunkΦnost celΘ aplikace"); 
  366.         Info_box("!!!!!", "ZruÜte a uvoln∞te nadbyteΦnΘ zßznamy!"); 
  367.        end;
  368.        
  369.      pocet:=0;
  370. //zalo₧enφ tabulky ZAL_TAB pro zßlohu dat
  371.    Set_status_text("Tabulka ZAL_TAB pro zßlohu dat.");
  372.       Rec_cnt(ZAL_TAB, pocet);
  373.       if pocet<=0 then
  374.        begin
  375.         if Find_object("ZT",CATEG_PGMSRC,prennum) then Signalize
  376.          else  if not Move_data(prennum,"",-1,"",-1,-1,-1,-1,true) then Signalize;
  377.        end;
  378.      Zadej_poradi();
  379.      pocet:=0;
  380.    Set_status_text("");
  381. //zalo₧enφ tabulky S_DEAL_SK  dealersk²ch skupin
  382.    Set_status_text("Tabulka dealersk²ch skupin  S_DEAL_SK.");
  383.       Rec_cnt(S_DEAL_SK, pocet);
  384. //      if pocet<10 then
  385.        begin
  386.          for i:=0 to pocet-1 do 
  387.           begin
  388.            if (S_DEAL_SK[i].DEAL_ID<>i) then  S_DEAL_SK[i].DEAL_ID:=i; 
  389.           end; 
  390.          for i:=pocet to 9 do 
  391.           begin
  392.            irec:=Insert(S_DEAL_SK);
  393.            S_DEAL_SK[irec].DEAL_ID:=i; 
  394.            if i=0 then S_DEAL_SK[irec].DEAL_SKUPINA:="Koncov² zßkaznφk";
  395.           end; 
  396.        end;
  397.    Set_status_text("");
  398. // vytvo°enφ novΘho seznamu u₧ivatel∙ za°azen²ch do role administrßtor a obchodnφci
  399.  uziv0(); 
  400.  
  401. end;
  402.  
  403.  
  404. procedure Uvolni_zrusene();
  405. /*********************************************************************/
  406. var
  407.   infostr, infoname:string[255];
  408.   NAME:string[100];
  409.   idtab:tobjnum;
  410.   i, pocet:integer;
  411.   
  412. begin
  413.    Set_status_text("Uvol≥uji zruÜenΘ zßznamy ve vÜech tabulkßch aplikace");
  414.    if Open_cursor(Seznam_tab) then Signalize
  415.     else Rec_cnt(Seznam_tab, pocet);
  416.    infoname:="Uvol≥uji zruÜenΘ zßznamy ve vÜech tabulkßch aplikace "+Seznam_tab[0].apl; 
  417.    Set_status_text(infoname);
  418.    infoname:="V aplikaci "+Seznam_tab[0].apl +" nebyla nalezena tabulka: "; 
  419.    if pocet>0 then
  420.     for i:=0 to pocet-1 do
  421.      begin //1
  422.        name:=Seznam_tab[i].tab_name;
  423.        infostr:="Uvol≥uji zruÜenΘ zßznamy v tabulce: "+name;
  424.        Set_status_text(infostr);
  425.        infostr:= infoname+name;
  426.        if not Find_object(name, CATEG_TABLE, idtab) then  Free_deleted(idtab) else Info_box("", infostr);
  427.      end;   //1
  428.    close_cursor(Seznam_tab);
  429.    Info_box("","Uvol≥ovßnφ zruÜen²ch zßznam∙ tabulek aplikace bylo dokonΦeno");
  430.    Set_status_text("");
  431. end;
  432.  
  433.  
  434.  FUNCTION Test_defH():Boolean;
  435. /*********************************************************************/
  436.  var
  437.   u          : untyped;
  438.   pocet      : integer;
  439.   chrec, irec: trecnum;
  440.   chybatxt   : string[2000];
  441.   podm       : string[254];
  442.   curs       : cursor;
  443.   
  444.  begin   //0
  445.    Rec_cnt(Default_hodnoty, pocet);
  446.    if pocet<=0 then irec:=Insert(Default_hodnoty);
  447.    if pocet>1 then 
  448.     begin
  449.       Info_box("!!!!!", "V tabulce Default_hodnoty je vφce ne₧ 1 zßznam, co₧ m∙₧e zp∙sobit nefunkΦnost celΘ aplikace"); 
  450.       Info_box("!!!!!", "ZruÜte a uvoln∞te nadbyteΦnΘ zßznamy!"); 
  451.     end;
  452.    if pocet=1 then
  453.     begin  //1
  454.       u:=Default_hodnoty[0].DEAL_SK ;
  455.       irec:=Look_up(S_DEAL_SK,"deal_id",u);
  456.       if irec=-1 then 
  457.        begin
  458.          chrec:=Insert(CHYBY);
  459.          CHYBY[chrec].TABNAME:="Default_hodnoty";
  460.          CHYBY[chrec].irec:=0;
  461.          CHYBY[chrec].ID:=0;
  462.          CHYBY[chrec].CHYBA:="V tabulce DEFAULT_HODNOTY je Φ. dealerskΘ skupiny , kterΘ nenφ v tabulce S_DEAL_SK";
  463.        end;
  464.       u:=Default_hodnoty[0].ZP_DOPRAV;
  465.       irec:=Look_up(S_DOPRAVA,"id_doprava",u);
  466.       if irec=-1 then 
  467.        begin
  468.          chrec:=Insert(CHYBY);
  469.          CHYBY[chrec].TABNAME:="Default_hodnoty";
  470.          CHYBY[chrec].irec:=0;
  471.          CHYBY[chrec].ID:=0;
  472.          CHYBY[chrec].CHYBA:="V tabulce DEFAULT_HODNOTY je zp∙sob dopravy, kter² nenφ v tabulce S_DOPRAVA";
  473.        end;
  474.       u:=Default_hodnoty[0].TYP_UZIV;
  475.       irec:=Look_up(S_TYP_UZIV,"id_typ",u);
  476.       if irec=-1 then 
  477.        begin
  478.          chrec:=Insert(CHYBY);
  479.          CHYBY[chrec].TABNAME:="Default_hodnoty";
  480.          CHYBY[chrec].irec:=0;
  481.          CHYBY[chrec].ID:=0;
  482.          CHYBY[chrec].CHYBA:="V tabulce DEFAULT_HODNOTY je typ u₧ivatele, kter² nenφ v tabulce S_TYP_UZIV";
  483.        end;
  484.       u:=Default_hodnoty[0].OBCHODNIK  ;
  485.       irec:=Look_up(OBCHODNICI,"id_obchodnika",u);
  486.       if irec=-1 then 
  487.        begin
  488.          chrec:=Insert(CHYBY);
  489.          CHYBY[chrec].TABNAME:="Default_hodnoty";
  490.          CHYBY[chrec].irec:=0;
  491.          CHYBY[chrec].ID:=0;
  492.          CHYBY[chrec].CHYBA:="V tabulce DEFAULT_HODNOTY je obchodnφk, kter² nenφ v tabulce OBCHODNICI";
  493.        end;
  494.       u:=Default_hodnoty[0].JEDNOTKA ;
  495.       irec:=Look_up(JEDNOTKA,"idj",u);
  496.       if irec=-1 then 
  497.        begin
  498.          chrec:=Insert(CHYBY);
  499.          CHYBY[chrec].TABNAME:="Default_hodnoty";
  500.          CHYBY[chrec].irec:=0;
  501.          CHYBY[chrec].ID:=0;
  502.          CHYBY[chrec].CHYBA:="V tabulce DEFAULT_HODNOTY je jednotka, kterß nenφ v tabulce JEDNOTKA";
  503.        end;
  504.       podm:="uc_rok="+int2str(year(today))+ " AND ID_DPH=" + int2str(Default_hodnoty[0].DPH);
  505.       if Open_sql_parts(curs, "*", "S_DPH", podm, "") then Signalize
  506.       else Rec_cnt(curs, pocet);
  507.       close_cursor(curs);
  508.       if pocet<=0 then 
  509.        begin
  510.          chrec:=Insert(CHYBY);
  511.          CHYBY[chrec].TABNAME:="Default_hodnoty";
  512.          CHYBY[chrec].irec:=0;
  513.          CHYBY[chrec].ID:=0;
  514.          CHYBY[chrec].CHYBA:="V tabulce DEFAULT_HODNOTY je DPH, kterΘ nenφ v tabulce S_DPH pro letoÜnφ rok";
  515.        end;
  516.  
  517.     end;  //1
  518.  end;   //0
  519.  
  520.  
  521. FUNCTION Test_Obch():Boolean;
  522. /*********************************************************************/
  523. var
  524.   u: untyped;
  525.   stav, pocet, pocetc, i, j, pomID: integer;
  526.   chrec, irec:trecnum;
  527.   chybatxt:string[2000];
  528.   Q:string[254];
  529.   ctest, c: cursor;
  530.   ncurs, ntab: trecnum;
  531.   logname:string[80];
  532.   usernum, rolenum: tobjnum;
  533.  
  534. begin //0
  535.  
  536.   if Open_SQL_cursor(ctest, "SELECT DISTINCT Obchodnici.logname FROM Obchodnici") then Signalize
  537.    else Rec_cnt(ctest, pocet);
  538.      if pocet>0 then
  539.       begin //1
  540.        for i:=0 to pocet-1 do
  541.          begin //2
  542.            logname:=ctest[i].logname;
  543.            if Find_object(logname,CATEG_USER,usernum) then 
  544.              begin //5
  545.                chrec:=Insert(CHYBY);
  546.                CHYBY[chrec].TABNAME:="Obchodnici";
  547.                u:=logname;
  548.                ntab:=Look_up(Obchodnici,"logname",u);
  549.                if ntab<>-1 then
  550.                 begin  //6
  551.                   CHYBY[chrec].irec:=ntab;
  552.                   CHYBY[chrec].ID:=Obchodnici[ntab].id_obchodnika;
  553.                 end   //6
  554.                 else
  555.                  begin   //6
  556.                   CHYBY[chrec].irec:=-1;
  557.                   CHYBY[chrec].ID:=-1;
  558.                  end;    //6
  559.                 if logname="" then CHYBY[chrec].CHYBA:="V tabulce OBCHODNICI nenφ zadanΘ p°ihlaÜovacφ jmΘno obchodnφka"
  560.                 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";
  561.              end //5  
  562.             else
  563.              begin //5
  564.                 if Find_object('Obchodnici',CATEG_ROLE,rolenum) then
  565.                  begin //6 
  566.                    chrec:=Insert(CHYBY);
  567.                    CHYBY[chrec].irec:=-1;
  568.                    CHYBY[chrec].ID:=-1;
  569.                    CHYBY[chrec].TABNAME:="Obchodnici";
  570.                    CHYBY[chrec].CHYBA:="Nelze nalΘzt roli Obchodnφci";
  571.                  end  //6
  572.                 else
  573.                  begin  //6
  574.                    if GetSet_group_role(usernum,rolenum, CATEG_ROLE,OPER_GET,stav) then Signalize;
  575.                    if stav=0 then
  576.                     begin  //7
  577.                      chrec:=Insert(CHYBY);
  578.                      CHYBY[chrec].TABNAME:="Obchodnici";
  579.                      u:=logname;
  580.                      ntab:=Look_up(Obchodnici,"logname",u);
  581.                      if ntab<>-1 then
  582.                        begin  //8
  583.                          CHYBY[chrec].irec:=ntab;
  584.                          CHYBY[chrec].ID:=Obchodnici[ntab].id_obchodnika;
  585.                        end   //8
  586.                      else
  587.                        begin    //8
  588.                          CHYBY[chrec].irec:=-1;
  589.                          CHYBY[chrec].ID:=-1;
  590.                        end;     //8
  591.                      CHYBY[chrec].CHYBA:="Obchodnik s p°ihlaÜovacφm jmΘnem-  ("+logname+"), nenφ obsazen do role Obchodnφci";
  592.                     end;      //7
  593.                  end;      //6
  594.              end;      //5
  595.          end; //2  
  596.  close_cursor(ctest);
  597.       end; //1  
  598. end; //0
  599.  
  600.  
  601. FUNCTION Test_Rabat():Boolean;
  602. /*********************************************************************/
  603. var
  604.   u: untyped;
  605.   pocet, pocetc, i, j, pomID: integer;
  606.   chrec, irec:trecnum;
  607.   chybatxt:string[2000];
  608.   Q:string[254];
  609.   ctest, c: cursor;
  610.   ncurs, ntab: trecnum;
  611.  
  612. begin //0
  613.   if Open_SQL_cursor(ctest, "SELECT DISTINCT metoda FROM RABAT") then Signalize
  614.    else Rec_cnt(ctest, pocet);
  615.      if pocet>0 then
  616.       begin //1
  617.        for i:=0 to pocet-1 do
  618.          begin //2
  619.            pomID:=ctest[i].metoda;
  620.            u:=pomID;
  621.            irec:=Look_up(RABAT_HEADER,"metoda",u);
  622.            if irec=-1 then 
  623.              begin //3
  624.                if pomID=NONEINTEGER then Q:="SELECT  metoda FROM RABAT WHERE metoda IS NULL"
  625.                else Q:="SELECT metoda FROM RABAT WHERE metoda="+int2str(pomID);
  626.                 if Open_SQL_cursor(c, Q) then Signalize
  627.                 else Rec_cnt(c, pocetc);
  628.                  if pocetc>0 then
  629.                    begin //4
  630.                     for j:=0 to pocetc-1 do
  631.                      begin //5
  632.                        chrec:=Insert(CHYBY);
  633.                        CHYBY[chrec].TABNAME:="RABAT";
  634.                        Translate(c,j,0,ntab);
  635.                        CHYBY[chrec].irec:=ntab;
  636.                        CHYBY[chrec].ID:=c[j].metoda;
  637.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce RABAT nenφ zadanß metoda"
  638.                        else CHYBY[chrec].CHYBA:="V tabulce RABAT je metoda ("+int2str(pomID)+"), kterß nenφ v tabulce RABAT_HEADER";
  639.                      end; //5  
  640.                    end; //4    
  641.                 close_cursor(c);
  642.              end; //3
  643.          end;   //2
  644.       end;  //1
  645.  close_cursor(ctest);
  646. end;
  647.  
  648. FUNCTION Test_OP():Boolean;
  649. /*********************************************************************/
  650. var
  651.   u: untyped;
  652.   pocet, pocetc, i, j, pomID: integer;
  653.   chrec, irec:trecnum;
  654.   chybatxt:string[2000];
  655.   Q:string[254];
  656.   ctest, c: cursor;
  657.   ncurs, ntab: trecnum;
  658.  
  659. begin
  660. //test typ u₧ivatele
  661.   if Open_SQL_cursor(ctest, "SELECT DISTINCT typ FROM OBCHODNI_PARTNERI") then Signalize
  662.    else Rec_cnt(ctest, pocet);
  663.      if pocet>0 then
  664.       begin //1
  665.        for i:=0 to pocet-1 do
  666.          begin //2
  667.            pomID:=ctest[i].typ;
  668.            u:=pomID;
  669.            irec:=Look_up(S_TYP_UZIV,"ID_TYP",u);
  670.            if irec=-1 then 
  671.              begin //3
  672.                if pomID=NONEINTEGER then Q:="SELECT  id, typ FROM OBCHODNI_PARTNERI WHERE typ IS NULL"
  673.                else Q:="SELECT  id, typ FROM OBCHODNI_PARTNERI WHERE typ="+int2str(pomID);
  674.                 if Open_SQL_cursor(c, Q) then Signalize
  675.                 else Rec_cnt(c, pocetc);
  676.                  if pocetc>0 then
  677.                    begin //4
  678.                     for j:=0 to pocetc-1 do
  679.                      begin //5
  680.                        chrec:=Insert(CHYBY);
  681.                        CHYBY[chrec].TABNAME:="OBCHODNI_PARTNERI";
  682.                        Translate(c,j,0,ntab);
  683.                        CHYBY[chrec].irec:=ntab;
  684.                        CHYBY[chrec].ID:=c[j].id;
  685.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce OBCHODNI_PARTNERI nenφ zadßn typ u₧ivatele"
  686.                        else CHYBY[chrec].CHYBA:="V tabulce OBCHODNI_PARTNERI je typ u₧ivatele ("+int2str(pomID)+"), kter² nenφ v tabulce S_TYP_UZIV";
  687.                      end; //5  
  688.                    end; //4    
  689.                 close_cursor(c);
  690.              end; //3
  691.          end;   //2
  692.       end;  //1
  693.  close_cursor(ctest);
  694.  
  695. // test dealerskß skupina
  696.   if Open_SQL_cursor(ctest, "SELECT DISTINCT deal_sk FROM OBCHODNI_PARTNERI") then Signalize
  697.    else Rec_cnt(ctest, pocet);
  698.      if pocet>0 then
  699.       begin //1
  700.        for i:=0 to pocet-1 do
  701.          begin //2
  702.            pomID:=ctest[i].deal_sk;
  703.            u:=pomID;
  704.            irec:=Look_up(S_DEAL_SK,"DEAL_ID",u);
  705.            if irec=-1 then 
  706.              begin //3
  707.                if pomID=NONEINTEGER then Q:="SELECT  id, deal_sk FROM OBCHODNI_PARTNERI WHERE deal_sk IS NULL"
  708.                else Q:="SELECT  id, deal_sk FROM OBCHODNI_PARTNERI WHERE deal_sk="+int2str(pomID);
  709.                 if Open_SQL_cursor(c, Q) then Signalize
  710.                 else Rec_cnt(c, pocetc);
  711.                  if pocetc>0 then
  712.                    begin //4
  713.                     for j:=0 to pocetc-1 do
  714.                      begin //5
  715.                        chrec:=Insert(CHYBY);
  716.                        CHYBY[chrec].TABNAME:="OBCHODNI_PARTNERI";
  717.                        Translate(c,j,0,ntab);
  718.                        CHYBY[chrec].irec:=ntab;
  719.                        CHYBY[chrec].ID:=c[j].ID;
  720.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce OBCHODNI_PARTNERI nenφ zadanß dealerskß skupina"
  721.                        else CHYBY[chrec].CHYBA:="V tabulce OBCHODNI_PARTNERI je dealerskß skupina ("+int2str(pomID)+"), kterß nenφ v tabulce S_DEAL_SK";
  722.                      end; //5  
  723.                    end; //4    
  724.                 close_cursor(c);
  725.              end; //3
  726.          end;   //2
  727.       end;  //1
  728.  close_cursor(ctest);
  729.  
  730.  //test obchodnik
  731.   if Open_SQL_cursor(ctest, "SELECT DISTINCT id_obchodnika FROM OBCHODNI_PARTNERI") then Signalize
  732.    else Rec_cnt(ctest, pocet);
  733.      if pocet>0 then
  734.       begin //1
  735.        for i:=0 to pocet-1 do
  736.          begin //2
  737.            pomID:=ctest[i].id_obchodnika;
  738.            u:=pomID;
  739.            irec:=Look_up(OBCHODNICI,"ID_obchodnika",u);
  740.            if irec=-1 then 
  741.              begin //3
  742.                if pomID=NONEINTEGER then Q:="SELECT  id,id_obchodnika FROM OBCHODNI_PARTNERI WHERE id_obchodnika IS NULL"
  743.                else Q:="SELECT  id,id_obchodnika FROM OBCHODNI_PARTNERI WHERE id_obchodnika="+int2str(pomID);
  744.                 if Open_SQL_cursor(c, Q) then Signalize
  745.                 else Rec_cnt(c, pocetc);
  746.                  if pocetc>0 then
  747.                    begin //4
  748.                     for j:=0 to pocetc-1 do
  749.                      begin //5
  750.                        chrec:=Insert(CHYBY);
  751.                        CHYBY[chrec].TABNAME:="OBCHODNI_PARTNERI";
  752.                        Translate(c,j,0,ntab);
  753.                        CHYBY[chrec].irec:=ntab;
  754.                        CHYBY[chrec].ID:=c[j].id;
  755.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce OBCHODNI_PARTNERI nenφ zadßn obchodnik"
  756.                        else CHYBY[chrec].CHYBA:="V tabulce OBCHODNI_PARTNERI je obchodnik ("+int2str(pomID)+"), kter² nenφ v tabulce OBCHODNICI";
  757.                      end; //5  
  758.                    end; //4    
  759.                 close_cursor(c);
  760.              end; //3
  761.          end;   //2
  762.       end;  //1
  763.  close_cursor(ctest);
  764.  
  765.  
  766. end;
  767.  
  768.  
  769. FUNCTION Test_Ceniky():Boolean;
  770. /*********************************************************************/
  771. var
  772.   u: untyped;
  773.   pocet, pocetc, i, j, pomID, pomdealsk: integer;
  774.   chrec, irec:trecnum;
  775.   chybatxt:string[2000];
  776.   Q, podm:string[254];
  777.   ctest, c: cursor;
  778.   ncurs, ntab: trecnum;
  779.   strcena:string[50];
  780.   
  781. begin
  782.   Rec_cnt(Cenik, pocet);
  783.   Rec_cnt(cenik, pocetc);
  784.   if pocet <> pocetc then
  785.     begin //1
  786.       chrec:=Insert(CHYBY);
  787.       CHYBY[chrec].TABNAME:="Cenik-cenik";
  788.       CHYBY[chrec].irec:=pocet;
  789.       CHYBY[chrec].ID:=pocetc;
  790.       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∙. ";
  791.     end; //1  
  792.  
  793.  
  794. //test  rabatu zadan²ch v Cenφku
  795.   if Open_SQL_cursor(ctest, "SELECT DISTINCT rabat FROM Cenik") then Signalize
  796.    else Rec_cnt(ctest, pocet);
  797.      if pocet>0 then
  798.       begin //1
  799.        for i:=0 to pocet-1 do
  800.          begin //2
  801.           pomID:=ctest[i].rabat;
  802.           if ((pomID<>NONEINTEGER) AND (pomID<>0)) then  
  803.            begin //20
  804.             u:=pomID;
  805.             irec:=Look_up(RABAT_HEADER,"metoda",u);
  806.             if irec=-1 then
  807.              begin //3
  808.                Q:="SELECT  id_cenik, rabat FROM Cenik WHERE rabat="+int2str(pomID);
  809.                 if Open_SQL_cursor(c, Q) then Signalize
  810.                 else Rec_cnt(c, pocetc);
  811.                  if pocetc>0 then
  812.                    begin //4
  813.                     for j:=0 to pocetc-1 do
  814.                      begin //5
  815.                        chrec:=Insert(CHYBY);
  816.                        CHYBY[chrec].TABNAME:="Cenik";
  817.                        Translate(c,j,0,ntab);
  818.                        CHYBY[chrec].irec:=ntab;
  819.                        CHYBY[chrec].ID:=c[j].id_cenik;
  820.                        CHYBY[chrec].CHYBA:="V tabulce CENIK je rabatovß metoda ("+int2str(pomID)+"), kterß nenφ v tabulce RABAT_HEADER";
  821.                      end; //5  
  822.                    end; //4    
  823.                 close_cursor(c);
  824.              end; //3
  825.            end;  //20
  826.          end;   //2
  827.       end;  //1
  828.  close_cursor(ctest);
  829.  
  830. //test  za°azenφ do skupin v Cenφku
  831.   if Open_SQL_cursor(ctest, "SELECT DISTINCT skupina_zbozi FROM Cenik") then Signalize
  832.    else Rec_cnt(ctest, pocet);
  833.      if pocet>0 then
  834.       begin //1
  835.        for i:=0 to pocet-1 do
  836.          begin //2
  837.            pomID:=ctest[i].skupina_zbozi;
  838.            u:=pomID;
  839.            irec:=Look_up(S_ZBOZI_SK,"id_skupiny",u);
  840.            if irec=-1 then 
  841.              begin //3
  842.               if pomID=NONEINTEGER then Q:="SELECT  id_cenik,skupina_zbozi  FROM Cenik WHERE skupina_zbozi IS NULL "
  843.               else  Q:="SELECT  id_cenik,skupina_zbozi  FROM Cenik WHERE skupina_zbozi="+int2str(pomID);
  844.                 if Open_SQL_cursor(c, Q) then Signalize
  845.                 else Rec_cnt(c, pocetc);
  846.                  if pocetc>0 then
  847.                    begin //4
  848.                     for j:=0 to pocetc-1 do
  849.                      begin //5
  850.                        chrec:=Insert(CHYBY);
  851.                        CHYBY[chrec].TABNAME:="Cenik";
  852.                        Translate(c,j,0,ntab);
  853.                        CHYBY[chrec].irec:=ntab;
  854.                        CHYBY[chrec].ID:=c[j].id_cenik;
  855.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce CENIK je polo₧ka neza°azenß do skupiny"
  856.                        else CHYBY[chrec].CHYBA:="V tabulce CENIK je polo₧ka za°azenß do skupiny ("+int2str(pomID)+"), kterß nenφ v tabulce S_ZBOZI_SK";
  857.                      end; //5  
  858.                    end; //4    
  859.                 close_cursor(c);
  860.              end; //3
  861.          end;   //2
  862.       end;  //1
  863.  close_cursor(ctest);
  864.  
  865.  
  866.  
  867.  
  868. //test  DPH pro letoÜnφ rok v Cenφku
  869.   if Open_SQL_cursor(ctest, "SELECT DISTINCT DPH FROM Cenik") then Signalize
  870.    else Rec_cnt(ctest, pocet);
  871.      if pocet>0 then
  872.       begin //1
  873.        for i:=0 to pocet-1 do
  874.          begin //2
  875.            pomID:=ctest[i].DPH;
  876.            if pomID=NONEINTEGER then pocetc:=0
  877.            else 
  878.             begin
  879.               podm:="uc_rok="+int2str(year(today))+ " AND ID_DPH=" + int2str(pomID);
  880.               if Open_sql_parts(c, "*", "S_DPH", podm, "") then Signalize
  881.               else Rec_cnt(c, pocetc);
  882.               close_cursor(c);
  883.             end;
  884.            if pocetc<=0 then 
  885.              begin //3
  886.                if pomID=NONEINTEGER then Q:="SELECT  id_cenik, DPH FROM Cenik WHERE DPH IS NULL"
  887.                else  Q:="SELECT  id_cenik, DPH FROM Cenik WHERE DPH="+int2str(pomID);
  888.                 if Open_SQL_cursor(c, Q) then Signalize
  889.                 else Rec_cnt(c, pocetc);
  890.                  if pocetc>0 then
  891.                    begin //4
  892.                     for j:=0 to pocetc-1 do
  893.                      begin //5
  894.                        chrec:=Insert(CHYBY);
  895.                        CHYBY[chrec].TABNAME:="Cenik";
  896.                        Translate(c,j,0,ntab);
  897.                        CHYBY[chrec].irec:=ntab;
  898.                        CHYBY[chrec].ID:=c[j].id_cenik;
  899.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce CENIK nenφ zadßno DPH pro letoÜnφ rok"
  900.                        else CHYBY[chrec].CHYBA:="V tabulce CENIK je DPH ("+int2str(pomID)+"), kterΘ nenφ v tabulce S_DPH pro letoÜnφ rok";
  901.                      end; //5  
  902.                    end; //4    
  903.                 close_cursor(c);
  904.              end; //3
  905.          end;   //2
  906.       end;  //1
  907.  close_cursor(ctest);
  908.  
  909.  
  910. //test napln∞nφ cenφku 
  911.  
  912.   if Open_SQL_cursor(ctest, "SELECT deal_id FROM S_DEAL_SK WHERE kod<>"""" ") then Signalize
  913.    else Rec_cnt(ctest, pocet);
  914.   if pocet>0 then
  915.    begin //1
  916.     for j:=0 to pocet-1 do
  917.      begin //2
  918.       pomdealsk:=ctest[j].deal_id;
  919.  
  920.       case pomdealsk  of 
  921.       1:   strcena:="cena1";
  922.       2:   strcena:="cena2";
  923.       3:   strcena:="cena3";
  924.       4:   strcena:="cena4";
  925.       5:   strcena:="cena5";
  926.       6:   strcena:="cena6";
  927.       7:   strcena:="cena7";
  928.       8:   strcena:="cena8";
  929.       9:   strcena:="cena9";
  930.       else: strcena:="min_cena";
  931.       end;
  932.  
  933.       podm:="SELECT id_cenik FROM cenik WHERE "+strcena+" IS NULL";
  934.       if Open_SQL_cursor(c,podm) then Signalize
  935.       else Rec_cnt(c, pocetc);
  936.         if pocetc>0 then
  937.          begin //3
  938.           for i:=0 to pocetc-1 do
  939.             begin //4
  940.              pomID:=c[i].id_cenik;
  941.              chrec:=Insert(CHYBY);
  942.              CHYBY[chrec].TABNAME:="cenik";
  943.              Translate(c,i,0,ntab);
  944.              CHYBY[chrec].irec:=ntab;
  945.              CHYBY[chrec].ID:=c[i].id_cenik;
  946.              CHYBY[chrec].CHYBA:="V tabulce cenik je polo₧ka ("+int2str(pomID)+"), u kterΘ nenφ zadanß "+strcena;
  947.             end;   //4
  948.          end;   //3
  949.         close_cursor(c);
  950.      end;  //2
  951.    end;  //1
  952.  close_cursor(ctest);
  953. end;
  954.  
  955. FUNCTION Test_Skup():Boolean;
  956. /*********************************************************************/
  957. var
  958.   u: untyped;
  959.   pocet, pocetc, i, j, pomID, delka1 , delka2: integer;
  960.   chrec, irec:trecnum;
  961.   chybatxt:string[2000];
  962.   Q:string[254];
  963.   ctest, c: cursor;
  964.   ncurs, ntab: trecnum;
  965.   pomstr:string[100];
  966.  
  967. begin
  968. //test  rabatu zadan²ch ve skupinßch zbo₧φ
  969. /*
  970.   if Open_SQL_cursor(ctest, "SELECT DISTINCT rabat FROM S_ZBOZI_SK WHERE last=TRUE") then Signalize
  971.    else Rec_cnt(ctest, pocet);
  972.      if pocet>0 then
  973.       begin //1
  974.        for i:=0 to pocet-1 do
  975.          begin //2
  976.           pomID:=ctest[i].rabat;
  977.           if (pomID<>0) then  
  978.            begin //20
  979.             u:=pomID;
  980.             irec:=Look_up(RABAT_HEADER,"metoda",u);
  981.             if irec=-1 then
  982.              begin //3
  983.                if pomID=NONEINTEGER then Q:="SELECT  id_skupiny, rabat FROM  S_ZBOZI_SK WHERE rabat IS NULL"
  984.                else  Q:="SELECT  id_skupiny, rabat FROM  S_ZBOZI_SK WHERE rabat="+int2str(pomID);
  985.                 if Open_SQL_cursor(c, Q) then Signalize
  986.                 else Rec_cnt(c, pocetc);
  987.                  if pocetc>0 then
  988.                    begin //4
  989.                     for j:=0 to pocetc-1 do
  990.                      begin //5
  991.                        chrec:=Insert(CHYBY);
  992.                        CHYBY[chrec].TABNAME:=" S_ZBOZI_SK";
  993.                        Translate(c,j,0,ntab);
  994.                        CHYBY[chrec].irec:=ntab;
  995.                        CHYBY[chrec].ID:=c[j].id_skupiny;
  996.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce S_ZBOZI_SK nenφ zadßnß rabatovß metoda"
  997.                        else CHYBY[chrec].CHYBA:="V tabulce  S_ZBOZI_SK je rabatovß metoda ("+int2str(pomID)+"), kterß nenφ v tabulce RABAT_HEADER";
  998.                      end; //5  
  999.                    end; //4    
  1000.                 close_cursor(c);
  1001.              end; //3
  1002.            end;  //20
  1003.          end;   //2
  1004.       end;  //1
  1005.  close_cursor(ctest);
  1006. */
  1007. //test max. ·rovn∞ 
  1008.       if Open_sql_parts(c, "MAX(uroven) AS M", "KOD_STRUCTURA", "", "") then Signalize
  1009.       else 
  1010.        begin
  1011.          pocet:=C[0].M;
  1012.          close_cursor(c);
  1013.        end;
  1014.  
  1015.       if Open_sql_parts(c, "MAX(uroven) AS M", "S_ZBOZI_SK", "", "") then Signalize
  1016.       else 
  1017.        begin
  1018.          pocetc:=C[0].M;
  1019.          close_cursor(c);
  1020.        end;
  1021.  
  1022.   if pocet <> pocetc then
  1023.     begin //1
  1024.       chrec:=Insert(CHYBY);
  1025.       CHYBY[chrec].TABNAME:="S_ZBOZI_SK";
  1026.       CHYBY[chrec].irec:=pocet;
  1027.       CHYBY[chrec].ID:=pocetc;
  1028.       CHYBY[chrec].CHYBA:="V tabulce S_ZBOZI_SK nesouhlasφ max. ·rove≥ ("+int2str(pocetc)+") a max. ·rovnφ v tabulce KOD_STRUCTURA ("+int2str(pocet)+")";
  1029.     end; //1  
  1030.  
  1031.   Rec_cnt(KOD_STRUCTURA, pocet);    
  1032.    if pocet>0 then
  1033.      for i:=0 to pocet-1 do
  1034.        begin
  1035.          pomID:=KOD_STRUCTURA[i].uroven;
  1036.          Q:="SELECT  SUM(pocet_zn) AS DELKA FROM  KOD_STRUCTURA WHERE uroven<="+int2str(pomID);
  1037.           if Open_SQL_cursor(ctest, Q) then Signalize
  1038.           else delka1:=ctest[0].delka;
  1039.           close_cursor(ctest);
  1040.             if delka1>0 then
  1041.               begin //3
  1042.                 Q:="SELECT  id_skupiny, uroven, KOD_Skupiny FROM  S_ZBOZI_SK WHERE uroven="+int2str(pomID);
  1043.                 if Open_SQL_cursor(c, Q) then Signalize
  1044.                 else Rec_cnt(c, pocetc);
  1045.                  if pocetc>0 then
  1046.                    begin //4
  1047.                     for j:=0 to pocetc-1 do
  1048.                      begin //5
  1049.                        pomstr:=c[j].KOD_Skupiny;
  1050.                        delka2:=Strlength(pomstr);
  1051.                        if delka2<>delka1 then
  1052.                          begin //6
  1053.                            chrec:=Insert(CHYBY);
  1054.                            CHYBY[chrec].TABNAME:=" S_ZBOZI_SK";
  1055.                            Translate(c,j,0,ntab);
  1056.                            CHYBY[chrec].irec:=ntab;
  1057.                            CHYBY[chrec].ID:=c[j].id_skupiny;
  1058.                            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";
  1059.                          end; //6
  1060.                      end; //5  
  1061.                    end; //4    
  1062.                 close_cursor(c);
  1063.              end; //3
  1064.            end;  //20
  1065.  
  1066.  
  1067. end;
  1068.  
  1069. FUNCTION Test_OBJ():Boolean;
  1070. var
  1071.   u: untyped;
  1072.   pocet, pocetc, i, j, pomID: integer;
  1073.   chrec, irec:trecnum;
  1074.   chybatxt:string[2000];
  1075.   Q:string[254];
  1076.   ctest, c: cursor;
  1077.   ncurs, ntab: trecnum;
  1078.   pomstr:string[50];
  1079.  
  1080. begin
  1081. //test zßkaznφk∙
  1082.   if Open_SQL_cursor(ctest, "SELECT DISTINCT id_org  FROM OBJ_HEADER") then Signalize
  1083.    else Rec_cnt(ctest, pocet);
  1084.      if pocet>0 then
  1085.       begin //1
  1086.        for i:=0 to pocet-1 do
  1087.          begin //2
  1088.            pomID:=ctest[i].id_org;
  1089.            u:=pomID;
  1090.            irec:=Look_up(OBCHODNI_PARTNERI,"id",u);
  1091.            if irec=-1 then 
  1092.              begin //3
  1093.               if pomID=NONEINTEGER then Q:="SELECT  id_dobj,id_org  FROM OBJ_HEADER WHERE id_org IS NULL "
  1094.               else  Q:="SELECT  id_dobj,id_org  FROM OBJ_HEADER WHERE id_org="+int2str(pomID);
  1095.                 if Open_SQL_cursor(c, Q) then Signalize
  1096.                 else Rec_cnt(c, pocetc);
  1097.                  if pocetc>0 then
  1098.                    begin //4
  1099.                     for j:=0 to pocetc-1 do
  1100.                      begin //5
  1101.                        chrec:=Insert(CHYBY);
  1102.                        CHYBY[chrec].TABNAME:="OBJ_HEADER";
  1103.                        Translate(c,j,0,ntab);
  1104.                        CHYBY[chrec].irec:=ntab;
  1105.                        CHYBY[chrec].ID:=c[j].id_dobj;
  1106.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce OBJ_HEADER nenφ objednßvka p°i°azena zßkaznφkovi  "
  1107.                        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";
  1108.                      end; //5  
  1109.                    end; //4    
  1110.                 close_cursor(c);
  1111.              end; //3
  1112.          end;   //2
  1113.       end;  //1
  1114.  close_cursor(ctest);
  1115.  
  1116.  
  1117. //test doprava
  1118.   if Open_SQL_cursor(ctest, "SELECT DISTINCT doprav  FROM OBJ_HEADER") then Signalize
  1119.    else Rec_cnt(ctest, pocet);
  1120.      if pocet>0 then
  1121.       begin //1
  1122.        for i:=0 to pocet-1 do
  1123.          begin //2
  1124.            pomstr:=ctest[i].doprav;
  1125.            u:=pomstr;
  1126.            irec:=Look_up(S_DOPRAVA,"kod",u);
  1127.            if irec=-1 then 
  1128.              begin //3
  1129.               if pomstr="" then Q:="SELECT  id_dobj,doprav  FROM OBJ_HEADER WHERE doprav IS NULL"
  1130.               else  Q:="SELECT  id_dobj,doprav  FROM OBJ_HEADER WHERE doprav="+""""+pomstr+"""";
  1131.                 if Open_SQL_cursor(c, Q) then Signalize
  1132.                 else Rec_cnt(c, pocetc);
  1133.                  if pocetc>0 then
  1134.                    begin //4
  1135.                     for j:=0 to pocetc-1 do
  1136.                      begin //5
  1137.                        chrec:=Insert(CHYBY);
  1138.                        CHYBY[chrec].TABNAME:="OBJ_HEADER";
  1139.                        Translate(c,j,0,ntab);
  1140.                        CHYBY[chrec].irec:=ntab;
  1141.                        CHYBY[chrec].ID:=c[j].id_dobj;
  1142.                        if pomstr="" then CHYBY[chrec].CHYBA:="V tabulce OBJ_HEADER nenφ v objednßvce zadßn zp∙sob dopravy"
  1143.                        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";
  1144.                      end; //5  
  1145.                    end; //4    
  1146.                 close_cursor(c);
  1147.              end; //3
  1148.          end;   //2
  1149.       end;  //1
  1150.  close_cursor(ctest);
  1151.  
  1152. //test polo₧ky-header
  1153.   if Open_SQL_cursor(ctest, "SELECT DISTINCT id_dobj  FROM OBJ_POLOZKY") then Signalize
  1154.    else Rec_cnt(ctest, pocet);
  1155.      if pocet>0 then
  1156.       begin //1
  1157.        for i:=0 to pocet-1 do
  1158.          begin //2
  1159.            pomID:=ctest[i].id_dobj;
  1160.            u:=pomID;
  1161.            irec:=Look_up(OBJ_HEADER,"id_dobj",u);
  1162.            if irec=-1 then 
  1163.              begin //3
  1164.               if pomID=NONEINTEGER then Q:="SELECT  id_dobj  FROM OBJ_POLOZKY WHERE id_dobj IS NULL"
  1165.               else  Q:="SELECT  id_dobj FROM OBJ_POLOZKY WHERE id_dobj="+int2str(pomID);
  1166.                 if Open_SQL_cursor(c, Q) then Signalize
  1167.                 else Rec_cnt(c, pocetc);
  1168.                  if pocetc>0 then
  1169.                    begin //4
  1170.                     for j:=0 to pocetc-1 do
  1171.                      begin //5
  1172.                        chrec:=Insert(CHYBY);
  1173.                        CHYBY[chrec].TABNAME:="OBJ_POLOZKY";
  1174.                        Translate(c,j,0,ntab);
  1175.                        CHYBY[chrec].irec:=ntab;
  1176.                        CHYBY[chrec].ID:=c[j].id_dobj;
  1177.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce OBJ_POLOZKY jsou polo₧ky bez hlaviΦky OBJ_HEADER"
  1178.                        else CHYBY[chrec].CHYBA:="V tabulce OBJ_POLOZKY je objednßvka  ("+int2str(pomID)+"), kterß nenφ v tabulce OBJ_HEADER";
  1179.                      end; //5  
  1180.                    end; //4    
  1181.                 close_cursor(c);
  1182.              end; //3
  1183.          end;   //2
  1184.       end;  //1
  1185.  close_cursor(ctest);
  1186.  
  1187. //test polo₧ky-cenik
  1188.   if Open_SQL_cursor(ctest, "SELECT DISTINCT id_cnk  FROM OBJ_POLOZKY") then Signalize
  1189.    else Rec_cnt(ctest, pocet);
  1190.      if pocet>0 then
  1191.       begin //1
  1192.        for i:=0 to pocet-1 do
  1193.          begin //2
  1194.            pomID:=ctest[i].id_cnk;
  1195.            u:=pomID;
  1196.            irec:=Look_up(cenik,"id_cenik",u);
  1197.            if irec=-1 then 
  1198.              begin //3
  1199.               if pomID=NONEINTEGER then Q:="SELECT  id_dobj, id_cnk  FROM OBJ_POLOZKY WHERE id_cnk IS NULL "
  1200.               else  Q:="SELECT  id_dobj, id_cnk FROM  OBJ_POLOZKY WHERE id_cnk="+int2str(pomID);
  1201.                 if Open_SQL_cursor(c, Q) then Signalize
  1202.                 else Rec_cnt(c, pocetc);
  1203.                  if pocetc>0 then
  1204.                    begin //4
  1205.                     for j:=0 to pocetc-1 do
  1206.                      begin //5
  1207.                        chrec:=Insert(CHYBY);
  1208.                        CHYBY[chrec].TABNAME:="OBJ_POLOZKY";
  1209.                        Translate(c,j,0,ntab);
  1210.                        CHYBY[chrec].irec:=ntab;
  1211.                        CHYBY[chrec].ID:=c[j].id_dobj;
  1212.                        if pomID=NONEINTEGER then CHYBY[chrec].CHYBA:="V tabulce OBJ_POLOZKY bez odkazu na Cenik"
  1213.                        else CHYBY[chrec].CHYBA:="V tabulce OBJ_POLOZKY je polo₧ka cenφku ("+int2str(pomID)+"), kterß nenφ v tabulce cenik";
  1214.                      end; //5  
  1215.                    end; //4    
  1216.                 close_cursor(c);
  1217.              end; //3
  1218.          end;   //2
  1219.       end;  //1
  1220.  close_cursor(ctest);
  1221. end;
  1222.  
  1223.  
  1224. procedure test_ID();
  1225. /*********************************************************************/
  1226. //kontrola relacφ mezi tabulkami
  1227. var
  1228.  curs:cursor;
  1229.  ipom, pocet: integer;
  1230.  podm:string[100];
  1231.  idtab: tobjnum;
  1232.  tabnam:string[50];
  1233.   ncurs, ntab: trecnum;
  1234.  
  1235.  begin
  1236.    Set_status_text("Kontroluji relace mezi tabulkami, co₧ m∙₧e trvat dost dlouho!");
  1237.    if not Find_object("CHYBY", CATEG_TABLE, idtab) then 
  1238.      begin
  1239.       Delete_all_records(CHYBY);
  1240.       Free_deleted(idtab);
  1241.      end;
  1242.    Set_status_text("");
  1243. //   Set_status_text("Uvol≥uji zruÜenΘ zßznamy v  tabulkßch.");
  1244. // Uvolni_zrusene();
  1245.    Set_status_text("Kontroluji existenci u₧ivatele __web a jeho obsazenφ do role.");
  1246.    test_uziv();
  1247.    Set_status_text("");
  1248.    Set_status_text("Kontroluji zalo₧enφ a stav  pomocn²ch tabulek.");
  1249.  Zaloz_tab();
  1250.    Set_status_text("");
  1251.    Set_status_text("Hledßm a ma₧u v tabulkßch zßznamy s prßzdn²mi ID.");
  1252.  Smaz_tzv_prazdne();
  1253.    Set_status_text("");
  1254.    Set_status_text("Kontroluji relace mezi tabulkami, co₧ m∙₧e trvat dost dlouho! - Default hodnoty");
  1255.  Test_defH();
  1256.    Set_status_text("");
  1257.    Set_status_text("Kontroluji relace mezi tabulkami, co₧ m∙₧e trvat dost dlouho! - Obchodnφ partne°i");
  1258.  Test_OP();
  1259.    Set_status_text("");
  1260.    Set_status_text("Kontroluji relace mezi tabulkami, co₧ m∙₧e trvat dost dlouho! - Obchodnφci");
  1261.  Test_Obch();
  1262.    Set_status_text("");
  1263.    Set_status_text("Kontroluji relace mezi tabulkami, co₧ m∙₧e trvat dost dlouho!- Rabat");
  1264.  Test_Rabat();
  1265.    Set_status_text("");
  1266.    Set_status_text("Kontroluji relace mezi tabulkami, co₧ m∙₧e trvat dost dlouho! - CEN═KY");
  1267.  Test_Ceniky();
  1268.    Set_status_text("");
  1269.    Set_status_text("Kontroluji relace mezi tabulkami, co₧ m∙₧e trvat dost dlouho! - OBJEDN┴VKY");
  1270.  Test_OBJ();
  1271.    Set_status_text("");
  1272.    Set_status_text("Kontroluji relace mezi tabulkami, co₧ m∙₧e trvat dost dlouho! - SKUPINY");
  1273.  Test_Skup();
  1274.    Set_status_text("");
  1275.  
  1276.  Set_status_text("Kontrola relacφ mezi tabulkami dokonΦena");
  1277.  Rec_cnt(CHYBY,pocet);
  1278.  if pocet>0 then
  1279.   Open_view("*Chyby",NO_REDIR,0,0,0,nil)
  1280.  else
  1281.   Info_box("V▌SLEDEK TESTU","V aplikaci nebyly nalezeny ₧ßdnΘ chyby");
  1282.  end;
  1283.  
  1284.