//Faza 0: Lansare program

lPrezentare := .t.
#IF GetEnv("LMODSILENTIOS")="DA"
    lModSilentios := .t.
    lPrezentare   := .f.
#ENDIF

#IF lPrezentare    
    aMes := {}
    AAdd (aMes, "")
    AAdd (aMes, "                   hSALAR V 7.4A")
    AAdd (aMes, "     Calculul salariilor de la 1 ianuarie 2018")
    AAdd (aMes, "")
    AAdd (aMes, " Aplicabil pe baze de date hSALAR V 7.3C0, 7.3C1,7.3C2,")
    AAdd (aMes, "")
    AAdd (aMes, " Executati acest program doar dupa ce:")
    AAdd (aMes, "   -ati facut o copie de siguranta a bazei de date,")
    AAdd (aMes, "   -ati facut reorganizarea totala a bazei de date,")
    AAdd (aMes, "   -v-ati convins ca exista suficient spatiu disc liber")
    AAdd (aMes, "    (marimea celui mai mare fisier + 25 Mo)")
    AAdd (aMes, "")
    AAdd (aMes, " ATENTIUNE ! In caz de incident restaurati baza de date ")
    AAdd (aMes, "             si reluati executia programului.")
    // AAdd (aMes, "")
    AAdd (aMes, " Continuati ?")
    
    aMesOpt :=  {aMes, {" DA ", " NU "}}
    
    wMes :=  h_NewOptions("O",                                            ;
            ,,,,                                                         ;
            NIL,"*", aMesOpt,{1})
    
    IF(!h_PopUpWindow (wMes) .OR. wMes[13,1] != 1, h_End(1), NIL)
#ENDIF

// analizeaza baza de date: se indeplinesc conditiile de upgrade ?
sMesaj   := ""
nerr     := 0
lEroare  := .f.
x_open := {}
x_versiune := {"V 7.3C0", "V 7.3C1", "V 7.3C2",  "V 7.3C3", "V 7.4A0"}
#DO F_VERS.TXT
x_aplVer:=apl->V

x_CrLf  := Chr(13)+Chr(10) 

// returneaza lEroare
#IF lEroare
    nerr   := nerr+1
    sMesaj := sMesaj+x_CrLf
#ENDIF

// --------------------------------------------------------------------------------------
// Verifica versiunea pentru hMET2UP

#IF h_ApplIdnt[3]<"V 5.11"
    sMesaj  := sMesaj + " - Versiunea utilitarului hMET2UP nu este corespunzatoare"+x_CrLf
    lEroare := .t.
#ENDIF

// -----------------------------------------------------------------------------
// se verifica op P_/31 este ocupata?

#IF (x_aplVer="V 7.3C") .AND. !Empty(fil_e3)
    #IF ! h_UseAlias({"tfl"})
        h_PutLine("*** Eroare deschidere Operatii/Ferestre/Liste!")
        #DO FUABANDN.TXT
    #ENDIF
    __dbLocate( {|| tfl->FIS+tfl->ORD+tfl->NR=="P_131" .AND. !Empty(tfl->DENUM)},,,, .F.)
    #IF Found()
        sMesaj  := sMesaj + " - Eliberati operatie P_/31 -"+RTrim(tfl->DENUM)+x_CrLf
        lEroare := .t.
    #ENDIF
    h_CloseAlias()
#ENDIF

// -----------------------------------------------------------------------------
// Testeaza structra fisierului APLIC.DBF

#IF Len(apl->V) < 7
    lEroare := .T.
    nerr    := nerr+1
    sMesaj  := sMesaj + "Fisier Aplicatii -lungime camp V < 7 caractere !"+x_CrLf
#ENDIF

#IF !Empty(DataAppl) .AND. h_DTOC(DataAppl,"aaaa.ll") < "2018.01"
    lEroare := .T.
    nerr    := nerr+1
    sMesaj  := sMesaj + "Upgrade-ul poate fi executat: "                                   +Chr(13)+Chr(10)+ ;
                        "  -incepand cu 2018.01-Calculul salariilor de la 1 ianuarie 2018" +Chr(13)+Chr(10)+ ;
                        "  -baze de date neinitializate"                                   +Chr(13)+Chr(10)
