Logické testy datových vět ELDP

K 11. listopadu 2005 byla do zpracování uvedena aktualizovaná sada logických kontrol zdrojové datové věty ELDP. V nové verzi byly promítnuty dílčí úpravy a poznatky provozního zpracování za uplynulé období. Definovaná sada testů představuje jeden z možných způsobů kontroly datových vět vzhledem k popisu údajů (zadání) a metodice vyplňování ELDP.

Kontrola výskytu technického kódu a příznaku zneplatnění

Pro účely následujících kontrol se bere zdrojová DV ELDP bez zneplatněných řádků (doby t1 s vyplněným atributem val), a se správným typem reldp (tzn. je-li vyplněn technický kód, jeho hodnotou je nahrazen typ reldp).

Kontrola výskytu technického kódu

/* Technický kód a příznak zneplatnění řádku se nesmějí vyskytnout v e - Podání – v e - Podání je třeba testovat jejich potenciální výskyt a ohlásit chybu */
Jestliže existuje element ZDROJDOK/PVSInfo a zároveň (reldp@tco je neprázdné),
potom chyba „Údaj technický kód není určen pro e - Podání!“

Kontrola výskytu příznaku zneplatnění

Jestliže existuje element ZDROJDOK/PVSInfo a zároveň (existuje t1@val, které je neprázdné),
potom chyba „Zneplatněný řádek není přípustný pro e - Podání!“

Kontrola existence platných řádků v části „Průběh pojištění v daném roce – tagy t1, t2“

/* JDV nemůže vzniknout, pokud RELDP neobsahuje platný řádek s intervalem o průběhu*/ /*pojištění v některém tagu t1 nebo tagu t2: */
JESTLIŽE v RELDP platí podmínka:

    ( ( jsou uvedeny pouze zneplatněné řádky t1, tj. t1@val in (“Z“, „z“) )
    NEBO (nejsou uvedeny řádky t1 s průběhem pojištění) )
    A SOUČASNĚ (tag t2 neobsahuje informace)
    potom chyba „V průběhu pojištění nejsou uvedeny platné řádky“

Rok ELDP
Vrchní mez uvedeného roku
Je-li reldp@yer>aktuální rok (rok z data přijetí RELDP), pak chyba „Chybný rok RELDP“

Spodní mez uvedeného roku
Pokud reldp@yer<“2004“,
pak chyba „Chybný rok RELDP (menší než 2004)“

Kontrola roku pro typ RELDP = 01, 02, 03

/* typ RELDP 01, 02, 03: rok v RELDP musí být = aktuální rok nebo (aktuální rok -1) */
/* pokud ale takový RELDP neobsahuje řádek s vykázaným kódem obsahujícím */
/* znaky „B“, „J“, „V“ na 3. pozici kódu */
Pokud (reldp@typ = („01“ nebo „02“ nebo „03“)

    a současně
    (neexistuje řádek, kde v t1@cod (pozice 3) je hodnota („B“ nebo „J“ nebo „V“ ) )
    potom pokud ( (reldp@yer = aktuální rok (tj. rok z data přijetí RELDP))
      nebo
      (reldp@yer = aktuální rok (tj. rok z data přijetí RELDP)) – 1) )
      potom OK.
    jinak chyba č. 270 „Chybný rok RELDP - starší jednoho roku“.

Kontrola totožnosti roku z průběhu pojištění s rokem RELDP (pouze pro datovou větu z PVS)

Jestliže existuje element ZDROJDOK/PVSInfo

      /* datová věta z PVS */
    Potom
      Jestliže [(t1@fro = reldp@yer) a zároveň (t1@to = reldp@yer) a zároveň (t2@fro = reldp@yer) a zároveň (t2@to = reldp@yer)], potom OK
    Jinak
      Chyba „Nesouhlasí rok z průběhu pojištění s rokem ELDP!“

Datum opravovaného RELDP
Je-li reldp@typ jedna z hodnot (51,52,53) a reldp@dre je prázdný, pak chyba „Neuvedeno datum opravovaného RELDP“
Jestliže reldp@typ není jedna z hodnot (51,52,53) a reldp@dre je neprázdný, pak chyba „Datum opravovaného RELDP se uvádí pouze na opravných RELDP“

