*!* 12.01.2011
*!* marius.mutu
*!* deschidluna + parametru: tlProgramat
*!* deschiderea / redeschiderea de luna se face automat de catre un job in baza de date noaptea

*******************************************
* PROCEDURE deschiluna(  )
* Data/ora : 11/15/04, 17:13:14
* autor : liana.macinic
* descriere:

****** PARAMETER BLOCK **************
* Parametri : 1
* parametru: tdeschid = este .t. daca procedura se foloseste pentru deschidere de luna
*      					este .f. daca procedura se foloseste pentru redeschidere de luna
* parametru: tcTipRefacere: refacere_completa, refacere_precedente_rulaje
*						refacere_completa - stergere si refacere
* parametru: tlProgramat: deschiderea / redeschiderea de luna se face automat de catre un job in baza de date noaptea
*******************************************
Procedure deschidluna
	Lparameters tlDeschid,tcTipRefacere, tlProgramat
	Local lcExplicatie,lcConfirmare,lcMesaj,loFrm
	If tlDeschid
		lcAn = Alltrim(Str(Year(Gomonth(Date(gnAn,gnLuna,1),1))))
		lcLuna = Alltrim(Str(Month(Gomonth(Date(gnAn,gnLuna,1),1))))
		lcExplicatie = [Deschidere de lunã]
		lcConfirmare = [Doriti sã deschideti luna ] + lcLuna + [ / ] + lcAn + [ ?]
		lcMesaj = [S-a deschis luna ] + lcLuna + [ / ] + lcAn + [ !]
	Else
		lcAn = Alltrim(Str(gnAn))
		lcLuna = Alltrim(Str(gnLuna))
		lcExplicatie = [Redeschidere de luna]
		lcConfirmare = [Doriti sã redeschideti luna ] + lcLuna + [ / ] + lcAn + [ ?]
		lcMesaj = [S-a redeschis luna ] + lcLuna + [ / ] + lcAn + [ !]
		
		IF m.glLunaInchisa 
			AMESSAGEBOX('Luna este inchisa! Nu se poate face redeschiderea de luna!',0+64,_screen.Caption)
			RETURN 
		ENDIF 
	ENDIF

*!*	modificare	v 2.4.0
	private pnTvaIncasare, pnImpozitProfit
	pnTvaIncasare = goCalendar.tva_incasare
	pnImpozitProfit = goCalendar.impozit_profit
	
	loFrm = createobject("frm_deschidere_luna_cont",lcExplicatie,lcConfirmare,tlDeschid)
	loFrm.Show()
	if gnButon = 1
*!*		If AMESSAGEBOX(lcConfirmare,4+32,lcExplicatie)=6
*!*	modificare	v 2.4.0	^
		_Screen.MousePointer = 11
		*!*	modificare	v 2.4.0 : am adaugat pnTvaIncasare
		lcSql = [begin deschidere_luna(] + lcAn + [,] + lcLuna + [,] + Iif(tlDeschid,[1],[0]) + [,] + ;
			IIF(EMPTY(tcTipRefacere),[1],IIF(UPPER(ALLTRIM(tcTipRefacere)) = [REFACERE_COMPLETA],[3],[1])) + [,?pnTvaIncasare,?gnIdUtil); end;]
		lnSucces = goExecutor.oExecute(lcSql)
		_Screen.MousePointer = 0
		If lnSucces < 0
			AMESSAGEBOX(goExecutor.cEroare,64,"Eroare")
		Else
			AMESSAGEBOX(lcMesaj,48,lcExplicatie)
			If tlDeschid
				lnSucces = update_calendar()
				If lnSucces < 0
					AMESSAGEBOX('Eroare la actualizarea calendarului!' + CHR(13)+CHR(10) + goExecutor.cEroare, 16, "Eroare")
					Return
				Endif

				Select calendar
				Locate For luna = VAL(lcLuna) And anul = VAL(lcAn)
				If Found()
					Scatter Name goCalendar
				Else
					AMESSAGEBOX('Eroare la citirea lunii in calendar!' + CHR(13)+CHR(10) + goExecutor.cEroare, 16, "Eroare")
					Return
				Endif
				Do OINIT_OPTIUNI.prg
			Endif
		Endif
	Endif
	Release pnTvaIncasare	&&	modificare	v 2.4.0
