*:*****************************************************************************
*:
*:	Procedure file: COPY_DBF
*:
*: kopiruje databaze, ktere mohou byt otevreny jinou stanici, aby mohly byt preneseny na ftp nebo zazipovany
*:  __odkud: seznam databazi vcetne cesty, ktere se maji kopirovat (".dbf" na konci muze a nemusi byt)
*:  __kam  : cesta kam se ma kopirovat
*:  priklad: do copy_dbf with "i:\d_xxx\data\sk_???", "c:\ftp\data\dbf\"
*:
*:  2012-12-28: zrusen 3. parametr, ktery urcoval, zda kopirovat s klauzuli FOX2X
*:              on error nahrazeno kontrukci try-catch
*:  2018-05-13: 3. parametr pouzit jako pripona kopirovanych souboru (pripona pred tecka-dbf)
*:              takze treba sk_fin.dbf se kopiruje do sk_fin[pripona].dbf
*:  2018-05-24: jmeno ciloveho souboru uzavreno do uvozovek, snese to tim padem i mezeru ve jmene
*:
*:*****************************************************************************

PARAMETERS __odkud, __kam, __pripona

IF EMPTY(m.__pripona)
    __pripona = ""
ENDIF 

__koliksouboru = adir(__seznam, justpath(m.__odkud) + "\" + juststem(m.__odkud) + ".dbf")
__odkud = justpath(m.__odkud) + "\" 
__kam = __kam + IIF(RIGHT(m.__kam, 1)="\", "", "\")
IF ! directory(m.__kam)
   mkdir (m.__kam)
ENDIF 
vysledek = ""
FOR __iii = 1 to m.__koliksouboru
    __sourcefile = m.__odkud + __seznam(__iii, 1)
    otevreno = .F.
    TRY     
        USE (m.__sourcefile)
        otevreno = .T.
    CATCH 
        vysledek = m.vysledek + crlf + "[1#R] nelze kopirovat " + UPPER(m.__sourcefile)
    FINALLY
    ENDTRY 

    IF m.otevreno
*        prikaz = 'COPY ALL TO "' + LOWER(m.__kam + __seznam(__iii, 1)) + '"'
        prikaz = 'COPY ALL TO "' + LOWER(m.__kam + juststem(__seznam(__iii, 1)) + m.__pripona) + '"'

        IF FILE( m.__odkud + juststem(__seznam(__iii, 1)) + ".cdx" )
             prikaz = m.prikaz + " with cdx"
        ENDIF 
        IF is_dbf_fox26()
             prikaz = m.prikaz + "  TYPE FOX2X "
        ENDIF 

        TRY
             &prikaz
        CATCH 
             vysledek = m.vysledek + crlf + "[1#R] CHYBA v prikazu: " + m.prikaz
        ENDTRY 

        USE 
    ENDIF 
ENDFOR 

IF EMPTY(m.vysledek)
    DO CASE 
    CASE m.__koliksouboru = 0
        vysledek = crlf + "[1#R] soubor neexistuje"
    CASE m.__koliksouboru = 1
        vysledek = " ... OK"
    OTHERWISE 
        vysledek = " (" + ALLTRIM(STR(m.__koliksouboru)) + ") ... OK"
    ENDCASE 
ENDIF 

******************************************************************************************
PROCEDURE is_dbf_fox26
* vola se s otevrenou databazi, vraci .T. pokud tato je typu fox26, jinak vrati .F.
* testuji se povolene typy fieldu a prazdnost field_null a field_nocp

__o_sel = select()
ret_val = .T.
copy structure extended to (m.pri_path + "__is_dbf_fox26")
select 0
use (m.pri_path + "__is_dbf_fox26")

locate for (.not. upper(field_type) $ "CDFLMNGP") .or. field_null .or. field_nocp
if found()
   ret_val = .F.
endif

USE 
ERASE (m.pri_path + "__is_dbf_fox26.*")
SELECT (__o_sel)
RETURN  m.ret_val