Kontrola RČ

Standardní kontrola rodného čísla zahrnující i kontrolu na modulo 11 pro RČ od roku 1954.

  • kontrolu délky (9 - do r. 1953,10 - od r. 1954)
  • kontrolu data narození (platné datum)
  • kontrolu modulo 11

Kontrola IČ

Jestliže je údaj comp@id neprázdný, potom standardní kontrola identifikačního čísla organizace.
Jestliže nesrovnalost v IČ, potom chyba „Údaj Id (identifikační číslo organizace) není platné IČ (IČ není dělitelné 11) “

Kontrola PSČ

      /* Údaj se nachází v reldp/client/adr@pnu a v reldp/comp/adr@pnu */
      /* (před testem se odstraní z řetězce mezery) */
    Jestliže je hodnota prázdná,
    pak chyba „Neuveden povinný údaj (PSČ)“,
    Jinak
      /* test na formát: */
    Pokud (délka5) a zároveň (délka3),
    pak chyba „Uveden neplatný údaj (PSČ)“ ,
      jinak, pokud délka=5 a (1.znak=“8“ nebo 1.znak=“9“ nebo 1.znak=“0“),
      pak chyba „Uveden neplatný údaj (PSČ)“
      jinak, pokud délka=3 a hodnota nenalezena v číselníku států,
      pak chyba „Uveden neplatný údaj (PSČ)“

Kontrola VS

/* Údaj je numerický, délka 8 nebo 9 znaků */
/* Jestliže existuje element ZDROJDOK/PVSInfo a délka je 9 znaků, pak se první pozice zleva ořízne. */
/* První znak nesmí být “0“. */
/* Pokud má údaj délku 9 znaků, pak 1. znak musí být 1, nebo 8. */

Pokud je údaj prázdný,
pak chyba „Nevyplněn povinný údaj (VS)“

    jinak, pokud (délka “8“) a zároveň (délka “9“),
    pak chyba „Uveden neplatný údaj (VS)“
    jinak, pokud 1. znak =“0“,
    pak, chyba „Uveden neplatný údaj (VS)“
    jinak, pokud délka=“9“ a (1. znak “1“ a zároveň 1. znak “8“),
    pak chyba „Uveden neplatný údaj (VS)“

Kontrola Kódu činnosti

Hodnota má tři znaky. Přípustná hodnota pro každou pozici je uvedena v číselníku. V číselníku je rovněž uveden výčet povolených kombinací těchto tří znaků. Protože povolených kombinací je velké množství, zformulujeme podmínky pro vyloučení nepovolených kombinací (Zásadně ale má přednost definice výčtem - v číselníku !!!!!)

Jestliže (3. znak v t1@cod = B) nebo (3. znak v t1@cod = J) nebo (3. znak v t1@cod = V) potom

    Jestliže (1. znak v t1@cod = 0) potom OK,
    jinak Chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže (3. znak v t1@cod = T) potom
    Jestliže ((1. znak v t1@cod = 0) nebo (1. znak v t1@cod = 3)) potom OK
    jinak Chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „0RT“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „3RT“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „4DS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „4MS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „4NS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „4PS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „4RS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „4+S“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „8DS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „8MS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „8NS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „8PS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „8RS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „8+S“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „9DS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „9MS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „9NS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „9PS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „9RS“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.
Jestliže t1@cod = „9+S“ potom chyba „Údaj cod (kód činnosti) není z číselníku“.

Kontrolní součty v dobách t1 - vyloučené dny
Jestliže items@sdex je uveden a nerovná se součtu atributů dex ze všech tagů t1,
pak chyba 284 „Nesouhlasí součet vyloučených dob“

Kontrolní součty v dobách t1 - vyměřovací základ
Jestliže items@sinc je uveden a nerovná se součtu atributů inc ze všech tagů t1,
pak chyba 285 „Nesouhlasí součet vyměřovacích základů“.

Kontrolní součty v dobách t1 - dny odeč. po vzniku nároku
Jestliže items@sdar je uveden a nerovná se součtu atributů dar ze všech tagů t1,
pak chyba 286 „Nesouhlasí součet dnů odečtených po vzniku nároku“.

