Define Class oraSettingsController As Custom

	oDBController = Null
	oDateCalendar = Null
	oDateFirma = Null
	nIdSucursala = Null
	nIdMama = Null
	lEMama = Null
	
	Procedure Init
		Lparameters toDBController
		This.oDBController = toDBController
	Endproc
	******************************************************************
	Procedure initializeaza_firma
		Lparameters tnIdFirma,tnIdUtil
		This.initializeaza_date_firma(tnIdFirma)
		This.initializeaza_calendar()
		This.initializeaza_optiuni()
		This.initializeaza_utilizator(tnIdUtil)
	Endproc
	******************************************************************
	Procedure initializeaza_utilizator
		Lparameters tnIdUtil
		This.initializeaza_optiuni_utilizator(tnIdUtil)
		This.initializeaza_sesiune_server(tnIdUtil)
	Endproc
	******************************************************************
	Procedure initializeaza_date_firma
		Lparameters tnIdFirma
		Local loFirma,lcCursor
		This.oDateFirma = Null
		lcCursor = [crsdatefirma]
		If Used(lcCursor)
			Use In (lcCursor)
		Endif
		If This.oDBController.apeleaza_sql_hash(getHash([cColumns=>*??cTables=>syn_nom_firme??cWhere=>id_firma=] + Alltrim(Str(tnIdFirma))),lcCursor)
			Select (lcCursor)
			Scatter Name loFirma
			This.oDateFirma = loFirma
			This.nIdSucursala = Iif(Nvl(loFirma.id_mama,0) <> 0, loFirma.Id_Firma, Null) && DACA ESTE SUCURSALA - ID-UL SUCURSALA PE CARE IL SCRIU IN TABELE
			This.nIdMama = Iif(Nvl(loFirma.id_mama,0) <> 0, loFirma.id_mama, Null)
			This.lEMama = Nvl(loFirma.e_mama,0) <> 0
		Endif
		If Used(lcCursor)
			Use In (lcCursor)
		Endif
	Endproc
	******************************************************************
	Procedure initializeaza_calendar
		Local loCalendar,lcCursor
		This.oDateCalendar = Null
		lcCursor = [crscalendar]
		If Used(lcCursor)
			Use In (lcCursor)
		Endif
		If This.oDbController.apeleaza_sql_hash(getHash([cColumns=>*??cTables=>(select * from calendar order by id_calendar desc)??cWhere=>rownum = 1]),lcCursor)
			If Reccount(lcCursor) = 0
				amessagebox("Nu exista luni deschise in calendar!",48,"Atentie")
			Else
				Select (lcCursor)
				Scatter Name loCalendar
				This.oDateCalendar = loCalendar
			Endif
		Endif
		If Used(lcCursor)
			Use In (lcCursor)
		Endif
	Endproc
	******************************************************************
	PROCEDURE initializeaza_optiuni_utilizator
		LPARAMETERS tnIdUtil
		LOCAL lcCursor
		lcCursor = [crsOptiuniUtilizator]
		If Used(lcCursor)
			Use In (lcCursor)
		Endif
		This.oDbController.apeleaza_sql_hash(getHash([cColumns=>*??cTables=>optiuni_util??cWhere=>id_util=] +ALLTRIM(STR(tnIdUtil)) + [??cOrderBy=>varname]),lcCursor)
	ENDPROC
	******************************************************************	
	Procedure initializeaza_optiuni
		Local lcNumeCursor
		lcNumeCursor = [v_optiuni]
		If This.citeste_optiuni(lcNumeCursor)
			Select(lcNumeCursor)
			Scan For !Empty(varname) And (Isnull(programe) Or gcNumeProgram$programe)
				lcvarname = Alltrim(&lcNumeCursor..varname)
				lcvartype = Upper(Alltrim(&lcNumeCursor..Vartype))
				Do Case
					Case lcvartype = "CHARACTER"
						Public gc&lcvarname.
						luvarvalue = Alltrim(&lcNumeCursor..varvalue)
						gc&lcvarname. = luvarvalue
					Case lcvartype = "CURRENCY"
						Public gy&lcvarname.
						luvarvalue = Ntom(Val(&lcNumeCursor..varvalue))
						gy&lcvarname. = luvarvalue
					Case lcvartype = "NUMERIC"
						Public gn&lcvarname.
						luvarvalue = Val(&lcNumeCursor..varvalue)
						gn&lcvarname. = luvarvalue
					Case lcvartype = "DATETIME"
						Public gt&lcvarname.
						luvarvalue = Ctot(&lcNumeCursor..varvalue)
						gt&lcvarname. = luvarvalue
					Case lcvartype = "DATE"
						Public gd&lcvarname.
						luvarvalue = Ctod(&lcNumeCursor..varvalue)
						gd&lcvarname. = luvarvalue
					Case lcvartype = "LOGICAL"
						Public gl&lcvarname.
						luvarvalue = Iif(Inlist(Upper(Left(&lcNumeCursor..varvalue, 1)), "T", "Y"), .T., .F.)
						gl&lcvarname. = luvarvalue
					Otherwise
						pcmsgbuff = "Tip de variabila globala invalid!"
						pcmsgbuff = pcmsgbuff + Chr(13) + Chr(13) + "Numele variabilei: " + lcvarname
						pcmsgbuff = pcmsgbuff + Chr(13) + "Tipul variabilei: " + lcvartype
						pcmsgbuff = pcmsgbuff + Chr(13) + Chr(13) + "Contactati suportul tehnic."
						=aMessagebox(pcmsgbuff, 48)
						pcmsgbuff = ""
				Endcase
			Endscan

		Endif
		If Used(lcNumeCursor)
			Use In (lcNumeCursor)
		Endif
	Endproc
	******************************************************************
	PROCEDURE initializeaza_sesiune_server
		Lparameters tnIdUtil
		Local lcProceduri
		lcProceduri = [pack_sesiune.set_Id_Util(] + ALLTRIM(STR(tnIdUtil)) + [);] + ;
			[pack_sesiune.setluna(] + ALLTRIM(STR(This.oDateCalendar.luna)) + [);] + ;
			[pack_sesiune.setan(] + ALLTRIM(STR(This.oDateCalendar.anul)) + [);] + ;
			[pack_sesiune.setlunabal(] + ALLTRIM(STR(This.oDateCalendar.luna)) + [);] + ;
			[pack_sesiune.setanbal(] + ALLTRIM(STR(This.oDateCalendar.anul)) + [);] + ;
			[pack_contafin.set_data_ron('] + ALLTRIM(This.oDateFirma.schema) + [');] + ;
			[pack_sesiune.set_data_ron('] + ALLTRIM(This.oDateFirma.schema) + [');] + ;
			[pack_contafin.set_id_sucursala(] + Iif(Nvl(This.oDateFirma.id_mama,0) <> 0, ALLTRIM(STR(This.oDateFirma.Id_Firma)), [NULL]) + [);] + ;
			[pack_contafin.set_id_firma(] + ALLTRIM(STR(This.oDateFirma.id_firma)) + [)]
		This.oDBController.apeleaza_procedura(lcProceduri)
	ENDPROC
	******************************************************************
	Function scrie_optiuni
		Local lcProcedura
		lcProcedura = [scrie_optiuni(USER)]
		Return This.oDBController.apeleaza_procedura(lcProcedura)
	Endfunc
	******************************************************************
	FUNCTION verificaVersiuni
		LPARAMETERS tcNumeProgram,tcVersiuneProgram,tcVersiuneDBTxt
		LOCAL lcFunctie
		lcFunctie = [pack_migrare.VerificaVersiune(']+tcNumeProgram+[', ']+tcVersiuneProgram+[',']+tcVersiuneDBTxt+[')]
		Return This.oDBController.apeleaza_functie(lcFunctie,[C])
	ENDfunc
	******************************************************************	
	Function citeste_optiuni
		Lparameters tcNumeCursor
		This.scrie_optiuni()
		Return This.oDBController.apeleaza_sql_hash(getHash([cColumns=>*??cTables=>optiuni??cOrderBy=>varname]),tcNumeCursor)
	Endfunc
	******************************************************************
	Function getoFirma
		Return This.oDateFirma
	Endfunc
	******************************************************************
	Function getoCalendar
		Return This.oDateCalendar
	Endfunc
	******************************************************************
	Function getIdSucursala
		Return This.nIdSucursala
	Endfunc
	******************************************************************
	Function getIdMama
		Return This.nIdMama
	Endfunc
	******************************************************************
	Function getEMama
		Return This.lEMama
	Endfunc
	******************************************************************	
Enddefine