Endproc
*******************************************
*!*	PROCEDURE deschidluna
*!*		PARAMETERS tldeschid, tcTipRefacere
*!*
*!*		LOCAL lnDuplicatTva
*!*		lnDuplicatTva = 0

*!*		PRIVATE plDeschid, pnDeschid
*!*		IF !tlDeschid AND glLunaInchisa
*!*			MESSAGEBOX('Luna este blocata! Nu se poate redeschide luna.', 0+64, _screen.Caption)
*!*			RETURN
*!*		ENDIF
*!*		IF EMPTY(tldeschid)
*!*			STORE .F. TO plDeschid
*!*			pnDeschid = 0
*!*		ELSE
*!*			plDeschid = tldeschid
*!*			pnDeschid = 1
*!*		ENDIF

*!*		IF EMPTY(tcTipRefacere) OR TYPE('tcTipRefacere') <> 'C'
*!*			tcTipRefacere = "REFACERE_PRECEDENTE_RULAJE"
*!*		ELSE
*!*			tcTipRefacere = UPPER(tcTipRefacere)
*!*		ENDIF
*!*
*!*		IF plDeschid
*!*			ldData1 = GOMONTH(DATE(gnAn,gnLuna,1),1)
*!*			lnAn = YEAR(ldData1)
*!*			lnLuna = MONTH(ldData1)
*!*			lcAn = ALLTRIM(STR(lnAn))
*!*			lcLuna = PADL(ALLTRIM(STR(lnLuna)),2,'0')

*!*			lnValoare = 12*lnAn + lnLuna
*!*			lcSelect = [select COUNT(*) as duplicat from ] + gcS + [.CALENDAR where 12*anul + luna = ?lnValoare]
*!*			lnSucces = goExecutor.oExecute(lcSelect,[crsTest])
*!*			IF lnSucces < 0
*!*				AMESSAGEBOX(goExecutor.cEroare)
*!*				RETURN
*!*			ENDIF

*!*			SELECT crsTest
*!*			IF duplicat > 0
*!*				AMESSAGEBOX('Luna ' + lcLuna + ' / ' + lcAn + ' este deja deschisa! ')
*!*				RETURN
*!*			ENDIF
*!*			USE IN crsTest



*!*			lnPlafonCasa = goCalendar.plafon_casa
*!*			lnPlafonPlati = goCalendar.plafon_plati
*!*			lnPlafonFurniz = goCalendar.plafon_furnizori
*!*			IF AMESSAGEBOX('Doriti sa deschideti luna ' + lcLuna + ' / ' + lcAn + '?',4+32,"Deschidere de luna")!=6
*!*				RETURN
*!*			ENDIF

*!*			*!* 10.07.2006
*!*			*!* FLORIN CIOCAN
*!*			lcSelect = [select COUNT(*) as duplicatTVA from COTE_TVA ] + ;
*!*				[ where an = ] + TRANSFORM(lnAn) + [ AND luna = ] + TRANSFORM(lnLuna) + [ AND sters = 0]
*!*			lnSucces = goExecutor.oExecute(lcSelect,[crsTest])
*!*			IF lnSucces < 0
*!*				AMESSAGEBOX(goExecutor.cEroare)
*!*				RETURN
*!*			ENDIF

*!*			SELECT crsTest
*!*			lnDuplicatTva = duplicatTva
*!*			USE IN crsTest

*!*			IF lnDuplicatTva = 0
*!*				lcSql = [insert into cote_tva (proc_tva, descriere, procent, an, luna) ] + ;
*!*					[ SELECT proc_tva, descriere, procent, ] + TRANSFORM(lnAn) + [,] + TRANSFORM(lnLuna) + [ from cote_tva where an = ?gnAn and luna = ?gnLuna and sters = 0 ]

