//Faza 1A: Constante si functii

// NewMsg()
x_open := {}

// ----------------------------------------------------------------------------
// Creare fisier log

// sDbName := h_FileName(h_AbsPath(h_CutSl(h_FilePathes[fil_file])))
// pLog    := h_FilePathes[fil_tmp]
// slogf   := h_AddPath("US72A_F2"+h_StatId()+".TXT",pLog)

// h_OpenOut(slogf)
// h_PutLine("Upgrade hSALAR  V 7.2A - Initializare 2017")
// h_PutLine("Societatea:   " + x_SocData ())
// h_PutLine("Baza de date: " + sDBName)
// h_PutLine("Perioada:     " + Perioada)
// h_PutLine("---------------------------------------------------------------------------------")
// h_PutLine("")

// ------------------------------------------------------------
// Actualizare Constante si functii
//
// Adauga
xx_Add  := "CAM-ANGTOR  ,CAS-ASIGUR-0,"

// Sterge
xx_Del   := "2018-CAM    ,2018-CAS    ,2018-CAS-   ,2018-CAS-1  ,2018-CAS-2  ,"+ ;
            "2018-CAS-3  ,2018-CSS    ,2018-DPL    ,2018-IMA    ,2018-IMF    ,"+ ;
            "2018-IMM    ,2018-MIN    ,"
xx_DelL  := "ACC-ANGTOR  ,CCI-ANGTOR  ,CSS-ANGTOR  ,"+ ;
            "FGS-ANGTOR  ,SOM-ANGTOR  ,SOM-ASIGURAT,"
           
// Modifica denumire:
xx_mD   := ""
// Modifica temei legal, ce repr argumentul si valoarea
xx_mTRV := "TICH-VAL    ,"              
// suprascriere
xx_spr  := "CAS-ANGTOR-1,CAS-ANGTOR-2,CAS-ANGTOR-3,CAS-ASIGURAT,CAS-DECES-A ,CAS-DECES-MF,"+ ; 
           "CSS-ASIGURAT,IVG-DPL     ,IVG-IMP-ANT ,IVG-IMP-ASM ,IVG-IMP-FIN ,"+ ; 
           "IVG-IMPL    ,NRZ-MEDIU   ,SAL-MED-ANT ,SAL-MEDIU   ,SAL-MINIM   ,"
// Compara si modifica valoarea, daca dif. mesaj
xx_caV  := "" 
// Inlocuieste valoarea 
xx_V    := ""                    
// Valoarea se compara si se schimba doar daca raspuns afirmativ
xx_ccV  := "TICH-VAL    ,"

PutMsg ("MOD:Constante si functii")
#IF ! h_UseAlias("cf")
    h_PutLine("*** Eroare deschidere Constante si functii !")
    #DO FUABANDN.TXT
#ENDIF

// cf.de referinta
h_NewSelect()
#IF !h_NetUse(homepath+"CNSTFUNC",,,"Constante si functii (referinta)","cfR")
    h_PutLine("*** Eroare deschidere Constante si functii (referinta)!")
    #DO FUABANDN.TXT
#ENDIF

lScrie := .T.
#IF lScrie
    h_PutLine("    Actualizare Constante si functii pentru 2018:")
    h_PutLine("    ----------------------------------------------")
#ELSE
    h_PutLine("    Verificare Constante si functii pentru 2018:")
#ENDIF

DbSelectArea("cf")
__dbLocate( {|| (cf->COD+",")$xx_Del+xx_DelL},,,, .F. )
#WHILE Found()
    #IF (cf->COD+",") $ xx_Del+xx_DelL
        DbDelete()
        if((cf->COD+",") $ xx_DelL,h_PutLine("    constanta: "+cf->COD+" a fost stearsa"),)
    #ENDIF
    __dbContinue()
#ENDDO