Úplnost časových intervalů t1
Jestliže existuje tag t1, pro který platí
(2. znak z t1@cod”P” a t1@fro je neprázdné a t1@to je prázdné) nebo
(2. znak z t1@cod”P” a t1@fro je prázdné a t1@to je neprázdné),
pak chyba 271 „Neúplně vyplněný časový interval (průběh činnosti)“.

Povinné časové údaje v t1
Jestliže existuje tag t1, pro který platí
2. znak z t1@cod”P” a t1@fro je prázdné a t1@to je prázdné,
pak chyba 272 „Nevyplněn časový údaj (průběh činnosti)“.

Povinně vyplněný vyměřovací základ v t1 při zúčtování příjmů
Jestliže existuje tag t1, pro který platí
2. znak z t1@cod=”P” a t1@inc je prázdné,
pak chyba „Neuveden povinný údaj inc(Vyměřovací základ)“.

Povinně prázdné údaje v t1

Povinně prázdné časové údaje při zúčtování příjmů
Jestliže existuje tag t1, pro který platí
(2. znak z t1@cod=”P”) a [ (t1@fro je neprázdné) nebo (t1@to je neprázdné) ],
pak chyba 291 „Chybně vyplněný časový údaj - zúčtování příjmů (průběh činnosti)“

Další povinně prázdné údaje při zúčtování příjmů
Jestliže existuje tag t1, pro který platí
2. znak z t1@cod=”P” a
(t1@din je neprázdné nebo t1@dex je neprázdné nebo t1@dar je neprázdné nebo t1@m[i] je neprázdné),
pak chyba „Vyplněny povinně prázdné údaje“

Souslednost dat v dobách t1
Jestliže existuje tag t1, pro který platí t1@fro>t1@to,
pak chyba „Chybně vyplněný časový interval (průběh činnosti)“.

Disjunkce dob t1
Jestliže existují dva tagy t1 (označme je t1, t1‘), pro které platí
t1@fro <= "t1‘@fro" pak chyba „Doby se překrývají (průběh činnosti)“.

Vrchní mez započtených dnů v dobách t1
Jestliže existuje tag t1, ve kterém platí
2. znak z t1@cod”P” a t1@din>[počet dnů v časovém intervalu ],
pak chyba “Počet započtených dnů je vyšší než počet dnů v intervalu”
/*kontrola datumů, od-do, pokud je vyloučen celý rok*/
/*musí být : od=1.1., do=31.12 */
Jestliže t1@m13=“x“ nebo „X“
potom jestliže neplatí ( (t1@from=“1.1.“) a současně (t1@to=“31.12“))
potom chyba „Chybný vztah datum od, datum do a měsíce bez pojištění 1-12“

Souslednost dat v dobách t2
Jestliže existuje tag t2, pro který platí t2@fro>t2@to,
pak chyba „Chybně vyplněný časový interval (průběh V,C,M)“.

Disjunkce dob t2
Jestliže existují dva tagy t2 (označme je t2, t2‘), pro které platí
t2@fro <= "t2‘@fro" <= "t2@to,"
pak chyba „Doby se překrývají (průběh C,V,M)“.

