*:*********************************************************************************************************
*:     Procedure file: SK_KONTROLA.PRG
*:
*:             kontroluje navaznost cisel uzaverek ve velkych eskackach a ukaze posledni uzaverku,
*:             aby se odchytilo, kdyby prestal z nejake kasy fungovat prenos
*:
*: 2012-11-30: upraveno formatovani vysledku
*:
*:*********************************************************************************************************
param sk_path

sk_path  = sk_path  + IIF(RIGHT(m.sk_path,1) ="\", "", "\")
vysledek = "    v.2012-1128: "

hranice = SUBSTR(DTOS(DATE() - 55), 3,6)
USE (m.sk_path + "sk_sez")
sele disti id_kas, uzaverka, uz_cislo  ;
     order by id_kas, uzaverka where ":" $ uzaverka and uzaverka > m.hranice ;
     from (m.sk_path + "sk_sez") sez into table (m.pri_path + "uzaverky")

sele disti id_kas, uzaverka, uz_cislo, DATE() as uct_den, SPACE(33) as komentar, SPACE(7) as priznak ;
     from (m.pri_path + "uzaverky") into table (m.pri_path + "uzaverky_err")
zap

sele disti id_kas, MIN(uz_cislo) as min_uzc, MAX(uz_cislo) as max_uzc ;
     group by 1 from (m.pri_path + "uzaverky") into table (m.pri_path + "seznam_kas")

SCAN
    SCATTER MEMVAR 
    SELECT uzaverky
    byla_chyba = .F.
    FOR ii = min_uzc TO max_uzc
        LOCATE FOR id_kas = m.id_kas .and. uz_cislo = m.ii
        IF FOUND()
            posledni_uz = uzaverky.uzaverka
            posledni_uzc = m.ii
            IF m.byla_chyba
                INSERT INTO (m.pri_path + "uzaverky_err") (id_kas, uzaverka, uz_cislo, komentar, priznak) VALUES (m.id_kas, m.posledni_uz, m.posledni_uzc, STR(m.posledni_uzc), "[1]")
            ENDIF 
            byla_chyba = .F.
        ELSE
            INSERT INTO (m.pri_path + "uzaverky_err") (id_kas, uzaverka, uz_cislo, komentar, priznak) VALUES (m.id_kas, m.posledni_uz, m.posledni_uzc, STR(m.posledni_uzc), "[1]")
            INSERT INTO (m.pri_path + "uzaverky_err") (id_kas, uzaverka, uz_cislo, komentar, priznak) VALUES (m.id_kas, "--------", m.ii, STR(m.ii) + "chybi tohle uz_cislo", "[2B#R]")
            byla_chyba = .T.
        ENDIF 
    ENDFOR 
    IF VAL(SUBSTR(m.posledni_uz, 3,2)) * VAL(SUBSTR(m.posledni_uz, 5,2)) = 0
        uct_den = {^1999-12-12}
    ELSE
        uct_den = IIF(SUBSTR(m.posledni_uz,8,2) < "07", ;
                  DATE(2000 + VAL(SUBSTR(m.posledni_uz, 1,2)), VAL(SUBSTR(m.posledni_uz, 3,2)), VAL(SUBSTR(m.posledni_uz, 5,2))) - 1, ;
                  DATE(2000 + VAL(SUBSTR(m.posledni_uz, 1,2)), VAL(SUBSTR(m.posledni_uz, 3,2)), VAL(SUBSTR(m.posledni_uz, 5,2))))
        DO CASE 
        CASE m.uct_den > DATE() - 3
            priznak = "[1]"
        CASE m.uct_den > DATE() - 5
            priznak = "[2#r]"
        OTHERWISE
            priznak = "[2B#R]"
        ENDCASE 
    ENDIF 
    INSERT INTO (m.pri_path + "uzaverky_err") (id_kas, uzaverka, uct_den, komentar, priznak) VALUES (m.id_kas, m.posledni_uz, m.uct_den, "posledni uzaverka", m.priznak)
    SELECT seznam_kas
ENDSCAN 

SELECT uzaverky_err
IF RECCOUNT() > 0
    INDEX on uzaverka TAG uzaverka 
    SCAN
        vysledek = m.vysledek + m.crlf + priznak + uzaverka + "/" + id_kas + " " + komentar
    ENDSCAN
ELSE 
    vysledek = m.vysledek + " ... EXEC OK"
ENDIF 
vysledek = m.vysledek + m.crlf