DbSelectArea("cfR")
__dbLocate( {|| (cfR->COD+",")$xx_mD+xx_mTRV+xx_spr+xx_caV+xx_V+xx_ccV},,,, .F. )
#WHILE Found()
    PutMsg(cfR->COD)
    DbSelectArea("cf")
    __dbLocate( {|| cfR->COD==cf->COD},,,, .F. )
    #IF Found()
        #IF (cf->COD+",") $ xx_mD
        // Modifica denumire
            cf->DENUMIRE := cfR->DENUMIRE
            h_PutLine("    constanta: "+cf->COD+" denumirea a fost modificata")
        #ENDIF
        #IF (cf->COD+",") $ xx_mTRV
        // Modifica temei legal, ce repr argumentul si valoarea
            cf->TLEG    := cfR->TLEG
            cf->RARG    := cfR->RARG
            cf->RVAL    := cfR->RVAL
            h_PutLine("    constanta: "+cf->COD+" modificat: Temei legal, Ce reprezinta argumentul, Ce reprezinta valoarea")
        #ENDIF
        #IF (cf->COD+",") $ xx_spr
        // suprascriere
            cf->TLEG    := cfR->TLEG
            cf->RARG    := cfR->RARG
            cf->RVAL    := cfR->RVAL
            cf->VALOARE := cfR->VALOARE
            h_PutLine("    constanta: "+cf->COD+" suprascris cu valorile de referinta")
        #ENDIF
        #IF (cf->COD+",") $ xx_caV
        // Compara si modifica valoarea, daca dif. mesaj
            #IF cfR->VALOARE != cf->VALOARE
                h_PutLine("**  constanta: "+cf->COD+" - valoare constanta "+Str(cf->VALOARE,15,3)+" # valoarea de referinta " ;
                                +Str(cfR->VALOARE,15,3)+ "!")
                cf->VALOARE := cfR->VALOARE
                h_PutLine("    constanta: "+cf->COD+" valoarea a fost modificata")
            #ENDIF
        #ENDIF
        #IF (cf->COD+",") $ xx_V
        // Inlocuieste valoarea 
            cf->VALOARE := cfR->VALOARE
            h_PutLine("    constanta: "+cf->COD+" valoarea a fost modificata")
        #ENDIF
        // xx_ccV deocamdata contine doar TICH-VAL, deci testul =0 se poate folosi
        #IF ((cf->COD+",") $ xx_ccV) .AND. (cf->VALOARE == 0)
        // nu se foloseste, nu actualizam, se inscrie in log ...
            h_PutLine("*   "+cf->COD+" are valoarea 0, nu este utilizat!")
        #ELSEIF ((cf->COD+",") $ xx_ccV) .AND. (cfR->VALOARE != cf->VALOARE)
        // Valoarea se compara si se schimba doar daca raspuns afirmativ
            aMes := {}
            AAdd (aMes, "")
            AAdd (aMes, " Constanta: "+cf->COD+" -"+RTrim(cf->DENUMIRE))
            AAdd (aMes, "")
            AAdd (aMes, " Valoare curenta:      "+Str(cf->VALOARE, 15,2))
            AAdd (aMes, " Valoare de referinta: "+Str(cfR->VALOARE,15,2))
            AAdd (aMes, "")
            AAdd (aMes, " Preluati valoarea de referinta ?")
            aMesOpt :=  {aMes, {" Preluare ", " Nu se modifica "}}
    
            wMes :=  h_NewOptions("W",        ;
                     ,,,,                     ;
                     NIL,"WARNING", aMesOpt,{2})
    
            #IF h_PopUpWindow (wMes) .AND. (wMes[13,1] = 1)
                cf->VALOARE := cfR->VALOARE
                h_PutLine("    constanta: "+cf->COD+" valoarea a fost modificata")
            #ELSE
                h_PutLine("    constanta: "+cf->COD+" valoarea nu a fost modificata!")
            #ENDIF
        #ENDIF
    #ELSE
        h_PutLine("**  constanta: "+cf->COD+" nu este definita!")
    #ENDIF

    DbSelectArea("cfR")
    __dbContinue()
#ENDDO

DbSelectArea("cfR")
h_CloseAlias()

DbSelectArea("cf")
DbEval({|| DbDelete()}, {|| (cf->COD+",")$xx_Add})
__dbApp( h_OsPath(homepath+"CNSTFUNC"), { }, {|| (field->COD+",")$xx_Add},,,, .F. )
h_PutLine("    adaugat constante noi: "+xx_Add)

h_CloseAlias()

// ---------------------------------------------------------------- .OR. ---------
// h_CloseOut("")
// 
// h_ViewFile(slogf,"Upgrade hSALAR  V 7.2A - Initializare 2017",150,60,"P")
// 
// h_MesHlp("Terminat",0)
// EndMsg()