Měsíce bez pojištění
/* začátek bloku aktuálně platných testů pro měsíce bez pojištění */
/* společná vstupní podmínka */
Jestliže existuje tag t1 pro který platí t1@m[i] pro i=1..13 je neprázdné, pak /* následuje blok testů*/:
Kombinace odečteného měsíce a kódu „P“
Jestliže 2. znak z t1@cod = „P“ a zároveň
      [ (t1@m[13] je neprázdné) nebo (alespoň jedno t1@m[i]) pro i=1..12 je neprázdné) ],
    potom chyba „Se zúčtovaným příjmem chybně vykázány měsíce bez pojištění“
    Všechny měsíce jsou odečteny – správné a chybné vyznačení
    Jestliže t1@din=0 a zároveň 2. znak z t1@cod „P“,
    potom
      /* testy pro přípustné syntaxe zápisu, kdy je bez pojištění celý rok */
      /* Test na nepovolenou kombinaci xxxxxxxxxxxx x */
      /* vyznačeny měsíce1 až 12 a rovněž sloupec za celý rok 1-12 */
      jestliže t1@m[13] je neprázdné a zároveň všechna t1@m[i]) pro i=1..12 jsou neprázdná,
      potom chyba „Nesprávně vyznačeny měsíce bez pojištění“

      jestliže t1@m[13] je neprázdné a zároveň všechna t1@m[i]) pro i=1..12 jsou prázdná, potom OK,
      jinak
      jestliže t1@m[13] je prázdné a zároveň všechna t1@m[i]) pro i=1..12 jsou neprázdná,
      potom OK,
      jinak
      jestliže t1@m[13] je neprázdné a zároveň existuje alespoň jedno t1@m[i]) pro i=1..12, které je neprázdné,
      potom chyba „Nesprávně vyznačeny měsíce bez pojištění“,

      jinak
        /* testy pro případ, kdy celé období „od-do“ je tvořeno měsíci bez pojištění */
          jestliže t1@m[13] je prázdné a zároveň
          jestliže ( „MM“ v t1@fro se shoduje s prvním vyznačeným m[i], kde m[i]=“X“ )
          a zároveň
            ( „MM“ v t1@to se shoduje s posledním vyznačeným m[i], kde m[i]=“X“)
          a zároveň
            (všechna m[i] mezi prvním vyznačeným a posledním vyznačeným m[i] jsou neprázdná),
          potom OK,
          jinak
          jestliže ( „MM“ v t1@fro se shoduje s prvním vyznačeným m[i], kde m[i]=“X“ )
          a zároveň
            ( „MM“ v t1@to se shoduje s posledním vyznačeným m[i], kde m[i]=“X“)
          a zároveň
            (existuje alespoň jedno m[i] mezi prvním vyznačeným a posledním vyznačeným m[i], které je prázdné),
          potom chyba „Nesprávně vyznačeny měsíce bez pojištění“,
          jinak OK.
          /* v ostatních případech se tímto testem o správnosti nerozhoduje */