*!*				lnSucces = goExecutor.oExecute(lcSql)
*!*				IF lnSucces < 0
*!*					AMESSAGEBOX(goExecutor.cEroare)
*!*					RETURN
*!*				ENDIF
*!*			ENDIF

*!*			lcInsert = [INSERT INTO ] + gcS + [.CALENDAR (NL,AN,CTVAI,CTVAM,PLAFON_casa,plafon_plati,plafon_furnizori,anul,luna) ] + ;
*!*				[VALUES (?lcLuna ,?lcAn,] + ALLTRIM(STR(NVL(goCalendar.ctvai,0),5,3)) + [,] + ALLTRIM(STR(NVL(goCalendar.ctvam,0),5,3)) + [,?lnPlafonCasa,?lnPlafonPlati,?lnPlafonFurniz,?lnAn,?lnLuna)]

*!*			lnSucces = goExecutor.oExecute(lcInsert)
*!*			IF lnSucces < 0
*!*				AMESSAGEBOX(goExecutor.cEroare)
*!*				RETURN
*!*			ENDIF

*!*			lnSucces = update_calendar()
*!*			IF lnSucces < 0
*!*				AMESSAGEBOX('Eroare la actualizarea Calendarului ' + goExecutor.cEroare)
*!*				RETURN
*!*			ENDIF

*!*			SELECT calendar
*!*			LOCATE FOR luna = lnLuna AND anul = lnAn
*!*			IF FOUND()
*!*				SCATTER NAME goCalendar
*!*			ELSE
*!*				AMESSAGEBOX('Eroare la citirea lunii in Calendar ' + goExecutor.cEroare)
*!*				RETURN
*!*			ENDIF

*!*			*!* 11.05.2007
*!*			*!* PAULA MUTU
*!*			***
*!*			IF gnLuna = 12
*!*				lcSql = [insert into plcont (acont, explicatie, cont, tip_sold, an, tip_cont, id_mod, inactiv, nefolosit, explicatieS) ] + ;
*!*					[ SELECT acont, explicatie, cont, tip_sold, ] +ALLTRIM(STR(gnAn+1)) + [ as an, tip_cont, id_mod, inactiv, nefolosit, explicatieS ]+;
*!*					[ from plcont where an = ?gnAn ]

*!*				lnSucces = goExecutor.oExecute(lcSql)
*!*				IF lnSucces < 0
*!*					AMESSAGEBOX(goExecutor.cEroare)
*!*					RETURN
*!*				ENDIF
*!*			ENDIF
*!*			***

*!*			DO OINIT_OPTIUNI.prg
*!*			*	DO update_nomenclator IN updateserver.prg
*!*		ELSE
*!*			IF AMESSAGEBOX('Doriti sa redeschideti luna ' + ALLTRIM(STR(gnLuna)) + ' / ' + ALLTRIM(STR(gnAn)) + '?',4+32,"Redeschidere de luna")!=6
*!*				RETURN
*!*			ENDIF
*!*		ENDIF

*!*		*DO verificareGlobala WITH .F.,.T. IN overificari.prg
*!*		lnLuna = goCalendar.luna
*!*		lnAn = goCalendar.anul

*!*		DO VerificareLunaDeschisa WITH lnLuna, lnAn, .T., .T., .T. IN overificari.prg
*!*		IF USED('crsverificari')
*!*			lnNrInreg = 1
*!*			lnInreg = 1
*!*			lnNrInreg=lnNrInreg+RECCOUNT('crsconturi')
*!*			loTherm = NEWOBJECT("_thermometer","_therm","","Generare situatie luna contabila "+ALLTRIM(STR(lnLuna))+"/"+ALLTRIM(STR(lnAn))+"...")
*!*			WITH loTherm
*!*				.SHOW()
*!*				lnPercent = 0

