*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.21" SourceFile="_cus_odata_base.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
*
*
DEFINE CLASS _cusodatabase AS _custom OF "_baza.vcx" 
 	*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />

	*<DefinedPropArrayMethod>
		*m: confirma_salvare
		*m: do_deschide_tranzactie
		*m: do_inchide_tranzactie
		*m: make_sql
		*m: salvare
		*m: validare
		*p: cactiune
		*p: ccursor_detalii		&& Se completeaza in cazul in care trebuie salvat capul de tabel o data cu detaliile ( ex.: nom_retetar si nom_retetar_elemente )
		*p: csql
		*p: lsalvareconfirmata
		*p: lsilent
	*</DefinedPropArrayMethod>

	*<PropValue>
		cactiune = INSERT
		ccursor_detalii = 
		csql = 
		Height = 18
		lsalvareconfirmata = .F.
		lsilent = .F.
		Name = "_cusodatabase"
		Width = 21
	*</PropValue>
	
	PROCEDURE confirma_salvare
		Private buton
		Local lcActiune,lcMesaj,lcTitlu,lcImagine,lcTip,loFrmIntreb
		buton = 1
		lcMesaj = ''
		lcTitlu = ''
		lcImagine = [intreb.ico]
		lcTip = [Intrebare]
		lcActiune = Upper(Alltrim(This.cactiune))
		Do Case
			Case lcActiune = "INSERT"
				lcMesaj = "Doriți să adăugați înregistrarea?"
				lcTitlu = "Adăugare"
		*	lnOptiuni = 4 + 32
			Case lcActiune = "UPDATE"
				lcMesaj = "Doriți să salvați modificările?"
				lcTitlu = "Modificare"
		*	lnOptiuni = 4 + 32
			Case lcActiune = "DELETE"
				lcMesaj = "Doriți să ștergeți înregistrarea?"
				lcTitlu = "Ștergere"
		*	lnOptiuni = 4 + 32 + 512
			Case lcActiune = "LOCAL"
				lcMesaj = "Doriți să salvați datele?"
				lcTitlu = "Salvare"
		*	lnOptiuni = 4 + 32	
		Endcase
		loFrmIntreb = Createobject('frm_mesaj',lcTitlu,lcImagine,lcTip,lcMesaj)
		loFrmIntreb.Show(1)
		If buton = 1
			This.lsalvareconfirmata = .T.
		Else
			This.lsalvareconfirmata = .F.
		Endif
		Release lcActiune,lcMesaj,lcTitlu,lcImagine,lcTip,loFrmIntreb,buton
	ENDPROC

	PROCEDURE do_deschide_tranzactie
		Local llReturn
		If Type('goExecutor')='O'
			goExecutor.oExecuta([select * from dual])
		Endif
		lnSucces = SQLSetprop(gnHandle,"Transactions",2)
		If lnSucces < 0
			amessagebox("Programul nu a reusit sa treaca pe tranzactie manuala! Reintrati in program si incercati din nou!",48,"Atentie")
			llReturn = .F.
		Else
			llReturn = .T.
		Endif
		Return llReturn
	ENDPROC

	PROCEDURE do_inchide_tranzactie
		Lparameters tnTip
		Local llReturn,lnSucces,lcExplicatie
		If tnTip = 1
			lnSucces = Sqlcommit(gnHandle)
			lcExplicatie = [COMMIT]
		Else
			lnSucces = Sqlrollback(gnHandle)
			lcExplicatie = [ROLLBACK]
		Endif
		If lnSucces < 0
			amessagebox("Eroare la "+lcExplicatie+"!",48,"Atentie")
			llReturn = .F.
		Else
			lnSucces = SQLSetprop(gnHandle,"Transactions",1)
			If lnSucces < 0
				amessagebox('Programul nu a reusit sa treaca pe tranzactie automata. Iesiti din program si intrati din nou!',0+48,'Atentie!')
				llReturn = .F.
			Else
				llReturn = .T.
			Endif
		Endif
		Return llReturn
	ENDPROC

	PROCEDURE make_sql
	ENDPROC

	PROCEDURE salvare
		*!* 23.01.2020
		*!* marius.mutu
		*!* am adaugat poRec sa il pot folosi in This.makesql
		
		Lparameters toRec,tnId
		Local llSucces, lnSucces, lcActiune, lcSql, llConditie, lcTextEroare
		PRIVATE poRec
		poRec = toRec
		llSucces = .T.
		lnSucces = -1
		If This.lSilent
			This.lsalvareconfirmata = .T.
		Else
			This.confirma_salvare()
		Endif
		
		* pnId, pnIdUtil se folosesc in DELETE
		IF TYPE('pnId') = 'U'
			PRIVATE pnId
			pnId = m.tnId
		ENDIF 
		IF TYPE('pnIdUtil') = 'U'
			PRIVATE pnIdUtil
			pnIdUtil = m.gnIdUtil
		ENDIF 
		
		If This.lsalvareconfirmata
			PNIESIRE=1
			gnButon = 1
			If This.validare()
				This.make_sql(toRec,tnId)
				lcActiune = Upper(Alltrim(This.cactiune))
				lcSql = Alltrim(This.csql)
				llConditie = 'INSERT'$Upper(lcSql) Or 'UPDATE'$Upper(lcSql) Or 'DELETE'$Upper(lcSql) Or 'BEGIN'$Upper(lcSql)
				If llConditie
					lnSucces = goExecutor.oExecute(lcSql)
					If lnSucces < 0
						lcTextEroare = goExecutor.oPrelucrareEroare()
						Do Case
							Case lcActiune = "INSERT"
								lcMesaj = "Inregistrarea nu a fost adaugata." + Chr(13) + Chr(10) + lcTextEroare
								lcTitlu = "Adăugare"
							Case lcActiune = "UPDATE"
								lcMesaj = "Inregistrarea nu a fost modificata." + Chr(13) + Chr(10) + lcTextEroare
								lcTitlu = "Modificare"
							Case lcActiune = "DELETE"
								lcMesaj = "Inregistrarea nu a fost stearsa." + Chr(13) + Chr(10) + lcTextEroare
								lcTitlu = "Ștergere"
						Endcase
						lcimagine = [info_c.ico]
						lctip = [Informare]
						AMESSAGE(lcMesaj,0+16,lctip)
						llSucces = .F.
					Endif
		
					If lnSucces >=1 And lcActiune = "DELETE"
						lcTitlu = "Stergere"
						lctip = [Informare]
						lcimagine = [info_c.ico]
						lcMesaj = "Inregistrarea a fost stearsa!"
						AMESSAGE(lcMesaj,0+48,lctip)
					Endif
				Endif
		
			Endif
		
		Else
			PNIESIRE = 2
			gnButon = 2
		Endif
		
		Return llSucces
	ENDPROC

	PROCEDURE validare
		Lparameters toRec, tnId
		Local llReturn
		If This.cactiune = [LOCAL]
			llReturn = .F.
		Else
			llReturn = .T.
		Endif
		Return llReturn
	ENDPROC

ENDDEFINE