Odečtené měsíce mimo časový interval od-do
Jestliže existuje tag t1, ve kterém platí:
existuje i takové, že t1@m[i] je neprázdné
a zároveň [(měsíc z data t1@fro>i ) nebo (měsíc z data t1@topak chyba „Odečtený měsíc mimo časový interval“

/* konec bloku aktuálně platných testů pro měsíce bez pojištění */

Počet započtených dnů

BLOK CASE ZD  /*skupina testů pro započtené dny  */

CASE 0 Vykázání příjmů _P_   /* při vykázání příjmu se neuvádí započtené dny  */
      BLOK TESTŮ CASE0
        jestliže t1@cod = _P_
        potom jestliže t1@din > 0
          pak chyba „chybný počet započtených dnů“
        JDI NA KONEC BLOK CASE ZD !!!!!!
      KONEC BLOK TESTŮ CASE0
Konec CASE0

CASE 0A Důchodový věk _D_ /*testy: kód činnosti – po dosažení důchodového   */
      /*věku   */
  BLOK TESTŮ CASE 0A
      /*pravidlo: dny (od-do) = ZD + OD   */
    jestliže 2. znak z t1@cod = „D“ /*Vykázání dob po dosažení důchod. věku*/
potom jestliže neplatí ( (t1@from...t1@to) = t1@din + t1@dar)
           potom chyba „Nesprávný vztah započtených a odečtených dnů“
    JDI NA KONEC BLOK CASE ZD !!!!!!
  KONEC BLOK TESTŮ CASE 0A
Konec CASE 0A
           
CASE 3 Specifické doby s odečtenými a vyloučenými dobami
  jestliže
    ((t2@cod=“V“) nebo t2@cod=(v seznamu „V2“ … až…“V9“))
nebo
((t2@cod=“C“) nebo t2@cod=(v seznamu „C2“ … ;až…“C9“))
nebo
1. znak z t1@cod in (“3“,“4“,“5“,“6“,“7“,“8“)
nebo
1. znak z t1@cod in (D ..Z)
nebo
(3. znak v t1@cod=“S“))
potom
 
  BLOK TESTŮ CASE 3
 
    BLOK TESTŮ CASE 31
   
  jestliže (1. znak z t1@cod in (“3“,“4“,“5“,“6“,“7“,“8“) nebo
      1. znak z t1@cod in (D ..Z) )
/*SPECIFICKÉ DOBY NA 1. POZICI*/
    a současně
(3. znak z t1@cod=“S“))
      /*SPECIFICKÉ DOBY NA 3. POZICI*/
    a současně
      /* VYLOUČEN CELÝ ROK*/
    (t1@(m(i), i=1 .12 obsahuje „x“ nebo „X“) nebo m13=(„x“, „X“)
  potom
    BLOK KONTROL
jestliže neplatí (t1@din /* Započtené dny musí být <= "vylouč." DnyŹ*/
potom chyba “Chybný počet započtených dnů”
Jdi na „KONEC BLOK TESTŮ CASE 3“:
KONEC BLOK KONTROL
    KONEC BLOK TESTŮ CASE 31
 
    BLOK TESTŮ CASE 32      
   
  jestliže (1. znak z t1@cod in (“3“,“4“,“5“,“6“,“7“,“8“) nebo
      1. znak z t1@cod in (D ..Z) )
/*SPECIFICKÉ DOBY NA 1. POZICI*/
    a současně
      /* VYLOUČEN CELÝ ROK*/
    (t1@(m(i), i=1 .. 13 obsahuje „x“ nebo „X“)
  potom
    BLOK KONTROL
/* Započtené dny musí být ROVNY vylouč. dnyŹ*/
jestliže neplatí (t1@din = t1@dex)
potom chyba
„Nesprávný vztah započtených a vyloučených dnů“
Jdi na „KONEC BLOK TESTŮ CASE 3“:
KONEC BLOK KONTROL
    KONEC BLOK TESTŮ CASE 32      
 
    BLOK TESTŮ CASE 33      
   
  jestliže (3. znak z t1@cod=“S“))
      /*SPECIFICKÉ DOBY NA 3. POZICI*/
    a současně
      /* VYLOUČEN CELÝ ROK*/
    (t1@(m(i), i=1 .. 13 obsahuje „x“ nebo „X“)
  potom
    BLOK KONTROL
      /* Započtené dny SE NEVYKAZUJÍ, =0Ź*/
    jestliže neplatí (t1@din = 0)
potom chyba “Chybný počet započtených dnů”
Jdi na „KONEC BLOK TESTŮ CASE 3“:
KONEC BLOK KONTROL
    KONEC BLOK TESTŮ CASE 33      
 
    BLOK TESTŮ CASE 34      
   
  /* TESTY SPECIF. DOB – NENÍ VYLOUČENÝ CELÝ ROK*/
  Jestliže t1@cod=“3_T“ /*TRESTANCI: */
        /*ZD musí být <= "(od" –do) */
  potom
    BLOK KONTROL
jestliže t1@din > suma dnů (t1@fro, t1@to)
potom chyba chyba „chybný počet započt. dnů“
jdi na KONEC BLOK TESTŮ 34
KONEC BLOK KONTROL
        /* Ostatní specif. doby – ne trestanci */
   
  BLOK TESTŮ CASE 34-1
   
  jestliže t1@dex = 0 /*Vyloučené dny =0 */
potom jestliže t1@din(početdnů t1@fro.t1@to) - ∑(t1@m[i])
 
    potom chyba „chybný počet započt. dnů“
jinak OK;
      /*Vyloučené dny > 0 u specifických dob: */
/*v řádku NEEXISTUJE měsíc bez pojištění*/
    /*U specifických dob LZE ZKONTROLOVAT*/
      /*vztah od-do a započtené dny */
jinak jestliže
/*v řádku t1 není vyloučený měsíc */
        (t1@(m(i), i=1 .. 13 neobsahuje „x“ nebo „X“)
      a
(t1@din(početdnů t1@fro.t1@to) )
    potom chyba “Chybný počet započtených dnů”
   
  KONEC BLOK TESTŮ CASE 34-1
    KONEC BLOK TESTŮ CASE 34
 
  KONEC BLOK TESTŮ CASE 3
 
  JDI NA KONEC BLOK CASE ZD
Konec CASE3
 
/* BĚŽNÉ TESTY – NE PRO SPEC. DOBY APOD. */    
CASE 4 Odečtené doby=0 Obecný test mimo předcházející případy, Nejsou to specif. doby
 
  BLOK TESTŮ CASE4
 
  jestliže t1@cod = 0_T /*Trestanci: ZD<= "((od-do)" - ∑(t1@m[i])   */
    potom jestliže t1@din > (suma dnů (t1@fro, t1@to) - ∑(t1@m[i])
              pak chyba „Chybný počet započtených dnů“;
      /*ostatní případy – ne trestanci   */
  jinak jestliže( t1@din(početdnů t1@fro.t1@to)-∑(t1@m[i]) )
              potom Chyba „“Chybný počet započtených dnů”
           
  JDI NA TEST CASE 6
KONEC BLOK TESTŮ CASE4
Konec CASE4
 
CASE6
  BLOK TESTŮ CASE6
Započtené dny s vyloučeným rokem a nejsou to specifické doby

Jestliže existuje tag t1, pro který platí
    (t1@m[13]=“X“ nebo t1@m[13]=“x“) a zároveň t1@din0,
  pak chyba “Chybný počet započtených dnů”.
KONEC BLOK TESTŮ CASE6
Konec CASE6
 
KONEC BLOK CASE ZD
 
/* konec bloku aktuálně platných testů pro započtené dny */
 
Počet vyloučených dnů
 
Počet vyloučených dnů pro kód „P“
Jestliže existuje tag t1, pro který platí 2. znak z t1@cod=“P“ a zároveň t1@dex>0,
pak chyba “Chybný počet vyloučených dnů”.
 
Počet vyloučených dnů pro kód „D“
Jestliže existuje tag t1, pro který platí 2. znak z t1@cod=“D“ a zároveň (t1@dex > t1@dar),
pak chyba “Chybný počet vyloučených dnů”.
 
Počet vyloučených dnů pro ostatní případy
/* začátek bloku aktuálně platného testu „Počet vyloučených dnů pro ostat. případy*/
Jestliže (2. znak z t1@cod=“D“) nebo [ (3. znak z t1@cod=“S“) a zároveň (m13=“x“,“X“) ],
potom OK,
jinak
  /* další test */
jestliže t1@dex > t1@din,
pak chyba „Chybný počet vyloučených dnů“.
/* konec bloku aktuálně platného testu „Počet vyloučených dnů pro ostatní případy */
 
Vyměřovací základ – uveden
 
/* začátek bloku aktuálně platného testu „Vyměřovací základ – nesmí být uveden“ */
Jestliže existuje tag t1@inc, který je neprázdný,
  potom jestliže (t1@din jsou neprázdné a t1@dex jsou neprázdné a t1@din=t1@dex)
    /* VZ nesmí být uveden, jestliže počet započtených dnů = vyloučené doby, nebo */
  nebo
    /* V průběhu pojištění jsou za sebou dva řádky a vyměřovací základ */
/* nesmí být uveden, jestliže v následujícím řádku průběhu činnosti je
/*v kódu na 2. pozici “D” a započtené dny jsou neprázdné;není nutné,*/ /*aby odečtené byly prázdné */
(2. znak z t1@cod není =“D“
      /* první řádek z dvojice - aktuální tag t1*/
/* není s kódem xDx */
    a současně
    (v následujícím tagu t1 (if any, dle atributu row) platí:
(2. znak z t1@cod=“D“ a zároveň t1@din jsou neprázdné))
      /* Váže na test: */
/*Vyměřovací základ – neuveden */
  nebo
    /* nebo nesmí být uveden, jestliže je v kódu na 2. pozici „D“, započtené dny jsou prázdné a odečtené doby = vyloučené doby */
(2. znak z t1@cod=“D“ a zároveň t1@din jsou prázdné a zároveň t1@dex neprázdné a t1@dar neprázdné a t1@dex=t1@dar)
  nebo
    /* nebo nesmí být uveden, jestliže započtené dny jsou prázdné a 2. znak v údaji kód se nerovná „D“ */
(t1@din jsou prázdné a zároveň 2. znak z t1@cod “D“),
 
  potom Chyba „Uveden vyměřovací základ“      
  jinak OK.
/* Váže na test Vyměřovací základ – neuveden */
/* konec bloku aktuálně platného testu „Vyměřovací základ – uveden“ */
 
Vyměřovací základ – neuveden /* je to chyba */
 
    /* V průběhu pojištění jsou za sebou dva řádky a vyměřovací základ */
/* nesmí být uveden na 2. řádku a musí být na 1. řádku , pokud: */
/* na prvním řádku je vykázána doba před důchod. věkem */
/* na druhém řádku je vykázána doba po dosažení důchod. věku */ /* a doby odečtené = interval od-do */
           
  Jestliže existuje řádek
      /* první řádek z dvojice - aktuální tag
    t1*/
      /* není s kódem xDx */
    (2. znak z t1@cod není =“D“
           
    a zároveň
      /* následující řádek je s kódem xDx */
    (v následujícím tagu t1 (if any, dle atributu row) platí:
          (2. znak z t1@cod=“D“)
      a zároveň
/odečtené doby = interval od-do */
              (t1@dar = (početdnů t1@fro.t1@to))
      a zároveň
              t1@inc je je neprázdný (není = 0)
potom Chyba „Uveden vyměřovací základ“
 
/* začátek bloku aktuálně platného testu „Vyměřovací základ – neuveden“ */
Jestliže existuje tag t1@inc, který je prázdný,
potom
  jestliže
/* nebo VZ musí být uveden, jestliže 2. znak v údaji kód je „P“ */
    (2. znak z t1@cod = „P“),
  potom
    chyba „Vyměřovací základ je prázdný“
  jinak OK.
/* konec bloku aktuálně platného testu „Vyměřovací základ – neuveden“ */
 
Dny odečtené po důch. věku a kód
Jestliže existuje tag t1, pro který platí:
  t1@dar je neprázdné a t1@cod nemá na druhém místě znak „D“,
pak chyba „Chyba ve dnech odečtených po důchodovém věku“.
Jestliže existuje tag t1, pro který platí:
  t1@dar je neprázdné a t1@cod má na druhém místě znak „P“,
pak chyba „Se zúčtováním příjmů se odečtené doby neuvádějí“.
 
Dny započtené po dosažení důch. věku
Jestliže existuje tag t1, pro který platí:
  t1@cod má na druhém místě znak „D“
a zároveň t1@din>=[počet dnů v časovém intervalu ]
a zároveň t1@dar>0,
pak chyba „Chyba v započtených dnech po dosažení důch. věku“.
 
Dny odečtené po důch. věku - kontrola počtu
Jestliže existuje tag t1, pro který platí:
  t1@dar je neprázdné a t1@darpak chyba „Dny odeč. po důchodovém věku jsou nižší než vyloučené dny“.
Jestliže 2. znak z t1@cod=“D“
potom jestliže NEPLATÍ
  /*počet odečtených dnů >= součet kalendářních dnů v měsících bez pojištění, tj.*/ (t1@dar >= ∑(t1@m[i], i=1, …12 nebo 1-12)
potom chyba „Chybný počet odečtených dnů“
 
Vrchní mez součtu vyloučených dnů v dobách t1
Jestliže v alespoň jedné době t1 je
  (2. znak z t1@cod=“D“) nebo (3. znak z t1@cod=“S“ a zároveň M13=“x“,“X“),
potom OK,
jinak
  /* další úroveň testu */
jestliže součet všech t1@dex <= "součet" všech t1@din,
/* součet se provádí přes všechny řádky */
pak OK,
jinak
    Chyba “Součet vyloučených dnů ve všech dobách je vyšší než součet započtených dnů”.
 
Interval před začátkem výdělečné činnosti
Jestliže existuje t1@fro nebo t2@fro < comp@fro,
pak chyba „Začátek průběhu pojištění před začátkem výdělečné čínnosti“.