*!*				lcexplicatia="Generare situatie"
*!*				.UPDATE(lnPercent,lcexplicatia)

*!*				SELECT crsverificari
*!*				SCAN
*!*					lcsursa = UPPER(ALLTRIM(sursa))
*!*					lccont = ALLTRIM(CONT)
*!*					lctip = IIF(UPPER(tcTipRefacere) = 'REFACERE_COMPLETA', '3', '1')
*!*					lcexplicatia = explicatia
*!*					lnPercent =(lnInreg*100)/lnNrInreg

*!*					.UPDATE(lnPercent,'Generare '+lcexplicatia)

*!*					DO refacere WITH lcsursa,lctip,lccont IN orefaceri.prg
*!*					lnInreg=lnInreg+1
*!*					SELECT crsverificari
*!*				ENDSCAN
*!*				.COMPLETE()
*!*			ENDWITH
*!*			RELEASE loTherm

*!*			IF plDeschid
*!*				AMESSAGEBOX('S-a deschis luna '+ ALLTRIM(STR(gnLuna)) + ' / ' + ALLTRIM(STR(gnAn)) + '!',48,"Deschidere de luna")
*!*			ELSE
*!*				AMESSAGEBOX('S-a redeschis luna '+ ALLTRIM(STR(gnLuna)) + ' / ' + ALLTRIM(STR(gnAn))+ '!',48,"Redeschidere de luna")
*!*			ENDIF
*!*
*!*			lcSelect = [insert into log_redeschid (anul, luna, id_program, deschid, id_util) values (?gnAn, ?gnLuna, ?gnIdProgram, ?pnDeschid, ?gnIdUtil)]
*!*			lnSucces = goExecutor.oExecute(lcSelect)
*!*			IF lnSucces < 0
*!*				AMESSAGEBOX(goExecutor.cEroare)
*!*			ENDIF
*!*
*!*		ELSE
*!*			AMESSAGEBOX('Nu s-au refacut situatiile! Verificati in meniul Actualizari / Verificare globala!',48, IIF(plDeschid,"Deschidere de luna","Redeschidere de luna"))
*!*		ENDIF
*!*		IF USED('crsverificari')
*!*			USE IN crsverificari
*!*		ENDIF


*!*	ENDPROC && deschiluna

*********************** SFARSIT procedura deschiluna *************************


*********************** INCEPUT redeschidere_de_luna *************************


*********************** SFARSIT redeschidere_de_luna *************************


*********************** INCEPUT programare_deschidere_luna *************************
PROCEDURE programare_deschidere_luna
		PRIVATE poProgramare
		LOCAL m.lcSelect, m.lcFiltru, m.lcSchema, m.lcOrder, m.llAfisare
		
		poProgramare = null 
		lcSchema=[]
		lcSelect=[select id_redeschid, anul, luna, id_program, program, id_util, utilizator, dataora, deschid, programat, dataora_start, dataora_stop, id_utils, utilizators, dataoras, sters, SUBSTR(observatii,1,250) as observatii from vlog_redeschid]
		lcFiltru=[STERS = 0 AND LUNA = ]+ALLTRIM(STR(m.gnluna))+[ AND ANUL = ]+ALLTRIM(STR(m.gnan))
		lcOrder=[anul desc, luna desc, dataora desc]
		llAfisare=.F.
		lcGroup = []
		llModParam = .T.
		lcFiltruOriginal = ""
		gencursor('poProgramare','cLogRedeschid', m.lcSelect, m.lcFiltru, m.lcSchema, m.lcOrder, m.llAfisare, m.lcgroup, m.llModParam, m.lcFiltruOriginal)

		poProgramare.ca_baza1.afisare()
		
		loProgramareForm = NEWOBJECT("frm_log_deschidereluna","odeschidereluna.vcx")
		loProgramareForm.show(1)
ENDPROC && programare_deschidere_luna
*********************** SFARSIT programare_deschidere_luna *************************