#ENDIF

// -----------------------------------------------------------------------------
// Faze:
MenuFaze := {}
#IF ! lEroare
    #IF ((Empty(DataAppl) .OR. h_DTOC(DataAppl,"aaaa") >= "2018") .AND. (x_aplVer="V 7.3C"))
        AAdd(MenuFaze,{"F1.TXT"})
        AAdd(MenuFaze,{"",        "-----------------------------------------------------------"})
    #ENDIF 
#ENDIF
AAdd(MenuFaze,{"FYP","Faza X: Prezentare pachet"})
AAdd(MenuFaze,{"FYN","Faza Y: Documentatie upgrade"})
AAdd(MenuFaze,{"FZ", "Faza Z: Instructiuni de upgrade"})

sFile := ""
#IF ! EMPTY(sMesaj)
    sMesajT := "Proprietar program: "+x_SocProg()+x_CrLf
    #IF ! (x_SocData() == x_SocProg())
        sMesajT := sMesajT + "Proprietar baza de date: "+x_SocData()+x_CrLf
    #ENDIF
    sMesajT := sMesajT + REPLICATE("-",LEN(x_SocProg())+21)+x_CrLf
    sMesajT := sMesajT + "Baza de date a fost verificata si nu se indeplinesc "+ ;
                         "conditiile pentru upgrade:"+x_CrLf
    sMesaj  := sMesajT + sMesaj
    sMesaj  := sMesaj+x_CrLf
    #IF nerr = 0
    // nu trebuie reluat ...
    #ELSEIF nerr = 1
        sMesaj := sMesaj+"Rezolvati eroarea si reluati !" +x_CrLf
    #ELSE
        sMesaj := sMesaj+"Rezolvati erorile si reluati !" +x_CrLf
    #ENDIF

    sFile   := h_AddPath("PROBL_BD.TXT",h_FilePathes[fil_tmp])
    h_MemoWrit(sFile,sMesaj)
#ELSE
    sFile := h_AddPath("CITESTE.TXT",h_FilePathes[fil_tmp])
    #IF !h_SafeErase(sFile)
        h_MesErr("Fisierul nu poate fi sters: "+x_FileRight(sFile, MaxCol()+1-28))
        Abandon()
    #ENDIF
    h_CopyFile(homepath+"CITESTE.TXT",sFile)
#ENDIF

h_CloseAlias(,x_open)

// OS       =LINUX (varianta Clipper), se lanseaza DOS/EDIT
// OS       =LINUX (nativ), se lanseaza programul implicit pt..txt
// OS       =Windows_NT, Linux_TS, Linux_WP notepad
// OS absent= W'9x, ME , notepad

x_os := h_Os("l")
#IF!lModSilentios .or. ! Empty(sMesaj)
    #IF x_os = "linux_wp" 
        h_MemoWrit(h_AddPath("WARS69C"+h_StatId()+".CMD",h_FilePathes[fil_scat]),        ;
                   "[RUN]"                                                     +x_CrLf+ ;
                   "MODE=/MAX"                                                 +x_CrLf+ ;
                   "DIRECTORY="                                                +x_CrLf+ ;
                   "EXE="+h_StPath(sfile)                                      +x_CrLf+ ;
                   "PARAMETERS="                                               +x_CrLf)
    #ELSEIF "linux" $ Lower(h_Build()) .AND. x_os = "linux"
        h_DOS("xdg-open "+sfile)
    #ELSEIF x_os = "WINDOWS_NT"
        h_DOS('cmd /c START notepad.exe '+sFile)
    #ELSE
        h_DOS('START notepad.exe '+sFile)
    #ENDIF
#ENDIF

sMesaj  := NIL   
sMesajT := NIL   
sFile   := NIL
DbCloseAll()
