Import initial din SVN ROAAUTO/Trunk @HEAD

This commit is contained in:
2026-04-11 17:11:32 +03:00
commit 656d98697f
1856 changed files with 163525 additions and 0 deletions

137
COMUN/programe/Procese.prg Normal file
View File

@@ -0,0 +1,137 @@
FUNCTION Createprocess(lcExe,lcCommandLine,lnShowWindow,llWaitForCompletion)
LOCAL hProcess, cProcessInfo, cStartupInfo
DECLARE INTEGER CreateProcess IN kernel32 as _CreateProcess;
STRING lpApplicationName,;
STRING lpCommandLine,;
INTEGER lpProcessAttributes,;
INTEGER lpThreadAttributes,;
INTEGER bInheritHandles,;
INTEGER dwCreationFlags,;
INTEGER lpEnvironment,;
STRING lpCurrentDirectory,;
STRING lpStartupInfo,;
STRING @ lpProcessInformation
cProcessinfo = REPLICATE(CHR(0),128)
cStartupInfo = GetStartupInfo(lnShowWindow)
IF !EMPTY(lcCommandLine)
lcCommandLine = ["] + lcExe + [" ]+ lcCommandLine
ELSE
lcCommandLine = ""
ENDIF
lnResult = _CreateProcess(lcExe,lcCommandLine,0,0,1,0,0,;
SYS(5)+CURDIR(),cStartupInfo,@cProcessInfo)
lhProcess = CHARTOBIN( SUBSTR(cProcessInfo,1,4) )
IF llWaitForCompletion
#DEFINE WAIT_TIMEOUT 0x00000102
DECLARE INTEGER WaitForSingleObject IN kernel32.DLL ;
INTEGER hHandle, INTEGER dwMilliseconds
DO WHILE .T.
*** Update every 100 milliseconds
IF WaitForSingleObject(lhProcess, 100) != WAIT_TIMEOUT
EXIT
ELSE
DOEVENTS
ENDIF
ENDDO
ENDIF
DECLARE INTEGER CloseHandle IN kernel32.DLL ;
INTEGER hObject
CloseHandle(lhProcess)
RETURN IIF(lnResult=1,.t.,.f.)
ENDFUNC
FUNCTION getStartupInfo(lnShowWindow)
LOCAL lnFlags
* creates the STARTUP structure to specify main window
* properties if a new window is created for a new process
IF EMPTY(lnShowWindow)
lnShowWindow = 1
ENDIF
*| typedef struct _STARTUPINFO {
*| DWORD cb; 4
*| LPTSTR lpReserved; 4
*| LPTSTR lpDesktop; 4
*| LPTSTR lpTitle; 4
*| DWORD dwX; 4
*| DWORD dwY; 4
*| DWORD dwXSize; 4
*| DWORD dwYSize; 4
*| DWORD dwXCountChars; 4
*| DWORD dwYCountChars; 4
*| DWORD dwFillAttribute; 4
*| DWORD dwFlags; 4
*| WORD wShowWindow; 2
*| WORD cbReserved2; 2
*| LPBYTE lpReserved2; 4
*| HANDLE hStdInput; 4
*| HANDLE hStdOutput; 4
*| HANDLE hStdError; 4
*| } STARTUPINFO, *LPSTARTUPINFO; total: 68 bytes
#DEFINE STARTF_USESTDHANDLES 0x0100
#DEFINE STARTF_USESHOWWINDOW 1
#DEFINE SW_HIDE 0
#DEFINE SW_SHOWMAXIMIZED 3
#DEFINE SW_SHOWNORMAL 1
lnFlags = STARTF_USESHOWWINDOW
RETURN binToChar(80) +;
binToChar(0) + binToChar(0) + binToChar(0) +;
binToChar(0) + binToChar(0) + binToChar(0) + binToChar(0) +;
binToChar(0) + binToChar(0) + binToChar(0) +;
binToChar(lnFlags) +;
binToWordChar(lnShowWindow) +;
binToWordChar(0) + binToChar(0) +;
binToChar(0) + binToChar(0) + binToChar(0) + REPLICATE(CHR(0),30)
ENDFUNC
FUNCTION CharToBin(lcBinString,llSigned)
LOCAL m.i, lnWord
lnWord = 0
FOR m.i = 1 TO LEN(lcBinString)
lnWord = lnWord + (ASC(SUBSTR(lcBinString, m.i, 1)) * (2 ^ (8 * (m.i - 1))))
ENDFOR
IF llSigned AND lnWord > 0x80000000
lnWord = lnWord - 1 - 0xFFFFFFFF
ENDIF
RETURN lnWord
* wwAPI :: CharToBin
ENDFUNC
************************************************************************
FUNCTION BinToChar(lnValue)
****************************************
Local byte(4)
If lnValue < 0
lnValue = lnValue + 4294967296
EndIf
byte(1) = lnValue % 256
byte(2) = BitRShift(lnValue, 8) % 256
byte(3) = BitRShift(lnValue, 16) % 256
byte(4) = BitRShift(lnValue, 24) % 256
RETURN Chr(byte(1))+Chr(byte(2))+Chr(byte(3))+Chr(byte(4))
* wwAPI :: BinToChar
ENDFUNC
************************************************************************
FUNCTION BinToWordChar(lnValue)
****************************************
*** Function: Creates a DWORD value from a number
*** Pass: lnValue - VFP numeric integer (unsigned)
*** Return: binary string
************************************************************************
RETURN Chr(MOD(m.lnValue,256)) + CHR(INT(m.lnValue/256))
ENDFUNC

View File

@@ -0,0 +1,223 @@
* Define a class that knows how to apply effects to objects in a report.
DEFINE CLASS EffectsListener AS _ReportListener OF ;
HOME() + 'ffc\_ReportListener.vcx'
oEffectHandlers = .NULL.
&& a collection of effect handlers
DIMENSION aRecords[1]
&& an array of information for each record in the FRX
* Create a collection of effect handler objects and fill it with the handlers
* we know about. A subclass or instance could be filled with additional ones.
FUNCTION INIT
DODEFAULT()
WITH THIS
.oEffectHandlers = CREATEOBJECT('Collection')
.oEffectHandlers.ADD(CREATEOBJECT('DynamicForeColorEffect'))
.oEffectHandlers.ADD(CREATEOBJECT('DynamicStyleEffect'))
ENDWITH
ENDFUNC
* Dimension aRecords to as many records as there are in the FRX so we don't
* have to redimension it as the report runs. The first column indicates if
* we've processed that record in the FRX yet and the second column contains
* a collection of effect handlers used to process the record.
FUNCTION BEFOREREPORT
DODEFAULT()
WITH THIS
.SetFRXDataSession()
DIMENSION .aRecords[reccount(), 2]
.ResetDataSession()
ENDWITH
ENDFUNC
PROCEDURE ONPREVIEWCLOSE
PARAMETERS lPrint
LOCAL liRange
THIS.COMMANDCLAUSES.PROMPT = .T.
DODEFAULT(lPrint)
ENDPROC && OnPrevieClose
* Apply any effects that were requested to the field about to be rendered.
FUNCTION EVALUATECONTENTS(tnFRXRecno, toObjProperties)
LOCAL loEffectObject, ;
loEffectHandler, ;
lcExpression
WITH THIS
* If we haven't already checked if this field needs any effects, do so and
* flag that we have checked it so we don't do it again.
IF NOT .aRecords[tnFRXRecno, 1]
.aRecords[tnFRXRecno, 1] = .T.
.aRecords[tnFRXRecno, 2] = .SetupEffectsForObject(tnFRXRecno)
ENDIF NOT .aRecords[tnFRXRecno, 1]
* Go through the collection of effect handlers for the field (the collection
* may be empty if the field doesn't need any effects), letting each one do its
* thing.
FOR EACH loEffectObject IN .aRecords[tnFRXRecno, 2]
loEffectHandler = loEffectObject.oEffectHandler
lcExpression = loEffectObject.cExpression
loEffectHandler.Execute(toObjProperties, lcExpression)
NEXT loEffect
ENDWITH
* Do the normal behavior.
DODEFAULT(tnFRXRecno, toObjProperties)
ENDFUNC
* Go through each effect handler to see if it'll handle the current report
* object. If so, add it to a collection of handlers for the object, and return
* that collection.
FUNCTION SetupEffectsForObject(tnFRXRecno)
LOCAL loFRX, ;
loHandlers, ;
loObject
WITH THIS
loFRX = .GetReportObject(tnFRXRecno)
loHandlers = CREATEOBJECT('Collection')
FOR EACH loEffectHandler IN .oEffectHandlers
loObject = loEffectHandler.GetEffect(loFRX)
IF VARTYPE(loObject) = 'O'
loHandlers.ADD(loObject)
ENDIF VARTYPE(loObject) = 'O'
NEXT loEffectHandler
ENDWITH
RETURN loHandlers
ENDFUNC
* Return a SCATTER NAME object for the specified record in the FRX.
PROCEDURE GetReportObject(tnFRXRecno)
LOCAL loObject
THIS.SetFRXDataSession()
GO tnFRXRecno
SCATTER MEMO NAME loObject
THIS.ResetDataSession()
RETURN loObject
ENDPROC
ENDDEFINE
* Create a class that holds a reference to an effect handler and the expression
* the effect handler is supposed to act on for a particular record in the FRX.
DEFINE CLASS EffectObject AS CUSTOM
oEffectHandler = .NULL.
cExpression = ''
ENDDEFINE
* Define an abstract class for effect handler objects.
DEFINE CLASS EffectHandler AS CUSTOM
* Execute is called by the EvaluateContents method of EffectsListener to
* perform an effect.
FUNCTION Execute(toObjProperties, tcExpression)
ENDFUNC
* GetEffects is called to return an object containing a reference to the
* handler and the expression it's supposed to work on if the specified report
* object needs this effect, or return null if not.
FUNCTION GetEffect(toFRX)
LOCAL loObject
loObject = .NULL.
RETURN loObject
ENDFUNC
* EvaluateExpression may be called by Execute to evaluate the specified
* expression.
FUNCTION EvaluateExpression(tcExpression)
RETURN EVALUATE(tcExpression)
ENDFUNC
ENDDEFINE
* Define an abstract class for effect handlers that look for
* "*:EFFECTS <effectname> = <effectexpression>" in the USER memo.
DEFINE CLASS UserEffectHandler AS EffectHandler
cEffectsDirective = '*:EFFECTS'
&& the directive that indicates an effect is needed
cEffectName = ''
&& the effect name to look for (filled in in a subclass)
FUNCTION GetEffect(toFRX)
LOCAL lcEffect, ;
loObject
lcEffect = THIS.cEffectsDirective + ' ' + THIS.cEffectName
IF ATC(lcEffect, toFRX.USER) > 0
loObject = CREATEOBJECT('EffectObject')
loObject.oEffectHandler = THIS
loObject.cExpression = STREXTRACT(toFRX.USER, lcEffect + ' = ', ;
CHR(13), 1, 3)
ELSE
loObject = .NULL.
ENDIF ATC(lcEffect, toFRX.USER) > 0
RETURN loObject
ENDFUNC
ENDDEFINE
* Define a class to provide dynamic forecolor effects.
DEFINE CLASS DynamicForeColorEffect AS UserEffectHandler
cEffectName = 'FORECOLOR'
* Evaluate the expression. If the result is a numeric value and doesn't match
* the existing color of the object, change the object's color and set the
* Reload flag to .T.
FUNCTION Execute(toObjProperties, tcExpression)
LOCAL lnColor, ;
lnPenRed, ;
lnPenGreen, ;
lnPenBlue
lnColor = THIS.EvaluateExpression(tcExpression)
IF VARTYPE(lnColor) = 'N'
lnPenRed = BITAND(lnColor, 0x0000FF)
lnPenGreen = BITRSHIFT(BITAND(lnColor, 0x00FF00), 8)
lnPenBlue = BITRSHIFT(BITAND(lnColor, 0xFF0000), 16)
WITH toObjProperties
IF .PenRed <> lnPenRed OR ;
.PenGreen <> lnPenGreen OR ;
.PenBlue <> lnPenBlue
.PenRed = lnPenRed
.PenGreen = lnPenGreen
.PenBlue = lnPenBlue
.Reload = .T.
ENDIF .PenRed <> lnPenRed ...
ENDWITH
ENDIF VARTYPE(lnColor) = 'N'
ENDFUNC
ENDDEFINE
* Define a class to provide dynamic style effects.
DEFINE CLASS DynamicStyleEffect AS UserEffectHandler
cEffectName = 'STYLE'
* Evaluate the expression. If the result is a numeric value and doesn't match
* the existing style of the object, change the object's style and set the
* Reload flag to .T.
FUNCTION Execute(toObjProperties, tcExpression)
LOCAL lnStyle
lnStyle = THIS.EvaluateExpression(tcExpression)
WITH toObjProperties
IF VARTYPE(lnStyle) = 'N' AND .FontStyle <> lnStyle
.FontStyle = lnStyle
.Reload = .T.
ENDIF VARTYPE(lnStyle) = 'N' ...
ENDWITH
ENDFUNC
ENDDEFINE

View File

@@ -0,0 +1,306 @@
*!* 08.08.2011
*!* marius.mutu
*!* dezactiveaza_imagini - am marit distanta dintre imagini - ca sa nu se ingramadeasca textul cu shortcut-ul
*!* 09.12.2021
*!* marius..mutu
*!* dezactiveaza_meniuri - adaugare meniu Verificare, Import
**********************************************************************************************
Procedure verifica_drepturi
Lparameters tcObiectFundal, tcPageFrame
citeste_drepturi(gnIdUtil)
dezactiveaza_obiecte_pageframe(65, tcObiectFundal + [.] + tcPageFrame)
dezactiveaza_imagini(tcObiectFundal)
dezactiveaza_meniuri(90)
Endproc
**********************************************************************************************
Procedure citeste_drepturi
Lparameters tnIdUtil
If Used('crsdrepturi')
Select crsdrepturi
Locate For id_firma = gnIdFirma
If Found()
Return
Else
Use In crsdrepturi
Endif
Endif
lcSql = [select cheie,id_firma from contafin_oracle.vdef_util_obiecte ] + ;
[where id_util = ?gnIdUtil and id_program=?gnIdProgram and id_firma=?gnIdFirma]
lnSucces = goExecutor.oExecute(lcSql, 'crsdrepturi')
If lnSucces < 0
aMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
Return
Endif
Endproc
**********************************************************************************************
Procedure dezactiveaza_imagini
Lparameters loObiect
Local i, k, j, l, lnMinLeft
Dimension laImaginiVizibile(20, 2)
k = 0
&& left=3 pentru prima imagine
With &loObiect
For i = 1 To .ControlCount
If Alltrim(Upper(.Objects(i).Class)) = 'IMAGINE'
lcCheie = .Objects(i).ccod
If Right(lcCheie, 1) # ';'
lcCheie = lcCheie + ';'
Endif
lnPozitieS = 1
For j = 1 To Occurs([;], lcCheie)
lnPozitieF = At([;], lcCheie, j)
lcCheie2 = Substr(lcCheie, lnPozitieS, lnPozitieF - lnPozitieS)
lcAcces = []
Select crsdrepturi
Locate For Substr(cheie, 1, Len(lcCheie2)) = lcCheie2
If Found()
Set Filter To Substr(cheie, 1, Len(lcCheie2)) = lcCheie2
Scan
lcAcces = lcAcces + Substr(cheie, Len(lcCheie2) + 1, 1) + [;]
Endscan
Set Filter To
k = k + 1
If !Empty(lcAcces) And Alltrim(lcAcces) <> [;]
.Objects(i).coptiuni_active = lcAcces
Endif
.Objects(i).Visible = .T.
laImaginiVizibile(k, 1) = i
laImaginiVizibile(k, 2) = .Objects(i).Left
Exit
Else
.Objects(i).Visible = .F.
Endif
lnPozitieS = lnPozitieF + 1
Endfor
Endif
Endfor
If k > 0
lnLungime = .Objects(laImaginiVizibile(1, 1)).Width
For j = 1 To k - 1
For l = j + 1 To k
If laImaginiVizibile(j, 2) > laImaginiVizibile(l, 2)
lnPozitie = laImaginiVizibile(l, 1)
lnLeft = laImaginiVizibile(l, 2)
laImaginiVizibile(l, 1) = laImaginiVizibile(j, 1)
laImaginiVizibile(l, 2) = laImaginiVizibile(j, 2)
laImaginiVizibile(j, 1) = lnPozitie
laImaginiVizibile(j, 2) = lnLeft
Endif
Endfor
Endfor
For j = 1 To k
*!* 08.08.2011
.Objects(laImaginiVizibile(j, 1)).Left = 5 + (j - 1) * (lnLungime + 0)
*!* 08.08.2011 ^
Endfor
Endif
Endwith
Endproc
**********************************************************************************************
Procedure dezactiveaza_obiecte_pageframe
Lparameters lnKey, lcPageFrame, lcTata
Local lcKey, lcProp, lcOptiune, lnPozitie, i, j, k, l, lnObiecteActive
Store [] To lcKey, lcProp, lcOptiune
Store 0 To lnNivel, lnPozitie, i, j, k, l
If Empty(lcTata)
lcTata = Null
Endif
Set Exact On
With &lcPageFrame
For i = 1 To .PageCount
For j = 1 To .PageCount
If .Pages(j).PageOrder = i
Exit
Endif
Endfor
With .Pages(j)
.Enabled = .T.
lnObiecteActive = 0
lcKey = Nvl(lcTata, []) + Chr(lnKey)
If Used('crstotal')
Use In crstotal
Endif
Select Count(*) As Total From crsdrepturi Where Substr(cheie, 1, Len(lcKey)) = lcKey Into Cursor crstotal
Select crstotal
lnObiecteActive = Total
Use In crstotal
*!* If lnObiecteActive>0
For l = 1 To .ControlCount
Do Case
Case Alltrim(Upper(.Objects(l).Class)) = 'PAGEFRAME'
lcNume = lcPageFrame + '.' + Alltrim(.Name) + '.' + Alltrim(Upper(.Objects(l).Name))
dezactiveaza_obiecte_pageframe(65, lcNume, lcKey)
Case Left(Alltrim(Upper(.Objects(l).Class)), 2) = 'CW'
lcOptiune = .Objects(l).label_item1.Caption
lcCheie = lcKey + Padl(Alltrim(Str(.Objects(l).nid_cw)), 2, [0])
lcAcces = []
.Objects(l).ccheie = lcCheie
Select crsdrepturi
Locate For Substr(cheie, 1, Len(lcCheie)) = lcCheie
If Found()
Set Filter To Substr(cheie, 1, Len(lcCheie)) = lcCheie
Scan
lcAcces = lcAcces + Substr(cheie, Len(lcCheie) + 1, 1) + [;]
Endscan
Set Filter To
.Objects(l).coptiuni_active = lcAcces
.Objects(l).activeaza()
Else
.Objects(l).dezactiveaza()
Endif
Endcase
Endfor
*!* Else
If lnObiecteActive = 0
.Enabled = .F.
Endif
Endwith
lnKey = lnKey + 1
Endfor
Endwith
*!* Set Exact Off
Endproc
**********************************************************************************************
Procedure dezactiveaza_meniuri()
Lparameters lnKey
Local lcKey, lcKey2, i, j, k
Do Case
Case gnIdProgram = 2 && ROACONT
Dimension laPad[5]
laPad[1] = [initializa]
laPad[2] = [_1bs12qror]
laPad[3] = [verificari]
laPad[4] = [_5100zlkwx]
laPad[5] = [eFactura]
Case gnIdProgram = 5 && ROAGEST
Dimension laPad[1]
laPad[1] = [actualizar]
Case gnIdProgram = 8 && ROAAUTO
Return
Case gnIdProgram = 7 && ROAMANAGER
Dimension laPad[3]
laPad[1] = [optiuni]
laPad[2] = [vizualizar]
laPad[3] = [rapoartege]
Case gnIdProgram = 75 && ROASALSPEC modificare 16.10.2012
Dimension laPad[2]
laPad[1] = [_3mm0vdyef]
laPad[2] = [_3mm0ve0rs]
Case gnIdProgram = 4 && ROARES
Dimension laPad[3]
laPad[1] = [initializa]
laPad[2] = [configurar]
laPad[3] = [migrare]
Otherwise && Restul
Return
Endcase
lcKey = Chr(lnKey)
lnKey2 = 65
For j = 1 To Alen(laPad)
k = 0
Try
If Cntbar(laPad[j]) > 0
lcKey2 = lcKey + Chr(lnKey2)
lnKey2 = lnKey2 + 1
For i = 1 To Cntbar(laPad[j])
lcOptiune = Prmbar(laPad[j], i)
If !Empty(lcOptiune)
k = k + 1
lcCheie = lcKey2 + Padl(Alltrim(Str(k)), 2, [0])
Select crsdrepturi
Locate For Substr(cheie, 1, Len(lcCheie)) = lcCheie
If Found()
*!* WAIT WINDOW laPad[j]+" "+lcCheie+" gasita"
Set Skip Of Bar i Of &laPad[j] .F.
Else
*!* WAIT WINDOW laPad[j]+" "+lcCheie+" negasita"
*!* messagebox(skpbar (laPad[j],i),48,laPad[j]+" "+alltrim(str(i)))
Set Skip Of Bar i Of &laPad[j] .T.
*!* messagebox(skpbar (laPad[j],i),48,laPad[j]+" "+alltrim(str(i)))
Endif
Endif
Endfor
Endif
Catch
Endtry
Endfor
Endproc
**********************************************************************************************
*** Citeste accesul pentru o optiune dupa cod
*** Ex. pentru initializarea accesului la lansarea unui formular direct din meniu
Function GetAccesByCod
Lparameters tcCod, tcAccesDefault
* tcCod = codul optiunii din meniu (ex: ZA01/ZA02/ZB01)
* tcAccesDefault = codul de acces in caz ca nu sunt definite drepturi pe acel cod ("1;2;3;4")
Local lcAcces, lcAccesDefault, lcCheie, lcCheie2, lcSelect, lnPozitieF, lnPozitieS, j, k
lcAccesDefault = Iif(!Empty(m.tcAccesDefault), m.tcAccesDefault, "")
lcAcces = ""
lcSelect = Select()
lcCheie = Upper(Alltrim(m.tcCod))
k = 0
If Right(lcCheie, 1) # ';'
lcCheie = lcCheie + ';'
Endif
lnPozitieS = 1
For j = 1 To Occurs([;], lcCheie)
lnPozitieF = At([;], lcCheie, j)
lcCheie2 = Substr(lcCheie, lnPozitieS, lnPozitieF - lnPozitieS)
lcAcces = []
Select crsdrepturi
Locate For Substr(cheie, 1, Len(lcCheie2)) = lcCheie2
If Found()
Set Filter To Substr(cheie, 1, Len(lcCheie2)) = lcCheie2
Scan
lcAcces = lcAcces + Substr(cheie, Len(lcCheie2) + 1, 1) + [;]
Endscan
Set Filter To
k = k + 1
Exit
Endif && found
lnPozitieS = lnPozitieF + 1
ENDFOR
IF EMPTY(m.lcAcces) AND !EMPTY(m.lcAccesDefault)
lcAcces = m.lcAccesDefault
ENDIF
Select (m.lcSelect)
RETURN m.lcAcces
ENDFUNC && GetAccesByCod
**********************************************************************************************
Procedure actualizeaza_acces_forma
Lparameters loObiect, tcAcces
Local lcProp
For i = 1 To Len(tcAcces)
lcProp = 'this.lactiv' + Alltrim(Substr(tcAcces, i, 1))
&lcProp = .T.
Endfor
Endproc
**********************************************************************************************
*!* Procedure setari_grupuri
*!* Private pogrupuri,pcschema1,pcselect1
*!* Store '' To pogrupuri
*!* *!* pcschema1=['id_util n(5),utilizator c(30)']
*!* *!* pcselect1=['select id_util,utilizator from vutil_drept where 1=2']
*!* *!* pcorder1=[utilizator]
*!* *!* pcfiltru1=[id_firma=?gnIdFirma and id_prog=?gnIdProgram]
*!* pcschema1=['id_grup n(5),grup c(30)']
*!* pcselect1=['select id_grup,grup from vdef_grup where 1=2']
*!* pcorder1=[grup]
*!* pcfiltru1=[2=2]
*!* llAfiseaza=.F.
*!* gencursor('pogrupuri','crsgrupuri',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza)
*!* pogrupuri.ca_baza1.afisare()
*!* ofrmgrupuri=Createobject('frm_grupuri')
*!* ofrmgrupuri.Show(1)
*!* Release pogrupuri
*!* Endproc

View File

@@ -0,0 +1,103 @@
&& este versiunea pentru programele care nu au definite obiecte
**********************************************************************************************
Procedure verifica_drepturi2
Lparameters tcObiectFundal,tcPageFrame,tlImagini
dezactiveaza_obiecte_pageframe2(65,tcObiectFundal+[.]+tcPageFrame)
If Empty(tlImagini) Or tlImagini
dezactiveaza_imagini2(tcObiectFundal)
Endif
Endproc
**********************************************************************************************
Procedure dezactiveaza_imagini2
Lparameters loObiect
Local i,k,j,l,lnMinLeft
Dimension laImaginiVizibile(20,2)
k=0
&& left=3 pentru prima imagine
With &loObiect
For i=1 To .ControlCount
If Alltrim(Upper(.Objects(i).Class))='IMAGINE'
k=k+1
lcCheie=.Objects(i).ccod
lcAcces=[1;2;3;4;5;7;]
.Objects(i).coptiuni_active=lcAcces
.Objects(i).Visible=.T.
laImaginiVizibile(k,1)=i
laImaginiVizibile(k,2)=.Objects(i).Left
Endif
Endfor
If k>0
lnLungime=.Objects(laImaginiVizibile(1,1)).Width
For j=1 To k-1
For l=j+1 To k
If laImaginiVizibile(j,2)>laImaginiVizibile(l,2)
lnPozitie=laImaginiVizibile(l,1)
lnLeft=laImaginiVizibile(l,2)
laImaginiVizibile(l,1)=laImaginiVizibile(j,1)
laImaginiVizibile(l,2)=laImaginiVizibile(j,2)
laImaginiVizibile(j,1)=lnPozitie
laImaginiVizibile(j,2)=lnLeft
Endif
Endfor
Endfor
For j=1 To k
.Objects(laImaginiVizibile(j,1)).Left=5+(j-1)*lnLungime
Endfor
Endif
Endwith
Endproc
**********************************************************************************************
Procedure dezactiveaza_obiecte_pageframe2
Lparameters lnKey,lcPageFrame,lcTata
Local lcKey,lcProp,lcOptiune,lnPozitie,i,j,k,l,lnObiecteActive
Store [] To lcKey,lcProp,lcOptiune
Store 0 To lnNivel,lnPozitie,i,j,k,l
If Empty(lcTata)
lcTata=Null
ENDIF
LOCAL lcSetExact
lcSetExact = SET("Exact")
Set Exact On
With &lcPageFrame
For i=1 To .PageCount
For j=1 To .PageCount
If .Pages(j).PageOrder=i
Exit
Endif
Endfor
With .Pages(j)
lcKey=Nvl(lcTata,[])+Chr(lnKey)
For l=1 To .ControlCount
Do Case
Case Alltrim(Upper(.Objects(l).Class))='PAGEFRAME'
lcNume=lcPageFrame+'.'+Alltrim(.Name)+'.'+Alltrim(Upper(.Objects(l).Name))
dezactiveaza_obiecte_pageframe2(65,lcNume,lcKey)
Case Alltrim(Upper(.Objects(l).Class))='CW'
lcOptiune=.Objects(l).label_item1.Caption
lcCheie=lcKey+Padl(Alltrim(Str(.Objects(l).nid_cw)),2,[0])
lcAcces=[1;2;3;4;7;]
.Objects(l).ccheie=lcCheie
.Objects(l).coptiuni_active=lcAcces
.Objects(l).activeaza()
Endcase
Endfor
Endwith
lnKey=lnKey+1
Endfor
ENDWITH
SET EXACT &lcSetExact
* Set Exact Off
Endproc
**********************************************************************************************
Procedure actualizeaza_acces_forma
Lparameters loObiect,tcAcces
Local lcProp
For i=1 To Len(tcAcces)
lcProp='this.lactiv'+Alltrim(Substr(tcAcces,i,1))
&lcProp=.T.
Endfor
Endproc
**********************************************************************************************

View File

@@ -0,0 +1,134 @@
LPARAMETERS tcProgram, tcVersiuneURL
*** IN LUCRU
* tcProgram: ROAEFACTURA
* tcVersiuneURL: https://www.romfast.ro/romfastsuport/files/suport.xml
#DEFINE CRLF CHR(13) + CHR(10)
lcProgram = IIF(!EMPTY(m.tcProgram), UPPER(ALLTRIM(m.tcProgram)), UPPER(ALLTRIM(SYS(16,0))))
lcServer = IIF(!EMPTY(m.tcVersiuneURL), m.tcVersiuneURL, [https://www.romfast.ro/romfastsuport/files/suport.xml])
llSucces = .F.
Try
loHTTP = Createobject('winHTTP.winHTTPrequest.5.1')
llSucces = .T.
CATCH TO loEx
This.Log('Actualizare aplicatie - Eroare: ' + loEx.Message)
ENDTRY
IF m.llSucces
llSucces = .F.
TRY
This.Log(m.lcServer)
loHTTP.Open('GET', lcServer, .F.)
loHTTP.setRequestHeader("Content-Type", "application/xml")
loHTTP.Send()
llSucces = .T.
Catch To loEx
This.Log('Actualizare aplicatie - Eroare: ' + loEx.Message)
Endtry
ENDIF
IF m.llSucces
If loHTTP.Status <> 200
This.Log('Actualizare aplicatie ' + loHTTP.StatusText)
llSucces = .F.
ELSE
goApp.Log('Actualizare aplicatie - versiunexml: SUCCES')
Endif
ENDIF
IF m.llSucces
llSucces = .F.
* Versiunea programului
lcVersiuneClient = get_version(.F.,.T.)
* Versiunea de pe server
TRY
lcVersiuneXML = loHTTP.ResponseText
XMLTOCURSOR(m.lcVersiuneXML, 'crsVersiuni')
lcVersiuneServer = ''
lcServer = ''
SELECT crsVersiuni
LOCATE FOR UPPER(ALLTRIM(program)) = m.lcProgram
IF FOUND()
lcVersiuneServer = ALLTRIM(UPPER(versiune))
lcServer = ALLTRIM(fisier) && url aplicatie.exe
llSucces = .T.
ENDIF
CATCH TO loEx
This.Log('Actualizare aplicatie - Eroare: ' + loEx.Message)
ENDTRY
ENDIF
If m.llSucces AND m.lcVersiuneServer <> m.lcVersiuneClient AND !EMPTY(m.lcServer)
llSucces = .F.
TRY
This.Log(m.lcServer)
loHTTP.Open('GET', lcServer, .F.)
loHTTP.setRequestHeader("Content-Type", "application/vnd.microsoft.portable-executable")
loHTTP.Send()
llSucces = .T.
Catch To loEx
This.Log('Actualizare aplicatie - Eroare: ' + loEx.Message)
Endtry
IF m.llSucces
If loHTTP.Status <> 200
This.Log('Actualizare aplicatie - Eroare: ' + loHTTP.StatusText)
llSucces = .F.
ELSE
This.Log('Actualizare aplicatie - program.exe Succes')
ENDIF
ENDIF
Endif
If !llDownloaded
Return
ENDIF
lcBatFile = Addbs(Justpath(m.lcDestinationFile)) + 'UPDATE.BAT'
Set Textmerge On To (m.lcBatFile) Noshow
*!* wait 5 seconds for the application to quit
\@ping 127.0.0.1 -n 10 -w 1000 > nul
*!* rename original application
\REN "<<m.lcApplicationFile>>" "<<JUSTFNAME(m.lcBackupApplicationFile)>>"
*!* execute the new sfx archive - the sfx archive will start the application by itself
\START "" "<<m.lcDestinationFile>>"
\@ping 127.0.0.1 -n 5 -w 1000 > nul
*!* delete the archive
\DEL "<<m.lcDestinationFile>>"
Set Textmerge To
*!* DEZARHIVEZ APLICATIA DESCARCATA
llSucces = .F.
Try
Cd (Justpath(m.lcApplicationFile))
loProcess=Createobject("api_apprun", m.lcBatFile)
goApp.Log("EXECUTARE PROGRAM;"+ " " + Alltrim(m.lcBatFile))
loProcess.launchapp()
llSucces = .T.
Catch To loException
goApp.Log("EXECUTARE PROGRAM;"+ " " + Alltrim(m.lcBatFile) + " " + CRLF + loEx.Message)
Messagebox("EXECUTARE PROGRAM;"+ " " + Alltrim(m.lcBatFile) + " " + CRLF + loEx.Message,0+16, _Screen.Caption)
Endtry
If llSucces
On Error
On Shutdown
Set Procedure To
Set Library To
Set Classlib To
Clear Events
If _vfp.StartMode <> 0
Quit
Else
Return .F.
Endif
Endif

View File

@@ -0,0 +1,218 @@
Procedure citeste_obiecte
Local lcMeniu,lcPageframe
lcMeniu=[roadef]
lcPageframe=[gofundal._pgfrmbase1]
Create Cursor CRSOBIECTE(ID_PROG N(1),CHEIE C(20),NIVEL N(2),EXPLICATIE C(100),TATA C(20),COD C(2),ID_OBIECT N(10),ID_TATA N(10))
plCursor=.T.
citeste_meniu(90,lcmeniu,"Meniu")
citeste_pageframe(65,lcpageframe)
select * FROM crsobiecte INTO TABLE C:\crsobiecte.dbf
Endproc
************************************************************************
Procedure citeste_meniu
Lparameters lnKey,lcNumeMeniu,lcOptiune
lcKey=Chr(lnKey)
*!* This.Nodes.Add(,1,lcKey,lcOptiune)
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey,1,lcOptiune,[ ])
Endif
lnKey2=65
*!* k=0
*!* Try
*!* lcKey2=lcKey+Chr(lnKey2)
*!* lnKey2=lnKey2+1
*!* This.Nodes.Add(lcKey,4,lcKey2,'Utile')
*!* If plCursor
*!* Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey2,4,[Utile],lcKey)
*!* Endif
*!* For i=1 To Cntbar('utile')
*!* lcOptiune=Prmbar('utile',i)
*!* If !Empty(lcOptiune)
*!* k=k+1
*!* This.Nodes.Add(lcKey2,4,lcKey2+Padl(Alltrim(Str(k)),2,[0]),lcOptiune)
*!* If plCursor
*!* Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey2+Padl(Alltrim(Str(k)),2,[0]),4,lcOptiune,lcKey2)
*!* Endif
*!* Endif
*!* Endfor
*!* Catch
*!* ENDTRY
k=0
Try
lcKey2=lcKey+Chr(lnKey2)
lnKey2=lnKey2+1
*!* This.Nodes.Add(lcKey,4,lcKey2,'Initializare')
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey2,4,[Initializare],lcKey)
Endif
For i=1 To Cntbar('initializa')
lcOptiune=Prmbar('initializa',i)
If !Empty(lcOptiune)
k=k+1
*!* This.Nodes.Add(lcKey2,4,lcKey2+Padl(Alltrim(Str(k)),2,[0]),lcOptiune)
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey2+Padl(Alltrim(Str(k)),2,[0]),4,lcOptiune,lcKey2)
Endif
Endif
Endfor
Catch
Endtry
k=0
Try
lcKey2=lcKey+Chr(lnKey2)
*!* This.Nodes.Add(lcKey,4,lcKey2,'Actualizari')
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey2,4,[Actualizari],lcKey)
Endif
For i=1 To Cntbar('_1bs12qror')
lcOptiune=Prmbar('_1bs12qror',i)
If !Empty(lcOptiune)
k=k+1
*!* This.Nodes.Add(lcKey2,4,lcKey2+Padl(Alltrim(Str(k)),2,[0]),lcOptiune)
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey2+Padl(Alltrim(Str(k)),2,[0]),4,lcOptiune,lcKey2)
Endif
Endif
Endfor
Catch
Endtry
************************************************************************
Procedure citeste_pageframe
Lparameters lnKey,lcPageframe,lcTata
Local lcKey,lcProp,lcOptiune,lnNivel,lnPozitie,i,j,k,l
Store [] To lcKey,lcProp,lcOptiune
Store 0 To lnNivel,lnPozitie,i,j,k,l
If Empty(lcTata)
lcTata=Null
lnNivel=1
Else
lnNivel=4
Endif
Set Exact On
With &lcPageframe
For i=1 To .PageCount
For j=1 To .PageCount
If .Pages(j).PageOrder=i
Exit
Endif
Endfor
With .Pages(j)
lcKey=Nvl(lcTata,[])+Chr(lnKey)
*!* This.Nodes.Add(lcTata,lnNivel,lcKey,.Caption)
lcProp="cnt"+lcKey
*!* This.AddProperty(lcProp,0)
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey,lnNivel,.Caption,Nvl(lcTata,[ ]))
Endif
lcProp="cnt"+lcKey
*!* This.AddProperty(lcProp,0)
Dimension copii(128,3)
k=1
For l=1 To .ControlCount
Do Case
Case Alltrim(Upper(.Objects(l).Class))='PAGEFRAME'
lcNume=lcPageframe+'.'+Alltrim(.Name)+'.'+Alltrim(Upper(.Objects(l).Name))
citeste_pageframe(65,lcNume,lcKey)
Case Alltrim(Upper(.Objects(l).Class))='CW' And .Objects(l).nid_cw>0
lcOptiune=.Objects(l).label_item1.Caption
lnPozitie=.Objects(l).nid_cw
copii(lnPozitie,1)=lcOptiune
copii(lnPozitie,2)=.Objects(l).ntip
copii(lnPozitie,3)=.Objects(l).cmeniu
k=k+1
Endcase
Endfor
For l=1 To k-1
*!* This.Nodes.Add(lcKey,4,lcKey+Padl(Alltrim(Str(l)),2,[0]),copii(l,1))
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+Padl(Alltrim(Str(l)),2,[0]),4,copii(l,1),lcKey)
Endif
*!* If !Empty(copii(l,3))
*!* This.adauga_meniuri(copii(l,3),copii(l,2),lcKey+Padl(Alltrim(Str(l)),2,[0]))
*!* Else
adauga_frunze(copii(l,2),lcKey+Padl(Alltrim(Str(l)),2,[0]))
*!* Endif
Endfor
Endwith
lnKey=lnKey+1
Endfor
Endwith
Set Exact Off
Endproc
************************************************************************
Procedure adauga_frunze
Lparameters lnTip,lcKey
Do Case
Case lnTip=0 && introducere
Case lnTip=1 && raport
*!* lcProp="cnt"+lcKey
*!* This.AddProperty(lcProp,0)
*!* This.Nodes.Add(lcKey,4,lcKey+"1","Export")
*!* This.Nodes.Add(lcKey,4,lcKey+"2","Listare")
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"1",4,"Export",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"2",4,"Listare",lcKey)
Endif
Case lnTip=2 && registru
*!* lcProp="cnt"+lcKey
*!* This.AddProperty(lcProp,0)
*!* This.Nodes.Add(lcKey,4,lcKey+"1","Export")
*!* This.Nodes.Add(lcKey,4,lcKey+"2","Listare")
*!* This.Nodes.Add(lcKey,4,lcKey+"3","Modificare")
*!* This.Nodes.Add(lcKey,4,lcKey+"4","Refacere")
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"1",4,"Export",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"2",4,"Listare",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"3",4,"Modificare",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"4",4,"Refacere",lcKey)
Endif
Case lnTip=3 && balanta\inreg.
*!* lcProp="cnt"+lcKey
*!* This.AddProperty(lcProp,0)
*!* This.Nodes.Add(lcKey,4,lcKey+"1","Export")
*!* This.Nodes.Add(lcKey,4,lcKey+"2","Listare")
*!* This.Nodes.Add(lcKey,4,lcKey+"3","Modificare")
*!* This.Nodes.Add(lcKey,4,lcKey+"4","Refacere")
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"1",4,"Export",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"2",4,"Listare",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"3",4,"Modificare",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"4",4,"Refacere",lcKey)
Endif
Case lnTip=4 && vizualizare
*!* lcProp="cnt"+lcKey
*!* This.AddProperty(lcProp,0)
*!* This.Nodes.Add(lcKey,4,lcKey+"1","Export")
*!* This.Nodes.Add(lcKey,4,lcKey+"2","Listare")
*!* This.Nodes.Add(lcKey,4,lcKey+"3","Modificare")
*!* This.Nodes.Add(lcKey,4,lcKey+"4","Stergere")
*!* This.Nodes.Add(lcKey,4,lcKey+"5","Vizualizare inreg. proprii")
*!* This.Nodes.Add(lcKey,4,lcKey+"6","Vizualizare toate inreg.")
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"1",4,"Export",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"2",4,"Listare",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"3",4,"Modificare",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"4",4,"Stergere",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"5",4,"Vizualizare inreg.proprii",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"6",4,"Vizualizare tot",lcKey)
ENDIF
Case lnTip=5 && personalizat
*!* lcProp="cnt"+lcKey
*!* This.AddProperty(lcProp,0)
*!* This.Nodes.Add(lcKey,4,lcKey+"1","Export")
*!* This.Nodes.Add(lcKey,4,lcKey+"2","Listare")
*!* This.Nodes.Add(lcKey,4,lcKey+"3","Modificare")
*!* This.Nodes.Add(lcKey,4,lcKey+"4","Stergere")
*!* This.Nodes.Add(lcKey,4,lcKey+"7","Altele...")
*!* This.Nodes.Add(lcKey,4,lcKey+"8","Altele...")
If plCursor
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"1",4,"Export",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"2",4,"Listare",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"3",4,"Modificare",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"4",4,"Stergere",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"7",4,"Altele...",lcKey)
Insert Into CRSOBIECTE (CHEIE,NIVEL,EXPLICATIE,TATA) Values(lcKey+"8",4,"Altele...",lcKey)
Endif
Endcase
Endproc
************************************************************************

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,921 @@
**
** wwshowcursor.fxp
**
EXTERNAL ARRAY lvHeader
ENDPROC
*
DEFINE CLASS aShowCursor AS CUSTOM
DIMENSION afIeldlist[1]
nfIeldcount = 0
ctAbletitle = ""
chEaderstring = ""
chEaderbgcolor = "DarkBlue"
chEadercolor = "White"
chEaderfont = "Verdana,Helvetica"
ctAblebgcolor = "#EEEEEE"
caLternatingbgcolor = "#B0DAFF"
laLternaterows = .F.
ctAblewidth = "98%"
ctAbleborder = "2"
ceXtratabletags = 'style="font:normal normal 10pt Verdana;border-collapse: collapse;border-color:black" bordercolor="darkgray"'
ccEllpadding = "3"
ccEllspacing = "0"
naSciileftcolumns = 20
nmEmowidth = 25
lcEntertable = .T.
lsUmnumerics = .F.
lsHowastable = .T.
lsOrtable = .F.
npAge_itemsperpage = 0
npAge_showpage = 0
npAge_totalpages = 0
npAge_nextpage = 0
npAge_prevpage = 0
cpAge_pageurl = ""
cpAge_linkhtml = ""
cpAge_oldalias = ""
nfOrcetoprelist = 40000
ohTml = .NULL.
cbAseurl = ""
ckEyfield = ""
ckEytype = "N"
ctAblefieldlist = ""
ctAbleeditfieldlist = ""
ctAblerecordfieldlist = ""
ctAblesortcolumn = ""
laLlowadd = .T.
laLlowdelete = .T.
coLdalias = ""
cnEwalias = ""
cSumLista= ""
lSumLista = .F.
*
PROCEDURE INIT
LPARAMETER loHtml
IF VARTYPE(loHtml)<>"O"
THIS.ohTml = CREATEOBJECT('wwResponseStringNoBuffer')
ELSE
THIS.ohTml = loHtml
ENDIF
THIS.nfIeldcount = AFIELDS(THIS.afIeldlist)
ENDPROC
*
PROCEDURE SetCursor
LPARAMETER lcDbf
lcDbf = IIF(TYPE("lcDBF")="C", lcDbf, "")
lcStem = JUSTSTEM(lcDbf)
IF .NOT. USED(lcStem)
THIS.coLdalias = ALIAS()
USE (lcDbf) IN 0
ENDIF
SELECT (lcStem)
ENDPROC
*
PROCEDURE DESTROY
IF .NOT. EMPTY(THIS.coLdalias) .AND. USED(THIS.coLdalias)
USE IN (THIS.cnEwalias)
IF .NOT. EMPTY(THIS.coLdalias)
SELECT (THIS.coLdalias)
ENDIF
THIS.coLdalias = ""
THIS.cnEwalias = ""
ENDIF
ENDPROC
*
PROCEDURE BuildFieldListHeader
LPARAMETER lvHeader, llPrelist
LOCAL lcHeader, lnX
lcHeader = ""
IF .NOT. EMPTY(THIS.chEaderstring)
RETURN
ENDIF
IF THIS.lsOrtable .AND. EMPTY(THIS.cbAseurl)
THIS.cbAseurl = REQUEST.geTcurrenturl()+"&"
ENDIF
IF .NOT. llPrelist
IF TYPE("lvHeader[1]")<>"U"
lcHeader = ""
THIS.nfIeldcount = ALEN(lvHeader, 1)
FOR lnX = 1 TO THIS.nfIeldcount
lcHeader = lcHeader+'<TH><font FACE="'+ ;
THIS.chEaderfont+'" color="'+ ;
THIS.chEadercolor+'">'+lvHeader(lnX)+ ;
'</font></TH>'
ENDFOR
ELSE
FOR lnX = 1 TO THIS.nfIeldcount
IF THIS.afIeldlist(lnX,2)="M"
THIS.afIeldlist[lnX, 3] = THIS.nmEmowidth
ENDIF
IF THIS.afIeldlist(lnX,2)="T"
THIS.afIeldlist[lnX, 3] = 20
ENDIF
IF THIS.afIeldlist(lnX,2)="I"
THIS.afIeldlist[lnX, 3] = 9
ENDIF
IF THIS.lsOrtable .AND. THIS.afIeldlist(lnX,2)$"CNIL"
lcFieldName = PROPER(CHRTRAN(THIS.afIeldlist[lnX,1],"_"," ")) + " " + [<a href="] + THIS.cbAseurl + [Sorted=] + TRANSFORM(lnX) +[" ] + [style="color:]+THIS.chEadercolor+[;font:normal normal 12pt WebDings;text-decoration:none" title="Sort Ascending">] + CHR(0x35) +"</a> " + [<a href="] + THIS.cbAseurl + [Sorted=] + TRANSFORM(lnX) +[&SortDescending=True" ] + [style="color:]+THIS.chEadercolor+[;font:normal normal 12pt WebDings;text-decoration:none" title="Sort Descending">] + CHR(0x36) +"</a> " + CHR(13)+CHR(10)
ELSE
lcFieldName = PROPER(CHRTRAN(THIS.afIeldlist(lnX, ;
1), "_", " "))
ENDIF
lcHeader = lcHeader+'<TH><font FACE="'+ ;
THIS.chEaderfont+'" color="'+ ;
THIS.chEadercolor+'">'+lcFieldName+ ;
'</font></TH>'
ENDFOR
ENDIF
THIS.chEaderstring = '<TR BGCOLOR="'+THIS.chEaderbgcolor+'">'+ ;
lcHeader+'</TR>'
ELSE
IF TYPE("lvHeader[1]")="U"
lcHeader = ""
FOR lnX = 1 TO lnFields
IF LEN(TRIM(THIS.afIeldlist(lnX,1)))> ;
THIS.afIeldlist(lnX,3)
THIS.afIeldlist[lnX, 3] = ;
LEN(TRIM(THIS.afIeldlist(lnX,1)))
ENDIF
IF THIS.afIeldlist(lnX,2)="M"
THIS.afIeldlist[lnX, 3] = THIS.nmEmowidth
ENDIF
IF THIS.afIeldlist(lnX,2)="T"
THIS.afIeldlist[lnX, 3] = 20
ENDIF
IF THIS.afIeldlist(lnX,2)="I"
THIS.afIeldlist[lnX, 3] = 9
ENDIF
IF THIS.afIeldlist(lnX,2)$"NFBIY"
lcHeader = lcHeader+"<b>"+ ;
PADC(THIS.afIeldlist(lnX,1), ;
THIS.afIeldlist(lnX,3))+"</b> "
ELSE
lcHeader = lcHeader+"<b>"+ ;
PADC(THIS.afIeldlist(lnX,1), ;
THIS.afIeldlist(lnX,3))+"</b> "
ENDIF
ENDFOR
ELSE
lcHeader = ""
FOR lnX = 1 TO ALEN(lvHeader, 1)
IF LEN(TRIM(lvHeader(lnX)))>THIS.afIeldlist(lnX,3)
THIS.afIeldlist[lnX, 3] = ;
LEN(TRIM(THIS.afIeldlist(lnX,1)))
ENDIF
IF THIS.afIeldlist(lnX,2)="M"
THIS.afIeldlist[lnX, 3] = 20
ENDIF
IF THIS.afIeldlist(lnX,2)="T"
THIS.afIeldlist[lnX, 3] = 20
ENDIF
lnSizeloc = ATC(":", lvHeader(lnX))
IF lnSizeloc>0
lnSize = VAL(SUBSTR(ALLTRIM(lvHeader(lnX)), ;
lnSizeloc+1))
lvHeader[lnX] = SUBSTR(lvHeader(lnX), 1, lnSizeloc-1)
ELSE
lnSize = THIS.afIeldlist(lnX,3)
ENDIF
IF THIS.afIeldlist(lnX,2)$"NFBIY"
lcHeader = lcHeader+"<b>"+PADC(lvHeader(lnX), ;
lnSize)+"</b> "
ELSE
lcHeader = lcHeader+"<b>"+PADC(lvHeader(lnX), ;
lnSize)+"</b> "
ENDIF
ENDFOR
ENDIF
THIS.chEaderstring = lcHeader
ENDIF
ENDPROC
*
FUNCTION ShowCursor
LOCAL lcHeader, lnX, laTotals, lcOutput, lnSizeloc, lnSize, lvValue
IF EMPTY(ALIAS())
RETURN ""
ENDIF
IF THIS.lsOrtable
lnSort = VAL(REQUEST.quErystring("Sorted"))
IF lnSort>0
THIS.ctAblesortcolumn = TRANSFORM(lnSort)
IF .NOT. EMPTY(REQUEST.quErystring("SortDescending"))
THIS.ctAblesortcolumn = THIS.ctAblesortcolumn+ ;
" DESCENDING"
ENDIF
ENDIF
ENDIF
IF .NOT. EMPTY(THIS.ctAblefieldlist)
lcFields = THIS.ctAblefieldlist
lcOrder = IIF( .NOT. EMPTY(THIS.ctAblesortcolumn), "ORDER BY "+ ;
THIS.ctAblesortcolumn, "")
SELECT &lcFields FROM ALIAS() &lcOrder INTO CURSOR __TQuery
THIS.nfIeldcount = AFIELDS(THIS.afIeldlist)
ELSE
IF .NOT. EMPTY(THIS.ctAblesortcolumn)
lcOrder = IIF( .NOT. EMPTY(THIS.ctAblesortcolumn), ;
"ORDER BY "+THIS.ctAblesortcolumn, "")
SELECT * FROM ( ALIAS() ) &lcOrder INTO CURSOR __TQuery
ENDIF
ENDIF
lcOutput = ""
lnFields = THIS.nfIeldcount
lnReccount = RECCOUNT()
IF THIS.npAge_itemsperpage<>0
THIS.paGefilter()
lnReccount = RECCOUNT()
ENDIF
* IF thIs.lsUmnumerics
DIMENSION laTotals[1, lnFields]
laTotals = 0
* ENDIF
IF THIS.lSumLista
LOCAL lalistacol
DIMENSION lalistacol[1, lnFields]
lista2array(THIS.cSumLista,@lalistacol)
ENDIF
IF THIS.lsHowastable .AND. lnReccount*lnFields<=THIS.nfOrcetoprelist+1
IF .NOT. EMPTY(THIS.ctAbletitle)
lcTitle = '<TR><TH COLSPAN='+ALLTRIM(STR(lnFields))+ ;
' ALIGN="CENTER"><H2>'+THIS.ctAbletitle+ ;
'</H2></TH></TR>'
ELSE
lcTitle = ""
ENDIF
THIS.ohTml.WRITE(IIF(THIS.lcEntertable, '<CENTER>'+CHR(13)+ ;
CHR(10), '')+'<TABLE BGCOLOR="'+ ;
THIS.ctAblebgcolor+'" CELLPADDING="'+ ;
THIS.ccEllpadding+'" CELLSPACING="'+ ;
THIS.ccEllspacing+'" BORDER="'+ ;
THIS.ctAbleborder+'" '+IIF( .NOT. ;
EMPTY(THIS.ctAblewidth), ' WIDTH="'+ ;
THIS.ctAblewidth+'"', "")+' '+ ;
THIS.ceXtratabletags+'>'+CHR(13)+CHR(10)+IIF( ;
.NOT. EMPTY(lcTitle), lcTitle+CHR(13)+CHR(10), ""))
THIS.BuildFieldListHeader()
THIS.ohTml.WRITE(THIS.chEaderstring)
llAlternate = .T.
SCAN
lcRow = ""
FOR lnX = 1 TO lnFields
lcFieldName = THIS.afIeldlist(lnX,1)
lcFieldtype = THIS.afIeldlist(lnX,2)
lvValue = EVALUATE(lcFieldName)
DO CASE
CASE ISNULL(lvValue)
lcRow = lcRow+"<TD>n/a</TD>"
CASE lcFieldtype="C"
lcRow = lcRow+"<TD>"+IIF(EMPTY(lvValue), ;
"<BR>", TRIM(lvValue))+"</TD>"
CASE lcFieldtype="M"
lcRow = lcRow+"<TD >"+IIF(EMPTY(lvValue), ;
"<BR>", ;
THIS.ohTml.wrItememo(lvValue,.T.))+ ;
"</TD>"
CASE lcFieldtype$"NFBIY"
lcRow = lcRow+'<TD ALIGN=RIGHT>'+ ;
LTRIM(STR(lvValue, ;
THIS.afIeldlist(lnX,3), ;
THIS.afIeldlist(lnX,4)))+'</TD>'
IF THIS.lsUmnumerics OR (THIS.lSumLista AND ASCAN(lalistacol,ALLTRIM(STR(lnX)))>0)
laTotals[1, lnX] = laTotals(1,lnX)+lvValue
ENDIF
CASE lcFieldtype="L"
lcRow = lcRow+'<TD ALIGN=CENTER>'+ ;
IIF(lvValue, "True", "False")+'</TD>'
CASE lcFieldtype="D"
lcRow = lcRow+'<TD ALIGN=CENTER>'+ ;
IIF(EMPTY(lvValue), "<BR>", ;
DTOC(lvValue))+'</TD>'
CASE lcFieldtype="T"
lcRow = lcRow+'<TD ALIGN=CENTER>'+ ;
IIF(EMPTY(lvValue), "<BR>", ;
LOWER(TTOC(lvValue)))+'</TD>'
ENDCASE
ENDFOR
IF THIS.laLternaterows .AND. llAlternate
lcRow = '<TR style="background:'+ ;
THIS.caLternatingbgcolor+'" VALIGN=TOP>'+ ;
lcRow+"</TR>"
ELSE
lcRow = '<TR VALIGN=TOP>'+lcRow+"</TR>"
ENDIF
llAlternate = .NOT. llAlternate
THIS.ohTml.WRITE(lcRow+CHR(13)+CHR(10))
ENDSCAN
IF THIS.lsUmnumerics OR THIS.lSumLista &&
lcRow = ""
FOR lnX = 1 TO lnFields
lcFieldName = THIS.afIeldlist(lnX,1)
lcFieldtype = THIS.afIeldlist(lnX,2)
IF lcFieldtype$"NFBIY"
lnTotal = laTotals(1,lnX)
IF this.lsumlista AND ASCAN(lalistacol,ALLTRIM(STR(lnX)))<=0
lcRow = lcRow+"<TD></TD>"
ELSE
lcRow = lcRow+'<TD ALIGN=RIGHT><font color="'+ ;
THIS.chEadercolor+'"><B>'+STR(lnTotal, ;
THIS.afIeldlist(lnX,3)+1, ;
THIS.afIeldlist(lnX,4))+'</b></font></TD>'
ENDIF
ELSE
lcRow = lcRow+"<TD></TD>"
ENDIF
ENDFOR
THIS.ohTml.WRITE('<TR BGCOLOR="'+THIS.chEaderbgcolor+ ;
'"><B>'+lcRow+'</B></TR>'+CHR(13)+CHR(10))
ENDIF
IF THIS.npAge_itemsperpage<>0
IF USED("_TXQuery")
USE IN _TXQuery
ENDIF
IF USED(THIS.cpAge_oldalias)
SELECT (THIS.cpAge_oldalias)
ENDIF
IF .NOT. EMPTY(THIS.cpAge_linkhtml)
THIS.ohTml.faStwrite('<tr bgcolor="'+ ;
THIS.chEaderbgcolor+'"><td align="right" colspan="'+ ;
TRANSFORM(lnFields)+'">'+'<font color="'+ ;
THIS.chEadercolor+'">'+THIS.cpAge_linkhtml+ ;
'</font></td></tr>')
ENDIF
ENDIF
THIS.ohTml.WRITE("</TABLE>"+IIF(THIS.lcEntertable, '</CENTER>', ;
'')+CHR(13)+CHR(10))
ELSE
THIS.ohTml.WRITE('<PRE>'+CHR(13)+CHR(10)+IIF(THIS.lcEntertable, ;
'<CENTER>'+CHR(13)+CHR(10), ''))
IF .NOT. EMPTY(THIS.ctAbletitle)
lcTitle = '<H2>'+THIS.ctAbletitle+'</H2>'
ELSE
lcTitle = ""
ENDIF
THIS.chEaderstring = ""
THIS.BuildFieldListHeader( ,.T.)
THIS.ohTml.faStwrite(THIS.chEaderstring+CHR(13)+CHR(10))
SCAN
lcRow = ""
FOR lnX = 1 TO lnFields
lcFieldName = THIS.afIeldlist(lnX,1)
lcFieldtype = THIS.afIeldlist(lnX,2)
lvValue = EVALUATE(lcFieldName)
DO CASE
CASE ISNULL(lvValue)
lcRow = lcRow+PADC("n/a", ;
THIS.afIeldlist(lnX,3))
CASE lcFieldtype="C"
lcRow = lcRow+PADR(lvValue, ;
THIS.afIeldlist(lnX,3))
CASE lcFieldtype="M"
lcRow = lcRow+PADR(MLINE(lvValue, 1), 25)
CASE lcFieldtype$"NFBIY"
lcRow = lcRow+STR(lvValue, ;
THIS.afIeldlist(lnX,3), ;
THIS.afIeldlist(lnX,4))
IF THIS.lsUmnumerics OR (THIS.lSumLista AND ASCAN(lalistacol,ALLTRIM(STR(lnX)))>0)
laTotals[1, lnX] = laTotals(1,lnX)+lvValue
ENDIF
CASE lcFieldtype="L"
lcRow = lcRow+PADR(IIF(lvValue, "True ", ;
"False"), THIS.afIeldlist(lnX,3))
CASE lcFieldtype="D"
lcRow = lcRow+DTOC(lvValue)
CASE lcFieldtype="T"
lcRow = lcRow+TTOC(lvValue)
ENDCASE
lcRow = lcRow+" | "
ENDFOR
THIS.ohTml.faStwrite(lcRow+CHR(13)+CHR(10))
ENDSCAN
IF THIS.lsUmnumerics OR THIS.lSumLista
lcRow = ""
FOR lnX = 1 TO lnFields
lcFieldName = THIS.afIeldlist(lnX,1)
lcFieldtype = THIS.afIeldlist(lnX,2)
IF lcFieldtype$"NFBIY"
lnTotal = laTotals(1,lnX) &&
IF this.lSumLista AND ASCAN(lalistacol,ALLTRIM(STR(lnX)))<=0
lcRow = lcRow+SPACE(THIS.afIeldlist(lnX,3)+3)
ELSE
lcRow = lcRow+STR(lnTotal, THIS.afIeldlist(lnX, ;
3), THIS.afIeldlist(lnX,4))+" "
ENDIF
ELSE
lcRow = lcRow+SPACE(THIS.afIeldlist(lnX,3)+3)
ENDIF
ENDFOR
THIS.ohTml.faStwrite('<b>'+lcRow+'</b>')
ENDIF
THIS.ohTml.faStwrite(IIF(THIS.lcEntertable, '</CENTER>'+ ;
CHR(13)+CHR(10), '')+"</PRE>")
ENDIF
IF .NOT. EMPTY(THIS.ctAblefieldlist)
IF USED("__TQuery")
USE IN __TQuery
ENDIF
ENDIF
RETURN
ENDFUNC
*
PROCEDURE ShowASCIIRecord
LOCAL lnX, lcFieldcaption, lnFieldcount, lcFieldtype, lcFieldName
lcOutput = ""
lcFieldcaption = ""
IF .NOT. EMPTY(DBC()) .AND. INDBC(ALIAS()+'.'+THIS.afIeldlist(1,1), ;
'Field') .AND. TYPE(ALIAS()+"."+THIS.afIeldlist(1,1))<>"U"
FOR lnX = 1 TO THIS.nfIeldcount
lcFieldcaption = PROPER(PADL(DBGETPROP(ALIAS()+"."+ ;
THIS.afIeldlist(lnX,1), "FIELD", ;
"Caption"), 25))+": "
THIS.afIeldlist[lnX, 11] = lcFieldcaption
ENDFOR
ELSE
FOR lnX = 1 TO THIS.nfIeldcount
THIS.afIeldlist[lnX, 11] = ;
PADL(PROPER(THIS.afIeldlist(lnX,1)), ;
THIS.naSciileftcolumns)+": "
ENDFOR
ENDIF
FOR lnX = 1 TO THIS.nfIeldcount
lcFieldName = THIS.afIeldlist(lnX,1)
lcFieldtype = THIS.afIeldlist(lnX,2)
lcFieldcaption = THIS.afIeldlist(lnX,11)
lvValue = EVALUATE(lcFieldName)
lcRow = lcFieldcaption
DO CASE
CASE ISNULL(lvValue)
lcRow = lcRow+"n/a"
CASE lcFieldtype="C"
lcRow = lcRow+TRIM(lvValue)
CASE lcFieldtype="M"
lcRow = lcRow+THIS.ohTml.wrItememo(TRIM(lvValue),.T.)
CASE lcFieldtype$"NFBIY"
lcRow = lcRow+LTRIM(STR(lvValue, THIS.afIeldlist(lnX, ;
3), THIS.afIeldlist(lnX,4)))
CASE lcFieldtype="L"
lcRow = lcRow+IIF(lvValue, "True", "False")
CASE lcFieldtype="D"
lcRow = lcRow+DTOC(lvValue)
CASE lcFieldtype="T"
lcRow = lcRow+TTOC(lvValue)
ENDCASE
THIS.ohTml.WRITE(lcRow+CHR(13)+CHR(10))
ENDFOR
ENDPROC
*
PROCEDURE ShowRecord
LOCAL lnX, lcFieldcaption, lnFieldcount, lcFieldtype, lcFieldName
lcOutput = ""
lcFieldcaption = ""
lcFieldlist = THIS.ctAblerecordfieldlist
IF .NOT. EMPTY(lcFieldlist)
lcFields = lcFieldlist
lnRecno = RECNO()
SELECT &lcFields FROM ALIAS() WHERE RECNO() = lnRecno INTO CURSOR __TQuery
THIS.nfIeldcount = AFIELDS(THIS.afIeldlist)
ENDIF
THIS.ohTml.WRITE(IIF(THIS.lcEntertable, '<CENTER>'+CHR(13)+CHR(10), ;
'')+'<TABLE BGCOLOR="'+THIS.ctAblebgcolor+ ;
'" CELLPADDING='+THIS.ccEllpadding+' CELLSPACING='+ ;
THIS.ccEllspacing+' BORDER='+THIS.ctAbleborder+ ;
' WIDTH='+THIS.ctAblewidth+' '+THIS.ceXtratabletags+'>')
IF .NOT. EMPTY(DBC()) .AND. INDBC(ALIAS()+'.'+THIS.afIeldlist(1,1), ;
'Field') .AND. TYPE(ALIAS()+"."+THIS.afIeldlist(1,1))<>"U"
FOR lnX = 1 TO THIS.nfIeldcount
lcCaption = DBGETPROP(ALIAS()+"."+THIS.afIeldlist(lnX,1), ;
"FIELD", "Caption")
lcCaption = IIF( .NOT. EMPTY(lcCaption), lcCaption, ;
PROPER(THIS.afIeldlist(lnX,1)))
lcCaption = PROPER(STRTRAN(lcCaption, "_", " "))
lcFieldcaption = '<TR><TD VALIGN=TOP BGCOLOR='+ ;
THIS.chEaderbgcolor+'><b><font color="'+ ;
THIS.chEadercolor+'">'+lcCaption+":"+ ;
'</font></b></TD>'
THIS.afIeldlist[lnX, 11] = lcFieldcaption
ENDFOR
ELSE
FOR lnX = 1 TO THIS.nfIeldcount
THIS.afIeldlist[lnX, 11] = '<TR><TD VALIGN=TOP BGCOLOR='+ ;
THIS.chEaderbgcolor+'><b><font color="'+ ;
THIS.chEadercolor+'">'+ ;
PROPER(STRTRAN(THIS.afIeldlist(lnX,1), "_", ;
" "))+'</font></b></TD>'
ENDFOR
ENDIF
FOR lnX = 1 TO THIS.nfIeldcount
lcFieldName = THIS.afIeldlist(lnX,1)
lcFieldtype = THIS.afIeldlist(lnX,2)
lcFieldcaption = THIS.afIeldlist(lnX,11)
lvValue = EVALUATE(lcFieldName)
lcRow = lcFieldcaption
DO CASE
CASE ISNULL(lvValue)
lcRow = lcRow+"<TD>n/a</TD>"
CASE lcFieldtype="C" .OR. lcFieldtype="M"
lcRow = lcRow+"<TD>"+IIF(EMPTY(lvValue), "<BR>", ;
THIS.ohTml.wrItememo(lvValue,.T.))+"</TD>"
CASE lcFieldtype$"NFBY"
lcRow = lcRow+'<TD>'+LTRIM(STR(lvValue, ;
THIS.afIeldlist(lnX,3), THIS.afIeldlist(lnX, ;
4)))+'</TD>'
CASE lcFieldtype="I"
lcRow = lcRow+'<TD>'+TRANSFORM(lvValue)+'</TD>'
CASE lcFieldtype="L"
lcRow = lcRow+'<TD>'+IIF(lvValue, "True", "False")+'</TD>'
CASE lcFieldtype="D"
lcRow = lcRow+'<TD>'+IIF(EMPTY(lvValue), "<BR>", ;
DTOC(lvValue))+'</TD>'
CASE lcFieldtype="T"
lcRow = lcRow+'<TD>'+IIF(EMPTY(lvValue), "<BR>", ;
TTOC(lvValue))+'</TD>'
ENDCASE
THIS.ohTml.WRITE(lcRow+"</TR>"+CHR(13)+CHR(10))
ENDFOR
THIS.ohTml.WRITE("</TABLE>"+CHR(13)+CHR(10)+IIF(THIS.lcEntertable, ;
'</CENTER>'+CHR(13)+CHR(10), ""))
ENDPROC
*
PROCEDURE ShowObject
LPARAMETER loObject
LOCAL lnX, lcFieldcaption, lnFieldcount, lcFieldtype, lcFieldName, lcRow
lcOutput = ""
THIS.ohTml.WRITE(IIF(THIS.lcEntertable, '<CENTER>'+CHR(13)+CHR(10), ;
'')+'<TABLE BGCOLOR="'+THIS.ctAblebgcolor+ ;
'" CELLPADDING='+THIS.ccEllpadding+' CELLSPACING='+ ;
THIS.ccEllspacing+' BORDER='+THIS.ctAbleborder+ ;
' WIDTH='+THIS.ctAblewidth+' '+THIS.ceXtratabletags+'>')
lnFieldcount = AMEMBERS(laFields, loObject)
FOR lnX = 1 TO lnFieldcount
lcField = laFields(lnX)
lcRow = '<TR><TD VALIGN=TOP BGCOLOR='+THIS.chEaderbgcolor+ ;
'><b><font color="'+THIS.chEadercolor+'">'+ ;
PROPER(lcField)+":"+'</font></b></TD>'
lvValue = EVALUATE("loObject."+lcField)
lcType = VARTYPE(lvValue)
DO CASE
CASE ISNULL(lvValue)
lcValue = "null"
CASE lcType="C"
IF EMPTY(lvValue)
lcValue = "&nbsp;"
ELSE
lcValue = diSplaymemo(lvValue)
ENDIF
CASE lcType="D"
lcValue = TRANSFORM(lvValue)
CASE lcType="T"
lcValue = tiMetoc(lvValue)
CASE lcType="L"
lcValue = IIF(lvValue, "True", "False")
CASE lcType="O"
lcValue = "Object"
CASE lcType="U"
lcValue = "Undefined"
OTHERWISE
lcValue = TRANSFORM(lvValue)
ENDCASE
THIS.ohTml.WRITE(lcRow+"<td>"+lcValue+"</td></tr>"+CHR(13)+CHR(10))
ENDFOR
THIS.ohTml.WRITE(IIF(THIS.lcEntertable, '</CENTER>'+CHR(13)+CHR(10), ;
"")+"</TABLE>"+CHR(13)+CHR(10))
ENDPROC
*
PROCEDURE EditRecord
LOCAL lnX, lcFieldcaption, lnFieldcount, lcFieldtype, lcFieldName, ;
lcKeyvalue
lcOutput = ""
lcFieldcaption = ""
lcFieldlist = THIS.ctAbleeditfieldlist
IF .NOT. EMPTY(THIS.ckEyfield)
lcKeyvalue = EVALUATE(THIS.ckEyfield)
ELSE
lcKeyvalue = ""
ENDIF
IF .NOT. EMPTY(lcFieldlist)
lcFields = lcFieldlist
lnRecno = RECNO()
SELECT &lcFields FROM ALIAS() WHERE RECNO() = lnRecno INTO CURSOR __TQuery
THIS.nfIeldcount = AFIELDS(THIS.afIeldlist)
ENDIF
THIS.ohTml.WRITE(IIF(THIS.lcEntertable, '<CENTER>'+CHR(13)+CHR(10), ;
'')+'<TABLE BGCOLOR="'+THIS.ctAblebgcolor+ ;
'" CELLPADDING='+THIS.ccEllpadding+' CELLSPACING='+ ;
THIS.ccEllspacing+' BORDER='+THIS.ctAbleborder+ ;
' WIDTH='+THIS.ctAblewidth+' '+THIS.ceXtratabletags+ ;
'>'+CHR(13)+CHR(10))
IF .NOT. EMPTY(DBC()) .AND. INDBC(ALIAS()+'.'+THIS.afIeldlist(1,1), ;
'Field') .AND. TYPE(ALIAS()+"."+THIS.afIeldlist(1,1))<>"U"
FOR lnX = 1 TO THIS.nfIeldcount
lcCaption = DBGETPROP(ALIAS()+"."+THIS.afIeldlist(lnX,1), ;
"FIELD", "Caption")
lcCaption = IIF( .NOT. EMPTY(lcCaption), lcCaption, ;
PROPER(THIS.afIeldlist(lnX,1)))
lcCaption = PROPER(STRTRAN(lcCaption, "_", " "))
lcFieldcaption = '<TR><TD VALIGN=TOP BGCOLOR="'+ ;
THIS.chEaderbgcolor+'"><b><font color="'+ ;
THIS.chEadercolor+'">'+lcCaption+":"+ ;
'</font></b></TD>'+CHR(13)+CHR(10)
THIS.afIeldlist[lnX, 11] = lcFieldcaption
ENDFOR
ELSE
FOR lnX = 1 TO THIS.nfIeldcount
THIS.afIeldlist[lnX, 11] = '<TR><TD VALIGN=TOP BGCOLOR="'+ ;
THIS.chEaderbgcolor+'"><b><font color="'+ ;
THIS.chEadercolor+'">'+ ;
PROPER(STRTRAN(THIS.afIeldlist(lnX,1), "_", ;
" "))+'</font></b></TD>'+CHR(13)+CHR(10)
ENDFOR
ENDIF
FOR lnX = 1 TO THIS.nfIeldcount
lcFieldName = THIS.afIeldlist(lnX,1)
lcFieldtype = THIS.afIeldlist(lnX,2)
lnFieldwidth = THIS.afIeldlist(lnX,3)
lcFieldcaption = THIS.afIeldlist(lnX,11)
lvValue = EVALUATE(lcFieldName)
lcRow = lcFieldcaption
DO CASE
CASE lcFieldtype="C"
lcRow = lcRow+'<td><input type="text" name="'+ ;
lcFieldName+'" size='+ ;
TRANSFORM(lnFieldwidth)+' value="'+lvValue+ ;
'"></td>'
CASE lcFieldtype="M"
lcRow = lcRow+ ;
'<TD><textArea wrap=virtual cols=55 rows=5 name="'+ ;
lcFieldName+'">'+lvValue+'</textarea></TD>'
CASE lcFieldtype$"NFBIY"
lcRow = lcRow+'<td><input type="text" name="'+ ;
lcFieldName+'" size='+TRANSFORM(lnFieldwidth+ ;
1)+' value="'+TRANSFORM(lvValue)+'"></td>'
CASE lcFieldtype="L"
lcRow = lcRow+'<td><input type="text" name="'+ ;
lcFieldName+'" size=1 value="'+IIF(lvValue, ;
"T", "F")+'"></td>'
CASE lcFieldtype="D"
lcRow = lcRow+'<td><input type="text" name="'+ ;
lcFieldName+'" size=10 value="'+ ;
TRANSFORM(lvValue)+'"></td>'
CASE lcFieldtype="T"
lcRow = lcRow+'<td><input type="text" name="'+ ;
lcFieldName+'" size=15 value="'+ ;
LOWER(TRANSFORM(lvValue))+'"></td>'
ENDCASE
THIS.ohTml.WRITE(lcRow+"</tr>"+CHR(13)+CHR(10))
ENDFOR
IF .NOT. EMPTY(lcKeyvalue)
THIS.ohTml.WRITE('<input type="hidden" name="'+THIS.ckEyfield+ ;
'" value="'+TRANSFORM(lcKeyvalue)+'">')
ENDIF
THIS.ohTml.WRITE("</TABLE>"+IIF(THIS.lcEntertable, '</CENTER>'+ ;
CHR(13)+CHR(10), "")+CHR(13)+CHR(10))
ENDPROC
*
PROCEDURE SaveRecord
LOCAL lnX, lcFieldcaption, lnFieldcount, lcFieldtype, lcFieldName
FOR lnX = 1 TO THIS.nfIeldcount
lcFieldName = THIS.afIeldlist(lnX,1)
lcFieldtype = THIS.afIeldlist(lnX,2)
IF .NOT. REQUEST.isFormvar(lcFieldName)
LOOP
ENDIF
lvValue = REQUEST.FORM(lcFieldName)
DO CASE
CASE lcFieldtype="C" .OR. lcFieldtype="M"
REPLACE &lcFieldName WITH lvValue
CASE lcFieldtype$"NFBIY"
REPLACE &lcFieldName WITH VAL(lvValue)
CASE lcFieldtype="L"
REPLACE &lcFieldName WITH IIF(lvValue="T",.T.,.F.)
CASE lcFieldtype="D"
REPLACE &lcFieldName WITH CTOD(lvValue)
CASE lcFieldtype="T"
REPLACE &lcFieldName WITH CTOT(lvValue)
ENDCASE
ENDFOR
ENDPROC
*
PROCEDURE EditTable
LOCAL lcFields
lcAction = UPPER(REQUEST.quErystring("Action"))
lcId = REQUEST.quErystring("ID")
DO CASE
CASE lcAction="EDIT" .OR. lcAction="ADD"
IF .NOT. THIS.laLlowadd
THIS.ohTml.WRITE( ;
"Sorry! Adding is not allowed at this time..." ;
)
RETURN
ENDIF
IF lcAction="ADD"
llAdd = .T.
ELSE
llAdd = .F.
ENDIF
loResponse = THIS.ohTml
lcKeyfield = THIS.ckEyfield
IF llAdd
LOCATE FOR .F.
loResponse.WRITE([<form action="] + THIS.cbAseurl + [&Action=SaveNew&ID=] + lcId + [" method="POST">] +CHR(13)+CHR(10))
ELSE
IF THIS.ckEytype="N"
LOCATE FOR &lcKeyfield = VAL(lcId)
ELSE
LOCATE FOR &lcKeyfield = lcId
ENDIF
IF .NOT. FOUND()
loResponse.stAndardpage( ;
"Couldn't edit record. Invalid Key Field...", , ;
"NONE")
RETURN
ENDIF
loResponse.WRITE([<form action="] + THIS.cbAseurl + [&Action=Save&ID=] + lcId + [" method="POST">] +CHR(13)+CHR(10))
ENDIF
loResponse.WRITE([<form action="] + THIS.cbAseurl + [&Action=SaveNew&ID=] + lcId + [" method="POST">] +CHR(13)+CHR(10))
loResponse.WRITE( ;
'<input type="submit" name="btnSubmit" value=" Save " ACCESSKEY="S"><p>' ;
)
THIS.EditRecord()
loResponse.WRITE( ;
'<p><input type="submit" name="btnSubmit" value=" Save ">' ;
)
loResponse.WRITE('</form>'+CHR(13)+CHR(10))
CASE lcAction="SHOW"
loResponse = THIS.ohTml
lcKeyfield = THIS.ckEyfield
IF THIS.ckEytype="N"
LOCATE FOR &lcKeyfield = VAL(lcId)
ELSE
LOCATE FOR &lcKeyfield = lcId
ENDIF
IF .NOT. FOUND()
loResponse.stAndardpage( ;
"Couldn't edit record. Invalid Key Field...", ,"NONE")
RETURN
ENDIF
THIS.ShowRecord()
CASE lcAction="SAVE"
loResponse = THIS.ohTml
lcKeyfield = THIS.ckEyfield
IF lcAction="SAVENEW"
APPEND BLANK
ELSE
IF THIS.ckEytype="N"
LOCATE FOR &lcKeyfield = VAL(lcId)
ELSE
LOCATE FOR &lcKeyfield = lcId
ENDIF
IF .NOT. FOUND()
loResponse.erRormsg( ;
"Couldn't edit record. Invalid Key Field...")
RETURN
ENDIF
ENDIF
THIS.SaveRecord()
reSponse.reDirect(THIS.cbAseurl)
CASE lcAction="DELETE"
lcKeyfield = THIS.ckEyfield
IF .NOT. THIS.laLlowdelete
THIS.ohTml.WRITE( ;
"Sorry! Deleting is not allowed at this time..." ;
)
RETURN
ENDIF
IF THIS.ckEytype="N"
LOCATE FOR &lcKeyfield = VAL(lcId)
ELSE
LOCATE FOR &lcKeyfield = lcId
ENDIF
IF .NOT. FOUND()
THIS.ohTml.stAndardpage( ;
"Couldn't delete record. Invalid Key Field...")
RETURN
ENDIF
DELETE
reSponse.reDirect(THIS.cbAseurl)
OTHERWISE
IF THIS.laLlowadd
THIS.ohTml.WRITE('<a href="'+THIS.cbAseurl+ ;
'Action=Add">Add a new record</a><p>')
ENDIF
lcKeyfield = THIS.ckEyfield
IF EMPTY(THIS.ctAblefieldlist)
lcFields = "*"
ELSE
lcFields = THIS.ctAblefieldlist
ENDIF
lcOrder = IIF( .NOT. EMPTY(THIS.ctAblesortcolumn), ;
"ORDER BY "+THIS.ctAblesortcolumn, "")
SELECT &lcFields, PADR([<a href="] + THIS.cbAseurl + [Action=SHOW&ID=]+TRANS(&lcKeyfield)+[">Show</a> | <a href="] + THIS.cbAseurl + [Action=EDIT&Id=]+TRANS(&lcKeyfield)+[">Edit</a>] + IIF(THIS.laLlowdelete,[ | <a href="] + THIS.cbAseurl + [Action=DELETE&Id=]+TRANS(&lcKeyfield)+[">Delete</a>],[]), 254) AS Action FROM ALIAS() &lcOrder INTO CURSOR __TxQuery
THIS.nfIeldcount = AFIELDS(THIS.afIeldlist)
lcOldtablefieldlist = THIS.ctAblefieldlist
THIS.ctAblefieldlist = ""
THIS.ShowCursor()
THIS.ctAblefieldlist = lcOldtablefieldlist
USE IN __TxQuery
ENDCASE
ENDPROC
*
FUNCTION GetOutput
IF .NOT. ISNULL(THIS.ohTml)
RETURN THIS.ohTml.GetOutput()
ENDIF
RETURN ""
ENDFUNC
*
PROCEDURE paGefilter
LOCAL lnX, lcOutput, lcStyle, lnPages, lnReclow, lnHighrec, ;
lnEndpage, lnStartpage, lcNolinkstyle, lnReccount
IF EMPTY(THIS.npAge_showpage)
THIS.npAge_showpage = VAL(REQUEST.quErystring("PAGE"))
IF THIS.npAge_showpage<1
THIS.npAge_showpage = 1
ENDIF
ENDIF
lnReccount = RECCOUNT()
IF lnReccount<=THIS.npAge_itemsperpage
RETURN
ENDIF
THIS.cpAge_oldalias = ALIAS()
lnPages = lnReccount/THIS.npAge_itemsperpage
IF INT(lnPages)<lnPages
lnPages = INT(lnPages)+1
THIS.npAge_totalpages = lnPages
ELSE
THIS.npAge_totalpages = INT(lnPages)
ENDIF
IF THIS.npAge_showpage<lnPages
THIS.npAge_nextpage = THIS.npAge_showpage+1
ELSE
THIS.npAge_nextpage = 0
ENDIF
IF THIS.npAge_showpage>1
THIS.npAge_prevpage = THIS.npAge_showpage-1
ELSE
THIS.npAge_prevpage = 0
ENDIF
IF THIS.npAge_showpage=0
THIS.npAge_showpage = 1
ENDIF
IF THIS.npAge_showpage<=lnPages
lnReclow = (THIS.npAge_showpage-1)*THIS.npAge_itemsperpage+1
lnHighrec = THIS.npAge_showpage*THIS.npAge_itemsperpage
SELECT * FROM (THIS.cpAge_oldalias) WHERE RECNO()>=lnReclow ;
AND RECNO()<=lnHighrec INTO CURSOR _TXQuery
ENDIF
IF .NOT. EMPTY(THIS.cpAge_pageurl)
IF lnPages<=10
lnStartpage = 1
lnEndpage = lnPages
ELSE
lnStartpage = THIS.npAge_showpage-4
IF lnStartpage<1
lnStartpage = 1
ENDIF
lnEndpage = THIS.npAge_showpage+5
IF lnEndpage>lnPages
lnEndpage = lnPages
ENDIF
ENDIF
lcOutput="Pages: &nbsp;"
lcStyle = ' STYLE="color:'+THIS.chEadercolor+ ;
';text-decoration:none underline"'
lcNolinkstyle = ' STYLE="color:'+THIS.chEadercolor+';"'
FOR lnX = lnStartpage TO lnEndpage
IF lnX=THIS.npAge_showpage
lcOutput = lcOutput+' <b '+lcNolinkstyle+'>'+ ;
TRANSFORM(lnX)+'</b> '
ELSE
lcOutput = lcOutput+'<a href="'+THIS.cpAge_pageurl+ ;
'Page='+TRANSFORM(lnX)+'"'+lcStyle+'>'+ ;
TRANSFORM(lnX)+'</a> '
ENDIF
ENDFOR
lcOutput=lcOutput + [<b> &nbsp;&nbsp;&nbsp;&nbsp;<a href="] + THIS.cpAge_pageurl + [Page=1"] +lcStyle + [>1</a>]
lcOutput=lcOutput + [..<a href="] + THIS.cpAge_pageurl + [Page=] +TRANSFORM(lnPages) + ["] +lcStyle + [>] + TRANSFORM(lnPages) + [</a>&nbsp;&nbsp;]
IF THIS.npAge_prevpage<>0
lcOutput = lcOutput+' <a href="'+THIS.cpAge_pageurl+ ;
'Page='+TRANSFORM(THIS.npAge_prevpage)+'"'+ ;
lcStyle+'>Prev</a>'
ELSE
lcOutput=lcOutput + [ &nbsp; </b><span ] +lcNolinkstyle + [>Prev</span><b>]
ENDIF
IF THIS.npAge_nextpage<>0
lcOutput=lcOutput + [ &nbsp;<a href="] + THIS.cpAge_pageurl + [Page=] +TRANSFORM(THIS.npAge_nextpage) + ["] +lcStyle + [>Next</a>]
ELSE
lcOutput=lcOutput + [ &nbsp;</b><span ] +lcNolinkstyle + [>Next</span><b>]
ENDIF
THIS.cpAge_linkhtml=lcOutput + "&nbsp;</b>"
ENDIF
RETURN
ENDPROC
*
ENDDEFINE
*

266
COMUN/programe/blat.prg Normal file
View File

@@ -0,0 +1,266 @@
*!* 23.06.2014
*!* marius.mutu
*!* SendViaBlat: Am pus calea copleta catre blat.dll
*******************************
*!* Example of using SendViaBLAT
*******************************
#Define PRIORITYHIGH 1
#Define PRIORITYLOW 0
*!* SET PROCEDURE TO blat.prg ADDITIVE
#If .F.
Dimension aryAttach(2)
aryAttach(1) = "G:\conpress_ziare\PUBLICATIISERVER\log\server_PUBLICATIISERVER_20090810.log" && change to an actual file that exists on your computer
aryAttach(2) = "G:\conpress_ziare\PUBLICATIISERVER\log\serverupdate_PUBLICATIISERVER_20090810.log" && change to an actual file that exists on your computer
Local lcFrom, lcTo, lcSubject, lcBody, lcCC, lcBCC, lcMailServer, lcUserName, lcPassword, lnPort, lnPriority, llHTMLFormat, lcErrReturn
lcFrom = "publicatiiserver@conpressgroup.ro"
lcTo = "marius.mutu@romfast.ro"
lcSubject = "Hey Have You Tried VFP Email?"
*!* Sending the body in HTML format
llHTMLFormat = .T. && change to .F. to send plain text message
lcBody = "<a href='http://www.sweetpotatosoftware.com/SPSBlog/default.aspx'>" + ;
"Hey Have You Tried VFP Email?" + ;
"</a>"
lcCC = "mmarius28@yahoo.com"
lcBCC = "mmarius28@google.com"
lcMailServer = "romfast.ro" && my SMTP Server
lnPort = 25 && default SMTP Server port
lcUserName = "marius.mutu" && my SMTP username
lcPassword = "parola" && my SMTP password
lnPriority = PRIORITYHIGH
SendViaBLAT(@lcErrReturn, lcFrom, lcTo, lcSubject, lcBody, @aryAttach, lcCC, lcBCC, lcMailServer, lnPort, lcUserName, lcPassword, lnPriority, llHTMLFormat)
If Empty(lcErrReturn)
Messagebox("'" + lcSubject + "' sent successfullly.", 64, "Send email via BLAT")
Else
Messagebox("'" + lcSubject + "' failed to be sent. Reason:" + Chr(13) + lcErrReturn, 64, "Send email via BLAT")
Endif
*!* BlatEmail.SendViaBlat RETURNS .T. IF SUCCES
*!* BlatEmail.IsError
*!* BlatEmail.ErrorMessage
loBlatEmail = Createobject("BlatEmail")
loBlatEmail.From = 'my@server.ro'
loBlatEmail.To = 'marius.mutu@romfast.ro'
loBlatEmail.Subject = 'Subject'
loBlatEmail.HtmlFormat = .T.
loBlatEmail.Body = 'Body'
loBlatEmail.CC = 'marius.mutu@yahoo.com'
loBlatEmail.BCC = ''
loBlatEmail.Files = "c:\file1.txt,c:\file2.txt"
loBlatEmail.MailServer = 'mail.romfast.ro'
loBlatEmail.Port = 25
loBlatEmail.UserName = 'marius.mutu'
loBlatEmail.Password = 'parola'
llReturn = loBlatEmail.SendViaBLAT()
If llReturn
Messagebox("'" + loBlatEmail.Subject + "' sent successfullly.", 64, "Send email via BLAT")
Else
Messagebox("'" + loBlatEmail.Subject + "' failed to be sent. Reason:" + Chr(13) + loBlatEmail.ErrorMessage, 64, "Send email via BLAT")
Endif
#Endif
Define Class BlatEmail As Custom
From = ''
To = ''
Subject = ''
HtmlFormat = .T.
Body = ''
CC = ''
BCC = ''
MailServer = ''
Port = 25
UserName = ''
Password = ''
Priority = PRIORITYLOW
Files = ''
ErrorMessage = ''
ISERROR = .F.
*******************************************
Procedure SetAttachment
Lparameters tcFile
This.Files = This.Files + Iif(!Empty(This.Files), [,], []) + tcFile
Endproc && SetAttachment
*******************************************
Procedure ResetAttachments
This.Files = ''
Endproc && ResetAttachments
Procedure SendViaBLAT
Local lcErrReturn, lcFrom, lcTo, lcSubject, lcBody, lcCC, lcBCC, lcMailServer, lnPort, lcUserName, lcPassword, lnPriority, llHTMLFormat
lcErrReturn = ''
lcFrom = This.From
lcTo = This.To
lcSubject = This.Subject
lcBody = This.Body
lcCC = This.CC
lcBCC = This.BCC
lcMailServer= This.MailServer
lnPort = This.Port
lcUserName = This.UserName
lcPassword = This.Password
lnPriority = This.Priority
llHTMLFormat = This.HtmlFormat
lcFiles = This.Files
SendViaBLAT(@lcErrReturn, lcFrom, lcTo, lcSubject, lcBody, lcFiles, lcCC, lcBCC, lcMailServer, lnPort, lcUserName, lcPassword, lnPriority, llHTMLFormat)
This.ISERROR = !Empty(lcErrReturn)
This.ErrorMessage = lcErrReturn
Return !This.ISERROR
Endproc
Enddefine && BlatEmail
*******************************************
Procedure SendViaBLAT(tcReturn, tcFrom, tcTo, tcSubject, tcBody, tcFiles, tcCC, tcBCC, tcMailServer, tnPort, tcUserName, tcPassword, tnPriority, tlHtmlFormat)
*******************************************
Local lcBlatParam, lcBodyFile, lnCountAttachments, lnResult, loError As Exception, lcFiles
lcBodyFile = ""
Try
*!* Include full path in Declare, such as "C:\Blat240\full\blat.dll"
*!* or make sure that blat.dll is included in the system's PATH variable
lcBlatPath = ADDBS(m.dirgen) + [COMUNROA\blat.dll]
Declare Integer Send In (m.lcBlatPath) String cParam
lcBodyFile = Addbs(Sys(2023)) + Sys(2015) + ".txt"
Strtofile(tcBody, lcBodyFile, 0) && body is placed in a text file to be sent by BLAT
lcBlatParam = GetShortPath(lcBodyFile)
If Type("tcTo") = "C"
lcBlatParam = lcBlatParam + " -to " + Alltrim(tcTo)
Endif
If Type("tcFrom") = "C"
lcBlatParam = lcBlatParam + " -f " + Alltrim(tcFrom)
Endif
If Type("tcCC") = "C" And !Empty(tcCC)
lcBlatParam = lcBlatParam + " -cc " + Alltrim(tcCC)
Endif
If Type("tcBCC") = "C" And !Empty(tcBCC)
lcBlatParam = lcBlatParam + " -bcc " + Alltrim(tcBCC)
Endif
If Type("tcSubject") = "C" And !Empty(tcSubject)
lcBlatParam = lcBlatParam + [ -s "] + Alltrim(tcSubject) + ["]
Endif
If Type("tcMailserver") = "C" And !Empty(tcMailServer)
lcBlatParam = lcBlatParam + " -server " + Alltrim(tcMailServer)
Endif
If Type("tnPort") = "N" And !Empty(tnPort)
lcBlatParam = lcBlatParam + ":" + Transform(tnPort)
Endif
If Type("tcUsername") = "C" And !Empty(tcUserName)
lcBlatParam = lcBlatParam + " -u " + Alltrim(tcUserName)
Endif
If Type("tcPassword") = "C" And !Empty(tcPassword)
lcBlatParam = lcBlatParam + " -pw " + Alltrim(tcPassword)
Endif
If Type("tnPriority") = "N" And Between(tnPriority, 0, 1)
lcBlatParam = lcBlatParam + " -priority " + Transform(tnPriority)
Endif
If Type("tlHTMLFormat") = "L" And tlHtmlFormat
lcBlatParam = lcBlatParam + " -html"
Endif
*!* If Type("taFiles", 1) = "A"
*!* lcBlatParam = lcBlatParam + " -attach "
*!* For lnCountAttachments = 1 To Alen(taFiles)
*!* lcBlatParam = lcBlatParam + GetShortPath(Alltrim(taFiles(lnCountAttachments))) + ","
*!* Endfor
*!* lcBlatParam = Left(lcBlatParam, Len(lcBlatParam) - 1) && Remove Extra Comma
*!* Endif
If Vartype(tcFiles) = "C" And !Empty(tcFiles)
tcFiles = Strtran(tcFiles, [;], [,])
lcFiles = ""
For lnCountAttachments = 1 To Getwordcount(tcFiles,",")
lcFile = GetShortPath(Alltrim(Getwordnum(tcFiles,lnCountAttachments,",")))
If File(lcFile)
lcFiles = lcFiles + GetShortPath(Alltrim(Getwordnum(tcFiles,lnCountAttachments,","))) + ","
Endif
Endfor
If !Empty(lcFiles)
lcBlatParam = lcBlatParam + " -attach "
lcBlatParam = lcBlatParam + lcFiles
lcBlatParam = Left(lcBlatParam, Len(lcBlatParam) - 1) && Remove Extra Comma
Endif
Endif
lnResult = Send(Alltrim(lcBlatParam))
If lnResult != 0
Do Case
Case lnResult = -2
Throw "The server actively denied our connection./The mail server doesn't like the sender name. "
Case lnResult = -1
Throw "Unable to open SMTP socket" Or ;
"SMTP get line did not return 220" Or ;
"command unable to write to socket" Or ;
"Server does not like To: address" Or ;
"Mail server error accepting message data."
Case lnResult = 1
Throw "File name (message text) not given" Or ;
"Bad argument given"
Case lnResult = 2
Throw "File (message text) does not exist"
Case lnResult = 3
Throw "Error reading the file (message text) or attached file"
Case lnResult = 4
Throw "File (message text) not of type FILE_TYPE_DISK "
Case lnResult = 5
Throw "Error Reading File (message text)"
Case lnResult = 12
Throw "-server or -f options not specified and not found in registry"
Case lnResult = 13
Throw "Error opening temporary file in temp directory"
Otherwise
Throw "Unknown Error"
Endcase
Endif
Catch To loError
tcReturn = [Error: ] + Str(loError.ErrorNo) + Chr(13) + ;
[LineNo: ] + Str(loError.Lineno) + Chr(13) + ;
[Message: ] + loError.Message + Chr(13) + ;
[Procedure: ] + loError.Procedure + Chr(13) + ;
[Details: ] + loError.Details + Chr(13) + ;
[StackLevel: ] + Str(loError.StackLevel) + Chr(13) + ;
[LineContents: ] + loError.LineContents
Finally
Clear Dlls "Send"
If File(lcBodyFile)
Erase (lcBodyFile)
Endif
Endtry
Endproc
****************************************
Function GetShortPath
****************************************
Lparameters lcFileName
Local lnReturn, lcBuffer
Declare Integer GetShortPathNameA In Win32API As GetShortPathName String, String, Integer
lcBuffer = Space(255)
lnReturn= GetShortPathName(lcFileName, @lcBuffer, 255)
Clear Dlls "GetShortPathName"
Return (Left(lcBuffer, lnReturn))
Endfunc

View File

@@ -0,0 +1,598 @@
*!* 24.07.2009
*!* marius.mutu
*!* cauta_alfa(tcStringCriterii pentru formularul cauta_alfa_form_plus)
*------------------------------------------------------------
* Description: cauta_alfa - cautare generica
* Parameters: tcselect,tcfiltru,tcschema,tcorder,tccoloana,tcTitlu,tcTitluColoana,tcNume_Proc,tl_AllInList,tcFiltruOriginal,tcPrimaColoana, tnPornire, tnTipReturn, tcIdColumn, tlDesktop, tcGroup, tcGridDynamiBackColor
* Return: tnTipReturn = 0 => object (scatter name pe inregistrarea curenta) ; tnTipReturn = 1 => xml (din inregistrarile selectate)
* Use:
*------------------------------------------------------------
* Id Date By Description
* 1 23/06/2006 marius.mutu Initial Creation
* 2 23/06/2006 marius.mutu TipReturn - se presupune ca tcSelect contine o coloana <ales>
* 19/05.2021 liana.neagu adaugare tcLocate
*------------------------------------------------------------
Procedure cauta_alfa
Parameters tcselect,tcfiltru,tcschema,tcorder,tccoloana,tcTitlu,tcTitluColoana, ;
tcNume_Proc,tl_AllInList,tcFiltruOriginal,tcPrimaColoana, tnPornire, tnTipReturn, ;
tcIdColumn, tlDesktop, tcGroup, tcGridDynamicBackColor, tcGridToolTip, tlModParam, tcStringCriterii, ;
tcProceduraVerifica, tcProceduraCopiaza,tcLocate
&& tcStringCriterii : pentru butonul de cautare but_Start_criterii (daca este completat parametrul se foloseste cauta_alfa_form_plus)
&& tnPornire: 1-incepe cu..., 2..... 6-toate
Local llModParam, lnRecc, lcCursorXML, lcIdColumn, llDesktop, lcGroup,lorec
llModParam = .F.
If Empty(tnTipReturn)
tnTipReturn = 0
Endif
If !Empty(tcIdColumn)
lcIdColumn = tcIdColumn
Else
lcIdColumn = "id"
Endif
llDesktop = tlDesktop
Private pcAles
pcAles = ""
Local lccoloana,lcTitlu,pnbuton,lcPrimaColoana
Private deca_baza1,oForm_cautare,oReturnScattObj
Store "" To deca_baza1
Local lcCamp,lcCursor,lcCursort
Store "" To lccoloana,lcPrimaColoana,lcCamp,lcCursor,lcCursort
lccoloana = tccoloana
lcTitluColoana = tcTitluColoana
lcTitlu = tcTitlu
lcSelect = Upper(Alltrim(tcselect))
If Empty(tcPrimaColoana)
lcPrimaColoana=""
Else
lcPrimaColoana=Alltrim(tcPrimaColoana)
Endif
If Empty(tl_AllInList) Or Type('tl_AllInList') # 'L'
ll_AllInList = .F.
Else
ll_AllInList = tl_AllInList
Endif
If Empty(tcFiltruOriginal) Or Type('tcFiltruOriginal') # 'C'
lcFiltOriginal = ''
Else
lcFiltOriginal = tcFiltruOriginal
Endif
If Empty(tcNume_Proc)
lcNume_Proc = ""
Else
lcNume_Proc = Upper(Alltrim(tcNume_Proc))
**caut tip partener daca sunt in cazul nom. de parteneri:
lnPosComma = At(';', lcNume_Proc)
If lnPosComma > 0
lcNume_Proc = Left(lcNume_Proc, lnPosComma - 1) + [_nou with ] + ;
ALLTRIM(Substr(lcNume_Proc, lnPosComma + 1))
Else
lcNume_Proc = lcNume_Proc + "_nou"
Endif
If Left(lcNume_Proc,1) = 'V'
lcNume_Proc = Substr(lcNume_Proc,2)
Endif
Endif
lnPos = At('WHERE',lcSelect)
lnpos2 = Max(Rat(['],lcSelect),Rat(["],lcSelect))
If lnpos2 = 0
lnpos2 = Len(lcSelect)+1
Endif
If !Inlist(Left(lcSelect,1),['],["],"[")
llModParam = .T.
Endif
If lnPos = 0
lcFiltru = ""
*!* llModParam = .T.
Else
If llModParam
lcFiltru = ""
Else
lcFiltru = Alltrim(Substr(lcSelect,lnPos + 6,lnpos2-lnPos-6))
*!* llModParam = .F.
Endif
Endif
lcGroup = Iif(Empty(tcGroup) Or Type('tcGroup') <> 'C', '', tcGroup)
*!* 24.07.2009
If Empty(tcStringCriterii)
lcStringCriterii = ""
Else
lcStringCriterii = Alltrim(tcStringCriterii)
ENDIF
*!* 24.07.2009 ^
lcCursor=Sys(2015)
lcCursort = Alltrim(lcCursor) + 't'
If ll_AllInList = .T.
&& sa adauge "<Toate>" in cursor
gencursor('deca_baza1',lcCursort,tcselect,tcfiltru,tcschema,tcorder,.F.,lcGroup, llModParam, lcFiltOriginal)
deca_baza1.ca_baza1.afisare()
Select *, 0 As ales From &lcCursort Where .F. Into Cursor &lcCursor Readwrite
Select (lcCursor)
If Occurs([,],tccoloana) > 0
lcField = Left(tccoloana,At([,],tccoloana)-1)
lcCamp = lcCursort + '.' + lcField
*IF TYPE('cursor_temp.&lcField')# 'C'
If Type(lcCamp) # 'C'
lcField = Field(1)
Endif
Else
lcField = tccoloana
lcCamp = lcCursort + '.' + lcField
Endif
*IF (RECCOUNT(lccursort)>0) AND TYPE('cursor_temp.&lcField')= 'C'
If (Reccount(lcCursort)>0) And Type(lcCamp)= 'C'
Insert Into &lcCursor (&lcField) Values("<TOATE INREGISTRARILE>")
Endif
Select (lcCursor)
*APPEND FROM DBF("cursor_temp")
Append From Dbf(lcCursort)
Go Top
Use In (lcCursort)
Else
gencursor('deca_baza1',lcCursor,tcselect,tcfiltru,tcschema,tcorder,.F.,lcGroup, llModParam ,lcFiltOriginal)
deca_baza1.ca_baza1.afisare()
Endif
*!* modificare 30.11.2006
If Type("poRec") = "O"
lorec = poRec
Endif
*!* modificare 30.11.2006 ^
lnPornire = tnPornire
pnbuton=1
Select (lcCursor)
lnRecc = Reccount()
** v adaugare 19.05.2021 - Liana - Sa se pozitioneze pe o anumita inregistrare
IF !EMPTY(tcLocate)
Select (lcCursor)
LOCATE FOR &tcLocate
ENDIF
*!* 24.07.2009
DO CASE
CASE !EMPTY(lcStringCriterii)
oForm_cautare=Createobject('cauta_alfa_form_plus',lcCursor,lcNume_Proc,lcTitluColoana,;
lccoloana,ll_AllInList,lcPrimaColoana, lnPornire, tcGridDynamicBackColor, tcGridToolTip, lcStringCriterii)
CASE llDesktop
oForm_cautare=Createobject('cauta_alfa_form_desktop',lcCursor,lcNume_Proc,lcTitluColoana,;
lccoloana,ll_AllInList,lcPrimaColoana, lnPornire, tcGridDynamicBackColor, tcGridToolTip, ;
tcProceduraVerifica, tcProceduraCopiaza)
OTHERWISE
oForm_cautare=Createobject('cauta_alfa_form',lcCursor,lcNume_Proc,lcTitluColoana,lccoloana,;
ll_AllInList,lcPrimaColoana, lnPornire, tcGridDynamicBackColor, tcGridToolTip, ;
tcProceduraVerifica, tcProceduraCopiaza)
ENDCASE
*!* IF llDesktop
*!* oForm_cautare=Createobject('cauta_alfa_form_desktop',lcCursor,lcNume_Proc,lcTitluColoana,;
*!* lccoloana,ll_AllInList,lcPrimaColoana, lnPornire, tcGridDynamicBackColor, tcGridToolTip)
*!* ELSE
*!* oForm_cautare=Createobject('cauta_alfa_form',lcCursor,lcNume_Proc,lcTitluColoana,lccoloana,;
*!* ll_AllInList,lcPrimaColoana, lnPornire, tcGridDynamicBackColor, tcGridToolTip)
*!* ENDIF
*!* 24.07.2009 ^
With oForm_cautare
.crs_cursor = lcCursor
.crs_cursort = lcCursort
If !Empty(lcFiltru)
.cfiltru_original = lcFiltru
Endif
.Lb_titlu_alb_b121.Caption=lcTitlu
.lAles = Iif(tnTipReturn = 1, .T., .F.)
If .lAles
.cAles = Replicate(" ",lnRecc)
Endif
.cIdColumn = lcIdColumn
Endwith
oForm_cautare.Show()
*!* modificare 30.11.2006
If Type("lorec") = "O"
poRec = lorec
Endif
*!* modificare 30.11.2006 ^
lcCursorXML = ""
Select (lcCursor)
If gnbuton=1
Do Case
Case tnTipReturn = 0
Scatter Name oReturnScattObj Memo
Otherwise
Select * From (lcCursor) With (Buffering = .T.) Where Substr(pcAles,Recno(),1) = 'X' ;
INTO Cursor crsReturnAlfa
Cursortoxml("crsReturnAlfa", "lcCursorXML", 2, 0+2+8, 0, "1")
Use In crsReturnAlfa
Endcase
Else
Do Case
Case tnTipReturn = 0
Scatter Name oReturnScattObj Blank
Otherwise
lcCursorXML = ""
Endcase
Endif
Release oForm_cautare
Use In (lcCursor)
Do Case
Case tnTipReturn = 0
Return oReturnScattObj
Otherwise
Return lcCursorXML
Endcase
Endproc && cauta_alfa
***********************************************************************************************************************
Procedure cauta_alfa_vfp
Parameters tcselect,tcfiltru,tcschema,tcorder,tccoloana,tcTitlu,tcTitluColoana,tcNume_Proc,tl_AllInList,tcFiltruOriginal,tnCriteriu,tcFiltruAfisat
*!* modificare 04.08.2011 : am adaugat tnCriteriu, tcFiltruAfisat
Local llModParam
llModParam = .F.
Private lccoloana,lcTitlu,pnbuton,lorec
Store "" To lccoloana
lccoloana = tccoloana
lcTitluColoana = tcTitluColoana
lcTitlu = tcTitlu
lcSelect = Upper(Alltrim(tcselect))
If Empty(tl_AllInList) Or Type('tl_AllInList') # 'L'
ll_AllInList = .F.
Else
ll_AllInList = tl_AllInList
Endif
*!* modificare 14.12.2011
*!* If Empty(tcFiltruOriginal) Or Type('tcFiltruOriginal') # 'C'
*!* lcFiltOriginal = ''
*!* Else
*!* lcFiltOriginal = tcFiltruOriginal
*!* Endif
*!* modificare 14.12.2011 ^
If Empty(tcNume_Proc)
lcNume_Proc = ""
Else
lcNume_Proc = Upper(Alltrim(tcNume_Proc))
*!* **caut tip partener daca sunt in cazul nom. de parteneri:
*!* If (Occurs("ID_TIP_PART",lcSelect)>0)
*!* lnId_tip_part_gasit = Val( Substr(lcSelect,At("= ",lcSelect)+1) )
*!* lcNume_Proc = lcNume_Proc + "_nou with " + Alltrim(Str(lnId_tip_part_gasit))
*!* Else
*!* lcNume_Proc = lcNume_Proc + "_nou"
*!* Endif
*!* If Left(lcNume_Proc,1) = 'V'
*!* lcNume_Proc = Substr(lcNume_Proc,2)
*!* Endif
Endif
lnPos = At('WHERE',lcSelect)
lnpos2 = Max(Rat(['],lcSelect),Rat(["],lcSelect))
If lnpos2 = 0
lnpos2 = Len(lcSelect)+1
Endif
&& 11.07.2007
If !Inlist(Left(lcSelect,1),['],["],"[")
llModParam = .T.
Endif
If lnPos = 0
lcFiltru = ""
*!* llModParam = .T.
Else
If llModParam
lcFiltru = ""
Else
lcFiltru = Alltrim(Substr(lcSelect,lnPos + 6,lnpos2-lnPos-6))
*!* llModParam = .F.
Endif
Endif
*!* modificare 14.12.2011
If !Empty(tcFiltruOriginal) And Type('tcFiltruOriginal') = 'C'
lcSelect = lcSelect + [ WHERE ] + tcFiltruOriginal
Endif
*!* modificare 14.12.2011 ^
If ll_AllInList = .T. && sa adauge "<Toate>" in cursor
lcSelectTemp=lcSelect+[ into cursor cursor_temp]
&lcSelectTemp
Select * From cursor_temp Where .F. Into Cursor cursor_curent Readwrite
Select cursor_curent
If Occurs([,],tccoloana) > 0
lcField = Left(tccoloana,At([,],tccoloana)-1)
If Type('cursor_temp.&lcField')# 'C'
lcField = Field(1)
Endif
Else
lcField = tccoloana
Endif
If (Reccount('cursor_temp')>0) And Type('cursor_temp.&lcField')= 'C'
Insert Into cursor_curent(&lcField) Values("<TOATE INREGISTRARILE>")
Endif
Select cursor_curent
Append From Dbf('cursor_temp')
Go Top
Use In cursor_temp
Select cursor_curent
Else
lcSelect=lcSelect+[ into cursor cursor_curent]
&lcSelect
Endif
*!* modificare 30.11.2006
If Type("poRec") = "O"
lorec = poRec
Endif
*!* modificare 30.11.2006 ^
Select cursor_curent
*!* modificare 04.08.2011 : am adaugat tnCriteriu, tcFiltruAfisat
oForm_cautare=Createobject('cauta_alfa_form_vfp',lcNume_Proc,lcTitluColoana,lccoloana,ll_AllInList,tnCriteriu,tcFiltruAfisat)
pnbuton=1
oForm_cautare.Lb_titlu_alb_b121.Caption=lcTitlu
oForm_cautare.Show()
*!* modificare 30.11.2006
If Type("lorec") = "O"
poRec = lorec
Endif
*!* modificare 30.11.2006 ^
Select cursor_curent
If pnbuton=1
Scatter Name oReturnScattObj Memo
Else
Scatter Name oReturnScattObj Blank
Endif
Release oForm_cautare
**release
Use In cursor_curent
**Release deca_baza1
Return oReturnScattObj
Endproc && cauta_alfa_vfp
***********************************************************************************************************************
Procedure cauta_alfa_gs
Parameters tcselect,tcfiltru,tcschema,tcorder,tccoloana,tcTitlu,tcTitluColoana,tcNume_Proc,tl_AllInList,tcFiltruOriginal,tcPrimaColoana, tnPornire, tnTipReturn, tcIdColumn, tlDesktop, toValoarePropusa
&& toValoarePropusa = valoarea cu care se completeaza textboxul de la cautare
&& tnPornire: 1-incepe cu..., 2..... 6-toate
Local llModParam, lnRecc, lcCursorXML, lcIdColumn, llDesktop,lorec
llModParam = .F.
If Empty(tnTipReturn)
tnTipReturn = 0
Endif
If !Empty(tcIdColumn)
lcIdColumn = tcIdColumn
Else
lcIdColumn = "id"
Endif
llDesktop = tlDesktop
Private pcAles
pcAles = ""
Local lccoloana,lcTitlu,pnbuton,lcPrimaColoana
Private oForm_cautare,oReturnScattObj,deca_baza1
Store "" To deca_baza1
Local lcCursor
Store "" To lccoloana,lcPrimaColoana,lcCamp,lcCursor,lcCursort
lcSchema = tcschema
lcNumeColoane = Strtran(tccoloana,[,],[;])
lcTitluColoane = tcTitluColoana
lcTitlu = tcTitlu
lcSelect = Upper(Alltrim(tcselect))
If Empty(tcPrimaColoana)
lcPrimaColoana=""
Else
lcPrimaColoana=Alltrim(tcPrimaColoana)
Endif
If Empty(tl_AllInList) Or Type('tl_AllInList') # 'L'
ll_AllInList = .F.
Else
ll_AllInList = tl_AllInList
Endif
If Empty(tcFiltruOriginal) Or Type('tcFiltruOriginal') # 'C'
lcFiltruOriginal = ''
Else
lcFiltruOriginal = tcFiltruOriginal
Endif
If Empty(tcNume_Proc)
lcNume_Proc = ""
Else
lcNume_Proc = Upper(Alltrim(tcNume_Proc))
**caut tip partener daca sunt in cazul nom. de parteneri:
lnPosComma = At(';', lcNume_Proc)
If lnPosComma > 0
lcNume_Proc = Left(lcNume_Proc, lnPosComma - 1) + [_nou with ] + Alltrim(Substr(lcNume_Proc, lnPosComma + 1))
Else
lcNume_Proc = lcNume_Proc + "_nou"
Endif
If Left(lcNume_Proc,1) = 'V'
lcNume_Proc = Substr(lcNume_Proc,2)
Endif
Endif
lnPos = At('WHERE',lcSelect)
lnpos2 = Max(Rat(['],lcSelect),Rat(["],lcSelect))
If lnpos2 = 0
lnpos2 = Len(lcSelect)+1
Endif
&& 11.07.2007
If !Inlist(Left(lcSelect,1),['],["],"[")
llModParam = .T.
Endif
If lnPos = 0
lcFiltru = ""
*!* llModParam = .T.
Else
If llModParam
lcFiltru = ""
Else
lcFiltru = Alltrim(Substr(lcSelect,lnPos + 6,lnpos2-lnPos-6))
*!* llModParam = .F.
Endif
Endif
*!* modificare 30.11.2006
If Type("poRec") = "O"
lorec = poRec
Endif
*!* modificare 30.11.2006 ^
lcCursor=Sys(2015)
lcCursort = Alltrim(lcCursor) + 't'
lnPornire = tnPornire
pnbuton=1
*!* IF llDesktop
*!* oForm_cautare=Createobject('cauta_alfa_form_desktop', lcCursor, lcNume_Proc, lcTitlu , lcTitluColoane, lcNumeColoane, lcSelect, lcSchema, lcFiltru, lcFiltruOriginal, lcOrder, ll_AllInList, lnPornire)
*!* ELSE
oForm_cautare=Createobject('cauta_alfa_form_gs', lcCursor, lcNume_Proc, lcTitlu , lcTitluColoane, lcNumeColoane, lcSelect, lcSchema, lcFiltru, lcFiltruOriginal, lcOrder, ll_AllInList, lnPornire, toValoarePropusa)
*!* ENDIF
With oForm_cautare
.lAles = Iif(tnTipReturn = 1, .T., .F.)
If .lAles
.cAles = Replicate(" ",lnRecc)
Endif
Endwith
oForm_cautare.Show()
*!* modificare 30.11.2006
If Type("lorec") = "O"
poRec = lorec
Endif
*!* modificare 30.11.2006 ^
lcCursorXML = ""
Select (lcCursor)
If gnbuton=1
Do Case
Case tnTipReturn = 0
Scatter Name oReturnScattObj Memo
Otherwise
Select * From (lcCursor) With (Buffering = .T.) Where Substr(pcAles,Recno(),1) = 'X' Into Cursor crsReturnAlfa
Cursortoxml("crsReturnAlfa", "lcCursorXML", 2, 0+2+8, 0, "1")
Use In crsReturnAlfa
Endcase
Else
Do Case
Case tnTipReturn = 0
Scatter Name oReturnScattObj Blank
Otherwise
lcCursorXML = ""
Endcase
Endif
Release oForm_cautare
Use In (lcCursor)
Do Case
Case tnTipReturn = 0
Return oReturnScattObj
Otherwise
Return lcCursorXML
Endcase
Endproc && cauta_alfa_gs
***********************************************************************************************************************
Procedure cauta_alfa_hash
Parameters toHash
Local lcSelect,lcFiltru, lcSchema, lcOrder, lccoloana,lcTitlu, lcTitluColoana, lcNumeProc, llAllInList,lcFiltruOriginal,lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn, llDesktop, lcGridToolTip, llModParam
Local loCauta
loCauta = Null
*!* loHash = GetHash()
*!* loHash.SetValue("cSelect", lcSelect)
*!* loHash.SetValue("cFiltru", lcFiltru)
*!* loHash.SetValue("cSchema", lcSchema)
*!* loHash.SetValue("cOrder", lcOrder)
*!* loHash.SetValue("cColoana", lccoloane)
*!* loHash.SetValue("cTitlu", lcTitlu)
*!* loHash.SetValue("cTitluColoana", lcTitluColoane)
*!* loHash.SetValue("cNumeProc", lcNumeProc)
*!* loHash.SetValue("lToateIreg", llToateIreg)
*!* loHash.SetValue("cFiltruOriginal", lcFiltruOriginal)
*!* loHash.SetValue("cPrimaColoana", lcPrimaColoana)
*!* loHash.SetValue("nPornire", lnPornire)
*!* loHash.SetValue("nTipReturn", lnTipReturn)
*!* loHash.SetValue("cIdColumn", lcIdColumn)
*!* loHash.SetValue("cStringCriterii", lcStringCriterii)
*!* toHash.SetValue('lModParam', llModParam)
*!* toHash.SetValue('cProceduraVerifica', lcProceduraVerifica)
*!* toHash.SetValue('cProceduraCopiaza', lcProceduraCopiaza)
lcSelect = toHash.GetValue('cselect')
lcFiltru = toHash.GetValue('cFiltru')
lcSchema = toHash.GetValue('cSchema')
lcOrder = toHash.GetValue('cOrder')
lcGroup = toHash.GetValue('cGroup')
lccoloana = toHash.GetValue('cColoana')
lcTitlu = toHash.GetValue('cTitlu')
lcTitluColoana = toHash.GetValue('cTitluColoana')
lcNumeProc = toHash.GetValue('cNumeProc')
llAllInList = toHash.GetValue('lAllInList')
lcFiltruOriginal = toHash.GetValue('cFiltruOriginal')
lcPrimaColoana = toHash.GetValue('cPrimaColoana')
lnPornire = toHash.GetValue('nPornire')
lnTipReturn = toHash.GetValue('nTipReturn')
lcIdColumn = toHash.GetValue('cIdColumn')
llDesktop = toHash.GetValue('lDesktop')
lcGridDynamicBackColor = toHash.GetValue('cGridDynamicBackColor')
lcGridToolTip = toHash.GetValue('cGridToolTip')
lcStringCriterii = toHash.GetValue('cStringCriterii')
llModParam = toHash.GetValue('lModParam')
If !llModParam And !Inlist(Left(lcSelect,1),['],["],"[")
llModParam = .T.
ENDIF
lcProceduraVerifica = toHash.GetValue('cProceduraVerifica')
lcProceduraCopiaza = toHash.GetValue('cProceduraCopiaza')
loCauta = cauta_alfa(lcSelect,lcFiltru, lcSchema, lcOrder, lccoloana,lcTitlu, lcTitluColoana, lcNumeProc, llAllInList,lcFiltruOriginal,lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn, llDesktop, lcGroup, lcGridDynamicBackColor, lcGridToolTip, llModParam, lcStringCriterii, lcProceduraVerifica, lcProceduraCopiaza)
Return loCauta
Endproc && cauta_alfa_hash

316
COMUN/programe/cdo2000.prg Normal file
View File

@@ -0,0 +1,316 @@
* https://www.berezniker.com/content/pages/visual-foxpro/cdo-2000-class-sending-emails
#DEFINE cdoSendPassword "http://schemas.microsoft.com/cdo/configuration/sendpassword"
#DEFINE cdoSendUserName "http://schemas.microsoft.com/cdo/configuration/sendusername"
#DEFINE cdoSendUsingMethod "http://schemas.microsoft.com/cdo/configuration/sendusing"
#DEFINE cdoSMTPAuthenticate "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
#DEFINE cdoSMTPConnectionTimeout "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
#DEFINE cdoSMTPServer "http://schemas.microsoft.com/cdo/configuration/smtpserver"
#DEFINE cdoSMTPServerPort "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
#DEFINE cdoSMTPUseSSL "http://schemas.microsoft.com/cdo/configuration/smtpusessl"
#DEFINE cdoURLGetLatestVersion "http://schemas.microsoft.com/cdo/configuration/urlgetlatestversion"
#DEFINE cdoAnonymous 0 && Perform no authentication (anonymous)
#DEFINE cdoBasic 1 && Use the basic (clear text) authentication mechanism.
#DEFINE cdoSendUsingPort 2 && Send the message using the SMTP protocol over the network.
#DEFINE cdoXMailer "urn:schemas:mailheader:x-mailer"
DEFINE CLASS cdo2000 AS Custom
PROTECTED aErrors[1], nErrorCount, oMsg, oCfg, cXMailer
nErrorCount = 0
* Message attributes
oMsg = Null
cFrom = ""
cReplyTo = ""
cTo = ""
cCC = ""
cBCC = ""
cAttachment = ""
cSubject = ""
cHtmlBody = ""
cTextBody = ""
cHtmlBodyUrl = ""
cCharset = ""
* Priority: Normal, High, Low or empty value (Default)
cPriority = ""
* Configuration object fields values
oCfg = Null
cServer = ""
nServerPort = 25
* Use SSL connection
lUseSSL = .F.
nConnectionTimeout = 30 && Default 30 sec's
nAuthenticate = cdoAnonymous
cUserName = ""
cPassword = ""
* Do not use cache for cHtmlBodyUrl
lURLGetLatestVersion = .T.
* Optional. Creates your own X-MAILER field in the header
cXMailer = "VFP CDO 2000 mailer Ver 1.1.100 2010"
PROTECTED PROCEDURE Init
This.ClearErrors()
ENDPROC
* Send message
PROCEDURE Send
IF This.GetErrorCount() > 0
RETURN This.GetErrorCount()
ENDIF
WITH This
.ClearErrors()
.oCfg = CREATEOBJECT("CDO.Configuration")
.oMsg = CREATEOBJECT("CDO.Message")
.oMsg.Configuration = This.oCfg
ENDWITH
* Fill message attributes
LOCAL lnind, laList[1], loHeader, laDummy[1], lcMailHeader
IF This.SetConfiguration() > 0
RETURN This.GetErrorCount()
ENDIF
IF EMPTY(This.cFrom)
This.AddError("ERROR : From is empty.")
ENDIF
IF EMPTY(This.cSubject)
This.AddError("ERROR : Subject is empty.")
ENDIF
IF EMPTY(This.cTo) AND EMPTY(This.cCC) AND EMPTY(This.cBCC)
This.AddError("ERROR : To, CC and BCC are all empty.")
ENDIF
IF This.GetErrorCount() > 0
RETURN This.GetErrorCount()
ENDIF
This.SetHeader()
WITH This.oMsg
.From = This.cFrom
.ReplyTo = This.cReplyTo
.To = This.cTo
.CC = This.cCC
.BCC = This.cBCC
.Subject = This.cSubject
* Create HTML body from external HTML (file, URL)
IF NOT EMPTY(This.cHtmlBodyUrl)
.CreateMHTMLBody(This.cHtmlBodyUrl)
ENDIF
* Send HTML body. Creates TextBody as well
IF NOT EMPTY(This.cHtmlBody)
.HtmlBody = This.cHtmlBody
ENDIF
* Send Text body. Could be different from HtmlBody, if any
IF NOT EMPTY(This.cTextBody)
.TextBody = This.cTextBody
ENDIF
IF NOT EMPTY(This.cCharset)
IF NOT EMPTY(.HtmlBody)
.HtmlBodyPart.Charset = This.cCharset
ENDIF
IF NOT EMPTY(.TextBody)
.TextBodyPart.Charset = This.cCharset
ENDIF
ENDIF
* Process attachments
IF NOT EMPTY(This.cAttachment)
* Accepts comma or semicolon
* VFP 7.0 and later
*FOR lnind=1 TO ALINES(laList, This.cAttachment, [,], [;])
* VFP 6.0 and later compatible
FOR lnind=1 TO ALINES(laList, CHRTRAN(This.cAttachment, [,;], CHR(13) + CHR(13)))
lcAttachment = ALLTRIM(laList[lnind])
* Ignore empty values
IF EMPTY(laList[lnind])
LOOP
ENDIF
* Make sure that attachment exists
IF ADIR(laDummy, lcAttachment) = 0
This.AddError("ERROR: Attachment not Found - " + lcAttachment)
ELSE
* The full path is required.
IF UPPER(lcAttachment) <> UPPER(FULLPATH(lcAttachment))
lcAttachment = FULLPATH(lcAttachment)
ENDIF
.AddAttachment(lcAttachment)
ENDIF
ENDFOR
ENDIF
IF NOT EMPTY(This.cCharset)
.BodyPart.Charset = This.cCharset
ENDIF
* Priority
IF NOT EMPTY(This.cPriority)
lcMailHeader = "urn:schemas:mailheader:"
.Fields(lcMailHeader + "Priority") = LOWER(This.cPriority)
.Fields(lcMailHeader + "Importance") = LOWER(This.cPriority)
DO CASE
CASE This.cPriority = "High"
.Fields(lcMailHeader + "X-Priority") = 1 && 5=Low, 3=Normal, 1=High
CASE This.cPriority = "Normal"
.Fields(lcMailHeader + "X-Priority") = 3 && 5=Low, 3=Normal, 1=High
CASE This.cPriority = "Low"
.Fields(lcMailHeader + "X-Priority") = 5 && 5=Low, 3=Normal, 1=High
ENDCASE
.Fields.Update()
ENDIF
ENDWITH
IF This.GetErrorCount() > 0
RETURN This.GetErrorCount()
ENDIF
This.oMsg.Send()
RETURN This.GetErrorCount()
ENDPROC
* Clear errors collection
PROCEDURE ClearErrors()
This.nErrorCount = 0
DIMENSION This.aErrors[1]
This.aErrors[1] = Null
RETURN This.nErrorCount
ENDPROC
* Return # of errors in the error collection
PROCEDURE GetErrorCount
RETURN This.nErrorCount
ENDPROC
* Return error by index
PROCEDURE GetError
LPARAMETERS tnErrorno
IF tnErrorno <= This.GetErrorCount()
RETURN This.aErrors[tnErrorno]
ELSE
RETURN Null
ENDIF
ENDPROC
* Populate configuration object
PROTECTED PROCEDURE SetConfiguration
* Validate supplied configuration values
IF EMPTY(This.cServer)
This.AddError("ERROR: SMTP Server isn't specified.")
ENDIF
IF NOT INLIST(This.nAuthenticate, cdoAnonymous, cdoBasic)
This.AddError("ERROR: Invalid Authentication protocol ")
ENDIF
IF This.nAuthenticate = cdoBasic ;
AND (EMPTY(This.cUserName) OR EMPTY(This.cPassword))
This.AddError("ERROR: User name/Password is required for basic authentication")
ENDIF
IF This.GetErrorCount() > 0
RETURN This.GetErrorCount()
ENDIF
WITH This.oCfg.Fields
* Send using SMTP server
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = This.cServer
.Item(cdoSMTPServerPort) = This.nServerPort
.Item(cdoSMTPConnectionTimeout) = This.nConnectionTimeout
.Item(cdoSMTPAuthenticate) = This.nAuthenticate
IF This.nAuthenticate = cdoBasic
.Item(cdoSendUserName) = This.cUserName
.Item(cdoSendPassword) = This.cPassword
ENDIF
.Item(cdoURLGetLatestVersion) = This.lURLGetLatestVersion
.Item(cdoSMTPUseSSL) = This.lUseSSL
.Update()
ENDWITH
RETURN This.GetErrorCount()
ENDPROC
*----------------------------------------------------
* Add message to the error collection
PROTECTED PROCEDURE AddError
LPARAMETERS tcErrorMsg
This.nErrorCount = This.nErrorCount + 1
DIMENSION This.aErrors[This.nErrorCount]
This.aErrors[This.nErrorCount] = tcErrorMsg
RETURN This.nErrorCount
ENDPROC
*----------------------------------------------------
* Format an error message and add to the error collection
PROTECTED PROCEDURE AddOneError
LPARAMETERS tcPrefix, tnError, tcMethod, tnLine
LOCAL lcErrorMsg, laList[1]
IF INLIST(tnError, 1427,1429)
AERROR(laList)
lcErrorMsg = TRANSFORM(laList[7], "@0") + " " + laList[3]
ELSE
lcErrorMsg = MESSAGE()
ENDIF
This.AddError(tcPrefix + ":" + TRANSFORM(tnError) + " # " + ;
tcMethod + " # " + TRANSFORM(tnLine) + " # " + lcErrorMsg)
RETURN This.nErrorCount
ENDPROC
*----------------------------------------------------
* Simple Error handler. Adds VFP error to the objects error collection
PROTECTED PROCEDURE Error
LPARAMETERS tnError, tcMethod, tnLine
This.AddOneError("ERROR: ", tnError, tcMethod, tnLine )
RETURN This.nErrorCount
ENDPROC
*-------------------------------------------------------
* Set mail header fields, if necessary. For now sets X-MAILER, if specified
PROTECTED PROCEDURE SetHeader
LOCAL loHeader
IF NOT EMPTY(This.cXMailer)
loHeader = This.oMsg.Fields
WITH loHeader
.Item(cdoXMailer) = This.cXMailer
.Update()
ENDWITH
ENDIF
ENDPROC
*----------------------------------------------------
*
PROTECTED PROCEDURE cPriority_assign(tvVal)
* Check for incorrect values
IF INLIST("~" + PROPER(tvVal) + "~", "~High~", "~Normal~", "~Low~") OR EMPTY(tvVal)
This.cPriority = PROPER(ALLTRIM(tvVal))
ELSE
This.AddError("ERROR: Invalid value for cPriority property.")
ENDIF
ENDPROC
ENDDEFINE

139
COMUN/programe/chatbot.prg Normal file
View File

@@ -0,0 +1,139 @@
Lparameters tcQuestion, lcChatId, tlMarkDown2Html, tcChatBot
* tlMarkDown2Html (optional, implicit .T.): converteste MarkDown in Html
Local loHTTP As 'MSXML2.ServerXMLHTTP'
Local lcChatId, lcQuestion, lcRaspuns, lcResponse, lcSampleReponse, lcURL, llSucces, loEx, loJson, llMarkDown2Html
LOCAL lcChatBot, lcChatBotId
lcRaspuns = ''
llMarkDown2Html = Iif(Pcount() <= 3, .T., m.tlMarkDown2Html)
tcQuestion = Strtran(m.tcQuestion, Chr(13), ' ',1,1000,1)
tcQuestion = Strtran(m.tcQuestion, '"', '\"',1,1000,1)
lcChatId = Iif(!Empty(m.lcChatId), m.lcChatId, '')
TEXT TO lcQuestion TEXTMERGE NOSHOW
{"question": "<<m.tcQuestion>>"<<IIF(!EMPTY(m.lcChatId), [, "chatId": "] + m.lcChatId + ["], [])>>
}
ENDTEXT
*!* {"question": "Care este numele meu?",
*!* "chatId": "913bf69d-7838-4f55-9c6d-d7ca8645be15"}
IF EMPTY(m.tcChatBot)
lcChatBot = 'maria'
ELSE
lcChatBot = ALLTRIM(LOWER(m.tcChatbot))
IF !INLIST(LOWER(m.tcChatbot), 'maria', 'cezar')
lcChatBot = 'maria'
ENDIF
ENDIF
DO CASE
CASE m.lcChatBot = 'cezar'
lcChatBotId = [462dabb9-6995-4f7e-ad8e-30624ae56be5]
CASE m.lcChatBot = 'maria'
lcChatBotId = [d4911620-07fe-41f8-adb4-f2f52d6ec766]
OTHERWISE
lcChatBotId = [462dabb9-6995-4f7e-ad8e-30624ae56be5]
ENDCASE
lcURL = [https://mutual-special-koala.ngrok-free.app/api/v1/prediction/] + m.lcChatBotId
TRY
loHTTP = Createobject('MSXML2.ServerXMLHTTP')
loHTTP.Open('POST', lcURL, .F.)
loHTTP.setRequestHeader("Content-Type", "application/json; charset=utf-8")
loHTTP.setRequestHeader("Accept-Charset", "UTF-8")
loHTTP.Send(m.lcQuestion)
llSucces = (loHTTP.Status = 200)
CATCH TO loEx
llSucces = .F.
AMESSAGEBOX(loEx.message,48,_Screen.Caption)
lcRaspuns = loEx.message
ENDTRY
If m.llSucces
lcResponse = loHTTP.ResponseText
Try
loJson = nfjsonread(m.lcResponse)
Catch To loEx
llSucces = .F.
lcRaspuns = loEx.message
AMESSAGEBOX(loEx.Message,48,_Screen.Caption)
Endtry
If Type('loJson.chatId') = 'C'
lcChatId = loJson.chatId
Endif
If Type('loJson.text') = 'C'
lcRaspuns = loJson.Text
If m.llMarkDown2Html
lcRaspuns = MarkdownToHtml(m.lcRaspuns)
Endif
Else
lcRaspuns = m.lcResponse
ENDIF
Endif
TEXT TO lcSampleReponse
{
"chatId": "feec0271-7ab1-4f07-8953-3e3d9630a87e",
"chatMessageId": "2c076f7c-3097-4d38-99d5-24ad2d319b85",
"isStreamValid": true,
"memoryType": "Buffer Window Memory",
"question": "Care este procedura pentru borderoul efactura?",
"sessionId": "feec0271-7ab1-4f07-8953-3e3d9630a87e",
"text": "Procedura pentru Borderoul eFactura este urmatoarea:\n\n1. Dupa emiterea facturilor, la sfarsitul zilei, sau a doua zi, daca se poate, in Borderoul eFactura: \n * Se citesc periodic Raspunsurile din ultimele 1-60 zile (depinde de cate zile nu s-au citit raspunsurile).\n * Facturile validate de ANAF au Tip Mesaj Raspuns = \"FACTURA PRIMITA\".\n * Facturile invalide au Tip Mesaj Raspuns = \"ERORI FACTURA\" ?i fundal de culoare ro?ie.\n * Se trimit facturile netrimise (culoare fundal galben pai) ?i cu erori, daca s-au corectat erorile, (culoare fundal rosu) din ziua curenta (daca operatia se face la sfarsitul zilei) sau din ziua precedenta (daca se poate).\n2. Se citesc Raspunsurile ?i se retrimite eFactura doar daca s-a primit raspuns tip \"ERORI FACTURA\".\n3. Din Borderoul eFactura, <20>n paginile Facturi Trimise ?i Primite se poate lista centralizatorul facturilor trimise/primite <20>n SPV cu Id Descarcare/Id <20>ncarcare, pe care <20>l pute?i ata?a la Registrele de TVA V<>nzare/Cumparare."
}
ENDTEXT
Return m.lcRaspuns
* Markdown to HTML Converter in Visual FoxPro
Function MarkdownToHtml
Lparameters lcMarkdown
Local lcHTML, laLines[1], lnI, lcLine, lcTemp
lcHTML = ""
* Split the Markdown into lines
Alines(laLines, lcMarkdown)
* Process each line
For lnI = 1 To Alen(laLines)
lcLine = Alltrim(laLines[lnI])
* Check for headers
Do Case
Case Left(lcLine, 2) == '# '
lcHTML = lcHTML + '<h1>' + Substr(lcLine, 3) + '</h1>' + Chr(13) + Chr(10)
Case Left(lcLine, 3) == '## '
lcHTML = lcHTML + '<h2>' + Substr(lcLine, 4) + '</h2>' + Chr(13) + Chr(10)
Case Left(lcLine, 4) == '### '
lcHTML = lcHTML + '<h3>' + Substr(lcLine, 5) + '</h3>' + Chr(13) + Chr(10)
OTHERWISE
lcHtml = lcHtml + m.lcLine
Endcase
Endfor
* Check for bold and italic
lcHTML = Strtran(m.lcHTML , '**', '<strong>',1,1000,1)
lcHTML = Strtran(m.lcHTML , '**', '</strong>',1,1000,1)
lcHTML = Strtran(m.lcHTML , '*', '<em>',1,1000,1)
lcHTML = Strtran(m.lcHTML , '*', '</em>',1,1000,1)
lcHTML = Strtran(m.lcHTML , '\n', '<br>',1,1000,1)
lcHTML = Strtran(m.lcHTML , '\t', '&nbsp;&nbsp;&nbsp;&nbsp;',1,1000,1)
lcHTML = Strtran(m.lcHTML , '\"', '&quot;',1,1000,1)
Return m.lcHTML
Endfunc

View File

@@ -0,0 +1,70 @@
#INCLUDE COMUN.H
Define Class appBaseController As Custom
oSettings = Null
lError = .F.
cErrorMessage = ''
oLog = Null
*
Procedure Init
This.oSettings = Createobject("settingsBaseController")
This.oLog = Iif(Type('goLog') = 'O', goLog, Createobject("logBaseController"))
Endproc && INIT
*
Procedure ProcessError(toHash)
Declare laErrors[1]
lnErrorLines = Aerror(laErrors)
lnError = Iif(toHash.HasProperty("nError"), toHash.GetValue("nError"), Transform(laErrors(1)) + ' ' + Transform(laErrors(5)))
lcMethod = toHash.GetValue("cMethod")
lnLine = toHash.GetValue("nLine")
lcError = Iif(toHash.HasProperty("cError"), toHash.GetValue("cError"), Transform(laErrors(2)))
lcCode = Iif(toHash.HasProperty("cCode"), toHash.GetValue("cCode"), Message(1) )
lcCallStack = GetCallStack()
lcUserMessage = toHash.GetValue("cUserMessage")
This.cErrorMessage = lcUserMessage + CRLF + CRLF + ;
'Eroarea nr: ' + Transform(lnError) + CRLF + ;
'Eroarea: ' + Transform(lcError) + CRLF + ;
'Procedura: ' + Transform(lcMethod) + CRLF + ;
'Linia: ' + Transform(lnLine) + CRLF + ;
'Codul: ' + Transform(lcCode) + CRLF + ;
lcCallStack
This.lError = .T.
This.oLog.WriteLog(This.cErrorMessage)
aMessagebox(This.cErrorMessage,0+16,'Eroare')
*!* IF MESSAGEBOX(THIS.cErrorMessage + CRLF + 'Doriti sa iesiti?',16+4,'Eroare') = 6
*!* RETURN TO MASTER
*!* ENDIF
Endproc && ProcessError
*
Procedure Log
Lparameters tcMessage
This.oLog.WriteLog(tcMessage)
Endproc && Log
*
Function GetError
Return This.cErrorMessage
Endfunc && GetError
*
Function HasError
Return This.lError
Endfunc && HasError
*
Function Gethost
Return ""
Endfunc && GetHost
*
Function GetUser
Return ""
Endfunc && GetUser
*
Function GetPassword
Return ""
Endfunc && GetPassword
Enddefine

View File

@@ -0,0 +1,339 @@
Define Class DBAccessController As Custom
cServer = Null
cSchema = Null
cParola = Null
oExecutor = Null
oConn = Null
nHandle = Null
nSucces = 0
lAfiseazaEroare = .T.
***********************************************************************
Procedure Init
If Type('goConn') = 'O'
This.oConn = goConn
Else
This.oConn = Createobject("oConn")
Public goConn
goConn = This.oConn
Endif
If Type('goExecutor') = 'O'
This.oExecutor = goExecutor
Else
This.oExecutor = Createobject("oExecutor")
Public goExecutor
goExecutor = This.oExecutor
Endif
If Type('gnHandle') = 'N'
This.nHandle = gnHandle
Else
This.nHandle = -1
Public gnHandle
gnHandle = -1
Endif
Endproc
***********************************************************************
PROCEDURE conecteaza
Lparameters tcSchema,tcParola
This.cSchema = tcSchema
This.cParola = tcParola
This.nHandle = This.oConn.Connect(This.cServer,This.cSchema,This.cParola)
ENDPROC
***********************************************************************
PROCEDURE deconecteaza
This.oConn.Disconnect(This.nHandle)
This.cSchema = Null
This.cParola = Null
This.nHandle = -1
ENDPROC
***********************************************************************
Procedure setServer
Lparameters tcServer
This.cServer = tcServer
Endproc
***********************************************************************
Procedure setSchemaParola
Lparameters tcSchema,tcParola
If This.nHandle <> -1
This.oConn.Disconnect(This.nHandle)
Endif
This.conecteaza(tcSchema,tcParola)
Endproc
***********************************************************************
Procedure copiaza_structura_cursor
Lparameters tcSursa,tcDestinatie
LOCAL lnIndex
If !Empty(tcSursa) And !Empty(tcDestinatie)
If Used(tcSursa)
Dimension laStructura(1,18)
If Used(tcDestinatie)
Use In (tcDestinatie)
Endif
Afields(laStructura,tcSursa)
*!* lnIndex = ALEN(laStructura,1)+1
*!* DIMENSION laStructura(lnIndex,18)
*!* laStructura[lnIndex,1] = "RN"
*!* laStructura[lnIndex,2] = "N"
*!* laStructura[lnIndex,3] = 10
*!* laStructura[lnIndex,4] = 0
*!* laStructura[lnIndex,5] = .F.
*!* laStructura[lnIndex,6] = laStructura[lnIndex-1,6]
*!* laStructura[lnIndex,7] = []
*!* laStructura[lnIndex,8] = []
*!* laStructura[lnIndex,9] = []
*!* laStructura[lnIndex,10] = laStructura[lnIndex-1,10]
*!* laStructura[lnIndex,11] = laStructura[lnIndex-1,11]
*!* laStructura[lnIndex,12] = laStructura[lnIndex-1,12]
*!* laStructura[lnIndex,13] = []
*!* laStructura[lnIndex,14] = []
*!* laStructura[lnIndex,15] = []
*!* laStructura[lnIndex,16] = []
*!* laStructura[lnIndex,17] = 1
*!* laStructura[lnIndex,18] = 1
Create Cursor (tcDestinatie) From Array laStructura
Release laStructura
Else
amessagebox("Eroare interna 2 - copiaza structura cursor",16,"Eroare")
Endif
Else
amessagebox("Eroare interna 1 - copiaza structura cursor",16,"Eroare")
Endif
Endproc
***********************************************************************
Function apeleaza_sql_hash
Lparameters toHash,tcNumeCursor
LOCAL lcSql
lcSql = [select ] + toHash.getValue('cColumns') + ;
[ from ] + toHash.getValue('cTables') + ;
IIF(!Empty(toHash.getValue('cWhere')),[ where ] + toHash.getValue('cWhere'),[]) + ;
IIF(!Empty(toHash.getValue('cGroupBy')),[ group by ] + toHash.getValue('cGroupBy'),[]) + ;
IIF(!Empty(toHash.getValue('cOrderBy')),[ order by ] + toHash.getValue('cOrderBy'),[])
RETURN This.apeleaza_sql(lcSql,tcNumeCursor)
endfunc
***********************************************************************
Function apeleaza_sql
Lparameters tcSql,tcNumeCursor
Local lcNumeCursor,lcAlias,llSucces
llSucces = .F.
lcAlias = Alias()
lcNumeCursor = [codbctemp]
If Used(lcNumeCursor)
Use In (lcNumeCursor)
Endif
This.nSucces = This.oExecutor.oExecute(tcSql,lcNumeCursor)
llSucces = This.verificaSucces()
If llSucces
If !Used(tcNumeCursor)
This.copiaza_structura_cursor(lcNumeCursor,tcNumeCursor)
Endif
Select (tcNumeCursor)
Zap In (tcNumeCursor)
Append From Dbf(lcNumeCursor)
Go Top
If Used(lcNumeCursor)
Use In (lcNumeCursor)
Endif
If !Empty(lcAlias)
Select (lcAlias)
Endif
Endif
Return llSucces
Endfunc
***********************************************************************
Function apeleaza_procedura
Lparameters tcApelProcedura,tcNumeCursor
Local lcNumeCursor,lcAlias,llSucces,lcDeclaratie
llSucces = .F.
lcAlias = Alias()
If !Empty(tcNumeCursor)
lcNumeCursor = [codbctemp]
lcSql = [{call ] + tcApelProcedura + [}]
If Used(lcNumeCursor)
Use In (lcNumeCursor)
Endif
Else
lcSql = [begin ] + tcApelProcedura + [; end;]
Endif
This.nSucces = This.oExecutor.oExecute(lcSql,lcNumeCursor)
llSucces = This.verificaSucces()
If llSucces And !Empty(tcNumeCursor)
If !Used(tcNumeCursor)
This.copiaza_structura_cursor(lcNumeCursor,tcNumeCursor)
Endif
Select (tcNumeCursor)
Zap In (tcNumeCursor)
Append From Dbf(lcNumeCursor)
Go Top
If Used(lcNumeCursor)
Use In (lcNumeCursor)
Endif
Endif
If !Empty(lcAlias)
Select (lcAlias)
Endif
Return llSucces
Endfunc
***********************************************************************
Function apeleaza_procedura_o
Lparameters tcApelProcedura,tcSirTip
Local lcNumeCursor,lcAlias,llSucces,lcNumeVariabila,lnParametri, lcTip
Dimension laSir[1]
llSucces = .F.
lcAlias = Alias()
lnParametri = Getwordcount(tcSirTip,[|])
Dimension laSir[lnParametri]
For i = 1 To lnParametri
lcTip = Getwordnum(tcSirTip,i,[|])
lcNumeVariabila = [p] + lcTip + [Parametru] + Alltrim(Str(i))
lcDeclaratie = [Private ] + lcNumeVariabila
&lcDeclaratie
DO case
CASE UPPER(lcTip) = 'N'
lcDeclaratie = lcNumeVariabila + [ = 0]
CASE UPPER(lcTip) = 'C'
lcDeclaratie = lcNumeVariabila + [ = '']
Otherwise
lcDeclaratie = lcNumeVariabila + [ = Null]
endcase
&lcDeclaratie
tcApelProcedura = Strtran(tcApelProcedura,[@p]+Padl(Alltrim(Str(i)),2,[0]),[@]+lcNumeVariabila)
Endfor
lcSql = [{call ] + tcApelProcedura + [}]
This.nSucces = This.oExecutor.oExecute(lcSql)
llSucces = This.verificaSucces()
If llSucces
For i = 1 To lnParametri
lcNumeVariabila = [p] + Getwordnum(tcSirTip,i,[|]) + [Parametru] + Alltrim(Str(i))
loVariabila = &lcNumeVariabila
laSir[i] = loVariabila
lcDeclaratie = [Release ] + lcNumeVariabila
&lcDeclaratie
Endfor
ELSE
For i = 1 To lnParametri
laSir[i] = Null
Endfor
Endif
If !Empty(lcAlias)
Select (lcAlias)
Endif
Return laSir
Endfunc
***********************************************************************
Function apeleaza_functie
Lparameters tcApelFunctie,tcTip
Local lcCursor,luReturn
lcCursor = [crstaf010101]
lcSql = [select ] + tcApelFunctie + [ as valoare from dual]
This.nSucces = This.oExecutor.oExecute(lcSql,lcCursor)
If This.verificaSucces()
Select (lcCursor)
luReturn = valoare
If Used(lcCursor)
Use In (lcCursor)
Endif
Do Case
Case Isnull(luReturn)
Return Null
Case Type('luReturn') <> tcTip
Return Val(luReturn)
Otherwise
Return luReturn
Endcase
Else
Return Null
Endif
Endfunc
***********************************************************************
Function getEroare
Return Iif(Between(This.oExecutor.nEroare,20000,21000),This.oExecutor.cEroare,[])
Endfunc
***********************************************************************
Function getSucces
Return This.nSucces
Endfunc
***********************************************************************
Function getSchema
Return This.cSchema
Endfunc
***********************************************************************
Procedure setAfiseazaEroare
Lparameters tlAfiseazaEroare
This.lAfiseazaEroare = tlAfiseazaEroare
Endproc
***********************************************************************
Procedure getAfiseazaEroare
Return This.lAfiseazaEroare
Endproc
***********************************************************************
Function verificaSucces
Local llReturn
llReturn = .T.
If This.nSucces < 0
IF This.lAfiseazaEroare OR (!BETWEEN(This.oExecutor.nEroare,20000,21000))
amessagebox(This.oExecutor.cEroare,16,"Eroare")
ENDIF
llReturn = .F.
Endif
Return llReturn
Endfunc
***********************************************************************
Function setTranzactieManuala
Local lnSucces
lnSucces = SQLSetprop(This.nHandle,"Transactions",2)
If lnSucces < 0
If This.lAfiseazaEroare
amessagebox("Programul nu a reusit sa treaca pe tranzactie manuala! Reintrati in program si incercati din nou!",16,"Eroare")
Endif
llReturn = .F.
Else
llReturn = .T.
Endif
Return llReturn
Endfunc
***********************************************************************
Function setTranzactieAutomata
Local lnSucces,llReturn
lnSucces = SQLSetprop(This.nHandle,"Transactions",1)
If lnSucces < 0
If This.lAfiseazaEroare
amessagebox("Programul nu a reusit sa treaca pe tranzactie automata! Iesiti din program si intrati din nou!",16,"Eroare")
Endif
llReturn = .F.
Else
llReturn = .T.
Endif
Return llReturn
Endfunc
***********************************************************************
Function confirmaOperatii
Local lnSucces,llReturn
lnSucces = Sqlcommit(This.nHandle)
If lnSucces < 0
If This.lAfiseazaEroare
amessagebox("Eroare la COMMIT!",16,"Eroare")
Endif
llReturn = .F.
Else
llReturn = .T.
Endif
Return llReturn
Endfunc
***********************************************************************
Function revocaOperatii
Local lnSucces,llReturn
lnSucces = Sqlrollback(This.nHandle)
If lnSucces < 0
If This.lAfiseazaEroare
amessagebox("Eroare la ROLLBACK!",16,"Eroare")
Endif
llReturn = .F.
Else
llReturn = .T.
Endif
Return llReturn
Endfunc
***********************************************************************
Enddefine

View File

@@ -0,0 +1,66 @@
#INCLUDE COMUN.H
Define Class logBaseController As Session
cLog = ''
cOutputFile = ''
lAdditive = .T.
********************************************************************
Procedure Init
Lparameters tcOutputfile, tlAdditive
If !Empty(tcOutputfile) And Type('tcOutputFile') = 'C'
This.cOutputFile = tcOutputfile
Endif
If Pcount() = 2 And Type('tlAdditive') = 'L'
This.lAdditive = tlAdditive
Endif
This.Log()
Endproc
********************************************************************
Procedure Log
Lparameters tcMessage, tcProgram
Local lcLog
If Pcount() = 0 Or Type('tcMessage') # 'C' Or Empty(tcMessage)
lcLog = CRLF
Else
lcLog = Ttoc(Datetime()) + ' ' + Sys(0) + CRLF + tcMessage + CRLF
Endi
This.cLog = This.cLog + lcLog
This.WRITELOG()
Endproc
********************************************************************
Procedure ResetLog
This.cLog = ''
Endproc
********************************************************************
Procedure WRITELOG
Lparameters tcMessage, tcOutputfile, tlAdditive
Local lcOutputfile, llAdditive, lcLog
If !Empty(tcOutputfile) And Type('tcOutputFile') = 'C'
lcOutputfile = tcOutputfile
Else
lcOutputfile = This.cOutputFile
Endif
If Pcount() < 3 Or Type('tlAdditive') # 'L'
llAdditive = This.lAdditive
Else
llAdditive = tlAdditive
Endif
If Type('tcMessage') = 'C'
If Empty(tcMessage)
lcLog = CRLF
Else
lcLog = Ttoc(Datetime()) + ' ' + Sys(0) + CRLF + tcMessage + CRLF
Endif
Else
lcLog = This.cLog
Endif
If !Empty(lcOutputfile)
Strtofile(lcLog, lcOutputfile, llAdditive)
Endif
Endproc
********************************************************************
Enddefine
*

View File

@@ -0,0 +1,249 @@
#INCLUDE COMUN.H
#INCLUDE MVC.H
Define Class LoginController As Custom
oDBController = Null
oControllerSetari = Null
oUtilizator = Null
*!* oFirma = Null
oView = Null
nTipLogin = Null
cFormLogin = Null
cProcLogin = Null
nTipVerificare = 0
*!* 0 = verificare utilizator si parola
*!* 1 = verificare utilizator si parola cu id-ul dat ca parametru
*!* 2 = verificare utilizator si parola cu nivelul dat ca parametru
nIdUtil = Null
nNivelAcces = Null
cExplicatie = "Autentificare"
cRestaurant = Null
***********************************************************************
Procedure Init
Lparameters toDbController,toControllerSetari,tnTipVerificare,tnParametru,tcDenumire
This.oDBController = toDbController
This.oControllerSetari = toControllerSetari
This.oUtilizator = Createobject("UtilizatorModel")
*!* This.oFirma = CREATEOBJECT("FirmaModel")
This.nTipLogin = 2
This.cFormLogin = [Login] + Iif(This.nTipLogin=2,[CodBare],[])
This.cProcLogin = [Login] + Iif(This.nTipLogin=2,[CodBare],[])
This.nTipVerificare = IIF(TYPE('tnTipVerificare')<>'N',0,tnTipVerificare)
Do Case
Case This.nTipVerificare = 1
This.nIdUtil = tnParametru
This.nNivelAcces = Null
This.cExplicatie = This.cExplicatie + [ ] + ALLTRIM(tcDenumire)
Case This.nTipVerificare = 2
This.nNivelAcces = tnParametru
This.nIdUtil = Null
This.cExplicatie = This.cExplicatie + [ nivel minim : ] + ALLTRIM(tcDenumire)
Otherwise
This.oDBController.setLoginController(This)
This.nIdUtil = Null
This.nNivelAcces = Null
Endcase
Endfunc && INIT
***********************************************************************
Procedure conecteaza
Local lcParolaSchema,lcServer,lcSchema,lcParola
lcServer = This.oControllerSetari.getServerSetari()
This.oDBController.setServer(lcServer)
This.oDBController.setSchemaParola(This.oControllerSetari.getSchemaSecurity(lcServer),This.oControllerSetari.getParolaSecurity(lcServer))
lnIdFirmaSetari = This.oControllerSetari.getIdFirmaSetari()
If !Empty(lnIdFirmaSetari)
lcParolaSchema = This.oDBController.getParolaSchema(lnIdFirmaSetari)
IF !EMPTY(lcParolaSchema)
lnPoz = AT('$',lcParolaSchema)
lcSchema = SUBSTR(lcParolaSchema,1,lnPoz-1)
lcParola = SUBSTR(lcParolaSchema,lnPoz+1)
This.oDBController.setSchemaParola(lcSchema,lcParola)
If This.nTipVerificare = 0
This.oControllerSetari.verificaVersiuni()
Endif
ENDIF
Endif
Endproc
***********************************************************************
PROCEDURE deconecteaza
This.oDBController.deconecteaza()
This.oUtilizator.reseteazaDate()
ENDPROC
***********************************************************************
Function getIdUtil
Return This.oUtilizator.getIdUtil()
Endfunc
***********************************************************************
Function getUtilizator
Return This.oUtilizator.getUtilizator()
Endfunc
***********************************************************************
Function getSex
Return This.oUtilizator.getSex()
Endfunc
***********************************************************************
Procedure setInTura
LPARAMETERS tlInTura
This.oUtilizator.setInTura(tlInTura)
Endproc
***********************************************************************
Function getInTura
Return This.oUtilizator.getInTura()
Endfunc
***********************************************************************
Function getNivelAcces
Return This.oUtilizator.getNivelAcces()
Endfunc
***********************************************************************
Function getIdRestaurant
Return This.oControllerSetari.getIdRestaurant()
Endfunc
***********************************************************************
FUNCTION setRestaurant
LPARAMETERS tcRestaurant
This.cRestaurant = tcRestaurant
_Screen.Caption = gcExplicatieProgram + [ * ] + tcRestaurant
ENDFUNC
***********************************************************************
FUNCTION getRestaurant
RETURN This.cRestaurant
ENDFUNC
***********************************************************************
Function getIdSucursala
Return This.oControllerSetari.getIdSucursala()
Endfunc
*********************************************************************
Function getIdMama
Return This.oControllerSetari.getIdMama()
Endfunc
*********************************************************************
Function getEMama
Return This.oControllerSetari.getEMama()
Endfunc
*********************************************************************
FUNCTION getFirma
LOCAL loFirma
loFirma = This.oControllerSetari.getoFirma()
RETURN NVL(loFirma.firma,[ ])
endfunc
***********************************************************************
Procedure lanseazaLogin
If This.conecteaza()
Do Form (This.cFormLogin) With This,This.cExplicatie Name This.oView
Else
amessagebox("Nu s-a putut stabili conexiunea cu serverul!",16,"Eroare")
Endif
Endproc && List
***********************************************************************
Procedure verificaUtilizator
Parameters tcParola,tcUtilizator
Local lcCod,lcUtilizator
This.oDBController.setAfiseazaEroare(.F.)
lcCod = This.oDBController.verifica_drepturi_utilizator(tcParola,;
This.oControllerSetari.getIdFirmaSetari(),This.oControllerSetari.getNumeProgram(),;
This.nTipVerificare,IIF(This.nTipVerificare=2,This.nNivelAcces,This.nIdUtil),tcUtilizator)
If !ISNULL(lcCod)
This.oUtilizator.actualizeazaDate(tcParola,lcCod,tcUtilizator)
IF this.nTipVerificare = 0
This.oControllerSetari.citesteSetariSchema(This.oUtilizator.getIdUtil())
This.setRestaurant(This.oDBController.initializeaza_restaurant(This.oControllerSetari.getIdRestaurant()))
ENDIF
Else
This.oUtilizator.reseteazaDate()
Endif
IF This.verificaSucces()
This.oView.Release()
Else
If This.nTipLogin = 1
*!* lcErrorMessage = "Combinatie utilizator/parola invalida!"
This.oView.txtUtilizator.SetFocus()
Else
*!* lcErrorMessage = "Cod invalid!"
This.oView.txtParola.Value = []
This.oView.txtParola.SetFocus()
Endif
*!* This.oView.lblMessage.Caption = lcErrorMessage
This.oView.lblMessage.Caption = This.oDBController.getEroare()
Endif
This.oDBController.setAfiseazaEroare(.T.)
Endproc
***********************************************************************
FUNCTION verificaSucces
LOCAL llReturn
IF This.esteAutentificat()
*!* AND ((This.nTipVerificare = 0) OR ;
*!* (This.nTipVerificare = 1 AND This.oUtilizator.getIdUtil() = This.nIdUtil) OR ;
*!* (This.nTipVerificare = 2 AND This.oUtilizator.getNivelAcces() >= This.nNivelAcces))
llReturn = .T.
ELSE
llReturn = .F.
ENDIF
RETURN llReturn
ENDFUNc
***********************************************************************
Function esteAutentificat
Return This.oUtilizator.esteAutentificat()
Endfunc
***********************************************************************
Procedure SetEventsHandlers
Bindevent(This.oView.cmdLogin, "CLICK", This, This.cProcLogin )
Bindevent(This.oView.cmdCancel, "CLICK", This, This.cProcLogin )
Endproc && SetEventsHandler
***********************************************************************
Procedure Login
Local lnRows, lcCommand, lcErrorMessage, lcUtilizator, lcParola, loUtilizator
Declare laEvents[3]
lcErrorMessage = ""
lnRows = Aevents(laEvents,0)
If lnRows = 3
lcCommand = Upper(laEvents(1).Name)
Else
lcCommand = ""
Endif
If lcCommand = 'CMDLOGIN'
lcUtilizator = Alltrim(This.oView.cboUtilizator.Value)
lcParola = Alltrim(This.oView.txtParola.Value)
This.verificaUtilizator(lcParola,lcUtilizator)
Else
This.oView.Release()
Endif
Endproc && Login
***********************************************************************
Procedure LoginCodBare
Local lnRows, lcCommand, lcErrorMessage, lcUtilizator, lcParola, loUtilizator
Declare laEvents[3]
lcErrorMessage = ""
lnRows = Aevents(laEvents,0)
If lnRows = 3
lcCommand = Upper(laEvents(1).Name)
Else
lcCommand = ""
Endif
If Inlist(lcCommand, 'CMDLOGIN')
lcCodBare = Alltrim(This.oView.txtParola.Value)
*!* lcUtilizator = Left(lcCodBare,At("$", lcCodBare)-1)
*!* lcParola = Substr(lcCodBare,At("$", lcCodBare)+1)
lcParola = lcCodBare
This.verificaUtilizator(lcParola)
Else
This.oView.Release()
Endif
Endproc && LoginCodBare
***********************************************************************
PROCEDURE reinitializeazaDate
This.oControllerSetari.citesteSetariSchema(This.oUtilizator.getIdUtil())
ENDPROC
***********************************************************************
PROCEDURE release
This.oUtilizator.Release()
ENDPROC
***********************************************************************
Enddefine

View File

@@ -0,0 +1,184 @@
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

View File

@@ -0,0 +1,202 @@
Define Class ROABaseApplication As Custom
cLastSetClassLib = Null
cLastSetTalk = Null
cLastSetPath = Null
cNumeProgram = [ROA]
cCopyRight = [<5B> ROA Romfast SRL]
cUserNameApp = Null
cExplicatieProgram = Null
cROAPath = Null
cAppPath = Null
cSecurityPath = Null
cGeneralIniFile = Null
oLog = Null
oExecutor = Null
oConn = Null
oExport = Null
oMyXmlHttp = Null
Procedure Init
Lparameters tcNumeProgram
This.cNumeProgram = Upper(Alltrim(tcNumeProgram))
_Screen.Icon = tcNumeProgram + [.ico]
_Screen.Visible=.F.
This.definesteConstante()
This.setMediu()
This.setClase()
This.setProceduri()
This.declaraDLL()
This.setVariabile()
This.setAlteProceduri()
This.initializeazaControllere()
This.setExplicatieProgram()
Endproc
PROCEDURE setVariabile
This.cAppPath = Addbs(ShortPath(GetAppStartPath()))
This.cROAPath = Addbs(Left(This.cAppPath,Rat("\",This.cAppPath,2)-1))
This.cSecurityPath = This.cROAPath + 'Security\'
This.cGeneralIniFile = This.cROAPath + "settings.ini"
ENDPROC
PROCEDURE setAlteProceduri
Set Path To Addbs(Substr(This.cAppPath,1,Rat([\],This.cAppPath,2)))+[COMUNROA\] Additive
ENDPROC
PROCEDURE setExplicatieProgram
Local laVersion
Dimension laVersion(12)
If Agetfileversion(laVersion, Sys(16,0)) > 0
This.cExplicatieProgram = laVersion(10)
IF TYPE('gcExplicatieProgram') = 'C'
gcExplicatieProgram = This.cExplicatieProgram
ENDIF
Endif
Release laVersion
ENDPROC
Procedure definesteConstante
Public LF,CR,CRLF,CTAB,CT_INSUCCES,CT_SUCCES
Store Chr(10) To LF
Store Chr(13) To CR
Store Chr(13) + Chr(10) To CRLF
Store Chr(9) To CTAB
Store -1 To CT_INSUCCES
Store 1 To CT_SUCCES
Endproc
Procedure initializeazaControllere
This.oLog = Createobject("logBaseController",This.cAppPath + "log_" + This.cNumeProgram + "_" + DTOS(DATE()) + ".txt")
This.oExecutor = Createobject("oExecutor")
This.oConn = Createobject("oConn")
This.oExport = Createobject("oExportConfig")
This.oMyXmlHttp = Createobject("MyXMLHTTP", getini(gcGeneralIniFile,'errors','host'))
Endproc
Procedure declaraDLL
Declare Integer Beep In kernel32;
INTEGER dwFreq,;
INTEGER dwDuration
Declare Integer CoCreateGuid In OLE32.Dll String @lcBuffer
Endproc
Procedure setClase
Set Classlib To registry Additive
Set Classlib To Messagebox Additive
Endproc
Procedure setProceduri
Set Procedure To wwxmlhttp.prg Additive
Set Procedure To wwutils.prg Additive
Set Procedure To wwApi.prg Additive
SET PROCEDURE TO oproceduri_comune.prg additive
SET PROCEDURE TO ini.prg additive
Endproc
Procedure setMediu
This.backupMediu()
Set Path To ;Date;Include;FERESTRE;GRAFICE;Help;CLASE;MENIURI;PROGRAME;RAPOARTE;PROGS;LIBS
Push Menu _Msysmenu
Set Century On
Set Date Dmy
Set Ansi On
Set Exact On
Set Talk Off
Set Console Off
Set Safety Off
Close Databases All
Set Deleted On
Set Point To '.'
Set Hours To 24
Set NullDisplay To "*"
Set Mark To '/'
Set Exclusive Off
Set Cpdialog Off
Set Escape Off
Set Notify Off
Set Seconds Off
Set Decimals To 4
Endproc
Procedure backupMediu
This.cLastSetClassLib=Set("CLASSLIB")
This.cLastSetTalk=Set("TALK")
This.cLastSetPath=Set("PATH")
Endproc
Procedure ResetMediu
If Cntbar("_msysmenu")<>7
Pop Menu _Msysmenu
Endif
On Error
On Shutdown
Set Classlib To
Set Path To
Close All
Clear Events
If Inlist(Application.StartMode,4) && EXE
Quit
Endif
This.restoreMediu()
Endproc
Procedure restoreMediu
If Empty(Nvl(This.cLastSetPath,[]))
Set Path To
Else
Set Path To &(This.cLastSetPath)
Endif
If This.cLastSetTalk=="ON"
Set Talk On
Else
Set Talk Off
Endif
Endproc
Function Shutdown
If Type("goApp")=="O" And Not Isnull(goApp)
If Pemstatus(goApp,"OnShutdown",5)
Return goApp.OnShutDown()
Endif
Endif
This.ResetMediu()
Endfunc
Function ErrorHandler(nError,cMethod,nLine)
Local lcErrorMsg,lcCodeLineMsg,lcUserName
Wait Clear
lcErrorMsg=Message()+Chr(13)+Chr(13)
lcErrorMsg=lcErrorMsg+"Method: "+cMethod
lcCodeLineMsg=Message(1)
If Between(nLine,1,10000) And Not lcCodeLineMsg="..."
lcErrorMsg=lcErrorMsg+Chr(13)+"Line: "+Alltrim(Str(nLine))
If Not Empty(lcCodeLineMsg)
lcErrorMsg=lcErrorMsg+Chr(13)+Chr(13)+lcCodeLineMsg
Endif
Endif
lcErrorMsg = Sys(0) + ":" + Iif(Type('GCS')='C'," " + gcS,"") + Chr(13) +Chr(10) + lcErrorMsg
lcUserName = This.cUserNameApp
lcProgram = Juststem(Sys(16,0))
This.oMyXMLHTTP.postError(lcErrorMsg, lcUserName, lcProgram)
If aMessagebox(lcErrorMsg,17,_Screen.Caption)#1
On Error
Return .F.
Endif
Endfunc
Function verificaAplicatie
If !Like(This.cNumeProgram + '*', Upper(Alltrim(Juststem(Sys(16,0)))))
aMessagebox("Nu puteti porni acest program!",0+16,"Atentie")
Return .F.
Endif
Endfunc
Enddefine

View File

@@ -0,0 +1,376 @@
#include security.h
*!* #Define WINDOWHIDE 0x80
*!* #Define WINDOWSHOW 0x40
*!* #define TBAR_AUTOHIDE 1
*!* #define TBAR_KEEPONTOP 2
*!* #define ABM_GETSTATE 0x00000004
*!* #define ABM_SETSTATE 0x0000000A
Define Class settingsBaseController As Custom
cNumeProgram = ''
cAppName = ''
cAppPath = ''
cIniFile = ''
cVersiuneProgram = ''
cVersiuneDBTxt = ''
cROAClientPath = ''
cROAClientIniFile = ''
cIniText = ''
lLog = .F.
cHostErrors = ''
cCursorHost = [crshost]
nTipCriptare = 0
oOraSettingsController = Null
*!* 0 = fara
*!* 1 = vechi
*!* 2 = nou
Procedure Init
Lparameters tcNumeProgram
Declare Long FindWindow In "user32" String lpClassName, String lpWindowName
Declare Long SetWindowPos In "user32" Long HWnd, Long hWndInsertAfter, Long x, Long Y, Long cx, Long cy, Long wFlags
Declare Long SHAppBarMessage In "shell32.dll" Long dwMessage,String @pData
This.cNumeProgram = tcNumeProgram
This.cAppPath = Addbs(ShortPath(GetAppStartPath()))
This.cAppName = Allt(Uppe(Juststem(Sys(16,0))))
This.cIniFile = This.cAppPath + 'settings.ini'
This.cROAClientPath = Addbs(Left(This.cAppPath,Rat("\",This.cAppPath,2)-1))
This.cROAClientIniFile = This.cROAClientPath + 'settings.ini'
If !File(This.cIniFile)
This.InitSettings()
Endif
This.ReadSettings()
This.citesteVersiuneProgram()
This.citesteVersiuneDBTxt()
Endproc
*********************************************************************
Procedure setDBController
Lparameters toDBController
This.oOraSettingsController = Createobject('orasettingscontroller',toDBController)
Endproc
*********************************************************************
Procedure verificaVersiuni
Local lcMesaj,lcMesajVerificare
lcMesajVerificare = This.oOraSettingsController.verificaVersiuni(This.cNumeProgram,This.cVersiuneProgram,This.cVersiuneDBTxt)
If !Empty(Nvl(lcMesajVerificare,[]))
Do Case
Case This.cNumeProgram$Upper(lcMesajVerificare)
lcMesaj = "Trebuie actualizat " + This.cNumeProgram + " la versiunea " + Getwordnum(lcMesajVerificare, 2, ":") + Chr(13) + Chr(10) + ;
"Versiunea actuala este " + Getwordnum(lcMesajVerificare, 3, ":")
Case "DB"$Upper(lcMesajVerificare)
lcMesaj = "Trebuie actualizata baza de date la versiunea " + Getwordnum(lcMesajVerificare, 2, ":") + Chr(13) + Chr(10) + ;
"Versiunea actuala este " + Getwordnum(lcMesajVerificare, 3, ":")
Endcase
AMESSAGEBOX(lcMesaj,0+48, "Actualizare")
Endif
Release lcMesaj,lcMesajVerificare
Endproc
*********************************************************************
Procedure citesteVersiuneProgram
Local lcFisierExe
lcFisierExe = This.cAppPath + This.cAppName + [.exe]
If Agetfileversion(aVersion, lcFisierExe) > 0
This.cVersiuneProgram = Alltrim(aVersion(4))
Else
This.cVersiuneProgram = []
Endif
If Type('aVersion') <> 'U'
Release aVersion
Endif
Endproc
*********************************************************************
Procedure citesteVersiuneDBTxt
Local lcFisierVersiuneDB
lcFisierVersiuneDB = This.cAppPath + 'versiune_db.txt'
If File(lcFisierVersiuneDB)
This.cVersiuneDBTxt = Alltrim(Filetostr(lcFisierVersiuneDB))
Else
This.cVersiuneDBTxt = []
Endif
Release lcFileVersiuneDB
Endproc
*********************************************************************
Procedure InitSettings
If Empty(This.cIniText)
Return
Endif
Strtofile(This.cIniText, This.cIniFile)
Endproc && InitSettings
*!* *********************************************************************
*!* Function HideTaskBar
*!* Local lnHandle,lcInfoBuffer
*!* lnHandle = FindWindow("Shell_TrayWnd", "")
*!* *!* SetWindowPos(lnHandle, 0, 0, 0, 0, 0, WINDOWHIDE)
*!* DEBUG
*!* SUSPEND
*!* lcInfoBuffer = This.num2dword(0) + ;
*!* This.num2dword(lnHandle) + ;
*!* This.num2dword(0) + ;
*!* This.num2dword(0) + ;
*!* This.num2dword(0) + ;
*!* This.num2dword(0)
*!* SHAppBarMessage(ABM_GETSTATE,@lcInfoBuffer)
*!* lcInfoBuffer = This.num2dword(50000) + ;
*!* This.num2dword(lnHandle) + ;
*!* This.num2dword(0) + ;
*!* This.num2dword(0) + ;
*!* This.num2dword(0) + ;
*!* This.num2dword(BITNOT(TBAR_KEEPONTOP))
*!* SHAppBarMessage(ABM_SETSTATE,@lcInfoBuffer)
*!* Endfunc
*!* *********************************************************************
*!* Function ShowTaskBar
*!* Local lnHandle
*!* lnHandle = FindWindow("Shell_TrayWnd", "")
*!* *!* SetWindowPos(lnHandle, 0, 0, 0, 0, 0, WINDOWSHOW)
*!* Endfunc
*!* *********************************************************************
*!* FUNCTION num2dword
*!* LPARAMETERS tnValue
*!* #DEFINE m0 256
*!* #DEFINE m1 65536
*!* #DEFINE m2 16777216
*!* LOCAL b0, b1, b2, b3
*!* b3 = Int(tnValue/m2)
*!* b2 = Int((tnValue- b3*m2)/m1)
*!* b1 = Int((tnValue- b3*m2 - b2*m1)/m0)
*!* b0 = Mod(tnValue, m0)
*!* RETURN Chr(b0)+Chr(b1)+Chr(b2)+Chr(b3)
*!* endfunc
*!* *********************************************************************
Procedure ReadSettings
This.cHostErrors = This.GetVariable([errors],[host])
If Upper(Alltrim(This.GetVariable([errors],[log]))) = [TRUE]
This.lLog = .T.
Else
This.lLog = .F.
Endif
*!* This.citesteSecurity()
Endproc
*********************************************************************
Function getHostErrors
Return This.cHostErrors
Endfunc
*********************************************************************
Function getlLog
Return This.lLog
Endfunc
*********************************************************************
Function getLogPath
Return Iif(This.lLog,This.cAppPath + [log_]+ This.cNumeProgram + [_] + Dtos(Date()) + [.txt],[])
Endfunc
*********************************************************************
Function getUpdateServer
Return This.GetVariable([update],[server])
Endfunc
*********************************************************************
Function getNumeProgram
Return This.cNumeProgram
Endfunc
*********************************************************************
Function getSchemaSecurity
Lparameters tcNumeServer
Local lcAliasVechi,lcSchema
lcSchema = []
lcAliasVechi = Alias()
Select (This.cCursorHost)
Locate For Upper(Alltrim(Host)) = Upper(Alltrim(tcNumeServer))
If Found()
lcSchema = Upper(Alltrim(schema))
Endif
If Used(lcAliasVechi)
Select (lcAliasVechi)
Endif
Return lcSchema
Endfunc
*********************************************************************
Function getParolaSecurity
Lparameters tcNumeServer
Local lcAliasVechi,lcParola
lcParola = []
lcAliasVechi = Alias()
Select (This.cCursorHost)
Locate For Upper(Alltrim(Host)) = Upper(Alltrim(tcNumeServer))
If Found()
lcParola = Alltrim(pwd)
lcParola = Iif(Alltrim(isEncrypted) = [1],EncryptDecrypt(lcParola,ENCRYPTKEY,"decrypt",Iif(This.nTipCriptare=2,"blowfish","old")),lcParola)
Endif
If Used(lcAliasVechi)
Select (lcAliasVechi)
Endif
Return lcParola
Endfunc
*********************************************************************
Function citesteSecurity
Lparameters tcFileExt
Local lcSecurityFile,lcSecurityPath,lnValid,lcFileExt,lcSecurityText,llSucces
llSucces = .T.
lcFileExt = Iif(Empty(tcFileExt),[XML],tcFileExt)
lcSecurityPath = This.cROAClientPath + [SECURITY\]
lcSecurityFile = lcSecurityPath + [roa_security.] + lcFileExt
lnValid = 0
If !File(lcSecurityFile)
AMESSAGEBOX('Nu exista fisierul ' + lcSecurityFile + ' !',0+16,'Atentie')
llSucces = .F.
Else
If Used(This.cCursorHost)
Use In (This.cCursorHost)
Endif
Create Cursor (This.cCursorHost)(Host c(100), schema c(100), pwd v(100), isEncrypted c(1))
lcSecurityText = Filetostr(lcSecurityFile)
If lcFileExt = [XML]
Try
Xmltocursor(lcSecurityFile, "cXML", 512)
Select cXml
Go Top
Scatter Name lofirstrecord
If lofirstrecord.Host="ENCRYPTION"
This.nTipCriptare = 2
Delete
Else
This.nTipCriptare = 1
Endif
Insert Into (This.cCursorHost) (Host, schema, pwd, isEncrypted) ;
SELECT Host, schema, pwd, "1" As isEncrypted ;
from cXml
lnValid = Reccount('cXML')
Use In cXml
Catch To loex
*!* Local loEx As Exception
AMESSAGEBOX('Mesaj: ' + loex.Message + CRLF + ;
'Eroare nr: ' + Alltrim(Transform(loex.ErrorNo)) + CRLF + ;
'Cod: ' + loex.LineContents + CRLF + 'Procedura: ' + loex.Procedure + CRLF + ;
'Linia nr: ' + Alltrim(Transform(loex.Lineno)),0+16,'Eroare')
llSucces = .F.
Finally
Use In (Select('cXML'))
Endtry
Else
Local laHost
Dimension laHost[1]
lnLen = Alines(laHost, lcSecurityText)
If lnLen > 0
For i = 1 To lnLen
lcLinie = laHost[i]
lcHost = Getwordnum(lcLinie, 1, ';')
lcSchema = Getwordnum(lcLinie, 2, ';')
lcPassword = Getwordnum(lcLinie, 3, ';')
lcMode = "0" && necriptat - security.txt
If Empty(lcHost) Or Empty(lcSchema) Or Empty(lcPassword)
Loop
Endif
lnValid = lnValid + 1
Insert Into (This.cCursorHost) (Host, schema, pwd, isEncrypted) Values (lcHost, lcSchema, lcPassword, Iif(Empty(lcMode), '0', lcMode))
Endfor
This.nTipCriptare = 0
Endif
Endif
Endif
Return llSucces
Endfunc
*********************************************************************
Procedure citesteSetariSchema
Lparameters tnIdUtil
This.oOraSettingsController.initializeaza_firma(This.nId,tnIdUtil)
Endproc
******************************************************************
Function getoFirma
Return This.oOraSettingsController.getoFirma()
Endfunc
******************************************************************
Function getAn
Return This.oOraSettingsController.getoCalendar().an
Endfunc
******************************************************************
Function getLuna
Return This.oOraSettingsController.getoCalendar().luna
Endfunc
*********************************************************************
Function getIdSucursala
Return This.oOraSettingsController.getIdSucursala()
Endfunc
*********************************************************************
Function getIdMama
Return This.oOraSettingsController.getIdMama()
Endfunc
*********************************************************************
Function getEMama
Return This.oOraSettingsController.getEMama()
Endfunc
*********************************************************************
Procedure SetVariable
Lparameters tcSection, tcVarname, tuValue
Local lcSection, lcVarname, lcValue
lcSection = Lower(Alltrim(tcSection))
lcVarname = Lower(Alltrim(tcVarname))
lcValue = Transform(tuValue)
SetIni(This.cIniFile, lcSection, lcVarname, lcValue)
Endproc && SetVariable
*********************************************************************
Procedure GetVariable
Lparameters tcSection, tcVarname
Local lcSection, lcVarname, lcValue
lcSection = Lower(Alltrim(tcSection))
lcVarname = Lower(Alltrim(tcVarname))
lcValue = GetIni(This.cIniFile, lcSection, lcVarname)
lcValue = Nvl(lcValue, '')
If Empty(lcValue) And File(This.cROAClientIniFile)
lcValue = GetIni(This.cROAClientIniFile, lcSection, lcVarname)
lcValue = Nvl(lcValue, '')
Endif
Return lcValue
Endproc && GetVariable
*********************************************************************
Function getIniFilePath
Return This.cIniFile
Endfunc
*********************************************************************
*!* FUNCTION GetValue
*!* LPARAMETERS tcSetting
*!*
*!* LOCAL lcSetting, luValue
*!* lcSetting = "THIS." + tcSetting
*!* luValue = ''
*!* IF TYPE(lcSetting) # 'U'
*!* luValue = &lcSetting
*!* ENDIF
*!* RETURN luValue
*!*
*!* ENDFUNC
*!* *********************************************************************
*!* PROCEDURE SetValue
*!* LPARAMETERS tcSetting, tuValue
*!*
*!* LOCAL lcSetting, luValue
*!* lcSetting = "THIS." + tcSetting
*!* luValue = tuValue
*!* IF TYPE(lcSetting) # 'U'
*!* &lcSetting = luValue
*!* ENDIF
*!*
*!* ENDPROC
*!* *********************************************************************
Enddefine && settingsBaseController

View File

@@ -0,0 +1,303 @@
*!* marius.mutu
*!* 12.07.2016
*!* initializeaza_cai: citire cale bon din settings.ini [ecr]calebon, caleroaprint
*!* 07.02.2024
*!* bon2ecr : tratare discount, pret negativ/cantitate negativa = reducere valorica la casa de marcat
*#INCLUDE COMUN.H
#IFNDEF COMUN_H
#DEFINE COMUN_H
#DEFINE LF CHR(10)
#DEFINE CR CHR(10)
#DEFINE CRLF CHR(13) + CHR(10)
#DEFINE CTAB CHR(9)
#DEFINE CT_INSUCCES -1
#DEFINE CT_SUCCES 1
#ENDIF
* #INCLUDE MVC.H
#IFNDEF ROARETAIL_H
#DEFINE ROARETAIL_H
#DEFINE RR_TIPCURSOR 1
#DEFINE RR_TIPARRAY 2
#DEFINE RR_TIPCOLLECTION 3
#ENDIF
Define Class oControllerEcr As Custom
cNrDispozitiv = []
nNumarBon = 0
nNumarTichete1 = 0
nPretTichet1 = 0
nNumarTichete2 = 0
nPretTichet2 = 0
nValoareTichete = 0
nValoareCard = 0
nValoareReducere= 0
nProcentReducere= 0
nValoareNumerar = 0
nValoareTotal = 0
cCursor = Null
cNumeFirma = Null
cFirma = Null
cUtilizator = Null
cNumeProgram = Null
cDescriere = Null
cCaleProgramIni = [C:\ROAPRINT\ROAPRINT.EXE]
cCaleFisierIni = [C:\ROA.BON]
cCaleProgram = Null
cCaleFisier = Null
tDataOra = {}
cSchemaTip = [0;TIP N(2);DENUMIRE C(50);CANTITATE N(10,4);PRET N(10,4);UM C(10);COTATVA N(5,2);DEPARTAMENT N(2);]
**********************************************************************************************************************************
Procedure Init
This.cNumeProgram = gcNumeProgram
Endproc
**********************************************************************************************************************************
Procedure Reset
With This
.cNrDispozitiv = []
.nNumarBon = 0
.nNumarTichete1 = 0
.nPretTichet1 = 0
.nNumarTichete2 = 0
.nPretTichet2 = 0
.nValoareTichete = 0
.nValoareCard = 0
.nValoareReducere = 0
.nProcentReducere = 0
.nValoareNumerar = 0
.nValoareTotal = 0
.cCursor = Null
.cNumeFirma = Null
.tDataOra = {}
.cCaleProgram = .cCaleProgramIni
.cCaleFisier = .cCaleFisierIni
.cFirma = Null
.cUtilizator = Null
.cDescriere = Null
Endwith
Endproc
**********************************************************************************************************************************
Procedure initializeaza_util_firma
Lparameters tcUtilizator,tcNumeFirma,tcFirma,tcDescriere
This.cUtilizator = tcUtilizator
This.cNumeFirma = tcNumeFirma
This.cFirma = tcFirma
This.cDescriere = tcDescriere
Endproc
**********************************************************************************************************************************
Procedure initializeaza_date
Lparameters toHash
Local ltDataOra,lnNumarTichete1,lnNumarTichete2
With This
lnNumarTichete1 = toHash.getValue("nNumarTichete1")
lnNumarTichete2 = toHash.getValue("nNumarTichete2")
ltDataOra = toHash.getValue("tDataOra")
.cNrDispozitiv = toHash.getValue("cTip")
.cCursor = toHash.getValue("cCursor")
.nNumarBon = toHash.getValue("nNumarBon")
.nValoareNumerar = toHash.getValue("nValoareNumerar")
.nValoareCard = toHash.getValue("nValoareCard")
.nProcentReducere = toHash.getValue("nProcentReducere")
.nValoareReducere = toHash.getValue("nValoareReducere")
.nValoareTotal = toHash.getValue("nValoareTotal")
IF EMPTY(NVL(.cNumeFirma,[]))
.cNumeFirma = gcS
ENDIF
.tDataOra = Iif(Empty(Nvl(ltDataOra,{})),Datetime(),ltDataOra)
IF EMPTY(NVL(.cUtilizator,[]))
.cUtilizator = gcUsernameApp
ENDIF
IF EMPTY(NVL(.cFirma,[]))
.cFirma = gcFirma
ENDIF
If !Empty(Nvl(lnNumarTichete1,0))
.nNumarTichete1 = lnNumarTichete1
.nPretTichet1 = toHash.getValue("nPretTichet1")
Endif
If !Empty(Nvl(lnNumarTichete2,0))
.nNumarTichete2 = lnNumarTichete2
.nPretTichet2 = toHash.getValue("nPretTichet2")
Endif
If !Empty(Nvl(lnNumarTichete1,0)) Or !Empty(Nvl(lnNumarTichete2,0))
.nValoareTichete = toHash.getValue("nValoareTichete")
Endif
Endwith
Endproc
**********************************************************************************************************************************
Procedure initializeaza_cai
Local lcBonFile,lcRoaPrint, loEx
Store "" To lcBonFile,lcRoaPrint
DO case
CASE Type('goApp.oSettings') <> 'U'
lcBonFile = goApp.oSettings.GetValue("calebon")
lcRoaPrint = goApp.oSettings.GetValue("caleroaprint")
CASE TYPE('gcGeneralIniFile') = 'C' AND FILE(m.gcGeneralIniFile)
TRY
lcBonFile = getini(m.gcGeneralIniFile,"ecr","calebon")
lcRoaPrint = getini(m.gcGeneralIniFile,"ecr","caleroaprint")
IF EMPTY(m.lcRoaPrint)
lcRoaPrint = Addbs(Left(gcAppPath,Rat("\",gcAppPath,2)-1)) + [ROAPRINT\ROAPRINT.EXE]
ENDIF
IF EMPTY(m.lcBonFile) AND DIRECTORY('C:\temp')
lcBonFile = [c:\temp\roa.bon]
ENDIF
CATCH TO loEx
lcRoaPrint = Addbs(Left(gcAppPath,Rat("\",gcAppPath,2)-1)) + [ROAPRINT\ROAPRINT.EXE]
ENDTRY
OTHERWISE
lcRoaPrint = Addbs(Left(gcAppPath,Rat("\",gcAppPath,2)-1)) + [ROAPRINT\ROAPRINT.EXE]
ENDCASE
This.cCaleFisier = Iif(Empty(lcBonFile),This.cCaleFisierIni,lcBonFile)
This.cCaleProgram = Iif(Empty(lcRoaPrint),This.cCaleProgramIni,lcRoaPrint)
Endproc
**********************************************************************************************************************************
Procedure imprima
Lparameters toHash
Local lcCursor
lcCursor = toHash.GetValue("cCursor")
If !Empty(Nvl(lcCursor,[])) And Used(lcCursor)
With This
.initializeaza_date(toHash)
.initializeaza_cai()
.bon2ecr()
.Reset()
Endwith
Endif
Endproc
**********************************************************************************************************************************
Procedure bon2ecr
Local lcRun, lcCurentDir
Local lcSelect, lnSucces
Local loEx As Exception
Local lcBon, lcDirectoryCaleFisier
lcBon = ""
lnSucces = CT_INSUCCES
lcSelect = Select()
*!* ROAX FIRMATEST 1;2;3; MARIUS A 12:00:00 AM 7/7/2006
*!* 0;TIP N(2);DENUMIRE C(50);CANTITATE N(10,4);PRET N(10,4);UM C(10);COTATVA N(5,2);DEPARTAMENT N(2);
lcBon = This.cNumeProgram + CTAB + Allt(This.cNumeFirma) + CTAB + Allt(this.cNrDispozitiv) + CTAB + Allt(This.cUtilizator) + CTAB + Ttoc(This.tDataOra) + ;
CTAB + allt(NVL(This.cFirma,[])) + CTAB + allt(NVL(This.cDescriere,[])) + CTAB + allt(str(NVL(This.nNumarBon,0))) + CRLF
lcBon = lcBon + This.cSchemaTip + CRLF
*!* modificare 15.07.2010 : am adaugat coloanele PROCENT si DISCOUNT
*!* (lcCursor) trebuie sa aiba coloanele : DENUMIRE C(100), UM C(10), CANT N(10,4), PRET N(18,4), DEPARTAMENT N(2), PROC_TVAV N(5,2), PROCENT N(5,2), DISCOUNT N(2)
*!* modificare 15.07.2010
*!* Select (This.cCursor)
*!* Scan
*!* *!* 1;ARDEI GRAS CU LIPTAUER 120 GR;1;0.1;PORTIE;1.19;1;
*!*
*!* lcBon = lcBon + [1;] + Alltrim(DENUMIRE) + [;] + Alltrim(Transform(CANT)) + [;] + Alltrim(Transform(Pret)) + [;] + Alltrim(NVL(UM,[])) + [;] + Alltrim(Transform(PROC_TVAV)) + [;] + Alltrim(Transform(Nvl(DEPARTAMENT,1))) + [;] + CRLF
*!* *!* modificare 0.9.27 : NVL(um,[])
*!* Endscan
lnCampuri = AFIELDS(laColoaneBon,This.cCursor)
If lnCampuri = 8
Select (This.cCursor)
Scan
Do Case
Case discount = 1 && discount articol anterior
lcBon = lcBon + [3;] + Alltrim(DENUMIRE) + [;] + Alltrim(Transform(CANT)) + [;] + Alltrim(Transform(procent)) + [;] + Alltrim(Nvl(UM,[BUC])) + [;] + Alltrim(Transform(PROC_TVAV)) + [;] + Alltrim(Transform(Nvl(DEPARTAMENT,1))) + [;] + CRLF
Case discount = 2 && discount subtotal
lcBon = lcBon + [4;] + Alltrim(DENUMIRE) + [;] + Alltrim(Transform(CANT)) + [;] + Alltrim(Transform(procent)) + [;] + Alltrim(Nvl(UM,[BUC])) + [;] + Alltrim(Transform(PROC_TVAV)) + [;] + Alltrim(Transform(Nvl(DEPARTAMENT,1))) + [;] + CRLF
Case cant < 0 AND pret > 0 && discount valoric subtotal; cantitatea nu poate fi negativa la casa de marcat. o tratez ca o reducere valorica
lcBon = lcBon + [41;] + Alltrim(DENUMIRE) + [;] + [1] + [;] + Alltrim(Transform(ABS(cant*pret))) + [;] + Alltrim(Nvl(UM,[BUC])) + [;] + Alltrim(Transform(PROC_TVAV)) + [;] + Alltrim(Transform(Nvl(DEPARTAMENT,1))) + [;] + CRLF
Case pret < 0 AND cant > 0 && discount valoric subtotal; bon fiscal conform factura, se cumuleaza articolele, iar discount-ul global apare cu cantitate = 1 si sum(pret) negativ
lcBon = lcBon + [41;] + Alltrim(DENUMIRE) + [;] + [1] + [;] + Alltrim(Transform(ABS(cant*pret))) + [;] + Alltrim(Nvl(UM,[BUC])) + [;] + Alltrim(Transform(PROC_TVAV)) + [;] + Alltrim(Transform(Nvl(DEPARTAMENT,1))) + [;] + CRLF
Otherwise
lcBon = lcBon + [1;] + Alltrim(DENUMIRE) + [;] + Alltrim(Transform(CANT)) + [;] + Alltrim(Transform(Pret)) + [;] + Alltrim(Nvl(UM,[BUC])) + [;] + Alltrim(Transform(PROC_TVAV)) + [;] + Alltrim(Transform(Nvl(DEPARTAMENT,1))) + [;] + CRLF
Endcase
Endscan
Else
Select (This.cCursor)
Scan
*!* 1;ARDEI GRAS CU LIPTAUER 120 GR;1;0.1;PORTIE;1.19;1;
lcBon = lcBon + [1;] + Alltrim(DENUMIRE) + [;] + Alltrim(Transform(CANT)) + [;] + Alltrim(Transform(Pret)) + [;] + Alltrim(Nvl(UM,[BUC])) + [;] + Alltrim(Transform(PROC_TVAV)) + [;] + Alltrim(Transform(Nvl(DEPARTAMENT,1))) + [;] + CRLF
*!* modificare 0.9.27 : NVL(um,[])
Endscan
Endif
*!* modificare 15.07.2010 ^
*!* 2;NUMERAR;0;0.5;
*!* 2;PROCENTDISCOUNT;0;10.50;
*!* modificare ROARESTAURANT v 0.9.30
*!* If This.nProcentReducere > 0
*!* lcBon = lcBon + [2;PROCENTDISCOUNT;0;] + ALLTRIM(TRANSFORM(This.nProcentReducere)) + [;] + CRLF
*!* *!* lcBon = lcBon + [2;REDUCERE;0;] + Alltrim(Transform(This.nValoareReducere)) + [;] + CRLF
*!* Endif
IF This.nProcentReducere > 0
lcBon = lcBon + [2;DISCOUNT;0;] + ALLTRIM(TRANSFORM(This.nValoareReducere)) + [;] + CRLF
lcBon = lcBon + [2;PROCENTDISCOUNT;0;] + ALLTRIM(TRANSFORM(This.nProcentReducere)) + [;] + CRLF
*!* lcBon = lcBon + [2;REDUCERE;0;] + Alltrim(Transform(This.nValoareReducere)) + [;] + CRLF
ENDIF
*!* modificare ROARESTAURANT v 0.9.30 ^
If This.nNumarTichete1 > 0
lcBon = lcBon + [2;NUMARTICHETE1;0;] + Alltrim(Transform(This.nNumarTichete1)) + [;] + CRLF
lcBon = lcBon + [2;PRETTICHET1;0;] + Alltrim(Transform(This.nPretTichet1)) + [;] + CRLF
Endif
If This.nNumarTichete2 > 0
lcBon = lcBon + [2;NUMARTICHETE2;0;] + Alltrim(Transform(This.nNumarTichete2)) + [;] + CRLF
lcBon = lcBon + [2;PRETTICHET2;0;] + Alltrim(Transform(This.nPretTichet2)) + [;] + CRLF
Endif
If This.nValoareCard > 0
lcBon = lcBon + [2;CARD;0;] + Alltrim(Transform(This.nValoareCard)) + [;] + CRLF
Endif
If This.nValoareNumerar > 0
lcBon = lcBon + [2;NUMERAR;0;] + Alltrim(Transform(This.nValoareNumerar)) + [;] + CRLF
Endif
lcDirectoryCaleFisier = JUSTPATH(This.cCaleFisier)
IF !DIRECTORY(m.lcDirectoryCaleFisier)
TRY
MD (m.lcDirectoryCaleFisier)
CATCH
AMESSAGEBOX('Nu exista directorul ' + m.lcDirectoryCaleFisier + ' si nu s-a putut crea! Creati-l manual!',0+32,_screen.Caption)
ENDTRY
ENDIF
Try
Strtofile(lcBon, This.cCaleFisier)
If File(This.cCaleProgram)
lcCurentDir = Sys(5) + Curdir()
Cd Justpath(This.cCaleProgram)
lcRun = Juststem(This.cCaleProgram) + [("] + This.cCaleFisier + [")]
llSucces = &lcRun
Cd (lcCurentDir)
lnSucces = Iif(llSucces, CT_SUCCES, CT_INSUCCES)
Else
lnSucces = CT_INSUCCES
AMESSAGEBOX('Nu exista ' + This.cCaleProgram + ' !',16,'Eroare')
Endif
Catch To loEx
goLog.Log(m.lcBon)
goLog.log('Fisier bon this.cCaleFisier: ' + this.cCaleFisier + " exista: " + TRANSFORM(FILE(this.cCaleFisier)))
goLog.Log('This.cCaleProgram: ' + This.cCaleProgram)
lnSucces = CT_INSUCCES
AMESSAGEBOX(loEx.Message + CRLF + loEx.Procedure + CRLF + loEx.LineContents + CRLF + loEx.LineContents + CRLF + ;
'Fisier bon this.cCaleFisier: ' + this.cCaleFisier + " exista: " + TRANSFORM(FILE(this.cCaleFisier)),16,'Eroare')
Endtry
Select (lcSelect)
Return lnSucces
Endproc && bon2ecr
**********************************************************************************************************************************
Enddefine

1556
COMUN/programe/email.prg Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
LPARAMETERS tabel, initial, final
LOCAL nrc, i, c
STORE 0 TO nrc, i
STORE '' TO c
lcDir = ADDBS(gcTempPath)
CD (lcDir)
exista_excel=.F.
initial = ','+initial+',' &&Pentru a recunoste coloanele'
final = ','+final+',' &&---||---
nrc = OCCURS(',', '&initial')
nrc=nrc-1 && scade vircula din fata
LOCAL ARRAY c_initial(nrc)
LOCAL ARRAY c_final(nrc)
FOR i = 1 TO nrc
n = AT(',', '&initial', i)
n2 =AT(',', '&initial', i+1)
c_Initial[i] = SUBSTR('&initial', n+1, n2-n-1)
*MESSAGEBOX(c_initial[i])
n = AT(',', '&final', i)
n2 =AT(',', '&final', i+1)
c_final[i] = SUBSTR('&final', n+1, n2-n-1)
*MESSAGEBOX(c_final[i])
ENDFOR
FOR i=1 TO nrc
IF i=nrc
c=c+c_initial[i]+' as '+c_final[i]
ELSE
c=c+c_initial[i]+' as '+c_final[i]+','
ENDIF
ENDFOR
calea_fis = PUTFILE('Nume fisier:', 'Foaie_Excel', 'XLS')
IF EMPTY(calea_fis) && Esc pressed
RETURN
ENDIF
SELECT &c FROM &tabel INTO CURSOR cur
SELECT cur
EXPORT TO (calea_fis) TYPE XL5
OPEN_default_app(calea_fis)
USE IN cur

View File

@@ -0,0 +1,209 @@
Function BringFile
Lparameters cFilePath,lcprogram,tcLocalFile
*!* modificare ROARESTAURANT v 1.0.0
LOCAL lnTransferTotal
lnTransferTotal = -1
*!* modificare ROARESTAURANT v 1.0.0 ^
If !Empty(tcLocalFile)
lcLocalFile=tcLocalFile
Else
If At("_",lcprogram)#0
lccurrentUR=Substr(lcprogram,At("_",lcprogram)+1)
* MESSAGEBOX(lccurrentUR)
Else
lccurrentUR=lcprogram
Endif
mypath=GetIniPath()
mypath=Substr(mypath,1,Rat("\",mypath,1))
Try
Md mypath+lccurrentUR+"\"
Catch To loex
Endtry
lcLocalFile=Alltrim(GetCurrentTempPath(lcprogram))
Endif
* Do Form waitwindow Name frmwait
polog.Log("Fisierul care trebuie descarcat este "+cFilePath,Program())
If (Occurs('/', cFilePath)>0)
*WAIT WINDOW AT 10,10 NOWAIT "Se downloadeaza fisierul..."
polog.Log([Createobject("wwCodeUpdate")],Program())
loUpdate=Createobject("wwCodeUpdate")
*!* loUpdate.cExeFile = lcprogram+".exe"
If Isnull(loUpdate.oHTTP)
loIP = loUpdate.CreateHTTPClient()
Else
loIP = loUpdate.oHTTP
Endif
loIP.lShowDialog = .T.
loUrl = loIP.InternetCrackUrl(cFilePath)
If Isnull(loUrl)
Return .F.
Endif
myinihandler=Createobject("iniaccess")
loIP.nhttpport=Val(loUrl.cPort)
If loIP.HTTPConnect(loUrl.cServer,myinihandler.getUsername(),myinihandler.getPassword(),;
IIF(Lower(loUrl.cProtocol)="https",.T.,.F.)) # 0
loUpdate.SetError(loIP.cErrorMsg)
Release myinihandler
polog.Log([loIP.HTTPConnect(] + loUrl.cServer + [)#0],Program())
Return .F.
Else
Release myinihandler
lcTFile = lcLocalFile
lcData = ""
lnSize = 0
polog.Log([loIP.HTTPGetEx(] + Trim(loUrl.cPath) + [)],Program())
If(loIP.HTTPGetEx( Trim(loUrl.cPath),@lcData,@lnSize,,lcTFile)=0)
polog.Log([lnSize=] + alltrim(transform(m.lnSize)),Program())
TransferHandlerResult=lnSize
else
polog.Log([loIp.cerrormsg=] + alltrim(transf(loIp.nerror)) + ' ' + alltrim(transform(nvl(loIp.cerrormsg,''))),Program())
TransferHandlerResult=0
endif
polog.Log([lnSize=] + alltrim(transform(m.lnSize)),Program())
polog.Log([loIP.nContentSize=] + alltrim(transform(loIP.nContentSize)),Program())
If lnSize#loIP.nContentSize
TransferHandlerResult=0
Endif
Endif
* TransferHandlerResult= DownLoadURL(cFilePath,cLocalFile,"FeedBack",1000,.T.)
polog.Log("TransferHandlerResult = "+Alltrim(Transform(TransferHandlerResult)),Program())
Else
*WAIT WINDOW NOWAIT "Se copiaza fisierul..."
*!* If Left(cFilePath,1)="\"
*!* cFilePath=Right(cFilePath,Len(cFilePath)-1)
*!* Endif
*!* cFilePath=lcNetworkPath+cFilePath
If(PathFileExists(cFilePath)=1)
scomp=Set('comp')
Set Compatible On
nsize=Fsize(cFilePath)
Set Compatible &scomp
loProgressForm = Createobject("wwProgressForm")
loProgressForm.SetCaption("Se descarc<72> actualizarea...")
*!* loProgressForm.ShowCancelButton()
loProgressForm.Show()
*!* IF loProgressForm.lCancelled
loProgressForm.SetDescription("S-au primit de la "+Justpath(cFilePath)+":" +Chr(13)+;
"0 din "+Ltrim(Transform(nsize,"999,999,999"))+ " bytes")
*!* THIS.oProgressForm.SetDescription("Received from " + THIS.cServer + ":" +CHR(13) +;
*!* LTRIM( TRANSFORM(lnbytes,"999,999,999") ) + " of " +;
*!* LTRIM(TRANSFORM(THIS.nContentSize,"999,999,999"))+ " bytes")
*!* THIS.oProgressForm.SetProgress(lnbytes/THIS.nContentSize * 100)
loProgressForm.SetProgress(0)
loProgressForm.SetDescription("S-au primit de la "+Justpath(cFilePath)+":" +Chr(13)+;
LTRIM(Transform(nsize*0.05,"999,999,999"))+" din "+Ltrim(Transform(nsize,"999,999,999"))+ " bytes")
loProgressForm.SetProgress(5)
TransferHandlerResult= CopyFile(cFilePath, lcLocalFile, .F.)
loProgressForm.SetDescription("S-au primit de la "+Justpath(cFilePath)+":" +Chr(13)+;
LTRIM(Transform(nsize,"999,999,999"))+" din "+Ltrim(Transform(nsize,"999,999,999"))+ " bytes")
loProgressForm.SetProgress(100)
loProgressForm = .F.
Else
*MESSAGEBOX("Update-ul nu a fost gasit la locatia XML-ului")
polog.Log("A incercat cu CopyFile si nu a mers = ",Program())
TransferHandlerResult=0
Endif
Endif
* frmwait.Release()
*WAIT CLEAR
If (TransferHandlerResult!=0 And TransferHandlerResult!=-1)
*!* modificare ROARESTAURANT v 1.0.0
*!* If gTransferTotal!=-1
IF lnTransferTotal != -1
If TransferHandlerResult=gTransferTotal
lnTransferTotal = -1
*!* gTransferTotal=-1
Return .T.
Else
lnTransferTotal = -1
*!* gTransferTotal=-1
polog.Log("TransferHandlerresult != TransferTotal ",Program())
Return .F.
Endif
Endif
*!* modificare ROARESTAURANT v 1.0.0 ^
Return .T.
Else
If TransferHandlerResult=0
polog.Log("TransferHandlerresult = 0",Program())
Endif
If TransferHandlerResult=-1
polog.Log("TransferHandlerresult = -1",Program())
Endif
Return .F.
Endif
Endfunc
Function StripXmlFile
Lparameters cXmlString
Return Strextract(Alltrim(cXmlString),"(",")",1)
Endfunc
Function FeedBack
* if this function returned with .f., downloading would terminate
* it is called after each 100 byte downloaded. (You can alter this value!)
Lparameters tiAll, tiCount
gTransferTotal=tiAll
frmwait.label1.Caption = "Desc<73>rcare " + Alltrim(Str(tiCount/1000)) + " kb din " + Alltrim(Str(tiAll/1000)) + " kb"
procent = (tiCount*100)/tiAll
frmwait._progressbar1.Update(procent)
If !gcmdCancelDownload
Return .T.
Else
gcmdCancelDownload= .F.
Return .F.
Endif
Endfunc
Function CheckProcess
Lparameters ProgramCheck
ProgramtoCheck=Addbs(gcDirMare) + ProgramCheck + "\"+ProgramCheck + ".exe"
ProgramProba= Addbs(gcDirMare) + ProgramCheck + "\" + ProgramCheck + "Proba.exe"
Local loex As Exception
err=.F.
If File("&ProgramtoCheck")
Copy File &ProgramtoCheck To &ProgramProba
Else
Return .F.
Endif
Try
Delete File &ProgramtoCheck
Catch To loex
If loex.ErrorNo=1705
err= .T.
Endif
Endtry
If err=.F.
Copy File &ProgramProba To &ProgramtoCheck
Delete File &ProgramProba
Endif
Return err
Endfunc

View File

@@ -0,0 +1,132 @@
PROCEDURE gencursor
PARAMETERS tcnume, tcalias, tcselect, tcfiltru, tcschema, tcorder, tlAfisare, tcgroup, tlModParam, tcFiltruOriginal
&& lcSelect, lcFiltru, lcSchema, lcOrder, llAfisare, lcGroup, llModParam, lcFiltruOriginal
&& MODIFICAT 28.02.2005
&& tlModParam = .T. daca gencursor functioneaza fara WHERE inclus in tcSelect original
&& tcFiltruOriginal : .T. daca conditia care urmeaza dupa where este salvata si adaugata la query-urile ulterioare
LOCAL llModParam, lcFiltruOriginal
IF EMPTY(tlModParam) OR TYPE('tlModParam') # 'L'
llModParam = .F.
ELSE
llModParam = tlModParam
ENDIF
IF EMPTY(tcFiltruOriginal) OR TYPE('tcFiltruOriginal') # 'C'
lcFiltruOriginal = ''
ELSE
lcFiltruOriginal = ALLTRIM(tcFiltruOriginal)
ENDIF
&tcnume=NEWOBJECT('deca_baza')
&tcnume..ADDOBJECT('ca_baza1','ca_baza')
IF TYPE('goConn') = 'O'
&tcNume..datasource = goConn.nHandle
ELSE
IF TYPE('gnHandle') = 'N'
&tcNume..datasource = gnHandle
ENDIF
ENDIF
*lcSelect = TRANSFORM(UPPER(ALLTRIM(tcSelect)),[']
LOCAL laEroare
DECLARE laEroare[1]
lnpCount = PCOUNT()
llAfisare = tlAfisare
WITH &tcnume..ca_baza1
IF lnpCount > 6
.lAfisare = llAfisare
ENDIF
.ALIAS=ALLTRIM(UPPER(tcalias))
IF !EMPTY(tcschema)
IF INLIST(LEFT(tcschema,1),['],["],'[')
.CURSORSCHEMA=&tcschema
ELSE
IF LEN(tcschema) > 250
lngrupe = CEILING(LEN(tcschema)/250)
lcgrupa = tcschema
FOR i = 1 TO lngrupe
lcgrupat = LEFT(lcgrupa,250)
.CURSORSCHEMA = .CURSORSCHEMA + lcGrupat
lcgrupa = SUBSTR(lcgrupa,251)
ENDFOR
ELSE
.CURSORSCHEMA=tcschema
ENDIF
ENDIF
ENDIF
IF INLIST(LEFT(tcselect,1),['],["],'[')
.SELECTCMD = &tcselect
.cSelect = &tcselect
ELSE
IF LEN(tcselect) > 250
lngrupe = CEILING(LEN(tcSelect)/250)
lcgrupa = tcSelect
FOR i = 1 TO lngrupe
lcgrupat = LEFT(lcgrupa,250)
.SELECTCMD = .SELECTCMD + lcGrupat
.cSelect = .cSelect + lcGrupat
lcgrupa = SUBSTR(lcgrupa,251)
ENDFOR
ELSE
.SELECTCMD = tcselect
.cSelect = tcselect
ENDIF
ENDIF
*!* STRTOFILE(.selectcmd,[c:\selectcmd.txt])
.cfiltru=ALLTRIM(UPPER(tcfiltru))
IF !EMPTY(tcorder)
.cOrder=ALLTRIM(UPPER(tcorder))
ENDIF
IF !EMPTY(tcgroup)
.cGroup=ALLTRIM(UPPER(tcgroup))
ENDIF
.lModParam = llModParam
.cFiltruOriginal = lcFiltruOriginal
ENDWITH
*!* IF !USED(tcAlias)
*!* AERROR(laEroare)
*!* IF TYPE('LAEROARE')!= 'U'
*!* IF ALEN(laEroare) > 1
*!* IF TYPE('goLog')='O'
*!* lcLog = laEroare(3) + CHR(13) + 'SELECT: ' + tcSelect + CHR(13) + 'SCHEMA: ' + tcSchema + CHR(13) + 'FILTRU: ' + tcFiltru + CHR(13) + 'ORDINE: ' + tcOrder
*!* goLog.Log(lcLog,PROGRAM())
*!* ENDIF
*!* MESSAGEBOX(laEroare(3),0+16,"Eroare")
*!* ENDIF
*!* ENDIF
*!* ENDIF
*!* RELEASE laEroare
ENDPROC
PROCEDURE gencursor_hash
PARAMETERS toHash
LOCAL lcNume, lcAlias, lcSelect, lcFiltru, lcSchema, lcOrder, llAfisare, lcGroup, llModParam, lcFiltruOriginal
lcNume = toHash.GetValue('cNume')
lcAlias = toHash.GetValue('cAlias')
lcSelect = toHash.GetValue('cSelect')
lcFiltru = toHash.GetValue('cFiltru')
lcSchema = toHash.GetValue('cSchema')
lcOrder = toHash.GetValue('cOrder')
llAfisare = toHash.GetValue('lAfisare')
lcGroup = toHash.GetValue('cGroup')
llModParam = toHash.GetValue('lModParam')
lcFiltruOriginal = toHash.GetValue('cFiltruOriginal')
= gencursor(lcnume, lcalias, lcselect, lcfiltru, lcschema, lcorder, llAfisare, lcgroup, llModParam, lcFiltruOriginal)
ENDPROC && gencursor_hash

View File

@@ -0,0 +1,177 @@
LPARAMETERS tcConnection, tcTable, tlNull, tcFormat, tnMaxCharFormat, tcPrefix, tcSufix
*!* EX:
*!* Set Procedure To GET_SCHEMA.PRG Additive
*!* LOSCHEMA = GET_SCHEMA("JCSSERVER;MARIUSM_AUTO;123","VACT",.F.,"FOX", 100, "['", " '] + ;")
*!* DO GET_SCHEMA - PUNE IN _CLIPBOARD COLOANELE SI SCHEMA
#DEFINE CRLF CHR(13) + CHR(10)
LOCAL lcTable, lcConnection, loReturn
LOCAL lcSelect, lcSchema, i, lcGrupat, lcGrupa
lcTable = ''
lcConnection = ''
loReturn = CREATEOBJECT("empty")
ADDPROPERTY(loReturn,"cSelect", "")
ADDPROPERTY(loReturn,"cSchema", "")
IF !EMPTY(tcConnection)
lcConnection = tcConnection
ELSE
lcConnection = 'JCSSERVER;MARIUSM_AUTO;123'
lcConnection = INPUTBOX('Conexiune', 'Conexiune', lcConnection)
ENDIF
IF !(EMPTY(lcConnection) OR OCCURS(';', lcConnection) < 2)
IF !EMPTY(tcTable)
lcTable = tcTable
ELSE
lcTable = INPUTBOX('Tabel', 'Tabel', lcTable)
ENDIF
IF !EMPTY(lcTable)
lcTable = UPPER(lcTable)
IF PCOUNT() = 0 && am apelat functia fara parametri
tcFormat = INPUTBOX("Formatare","FOX","FOX")
ENDIF
IF PCOUNT() = 0
tlNull = .T.
ENDIF
lcCursor = 'cResult'
lcSelect = [select COLUMN_NAME, DATA_TYPE, DATA_PRECISION, DATA_SCALE, DATA_LENGTH, NULLABLE ] + ;
[ FROM user_tab_columns where table_name = '] + lcTable + [' order by column_id]
*!* lcSelect = [SELECT stringagg(COLUMN_NAME) CSELECT,] + ;
*!* [ stringagg(COLUMN_NAME || ' ' ||] + ;
*!* [ DECODE(DATA_TYPE,] + ;
*!* [ 'NUMBER',] + ;
*!* [ 'N(' || LEAST(NVL(DATA_PRECISION,DATA_LENGTH), 20) ||] + ;
*!* [ (CASE NVL(DATA_SCALE,0)] + ;
*!* [ WHEN 0 THEN] + ;
*!* [ ')'] + ;
*!* [ ELSE] + ;
*!* [ ',' || DATA_SCALE || ')'] + ;
*!* [ END) || (CASE NULLABLE WHEN 'N' THEN ' NOT NULL' ELSE ' NULL' END),] + ;
*!* [ 'DATE',] + ;
*!* [ (CASE] + ;
*!* [ WHEN COLUMN_NAME LIKE 'DATAORA%' THEN] + ;
*!* [ 'T'] + ;
*!* [ ELSE] + ;
*!* [ 'D'] + ;
*!* [ END) || (CASE NULLABLE WHEN 'N' THEN ' NOT NULL' ELSE ' NULL' END),] + ;
*!* [ 'VARCHAR2',] + ;
*!* [ (CASE WHEN NVL(DATA_LENGTH,0) > 254 THEN 'M' ELSE ] + ;
*!* [ 'V(' || DATA_LENGTH || ')' END)|| (CASE NULLABLE WHEN 'N' THEN ' NOT NULL' ELSE ' NULL' END),] + ;
*!* [ 'CHAR',] + ;
*!* [ (CASE WHEN NVL(DATA_LENGTH,0) > 254 THEN 'M' ELSE ] + ;
*!* [ 'V(' || DATA_LENGTH || ')' END) || (CASE NULLABLE WHEN 'N' THEN ' NOT NULL' ELSE ' NULL' END),] + ;
*!* [ 'CLOB',] + ;
*!* [ 'M' || (CASE NULLABLE WHEN 'N' THEN ' NOT NULL' ELSE ' NULL' END),] + ;
*!* [ 'M' || (CASE NULLABLE WHEN 'N' THEN ' NOT NULL' ELSE ' NULL' END))) CSCHEMA] + ;
*!* [ FROM (select COLUMN_NAME,] + ;
*!* [ DATA_TYPE,] + ;
*!* [ DATA_PRECISION,] + ;
*!* [ DATA_SCALE,] + ;
*!* [ DATA_LENGTH,] + ;
*!* [ NULLABLE] + ;
*!* [ FROM user_tab_columns] + ;
*!* [ where table_name = '] + lcTable + ['] + ;
*!* [ order by column_id)]
lcHost = GETWORDNUM(lcConnection,1,';')
lcUser = GETWORDNUM(lcConnection,2,';')
lcPassword = GETWORDNUM(lcConnection,3,';')
X= SQLCONNECT(lcHost, lcUser, lcPassword)
IF X < 0
AERROR(laErr)
MESSAGEBOX(laErr(3))
RETURN
ENDIF
lnSucces = SQLEXEC(X, lcSelect, lcCursor)
IF lnSucces < 0
AERROR(laErr)
MESSAGEBOX(laErr(3))
ELSE
lcSchema = ""
lcSelect = ""
SELECT (lcCursor)
SCAN
DO CASE
CASE DATA_TYPE = 'NUMBER'
lcItemSchema = 'N(' + ALLTRIM(STR(MIN(NVL(DATA_PRECISION,DATA_LENGTH), 20))) + ;
IIF(NVL(DATA_SCALE,0) = 0, ')', ',' + ALLTRIM(STR(DATA_SCALE)) + ')')
CASE DATA_TYPE = 'DATE'
lcItemSchema = IIF('DATAORA'$COLUMN_NAME, 'T', 'D')
CASE DATA_TYPE = 'VARCHAR2'
lcItemSchema = IIF(NVL(DATA_LENGTH,0) > 254, 'M', 'V(' + ALLTRIM(STR(NVL(DATA_LENGTH,0))) + ')')
CASE DATA_TYPE = 'CHAR'
lcItemSchema = IIF(NVL(DATA_LENGTH,0) > 254, 'M', 'C(' + ALLTRIM(STR(NVL(DATA_LENGTH,0))) + ')')
OTHERWISE
lcItemSchema = 'M'
ENDCASE
lcSchema = lcSchema + ALLTRIM(COLUMN_NAME) + ' ' + lcItemSchema + IIF(tlNull, IIF(NULLABLE = 'N',' NOT NULL',' NULL'), '') + ','
lcSelect = lcSelect + ALLTRIM(COLUMN_NAME) + ','
ENDSCAN
IF !EMPTY(lcItemSchema)
lcSchema = LEFT(lcSchema , LEN(lcSchema )-1)
lcSelect = LEFT(lcSelect , LEN(lcSelect )-1)
ENDIF
USE IN SELECT(lcCursor)
&& FORMATARE TEXT - 250 CARACTERE PE RAND
IF UPPER(ALLTRIM(TRANSFORM(tcFormat))) = 'FOX'
lcSelect = format_fox(lcSelect, tnMaxCharFormat, tcPrefix, tcSufix)
lcSchema = format_fox(lcSchema, tnMaxCharFormat, tcPrefix, tcSufix)
ENDIF && UPPER(tcFormat) = 'FOX'
_CLIPTEXT = ALLTRIM(lcSelect) + CHR(13) + CHR(10) + ALLTRIM(lcSchema)
loReturn.cSelect = ALLTRIM(lcSelect)
loReturn.cSchema = ALLTRIM(lcSchema)
ENDIF
SQLDISCONNECT(X)
WAIT WINDOW 'Schema este in Clipboard' NOWAIT
ENDIF
ENDIF
RETURN loReturn
PROCEDURE format_fox
LPARAMETERS tcText, tnMaxCharFormat, tcPrefix, tcSufix
LOCAL lcText, lcGrupa, lcRezultat
lcRezultat = ""
lcText = tcText
IF PCOUNT() < 2 OR EMPTY(tnMaxCharFormat) OR TYPE('tnMaxCharFormat') <> 'N'
tnMaxCharFormat = 250
ENDIF
tnMaxCharFormat = MIN(tnMaxCharFormat, 250)
IF PCOUNT() < 3 OR TYPE('tcPrefix') <> 'C' OR EMPTY(tcPrefix)
tcPrefix = "["
ENDIF
IF PCOUNT() < 4 OR TYPE('tcSufix') <> 'C' OR EMPTY(tcSufix)
tcSufix = " ] + ;"
ENDIF
DO WHILE LEN(lcText) > tnMaxCharFormat
lcGrupa = LEFT(lcText, tnMaxCharFormat)
lnAt = RAT(',', lcGrupa)
lcGrupa = LEFT(lcGrupa, lnAt)
lcRezultat = lcRezultat + tcPrefix + lcGrupa + tcSufix + CRLF
lcText = SUBSTR(lcText, lnAt+1)
ENDDO
IF LEN(lcText) > 0
lcRezultat = lcRezultat + tcPrefix + lcText + tcSufix + CRLF
ENDIF
RETURN lcRezultat
ENDPROC && format_fox

View File

@@ -0,0 +1,9 @@
PROCEDURE ALL
SET FILTER TO
ENDPROC
PROCEDURE custom_filter
RETURN
osearchform=CREATEOBJECT("searchform")
osearchform.SHOW()
ENDPROC

View File

@@ -0,0 +1,229 @@
* ointroduceri_efactura.prg
*!* 13.08.2024
*!* vizImportEFactura + discountfaratva
Procedure importEfacturaPrimite
DO vizImportEFactura WITH 'PRIMITE'
ENDPROC
PROCEDURE importEfacturaTrimise
DO vizImportEFactura WITH 'TRIMISE'
ENDPROC
PROCEDURE vizImportEFactura
LPARAMETERS tcTip
* tcTIP: PRIMITE/TRIMISE
Private poFacturi, poFacturiDetalii
Local loFrmFacturi As "frm_efactura_import", lcTip, llPrimite
Local lcData1, lcFiltru, lcFiltruOriginal, lcOrder, lcSchema, lcgroup, llAfiseaza, llModParam
poFacturi = Null
poFacturiDetalii = Null
lcTip = IIF(TYPE('tcTip') = 'C' and !EMPTY(m.tcTip), UPPER(ALLTRIM(m.tcTip)), 'PRIMITE')
llPrimite = (m.lcTip = 'PRIMITE')
lcTabel = IIF(m.lcTip = 'PRIMITE', 'anaf_vefactura_primit', 'anaf_vefactura_trimis')
* FACTURI PRIMITE/TRIMISE
lcData1 = '01' + Padl(Int(m.gnLuna),2,'0') + Alltrim(Str(m.gnAn))
TEXT To lcSchema Noshow
ales N(1), id N(20), id_fact N(20), data_act D, data_scad D, numar_act C(30), xfurnizor C(200), xclient C(200), partener C(200), id_incarcare C(36), id_descarcare c(36) null, tip_mesaj_raspuns C(50) null,mesaj_raspuns C(250) null, data_raspuns D null, trimis N(1) null, data_trimis T null, cod_fiscal C(30) null, cod_fiscal_emitent C(30) null, cod_fiscal_beneficiar C(30) null, detalii M null, total_fara_tva N(16,4), total_tva N(16,4), total_tva_ron N(16,4), total_cu_tva N(16,4), discount_fara_tva N(16,4), taxe_fara_tva N(16,4), valoare_fara_tva N(16,4), total_de_plata N(16,4), nume_valuta C(5), test N(1) null, jtotctva N(16,4), descriere M null, detalii_plata M null, diferenta N(16,4), procesat N(1), SerieActRoa V(10) Null, NrActRoa N(14) Null, IdPartRoa N(10) Null, PartenerRoa V(100) null, codFiscalROA V(20), idValutaROA N(5) null,numeValutaROA V(5) null, cursROA N(16,6) null,Cont c(4) Null,ACont c(4) Null,TVAIncasare N(1),Fdoc V(20) null,Id_Fdoc N(5) Null,Nrord V(100) null,Id_Lucrare I Null,Contract V(100) Null,Id_Ctr I Null,Sectie V(100) null,Id_Sectie I Null,dst_chlt V(100) null, Id_venchelt I NUll, nresp V(100) null, Id_responsabil I NUll , completat N(1), completatdet N(1), creditnote N(1), explicatiaROA V(100) null
ENDTEXT
TEXT To lcSelect TEXTMERGE Noshow
SELECT 0 as ales, id, id_fact, data_act, data_scad, numar_act, xfurnizor, xclient, partener, id_incarcare, id_descarcare, tip_mesaj_raspuns, mesaj_raspuns, data_raspuns, NVL(trimis,0) as trimis, data_trimis, cod_fiscal, cod_fiscal_emitent, cod_fiscal_beneficiar, '' as detalii, total_fara_tva, total_tva, total_tva_ron, total_cu_tva, discount_fara_tva, taxe_fara_tva, valoare_fara_tva, total_de_plata, nume_valuta, test, jtotctva, descriere, detalii_plata, NVL(total_cu_tva, 0.00)-NVL(jtotctva, 0.00) as diferenta, procesat,
'' as SerieActRoa, CAST(null as Number(14)) as NrActRoa, CAST(null as Number(20)) as idPartRoa, '' as PartenerRoa, '' as codFiscalROA, CAST(null as Number(10)) as idValutaROA, '' as numeValutaROA, CAST(null as Number(16,6)) as cursROA,
'' as Cont, '' as acont, 0 as TVAIncasare, '' as Fdoc, CAST(0 as Number(5)) as Id_Fdoc, '' as Nrord, CAST(0 as Number(10)) as id_Lucrare, '' as Contract, CAST(null as Number(10)) as id_ctr,
'' Sectie, CAST(0 as Number(10)) as id_Sectie, '' as dst_chlt, CAST(0 as Number(10)) as id_Venchelt, '' as nresp, CAST(0 as Number(10)) as id_responsabil, 0 as completat, 0 as completatdet, creditnote, '' as explicatiaROA
FROM <<m.lcTabel>>
ENDTEXT
lcOrder = [data_act,numar_act,data_raspuns]
lcgroup = []
lcFiltru = [(extract(year from data_act) = ?gnAn and extract(month from data_act) = ?gnLuna) or (data_act is null and data_raspuns >= to_date('] + m.lcData1 + [','ddmmyyyy'))]
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poFacturi', 'crsFacturi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poFacturi.ca_baza1.afisare()
Select crsFacturi
Go Top
* DETALII FACTURI PRIMITE/TRIMISE/EMISE
TEXT To lcSchema Noshow
distribuie N(1), id_tip N(10) null, id_articol N(20) null, id_gestiune N(20) null, cont C(4) null, acont C(4) null, id N(20), id_efactura N(20), nr N(5), articol V(250), descriere V(250), detalii M, cantitate N(18,6), um V(20), um_iso V(50), um_roa V(50), pret N(20,6), proctva N(7,2), tiptva V(2), valoarefaratva N(20,6), discountfaratva N(20,6), in_stoc N(1), articol_roa V(250), codmat_roa V(50), codbare V(50), codclient V(100), codfurnizor V(100), codcpv V(50), codnc8 V(50), nume_gestiune V(50), cgest V(20), tva N(20,6), pretv N(20,6), tvav N(20,6), pretvtva N(20,6)
ENDTEXT
TEXT To lcSelect Noshow
select 0 as distribuie, CAST(0 as number(10)) as id_tip, id_articol, id_gestiune, cont, acont, id, id_efactura, nr, articol, descriere, detalii, cantitate, um, um_iso, um_roa, pret, proctva, tiptva, valoarefaratva, discountfaratva, in_stoc, articol_roa, codmat_roa, codbare, codclient, codfurnizor, codcpv, codnc8, nume_gestiune, cgest, 0 as tva, 0 as pretv, 0 as tvav, 0 as pretvtva from anaf_vefactura_detalii
ENDTEXT
lcOrder = [nr]
lcgroup = []
lcFiltru = [1=2] && IIF(!EMPTY(NVL(crsFacturiPrimite.id,0)), [id_efactura=] + ALLTRIM(STR(crsFacturiPrimite.id)), [1=2])
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
* In acest cursor se iau doar detaliile pentru factura curenta
gencursor('poFacturiDetalii', 'crsDetaliiFacturiTemp', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poFacturiDetalii.ca_baza1.afisare()
* In acest cursor se vor adauga detaliile de la factura curenta, daca nu exista
* Acest cursor se foloseste in formular
SELECT * FROM crsDetaliiFacturiTemp INTO CURSOR crsDetaliiFacturi READWRITE
* Cursoare helper
CREATE CURSOR cTipArticoleP (id I, in_stoc N(1), tip V(50), cont V(4), ordine I)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (0, 'Nedefinit','', 0, 0)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (1, 'Mat. nestoc.','604', 0, 1)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (2, 'Energie','6051', 0, 2)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (3, 'Apa','6052', 0, 3)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (4, 'Gaze','6053', 0, 4)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES ( 5, 'Chirii','6123', 0, 5)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (6, 'Colaboratori','621', 0, 6)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (7, 'Comisioane','622', 0, 7)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (8, 'Protocol','623', 0, 8)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (9, 'Transp. bunuri/pers.','624', 0, 9)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (10, 'Deplasari','625', 0, 10)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (11, 'Posta/telecom.','626', 0, 11)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (12, 'Terti','628', 0, 12)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (13, 'Altele','461', 0, 13)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (14, '-----------------','', 0, 14)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (15, 'Marfuri','371', 1, 15)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (16, 'Materii prime','301', 1, 16)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (17, 'Materiale auxiliare','3021', 1, 17)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (18, 'Ambalaje','381', 1, 18)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (19, 'Obiecte de inventar','303', 1, 19)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (20, 'Amenajari provizorii','323', 1, 20)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (21, 'Mat. spre prelucrare','8032', 1, 21)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (22, 'Mat. in pastrare/consig.','8033', 1, 22)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (23, 'Discount financiar intrari','767', 0, 23)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (24, 'Combustibili','3022', 1, 24)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (25, 'Piese de schimb','3024', 1, 25)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (26, 'Alte mat. consumabile','3028', 1, 26)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (27, 'Discount comercial intrari','609', 0, 27)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (28, 'Ambalaje SGR','461', 0, 28)
SELECT cTipArticoleP
GO TOP IN cTipArticoleP
INDEX on ordine TAG ordine
CREATE CURSOR cTipArticoleE (id I, in_stoc N(1), tip V(50), cont V(4), ordine I)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (0, 'Nedefinit','', 0, 0)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (29, 'Marfuri','707', 1, 1)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (30, 'Produse finite','701', 1, 2)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (31, 'Produse reziduale','703', 1, 3)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (32, 'Semifabricate','702', 1, 4)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (33, 'Discount financiar iesiri','667', 0, 5)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (34, 'Servicii vandute','704', 0, 6)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (35, 'Discount comercial iesiri','709', 0, 7)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (36, 'Ambalaje SGR','461', 0, 8)
SELECT cTipArticoleE
GO TOP IN cTipArticoleE
INDEX on ordine TAG ordine
IF m.llPrimite
SELECT id, tip, cont, in_stoc, ordine FROM cTipArticoleP ORDER BY ordine INTO CURSOR cTip
ELSE
SELECT id, tip, cont, in_stoc, ordine FROM cTipArticoleE ORDER BY ordine INTO CURSOR cTip
ENDIF
SELECT cTip
INDEX on id TAG id
*!* llSucces = goExecutor.oExecuta("select id_articol, denumire, codmat from vnom_articole where inactiv = 0", 'cArticole')
*!* SELECT cArticole
*!* INDEX on id_articol TAG id_articol
llSucces = goExecutor.oExecuta([select distinct nume_gestiune,cgest,id_gestiune,nr_pag,cont from vgest_gestiuni_util where inactiv = 0 and id_util = ] + Alltrim(Str(m.gnIdUtil)), 'cGestiuni')
SELECT cGestiuni
APPEND BLANK
INDEX on id_gestiune TAG id_gest
select cast(alltrim(nume_gestiune) + '-' + alltrim(nvl(cgest, '')) as V(50)) as nume_gestiune, id_gestiune from cGestiuni order by nume_gestiune into cursor cGestiuni2
llSucces = goExecutor.oExecuta("select cod_um_iso, um_iso from syn_vnom_um_iso", 'cUMISO')
SELECT cUMISO
INDEX on cod_um_iso TAG cod_um_iso
llSucces = goExecutor.oExecuta("select id, um, cod_um_iso, um_iso from vnom_um", 'cUM')
SELECT cUM
INDEX on id TAG id
Select crsFacturi
loFrmFacturi = Createobject("frm_import_efactura", m.llPrimite)
* Do Form frm_import_efactura Name loFrmFacturi Linked With m.llPrimite Noshow
loFrmFacturi.Show(1)
Use In (Select('crsFacturi'))
Use In (Select('crsDetaliiFacturi'))
USE IN (SELECT('crsDetaliiFacturiTemp'))
Use In (Select('cTip'))
Use In (Select('cArticole'))
Use In (Select('cGestiuni'))
Use In (Select('cGestiuni2'))
Use In (Select('cTip'))
Use In (Select('cTipArticoleP'))
Use In (Select('cTipArticoleE'))
Endproc && vizFacturiPrimite
**********************
* Completez anaf_efactura_detalii.id_articol la importul eFactura
**********************
PROCEDURE UpdateEFacturaArticolROA
LPARAMETERS tnIdEFactura
Local lcSql, llSucces, lcSelect
PRIVATE pnIdArticol, pnId, pnIdGestiune, pcCont
lcSelect = SELECT()
lcSql = "update anaf_efactura_detalii set id_articol = ?pnIdArticol, id_gestiune = ?pnIdGestiune, cont = ?pcCont, acont = ?pcAcont where id = ?pnId"
llSucces = .T.
SELECT id, id_articol, id_gestiune, cont, acont FROM crsDetaliiFacturi INTO CURSOR cArticoleTemp
SELECT cArticoleTemp
SCAN
pnId = id
pnIdArticol = IIF(EMPTY(NVL(id_articol, 0)), NULL, id_articol)
pnIdGestiune = IIF(EMPTY(NVL(id_gestiune, 0)), null, id_gestiune)
pcCont = ALLTRIM(NVL(cont, ''))
pcAcont = ALLTRIM(NVL(acont, ''))
llSucces = goExecutor.oExecuta(m.lcSql)
IF !m.llSucces
EXIT
ENDIF
ENDSCAN
USE IN (SELECT('cArticoleTemp'))
SELECT (m.lcSelect)
RETURN m.llSucces
ENDPROC && UpdateEFacturaArticolROA
**********************
* Completez anaf_efactura_detalii.id_fact la importul eFactura achizitie
**********************
PROCEDURE UpdateEFacturaIdFact
LPARAMETERS tnIdEFactura, tnIdFact
Local lcSql, llSucces, lcSelect
PRIVATE pnId, pnIdFact
lcSelect = SELECT()
lcSql = "update anaf_efactura set id_fact = ?pnIdFact where id = ?pnId and NVL(id_fact,0) = 0"
llSucces = .T.
pnId = m.tnIdEfactura
pnIdFact = m.tnIdFact
llSucces = goExecutor.oExecuta(m.lcSql)
SELECT (m.lcSelect)
RETURN m.llSucces
ENDPROC && UpdateEFacturaIdFact

File diff suppressed because it is too large Load Diff

371
COMUN/programe/ini.prg Normal file
View File

@@ -0,0 +1,371 @@
FUNCTION setini
PARAMETER pcinifile, pcsection, ;
pcvar, pcval
PRIVATE lasect
PRIVATE lavars
PRIVATE ALL LIKE j*
DIMENSION lasect[1], lavars[ 1,3]
jlsuccess = .T.
IF .NOT. EMPTY(pcinifile)
jcfilename = IIF(AT('.', ;
pcinifile) > 0, ;
pcinifile, ;
pcinifile + ;
'.INI')
pcsection = ALLTRIM(pcsection)
pcvar = ALLTRIM(pcvar)
pcval = ALLTRIM(pcval)
IF FILE(jcfilename)
jnhandle = FOPEN(jcfilename, ;
2)
IF jnhandle < 0
jlsuccess = .F.
= messagebox( ;
'Unable to open file: ' + ;
jcfilename, ;
'File Open Error', ;
0)
RETURN jlsuccess
ENDIF
ELSE
jnhandle = -1
ENDIF
= buildarray(jnhandle, ;
@lasect,@lavars)
IF jnhandle > -1
= FCLOSE(jnhandle)
ENDIF
jsuccess = buildini(jcfilename, ;
pcsection,pcvar, ;
pcval,@lasect, ;
@lavars)
ELSE
jlsuccess = .F.
ENDIF
RETURN jlsuccess
ENDFUNC && setini
*!*
FUNCTION buildini
PARAMETER pcfilename, pcsection, ;
pcvar, pcval, pasect, ;
pavars
PRIVATE ALL LIKE j*
jlsuccess = .T.
jnfhandle = 0
jlfoundvar = .F.
jnfound = 0
IF .NOT. EMPTY(pasect)
FOR jncount = 1 TO ;
ALEN(pasect, 1)
IF UPPER(pasect(jncount)) == ;
UPPER(pcsection)
jnfound = jncount
EXIT
ENDIF
ENDFOR
ENDIF
IF jnfound > 0
FOR jncount = 1 TO ;
ALEN(pavars, 1)
IF pavars(jncount,1) == ;
pcvar .AND. ;
pavars(jncount,3) == ;
jnfound
pavars[ jncount, ;
2] = pcval
jlfoundvar = .T.
EXIT
ENDIF
ENDFOR
IF .NOT. jlfoundvar
IF .NOT. ;
EMPTY(pavars(1))
jnlen2 = ALEN(pavars, ;
1) + 1
DIMENSION pavars[ ;
jnlen2, ;
3]
ELSE
jnlen2 = 1
ENDIF
pavars[ jnlen2, 1] = ;
pcvar
pavars[ jnlen2, 2] = ;
pcval
pavars[ jnlen2, 3] = ;
jnfound
ENDIF
ELSE
IF .NOT. EMPTY(pasect(1))
jnlen = ALEN(pasect, 1) + ;
1
DIMENSION pasect[ ;
jnlen]
ELSE
jnlen = 1
ENDIF
pasect[ jnlen] = pcsection
IF .NOT. EMPTY(pavars(1))
jnlen2 = ALEN(pavars, ;
1) + 1
DIMENSION pavars[ ;
jnlen2, 3]
ELSE
jnlen2 = 1
ENDIF
pavars[ jnlen2, 1] = pcvar
pavars[ jnlen2, 2] = pcval
pavars[ jnlen2, 3] = jnlen
ENDIF
IF FILE(pcfilename)
jcoldfile = SUBSTR(pcfilename, ;
1, AT('.', ;
pcfilename) - 1) + ;
'.BAK'
IF FILE(jcoldfile)
DELETE FILE (jcoldfile)
ENDIF
RENAME (pcfilename) TO ;
(jcoldfile)
ENDIF
jnfhandle = FCREATE(pcfilename)
IF .NOT. jnfhandle == -1 .AND. ;
.NOT. EMPTY(pasect)
FOR ncount = 1 TO ;
ALEN(pasect, 1)
IF (';' $ ;
pasect(ncount)) .OR. ;
EMPTY(pasect(ncount))
= FPUTS(jnfhandle, ;
pasect(ncount))
ELSE
= FPUTS(jnfhandle, ;
'[' + ;
pasect(ncount) + ;
']')
ENDIF
FOR ncount2 = 1 TO ;
ALEN(pavars, 1)
IF pavars(ncount2, ;
3) == ncount
= FPUTS(jnfhandle, ;
pavars(ncount2, ;
1) + ' = ' + ;
pavars(ncount2, ;
2))
ENDIF
ENDFOR
ENDFOR
= FCLOSE(jnfhandle)
ELSE
= messagebox( ;
'Unable to create file: ' + ;
jcfilename, ;
'File create error',0)
jlsuccess = .F.
ENDIF
RETURN jlsuccess
ENDFUNC && buildini
*!*
FUNCTION buildarray
PARAMETER pnfhandle, pasect, ;
pavars
PRIVATE ALL LIKE j*
jnalen = 1
jnvarlen = 1
IF pnfhandle > -1
= FSEEK(pnfhandle, 0)
DO WHILE .NOT. ;
FEOF(pnfhandle)
jcline = FGETS(pnfhandle)
IF ';' $ jcline .OR. ;
EMPTY(jcline)
IF EMPTY(pasect(1))
pasect[ 1] = ;
jcline
ELSE
jnalen = ALEN(pasect, ;
1) + ;
1
DIMENSION pasect[ ;
jnalen]
pasect[ ;
jnalen] = ;
jcline
ENDIF
ELSE
jnfound1 = AT('[', jcline)
jnfound2 = AT(']', jcline)
IF jnfound1 > 0 .AND. jnfound2 > 0
jcsection = SUBSTR(jcline, ;
jnfound1 + ;
1, ;
jnfound2 - ;
2)
IF EMPTY(pasect(1))
pasect[ ;
1] = ;
jcsection
ELSE
jnalen = ;
ALEN(pasect, ;
1) + 1
DIMENSION ;
pasect[ ;
jnalen]
pasect[ ;
jnalen] = ;
jcsection
ENDIF
jnalen = ALEN(pasect, ;
1)
ELSE
IF AT('=', ;
jcline) > ;
0
IF EMPTY(pavars(1, ;
1))
pavars[ ;
1, ;
1] = ;
ALLTRIM(SUBSTR(jcline, ;
1, ;
AT( ;
'=', ;
jcline) - ;
1))
pavars[ ;
1, ;
2] = ;
ALLTRIM(SUBSTR(jcline, ;
AT( ;
'=', ;
jcline) + ;
1))
pavars[ ;
1, ;
3] = ;
jnalen
ELSE
jnvarlen = ;
ALEN(pavars, ;
1) + ;
1
DIMENSION ;
pavars[ ;
jnvarlen, ;
3]
pavars[ ;
jnvarlen, ;
1] = ;
ALLTRIM(SUBSTR(jcline, ;
1, ;
AT( ;
'=', ;
jcline) - ;
1))
pavars[ ;
jnvarlen, ;
2] = ;
ALLTRIM(SUBSTR(jcline, ;
AT( ;
'=', ;
jcline) + ;
1))
pavars[ ;
jnvarlen, ;
3] = ;
jnalen
ENDIF
ENDIF
ENDIF
ENDIF
ENDDO
ENDIF
RETURN .T.
ENDFUNC && buildarray
*!*
FUNCTION getini
PARAMETER pcinifile, pcsection, ;
pcvar
PRIVATE ALL LIKE j*
jcretval = ''
IF .NOT. EMPTY(pcinifile)
jcfilename = IIF(AT('.', ;
pcinifile) > 0, ;
pcinifile, ;
pcinifile + ;
'.INI')
IF FILE(jcfilename)
jnhandle = FOPEN(jcfilename)
IF jnhandle < 0
jlsuccess = .F.
= messagebox( ;
'Unable to open file: ' + ;
jcfilename, ;
'File Open Error', ;
0)
ELSE
pcsection = ALLTRIM(UPPER(pcsection))
pcvar = ALLTRIM(UPPER(pcvar))
jcretval = readini(@jnhandle, ;
pcsection, ;
pcvar)
= FCLOSE(jnhandle)
ENDIF
ENDIF
ENDIF
RETURN jcretval
ENDFUNC && getini
*!*
FUNCTION readini
PARAMETER pnfhandle, pcsection, ;
pcvar
PRIVATE ALL LIKE j*
jcline = ''
jcsection = ''
jnfound1 = 0
jnfound2 = 0
jnfound3 = 0
jnalen = 0
jcretval = ''
IF .NOT. EMPTY(pnfhandle)
= FSEEK(pnfhandle, 0)
DO WHILE .NOT. ;
FEOF(pnfhandle)
jcline = FGETS(pnfhandle)
jnfound1 = AT('[', ;
jcline)
jnfound2 = AT(']', ;
jcline)
IF jnfound1 > 0 .AND. ;
jnfound2 > 0
jcsection = UPPER(SUBSTR(jcline, ;
jnfound1 + ;
1, ;
jnfound2 - ;
2))
ENDIF
IF jcsection == ;
pcsection
jnfound3 = AT('=', ;
jcline)
IF jnfound3 > 0
IF ALLTRIM(UPPER(SUBSTR(jcline, ;
1, ;
jnfound3 - ;
1))) == ;
pcvar
jcretval = ;
ALLTRIM(SUBSTR(jcline, ;
jnfound3 + ;
1))
EXIT
ENDIF
ENDIF
ENDIF
ENDDO
ENDIF
RETURN jcretval
ENDFUNC && readini

148
COMUN/programe/iniacces.prg Normal file
View File

@@ -0,0 +1,148 @@
#include comun\include\security.h
Define Class iniaccess As Custom
cIniFile=""
Function Init
This.cIniFile=shortpath(GetIniPath())
Endfunc
Function setCValue
Lparameters tcSection, tcSetting, tcValue
Local lcFisierIni
lcFisierIni = This.cIniFile
DECLARE INTEGER WritePrivateProfileString ;
IN WIN32API ;
STRING cSection,STRING cEntry,STRING cEntry,;
STRING cFileName
Return WritePrivateProfileString(tcSection,tcSetting,tcValue,lcFisierIni)
Endfunc
Function getCValue As Character
Lparameters tcSection,tcSetting
Local lcFisierIni
lcFisierIni=This.cIniFile
lcBuffer=Space(255)
DECLARE INTEGER GetPrivateProfileString ;
IN WIN32API ;
STRING cSection,;
STRING cEntry,;
STRING cDefault,;
STRING @cRetVal,;
INTEGER nSize,;
STRING cFileName
GetPrivateProfileString(tcSection,tcSetting,"",@lcBuffer, Len(lcBuffer), lcFisierIni)
lcBuffer = Strtran(lcBuffer,Chr(0),"")
lcBuffer = Alltrim(lcBuffer)
Return lcBuffer
Endfunc
Function setUF
Lparameters cUFvalue
Return This.setCValue("update","UpdateFrequency",cUFvalue)
Endfunc
Function setNetworkPath
Lparameters cNPvalue
Return This.setCValue("update","NetworkPath",cNPvalue)
Endfunc
Function setURL
Lparameters cURLvalue
Return This.setCValue("update","InternetPath",cURLvalue)
Endfunc
Function setUsername
Lparameters cUsername
Return This.setCValue("update","Username",cUsername)
Endfunc
Function setPassword
Lparameters cPassword
cPassword=EncryptDecrypt(cPassword, ENCRYPTKEY, "encrypt","blowfish")
cPassword=Strconv(cPassword,13)
Return This.setCValue("update","Password",cPassword)
Endfunc
Function setPasswordDirect
Lparameters cPassword
Return This.setCValue("update","Password",cPassword)
Endfunc
Function SetDefault
Lparameters cDefaultvalue
Return This.setCValue("update","DefaultPath",cDefaultvalue)
Endfunc
Function setLocalExe
Lparameters cDefaultvalue
Return This.setCValue("update","exepath",cDefaultvalue)
Endfunc
Function setAllowConfirm
Lparameters cDefaultvalue
Return This.setCValue("update","AllowConfirm",cDefaultvalue)
Endfunc
Function setLastServer
Lparameters cLastServer
Return This.setCValue("server","last",cLastServer)
Endfunc
Function getUF As Character
Return This.getCValue("update","UpdateFrequency")
Endfunc
Function getNetworkPath As Character
Return This.getCValue("update","NetworkPath")
Endfunc
Function getLocalExe As Character
Return This.getCValue("update","exepath")
Endfunc
Function getURL As Character
Return This.getCValue("update","InternetPath")
Endfunc
Function getDefault As Character
Return This.getCValue("update","DefaultPath")
Endfunc
Function getUsername As Character
Return This.getCValue("update","Username")
Endfunc
Function getPassword As Character
Local lcParola
lcParola = This.getCValue("update","Password")
If Len(lcParola)>0
lcParola =Alltrim(Strconv(lcParola ,14))
lcParola = EncryptDecrypt(lcParola, ENCRYPTKEY, "decrypt","blowfish")
Endif
Return lcParola
Endfunc
Function getPasswordDirect As Character
Return This.getCValue("update","Password")
Endfunc
Function getAllowConfirm As Boolean
Local lcValoare
lcValoare = This.getCValue( "update","AllowConfirm")
If Upper(lcValoare)=Upper("True")
Return .T.
Else
Return .F.
Endif
Endfunc
Function getLastServer As Character
Return This.getCValue("server","last")
Endfunc
Enddefine

View File

@@ -0,0 +1,448 @@
&& ------------------------------INCEPUT: Citeste_Cheie ------------------------------
*!* Functie: Citeste_Cheie
*!* Parametri: tcKey, tcBranch, tcLeafe
*!* Data/Ora generarii: 16/02/2004 14:26:22
*!* Autor: MARIUS.MUTU
FUNCTION Citeste_Cheie
LPARAMETERS tcKey, tnBranch, tcLeafe
LOCAL lcRet,loApi, lcKey, lnBranch, lcLeafe
lcKey = ALLTRIM(tcKey)
lnBranch = tnBranch
lcLeafe = ALLTRIM(tcLeafe)
lcRet = []
loApi = CREATE("registry")
IF loApi.iskey(lcKey, lnBranch)
loApi.openkey(lcKey, lnBranch,.F.)
lcRet = loApi.getkeyvalue(lcLeafe,)
ENDIF
RELEASE loApi
RETURN lcRet
ENDFUNC
&& ------------------------------SFARSIT: Citeste_Cheie ------------------------------
&& ------------------------------INCEPUT: Exista_Branch ------------------------------
*!* Functie: Exista_Branch
*!* Parametri: tcKey
*!* Data/Ora generarii: 18/02/2004 14:01:29
*!* Autor: MARIUS.MUTU
FUNCTION Exista_Branch
LPARAMETERS tcKey, tnBranch,tcCale
LOCAL lcRet,loApi, lcKey, lnBranch
lccale="serverdate_"+STRTRAN(tcCale,"\","")
IF EMPTY(tcKey)
lcKey = [contafin\] + lccale + [\util]
ELSE
lcKey = ALLTRIM(tcKey)
ENDIF
IF EMPTY(tnBranch)
lnBranch = -2147483647
ELSE
lnBranch = tnBranch
ENDIF
llRet = .F.
loApi = CREATE("registry")
IF loApi.iskey(lcKey, lnBranch)
llRet = .T.
ENDIF
RELEASE loApi
RETURN llRet
ENDFUNC
&& ------------------------------SFARSIT: Exista_Branch ------------------------------
&& ------------------------------INCEPUT: Verific_Start ------------------------------
*!* Functia: Verific_Start
*!* Parametri: tcParam
*!* Data/Ora generarii: 16/02/2004 13:32:11
*!* Autor: MARIUS.MUTU
*!* returneza TRUE daca parametrul trimis codat in binar este egal cu variabila <session> citita din registri
FUNCTION Verific_Start
LPARAMETERS tcSesiune,tcCale,tcAppName
LOCAL llRet,loApi, lcKey, lnBranch, lcSesiune
lccale="serverdate_"+STRTRAN(tcCale,"\","")
IF EMPTY(tcAppName)
lcAppName = JUSTSTEM(SYS(16,0))
ELSE
lcAppName = ALLTRIM(tcAppName)
ENDIF
lcAppName = LOWER(lcAppName)
*!* lcLog = '1 ' + tcSesiune + ', ' + tcCale +', ' + tcAppName
*!* poLog.Log(lcLog,PROGRAM())
llRet = .T.
lcKey = [contafin\]+lccale+[\util]
lnBranch = -2147483647
lcLeafe = [session]
lcSesiune = []
IF EMPTY(tcSesiune)
llRet = .F.
ELSE
lcSesiune = tcSesiune
lcSesiune2 = VAL(Citeste_Cheie(lcKey, lnBranch, lcLeafe))
lcSesiune3 = BINTOC(lcSesiune2,4)
lcsesiune1=SUBSTR(lcSesiune3,1,1)+SUBSTR(lcSesiune3,3,2)
lcsesiune1 = STUFF(lcsesiune1,2,0,lcAppName)
lcSesiune = ALLTRIM(UPPER(lcSesiune))
lcSesiune1 = ALLTRIM(UPPER(lcSesiune1))
lnLen1 = LEN(lcSesiune)
lnLen2 = LEN(lcSesiune1)
lcCar1 = ''
lcCar2 = ''
FOR i = 1 TO lnLen1
lcCar = SUBSTR(lcSesiune,i,1)
lcCar1 = lcCar1 + TRANSFORM(ASC(lcCar)) + "_"
ENDFOR
FOR i = 1 TO lnLen2
lcCar = SUBSTR(lcSesiune1,i,1)
lcCar2 = lcCar2 + TRANSFORM(ASC(lcCar)) + "_"
ENDFOR
*!* lcLog = '1 ' + lcCar1
*!* poLog.Log(lcLog,PROGRAM())
*!* lcLog = '2 ' + lcCar2
*!* poLog.Log(lcLog,PROGRAM())
IF LEN(lcSesiune1)>LEN(lcSesiune)
lcSesiune1 = LEFT(lcSesiune1,LEN(lcSesiune))
ENDIF
lnLen1 = LEN(lcSesiune)
lnLen2 = LEN(lcSesiune1)
lcCar1 = ''
lcCar2 = ''
FOR i = 1 TO lnLen1
lcCar = SUBSTR(lcSesiune,i,1)
lcCar1 = lcCar1 + TRANSFORM(ASC(lcCar)) + "_"
ENDFOR
FOR i = 1 TO lnLen2
lcCar = SUBSTR(lcSesiune1,i,1)
lcCar2 = lcCar2 + TRANSFORM(ASC(lcCar)) + "_"
ENDFOR
*!* lcLog = '3 ' + lcCar1
*!* poLog.Log(lcLog,PROGRAM())
*!* lcLog = '4 ' + lcCar2
*!* poLog.Log(lcLog,PROGRAM())
IF SYS(2007,lcSesiune) # SYS(2007,lcSesiune1)
llRet = .F.
ENDIF
ENDIF
*!* lcLog = '4 llret ' + TRANSFORM(llRet)
*!* poLog.Log(lcLog,PROGRAM())
RETURN llRet
ENDFUNC
&& ------------------------------SFARSIT: Verific_Start ------------------------------
&& ------------------------------INCEPUT: Init_Cale_Temp------------------------------
*!* Functia: Init_Cale_Temp
*!* Parametri:
*!* Data/Ora generarii: 16/02/2004 13:32:11
*!* Autor: MARIUS.MUTU
*!* citeste directorul temporar din registrii si il creeaza
FUNCTION Init_Cale_Temp
PARAMETERS tcCale
* lccale="serverdate_"+STRTRAN(tccale,"\","")
LOCAL lcTempPath,loApi, lcKey, lnBranch, lcSesiune
llRet = .T.
lcKey = [contafin\temporare]
* lcKey = [contafin\]+lccale+[\temporare]
lnBranch = -2147483647
lcLeafe = [temp]
lcTempPath=Citeste_Cheie(lcKey, lnBranch, lcLeafe)
RETURN lcTempPath
ENDFUNC
&& ------------------------------SFARSIT: Init_Cale_Temp------------------------------
&& ------------------------------INCEPUT: Init_Cale_Server_Date ------------------------------
*!* Functia: Init_Cale_Server_Date
*!* Parametri:
*!* Data/Ora generarii: 16/02/2004 13:32:11
*!* Autor: MARIUS.MUTU
*!* citeste calea serverului de date din registri
FUNCTION Init_Cale_Server_Date
PARAMETERS tcCale
lccale="serverdate_"+STRTRAN(tcCale,"\","")
LOCAL lcCaleServerDate, loApi, lcKey, lnBranch, lcSesiune
lcCaleServerDate= []
lcKey = [contafin\]+lccale
lnBranch = -2147483647
lcLeafe = [cale]
lcCaleServerDate=Citeste_Cheie(lcKey, lnBranch, lcLeafe)
RETURN lcCaleServerDate
ENDFUNC
&& ------------------------------SFARSIT: Init_Cale_Server_Date ------------------------------
&& ------------------------------INCEPUT: Init_Nume_Utilizator ------------------------------
*!* Functia: Init_Nume_Utilizator
*!* Parametri:
*!* Data/Ora generarii: 16/02/2004 13:32:11
*!* Autor: MARIUS.MUTU
*!* citeste numele utilizatorului logat la START din registri
FUNCTION Init_Nume_Utilizator
PARAMETERS tcCale
LOCAL lcNumeUtilizator, loApi, lcKey, lnBranch, lcSesiune
lccale="serverdate_"+STRTRAN(tcCale,"\","")
lcNumeUtilizator = []
lcKey = [contafin\]+lccale+[\util]
lnBranch = -2147483647
lcLeafe = [nume]
lcNumeUtilizator=Citeste_Cheie(lcKey, lnBranch, lcLeafe)
RETURN lcNumeUtilizator
ENDFUNC
&& ------------------------------SFARSIT: Init_Nume_Utilizator------------------------------
&& ------------------------------INCEPUT: Init_Id_Utilizator ------------------------------
*!* Functia: Init_Id_Utilizator
*!* Parametri:
*!* Data/Ora generarii: 16/02/2004 13:32:11
*!* Autor: MARIUS.MUTU
*!* citeste numele utilizatorului logat la START din registri
FUNCTION Init_Id_Utilizator
PARAMETERS tcCale
LOCAL lnId_Utilizator, loApi, lcKey, lnBranch, lcSesiune
lccale="serverdate_"+STRTRAN(tcCale,"\","")
lcNumeUtilizator = []
lcKey = [contafin\]+lccale+[\util]
lnBranch = -2147483647
lcLeafe = [id_util]
lnId_Utilizator=Citeste_Cheie(lcKey, lnBranch, lcLeafe)
RETURN lnId_Utilizator
ENDFUNC
&& ------------------------------SFARSIT: Init_Id_Utilizator ------------------------------
&& ------------------------------INCEPUT: Init_Nivel_Utilizator ------------------------------
*!* Functia: Init_Nivel_Utilizator
*!* Parametri:
*!* Data/Ora generarii: 16/02/2004 13:32:11
*!* Autor: MARIUS.MUTU
*!* citeste nivelul utilizatorului logat la START din registri
FUNCTION Init_Nivel_Utilizator
PARAMETERS tcCale
lccale="serverdate_"+STRTRAN(tcCale,"\","")
LOCAL lcNivelUtilizator, loApi, lcKey, lnBranch, lcSesiune
lcNumeUtilizator = []
lcKey = [contafin\]+lccale+[\prog\]+gcAppName
lnBranch = -2147483647
lcLeafe = [nivel]
lcNivelUtilizator=Citeste_Cheie(lcKey, lnBranch, lcLeafe)
RETURN lcNivelUtilizator
ENDFUNC
&& ------------------------------SFARSIT: Init_Nume_Utilizator------------------------------
&& ------------------------------INCEPUT: Init_Nume_Statie------------------------------
*!* Functia: Init_Nume_Statie
*!* Parametri:
*!* Data/Ora generarii: 16/02/2004 13:32:11
*!* Autor: MARIUS.MUTU
*!* citeste numele statiei
FUNCTION Init_Nume_Statie
PARAMETERS tcCale
lccale="serverdate_"+STRTRAN(tcCale,"\","")
LOCAL lcNumeStatie, loApi, lcKey, lnBranch
lcNumeStatie= []
lcKey = [contafin\]+lccale
lnBranch = -2147483647
lcLeafe = [numestatie]
lcNumeStatie=Citeste_Cheie(lcKey, lnBranch, lcLeafe)
RETURN lcNumeStatie
ENDFUNC
&& ------------------------------SFARSIT: Init_Nume_Statie
&& ------------------------------INCEPUT: Init_NumeAlternativ------------------------------
*!* Functia: Init_NumeAlternativ
*!* Parametri:
*!* Data/Ora generarii: 18/02/2004 16:29:11
*!* Autor: MARIUS.MUTU
*!* citeste nume2 ex: (CONT2003) CASA
FUNCTION Init_NumeAlternativ
PARAMETERS tcCale,tcAppName
LOCAL lcNumeAlternativ, loApi, lcKey, lnBranch
lccale="serverdate_"+STRTRAN(tcCale,"\","")
IF EMPTY(tcAppName)
lcAppName = JUSTSTEM(SYS(16,0))
ELSE
lcAppName = ALLTRIM(tcAppName)
ENDIF
lcNumeAlternativ= []
* lcKey = [contafin\prog\]+gcAppName
lcKey = [contafin\]+lccale+[\prog\]+lcAppName
lnBranch = -2147483647
lcLeafe = [nume2]
lcNumeAlternativ = Citeste_Cheie(lcKey, lnBranch, lcLeafe)
RETURN lcNumeAlternativ
ENDFUNC
&& ------------------------------SFARSIT: Init_NumeAlternativ
&& ------------------------------INCEPUT: Start_Istoric ------------------------------
*!* Functie: Start_Istoric
*!* Parametri: tcNumeUtilizator, tcNumeProgram, tcNumeStatie
*!* Data/Ora generarii: 08/03/2004 15:31:58
*!* Autor: MARIUS.MUTU
FUNCTION Start_Istoric
LPARAMETERS tcNumeUtilizator, tcNumeProgram, tcNumeStatie, tcCaleIstoric, tcNumeIstoric, tcNumeIds
lcNumeUtilizator = ALLTRIM(tcNumeUtilizator)
lcNumeProgram = ALLTRIM(tcNumeProgram)
lcNumeStatie = ALLTRIM(tcNumeStatie)
lcCaleIstoric = ADDBS(tcCaleIstoric)
lcNumeIstoric = ALLTRIM(tcNumeIstoric)
lcNumeIds = ALLTRIM(tcNumeIds)
lcNume = ALLTRIM(lcNumeIstoric)
lcFile = ADDBS(lcCaleIstoric) + lcNumeIstoric + ".dbf"
IF !FILE(lcFile)
RETURN
ENDIF
llUsed = .T.
IF !USED('Istoric')
USE (lcFile) IN 0 SHARED AGAIN ALIAS Istoric
llUsed = .F.
ENDIF
lcFile = ADDBS(lcCaleIstoric) + lcNumeIDS + ".dbf"
IF !FILE(lcFile)
RETURN
ENDIF
llUsed2 = .T.
IF !USED('ids')
USE (lcFile) IN 0 SHARED AGAIN ALIAS Ids
llUsed2 = .F.
ENDIF
lnNewId = new_id("istoric","id",.T.)
SELECT Istoric
IF FLOCK()
APPEND BLANK
REPLACE ID WITH lnNewId, statie WITH lcNUMESTATIE, PROGRAM WITH lcNumeProgram, utilizator WITH lcNumeUtilizator, dataoraint WITH DATETIME()
UNLOCK
ENDIF
IF !llUsed
USE IN Istoric
ENDIF
IF !llUsed2
USE IN ids
ENDIF
RETURN lnNewId
ENDFUNC
&& ------------------------------SFARSIT: Start_Istoric ------------------------------
&& ------------------------------INCEPUT: End_Istoric ------------------------------
*!* Functie: End_Istoric
*!* Parametri: tnIdIstoric
*!* Data/Ora generarii: 08/03/2004 15:51:32
*!* Autor: MARIUS.MUTU
FUNCTION End_Istoric
LPARAMETERS tnIdIstoric, tcCaleIstoric, tcNumeIstoric
lcCaleIstoric = ADDBS(tcCaleIstoric)
lcNumeIstoric = ALLTRIM(tcNumeIstoric)
lcNume = ALLTRIM(lcNumeIstoric)
lcFile = ADDBS(lcCaleIstoric) + lcNume + ".dbf"
IF !FILE(lcFile)
RETURN
ENDIF
llUsed = .T.
IF !USED('Istoric')
USE (lcFile) IN 0 SHARED AGAIN ALIAS Istoric
llUsed = .F.
ENDIF
SELECT Istoric
LOCATE FOR ID = tnIdIstoric
IF FOUND()
IF FLOCK()
REPLACE dataoraies WITH DATETIME()
UNLOCK
ENDIF
ENDIF
IF !llUsed
USE IN Istoric
ENDIF
ENDFUNC
&& ------------------------------SFARSIT: End_Istoric ------------------------------

View File

@@ -0,0 +1,38 @@
PROCEDURE lista2cursor
PARAMETERS tcLISTA,tcAlias,tcCol1,tcSeparator
&& tcLista este un sir de caractere care contine elementele separate prin <;> default
&& tcAlias este cursorul care se completeaza - trebuie dat prin referinta
&& tcSeparator separatorul de elemente din tcLista - default este ";" - este optional
&& intoarce numarul de elemente gasite
&& ex: lnNr = lista2array("ana;are;mere",@alista,";")
LOCAL Lclista,lcSeparator,lnNRF,lcF1,i
lcLista=UPPER(ALLT(tcLISTA))
IF PARAMETERS()<3 OR EMPTY(tcSeparator)
lcSeparator=";"
ELSE
lcSeparator=ALLTRIM(tcSeparator)
ENDIF
IF RIGHT(Lclista,1)!=lcSeparator
Lclista=Lclista+lcSeparator
ENDIF
lnNRF=OCCURS(lcSeparator,lcLista)
FOR i=1 TO lnNRF
lcF1=LEFT(lcLista,AT(lcSeparator,lcLista)-1)
IF i!=lnNRF
lcLista=SUBSTR(lcLista,AT(lcSeparator,lcLista)+1)
ENDIF
INSERT INTO (tcAlias) (&tcCol1) VALUES (lcF1)
ENDFOR
RETURN lnNrf
ENDPROC && lista2cursor

View File

@@ -0,0 +1,108 @@
* Program: _LOCALE_GENMENU.PRG
* Description: Loader to GenMenu.prg to adjust PROMPT and MESSAGE clauses for Localization.
* Created: 02/16/2004
* Developer: Gregory L Reichert
* Copyright: Copyright (c) 2004 GLR software
*------------------------------------------------------------
*--------------------------------------------
* Setup instructions.
* 1. From the main menu, Open the Options dialogs.
* 2. Click the "File Locations" tab.
* 3. Locate the "Menu Builder" item in the list.
* 4. Doble-Click the "Menu Builder" item.
* 5. Change the file reference to point to this file.
* 6. Click the "Save as Default" button.
* 7. Click the "Ok" button.
*--------------------------------------------
PARAMETER m.projdbf, m.recno
LOCAL cResult, cPath, cc
cPath = SET("Path")
cc = HOME()+";&cPath"
SET PATH TO &cc
cResult = GenMenu( (m.projdbf), (m.recno) )
SET PATH TO &cPath
LOCAL MenuName, cMenu
LOCAL lcLocaleObjName
lcLocaleObjName = [goLocale]
*--------------------------------------------
* Get menu name
*--------------------------------------------
USE IN (SELECT("qMenu"))
USE (m.projdbf) AGAIN IN 0 NOUPDATE ALIAS qMenu
SELECT qMenu
GOTO (m.recno)
m.MenuName = qMenu.NAME
USE IN qMenu
*--------------------------------------------
* If there is a "*:Locale=Yes" in the Procedure section of
* the "View->General Options", setup for translations.
*--------------------------------------------
SELECT 0
lcMenuFile = LEFT(m.projdbf, RAT('\', m.projdbf)) + m.MenuName
USE (m.lcMenuFile) AGAIN NOUPDATE ALIAS qMenu
GOTO TOP
m.Proc = ALLTRIM(qMenu.procedure)
USE
IF ATC("*:Locale=Yes",m.Proc)>0
lcMenuFile = STRTRAN(LOWER(lcMenuFile),".mnx",".mpr")
CREATE CURSOR qMenu (LINE c(250))
APPEND FROM (lcMenuFile) TYPE SDF
LOCAL cLine, i, cMenu
cMenu = ""
SCAN ALL
cLine = ALLTRIM(qMenu.LINE)
*%% Gregory L Reichert 02/16/2004 LOCALE_GENMENU.PRG : 800 : BUGBUG : Making direct reference to oLocale. It may be on Form or _SCREEN at runtime.
DO CASE
CASE ATCC([DEFINE PAD ],cLine)>0 AND ATCC([PROMPT "],cLine)>0
i = ATCC([PROMPT "],cLine)+7
cLine = STUFFC(cLine,i,1, lcLocaleObjName + [.getString("])
i = RATC([" COLOR ],cLine,1)
cLine = STUFFC(cLine,i,1,[")])
CASE ATCC([DEFINE BAR ],cLine)>0 AND ATCC([PROMPT "],cLine)>0
i = ATCC([PROMPT "],cLine)+7
cLine = STUFFC(cLine,i,1,lcLocaleObjName + [.getString("])
i = RATC(["],cLine,1)
cLine = STUFFC(cLine,i,1,[")])
CASE ATCC([MESSAGE "],cLine)>0
i = ATCC([MESSAGE "],cLine)+8
cLine = STUFFC(cLine,i,1,lcLocaleObjName + [.getString("])
i = ratc(["],cLine,1)
cLine = STUFFC(cLine,i,1,[")])
CASE ATCC([TITLE "],cLine)>0
i = ATCC([TITLE "],cLine)+8
cLine = STUFFC(cLine,i,1,lcLocaleObjName + [.getString("])
i = ratc(["],cLine,1)
cLine = STUFFC(cLine,i,1,[")])
CASE ATCC([FOOTER "],cLine)>0
i = ATCC([FOOTER "],cLine)+8
cLine = STUFFC(cLine,i,1,lcLocaleObjName + [.getString("])
i = ratc(["],cLine,1)
cLine = STUFFC(cLine,i,1,[")])
ENDCASE
cLine = STRTRAN(cLine,"rat(","rat_c(")
cLine = STRTRAN(cLine,"ratc(","ratcc(")
cLine = STRTRAN(cLine,"at(","at_c(")
cLine = STRTRAN(cLine,"atc(","atcc(")
cMenu = cMenu + cLine + CHR(13)+CHR(10)
ENDSCAN
STRTOFILE(cMenu, lcMenuFile, .F.)
USE IN qMenu
ENDIF
RETURN m.cResult

View File

@@ -0,0 +1,84 @@
#DEFINE CRLF CHR(13) + CHR(10)
DEFINE CLASS log_mesaje as Relation
cLogFile = ""
&& ------------------------------INCEPUT: Init ------------------------------
*!* Procedura: Init
*!* Parametri:
*!* Data/Ora generarii: 20/02/2004 12:41:53
*!* Autor: MARIUS.MUTU
PROCEDURE Init
LPARAMETERS tcLogFile, tlAdditive
LOCAL lcLogFile, llAdditive
LOCAL loEx as Exception
lcLogFile = IIF(TYPE('tcLogFile') = 'C', m.tcLogFile, ADDBS(SHORTPATH(JUSTPATH(SYS(16,0)))) + "log.txt")
this.cLogFile = m.lcLogFile
SET console off
SET TALK OFF
IF PARAMETERS() < 2
llAdditive = .T.
ELSE
llAdditive = tlAdditive
ENDIF
IF FILE(lcLogFile)
lcText = TTOC(DATETIME()) + " " + SYS(0) + IIF(TYPE('GCS')='C'," " + GCS,"") + CRLF
TRY
STRTOFILE(lcText, lcLogFile, llAdditive)
CATCH TO loEx
* nu pot sa scriu in log
ENDTRY
ENDIF && file(lcLogFile)
ENDPROC
&& ------------------------------SFARSIT: Init ------------------------------
&& ------------------------------INCEPUT: Log ------------------------------
*!* Procedura: Log
*!* Parametri: tcText
*!* Data/Ora generarii: 20/02/2004 12:48:57
*!* Autor: MARIUS.MUTU
PROCEDURE Log
LPARAMETERS tcText, tcProgram
LOCAL lcText, lcLogFile
LOCAL loEx as Exception
lcLogFile = this.cLogFile
IF !FILE(lcLogFile)
RETURN
ENDIF
SET console off
SET TALK OFF
lcText = IIF(EMPTY(tcText),"",ALLTRIM(tcText))
lcProgram = IIF(EMPTY(tcProgram),"",ALLTRIM(tcProgram))
lcSpatiu = SPACE(10)
lcSeparator = " *** "
IF FILE(lcLogFile)
lcText = TTOC(DATETIME()) + " " + SYS(0) + IIF(TYPE('GCS')='C'," " + GCS,"") + m.lcSeparator + ;
IIF(!EMPTY(lcProgram),lcProgram,"") + IIF(!EMPTY(lcText),lcSpatiu+lcText,"") + CRLF
TRY
STRTOFILE(lcText, lcLogFile, .T.)
CATCH TO loEx
* nu pot sa scriu in log
ENDTRY
ENDIF && file(lcLogFile)
ENDPROC
&& ------------------------------SFARSIT: Log ------------------------------
Procedure WriteLog
Lparameters tcText, tcProgram
This.Log(m.tcText, m.tcProgram)
ENDPROC && WriteLog
ENDDEFINE && log_mesaje

File diff suppressed because it is too large Load Diff

439
COMUN/programe/matxtab.prg Normal file
View File

@@ -0,0 +1,439 @@
*~ Program...........: MATXTAB.PRG
*~ Author............: Valdis Matison
*~ Version...........: 2.5
*~} Project...........:
*~ Created...........: 11/01/93
*~ Copyright.........: (c) Matison Consulting Group Inc., 1993
*~ 187 Dunblaine Avenue
*~ Toronto, Ontario
*~ M5M 2S6
*~
*~ 416-256-4495
*~
*~) Description.......: Replacement for GENXTAB.prg that ships with FoxPro
*~] Dependencies......:
*~ Calling Samples...: do MATXTAB with "XTAB", 1, .t., .f., 1, 4, 5, .t., 2, 3, 0, 0, .t., .t., .t., .t.
*~ do MATXTAB with "XTAB", 1, .t., .f., 1, 2, 6, .t., 3, 4, 5, 0, .t., .t., .t., .t., la_fldlist, 2, 0, 1
*~ Returns...........: If you initialize a variable named LN_RETURN in the calling program
*~ this program will return a value in that variable
*~ This functionality is incomplete
*~
*~ 0 = Success!
*~ - 1 = Unique column count greater than 256
*~ - 2 = Escape pressed, procedure cancelled
*~ - 3 = No dbf in current area
*~ - 4 = Less than three fields in input dbf
*~ - 5 = Too many fields in results table
*~ - 6 = Row field must be character
*~ - 7 = Column field must be character
*~ > 0 returns Foxpro's error code generated by error()
*~
*~ Major change list.:
*~ Future............: Create a front end, DOS/Windows/MAC
*~ Notes:............: The error handling is incomplete, the user should decide what errors to trap.
*~ Naming convention: First letter "l" denotes local variable
*~ Second letter denotes type
*~
*~ Parameter List....: lc_outfile : Name of the output file
*~ lu_struct : 1 means cursor, 2 means table, 3 means array,
*~ .t. means cursor, .f. means table
*~ if blank, same format as input
*~ ll_closein : .t. means close input file, else keep open
*~ ll_therm : Included for compatibility with GENXTAB, not used by MATXTAB
*~ ln_rowfld : Number of field used for rows - field number
*~ ln_cellfld : Column used for individual totals in results table field number
*~ ln_colhead : Field used for column headings in XTAB report field number
*~ ll_xtotal :.t. means create cross totals, else don't bother
*~
*~ Differences from Genxtab begin here
*~
*~ ln_extfld1 : First extra field to go into output
*~ ln_extfld2 : Second extra field to go into output
*~ ln_extfld3 : Third extra field to go into output
*~ ln_extfld4 : Fourth extra field to go into output
*~ ll_cnt : Display count for each unique row
*~ ll_avg : Display average
*~ ll_min : Display minimum
*~ ll_max : Display maximum
*~ la_uniqcol : name of array passed that has the uniqe column names already in list
*~ ln_rowcol : Number of dimensions in the array that's sent down
*~ ln_colsort : 0 means smallest to largest
*~ 1 means largest to smallest
*~ ln_rowsort : 0 means ascending
*~ 1 means descending
*~
Parameters lc_outfile, lu_struct, ll_closein, ll_therm, ln_rowfld, ;
ln_colhead, ln_cellfld, ll_xtotal, ln_extfld1, ln_extfld2, ;
ln_extfld3, ln_extfld4, ll_cnt, ll_avg, ll_min, ll_max, ;
la_uniqcol, ln_rowcol, ln_colsort, ln_rowsort
External Array la_uniqcol
Private lc_colsort, lc_dbfname, lc_colhead, lc_cellfld, ;
ln_dimens, lc_error, lc_escasta, lc_escape, lc_group, ;
ln_params, lc_program, lc_rowfld, lc_rowsort, lc_safesta, ;
lc_talksta, lc_type, lc_where, ln_uniqcnt
lc_dbfname = Alias() && Source file taken from alias name
lc_error = On( "ERROR" )
lc_escasta = Set( "ESCAPE" )
lc_escape = On( "ESCAPE" )
ln_params = Pcount()
lc_safesta = Set( "SAFETY" )
lc_talksta = Set( "TALK" )
lcOutputDir = ADDBS(SYS(2023))
*On Error Do lo_exit With Error()
Set Escape On
On Escape Do lo_exit With -2
Set Safety Off
Set Talk Off
If Empty( Alias() ) && A file must be open in the selected area
Do lo_exit With -3
Endif
If Fcount() < 3 && At least three fields required
Do lo_exit With -4
Endif
If ln_params < 1 && Nothing sent down - Determine filename for output
lc_outfile = 'XTABX.DBF'
Endif
If ln_params < 2 && No format given for output
If Isdigit( Left( Justfname( Dbf() ) ,1 ) )
lu_struct = 1 && Cursor
Else
lu_struct = 2 && Table
Endif
Else
If Type("lu_struct") = "L" && Logical value
If lu_struct && True means create a cursor
lu_struct = 1
Else && False means table
lu_struct = 2
Endif &&
Endif && Logical or numeric value
Endif && No format given for output
If ln_params < 3 && Close input defaults to yes
ll_closein = .T.
Endif
If ln_params < 5 && Number of field for cross tab rows
ln_rowfld = 1
Endif
If Type( Field( ln_rowfld ) ) <> "C"
On Escape Do lo_exit With -6
Endif
If ln_params < 6 && Number of field for columns
ln_colhead = 2
Endif
If Type( Field( ln_colhead ) ) <> "C"
On Escape Do lo_exit With -7
Endif
If ln_params < 7 && Number of field for cross tab cells
ln_cellfld = 3
Endif
If ln_params < 8
ll_xtotal = .F.
Endif
If ln_params < 17
Private la_uniqcol
Dime la_uniqcol(1)
Endif
If ln_params > 17
ln_dimens = ln_rowcol
Else
ln_dimens = 1
Endif
If ln_params > 18
Do Case
Case ln_colsort = 1
lc_colsort = "DESC"
Otherwise
lc_colsort = "ASC"
Endcase
Else
lc_colsort = "ASC"
Endif
If ln_params = 20
Do Case
Case ln_rowsort = 1
lc_rowsort = "DESC"
Otherwise
lc_rowsort = "ASC"
Endcase
Else
lc_rowsort = "ASC"
Endif
lc_colhead = Field( ln_colhead )
lc_cellfld = lc_dbfname + "." + Field( ln_cellfld )
lc_group = lc_dbfname + "." + Field( ln_rowfld )
lc_program = Program( 1 )
ln_return = 0
lc_rowfld = lc_group
lc_where = "ZZ" + "." + ;
lc_colhead + "=" + ;
lc_dbfname + "." + ;
lc_colhead
*do matshow
If ln_params < 17
lc_type = Type( (lc_colhead) )
Do Case
Case lc_type = "C"
Select &lc_colhead ;
from ( lc_dbfname ) ;
order By 1 &lc_colsort ;
group By 1 ;
into Array la_uniqcol
Case lc_type = "D"
Select "D"+Dtoc( &lc_colhead, 1 ) ;
from (lc_dbfname) ;
order By 1 &lc_colsort ;
group By 1 ;
into Array la_uniqcol
lc_where = "ZZ" + "." + ;
lc_colhead + "=" + ;
"'D' +dtoc(" + ;
lc_dbfname + "." + ;
"&lc_colhead, 1 )"
Endcase
ln_uniqcnt = Alen( la_uniqcol )
* If empty cursor
IF RECCOUNT(lc_dbfname) = 0
ln_uniqcnt = 0
ENDIF
Else
ln_uniqcnt = Alen( la_uniqcol, ln_dimens )
Endif
If ln_uniqcnt >256
Do lo_exit With -1
Endif
Dime la_colname[ ln_uniqcnt + 1, 4 ]
la_colname[1,1] = lc_colhead
la_colname[1,2] = "C"
If ln_params < 17 && no array sent down
la_colname[ 1,3 ] = Len( &lc_colhead )
Else
la_colname[ 1,3 ] = Len( la_uniqcol[ 1,1 ] ) && What about width ?
Endif
la_colname[1,4] = 0
For ln_k = 2 To ln_uniqcnt + 1
la_colname[ ln_k, 1 ] = la_uniqcol[ 1, ln_k-1 ]
la_colname[ ln_k, 2 ] = "N"
la_colname[ ln_k, 3 ] = 1
la_colname[ ln_k, 4 ] = 0
Endfor
Create Cursor ZZ From Array la_colname
*--Now populate the table with 1's
For ln_k = 2 To ln_uniqcnt + 1
Insert Into ZZ ( (lc_colhead), (Field(ln_k)) ) ;
VALUES (la_colname[ ln_k, 1 ], 1 )
Endfor
*--
*-- Now create the cross tab
*--
lc_sqlxtab = "SELECT " + lc_rowfld
If ln_params > 8
If ln_extfld1 > 0
lc_sqlxtab = lc_sqlxtab + ", " + lc_dbfname + "." + field( ln_extfld1, lc_dbfname )
lc_group = lc_group + ", " + lc_dbfname + "." + field( ln_extfld1, lc_dbfname )
Endif
Endif
If ln_params > 9
If ln_extfld2 > 0
lc_sqlxtab = lc_sqlxtab + ", " + lc_dbfname + "." + field( ln_extfld2, lc_dbfname )
lc_group = lc_group + ", " + lc_dbfname + "." + field( ln_extfld2, lc_dbfname )
Endif
Endif
If ln_params > 10
If ln_extfld3 > 0
lc_sqlxtab = lc_sqlxtab + ", " + lc_dbfname + "." + field( ln_extfld3, lc_dbfname )
lc_group = lc_group + ", " + lc_dbfname + "." + field( ln_extfld3, lc_dbfname )
Endif
Endif
If ln_params > 11
If ln_extfld4 > 0
lc_sqlxtab = lc_sqlxtab + ", " + lc_dbfname + "." + field( ln_extfld4, lc_dbfname )
lc_group = lc_group + ", " + lc_dbfname + "." + field( ln_extfld4, lc_dbfname )
Endif
Endif
For ln_k = 1 To ln_uniqcnt
lc_sqlxtab = lc_sqlxtab + ", " + ;
"SUM( " + lc_cellfld + ;
"*ZZ." + ;
la_uniqcol[ 1, ln_k ] + ") as " + ;
la_uniqcol[ ln_dimens, ln_k ]
Endfor
*--
*-- Add totals column if required.
*-- Add count, average, min, max functions as well
*--
If ll_cnt
lc_sqlxtab = lc_sqlxtab + ;
", COUNT( " + lc_rowfld + " ) as 'XCNT' "
Endif
If ll_avg
lc_sqlxtab = lc_sqlxtab + ;
", AVG( " + lc_cellfld + " ) as 'XAVG' "
Endif
If ll_min
lc_sqlxtab = lc_sqlxtab + ;
", MIN( " + lc_cellfld + " ) as 'XMIN' "
Endif
If ll_max
lc_sqlxtab = lc_sqlxtab + ;
", MAX( " + lc_cellfld + " ) as 'XMAX' "
Endif
If ll_xtotal
lc_sqlxtab = lc_sqlxtab + ;
", SUM( " + lc_cellfld + " ) as 'XTOT' "
Endif
lc_sqlxtab = lc_sqlxtab + ;
" FROM (lc_dbfname), ZZ " + ;
" WHERE &lc_where " + ;
" GROUP BY &lc_group " + ;
" Order by &lc_group &lc_rowsort " + ;
" INTO "
Do Case
Case lu_struct = 2 && output to table
lc_sqlxtab = m.lc_sqlxtab + "TABLE " + m.lcOutputDir + lc_outfile
Case lu_struct = 3 && output to array
lc_sqlxtab = lc_sqlxtab + "ARRAY _XTABX "
Public _xtabx
Dime _xtabx[ 1,1 ]
Otherwise && output to cursor DEFAULT
lc_sqlxtab = lc_sqlxtab + "CURSOR " + lc_outfile
Endcase
*-- Run the query
&lc_sqlxtab
Do lo_exit With ln_return
*-- eop MATXTAB
*~!*********************************************
*~!
*~! Procedure: lo_exit
*~!
*~!*********************************************
Procedure lo_exit
*~ Author............: Valdis Matison
*~ Modified by.......:
*~} Project...........:
*~ Created...........: 11/01/93
*~ Copyright.........: (c) Matison Consulting Group Inc., 1993
*~) Description.......: Shutdown procedure for MATXTAB
*~)
*~] Dependencies......:
*~ Calling Samples...:
*~ Parameter List....: ln_ret : Error code
*~ Returns...........:
*~ Future ideas......:
*~ Major change list.:
Parameters ln_ret
ln_return = ln_ret
If lc_talksta = "ON"
Set Talk On
Endif
If lc_safesta = "ON"
Set Safety On
Endif
If lc_escasta = "OFF"
Set Escape Off
Endif
*release windows lw_mat
Clear Typeahead
*-- Close input files only if successful
If ln_ret = 0
USE IN (SELECT('ZZ'))
If ll_closein && close the input file
USE IN (Select(lc_dbfname))
Endif
IF USED(JUSTSTEM(lc_outfile))
Select (lc_outfile)
ENDIF
Endif
* On Error &lc_error
On Escape &lc_escape
Return ln_ret
*--
*-- eop lo_exit
ENDPROC && lo_exit

43
COMUN/programe/mesaje.prg Normal file
View File

@@ -0,0 +1,43 @@
*_________________________________________
PROCEDURE anunta_rezultat
LPARAMETERS lcCategorie, lcSursa, lcMesaj, llEroare, llInTabel, lnId_ref
IF llInTabel
scrie_in_mesaje(lcCategorie, lcSursa, lcMesaj, llEroare, lnId_ref)
ELSE
DO mesaj With lcMesaj, ''
ENDIF
ENDPROC
PROCEDURE scrie_in_mesaje
LPARAMETERS lcCategorie, lcSursa, lcMesaj, llEroare, lnId_ref
LOCAL lnOrdine
SELECT mesaje
CALCULATE MAX(ordine) TO m.lnOrdine
m.lnOrdine = m.lnOrdine + 1
APPEND BLANK
replace ordine WITH m.lnOrdine, sursa WITH lcSursa, mesaj WITH lcMesaj, ;
eroare WITH llEroare, categorie WITH lcCategorie, id_ref WITH lnId_ref
ENDPROC
PROCEDURE sterge_mesaje
ZAP IN mesaje
ENDPROC
PROCEDURE raport_mesaje
PARAMETERS tcPerioada
PRIVATE pcTitlu,pcPerioada,pcDataOra
*!* PRIVATE toFirma
*!* SELECT FIRMA
*!* LOCATE FOR NFSCURT=FSCURT
*!* SCATTER NAME m.toFirma
*!* SELECT mesaje
*!* IF RECNO() > 0
*!* SET ORDER TO ordine
*!* REPORT FORM mesaje TO PRINTER PROMPT PREVIEW
*!* ENDIF
pcTitlu=[VERIFICARE GLOBALA]
pcPerioada=[Perioada ]
pcdataora = get_ora(2)
SELECT crsverificari
REPORT FORM rap_mesaje TO PRINTER PROMPT preview
ENDPROC

View File

@@ -0,0 +1,74 @@
#INCLUDE COMUN.H
#INCLUDE MVC.H
Define Class UtilizatorModel As Custom
cUtilizator = Null
cParola = Null
nIdUtil = Null
cSex = []
lInTura = .F.
nNivelAcces = 0 && 1 - ospatar
&& 2,3(1+2) - ospatar sef
Procedure actualizeazaDate
Lparameters tcParola,tcCod,tcUtilizator
This.cParola = tcParola
This.nNivelAcces = Val(Substr(tcCod,1,1))
This.cSex = Iif(VAL(Substr(tcCod,2,1))=2,[F],[M])
This.lInTura = Iif(VAL(Substr(tcCod,3,1))=0,.F.,.T.)
If Empty(tcUtilizator)
This.nIdUtil = Val(Substr(tcCod,4,AT([$],tcCod)-4))
This.cUtilizator = Substr(tcCod,At([$],tcCod)+1)
Else
This.nIdUtil = Val(Substr(tcCod,4))
This.cUtilizator = tcUtilizator
Endif
Endproc
***********************************************************************
Procedure reseteazaDate
WITH This
.cUtilizator = Null
.cParola = Null
.nIdUtil = Null
.cSex = Null
.lInTura = .F.
.nNivelAcces = 0
ENDWITH
Endproc
***********************************************************************
Function esteAutentificat
Return Iif(Isnull(This.nIdUtil),.F.,.T.)
Endfunc
***********************************************************************
Function getUtilizator
Return This.cUtilizator
Endfunc
***********************************************************************
Function getIdUtil
Return This.nIdUtil
Endfunc
***********************************************************************
FUNCTION getSex
RETURN This.cSex
ENDFUNC
***********************************************************************
FUNCTION getNivelAcces
RETURN This.nNivelAcces
ENDFUNC
***********************************************************************
PROCEDURE setInTura
LPARAMETERS tlInTura
This.lInTura = tlInTura
ENDPROC
***********************************************************************
FUNCTION getInTura
RETURN This.linTura
ENDFUNC
***********************************************************************
PROCEDURE Release
RELEASE This
ENDPROC
***********************************************************************
Enddefine && UtilizatorModel

View File

@@ -0,0 +1,58 @@
Define Class PSHeader As Header
cHOrder = ""
nOrderColor = Rgb(0,0,255)
nNotOrderColor = 0
cCallMethod = 'Refresh()'
cPictureProp = ''
Procedure Init
Lparameters tcOldCaption, tcFontName, tnOldForeColor, tllOldFontUnderline, tcMethodName, tcOrder, tlOldWordWrap, tcPictureProp
DoDefault()
This.Alignment = 2
This.Caption = tcOldCaption
This.ForeColor = tnOldForeColor
This.FontUnderline = tllOldFontUnderline
this.WordWrap = tlOldWordWrap
This.FontName = tcFontName
This.nNotOrderColor = tnOldForeColor
If !Empty(tcMethodName)
This.cCallMethod = Alltrim(tcMethodName)
ENDIF
If !Empty(tcPictureProp)
This.cPictureProp = Alltrim(tcPictureProp)
Endif
*This.cHOrder = Strextract(Lower(This.Name),'grh')
IF ([*] $ tcOrder) OR ([+] $ tcOrder) OR ([-] $ tcOrder) OR ([/] $ tcOrder) OR ([(] $ tcOrder)
this.cHOrder = []
ELSE
this.cHOrder = ALLTRIM(tcOrder)
ENDIF
Endproc
Procedure DblClick
lcOrder = This.cHOrder
If !Empty(lcOrder)
This.Parent.Parent.SetAll("ForeColor", This.nNotOrderColor, "PSHeader")
This.Parent.Parent.SetAll("FontUnderline", .F., "PSHeader")
this.Parent.Parent.SetAll("Picture",'',"PSHeader")
This.ForeColor = This.nOrderColor
This.FontUnderline = .T.
lcCallMethod = [THIS.Parent.Parent.] + This.cCallMethod + [(lcOrder)]
&lcCallMethod
IF !EMPTY(This.cPictureProp)
lcPictureName = [THIS.Parent.Parent.] + This.cPictureProp
this.Picture = &lcPictureName
ENDIF
Else
* Leave as is
Endif
Endproc
Enddefine

100
COMUN/programe/obj2arr.PRG Normal file
View File

@@ -0,0 +1,100 @@
* Version....: 1.0
* Author.....: Maurice de Beijer
* Date.......: January 29, 1998
* Notice.....: Copyright (c) 1996-1998 ABL, All Rights Reserved.
* Compiler...: Visual FoxPro 05.00.00.0415 for Windows
* Abstract...: Creates a one dimensional array with a pointer
* to all object contained within the object
*
* Returns....: The number of selected objects
*
* Parameters.: taTarget
* Target array (passed by reference)
* taObject
* Container object reference
*
LPARAMETERS taTarget, taObject
LOCAL lnCount
lnCount = 0
DIMENSION taTarget[1, 1]
taTarget = NULL
*
* Make sure an object was passed
*
IF TYPE('taObject') = 'O' AND !ISNULL(taObject)
*
* Object passed into recursive call
*
object2array(@taTarget, taObject)
IF TYPE('taTarget[1]') = 'O'
*
* Retun the number of objects
*
lnCount = ALEN(taTarget, 1)
ENDIF
ENDIF
RETURN lnCount
*-------------------------------------------------------
* Function....: Object2Array
* Called by...: Obj2Arr
*
* Abstract....: Creates a one dimensional array with a pointer
* to all object contained within the object
*
* Returns.....: None
*
* Parameters..: taTarget
* Target array (passed by reference)
* taObject
* Container object reference
*
* Notes.......:
*-------------------------------------------------------
PROCEDURE Object2Array(taTarget, taObject)
LOCAL ARRAY laMembers[1, 1]
LOCAL lnCount, lnI
*
* Make sure the second parameter is an object before adding it to the array
*
IF TYPE('taObject') = 'O' AND !ISNULL(taObject)
IF TYPE('taTarget[1]') = 'O' AND !ISNULL(taTarget[1])
*
* Increase the array size
*
lnCount = ALEN(taTarget, 1) + 1
DIMENSION taTarget[lnCount]
*
* Add the current object to the end
*
taTarget[lnCount] = taObject
ELSE
*
* First object in the array
*
taTarget[1] = taObject
ENDIF
*
* Get all member names
*
lnCount = AMEMBERS(laMembers, taObject, 2)
FOR lnI = 1 TO lnCount
*
* Get all contained objects from the member objects
*
object2array(@taTarget, EVAL('taObject.' + laMembers[lnI]) )
ENDFOR
ENDIF
RETURN

View File

@@ -0,0 +1,330 @@
*!* ocasaban.prg
*!* 27.04.2009
*!* marius.mutu
*!* am mutat viz_bancasa din roacont\programe\ocont2003.prg in comun\programe\ pentru folosire in ROACASA
*!* 27.08.2018
*!* marius.mutu
*!* viz_bancasa - test_casa si pentru 5314 reg. casa in valuta (trebuia atentionare pentru sold zilnic negativ
*********************************************************************************************
* PROCEDURE viz_bancasa(tcCont)
* Date : 29/11/2005, 12:00:20
* author : marius.mutu
* description:
******************************************* INCEPUT:viz_bancasa *******************************************
Procedure viz_bancasa
Lparameters tcCont, tlArataInregOperator
*!* adaugat 08.05.2009
*!* alex.lepadatu
*!* tlArataInregOperator - daca = .t. atunci se arata doar inregistrarile operatorului
*!* 08.05.2009 ^^
Local lccSelect, lnPrecDeb, lnPrecCred, lnPrecDebval, lnPrecCredval, lnSold
Local lcCursor, lcSqlCount, llAfisareTot, llSucces, lnInregistrariAfisare, llValuta
Local lcExec, lcSelect, lcSchema, lcFiltru, lcOrder, lnSucces
Local lcClasa, lcTitlu, lcck_bancasa_caption, lcck_bancasa_titlu, lcTip
LOCAL oreg
PRIVATE pnRecCnt, pobancasa
Store 0 To lnPrecDeb, lnPrecCred, lnPrecDebval, lnPrecCredval
Store "" To pobancasa
lccSelect = SELECT()
If Empty(tcCont) Or !Inlist(tcCont, '5311', '5121', '5314', '5124')
lcCont = '5311'
lcClasa = "frm_casaban"
lcTitlu = "REGISTRUL DE CASA"
lcck_bancasa_caption = "Casa"
lcck_bancasa_titlu = "Alegeti casa"
lcTip = "Casa"
Else
Local lcCont
lcCont = Alltrim(tcCont)
Endif
llValuta = Inlist(m.lcCont, '5314', '5124')
*** SETARE CONTEXT BANCASA PENTRU VBANCASA SI VBANCASA_VAL
*lcExec = [begin cbancasaproc('] + lcCont + [', ]+ALLTRIM(STR(gnluna+gnan*12))+[); end;]
lcExec = [begin pack_sesiune.setcont('] + lcCont + ['); end;]
lnSucces = goExecutor.oExecute(lcExec)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare')
Return
Endif
*** VERIFICARI CU BALANTA DE VERIFICARE DUPA CONT
Wait Window 'VERIFICARE SOLDURI...' Nowait
Do inainte With "REGCASA", lcCont In oinainte_de.prg
*** VERIFICARE SOLDURI CASA LEI
If Inlist(lcCont, '5311', '5314')
Wait Window 'TEST CASA...' Nowait
Do test_casa With lcCont In oinainte_de.prg
Endif
* Calculez numarul de inregistrari. Daca numarul este mai mic de min(300, gnInregistrariAfisare) afisez toate inregistrarile in loc sa intru cu 1=2
lnInregistrariAfisare = Iif(Type('gnInregistrariAfisare') = 'N', m.gnInregistrariAfisare, 300)
lcSqlCount = [SELECT COUNT(*) as nr FROM balanta_parteneri where an=?gnAn and luna=?gnLuna and CONT in ('] + Alltrim(Strtran(m.lcCont, [,], [','])) + [') ]
pnRecCnt = 0
llSucces = goExecutor.oSelecteaza2Value(m.lcSqlCount, @pnRecCnt)
llAfisareTot = (Nvl(m.pnRecCnt, 0) <= m.lnInregistrariAfisare)
*** CALCULEZ PRECEDENTE DIN BALANTA DE PARTENERI PENTRU SOLDURI INITIALE
lcSelect = [select SUM(precdeb) as precdeb, SUM(preccred) as preccred, ] + ;
[SUM(precvaldeb) as precvaldeb, SUM(precvalcred) as precvalcred ] + ;
[from ] + gcs + [.balanta_parteneri where cont = '] + lcCont + [' ] + ;
[and an = ?gnAn and luna = ?gnLuna ] + gcCondSucursala
lcCursor = [crsSold]
lnSucces = goExecutor.oExecute(lcSelect, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare')
Else
Select crsSold
Go Top
lnPrecDeb = precdeb
lnPrecCred = preccred
lnPrecDebval = precvaldeb
lnPrecCredval = precvalcred
Use In crsSold
Endif
*!* modificare v 2.5.40
creeaza_cursor_bancasa(m.lcCont, m.glBancasaCum)
creeaza_cursor_bancasalista(m.lcCont, .T.)
Select casban
Do Case
Case lcCont = '5311'
lcClasa = "frm_casaban"
lcTitlu = "REGISTRUL DE CASA"
lcck_bancasa_caption = "Casa"
lcck_bancasa_titlu = "Alegeti casa"
lcTip = "Casa"
Case lcCont = '5121'
lcClasa = "frm_casaban"
lcTitlu = "REGISTRUL DE BANCA"
lcck_bancasa_caption = "Banca"
lcck_bancasa_titlu = "Alegeti banca"
lcTip = "Banca"
Case lcCont = '5314'
lcClasa = "frm_casaban_val"
lcTitlu = "REGISTRUL DE CASA IN VALUTA"
lcck_bancasa_caption = "Casa"
lcck_bancasa_titlu = "Alegeti casa"
lcTip = "Casa"
Case lcCont = '5124'
lcClasa = "frm_casaban_val"
lcTitlu = "REGISTRUL DE BANCA IN VALUTA"
lcck_bancasa_caption = "Banca"
lcck_bancasa_titlu = "Alegeti banca"
lcTip = "Banca"
Endcase
Clear Class (lcClasa)
*oreg=Createobject(lcClasa,lcCont)
oreg = Createobject(lcClasa, lcCont, tlArataInregOperator, m.llAfisareTot)
With oreg
.Lb_titlu_alb_b121.Caption = lcTitlu
.grid1.cbancasa.header1.Caption = lcck_bancasa_caption
.ck_bancasa.Caption = lcck_bancasa_caption
.ck_bancasa.titlu = lcck_bancasa_titlu
.nrcont = lcCont
.tip = lcTip
.nprecdebI = lnPrecDeb
.npreccredI = lnPrecCred
.nprecdebvalI = lnPrecDebval
.npreccredvalI = lnPrecCredval
Endwith
oreg.Show(1)
Use In (SELECT('casban'))
USE IN (SELECT('cBancasaLista'))
Endproc && viz_bancasa
******************************************* SFARSIT: viz_bancasa *******************************************
********************************* INCEPUT: raport_regcasa_restrans ****************************
Function raport_regcasa_restrans
Lparameters tnTip, tlCasa, tcCursorSursa, tcCursorDest
Private pnDocAles, pnPartAles
Store 0 To pnDocAles, pnPartAles
Local llReturn
llReturn = .F.
Select Distinct 0 As ales, fdoc As fel_document, id_fdoc From (tcCursorSursa) ;
Where id_fdoc <> 0 ;
Order By fel_document Into Cursor crsdocumente Readwrite
Select Distinct 0 As ales, id_nume As id_part, nume As denumire, cod_fiscal From (tcCursorSursa) ;
Where Nvl(id_nume, 0) <> 0 ;
Order By denumire, cod_fiscal Into Cursor crsparteneri Readwrite
If Reccount('crsdocumente') <> 0 And Reccount('crsparteneri') <> 0
ofrmcriterii = Createobject('frm_casaban_restrans')
ofrmcriterii.Show(1)
Else
gnButon = 1
Endif
If gnButon = 1
llReturn = .T.
If pnDocAles = 0 And pnPartAles = 0
If tnTip = 1
If tlCasa
Select * From (tcCursorSursa) Where nrcrt = 2 Order By dataireg, dataact, cod Into Cursor (tcCursorDest) Readwrite
Else
Select * From (tcCursorSursa) Where nrcrt = 2 Order By dataact, cod Into Cursor (tcCursorDest) Readwrite
Endif
Else
Select * From (tcCursorSursa) Where nrcrt = 2 Order By dataireg, bancasa, dataact, cod Into Cursor (tcCursorDest) Readwrite
Endif
Else
If tnTip = 1
If tlCasa
Select dataireg, [] As serie_act, 0 As nract, ;
nume, explicatia, nrord, Sum(incasari) As incasari, Sum(plati) As plati, ;
scd, ascd, scc, ascc, dataact, Min(cod) As cod, bancasa From (tcCursorSursa) ;
Where nrcrt = 2 And id_fdoc In (Select id_fdoc From crsdocumente Where ales = 1 ) And ;
id_nume In (Select id_part From crsparteneri Where ales = 1 ) ;
Group By 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 15 ;
Union All ;
Select dataireg, serie_act, nract, ;
nume, explicatia, nrord, incasari, plati, ;
scd, ascd, scc, ascc, dataact, cod, bancasa From (tcCursorSursa) ;
Where nrcrt = 2 And Not (id_fdoc In (Select id_fdoc From crsdocumente Where ales = 1 ) And ;
id_nume In (Select id_part From crsparteneri Where ales = 1)) ;
Order By 1, 13, 14 Into Cursor (tcCursorDest) Readwrite
Else
Select dataireg, [] As serie_act, 0 As nract, ;
nume, explicatia, nrord, Sum(incasari) As incasari, Sum(plati) As plati, ;
scd, ascd, scc, ascc, dataact, Min(cod) As cod, bancasa From (tcCursorSursa) ;
Where nrcrt = 2 And id_fdoc In (Select id_fdoc From crsdocumente Where ales = 1 ) And ;
id_nume In (Select id_part From crsparteneri Where ales = 1 ) ;
Group By 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 15 ;
Union All ;
Select dataireg, serie_act, nract, ;
nume, explicatia, nrord, incasari, plati, ;
scd, ascd, scc, ascc, dataact, cod, bancasa From (tcCursorSursa) ;
Where nrcrt = 2 And Not (id_fdoc In (Select id_fdoc From crsdocumente Where ales = 1 ) And ;
id_nume In (Select id_part From crsparteneri Where ales = 1)) ;
Order By 13, 14 Into Cursor (tcCursorDest) Readwrite
Endif
Else
Select dataireg, Iif(id_fdoc = gnID_FDOC_BONFISCAL, [], serie_act) As serie_act, ;
Iif(id_fdoc = gnID_FDOC_BONFISCAL, 0, nract) As nract, ;
nume, explicatia, nrord, Sum(incasari) As incasari, Sum(plati) As plati, ;
scd, ascd, scc, ascc, dataact, Min(cod) As cod, bancasa From (tcCursorSursa) ;
Where nrcrt = 2 And id_fdoc In (Select id_fdoc From crsdocumente Where ales = 1 ) And ;
id_nume In (Select id_part From crsparteneri Where ales = 1 ) ;
Group By 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 15 ;
Union All ;
Select dataireg, serie_act, nract, ;
nume, explicatia, nrord, incasari, plati, ;
scd, ascd, scc, ascc, dataact, cod, bancasa From (tcCursorSursa) ;
Where nrcrt = 2 And Not (id_fdoc In (Select id_fdoc From crsdocumente Where ales = 1 ) And ;
id_nume In (Select id_part From crsparteneri Where ales = 1)) ;
Order By 1, 15, 13, 14 Into Cursor (tcCursorDest) Readwrite
Endif
Endif
Endif
If Used('crsdocumente')
Use In crsdocumente
Endif
If Used('crsparteneri')
Use In crsparteneri
Endif
Release ofrmcriterii, pnDocAles, pnPartAles
Return llReturn
Endfunc && raport_regcasa_restrans
********************************* SFARSIT: raport_regcasa_restrans ****************************
Procedure creeaza_cursor_bancasa
Lparameters tcCont, tlBancasaCum
Local lcCursor
lcCursor = [casban]
*** SELECTIE SOLDURI DIN BALANTA PARTENERI SI INREGISTRARI DIN REGISTRUL JURNAL (VBANCASA SI VBANCASA_VAL)
lcSchema = [nrcrt n(1),fdoc c(30),dataact d,dataireg d,nract N(20),serie_act c(10),bancasa c(50), id_bancasa N(20), ] + ;
[nume c(50), cod_fiscal c(50), reg_comert c(50), explicatia c(100), ] + ;
[scd c(4),scc c(4),ascd c(4), ascc c(4),COD N(20),NRORD C(30),NRESP C(30),SUCURSALA C(100),id_nume N(20),id_fdoc N(20),] + ;
[incasari n(19,gnPa),plati n(19,gnPa)] + Iif(Inlist(m.tcCont, '5314', '5124'), [,incasval n(19,gnPa),platival n(19,gnPa),numeval C(10), ] + Iif(m.tlBancasaCum, [curs C(100)], [curs N(10,4)]), []) + [,soldcum N(19,gnPa)]
lcSelect = [select nrcrt,fdoc,dataact,dataireg,nract,serie_act,bancasa,id_bancasa,nume,cod_fiscal,reg_comert,explicatia,] + ;
[scd,scc,ascd,ascc,COD,NRORD,NRESP,sucursala,id_nume,id_fdoc,] + ;
[incasari,plati] + Iif(Inlist(m.tcCont, '5314', '5124'), [,incasval,platival,numeval,curs], []) + [,CAST(0 as Number(20,4)) as soldcum] + ;
[ from vbancasa_] + Alltrim(m.tcCont) + Iif(m.tlBancasaCum, [_CUM], [])
lcFiltru = [1 = 2]
lcOrder = [nrcrt,dataireg,bancasa,cod]
llAfisare = .F.
lcGroup = ""
llModParam = .T.
lcFiltruOriginal = ""
If Used(lcCursor)
Use In (lcCursor)
Endif
gencursor('pobancasa', lcCursor, lcSelect, lcFiltru, lcSchema, lcOrder, llAfisare, lcGroup, llModParam, lcFiltruOriginal)
pobancasa.ca_baza1.afisare()
Endproc
* Cursor lista banci si solduri pentru filtrare in formular frm_casban
PROCEDURE creeaza_cursor_bancasalista
LPARAMETERS tcCont, tlEmpty
LOCAL lcSelect, lcSql, lnIdMax
Local llSucces, llValuta
lcSelect = SELECT()
* Creez cursorul banci si solduri pentru filtrare
CREATE CURSOR cBancasaLista (bancasa C(250) null, id_bancasa N(20) null, numeval C(10) null, sold N(20,4) null, ord N(1) null)
* La prima apelare vreau doar cursorul gol
IF m.tlEmpty
SELECT (m.lcSelect)
RETURN
ENDIF
llValuta = Inlist(m.tcCont, '5314', '5124')
lcSql = [select bancasa,id_bancasa,SUM(incasari) as incasari,SUM(plati) as plati,CAST(0 as Number(20,4)) as sold] + Iif(m.llValuta, [,SUM(incasval) as incasval,SUM(platival) as platival,numeval], []) + ;
[ from vbancasa_] + Alltrim(m.tcCont) + ;
[ group by bancasa,id_bancasa] + Iif(m.llValuta, [,numeval], [])
llSucces = goExecutor.oExecuta(m.lcSql, 'cSoldTemp')
IF m.llValuta
select 1 AS ord, PADR('TOATE', 250, ' ') as bancasa, 0 as id_bancasa, 'LEI' as numeval, sum(incasari-plati) as sold from cSoldTemp ;
UNION ALL ;
select 2 AS ord, PADR(numeval, 250, ' ') as bancasa, -1 as id_bancasa, numeval, sum(incasval-platival) as sold from cSoldTemp group by numeval ;
UNION ALL ;
select 3 AS ord, bancasa, id_bancasa, numeval, sum(incasval-platival) as sold from cSoldTemp group by bancasa, id_bancasa, numeval ;
order by 1,3 ;
INTO CURSOR cBancaTemp READWRITE
ELSE
select 1 AS ord, PADR('TOATE', 250, ' ') as bancasa, 0 as id_bancasa, 'LEI' as numeval, sum(incasari-plati) as sold from cSoldTemp ;
UNION ALL ;
select 3 AS ord, bancasa, id_bancasa, 'LEI' as numeval, sum(incasari-plati) as sold from cSoldTemp group by bancasa, id_bancasa ;
order by 1,2 ;
INTO CURSOR cBancaTemp READWRITE
ENDIF
CALCULATE MAX(id_bancasa) TO lnIdMax IN cBancaTemp
* creez un id_bancasa unic pentru fiecare valuta
UPDATE cBancaTemp SET id_bancasa = m.lnIdMax + RECNO() WHERE id_bancasa = -1
USE IN (SELECT('cSoldTemp'))
SELECT cBancasaLista
APPEND FROM DBF('cBancaTemp')
USE IN (SELECT('cBancaTemp'))
SELECT (m.lcSelect)
ENDPROC && creeaza_cursor_bancasalista

3023
COMUN/programe/ocautare.prg Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,603 @@
*!* 27.09.2011
*!* marius.mutu
*!* create cursor calculcompens in loc de create table
*!* #3146 Steaua Nordului
*!* 31.01.2013
*!* marius.mutu
*!* calculcompens - tratare facturi cu tva_incasare: calculcompens.tva_incasare_a, id_fact (ex: plata 401 = 542)
*!* 19.04.2013
*!* marius.mutu
*!* calculcompens - tva incasare pentru ambele facturi din compensare. ex: 401 = 4111
*** proceduri introducere in actactan, nu merge pentru sume negative !!!!
*!* 25.12.2025
*!* calculcompens - tratare compensare 5121 = 419 cu cote TVA diferite (proc_tva, id_jtvacol)
*!* 07.01.206
*!* calculcompens_part - tratare compensare 419 lei 5121 = 419 cu cote TVA diferite (proc_tva, id_jtvacol)
******************************************* INCEPUT: calculcompens *******************************************
***
PROCEDURE calculcompens
PARAMETERS tcFisD, tcFisC, tnTipOrdonare, tnTipOprire
*!* modificare v 2.5.27 : tnTipOrdonare, tnTipOprire
*!* tnTipOrdonare - 0/implicit = ordonare descrescator dupa suma
*!* 1 = ordonare dupa data
*!* tnTipOprire - 0/implicit = cand sum(sumaachi) pentru ambele tabele este 0 ( initial, sum(sumaachi) dintr-un tabel este egala cu sum(sumaachi) din celalalt )
*!* 1 = cand sum(sumaachi) pentru unul dintre tabele este 0
PRIVATE pcCont
STORE '' TO pcCont
LOCAL max1, max2, nract1, nract2, lcFis1, lcFis2, id_fact1, id_fact2, llDefalcTVA, lnMaxTvai, lcOrdine
STORE 1 TO max1, max2
STORE 0 TO nract1, nract2, id_fact1, id_fact2
lnMaxTvai = 0
lcFisD = ALLTRIM(tcFisD)
lcFisC = ALLTRIM(tcFisC)
*!* modificare v 2.5.26
*!* modificare v 2.5.27 : am adaugat lcOrdine
*!* SELECT * FROM &lcFisD INTO CURSOR tperecheD READWRITE
*!* SELECT * FROM &lcFisC INTO CURSOR tperecheC READWRITE
lcOrdine = IIF(EVL(tnTipOrdonare,0)=1,[dataact,nract],[sumaachi desc])
SELECT * FROM &lcFisD WHERE ales AND sumaachi <> 0 ORDER BY &lcOrdine INTO CURSOR tperecheD READWRITE
SELECT * FROM &lcFisC WHERE ales AND sumaachi <> 0 ORDER BY &lcOrdine INTO CURSOR tperecheC READWRITE
*!* modificare v 2.5.26 ^
*** Aflu daca exista bifa TVA_INCASARE_A intr-unul din fisiere (ex: 401 = 542)
*** pentru a putea pune in cursorul rezultat id_fact din fisierul corespunzator
*** in cazul compensarilor 401 = 4111, pot fi amandoua facturile cu TVA incasare
llTvaIncasareD = .F.
llTvaIncasareC = .F.
select tPerecheD
locate for nvl(tva_incasare_a,0) = 1
if found()
llTvaIncasareD = .T.
endif
select tPerecheC
locate for nvl(tva_incasare_a,0) = 1
if found()
llTvaIncasareC = .T.
endif
llTVAIncasare = m.llTvaIncasareD or m.llTvaIncasareC
CREATE cursor calculcompensare (nr_doc_d N(14), nr_doc_c N(14), id_factd N(14), id_factc N(14),;
ascc c(4), ascd c(4), sumaachi N(20,4), ales l, proc_tva N(5,2), id_jtvacol N(10), proc_tvaD N(5,2), id_jtvacolD N(10), proc_tvaC N(5,2), id_jtvacolC N(10), ;
tva_incasare_a N(1), tva_incasare_d N(1), tva_incasare_dtip C(1),tva_incasare_c N(1), tva_incasare_ctip C(1))
lnRecnoD = 1
lnReccountD = Reccount("tPerecheD")
Select tperecheD
Go Top
lnSumaD = sumaachi
pcCont = Alltrim(Cont)
llDefalcTVAD = .F.
lcSelect = [select count(*) as defalcTVA from config_cont_ireg t where cont = ?pcCont and cu_proc_tva = 1]
If goExecutor.oExecuta(lcSelect, "crsDefalcTva")
Select crsDefalcTVA
llDefalcTVAD = defalcTVA >0
Use In crsDefalcTVA
Endif
lnRecnoC = 1
lnReccountC = Reccount("tPerecheC")
Select tperecheC
Go Top
lnSumaC = sumaachi
pcCont = Alltrim(Cont)
llDefalcTVAC = .F.
lcSelect = [select count(*) as defalcTVA from config_cont_ireg t where cont = ?pcCont and cu_proc_tva = 1]
If goExecutor.oExecuta(lcSelect, "crsDefalcTva")
Select crsDefalcTVA
llDefalcTVAC = defalcTVA >0
Use In crsDefalcTVA
Endif
lnSumaCompensata = 0
lcTipMaxUrm = []
lnSemnSumaD = SIGN(tperecheD.sumaachi)
*!* am ordonat documentele pereche de pe credit si de pe debit descrescator dupa sume
*!* pana ajung la 0 pe ultima inregistrare de pe una dintre tabele, aleg MIN
*!* cand am ajuns la 0 pe ultima inregistrare intr-una dintre tabele, iau doar valorile din tabelul celalalt
*!* modificare v 2.5.27
*!* DO WHILE !(lnRecnoD = lnReccountD AND lnRecnoC = lnReccountC AND lnSumaC = 0 AND lnSumaD = 0)
DO WHILE (EVL(tnTipOprire,0) = 0 AND !(lnRecnoD = lnReccountD AND lnRecnoC = lnReccountC AND lnSumaC = 0 AND lnSumaD = 0)) ;
OR (EVL(tnTipOprire,0) = 1 AND EMPTY(lcTipMaxUrm))
*!* modificare v 2.5.27 ^
lcTipMax = lcTipMaxUrm
lnSumaCompensata = IIF(lcTipMax=[C],lnSumaD,IIF(lcTipMax=[D],lnSumaC,IIF(EVL(tnTipOprire,0)=1,MIN(ABS(lnSumaC),ABS(lnSumaD)),MIN(lnSumaC,lnSumaD))))
lnProc_tva = 0.00
lnIdJtvaColoana = 0
lnProc_tvaD = 0.00
lnIdJtvaColoanaD = 0
lnProc_tvaC = 0.00
lnIdJtvaColoanaC = 0
***-------------------------
SELECT tperecheD
STORE nract TO nract1
id_fact1 = id_fact
lcascd = NVL(acont,'')
IF cu_tva = 1 AND TYPE('tPerecheD.proc_tva') # 'U' AND llDefalcTVAD
lnProc_tva = proc_tva
lnIdJtvaColoana = NVL(id_jtva_coloana,0)
lnProc_tvaD = proc_tva
lnIdJtvaColoanaD = NVL(id_jtva_coloana,0)
ENDIF
*!* cand tnTipOprire = 1, atunci trebuie sa diminuez sumaachi cu lnSumaCompensata
replace sumaachi WITH sumaachi - IIF(EVL(tnTipOprire,0)=1,lnSemnSumaD,1) * lnSumaCompensata
lnSumaD = sumaachi
Do Case
Case lnSumaD = 0 And lnRecNoD <> lnReccountD
Skip
lnSumaD = sumaachi
lnRecNoD = Recno()
Case lnSumaD = 0 And lnRecNoD = lnReccountD And EMPTY(lcTipMax)
*!* daca am ajuns la ultima inregistrare si am restul 0, atunci trebuie sa iau valorile doar din celalalt tabel
*!* pentru urmatoarele note, nu mai fac exigibilizarea de TVA pentru Debit
lcTipMaxUrm = [D]
Endcase
***-------------------------
SELECT tperecheC
STORE nract TO nract2
id_fact2 = id_fact
lcascc = NVL(acont,'')
IF cu_tva = 1 AND TYPE('tPerecheC.proc_tva') # 'U' AND llDefalcTVAC
lnProc_tva = proc_tva
lnIdJtvaColoana = NVL(id_jtva_coloana,0)
lnProc_tvaC = proc_tva
lnIdJtvaColoanaC = NVL(id_jtva_coloana,0)
ENDIF
*!* cand tnTipOprire = 1, atunci trebuie sa diminuez sumaachi cu lnSumaCompensata
replace sumaachi WITH sumaachi - IIF(EVL(tnTipOprire,0)=1,lnSemnSumaD*(-1),1) * lnSumaCompensata
lnSumaC = sumaachi
Do Case
Case lnSumaC = 0 And lnRecNoC <> lnReccountC
Skip
lnSumaC = sumaachi
lnRecNoC = Recno()
Case lnSumaC = 0 And lnRecNoC = lnReccountC And EMPTY(lcTipMax)
*!* daca am ajuns la ultima inregistrare si am restul 0, atunci trebuie sa iau valorile doar din celalalt tabel
*!* pentru urmatoarele note, nu mai fac exigibilizarea de TVA pentru Credit
lcTipMaxUrm = [C]
Endcase
SELECT calculcompensare
IF lnSumaCompensata <> 0
APPEND BLANK
REPLACE nr_doc_c WITH nract2, ascc WITH lcascc, id_factc WITH id_fact2
REPLACE nr_doc_d WITH nract1, ascd WITH lcascd, id_factd WITH id_fact1
REPLACE proc_tva WITH lnProc_tva,id_jtvacol WITH lnIdJtvaColoana
REPLACE proc_tvaD WITH lnProc_tvaD,id_jtvacolD WITH lnIdJtvaColoanaD
REPLACE proc_tvaC WITH lnProc_tvaC,id_jtvacolC WITH lnIdJtvaColoanaC
REPLACE sumaachi WITH IIF(EVL(tnTipOprire,0)=1,lnSemnSumaD,1)*lnSumaCompensata
REPLACE ales WITH .T.
if m.llTvaIncasare
replace tva_incasare_a with 1
endif
if m.llTvaIncasareD && AND lcTipMax<>[D] : pusesem conditia ca sa nu mai genereze note de TVA la incasare cand ajungeam pe 0 la ultima inregistrare din cursor
replace tva_incasare_d with 1, tva_incasare_dtip with 'D'
endif
if m.llTvaIncasareC && AND lcTipMax<>[C] : pusesem conditia ca sa nu mai genereze note de TVA la incasare cand ajungeam pe 0 la ultima inregistrare din cursor
replace tva_incasare_c with 1, tva_incasare_ctip with 'C'
endif
ENDIF
ENDDO
*!* modificare v 2.5.26 ^
USE IN tperecheD
USE IN tperecheC
RETURN
***
******************************************* SFARSIT: calculcompens in lei *******************************************
******************************************* INCEPUT: calculcompens in valuta - fara sume negative *******************************************
***
PROCEDURE calculcompens_valuta
PARAMETERS tcFisD, tcFisC
LOCAL max1, max2, nract1, nract2, lcFis1, lcFis2, id_fact1, id_fact2, llDefalcTVA
STORE 1 TO max1,max2
STORE 0 TO nract1, nract2, id_fact1, id_fact2
PRIVATE pcCont
pcCont = ''
llDefalcTVA = .F.
lcFisD = ALLTRIM(tcFisD)
lcFisC = ALLTRIM(tcFisC)
SELECT * FROM &lcFisD INTO CURSOR tperecheD READWRITE
SELECT * FROM &lcFisC INTO CURSOR tperecheC READWRITE
CREATE CURSOR calculcompensare (nr_doc_d N(14), nr_doc_c N(14),id_factd N(14), id_factc N(14),;
ascc c(4), ascd c(4), sumaachi2 N(20,4), achilei N(20,4), id_jtvacol N(10), proc_tva N(5,2), ;
sumaachid N(20,4), sumaachic N(20,4), cursd N(12,4), cursc N(12,4), difplus N(20,4), ;
difminus N(20,4), cursval N(12,4), cursdif N(12,4), ales l)
DO WHILE max1!=0 AND max2!=0
lnProc_tva = 0.00
lnIdJtvaColoana = 0
SELECT tperecheC
CALCULATE MAX(sumaachi2) FOR ales TO max2
*WAIT WINDOW 'max2'+STR(max2)
SELECT tperecheD
CALCULATE MAX(sumaachi2) FOR ales TO max1
*WAIT WINDOW 'max1'+STR(max1)
***-------------------------
SELECT tperecheD
GO TOP
pcCont = ALLTRIM(CONT)
llDefalcTVA = .F.
lcSelect = [select count(*) as defalcTVA from config_cont_ireg t where cont = ?pcCont and cu_proc_tva = 1]
lnSucces = goExecutor.oExecute(lcSelect, "crsDefalcTva")
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,'Eroare')
ELSE
SELECT crsDefalcTVA
llDefalcTVA = defalcTVA >0
IF USED('crsDefalcTVA')
USE IN crsDefalcTVA
ENDIF
ENDIF
***-------------------------
SELECT tperecheD
LOCATE FOR sumaachi2 = max1 AND ales
nract1 = nract
id_fact1 = id_fact
lcascd = NVL(acont,'')
lnCursD = cursschimb
IF TYPE('tPerecheD.proc_tva') # 'U' AND llDefalcTVA
lnProc_tva = proc_tva
lnIdJtvaColoana = NVL(id_jtva_coloana,0)
ENDIF
IF max1 <= max2
lnSumaleiD = sumaachi
REPLACE sumaachi2 WITH 0
REPLACE ales WITH .F.
ELSE
lnSumaleiD = ROUND(cursschimb * max2, gnPC)
IF lnSumaleiD > sumaachi
lnSumaleiD = sumaachi
ENDIF
REPLACE sumaachi2 WITH max1 - max2
REPLACE sumaachi WITH sumaachi - lnSumaleiD
ENDIF
***-------------------------
SELECT tperecheC
GO TOP
pcCont = ALLTRIM(CONT)
llDefalcTVA = .F.
lcSelect = [select count(*) as defalcTVA from config_cont_ireg t where cont = ?pcCont and cu_proc_tva = 1]
lnSucces = goExecutor.oExecute(lcSelect, "crsDefalcTva")
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,'Eroare')
ELSE
SELECT crsDefalcTVA
llDefalcTVA = defalcTVA >0
IF USED('crsDefalcTVA')
USE IN crsDefalcTVA
ENDIF
ENDIF
***-------------------------
SELECT tperecheC
LOCATE FOR sumaachi2 = max2 AND ales
nract2 = nract
id_fact2 = id_fact
lcascc = NVL(acont,'')
lnCursC = cursschimb
IF TYPE('tPerecheC.proc_tva') # 'U' AND llDefalcTVA
lnProc_tva = proc_tva
lnIdJtvaColoana = NVL(id_jtva_coloana,0)
ENDIF
IF max2 <= max1
lnSumaleiC = sumaachi
REPLACE sumaachi2 WITH 0
REPLACE ales WITH .F.
ELSE
lnSumaleiC = ROUND(cursschimb * max1, gnPC)
IF lnSumaleiC > sumaachi
lnSumaleiC = sumaachi
ENDIF
REPLACE sumaachi2 WITH max2 - max1
REPLACE sumaachi WITH sumaachi - lnSumaleiC
ENDIF
SELECT calculcompensare
IF MIN(max1, max2) <> 0
APPEND BLANK
REPLACE nr_doc_c WITH nract2, id_factc WITH id_fact2, ascc WITH lcascc, sumaachic WITH lnSumaleiC, cursc WITH lnCursC
REPLACE nr_doc_d WITH nract1, id_factd WITH id_fact1,ascd WITH lcascd, sumaachid WITH lnSumaleiD, cursd WITH lnCursD
REPLACE sumaachi2 WITH MIN(max1, max2),proc_tva WITH lnProc_tva,id_jtvacol WITH lnIdJtvaColoana
REPLACE ales WITH .T.
ENDIF
ENDDO
SELECT calculcompensare
SCAN
IF sumaachid > sumaachic
REPLACE difplus WITH sumaachid - sumaachic, achilei WITH sumaachic, cursval WITH cursc, cursdif WITH cursd
ELSE
REPLACE difminus WITH sumaachic - sumaachid, achilei WITH sumaachid, cursval WITH cursd, cursdif WITH cursc
ENDIF
ENDSCAN
USE IN tperecheD
USE IN tperecheC
RETURN
******************************************* SFARSIT: calculcompens - fara sume negative *******************************************
***
*!* PROCEDURE calculcompens_valuta
*!* PARAMETERS tcFisD, tcFisC
*!* LOCAL max1, max2, nract1, nract2, lcFis1, lcFis2
*!* STORE 1 TO max1,max2
*!* STORE 0 TO nract1,nract2
*!* lcFisD = ALLTRIM(tcFisD)
*!* lcFisC = ALLTRIM(tcFisC)
*!* SELECT * from &lcfisd INTO CURSOR tperecheD READWRITE
*!* SELECT * from &lcfisc INTO CURSOR tperecheC READWRITE
*!* CREATE TABLE &gcTempPath\calculcompensare.dbf (nr_doc_d n(14), nr_doc_c n(14), ascc c(4), ascd c(4), sumaachi2 n(16,2), achilei n(16,2), ;
*!* sumaachid n(16,2), sumaachic n(16,2), cursd n(8,2), cursc n(8,2), difplus n(16,2), difminus n(16,2), cursval n(8,2), cursdif n(8,2), ales l)
*!*
*!* DO WHILE max1!=0 OR max2!=0
*!* SELECT tperecheC
*!* CALCULATE MAX(sumaachi2) FOR ales AND sumaachi2 <> 0 TO max2
*!* *WAIT WINDOW 'max2'+STR(max2)
*!* SELECT tperecheD
*!* CALCULATE MAX(sumaachi2) FOR ales AND sumaachi2 <> 0 TO max1
*!* *WAIT WINDOW 'max1'+STR(max1)
*!* SELECT tperecheD
*!* LOCATE FOR sumaachi2 = max1 AND ales
*!* nract1 = nract
*!* lcascd = acont
*!* lnCursD = cursschimb
*!* if (max1 <= max2 OR max2 = 0) AND max1 <> 0
*!* lnSumaleiD = sumaachi
*!* REPLACE sumaachi2 WITH 0
*!* * REPLACE ales WITH .f.
*!*
*!* ELSE
*!* lnSumaLeiD = ROUND(cursschimb * max2, 0)
*!* IF lnSumaLeiD > sumaachi
*!* lnSumaLeiD = sumaachi
*!* ENDIF
*!* REPLACE sumaachi2 WITH max1 - max2
*!* REPLACE sumaachi WITH sumaachi - lnSumaLeiD
*!* ENDIF
*!*
*!* SELECT tperecheC
*!* LOCATE FOR sumaachi2 = max2 AND ales
*!* nract2 = nract
*!* lcascc = acont
*!* lnCursC = cursschimb
*!*
*!* if (max2 <= max1 OR max1 = 0) AND max2 <> 0
*!* lnSumaleiC = sumaachi
*!* REPLACE sumaachi2 WITH 0
*!* * REPLACE ales WITH .f.
*!*
*!* ELSE
*!* lnSumaLeiC = ROUND(cursschimb * max1, 0)
*!* IF lnSumaLeiC > sumaachi
*!* lnSumaLeiC = sumaachi
*!* ENDIF
*!* REPLACE sumaachi2 WITH max2 - max1
*!* REPLACE sumaachi WITH sumaachi - lnSumaLeiC
*!* ENDIF
*!*
*!*
*!* SELECT calculcompensare
*!* IF max1 <> 0 OR max2 <> 0
*!* APPEND BLANK
*!* REPLACE nr_doc_c WITH nract2, ascc WITH lcAscc, sumaAchiC WITH lnSumaleiC, cursC WITH lnCursC
*!* REPLACE nr_doc_d WITH nract1, ascd WITH lcAscd, sumaAchiD WITH lnSumaleiD, cursD WITH lnCursD
*!* IF MIN(max1, max2) <> 0
*!* REPLACE sumaachi2 WITH MIN(max1, max2)
*!* ELSE
*!* REPLACE sumaachi2 WITH MAX(max1, max2)
*!* ENDIF
*!* REPLACE ales WITH .t.
*!* ENDIF
*!* ENDDO
*!* SELECT calculcompensare
*!* SCAN
*!* IF sumaAchiD > sumaAchiC
*!* REPLACE difplus WITH sumaAchiD - sumaAchiC, achilei WITH sumaAchiC, cursval WITH cursC, cursdif WITH cursD
*!* ELSE
*!* REPLACE difminus WITH sumaAchiC - sumaAchiD, achilei WITH sumaAchiD, cursval WITH cursD, cursdif WITH cursC
*!* ENDIF
*!* ENDSCAN
*!* USE IN tperecheD
*!* USE IN tperecheC
*!* RETURN
*********************************************** SFARSIT calculcompens in valuta ******************************************
Function calculcompens_part
Lparameters tcCont, tnProcTva, tlValuta, tnIdValuta, tnIdValuta2, tcNumeVal2
&& partea in valuta nu este testata
Local llReturn, lnTip, lcCursorIregPart, lcCursorSumeNegative, lcCursorSumePozitive, lcCursorCalculCompensare, ;
lcCursorCalculCompensareTemp, lcCont, lcCond, lnIdPart, ;
lnFelCont, lnPozitie, lcSumaAchi, lcSelectie, lcSelectie1, lcSelectie2
lcCursorIregPart = Sys(2015)
lcCursorSumeNegative = Sys(2015)
lcCursorSumePozitive = Sys(2015)
lcCursorCalculCompensare = [calculcompensare]
lcCursorCalculCompensareTemp = SYS(2015)
lcCont = Alltrim(tcCont)
lcCond = [ an = ] + Alltrim(Str(gnAn)) + [ and luna = ] + Alltrim(Str(gnluna))+ Iif(glEMama,' and NVL(id_sucursala,0) = 0 ',gcCondSucursala)
llReturn = .T.
If tlValuta
lcCond= lcCond + [ and ABS(i.precvaldeb + i.valdebit - i.precvalcred - i.valcredit)>0 and i.id_valuta ] + ;
Iif(!EMPTY(tnIdValuta2), [in ( ] + Alltrim(Str(tnIdValuta)) + [,] + Alltrim(Str(Nvl(tnIdValuta2,0))) + [)], [ = ]+Alltrim(Str(tnIdValuta)))
Else
lcCond= lcCond + [ and (i.precvaldeb + i.valdebit - i.precvalcred - i.valcredit = 0) ]
Endif
Select xcont
Locate For Val(contpart) = Val(lcCont)
lnIdPart = idpart
lnFelCont = fel_cont
lnPozitie = pozitie
pcselect = ['select i.* FROM vireg_parteneri i where 2=2 ']
pcfiltru = [ i.id_part = ] + Alltrim(Str(lnIdPart)) + [ AND ABS(i.precdeb + i.debit - i.preccred - i.credit)<>0 AND i.cont = ']+ lcCont + [' and ] + lcCond
Private podateintrod
Store '' To podateintrod
gencursor('podateintrod',lcCursorIregPart,pcselect,pcfiltru,[''],[''])
Do Case
Case m.lnFelCont = 0 Or (m.lnFelCont = 2 And m.lnPozitie = 1)
lnTip = 1
lcSumaAchi = [ROUND(precdeb + debit,gnPc) - ROUND(preccred+credit,gnPc)]
lcSelectie = [SELECT *, ACONT AS ASCC, nume_val as numeval, curs as cursschimb, precdeb + debit as totctva, preccred+credit as achitat, credit as achitatl, ] +;
[precvaldeb + valdebit AS sumaval, precVALcred+VALcredit as achitatval, ] + Iif(tnProcTva = 1, [1], [0]) + [ as cu_tva, ] +;
[.T. as ales, ] + lcSumaAchi + [ as sumaachi, 000000000000.0000 as sumaachi2, 00000000000000.0000 as achilei, 00000000000000.0000 as difplus, ]+;
[ 00000000000000.0000 as difminus, 000000.0000 as cursval, 000000.0000 as cursdif, id_jtva_coloana as id_jtvacol, ] +;
[CAST(0 as n(10)) as id_valuta2, CAST('' as c(30)) as nume_val2, CAST(0 as n(15,2)) as sumaachi22,tva_incasare ] + ;
[FROM ] + lcCursorIregPart
Otherwise
lnTip = 2
lcSumaAchi = [ROUND(preccred + credit,gnPc) - ROUND(precdeb+debit,gnPc)]
lcSelectie = [SELECT *, ACONT AS ASCD, nume_val as numeval, curs as cursschimb, preccred + credit as totctva, precdeb+debit as achitat, debit as achitatl,] + ;
[precvalcred + valcredit as sumaval, precVALdeb+VALdebit as achitatval, ] + Iif(tnProcTva = 1, [1], [0]) + [ as cu_tva, ] +;
[.T. as ales, ] + lcSumaAchi + [ as sumaachi, 00000000000000.0000 as sumaachi2, 00000000000000.0000 as achilei, 00000000000000.0000 as difplus, ]+;
[ 00000000000000.0000 as difminus, 000000.0000 as cursval, 000000.0000 as cursdif, id_jtva_coloana as id_jtvacol, ] + ;
[CAST(0 as n(10)) as id_valuta2, CAST('' as c(30)) as nume_val2, CAST(0 as n(15,2)) as sumaachi22,tva_incasare ] + ;
[FROM ] + lcCursorIregPart
Endcase
lcSelectie1 = lcSelectie + [ WHERE ] + lcSumaAchi + [< 0 INTO CURSOR ] + lcCursorSumeNegative + [ READWRITE]
lcSelectie2 = lcSelectie + [ WHERE ] + lcSumaAchi + [> 0 INTO CURSOR ] + lcCursorSumePozitive + [ READWRITE]
&lcSelectie1
&lcSelectie2
If !Empty(tcNumeVal2) And !Empty(Nvl(tnIdValuta2,0))
Update (lcCursorSumeNegative) Set id_valuta2 = tnIdValuta2, nume_Val2 = tcNumeVal2
Update (lcCursorSumePozitive) Set id_valuta2 = tnIdValuta2, nume_Val2 = tcNumeVal2
ENDIF
*!* ROUND(sumaval-achitatval,gnPval)
*!* && sumaachi2 = valoarea in valuta facturii (euro)
*!* && sumaachi22 = valoarea in valuta de incasare(usd)
*!* && m.suma_32 = cursul usd
*!* && m.suma_3 = cursul euro
*!* Local lncurs
*!* If ales
*!* lncurs = Iif(id_valuta = id_valuta2, poact.suma_32, poact.suma_3)
*!* * lncurs = Iif(id_valuta = poact.id_valuta2, poact.suma_32, poact.suma_3)
*!* Repl sumaachi2 With Round(sumaval - achitatval,gnPval)
*!* IF poAct.suma_32 > 0
*!* replace sumaachi22 WITH ROUND(sumaachi2 * m.lncurs / poact.suma_32,2)
*!* ENDIF
*!* If sumaachi2=0
*!* Do mesaj With "Bifati doar inregistrarile","care au sold in valuta!"
*!* Replace ales With .F.
*!* Endif
*!* Else
*!* Repl sumaachi2 With 0, sumaachi22 With 0
*!* Endif
If Reccount(lcCursorSumeNegative)>0 And Reccount(lcCursorSumePozitive)>0
Do calculcompens With lcCursorSumeNegative, lcCursorSumePozitive, 1,1
*!* mut toate facturile pe coloana corecta si le cumulez dupa id_fact
copiaza_structura_cursor(lcCursorCalculCompensare,lcCursorCalculCompensareTemp)
INSERT INTO (lcCursorCalculCompensareTemp) SELECT * FROM (lcCursorCalculCompensare)
DELETE from (lcCursorCalculCompensare)
IF lnTip = 1
Insert Into (lcCursorCalculCompensare) (nr_doc_d,nr_doc_c,id_factd,id_factc,ascd,ascc,sumaachi,ales,proc_tva,;
id_jtvacol,tva_incasare_a,tva_incasare_d,tva_incasare_dtip,tva_incasare_c,tva_incasare_ctip) ;
SELECT 0 As nr_doc_d, nr_doc_d As nr_doc_c, 0 As id_factd, id_factd As id_factc, '' As ascd,ascd As ascc,;
Sum(sumaachi) As sumaachi,ales,;
proc_tvaD as proc_tva,id_jtvacol as id_jtvacolC,;
tva_incasare_a,0 As tva_incasare_d,'' As tva_incasare_dtip,tva_incasare_d As tva_incasare_c,;
IIF(tva_incasare_dtip='D','C','') As tva_incasare_ctip ;
From (lcCursorCalculCompensareTemp) ;
Group By 1,2,3,4,5,6,8,9,10,11,12,13,14,15 ;
Union All ;
SELECT 0 As nr_doc_d,nr_doc_c,0 As id_factd,id_factc,'' As ascd,ascc,;
Sum(sumaachi)*(-1) As sumaachi,ales,;
proc_tvaC as proc_tva, id_jtvacolC as id_jtvacol,;
tva_incasare_a,0 As tva_incasare_d,'' As tva_incasare_dtip,tva_incasare_c,tva_incasare_ctip ;
From (lcCursorCalculCompensareTemp) ;
Group By 1,2,3,4,5,6,8,9,10,11,12,13,14,15
ELSE
Insert Into (lcCursorCalculCompensare) (nr_doc_d,nr_doc_c,id_factd,id_factc,ascd,ascc,sumaachi,ales,proc_tva,;
id_jtvacol,tva_incasare_a,tva_incasare_d,tva_incasare_dtip,tva_incasare_c,tva_incasare_ctip) ;
SELECT nr_doc_c As nr_doc_d, 0 As nr_doc_c, id_factc As id_factd, 0 As id_factc, ascc As ascd, '' As ascc,;
Sum(sumaachi)*(-1) As sumaachi,ales,;
proc_tvaC as proc_tva, id_jtvacolC as id_jtvacol,;
tva_incasare_a,tva_incasare_c As tva_incasare_d,;
IIF(tva_incasare_ctip='C','D','') as tva_incasare_dtip,;
0 As tva_incasare_c,'' As tva_incasare_ctip ;
From (lcCursorCalculCompensareTemp) ;
Group By 1,2,3,4,5,6,8,9,10,11,12,13,14,15 ;
Union All ;
SELECT nr_doc_d,0 As nr_doc_c,id_factd,0 As id_factc,ascd,'' As ascc,;
Sum(sumaachi) As sumaachi,ales,;
proc_tvaD as proc_tva, id_jtvacolD as id_jtvacol, ;
tva_incasare_a,tva_incasare_d,tva_incasare_dtip,0 As tva_incasare_c,'' As tva_incasare_ctip ;
From (lcCursorCalculCompensareTemp) ;
Group By 1,2,3,4,5,6,8,9,10,11,12,13,14,15
ENDIF
USE IN (lcCursorCalculCompensareTemp)
Else
llReturn = .F.
amessagebox("Nu se pot face compensari intrucat nu exista facturi cu semn diferit!",48,"Atentie")
Endif
Use In (lcCursorIregPart)
Use In (lcCursorSumeNegative)
Use In (lcCursorSumePozitive)
Release lnTip, lcCursorIregPart, lcCursorSumeNegative, lcCursorSumePozitive, lcCursorCalculCompensare, ;
lcCursorCalculCompensareTemp, lcCont, lcCond, lnIdPart, ;
lnFelCont, lnPozitie, lcSumaAchi, lcSelectie, lcSelectie1, lcSelectie2
RETURN llReturn
Endproc

View File

@@ -0,0 +1,46 @@
*** odocumente
*!* parametri: cod, luna, an
*!* pentru codul respectiv din act si toate id_fact se verifica
*!* daca respectivul id_fact exista pe id_factd sau id_factc pe alt cod
*!* decat cel verificat
FUNCTION ReferinteDocumenteNota
PARAMETERS tnAn, tnLuna, tnCod
LOCAL lnReferinte, lcFunctie
lnReferinte = 1
lcFunctie = "pack_documente.ReferinteDocumenteNota(?tnAn, ?tnLuna, ?tnCod)"
lnSucces = goExecutor.oFunction2Value(lcFunctie, @lnReferinte)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare")
ENDIF
RETURN IIF(lnReferinte > 0, .T., .F.)
ENDFUNC && ReferinteDocumenteNota
*!* parametri: an, luna, cod, id_fact
*!* pentru codul respectiv din act si toate id_fact se verifica
*!* daca respectivul id_fact exista pe id_factd sau id_factc pe alt cod
*!* decat cel verificat
FUNCTION ReferinteDocument
PARAMETERS tnAn, tnLuna, tnCod, tnIdFact
LOCAL lnReferinte, lcFunctie
lnReferinte = 1
lcFunctie = "pack_documente.ReferinteDocument(?tnAn, ?tnLuna, ?tnCod, ?tnIdFact)"
lnSucces = goExecutor.oFunction2Value(lcFunctie, @lnReferinte)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare")
ENDIF
RETURN IIF(lnReferinte > 0, .T., .F.)
ENDFUNC && ReferinteDocument

3003
COMUN/programe/oexport.prg Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,411 @@
*!* 27.02.2012
*!* marius.mutu
*!* verificare inainte_de in functie de optiune 0 = VERIFICARE, 1 = NU SE VERIFICA, 2 = INTREBARE UTILIZATOR
*!* 14.07.2017
*!* marius.mutu
*!* INAINTE_DE_STOC
*!* adaugat parametru tcListaIdGestiuni (optional) pentru verificarea unei liste de gestiuni la adaugare inventar
*******************************************
* PROCEDURE INAINTE( tcProc, tcCont )
* Data/ora : 10/27/04, 11:30:19
* autor : liana.macinic
* descriere:
****** PARAMETER BLOCK **************
* Parametri : 2
* Parameter 1: numele procedurii de pe server
* Parameter 2: contul
*
*******************************************
*!* do inainte WITH "IREG_parteneri",lcContPart in oinainte_de.prg
Procedure INAINTE( tcProc, tcCont, tcVMesaj, tcVTip, tcExceptii, tcCoresp, tnLuna, tnAn )
Local lcProc, lcCont, lcMesaj, lcTip, llProgress, lnLuna, lnAn
*!* 27.02.2012
If Type('gnVerificareInainte') <> 'N'
Local gnVerificareInainte
gnVerificareInainte = 0
Endif
*** FARA VERIFICARE
If gnVerificareInainte = 1
Wait Window 'Nu se verifica corelatiile...' Nowait
Return
Endif
*** INTREBARE UTILIZATOR
If gnVerificareInainte = 2
lnOptiune = xmenu("\<Fara verificare corelatii;\-;\<Verificare corelatii")
If m.lnOptiune = 1
Wait Window 'Nu se verifica corelatiile...' Nowait
Return
Endif
Endif
*!* 27.02.2012 ^
If Empty(tnLuna)
lnLuna = gnLuna
Else
lnLuna = tnLuna
Endif
If Empty(tnAn)
lnAn = gnAn
Else
lnAn = tnAn
Endif
*!* IF !EMPTY(tcCont) AND tcCont = '4118'
*!* DEBUG
*!* SUSPEND
*!* ENDIF
lcProc = "INAINTE_DE_" + Alltrim(tcProc)
If Empty(tcCont)
lcCont = ""
Else
lcCont = [, '] + Alltrim(tcCont) + [']
Endif
*---le-am bagat pentru lista conturilor corespondente (vanz)
If !Empty(tcExceptii)
lcCont = lcCont + [,] + tcExceptii
Endif
If !Empty(tcCoresp)
lcCont = lcCont + [,] + tcCoresp
Endif
*---le-am bagat pentru lista conturilor corespondente
If Empty(tcVMesaj)
llProgress = .T.
Else
llProgress = .F.
Endif
lcSql = [select PACK_INAINTE_DE.] + lcProc + [(] + Alltrim(Str(lnAn)) + [,] + Alltrim(Str(lnLuna)) + [,?gnIdSucursala] + lcCont + [) AS VALOARE FROM DUAL]&&[select * from ] + gcS + [.calendar]
lcCursor = [crsRezultate]
lnSucces = goExecutor.oExecute(lcSql, lcCursor, llProgress)
If lnSucces < 0
aMessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
Else
Select crsRezultate
If !Empty(valoare) And !Isnull(valoare)
lcMasaj = crsRezultate.valoare
If 'VANZ2007' $ Upper(lcProc) Or 'CUMP2007' $ Upper(lcProc)
aMessagebox(lcMasaj, 0 + 48, 'Diferente')
Else
lnOccurs = Occurs(crlf, lcMasaj)
For i = 1 To lnOccurs
lcString = Strextract(lcMasaj, ':', crlf, i)
If Substr(lcString, 1, 1) = "<" && diferente intre suma analiticelor si sintetice
lcString1 = Substr(lcString, 2, Len(lcString) - 2)
Else
lcString1 = Transform(Val(Strtran(lcString, ' ', '')), '999 999 999 999 999.9999')
Endif
lcMasaj = Strtran(lcMasaj, lcString, " " + Alltrim(lcString1))
Endfor
If Substr(valoare, 2, 2) == Chr(13) + Chr(10)
lcTip = Substr(valoare, 1, 1)
lcMesaj = Substr(lcMasaj, 4)
Else
lcTip = ""
lcMesaj = lcMasaj
Endif
If Empty(tcVMesaj)
lcMasaj = Substr(lcMasaj, 4)
If !Empty(lcMasaj)
aMessagebox(lcMasaj, 0 + 48, 'Diferente ' + STRTRAN(STRTRAN(TRANSFORM(m.lcCont), [,], []), ['], [],1,2))
*!* ooo = CREATEOBJECT('frm_inainte_de')
*!* ooo.cMesaj = lcMasaj
*!* ooo.edit1.HEIGHT = lnOccurs*20
*!* ooo.HEIGHT = 54 + lnOccurs*20
*!* ooo.AUTOCENTER = .T.
*!* ooo.SHOW()
*!* RELEASE ooo
Endif
Else
If !Empty(tcVTip)
&tcVTip = lcTip
Endif
&tcVMesaj = lcMesaj
Endif
Endif && 'VANZ2007'$UPPER(lcProc) OR 'CUMP2007'$UPPER(lcProc)
Endif && !EMPTY(valoare) AND !ISNULL(valoare)
goExecutor.oReset()
Use In crsRezultate
Endif
Endproc
**********************sfarsit procedura INAINTE*******************
* PROCEDURE test_ireg( tcCont, tnActiv )
* Date : 02.11.2004, 16:05:34
* author : catalin.neagu
* description:
****** PARAMETER BLOCK **************
* Parameters : 2
* Parameter 1:
* Parameter 2:
*
******************************************* INCEPUT:test_ireg *******************************************
Procedure test_ireg( tcCont, tlActiv, tnLuna, tnAn )
Local lcCont, lnActiv, lnLuna, lnAn
lnActiv = 0
If tlActiv
lnActiv = 1
Endif
If Empty(tnLuna)
lnLuna = gnLuna
Else
lnLuna = tnLuna
Endif
If Empty(tnAn)
lnAn = gnAn
Else
lnAn = tnAn
Endif
lcCont = Alltrim(tcCont)
lcSql = [select PACK_INAINTE_DE.TEST_INREGISTRARI(] + Alltrim(Str(lnAn)) + [,] + Alltrim(Str(lnLuna)) + [,?gnIdSucursala,'] + lcCont + [',] + Alltrim(Str(lnActiv)) + [) AS VALOARE FROM DUAL]&&[select * from ] + gcS + [.calendar]
*!* STRTOFILE(lcSql,'c:\inaintedetest.txt')
lcCursor = [crsRezultate]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
aMessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
Else
Select crsRezultate
If !Empty(valoare) And !Isnull(valoare)
valoare = Alltrim(valoare)
lcOcurr = Occurs('*', valoare)
lcValoare = Iif(Substr(valoare, 1, 1) = '*', '', '*') + valoare
Dimension laMesaje(lcOcurr)
For i = 1 To lcOcurr
laMesaje[i] = Strextract(lcValoare, '*', '*', i)
Endfor
Endif .
*!* PUBLIC ARRAY lam(1,3)
If Type('laMesaje') # "U"
otree = Createobject('teste_ireg', @laMesaje, lcCont, lnActiv)
otree.Show(1)
Release otree
Endif
goExecutor.oReset()
Use In crsRezultate
Endif
Endproc
******************************************* SFARSIT: test_ireg *******************************************
* PROCEDURE test_casa( tcCont, tnActiv )
* Date : 25.05.2005, 10:16:34
* author : georgiana.voicu
* description:
****** PARAMETER BLOCK **************
* Parameters : 2
* Parameter 1:
* Parameter 2:
*
******************************************* INCEPUT:test_casa *******************************************
Procedure test_casa
Lparameters tcCont
Private pcContTestCasa
pcContTestCasa = Alltrim(tcCont)
*!* 27.02.2012
If Type('gnVerificareInainte') <> 'N'
Local gnVerificareInainte
gnVerificareInainte = 0
Endif
*** FARA VERIFICARE
If gnVerificareInainte = 1
Wait Window 'Nu se verifica corelatiile...' Nowait
Return
Endif
*** INTREBARE UTILIZATOR
If gnVerificareInainte = 2
lnOptiune = xmenu("\<Fara test casa;\-;\<Test casa")
If m.lnOptiune = 1
Wait Window 'Nu se face test casa...' Nowait
Return
Endif
Endif
*!* 27.02.2012 ^
lcSql = [select PACK_INAINTE_DE.TEST_CASA(?gnAn,?gnLuna,?pcContTestCasa,?gnIdSucursala) AS VALOARE FROM DUAL]
lcCursor = [crsRezultate]
*!* lt1 = Datetime()
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
*!* lt2 = Datetime()
If lnSucces < 0
aMessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
Else
*!* MessageBox(Ttoc(lt1,3)+Chr(13)+Chr(10)+Ttoc(lt2,3)+Chr(13)+Chr(10)+Ttoc(lt3,3)+Chr(13)+Chr(10)+Ttoc(lt4,3)+Chr(13)+Chr(10))
Select crsRezultate
If !Empty(valoare) And !Isnull(valoare)
valoare = Alltrim(valoare)
lcOcurr = Occurs('*', valoare)
lcValoare = Iif(Substr(valoare, 1, 1) = '*', '', '*') + valoare
*!* modificare v 2.0.124
*!* Strtofile(Strtran(lcValoare,[*],Chr(13)+Chr(10)),[C:\2.txt])
If Type('goLog') = 'O'
goLog.Log(Strtran(lcValoare, [*], Chr(13) + Chr(10)))
Endif
*!* modificare v 2.0.124 ^
Dimension laMesaje(lcOcurr)
For i = 1 To lcOcurr
laMesaje[i] = Strextract(lcValoare, '*', '*', i)
Endfor
Endif
If Type('laMesaje') # "U"
otree = Createobject('teste_ireg', @laMesaje)
otree.Lb_titlu_alb_b121.Caption = [TEST CASA]
otree.Show(1)
Release otree
Endif
goExecutor.oReset()
If Used('crsRezultate')
Use In crsRezultate
Endif
Endif
Release pcContTestCasa
Endproc
******************************************* SFARSIT: test_casa *******************************************
******************************************* INCEPUT: verific_stoc_cu_balanta *******************************************
Procedure verific_stoc_cu_balanta
Parameters tcCont, tnOptiune
Local lcCont, lnOptiune, lnOccurs, lcValoare, i
i = 1
lnOptiune = tnOptiune
lcCont = Alltrim(tcCont)
*!* lcSql = [select PACK_INAINTE_DE.INAINTE_DE_STOC(']+lcCont+[',?gnAn,?gnLuna,]+ALLTRIM(STR(lnOptiune))+[,?gnIdSucursala) AS VALOARE FROM DUAL]
lcSql = [select pack_inainte_de.inainte_de_stoc('] + lcCont + [',] + Alltrim(Str(gnAn)) + "," + Alltrim(Str(gnLuna)) + "," + ;
+ Iif(Isnull(gnIdSucursala), "null", Alltrim(Str(gnIdSucursala))) + "," + Alltrim(Str(lnOptiune)) + ") as valoare from dual"
*STRTOFILE(lcsql,'c:\pack_inainte_destoc.txt')
lcCursor = [crsRezultate]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
aMessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
Else
Select crsRezultate
lcValoare = Alltrim(valoare)
*STRTOFILE(lcValoare+CHR(13)+'Apare de :'+STR(OCCURS(CHR(10),lcValoare)),'c:\valoare.txt')
lcStr = Strextract(lcValoare, ' = ', ' ', i)
lcStr = Alltrim(lcStr)
Do While !Empty(lcStr)
lcStr = Strextract(lcValoare, ' = ', ' ', i)&& extrag elem i
lcStr = Alltrim(Strtran(lcStr, ' ', '') )&& in caz ca este formatat ii scoate spatiile libere
lcValoare = Strtran(lcValoare, ' ' + lcStr + ' ', ' ' + Alltrim(Transform(Val(lcStr), '999 999 999 999 999.99')) + ' ')
i = i + 1
lcStr = Strextract(lcValoare, ' = ', ' ', i)
*lcStr=ALLTRIM(STRTRAN(lcStr,' ','') )
Enddo
lnOccurs = Occurs(Chr(10), lcValoare)
ooo = Createobject('frm_inainte_de')
ooo.cMesaj = lcValoare
**ooo.width = 550
ooo.edit1.Height = lnOccurs * 20
ooo.Height = 54 + lnOccurs * 20
ooo.AutoCenter = .T.
ooo.Show()
Release ooo
Use In crsRezultate
Endif
Endproc
******************************************* SFARSIT: verific_stoc_cu_balanta *******************************************
************************
*** Verifica stocul cantitativ si valoric al lunii curente fata de luna precedenta
************************
Procedure INAINTE_DE_STOC
Parameters tnAn, tnLuna, tnTipGest, tnStocObinv, tcListaIdGestiuni
Local lcCursor, lcSql, lnSucces, lcSelect, lcValoare
Local lcIdGestiune, lnGestiune, lnGestiuni, lnIdGestiune, lcSeparator, lcListaIdGestiuni
lcValoare = ''
lcSeparator = '|'
lcSelect = Select()
If Empty(Nvl(tcListaIdGestiuni, ''))
lcListaIdGestiuni = 'null'
ELSE
&& elimin separatorul de lista, daca apare la sfarsit. considera ca este un element
lcListaIdGestiuni = IIF(RIGHT(ALLTRIM(m.tcListaIdGestiuni),1) = m.lcSeparator, LEFT(ALLTRIM(m.tcListaIdGestiuni), LEN(ALLTRIM(m.tcListaIdGestiuni)) - 1), ALLTRIM(m.tcListaIdGestiuni))
&& elimin "" sau ''
lcListaIdGestiuni = STRTRAN(STRTRAN(m.lcListaIdGestiuni, ["], []), ['], [])
Endif
lnGestiuni = Getwordcount(m.lcListaIdGestiuni, '|')
For lnGestiune = 1 To m.lnGestiuni
lcIdGestiune = Getwordnum(m.lcListaIdGestiuni, m.lnGestiune, '|')
Wait Window 'Verificare stoc precedent ... ' + ;
IIF(m.lcIdGestiune <> 'null', m.lcIdGestiune, 'toate gestiunile') + ;
IIF(m.tnTipGest = 2, ' tip materii prime/materiale', ;
IIF(m.tnTipGest = 3, ' tip obiecte inventar', ;
IIF(m.tnTipGest = 4, ' tip produse', ;
IIF(m.tnTipGest = 5, ' tip marfa pret achizitie', ;
IIF(m.tnTipGest = 6, ' tip marfa pret vanzare', ;
IIF(m.tnTipGest = 7, ' tip marfa pret achizitie*','')))))) NOWAIT
lnIdGestiune = Iif(LOWER(m.lcIdGestiune) = 'null', Null, Int(Val(m.lcIdGestiune)))
lcSql = "select pack_inainte_de.inainte_de_stoc(" + Alltrim(Str(tnAn)) + "," + Alltrim(Str(tnLuna)) + "," + ;
Alltrim(Str(tnTipGest)) + "," + Alltrim(Str(tnStocObinv)) + "," + Iif(Isnull(gnIdSucursala), "null", Alltrim(Str(gnIdSucursala))) + "," + Iif(Empty(Nvl(m.lnIdGestiune, '')), "null", Alltrim(Str(lnIdGestiune))) + ") as valoare from dual"
lcCursor = [crsRezultate]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
aMessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
ELSE
Select crsRezultate
IF !EMPTY(ALLTRIM(Nvl(valoare, '')))
lcValoare = lcValoare + ALLTRIM(Nvl(valoare, '')) + Chr(13) + Chr(10)
ENDIF
Endif
Use In (Select('crsRezultate'))
Endfor
If !Empty(m.lcValoare)
aMessagebox(m.lcValoare, 0 + 48, "Verificare")
ENDIF
Select (m.lcSelect)
Return m.lcValoare
Endproc && INAINTE_DE_STOC

View File

@@ -0,0 +1,883 @@
*!* citeste_optiune, scrie_optiune +parametru tValue2
*** OINIT_OPTIUNI.PRG
glLuna_neplatita = .F.
glLunaInchisa = .F.
*!* gnLuna = Round(Val(goCalendar.nl),0)
*!* gnAn = Round(Val(goCalendar.An),0)
gnLuna = goCalendar.luna
gnAn = goCalendar.anul
pcNl = Padl(Alltrim(Str(gnLuna)), 2, '0')
pcAn = Alltrim(Str(gnAn))
m.nl = m.pcNl
m.an = m.pcAn
gcFirma = Upper(Alltrim(goFirma.firma))
If Type('gnIdFirma') <> 'U'
gnIdFirma = goFirma.Id_Firma
Endif
gnIdFirma = goFirma.Id_Firma
*!* 08.02.2008 SUCURSALE
Public gnIdSucursala, gnIdMama, glEMama, gcCondSucursala
gnIdSucursala = Iif(Nvl(goFirma.id_mama, 0) <> 0, goFirma.Id_Firma, Null) && DACA ESTE SUCURSALA - ID-UL SUCURSALA PE CARE IL SCRIU IN TABELE
*gnIdSucursala = Iif(Nvl(goFirma.id_firma,0) <> 0, goFirma.Id_Firma, Null)
gnIdMama = Iif(Nvl(goFirma.id_mama, 0) <> 0, goFirma.id_mama, Null)
glEMama = Nvl(goFirma.e_mama, 0) <> 0
gcCondSucursala = Iif(!Isnull(gnIdSucursala), ' AND id_sucursala = ?gnIdSucursala ', '') && CONDITIA FOLOSITA LA SELECTIILE DIN JURNAL, RULAJ, IREG_PARTENERI
*!* 08.02.2008 SUCURSALE ^
*!* gcSchemaPath = ADDBS(dirgen) + gcS + "\"
*!* m.calefirma = gcSchemaPath
*!* IF !DIRECTORY(gcSchemaPath)
*!* MD (gcSchemaPath)
*!* ENDIF
*!* gnNivelUtilizator = getNivel(gnIdProgram,gnIdUtil,gnId_Firma)
*!* gcAcces = getAcces(gnIdProgram,gnIdUtil,gnId_Firma)
m.an = Alltrim(Str(gnAn))
m.nl = Padl(Alltrim(Str(gnLuna)), 2, '0')
m.NumeFirma = gcFirma
m.flung = gcFirma
m.numeluna = m.nl
m.luna = m.nl
m.ctvam = goCalendar.ctvam
m.ctvai = goCalendar.ctvai
m.antet = goFirma.antet
gcAntet = goFirma.antet
*!* adaugat 25.02.2014 / liana neagu /ROARES
Public gcNumeUtilEnt
gcNumeUtilEnt = []
lcSql = [begin pack_def.citesteNumeEnt(?gnIdUtil,?@gcNumeUtilEnt); end;]
If !goExecutor.oExecuta(lcSql)
gcNumeUtilEnt = gcUserNameApp
Endif
*!* adaugat 25.02.2014 ^
*!* adaugat 23.09.2011 / MARIUS ATANASIU / ROAAUTO
Public gnCotaTVAStandard
gnCotaTVAStandard = goCalendar.ctvam
*!* adaugat 23.09.2011 ^
*** ADAUGAT 01.11.2005
*** MARIUS MUTU
glLunaInchisa = is_luna_blocata(gcS, gnId_Prg_Owner, gnAn, gnLuna)
*!* 25.01.2012
lcDeclarant = Alltrim(goFirma.declarant)
AddProperty(goFirma, 'nume_declarant', m.lcDeclarant)
AddProperty(goFirma, 'prenume_declarant', '')
lnNraparitie = At(" ", m.lcDeclarant)
If lnNraparitie > 0
goFirma.nume_declarant = Substr(m.lcDeclarant, 1, m.lnNraparitie)
goFirma.prenume_declarant = Substr(m.lcDeclarant, m.lnNraparitie + 1)
Endif
*!* 25.01.2012 ^
verificare_versiune()
*---------------------- deschid lunilean , sa iau denumirea completa a lunii
Local lcNumeLuna
Store "" To lcNumeLuna
If Used("v_lunilean")
Use In v_lunilean
Endif
lcSelect = [select * from lunilean ]
lcCursor = [v_lunilean]
lnSucces = goExecutor.oExecute(lcSelect, lcCursor)
If lnSucces < 0
AMESSAGEBOX('Eroare la selectie ' + goExecutor.cEroare)
Return
Endif
Select v_lunilean
Locate For nrluna = gnLuna
If Found()
lcNumeLuna = Alltrim(v_lunilean.numeluna)
Endif
*----------------------deschid lunilean , sa iau denumirea completa a lunii
If Type("NUMEPROGRAM") <> 'C' Or Empty(NUMEPROGRAM)
NUMEPROGRAM = gcAppName
Endif
capapl = NUMEPROGRAM + " Firma " + NumeFirma + "- Luna contabila: " + lcNumeLuna + " " + M.an + " "
*-----------------------
goApp.SetCaption(capapl)
Release lcNumeLuna
If Used("v_lunilean")
Use In v_lunilean
Endif
*!* 06.09.2012 / marius.atanasiu
*!* daca schimbam luna, nu se schimba gcTempPath si la BackupXML imi cauta xml-urile in firma anterioara
*!* *!* 07.06.2007
*!* *!* marius.mutu
*!* *!* daca este definita gcTempPath in main.prg - goApi.GetTempPath()
*!* If Empty(gcTempPath) OR 'SITFIN'$UPPER(gcAppName)
*!* *!* gcTempPath = [c:\contafin\temp\] + gcS + [\]
*!* *!* IF !DIRECTORY(gcTempPath)
*!* *!* MD (gcTempPath)
*!* *!* ENDIF
&& obiectul public goApi trebuie creat in programul principal, daca nu, este creat in oinit_optiuni.prg
If Type('goApi') = 'U'
Public goApi
goApi = Newobject("wwAPI", "wwAPI.prg")
Endif
gcTempPath = Addbs(shortpath(goApi.GetTempPath())) + gcS + [\] && WWAPI.PRG
If !Directory(gcTempPath)
Md (gcTempPath)
Endif
*!* Endif
*!* 06.09.2012 ^
m.NIVEL = 0
m.UTILIZATOR = gcUserNameApp
*!* STORE 0 TO gnPA && nr. de zecimale afisare
*!* STORE 0 TO gnPC && nr. de zecimale calcul
If lnSucces > 0
&& setez variabilele de sesiune pe server
lnSucces = InitSesiune() && IN oInit_Optiuni.prg
Endif
If lnSucces > 0
Do optiuni_firma
Do coresp_cont_tipgest
Do actualizeaza_optiuni_utilizator
Do actualizeaza_optiuni
Endif
If Type('gnTraducere') = 'N'
glTraducere = gnTraducere = 1
Endif
Return lnSucces
************************************** INCEPUT: actualizeaza_optiuni_program ***************************************
Function actualizeaza_optiuni_program
Local llReturn
Store .F. To llReturn
lcSql = 'select * from ' + gcS + '.optiuni where program = ?gcNumeProgram order by varname'
lcCursor = 'v_optiuni'
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
AMESSAGEBOX('ACTUALIZEAZA_OPTIUNI_PROGRAM ' + goExecutor.cEroare, 0 + 16, "Eroare")
Return
Else
Select(lcCursor)
Scan For !Empty(varname)
lcvarname = Alltrim(&lcCursor..varname)
lcvartype = Upper(Alltrim(&lcCursor..Vartype))
Do Case
Case lcvartype = "CHARACTER"
Public gc&lcvarname.
luvarvalue = Alltrim(&lcCursor..varvalue)
gc&lcvarname. = luvarvalue
Case lcvartype = "CURRENCY"
Public gy&lcvarname.
luvarvalue = Ntom(Val(&lcCursor..varvalue))
gy&lcvarname. = luvarvalue
Case lcvartype = "NUMERIC"
Public gn&lcvarname.
luvarvalue = Val(&lcCursor..varvalue)
gn&lcvarname. = luvarvalue
Case lcvartype = "DATETIME"
Public gt&lcvarname.
luvarvalue = Ctot(&lcCursor..varvalue)
gt&lcvarname. = luvarvalue
Case lcvartype = "DATE"
Public gd&lcvarname.
luvarvalue = Ctod(&lcCursor..varvalue)
gd&lcvarname. = luvarvalue
Case lcvartype = "LOGICAL"
Public gl&lcvarname.
luvarvalue = Iif(Inlist(Upper(Left(&lcCursor..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
llReturn = .T.
If Used('v_optiuni')
Use In v_optiuni
Endif
Endif
Return llReturn
Endfunc
******************************************* SFARSIT: actualizeaza_optiuni_program *******************************************
* PROCEDURE optiuni_firma( )
* Date : 15.11.2004, 09:33:59
* author : catalin.neagu
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
******************************************* INCEPUT:optiuni_f *******************************************
Procedure optiuni_firma
*!* modificat 22.03.2006
*!* mutu.marius
*!* am folosit gcUserName in loc de gcS (adica "CONTAFIN_ORACLE") si am modificat procedura SCRIE_OPTIUNI
lcSql = [begin SCRIE_OPTIUNI('] + gcUserName + ['); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX('SCRIE_OPTIUNI ' + goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
lnSucces = -1
lnSucces = update_optiuni()
If lnSucces > 0
LCFIS = 'v_optiuni'
*-- DECLAR VARIABILELE PUBLICE SI LE INITIALIZEZ ex: pcEroriPath,pcServerPath
Select(LCFIS)
Scan For !Empty(varname) And (Isnull(programe) Or gcNumeProgram $ programe)
lcvarname = Alltrim(&LCFIS..varname)
lcvartype = Upper(Alltrim(&LCFIS..Vartype))
Do Case
Case lcvartype = "CHARACTER"
Public gc&lcvarname.
luvarvalue = Alltrim(&LCFIS..varvalue)
luvarvalue2 = Alltrim(&LCFIS..varvalue2)
IF !EMPTY(NVL(luvarvalue,'')) OR (EMPTY(NVL(luvarvalue,'')) AND EMPTY(NVL(luvarvalue2,'')))
gc&lcvarname. = m.luvarvalue
ELSE
gc&lcvarname. = m.luvarvalue2
ENDIF
Case lcvartype = "CURRENCY"
Public gy&lcvarname.
luvarvalue = Ntom(Val(&LCFIS..varvalue))
gy&lcvarname. = luvarvalue
Case lcvartype = "NUMERIC"
Public gn&lcvarname.
luvarvalue = Val(&LCFIS..varvalue)
gn&lcvarname. = luvarvalue
Case lcvartype = "DATETIME"
Public gt&lcvarname.
luvarvalue = Ctot(&LCFIS..varvalue)
gt&lcvarname. = luvarvalue
Case lcvartype = "DATE"
Public gd&lcvarname.
luvarvalue = Ctod(&LCFIS..varvalue)
gd&lcvarname. = luvarvalue
Case lcvartype = "LOGICAL"
Public gl&lcvarname.
luvarvalue = Iif(Inlist(Upper(Left(&LCFIS..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
If Used('v_optiuni')
Use In v_optiuni
Endif
Public gnZ
m.gnZ = 0
If Type('gnPA') = 'N'
gnZ = m.gnPA
Endif
lnSucces = optiuni_speciale()
Endif
Return lnSucces
Endproc
******************************************* SFARSIT: optiuni_f *******************************************
* PROCEDURE viz_optiuni( )
* Date : 15.11.2004, 12:31:24
* author : catalin.neagu
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
******************************************* INCEPUT:viz_optiuni *******************************************
Procedure viz_optiuni
Lparameters tcS, tnId_prg_owner
Local lnSucces, lcS
If Empty(tcS)
lcS = "CONTAFIN_ORACLE"
Else
lcS = tcS
Endif
Private popt
Store '' To popt
Local lcschema, lcSelect
lcschema = []
lcSelect = [select * from ] + lcS + [.optiuni ]
lcfiltru = []
If !Empty(tnId_prg_owner)
lcFiltuOriginal = [id_prg_owner=] + Alltrim(Str(tnId_prg_owner))
Else
lcFiltuOriginal = []
Endif
lcOrder = [varname]
lcGroup = []
llModParam = .T.
llAfisare = .F.
gencursor('popt', 'v_optiuni', lcSelect, lcfiltru, lcschema, lcOrder, llAfisare, lcGroup, llModParam, lcFiltuOriginal)
popt.ca_baza1.afisare()
ofrmopt = Createobject('frm_optiuni')
ofrmopt.cSchema = lcS
ofrmopt.Show(1)
Release ofrmopt
Endproc
******************************************* SFARSIT: viz_optiuni *******************************************
Procedure optiuni_cote_tva
lcSql = [begin SCRIE_COTE_TVA('] + gcS + [',] + pcAn + [, ] + pcNl + [); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX('SCRIE_COTE_TVA ' + goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
Endproc
* PROCEDURE viz_cote_tva( Tcs )
* Date : 04/01/05, 11:22:25
* author : catalin.neagu
* description:
****** PARAMETER BLOCK **************
* Parameters : 1
* Parameter 1:
*
******************************************* INCEPUT:viz_cote_tva *******************************************
Procedure viz_cote_tva
LPARAMETERS tcS, tnAn, tnLuna
Local lnSucces, lcS
If Empty(tcS)
lcS = "CONTAFIN_ORACLE"
Else
lcS = tcS
Endif
lcAn = Alltrim(Str(tnAn))
lcLuna = Alltrim(Str(tnLuna))
Private pcot, pcschema1, pcselect1
Store '' To pcot
pcschema1 = ['']
pcselect1 = ['select * from ] + lcS + [.cote_tva where 1=2']
pcfiltru1 = [ an = ] + lcAn + [and luna = ] + lcLuna
pcOrder1 = [an, luna]
gencursor('pcot', 'v_cote_tva', pcselect1, pcfiltru1, pcschema1, pcOrder1)
pcot.ca_baza1.afisare()
ofrmcot = Createobject('frm_cote_tva')
ofrmcot.cSchema = lcS
ofrmcot.Show(1)
Release ofrmcot
Endproc
******************************************* SFARSIT: viz_cote_tva *******************************************
* PROCEDURE optiuni_plcont( tcs )
* Date : 04/01/05, 13:04:09
* author : catalin.neagu
* description:
****** PARAMETER BLOCK **************
* Parameters : 1
* Parameter 1:
*
******************************************* INCEPUT:optiuni_plcont *******************************************
Procedure optiuni_plcont()
lcSql = [begin SCRIE_PLCONT('] + gcS + [',] + gnAn + [); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX('SCRIE_PLCONT ' + goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
Endproc
******************************************* SFARSIT: optiuni_plcont *******************************************
* PROCEDURE optiuni_notec( )
* Date : 04/01/05, 13:05:32
* author : catalin.neagu
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
******************************************* INCEPUT:optiuni_notec *******************************************
Procedure optiuni_notec( )
lcSql = [begin SCRIE_notec('] + gcS + ['); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX('SCRIE_notec ' + goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
Endproc
******************************************* SFARSIT: optiuni_notec *******************************************
* PROCEDURE viz_exceptii( )
* Date : 04/01/05, 13:40:35
* author : catalin.neagu
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
******************************************* INCEPUT:viz_exceptii *******************************************
Procedure viz_exceptii( tcS )
Local lnSucces, lcS
If Empty(tcS)
lcS = "CONTAFIN_ORACLE"
Else
lcS = tcS
Endif
Private pex, pcschema1, pcselect1
Store '' To pex
pcschema1 = ['']
pcselect1 = ['select * from ] + lcS + [.exceptii_ireg where 1=2']
pcfiltru1 = [2=2]
gencursor('pex', 'v_exceptii_ireg', pcselect1, pcfiltru1, pcschema1)
pex.ca_baza1.afisare()
ofrmex = Createobject('frm_exceptii_ireg')
ofrmex.cSchema = lcS
ofrmex.Show(1)
Release ofrmex
Endproc
******************************************* SFARSIT: viz_exceptii *******************************************
Procedure coresp_cont_tipgest
lcSql = [begin SCRIE_CORESP_CONT_TIPGEST('] + gcS + ['); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
lcMesaj = 'SCRIE_CORESP_CONT_TIPGEST ' + goExecutor.cEroare
ofrm_er = Createobject([frm_mesaj], [Eroare], [exclam.ico], [Avertizare], lcMesaj)
ofrm_er.Show(1)
Release ofrm_er
Return
Endif
Endproc
********************* INCEPUT Optiuni_speciale **********************
* PROCEDURE Optiuni_speciale
* Date : 03/31/05, 08:48:45
* author : marius.mutu
* description:
Procedure optiuni_speciale
Public gnLunaRon, gnAnRon, gl406, glEFactura
gnLunaRon = Val(Substr(Alltrim(gcDataRon), 1, 2))
gnAnRon = Val(Substr(Alltrim(gcDataRon), 4, 4))
If gnAn * 12 + gnLuna < gnAnRon * 12 + gnLunaRon
Store 0 To gnPA && nr. de zecimale afisare
Store 0 To gnPC && nr. de zecimale calcul
Store 0 To gnPCurs && nr. de zecimale curs
Store 0 To gnPPretV && nr. de zecimale pret vanzare
Store 0 To gnZ && gnPA
*!* ELSE
*!* Store 2 To gnPA && nr. de zecimale afisare
*!* Store 2 To gnPC && nr. de zecimale calcul
*!* Store 4 To gnPCurs && nr. de zecimale curs
ENDIF
* Firma are activata SAFT 406
gl406 = (TYPE('gnD406') = 'N' and m.gnD406 = 1)
* Firma are activata Efactura
glEFactura = (TYPE('gnEFactura') = 'N' and m.gnEFactura = 1)
Endproc
********************* SFARSIT Optiuni_speciale **********************
*!* marius.mutu
*!* 21.02.2006
*!* Seteaza variabile de sesiune: pack_sesiune.id_util, pack_sesiune.Luna, pack_sesiune.An, pack_sesiune.data_ron, pack_contafin.data_ron
*** InitSesiune ===========================================================================
Procedure InitSesiune
Local lnSucces
lnSucces = 1
&& setez variabilele de sesiune pe server
If lnSucces > 0
lcSql = [begin pack_sesiune.set_Id_Util(?gnIdUtil); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Endif
Endif
If lnSucces > 0
lcSql = [begin pack_sesiune.setluna(?gnLuna); pack_sesiune.setan(?gnAn); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Endif
Endif
*!* 09.04.2008
*!* setare lunabal si anbal pentru view-urile vbalmama si vbalanamama
If lnSucces > 0
lcSql = [begin pack_sesiune.setlunabal(?gnLuna); pack_sesiune.setanbal(?gnAn); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Endif
Endif
*!* 09.04.2008 ^
If lnSucces > 0
lcSql = [begin pack_contafin.SET_DATA_RON(?gcS); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Endif
Endif
If lnSucces > 0
lcSql = [begin pack_sesiune.set_data_ron(?gcS); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Endif
Endif
llSucces = initializeaza_sucursala()
If llSucces
llSucces = initializeaza_firma()
Endif
lnSucces = Iif(llSucces, 1, -1)
Return lnSucces
Endproc && InitSesiune
*** END InitSesiune ===========================================================================
Procedure actualizeazaSetare
Lparameters tcSetare, tdData
Private pcSetare, pdData, pcValoareSetare, pcTipSetare
pcSetare = tcSetare
pdData = Date()
pcValoareSetare = [-]
pcTipSetare = [-]
lcSql = [{call citeste_ora_optiune(?pcSetare,?@pdData,?@pcValoareSetare,?@pcTipSetare)}]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.oPrelucrareEroare(), 0 + 16, "Eroare")
Else
Do Case
Case pcTipSetare = "CHARACTER"
luvarvalue = Alltrim(pcValoareSetare)
gc&pcSetare. = luvarvalue
Case pcTipSetare = "CURRENCY"
luvarvalue = Ntom(Val(pcValoareSetare))
gy&pcSetare. = luvarvalue
Case pcTipSetare = "NUMERIC"
luvarvalue = Val(pcValoareSetare)
gn&pcSetare. = luvarvalue
Case pcTipSetare = "DATETIME"
luvarvalue = Ctot(pcValoareSetare)
gt&pcSetare. = luvarvalue
Case pcTipSetare = "DATE"
luvarvalue = Ctod(pcValoareSetare)
gd&pcSetare. = luvarvalue
Case pcTipSetare = "LOGICAL"
luvarvalue = Iif(Inlist(Upper(Left(pcValoareSetare, 1)), "T", "Y"), .T., .F.)
gl&pcSetare. = luvarvalue
Otherwise
pcmsgbuff = "Tip de variabila globala invalid!"
pcmsgbuff = pcmsgbuff + Chr(13) + Chr(13) + "Numele variabilei: " + pcSetare
pcmsgbuff = pcmsgbuff + Chr(13) + "Tipul variabilei: " + pcTipSetare
pcmsgbuff = pcmsgbuff + Chr(13) + Chr(13) + "Contactati suportul tehnic."
= AMESSAGEBOX(pcmsgbuff, 48)
pcmsgbuff = ""
Endcase
tdData = pdData
Endif
Endproc && actualizeazaSetare
***********************************************************************
*!* 16.06.2007
*!* marius.mutu
*!* verificare versiune program - versiune baza date
*!* procedura de pe server intoarce nume_program:versiune_program daca este nevoie de actualizarea programului la versiunea <versiune_program>
*!* sau db:versiune_db daca este nevoie de actualizarea bazei de date la versiunea <versiune_db>
Procedure verificare_versiune
Local lcFileVersiuneDB, llOk, lcMesaj
Private pcReturnValue, pcNumeProgram, pcVersiuneDB, pcVersiuneProgram
llOk = .T.
lcMesaj = ""
pcReturnValue = "" && roacont:1.0.25 sau db:2007_06_16_2
pcNumeProgram = Upper(gcNumeProgram)
pcVersiuneDB = ""
pcVersiuneProgram = Get_Version()
lcFileVersiuneDB = gcAppPath + "versiune_db.txt"
If File(lcFileVersiuneDB)
pcVersiuneDB = Alltrim(Filetostr(lcFileVersiuneDB)) && 2007_06_15_01
Endif
lnSucces = goExecutor.oFunction2Value("pack_migrare.VerificaVersiune('" + pcNumeProgram + "', '" + pcVersiuneProgram + "', '" + pcVersiuneDB + "')", @pcReturnValue)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Else
*!* SELECT COUNT(*) AS nr FROM versiune WHERE SUBSTR(script_final,4,13) = lcVersiuneDB INTO CURSOR crsVersiuneTemp
Do Case
Case pcNumeProgram $ Upper(pcReturnValue)
llOk = .F.
lcMesaj = "Trebuie actualizat " + pcNumeProgram + " la versiunea " + Getwordnum(pcReturnValue, 2, ":") + Chr(13) + Chr(10) + ;
"Versiunea actuala este " + Getwordnum(pcReturnValue, 3, ":")
Case "DB" $ Upper(pcReturnValue)
llOk = .F.
lcMesaj = "Trebuie actualizata baza de date la versiunea " + Getwordnum(pcReturnValue, 2, ":") + Chr(13) + Chr(10) + ;
"Versiunea actuala este " + Getwordnum(pcReturnValue, 3, ":")
Endcase
Endif
*!* SELECT versiune_program, versiune_bd FROM versiune_programe WHERE UPPER(PROGRAM) = UPPER(gcNumeProgram)
If !Empty(lcMesaj)
AMESSAGEBOX(lcMesaj, 0 + 48, "Actualizare")
Endif
Return llOk
Endproc && verificare_versiune
******************************************************************************************
Function initializeaza_sucursala()
Local lcSel, lnSucces, llReturn
llReturn = .T.
lcSel = [begin pack_contafin.set_id_sucursala(?gnIdSucursala); end;]
lnSucces = goExecutor.oExecute(lcSel)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
llReturn = .F.
Endif
Release lcSel, lnSucces
Return llReturn
Endfunc
******************************************************************************************
Function initializeaza_firma()
Local lcSel, lnSucces, llReturn
llReturn = .T.
lcSel = [begin pack_contafin.set_id_firma(?gnIdFirma); end;]
lnSucces = goExecutor.oExecute(lcSel)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
llReturn = .F.
Endif
Release lcSel, lnSucces
Return llReturn
Endfunc
************************************* INCEPUT: actualizeaza_optiuni_utilizator ***************************************
Procedure actualizeaza_optiuni_utilizator
Local lnSucces
Store .F. To llReturn
lcSql = 'select * from optiuni_util where id_util = ?gnIdUtil order by varname'
lcCursor = 'crsOptiuniUtilizator'
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Endif
Return lnSucces
Endproc
******************************************* SFARSIT: actualizeaza_optiuni_utilizator *******************************************
******************************************* INCEPUT: citeste_optiune_utilizator*******************************************
Function citeste_optiune_utilizator
Lparameters tcOptiune
Local lcOptiune, lcValOptiune
lcOptiune = tcOptiune
lcValOptiune = ''
If Used('crsOptiuniUtilizator')
Select Nvl(varvalue, '') As varvalue ;
From crsOptiuniUtilizator ;
With (Buffering = .T.) ;
Where Upper(Alltrim(varname)) = Upper(Alltrim(tcOptiune)) ;
Into Cursor crsOptiuneUtilizator
Select crsOptiuneUtilizator
lcValOptiune = varvalue
Endif
Return m.lcValOptiune
Endfunc && citeste_optiune_utilizator
******************************************* SFARSIT: citeste_optiune_utilizator *******************************************
******************************************* INCEPUT: scrie_optiune_utilizator*******************************************
Procedure scrie_optiune_utilizator
Parameters tcOptiune, tcValOptiune, tcDescriereOptiune
Private pcOptiune, pcValOptiune, pcDescriereOptiune
pcOptiune = Upper(tcOptiune)
pcValOptiune = tcValOptiune
pcDescriereOptiune = tcDescriereOptiune
*lcSql='update optiuni_util set varvalue = ?pcValOptiune where varname=?pcOptiune and id_util = ?gnIdUtil'
*!* lcSql=[MERGE INTO optiuni_util ]+;
*!* [USING dual ]+;
*!* [on (UPPER(varname) = ?pcOptiune and id_util = ?gnIdUtil) ]+;
*!* [WHEN MATCHED THEN ]+;
*!* [ UPDATE SET varvalue = ?pcValOptiune ]+;
*!* [WHEN NOT MATCHED THEN ]+;
*!* [INSERT (varname, id_util, varvalue) ]+;
*!* [VALUES (?pcOptiune, ?gnIdUtil, ?pcValOptiune);]
lcSql = [begin PACK_SESIUNE.SetOptiuneUtilizator(?pcOptiune,?gnIdUtil, ?pcValOptiune, ?pcDescriereOptiune); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Else
Select crsOptiuniUtilizator
Locate For Upper(varname) = pcOptiune
If Found()
Replace varvalue With pcValOptiune
Else
Insert Into crsOptiuniUtilizator (varname, id_util, vardesc, varvalue) Values (m.pcOptiune, m.gnIdUtil, m.pcDescriereOptiune, m.pcValOptiune)
Endif
ENDIF
TABLEUPDATE( 1, .F., 'crsOptiuniUtilizator')
Return lnSucces
Endproc && scrie_optiune_utilizator
******************************************* SFARSIT: scrie_optiune_utilizator *******************************************
Procedure actualizeaza_optiuni
Local lnSucces
llReturn = .F.
lcSql = 'select * from optiuni order by varname'
lcCursor = 'crsOptiuni'
USE IN (SELECT('crsOptiuni'))
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If m.lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Endif
Return m.lnSucces
Endproc
******************************************* SFARSIT: actualizeaza_optiuni *******************************************
******************************************* INCEPUT: citeste_optiune *******************************************
Function citeste_optiune
Parameters tcOptiune, tlValue2
* tlValue2: .T. optiunea se citeste din optiuni.varvalue2, in loc de optiuni.varvalue
Local lcOptiune, lcValOptiune, lcSelect
lcOptiune = tcOptiune
lcValOptiune = ''
lcSelect = Select()
Select crsOptiuni
Locate For Upper(Alltrim(varname)) = Upper(Alltrim(m.tcOptiune))
If Found()
If m.tlValue2
lcValOptiune = varvalue2
Else
lcValOptiune = varvalue
Endif
Endif
Select (m.lcSelect)
Return lcValOptiune
Endfunc && citeste_optiune
******************************************* SFARSIT: citeste_optiune *******************************************
******************************************* INCEPUT: scrie_optiune *******************************************
Procedure scrie_optiune
Lparameters tcOptiune, tcValOptiune, tcDescriereOptiune, tlValue2
* tlValue2: .T. optiunea se scrie in optiuni.varvalue2, in loc de optiuni.varvalue
Private pcOptiune, pcValOptiune, pcDescriereOptiune, pcTipOptiune
Local lcSql, lcValOptiune, lnSucces
pcOptiune = Upper(tcOptiune)
pcValOptiune = m.tcValOptiune
lcValOptiune = m.tcValOptiune
pcDescriereOptiune = tcDescriereOptiune
Do Case
Case Type('tcValOptiune') = 'C'
pcTipOptiune = 'CHARACTER'
Case Type('tcValOptiune') = 'N'
pcTipOptiune = 'NUMERIC'
lcValOptiune = TRANSFORM(m.tcValOptiune)
Case Inlist(Type('tcValOptiune'), 'D', 'T')
pcTipOptiune = 'DATE'
lcValOptiune = DTOC(m.tcValOptiune)
Case Type('tcValOptiune') = 'L'
pcTipOptiune = 'LOGICAL'
lcValOptiune = TRANSFORM(m.tcValOptiune)
Otherwise
pcTipOptiune = 'CHARACTER'
Endcase
If m.tlValue2
lcSql = [begin PACK_SESIUNE.SetOptiune2(?pcOptiune, ?pcValOptiune, ?pcTipOptiune, ?pcDescriereOptiune); end;]
Else
lcSql = [begin PACK_SESIUNE.SetOptiune(?pcOptiune, ?pcValOptiune, ?pcTipOptiune, ?pcDescriereOptiune); end;]
Endif
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Else
Select crsOptiuni
Locate For Upper(varname) = pcOptiune
If Found()
If m.tlValue2
Replace varvalue2 With m.lcValOptiune
Else
Replace varvalue With m.lcValOptiune
Endif
Else
If m.tlValue2
Insert Into crsOptiuni (varname, vardesc, varvalue2) Values (m.pcOptiune, m.pcDescriereOptiune, m.lcValOptiune)
Else
Insert Into crsOptiuni (varname, vardesc, varvalue) Values (m.pcOptiune, m.pcDescriereOptiune, m.lcValOptiune)
Endif
ENDIF
TABLEUPDATE( 1, .F., 'crsOptiuni')
Endif
Return lnSucces
Endproc && scrie_optiune

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,129 @@
* ointroduceri_efactura.prg
Procedure importEfacturaPrimite
DO vizImportEFactura WITH 'PRIMITE'
ENDPROC
PROCEDURE importEfacturaTrimise
DO vizImportEFactura WITH 'TRIMISE'
ENDPROC
PROCEDURE vizImportEFactura
LPARAMETERS tcTip
* tcTIP: PRIMITE/TRIMISE
Private poFacturi, poFacturiDetalii
Local loFrmFacturi As "frm_efactura_import", lcTip, llPrimite
Local lcData1, lcFiltru, lcFiltruOriginal, lcOrder, lcSchema, lcgroup, llAfiseaza, llModParam
poFacturi = Null
poFacturiDetalii = Null
lcTip = IIF(TYPE('tcTip') = 'C' and !EMPTY(m.tcTip), UPPER(ALLTRIM(m.tcTip)), 'PRIMITE')
llPrimite = (m.lcTip = 'PRIMITE')
lcTabel = IIF(m.lcTip = 'PRIMITE', 'anaf_vefactura_primit', 'anaf_vefactura_trimis')
* FACTURI PRIMITE/TRIMISE
lcData1 = '01' + Padl(Int(m.gnLuna),2,'0') + Alltrim(Str(m.gnAn))
TEXT To lcSchema Noshow
ales N(1), id N(20), id_fact N(20), data_act D, data_scad D, numar_act C(30), xfurnizor C(200), xclient C(200), partener C(200), id_incarcare C(36), id_descarcare c(36) null, tip_mesaj_raspuns C(50) null,mesaj_raspuns C(250) null, data_raspuns D null, trimis N(1) null, data_trimis T null, cod_fiscal C(30) null, cod_fiscal_emitent C(30) null, cod_fiscal_beneficiar C(30) null, detalii M null, total_fara_tva N(16,4), total_tva N(16,4), total_cu_tva N(16,4), discount_fara_tva N(16,4), taxe_fara_tva N(16,4), valoare_fara_tva N(16,4), total_de_plata N(16,4), nume_valuta C(5), test N(1) null, jtotctva N(16,4), descriere M null, detalii_plata M null, diferenta N(16,4), procesat N(1)
ENDTEXT
TEXT To lcSelect TEXTMERGE Noshow
SELECT 0 as ales, id, id_fact, data_act, data_scad, numar_act, xfurnizor, xclient, partener, id_incarcare, id_descarcare, tip_mesaj_raspuns, mesaj_raspuns, data_raspuns, NVL(trimis,0) as trimis, data_trimis, cod_fiscal, cod_fiscal_emitent, cod_fiscal_beneficiar, detalii, total_fara_tva, total_tva, total_cu_tva, discount_fara_tva, taxe_fara_tva, valoare_fara_tva, total_de_plata, nume_valuta, test, jtotctva, descriere, detalii_plata, NVL(total_cu_tva, 0.00)-NVL(jtotctva, 0.00) as diferenta, procesat FROM <<m.lcTabel>>
ENDTEXT
lcOrder = [data_act,numar_act,data_raspuns]
lcgroup = []
lcFiltru = [(extract(year from data_act) = ?gnAn and extract(month from data_act) = ?gnLuna) or (data_act is null and data_raspuns >= to_date('] + m.lcData1 + [','ddmmyyyy'))]
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poFacturi', 'crsFacturi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poFacturi.ca_baza1.afisare()
Select crsFacturi
Go Top
* DETALII FACTURI PRIMITE/TRIMISE/EMISE
TEXT To lcSchema Noshow
id_tip N(10) null, cont c(4) null, id_articol N(20) null, id_gestiune N(20) null, id N(20), id_efactura N(20), nr N(5), articol V(250), descriere V(250), detalii M, cantitate N(18,6), um V(20), um_iso V(50), id_um I, um_roa V(50), pret N(20,6), proctva N(7,2), valoarefaratva N(20,6), in_stoc N(1), articol_roa V(250)
ENDTEXT
TEXT To lcSelect Noshow
select CAST(0 as number(10)) as id_tip, CAST('' as Varchar2(4)) as cont, CAST(null as Number(20)) as id_articol, CAST(null as Number(20)) as id_gestiune, id, id_efactura, nr, articol, descriere, detalii, cantitate, um, um_iso, id_um, um_roa, pret, proctva, valoarefaratva, 0 as in_stoc, CAST('' as Varchar2(250)) as articol_roa from anaf_vefactura_detalii
ENDTEXT
lcOrder = [nr]
lcgroup = []
lcFiltru = [1=2] && IIF(!EMPTY(NVL(crsFacturiPrimite.id,0)), [id_efactura=] + ALLTRIM(STR(crsFacturiPrimite.id)), [1=2])
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poFacturiDetalii', 'crsDetaliiFacturi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poFacturiDetalii.ca_baza1.afisare()
* Cursoare helper
CREATE CURSOR cTip (id I, in_stoc N(1), tip V(50), cont V(4))
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Nedefinit','', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. mat. nestoc.','604', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. Energie','6051', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. Apa','6052', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. Gaze','6053', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. chirii','6123', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. colaboratori','621', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. comisioane','622', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. protocol','623', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. transp. bunuri/pers.','624', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. deplasari','625', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. posta/telecom.','626', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ch. terti','628', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Altele','461', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('-----------------','', 0)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Marfuri','371', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Materii prime','301', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Materiale auxiliare','3021', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ambalaje','381', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Obiecte de inventar','303', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Amenajari provizorii','323', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Mat. spre prelucrare','8032', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Mat. in pastrare/consig.','8033', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Discount financiar','767', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Combustibili','3022', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Piese de schimb','3024', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Alte mat. consumabile','3028', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Discount comercial','609', 1)
INSERT INTO cTip (tip, cont, in_stoc) VALUES ('Ambalaje SGR','461', 0)
REPLACE ALL id WITH RECNO()-1 IN cTip
GO TOP IN cTip
INDEX on id TAG id
*!* llSucces = goExecutor.oExecuta("select id_articol, denumire, codmat from vnom_articole where inactiv = 0", 'cArticole')
*!* SELECT cArticole
*!* INDEX on id_articol TAG id_articol
llSucces = goExecutor.oExecuta([select distinct nume_gestiune,cgest,id_gestiune,nr_pag,cont from vgest_gestiuni_util where inactiv = 0 and id_util = ] + Alltrim(Str(m.gnIdUtil)), 'cGestiuni')
SELECT cGestiuni
INDEX on id_gestiune TAG id_gest
llSucces = goExecutor.oExecuta("select cod_um_iso, um_iso from syn_vnom_um_iso", 'cUMISO')
SELECT cUMISO
INDEX on cod_um_iso TAG cod_um_iso
llSucces = goExecutor.oExecuta("select id, um, cod_um_iso, um_iso from vnom_um", 'cUM')
SELECT cUM
INDEX on id TAG id
Select crsFacturi
loFrmFacturi = Createobject("frm_import_efactura", m.llPrimite)
* Do Form anaf_efactura Name loFrmBorderou Linked With this Noshow
loFrmFacturi.Show(1)
Use In (Select('crsFacturi'))
Use In (Select('crsDetaliiFacturi'))
Use In (Select('cTip'))
Use In (Select('cArticole'))
Use In (Select('cGestiuni'))
Endproc && vizFacturiPrimite

View File

@@ -0,0 +1,414 @@
**********************************************************************
* Program....: OMENIU_INITIALIZARI.PRG
* Version....:
* Author.....: MMUTU # marius.mutu
* Date.......: 15 June 2006, 15:21:31
* Notice.....: Copyright <20> 2006,
* All Rights Reserved.
* Compiler...: Visual FoxPro 09.00.0000.2412 for Windows
* Abstract...:
* Changes....: marius.mutu, Created 15 June 2006 / 15:21:31
* Parameters.:
* called by..:
* Purpose....:
**********************************************************************
*------------------------------------------------------------
* Description: configurare_note
* Parameters: tlCRM
* Return:
* Use:
*------------------------------------------------------------
* Id Date By Description
* 1 10/12/2004 lavinia.viziru Initial Creation
*
*------------------------------------------------------------
Procedure configurare_note
Parameters tlCRM
Local llCRM
Local ofrm_note As Form
Local lcCursor, lcCursor0, lcFiltru, lcForm, lcOrder, lcSchema, lcSelect, lcSelect0, lnSucces
Local lnSucces0
llCRM = tlCRM && folosesc crm_note_vanzari de pe server
***-----------------------------------------------------------------------------------------------------------------------------
If llCRM
Private poNote_vanzari
Store '' To poNote_vanzari
Local lcSchema1, lcSelect1, lcOrder1, lcFiltru1, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal
lcSchema1 = []
lcSelect1 = [select denumire as meniu, nv.* from vcrm_note_vanzari nv]
lcOrder1 = [denumire]
lcgroup = []
lcFiltru1 = []
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poNote_vanzari', 'nom_meniu', lcSelect1, lcFiltru1, lcSchema1, lcOrder1, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poNote_vanzari.ca_baza1.afisare()
Else
Select nom_meniu
Set Order To 3 && Meniu
Go Top
Endif
***-----------------------------------------------------------------------------------------------------------------------------
lcSelect0 = [select cont, acont from ] + gcS + [.plcont where an = ] + Alltrim(Str(gnAn))
lcCursor0 = [cplcont]
lnSucces0 = goExecutor.oExecute(lcSelect0, lcCursor0)
If lnSucces0 < 0
aMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
Return
Endif
***-----------------------------------------------------------------------------------------------------------------------------
Private ponote_contab, pcschema, pcselect
Store '' To ponote_contab
lcSchema1 = []
lcSelect1 = [select * from ] + Iif(gnAn >= Iif(Type('gnAnFormNou') = 'U', 2007, gnAnFormNou), [vnote_contabile], [note_contabile])
lcOrder1 = [id_set, ordine]
lcgroup = []
lcFiltru1 = []
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('ponote_contab', 'cnote_contab', lcSelect1, lcFiltru1, lcSchema1, lcOrder1, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
ponote_contab.ca_baza1.afisare()
***************************************************************
*** Note definite de utilizator
***************************************************************
Private poCategorii
poCategorii = Null
lcSchema = []
lcSelect = [select categorie, id_categorie, ordine from xSetsCategorii where sters = 0 union select 'FARA CATEGORIE' as categorie, 0 as id_categorie, 0 as ordine from dual]
lcOrder = [ordine]
lcgroup = []
lcFiltru = [1=2]
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poCategorii', 'crsECategorii', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poCategorii.ca_baza1.afisare()
Private poSets
poSets = Null
lcSchema = []
lcSelect = [select * from xSets]
lcOrder = [nume_set]
lcgroup = []
lcFiltru = [1=2]
lcFiltruOriginal = [id_set >= 1000000]
llModParam = .T.
llAfiseaza = .F.
gencursor('poSets', 'crsESets', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poSets.ca_baza1.afisare()
Private poRequest
poRequest = Null
lcSchema = []
lcOrder = [r.nr_item]
lcgroup = []
lcFiltru = [1=2]
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
Text To lcSelect Textmerge Noshow
select i.label_item,
s.nume_set,
r.valoare_default,
r.nr_item,
r.id_item,
r.id_set,
i.fis_lista,
i.id_fisier,
i.camp_lista,
rpad(case
when i.fis_lista is not null then
pack_util.GetText(i.fis_lista,
i.id_fisier,
CASE WHEN LENGTH(TRIM(TRANSLATE(r.valoare_default, '0123456789+-.', ' '))) IS NULL
THEN to_number(r.valoare_default)
ELSE 0
END,
replace(i.camp_lista, ',', ' || '' '' || '))
ELSE
r.valoare_default
end,
100,
' ') as valoare_default_text
from xrequest r
join xsets s
on s.id_set = r.id_set
join xitems i
on i.id_item = r.id_item
Endtext
gencursor('poRequest', 'crsERequest', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poRequest.ca_baza1.afisare()
Private poNote
poNote = Null
lcSchema = []
lcOrder = [a.nr_nota]
lcgroup = []
lcFiltru = [1=2]
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
Text To lcSelect Textmerge Noshow
SELECT decode(NVL(a.id_jtva_coloana, 0), 0, 0, 1) As Cu_tva,
Cast(0 As Number(2)) As tipnota,
cast(0 as number(20)) as id_act,
cast(0 as number(2)) as luna,
cast(0 as number(4)) as an,
cast(0 as number(20)) as cod,
a.dataireg,
a.serie_act,
a.nract,
a.dataact,
a.explicatia,
a.xscd as scd,
a.xascd as ascd,
a.xscc as scc,
a.xascc as ascc,
a.suma,
a.pereched,
a.perechec,
a.suma_val,
a.id_valuta,
v.nume_val,
a.curs,
a.datascad,
0 AS neimpozab,
a.nnir,
cast(0 as number(5)) as id_util,
'' AS util,
sysdate as dataora,
cast(0 as number(5)) as id_utils,
'' AS utils,
sysdate as dataoras,
a.id_responsabil,
resp.denumire AS nresp,
a.id_venchelt,
venchelt.explicatie AS dst_chlt,
a.id_lucrare,
lucr.nrord,
a.id_ctr,
(case when ctr.numar is not null then ctr.numar || '/' else '' end) || TO_CHAR(ctr.data,'DD.MM.YYYY') as contract,
a.id_sectie,
sectii.sectie,
a.proc_tva,
a.id_set,
NVL(a.id_fact, 0) as id_fact,
a.id_partd,
part1.denumire AS partd,
a.id_partc,
part.denumire AS partc,
cast(0 as number(5)) as id_sucursala,
'' as sucursala,
a.id_fdoc,
fdoc.fel_document AS fdoc,
a.explicatia4,
a.explicatia5,
cast(0 as number(5)) as id_gestin,
'' AS gestin,
cast(0 as number(5)) as id_gestout,
'' AS gestout,
NVL(a.id_factd, 0) as id_factd,
NVL(a.id_factc, 0) as id_factc,
a.id_jtva_coloana,
jtva.denumire as explicatie_tva,
cast(0 AS NUMBER(1)) AS validat,
cast(0 as number(5)) as id_utilv,
'' as utilv,
SYSDATE AS dataorav,
NVL(doc.tva_incasare,0) as tva_incasare
from xnote a
LEFT JOIN nom_fdoc fdoc ON a.id_fdoc = fdoc.id_fdoc
LEFT JOIN nom_parteneri part ON a.id_partc = part.id_part
LEFT JOIN nom_parteneri part1 ON a.id_partd = part1.id_part
LEFT JOIN vnom_venchel venchelt ON a.id_venchelt = venchelt.id_venchelt
LEFT JOIN nom_parteneri resp ON a.id_responsabil = resp.id_part
LEFT JOIN nom_sectii sectii ON a.id_sectie = sectii.id_sectie
LEFT JOIN vnom_lucrari lucr ON a.id_lucrare = lucr.id_lucrare
LEFT JOIN nom_valute v ON a.id_valuta = v.id_valuta
LEFT JOIN contracte ctr ON ctr.id_ctr = a.id_ctr
LEFT JOIN jtva_coloane jtva ON a.id_jtva_coloana = jtva.id_jtva_coloana
LEFT JOIN documente doc on a.id_fact = doc.id_doc
Endtext
gencursor('poNote', 'crsENote', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poNote.ca_baza1.afisare()
***************************************************************
lcCursor0 = [ctva]
lcCursor = [ccalendar]
If gnAn >= Iif(Type('gnAnFormNou') = 'U', 2007, gnAnFormNou)
lcForm = [frm_config_note_contabile2007]
Else
lcSelect0 = [select descriere as tva, procent as ptva from ] + gcS + [.cote_tva where an = ?gnAn and luna = ?gnLuna]
lnSucces0 = goExecutor.oExecute(lcSelect0, lcCursor0)
If lnSucces0 < 0
aMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
Return
Endif
lcSelect = [select ctvam from ] + gcS + [.calendar where an = '] + Alltrim(Str(gnAn)) + ;
[' and nl = '] + Alltrim(Str(gnAn)) + [']
lnSucces = goExecutor.oExecute(lcSelect, lcCursor)
If lnSucces < 0
aMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
Return
Endif
Private pnctvam
Select ccalendar
pnctvam = ccalendar.ctvam
lcForm = [frm_config_note_contabile]
Endif
*ofrm_note = CREATEOBJECT(lcForm,llCRM)
Do Form (lcForm) Name ofrm_note Linked With m.llCRM Noshow
ofrm_note.Show(1)
Release ponote_contab
Use In (select(lcCursor0))
Use In (select(lcCursor))
Use In (SELECT('cnote_contab'))
If m.llCRM
Use In (SELECT('nom_meniu'))
ENDIF
USE IN (select('crsECategorii'))
USE IN (select('crsESets'))
Endproc
******************************* SFARSIT: configurare_note ************************************
*------------------------------------------------------------
* Description: configurare analitice
* Parameters:
* Return:
* Use:
*------------------------------------------------------------
* Id Date By Description
* 1 15/06/2006 marius.mutu Initial Creation
*
*------------------------------------------------------------
Procedure configurare_analitice
Private poConfig
Local lcSchema, lcSelect, lcOrder, lcgroup, lcFiltru, lcFiltruOriginal, llModParam, llAfiseaza
Store Null To poConfig
lcSchema = []
lcSelect = [select * from config_analitice]
lcOrder = [cont]
lcgroup = []
lcFiltru = []
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poConfig', 'crsConfigAnalitice', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poConfig.ca_baza1.afisare()
loConfigFrm = Createobject("frm_config_analitice")
loConfigFrm.Show(1)
Endproc && configurare_analitice
*------------------------------------------------------------
Procedure configurare_analitice_gruputil
Private poConfig
Local lcSchema, lcSelect, lcOrder, lcgroup, lcFiltru, lcFiltruOriginal, llModParam, llAfiseaza
Store Null To poConfig
lcSchema = []
lcSelect = [select * from vconfig_gruputil_analitice]
lcOrder = [denumire_grup, cont]
lcgroup = []
lcFiltru = []
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poConfig', 'crsConfigAnalitice', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poConfig.ca_baza1.afisare()
loConfigFrm = Createobject("frm_config_analitice_gruputil")
loConfigFrm.Show(1)
USE IN (SELECT('crsConfigAnalitice'))
Endproc && configurare_analitice_gruputil
*------------------------------------------------------------
Procedure configurare_analitice_tva
Private poConfig
Local lcSchema, lcSelect, lcOrder, lcgroup, lcFiltru, lcFiltruOriginal, llModParam, llAfiseaza
Store Null To poConfig
lcSchema = []
lcSelect = [select id, id_jtva_coloana, explicatie_tva, cont, acont, id_grup, denumire_grup, id_sucursala, sucursala, id_util, utilizator, dataora from vconfig_tva_analitice]
lcOrder = [sucursala, denumire_grup, cont, explicatie_tva]
lcgroup = []
lcFiltru = []
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poConfig', 'crsConfigAnalitice', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poConfig.ca_baza1.afisare()
loConfigFrm = Createobject("frm_config_analitice_tva")
loConfigFrm.Show(1)
USE IN (SELECT('crsConfigAnalitice'))
Endproc && configurare_analitice_tva
* Eof OMENIU_INITIALIZARI.PRG
*******************************************
* PROCEDURE acces_liste( )
* Date : 08/30/06, 11:37:08
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure acces_liste( )
Private poAccesListe
Local lcSchema, lcSelect, lcOrder, lcgroup, lcFiltru, lcFiltruOriginal, llModParam, llAfiseaza
Store Null To poAccesListe
lcSchema = []
lcSelect = [select * from vpolitici_grupuri]
lcOrder = [nume_lista_preturi]
lcgroup = []
lcFiltru = [1=1] + gcCondSucursala
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poAccesListe', 'crsPolGr', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poAccesListe.ca_baza1.afisare()
loAccesListeFrm = Createobject("frm_politiciGrupuri")
loAccesListeFrm.Show(1)
Endproc
*----------------------------------sfarsit procedura acces_liste----------------------------------

View File

@@ -0,0 +1,310 @@
***************************************************************************************************************
**** Proceduri:
**** vizualizare_lucrari
**** vizualizare_comenzi
**** vizualizare_optiuni
**** extrage_optiuni - mutata in proceduri_comune.prg ( v 2.0.11 )
**** recompune_optiuni - mutata in proceduri_comune.prg ( v 2.0.11 )
**** make_sectii_utilizator - mutata in proceduri_comune.prg ( v 2.0.11 )
**** verifica_lucrare
***************************************************************************************************************
******************************************* INCEPUT: vizualizare_lucrari *******************************************
Procedure vizualizare_lucrari
gcAcces=[1;2;3;4;]
Private polucrari,pocomenzi,polucrarielemente
Local lcSchema,lcSelect,lcOrder,lcFiltru,lcFiltruOriginal,llAfiseaza
Store '' To polucrari,pocomenzi,polucrarielemente
lcSchema=[id_lucrare n(20),nrord c(30),termen_executie t,id_lucrari_detalii n(20),explicatie c(100),data_lucrare t,]+;
[dataora t,utilizator c(30),inchisa n(1)]
lcSelect=[select id_lucrare,nrord,termen_executie,id_lucrari_detalii,explicatie,data_lucrare,]+;
[dataora,utilizator,inchisa from vlucrari_detalii]
lcOrder=[data_lucrare]
lcFiltru = [1=2]
lcFiltruOriginal = [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
lcgroup = []
llModParam = .T.
llAfiseaza = .F.
*gencursor('polucrari','crslucrari',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('polucrari','crslucrari', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
polucrari.ca_baza1.afisare()
lcSchema=[id_comanda n(20),COMANDA_EXTERNA c(20),id_codclient c(20),id_lucrare n(20),id_part n(20),id_gestiune n(20),]+;
[nr_comanda c(100),data_comanda t,nume c(70),data_livrare t,interna n(1),id_sectie n(5),id_sectie2 n(5),id_facturare n(5),id_livrare n(5),adresa_facturare c(50),adresa_livrare c(50)]
lcSelect=[select id_comanda,COMANDA_EXTERNA,id_codclient,id_lucrare,id_part,id_gestiune]+;
[nr_comanda,data_comanda,nume,data_livrare,interna,id_sectie,id_sectie2,id_facturare,id_livrare,b.denumire_adresa as adresa_facturare,c.denumire_adresa as adresa_livrare]+;
[from vcomenzi a left join adrese_parteneri b on b.id_adresa=a.id_facturare left join adrese_parteneri c on c.id_adresa=a.id_livrare]
lcOrder=[data_comanda]
lcFiltru = [1=2]
lcFiltruOriginal = [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
lcgroup = []
llModParam = .T.
llAfiseaza = .F.
*gencursor('pocomenzi','crscomenzi',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('pocomenzi','crscomenzi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
pocomenzi.ca_baza1.afisare()
lcSchema=[id_lucrare n(20),denumire c(100),cantitate n(16,3),um c(10),cantitate2 n(16,3),um2 c(10)]
lcSelect=[select id_lucrare,denumire,cantitate,um,cantitate2,um2 from vlucrari_elemente]
lcOrder=[denumire]
lcFiltru = [1=2]
lcFiltruOriginal = [] && [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
lcgroup = []
llModParam = .T.
llAfiseaza = .F.
*gencursor('polucrarielemente','crslucrarielemente',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('polucrarielemente','crslucrarielemente', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
polucrarielemente.ca_baza1.afisare()
ofrmlucrari=Createobject('frm_lucrari_detalii')
ofrmlucrari.Show(1)
Release polucrari,pocomenzi,polucrarielemente,ofrmlucrari
Endproc && vizualizare_lucrari
******************************************* SFARSIT: vizualizare_lucrari *******************************************
******************************************* INCEPUT: vizualizare_comenzi *******************************************
Procedure vizualizare_comenzi
gcAcces=[1;2;3;4;]
Private pocomenzi,pocomenzielemente
Local lcSchema,lcSelect,lcOrder,lcFiltru,llAfiseaza
Store '' To pocomenzi,pocomenzielemente
lcSchema=[selectat n(1),id_comanda n(20),COMANDA_EXTERNA c(20),id_codclient c(20),id_lucrare n(20),id_part n(20),id_agent n(20),id_delegat n(20),id_masina n(20),]+;
[nr_comanda c(100),data_comanda t,nume c(70),tip_comanda c(20),data_livrare t,nume_agent c(70),nume_delegat c(70),]+;
[nrinmat c(10),nrord c(30),facturat n(1),dataora t,utilizator c(40),data_livrat t,interna n(1),]+;
[nr_livrare c(50),inchisa n(1), id_sectie n(5),id_sectie2 n(5),id_facturare n(5),id_livrare n(5),adresa_facturare c(50),adresa_livrare c(50), cod_client c(50), id_ctr n(10),numar_contract c(100)]
lcSelect=[select 0 as selectat,a.id_comanda,a.COMANDA_EXTERNA,a.id_codclient,a.id_lucrare,a.id_part,a.id_agent,a.id_delegat,a.id_masina,]+;
[a.nr_comanda,a.data_comanda,a.nume,a.tip_comanda,a.data_livrare,a.nume_agent,a.nume_delegat,]+;
[a.nrinmat,a.nrord,a.facturat,a.dataora,a.utilizator,a.data_livrat,a.interna,a.nr_livrare,a.inchisa,a.id_sectie,a.id_sectie2,a.id_facturare,a.id_livrare,] + ;
[b.denumire_adresa as adresa_facturare,c.denumire_adresa as adresa_livrare, d.COD as cod_client,d.id_ctr,d.numar_contract ]+;
[from vcomenzi a left join adrese_parteneri b on b.id_adresa=a.id_facturare left join adrese_parteneri c on c.id_adresa=a.id_livrare left join parteneri_coduri d on d.id=a.id_codclient]
lcOrder=[data_comanda]
lcFiltru = [1=2]
lcFiltruOriginal = [] && [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
*gencursor('pocomenzi','crscomenzi',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('pocomenzi','crscomenzi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
pocomenzi.ca_baza1.afisare()
lcSchema=[id_comanda n(20),id_articol n(20),id_pol n(20),denumire c(100),pret n(16,] + alltrim(str(gnPPretV)) + [),cantitate n(16,] + alltrim(str(gnPCant)) + [),um c(10)]
lcSelect=[select id_comanda,id_articol,id_pol,denumire,pret,cantitate,um from vcomenzi_elemente]
lcOrder=[denumire]
lcFiltru = [1=2]
lcFiltruOriginal = [] && [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
*gencursor('pocomenzielemente','crscomenzielemente',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('pocomenzielemente','crscomenzielemente', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
pocomenzielemente.ca_baza1.afisare()
ofrmcomenzi=Createobject('frm_comenzi')
ofrmcomenzi.Show(1)
Release pocomenzi,pocomenzielemente,ofrmcomenzi
Endproc && vizualizare_comenzi
******************************************* SFARSIT: vizualizare_comenzi *******************************************
******************************************* INCEPUT: vizualizare_optiuni *******************************************
Procedure vizualizare_optiuni
If Used('crsoptiuni')
Use In crsoptiuni
Endif
lcSql=[SELECT VARTYPE,VARNAME,VARVALUE FROM ] + gcS + [.OPTIUNI WHERE PROGRAM='] + Upper(Alltrim(gcNumeProgram)) + [']
lcCursor=[crsoptiuni]
lnSucces=goExecutor.oExecute(lcSql,lcCursor)
If lnSucces<0
amessagebox(goExecutor.cEroare,0+48,"Eroare")
Else
Select crsoptiuni
Scan
lcvartype=Alltrim(Upper(Vartype))
lcvarname=Alltrim(Upper(varname))
Do Case
Case lcvartype = "CHARACTER"
luvarvalue = Alltrim(varvalue)
gc&lcvarname. = luvarvalue
Case lcvartype = "NUMERIC"
luvarvalue = Val(varvalue)
gn&lcvarname. = luvarvalue
Endcase
Endscan
Use In crsoptiuni
ofrmoptiune=Createobject('frm_optiuni_comenzi')
ofrmoptiune.Show(1)
Release ofrmoptiune
Endif
Endproc && vizualizare_optiuni
******************************************* SFARSIT: vizualizare_optiuni *******************************************
********************************************************************************************************************
*!* modificare v 2.0.11
*!* Procedure extrage_optiuni
*!* Parameters tcLista, tnId
*!* Local lcLista, lcReturn
*!* Store '' To lcReturn
*!* lcLista = Nvl(Alltrim(tcLista),'')
*!* lnNrOptiuni = Getwordcount(lcLista,";")
*!* For i=1 To lnNrOptiuni
*!* lcExtragOptId = Getwordnum(lcLista,i,";")
*!* lcId_extras = Getwordnum(lcExtragOptId,1,"::")
*!* If lcId_extras = Alltrim(Str(tnId))
*!* lcReturn = Getwordnum(lcExtragOptId,2,"::")
*!* Endif
*!* Endfor
*!* Return lcReturn
*!* Endproc && extrage_optiune
********************************************************************************************************************
********************************************************************************************************************
*!* *!* lcLista = '1001::3;2::777;21001::5;'
*!* *!* lcId = 2
*!* *!* lcValoareNoua = '9'
*!* *!* lcListaNoua = recompune_optiuni(lcLista,lcId,lcValoareNoua)
*!* Procedure recompune_optiuni
*!* Parameters tcLista, tnId, tcValoareNoua
*!* Local lcLista, lcListaNoua, lcId, lcValoareNoua, lnGrupuri, lcGrup, lcIdCautat, lnPoz, lnPozGrup, lcValoare
*!* lcLista = Nvl(Alltrim(tcLista),'')
*!* lcId = Alltrim(Str(tnId))
*!* lcValoareNoua = Alltrim(tcValoareNoua)
*!* llGasit = .F.
*!* lcListaNoua = ''
*!* lnGrupuri = Getwordcount(lcLista,';')
*!* For i = 1 To lnGrupuri
*!* lcGrup = Getwordnum(lcLista,i,";")
*!* If i=1
*!* lcIdCautat = lcId + '::'
*!* Else
*!* lcIdCautat = ';'+ lcId + '::'
*!* lcGrup = ';' + lcGrup && ';id_sectie::optiune_veche'
*!* Endif
*!* lnPozGrup = At(lcIdCautat,lcGrup)
*!* If lnPozGrup > 0
*!* llGasit = .T.
*!* lnPoz = At('::', lcGrup)
*!* If lnPoz > 0
*!* lcValoare = Substr(lcGrup,lnPoz) && '::optiune_veche'
*!* lcGrup= Strtran(lcGrup,lcValoare,'::'+lcValoareNoua)
*!* Endif
*!* Endif
*!* lcListaNoua = lcListaNoua + lcGrup
*!* Endfor
*!* If lnGrupuri = 0
*!* lcListaNoua = lcId + '::' + lcValoareNoua
*!* Else
*!* If !llGasit
*!* lcListaNoua = lcListaNoua + ';' + lcId + '::' + lcValoareNoua
*!* Endif
*!* Endif
*!* Return lcListaNoua
*!* Endproc && recompune_optiuni
********************************************************************************************************************
*!* Procedure make_sectii_utilizator
*!* lcSel = [{call PACK_COMENZI.sectii_utilizator(?gnIdUtil,?gnIdSucursala)}]
*!* lcCursor = 'crsSectii'
*!* lnSucces = goExecutor.oExecute(lcSel,lcCursor)
*!* If lnSucces < 0
*!* amessagebox(goExecutor.cEroare,0+16,"Eroare")
*!* Return
*!* Endif
*!* Select crsSectii
*!* Go Top
*!* Endproc && make_sectii_utilizator
*!* modificare v 2.0.11 ^
********************************************************************************************************************
Function verifica_lucrare
Lparameters tnIdLucrare,tcNumeCursorVFP
Local llReturn,lcSql,lcNumeCursorOra,lcCursorV,lcMesaj
&&& (loCauta.id_lucrare,[crstempcomlucrare])
llReturn = .T.
lcNumeCursorTempV = [crstempvluc]
lcCursorVerificare = [crsverificareluc]
lcMesaj = []
If Used(lcCursorVerificare)
Use In (lcCursorVerificare)
Endif
If Used(lcNumeCursorTempV)
Use In (lcNumeCursorTempV)
Endif
Create Cursor (lcCursorVerificare) (Id N(14),nume c(100),nr_comanda M)
Create Cursor (lcNumeCursorTempV) (interna N(1),Id N(14),nume c(200),nr_comanda M,nr N(14))
If !Empty(Nvl(tnIdLucrare,0))
lcNumeCursorOra = [crstemporalucrare]
If Used(lcNumeCursorOra)
Use In (lcNumeCursorOra)
Endif
lcSql = [select a.interna,a.id,(case when a.interna in (2,5) then b.denumire ] + ;
[when interna = 3 then c.nume_gestiune ] + ;
[when interna = 4 then d.sectie ] + ;
[else null end) as nume,] + ;
[stringagg(a.nr_comanda) as nr_comanda,a.nr from ] + ;
[(select id_lucrare, interna,] + ;
[(case when interna in (2,5) then id_part ] + ;
[when interna = 3 then id_gestiune ] + ;
[when interna = 4 then id_sectie2 ] + ;
[else null end) as id,] + ;
[nr_comanda,] + ;
[count(*) over(partition by id_lucrare, interna,(case when interna = 2 then id_part when interna = 3 then id_gestiune ] + ;
[when interna = 4 then id_sectie2 else null end)) as nr ] + ;
[from ] + gcS + [.comenzi where sters = 0 and id_sectie = ?gnId_sectie and interna <> 1 and id_lucrare = ] + Alltrim(Str(tnIdLucrare)) + [) a ] + ;
[left join ] + gcS + [.nom_parteneri b on a.id = b.id_part and a.interna = 2 ] + ;
[left join ] + gcS + [.nom_gestiuni c on a.id = c.id_gestiune and a.interna = 3 ] + ;
[left join ] + gcS + [.nom_sectii d on a.id = d.id_sectie and a.interna = 4 ] + ;
[group by a.interna,a.id,(case when a.interna in (2,5) then b.denumire when a.interna = 3 then c.nume_gestiune when a.interna = 4 then d.sectie else null end),a.nr ] + ;
[order by 3,2]
lnSucces = goExecutor.oExecute(lcSql,lcNumeCursorOra)
If lnSucces < 0
amessagebox(goExecutor.cEroare,16,"Eroare")
Return .F.
Else
Insert Into (lcNumeCursorTempV) Select interna,id,nume,Chr(44)+Alltrim(nr_comanda)+Chr(44) as nr_comanda,nr From (lcNumeCursorOra)
Use In (lcNumeCursorOra)
Endif
Endif
If !Empty(tcNumeCursorVFP)
Local loDublura
Select (tcNumeCursorVFP)
Scan For interna <> 1
Scatter Name loDublura
Select (lcNumeCursorTempV)
Locate For interna = loDublura.interna And Id = Iif(INLIST(loDublura.interna,2,5),loDublura.id_part,Iif(loDublura.interna=3,loDublura.id_gestiune,loDublura.id_sectie2)) && modificare v 2.0.20
If Found()
If At([,] + Alltrim(loDublura.nr_comanda) + [,],Alltrim(nr_comanda)) = 0
&& s-ar putea sa am comanda deja pe lucrare si sa o am si selectata in cursorul din VFP
Replace nr_comanda With Alltrim(nr_comanda) + Alltrim(loDublura.nr_comanda) + [,],nr With nr + 1
Endif
Else
Append Blank
Replace interna With loDublura.interna,Id With Iif(INLIST(loDublura.interna,2,5),loDublura.id_part,Iif(loDublura.interna=3,loDublura.id_gestiune,loDublura.id_sectie2)),; && modificare v 2.0.20
nume With loDublura.nume,nr_comanda With [,] + Alltrim(loDublura.nr_comanda) + [,],nr With 1
Endif
Select (tcNumeCursorVFP)
Endscan
Release loDublura
Endif
Insert Into (lcCursorVerificare) Select Id,nume,nr_comanda From (lcNumeCursorTempV) Where nr > 1 Order By nume,Id
If Reccount(lcCursorVerificare)>0
lcMesaj = [Urmatorii beneficiari vor avea mai mult de o comanda pe lucrare : ] + Chr(13) + Chr(10)
Select (lcCursorVerificare)
Scan
lcMesaj = lcMesaj + Padr(Alltrim(nume),50,[ ]) + [ - ] + Substr(Alltrim(nr_comanda),2,Len(Alltrim(nr_comanda))-2) + Chr(13) + Chr(10)
Endscan
lcMesaj = lcMesaj + Chr(13) + Chr(10) + [Doriti sa continuati?]
If amessagebox(lcMesaj,4+32,"Comenzi multiple") = 7
llReturn = .F.
Endif
Endif
If Used(lcCursorVerificare)
Use In (lcCursorVerificare)
Endif
Return llReturn
Endfunc && verifica_lucrare
********************************************************************************************************************

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,59 @@
***************************************************************************************************************
**** Proceduri:
**** vizualizare_masini
***************************************************************************************************************
******************************************* INCEPUT: vizualizare_masini *******************************************
Procedure vizualizare_masini
gcAcces=[1;2;3;4;]
Private pomasini
Local lcSchema,lcSelect,lcOrder,lcFiltru,llAfiseaza
Store '' To pomasini
lcSchema=['']
lcSelect=['select * from ] + gcS + [.vnom_masini where 1=2']
lcOrder=[nrinmat]
lcFiltru = [1=2]
llAfiseaza = .F.
gencursor('pomasini','crsmasini',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
pomasini.ca_baza1.afisare()
ofrmmasini=Createobject('frm_masini')
ofrmmasini.Show(1)
Release pomasini,ofrmmasini
Endproc
******************************************* SFARSIT: vizualizare_masini *******************************************
Procedure vizualizare_RUTE
Private pomasini
Local lcSchema,lcSelect,lcOrder,lcFiltru,llAfiseaza
Store '' To poRUTE
lcSchema=['']
lcSelect=['select * from FACT_VNOM_RUTEgest where 2=2']
lcOrder=[ruta,ORDINE]
lcFiltru = [2=2]
llAfiseaza = .F.
gencursor('poRUTE','crsRUTE',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
poRUTE.ca_baza1.afisare()
ofrmRUTE=Createobject('frm_RUTE')
ofrmRUTE.Show(1)
Release poRUTE,ofrmRUTE
EndProc
*---------------------------------------------------------------------
Procedure vizualizare_nomRUTE
Private ponomrute
Local lcSchema,lcSelect,lcOrder,lcFiltru,llAfiseaza
Store '' To ponomrute
lcSchema=['']
lcSelect=['select * from FACT_VNOM_RUTE where 2=2']
lcOrder=[ruta]
lcFiltru = [2=2]
llAfiseaza = .F.
gencursor('ponomrute','crsnomRUTE',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
ponomrute.ca_baza1.afisare()
ofrmRUTE=Createobject('frm_nomRUTE')
ofrmRUTE.Show(1)
Release ponomrute,ofrmRUTE
Endproc

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,511 @@
*!* 19.12.2019
*!* marius.mutu
*!* Adauga_modifica_inregistrare, sterge_inregistrare: Am adaugat variabila pnIdAMS pentru a fi completata cu id-ul generat la salvarea unei inregistrari noi in baza de date
&& ------------------------------INCEPUT: Adauga_Modifica_Inregistrare------------------------------
*!* Procedura: Adauga_Modifica_Inregistrare
*!* Parametri: tcForm, toRec, tnId
*!* Data/Ora generarii: 26/04/2004 11:21
*!* Autor: MARIUS.MUTU
Procedure Adauga_Modifica_Inregistrare
Lparameters tcAlias, toRec, tnId, tcActiune,tlNoShow,tcObjName
* parametrul @tnId se transmite optional prin referinta la INSERT pentru a fi completat cu Id-ul generat la adaugarea in baza de date
* trebuie modificate cus_odata_xxx.make_sql pentru a completa variabila pnIdAMS
Private pnIdAMS
pnIdAMS = m.tnId
Local lcAlias,llNoShow,lcObjName
lcAlias = Upper(Alltrim(tcAlias))
lcForm = 'frm_' + lcAlias + '_nou'
llNoShow = tlNoShow
Private poRec
poRec = toRec
If Empty(tcObjName)
lcObjName = 'loAdMod' + lcAlias
Else
lcObjName = Alltrim(tcObjName)
Endif
*DO FORM &lcForm NAME loAdMod WITH toRec,tnId,tcActiune NOSHOW
&lcObjName = Createobject(lcForm,poRec,tnId,tcActiune)
If !tlNoShow
&lcObjName..Show(1)
Endif
tnId = m.pnIdAMS
Return gnButon
Endproc
&& ------------------------------SFARSIT: Adauga_Modifica_Inregistrare------------------------------
&& ------------------------------INCEPUT: Sterge_Inregistrare ------------------------------
*!* Procedura: Sterge_Inregistrare
*!* Parametri: tcAlias, tnId
*!* Data/Ora generarii: 26/04/2004 11:28
*!* Autor: MARIUS.MUTU
Procedure Sterge_Inregistrare
Lparameters tcAlias, tnId, tlNoSave,tcObjName
Private pnIdAMS
pnIdAMS = m.tnId
lcAlias = Upper(Alltrim(tcAlias))
lnId = tnId
llNoSave = tlNoSave
If Empty(tcObjName)
lcObjName = 'loData'
Else
lcObjName = Alltrim(tcObjName)
Endif
lcData = 'cus_odata_' + lcAlias
&lcObjName = Createobject(lcData)
&lcObjName..cActiune = "DELETE"
If !llNoSave
Return &lcObjName..salvare(,lnId)
Else
Return .T.
Endif
Endproc
&& ------------------------------SFARSIT: Sterge_Inregistrare ------------------------------
Define Class BizDataObject As Custom
oObject = Null
cObjectName = ''
cSelect = ''
cSchema = ''
nId = NULL
Procedure Init
Lparameters toHash
*nId: id inregistrare, doar daca se transmite si cObjectName
*cObjectName: identificator select, schema dintr-o colectie (optional)
*cSelect: instructiune [select a,b,c from tabel where id = ?pnId], in cazul in care nu exista cObjectName (optional)
*cSchema: schema pentru cSelect (optional)
* loBizDataObject = CreateObject("BizDataObject", GetHash([cSelect=>select a,b,c from tabel where id = ?pnId]))
* loBizDataObject.GetDataObject()
This.nId = toHash.GetValue("nId")
This.cObjectName = toHash.GetValue("cObjectName")
This.cSelect = toHash.GetValue("cSelect")
This.cSchema = toHash.GetValue("cSchema")
Endproc && Init
***************************************************************
*** Intoarce un obiect selectat din baza de date pe baza tnId
***************************************************************
Procedure GetDataObject
LOCAL lcSelect, lcSelectV, llSucces
PRIVATE pnObjectId, poObject
lcSelectV = SELECT()
llSucces = .F.
poObject = NULL
pnObjectId = this.nId
lcSelect = this.cSelect
lcSchema = this.cSchema && id_articol N(20), codmat V(50), denumire V(100), descriere V(200), um V(10), id_grupa N(5), grupa V(50), id_subgrupa N(5), subgrupa V(50), tip N(3)
IF !(Empty(This.cObjectName) OR EMPTY(This.nId))
loDefObject = This.GetDefObject()
lcSelect = loDefObject.GetValue("cSelect")
lcSchema = loDefObject.GetValue("cSchema")
lcIdColumn = loDefObject.GetValue("cIdColoana")
lcSelect = lcSelect + " where " + m.lcIdColumn + " = ?pnObjectId"
This.cSelect = m.lcSelect
ENDIF
IF !EMPTY(m.lcSelect)
IF EMPTY(m.lcSchema)
llSucces = goExecutor.oSelecteaza2Object(m.lcSelect, @poObject)
ELSE
poCursor = Null
gencursor_hash(gethash([cnume=>poCursor??cAlias=>crsDataObject??cselect=>] + m.lcSelect + [??cschema=>] + m.lcSchema + [??lModParam=>.T.??cwhere=>] + m.lcIdColumn + [=pnObjectId]))
IF USED('crsDataObject')
llSucces = .T.
SELECT crsDataObject
SCATTER NAME poObject MEMO
USE IN (SELECT('crsDataObject'))
ENDIF
ENDIF
ENDIF
IF !m.llSucces
poObject = NULL
ENDIF
SELECT (m.lcSelectV)
RETURN poObject
ENDPROC && GetDataObject
*************************************************
Function GetDefObject
lcObjectName = Lower(This.cObjectName)
loHash = GetHash()
Do Case
CASE EMPTY(m.lcObjectName)
*
Case lcObjectName = "nom_parteneri"
With loHash
.SetValue("cSelect", "select id_part, denumire, cod_fiscal from nom_parteneri")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "denumire")
.SetValue("cColoana", "denumire,cod_fiscal,id_part")
.SetValue("cTitlu", "Alegeti partenerul")
.SetValue("cTitluColoana", "Nume,Cod fiscal,ID")
.SetValue("cFiltruOriginal", [STERS = 0 AND INACTIV = 0])
.SetValue("cresultcoloana","denumire")
.SetValue("cidcoloana","id_Part")
Endwith
Case lcObjectName = "nom_parteneri4111"
With loHash
.SetValue("cSelect", "SELECT B.ID_PART, B.DENUMIRE, B.COD_FISCAL " + ;
" FROM CORESP_TIP_PART A " + ;
" LEFT JOIN NOM_PARTENERI B ON A.ID_PART = B.ID_PART")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "b.denumire")
.SetValue("cColoana", "b.denumire,b.cod_fiscal,b.id_part")
.SetValue("cTitlu", "Alegeti partenerul")
.SetValue("cTitluColoana", "Nume,Cod fiscal,ID")
.SetValue("cFiltruOriginal", [B.STERS = 0 AND B.INACTIV = 0 AND A.ID_TIP_PART IN (SELECT id_tip_part FROM coresp_tip_cont WHERE cont = '4111')])
.SetValue("cresultcoloana","denumire")
.SetValue("cidcoloana","id_Part")
Endwith
Case lcObjectName = "nom_responsabil"
With loHash
.SetValue("cSelect", "select id_responsabil, nume, marca, bi, cnp from vnom_responsabili")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "nume")
.SetValue("cColoana", "nume, marca, bi, cnp, id_responsabil")
.SetValue("cTitlu", "Alegeti responsabilul")
.SetValue("cTitluColoana", "Nume, Marca, BI, CNP, Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","nume")
.SetValue("cidcoloana","id_responsabil")
Endwith
Case lcObjectName = "nom_feldoc"
With loHash
.SetValue("cSelect", "select id_fdoc, fel_document FROM vnom_fdoc")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "fel_document")
.SetValue("cColoana", "fel_document,id_fdoc")
.SetValue("cTitlu", "Alegeti felul documentului")
.SetValue("cTitluColoana", "Document,ID")
.SetValue("cFiltruOriginal", [inactiv = 0])
.SetValue("cresultcoloana","fel_document")
.SetValue("cidcoloana","id_fdoc")
Endwith
Case lcObjectName = "nom_gestiune"
With loHash
.SetValue("cSelect", "select nume_gestiune,cgest,id_gestiune,nr_pag,cont from vnom_gestiuni ")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "nume_gestiune")
.SetValue("cColoana", "nume_gestiune,cgest")
.SetValue("cTitlu", "Alegeti Gestiunea")
.SetValue("cTitluColoana", "Gestiune,Cgest")
.SetValue("cFiltruOriginal", [inactiv = 0])
.SetValue("cresultcoloana","nume_gestiune")
.SetValue("cidcoloana","id_gestiune")
Endwith
Case lcObjectName = "nom_lucrare"
With loHash
.SetValue("cSelect", "select nrord, id_lucrare from vnom_lucrari")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "nrord")
.SetValue("cColoana", "nrord,id_lucrare")
.SetValue("cTitlu", "Alegeti lucrarea")
.SetValue("cTitluColoana", "Lucrare,ID")
.SetValue("cFiltruOriginal", [inactiv = 0])
.SetValue("cresultcoloana","nrord")
.SetValue("cidcoloana","id_lucrare ")
Endwith
Case lcObjectName = "nom_sectie"
With loHash
.SetValue("cSelect", "select id_sectie, sectie, csectie FROM vnom_sectii")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "sectie")
.SetValue("cColoana", "sectie, csectie")
.SetValue("cTitlu", "Alegeti sectia")
.SetValue("cTitluColoana", "Sectie, Indicativ")
.SetValue("cFiltruOriginal", [inactiv = 0])
.SetValue("cresultcoloana","sectie")
.SetValue("cidcoloana","id_sectie")
Endwith
Case lcObjectName = "nom_valuta"
With loHash
.SetValue("cSelect", "select id_valuta, nume_val FROM vnom_valute")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "nume_val")
.SetValue("cColoana", "nume_val")
.SetValue("cTitlu", "Alegeti valuta")
.SetValue("cTitluColoana", "Valuta")
.SetValue("cFiltruOriginal", [inactiv = 0 and moneda_nationala = 0])
.SetValue("cresultcoloana","nume_val")
.SetValue("cidcoloana","id_valuta")
Endwith
Case lcObjectName = "nom_sucursala"
With loHash
.SetValue("cSelect", "select id_sucursala, sucursala, inactiv from vnom_sucursale")
.SetValue("cSchema", "")
.SetValue("cFiltru", "2=2")
.SetValue("cOrder", "sucursala")
.SetValue("cColoana", "sucursala,id_sucursala")
.SetValue("cTitlu", "Alegeti sucursala")
.SetValue("cTitluColoana", "Sucursala, Id")
If glEMama && DACA SUNT PE FIRMA MAMA ARAT DOAR SUCURSALELE EI
.SetValue("cFiltruOriginal", [inactiv = 0 AND id_mama = ?gnIdFirma])
Else && DACA SUNT PE O SUCURSALA SAU PE FIRMA INDEPENDENTA NU ARAT NIMIC
.SetValue("cFiltruOriginal", [1=2])
Endif
.SetValue("cresultcoloana","sucursala")
.SetValue("cidcoloana","id_sucursala")
Endwith
Case lcObjectName = "nom_utilizator"
With loHash
.SetValue("cSelect", "select id_util,utilizator from syn_vutilizatori")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "utilizator")
.SetValue("cColoana", "utilizator")
.SetValue("cTitlu", "Alegeti utilizatorul")
.SetValue("cTitluColoana", "Utilizator")
.SetValue("cFiltruOriginal", [inactiv = 0])
.SetValue("cresultcoloana","utilizator")
.SetValue("cidcoloana","id_util")
Endwith
Case lcObjectName = "nom_venchel"
With loHash
.SetValue("cSelect", "select id_venchelt, explicatie, (case tip_venchelt when 1 then 'Cheltuiala' else 'Venit' end) as tip_venchelt FROM vnom_venchel")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "explicatie")
.SetValue("cColoana", "explicatie,tip_venchelt")
.SetValue("cTitlu", "Alegeti venitul/cheltuiala")
.SetValue("cTitluColoana", "Explicatia, Tip")
.SetValue("cFiltruOriginal", [inactiv = 0])
.SetValue("cresultcoloana","explicatie")
.SetValue("cidcoloana","id_venchelt")
Endwith
Case Inlist(lcObjectName, "nom_articol", "nom_articole")
With loHash
.SetValue("cSelect", "select denumire, codmat, um, grupa, subgrupa, id_grupa, id_subgrupa, descriere, dnf, cont, acont, inactiv, id_articol from vnom_articole")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "denumire")
.SetValue("cColoana", "denumire,codmat,um,grupa,subgrupa,cont,acont,dnf,id_articol")
.SetValue("cTitlu", "Alegeti articolul")
.SetValue("cTitluColoana", "Denumire,Cod Material,UM,Grupa,Subgrupa,Cont,Analitic,DNF,Id")
.SetValue("cFiltruOriginal", [inactiv = 0])
.SetValue("cresultcoloana","denumire")
.SetValue("cidcoloana","id_articol")
Endwith
Case lcObjectName = "nom_grupa_articol"
With loHash
.SetValue("cSelect", "select grupa, id_grupa from vgest_art_gr")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "grupa")
.SetValue("cColoana", "grupa,id_grupa")
.SetValue("cTitlu", "Alegeti grupa de articole")
.SetValue("cTitluColoana", "Grupa,Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","grupa")
.SetValue("cidcoloana","id_grupa")
Endwith
Case lcObjectName = "nom_subgrupa_articol"
With loHash
.SetValue("cSelect", "select subgrupa, grupa, id_subgrupa from vgest_art_sbgr")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "subgrupa")
.SetValue("cColoana", "subgrupa,grupa,id_subgrupa")
.SetValue("cTitlu", "Alegeti subgrupa de articole")
.SetValue("cTitluColoana", "Subgrupa,Grupa,Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","subgrupa")
.SetValue("cidcoloana","id_subgrupa")
Endwith
Case lcObjectName = "nom_grupa_gestiune"
With loHash
.SetValue("cSelect", "select id_grupe, nume_grupa, nume_parinte, parent_id FROM vgest_nom_grupe")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "nume_grupa")
.SetValue("cColoana", "nume_grupa,nume_parinte,id_grupe,parent_id")
.SetValue("cTitlu", "Alegeti grupa de gestiuni")
.SetValue("cTitluColoana", "Grupa,Grupa parinte,Id,Id parinte")
.SetValue("cFiltruOriginal", [inactiv = 0])
.SetValue("cresultcoloana","nume_grupa")
.SetValue("cidcoloana","id_grupe")
Endwith
Case lcObjectName = "nom_meserie"
With loHash
.SetValue("cSelect", "select id_meseria, meserie from SAL_VNOM_MES")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "meserie")
.SetValue("cColoana", "id_meseria, meserie")
.SetValue("cTitlu", "Alegeti meseria")
.SetValue("cTitluColoana", "Meseria, Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","meserie")
.SetValue("cidcoloana","meseria")
Endwith
Case lcObjectName = "nom_formatie"
With loHash
.SetValue("cSelect", "select id_formatia, denumire from sal_vnom_formatii")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "denumire")
.SetValue("cColoana", "denumire, id_formatia")
.SetValue("cTitlu", "Alegeti formatia")
.SetValue("cTitluColoana", "Formatia, Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","denumire")
.SetValue("cidcoloana","id_formatia")
Endwith
Case lcObjectName = "nom_tip_rulaj"
With loHash
.SetValue("cSelect", "select id_tip_rulaj,descriere from nom_tip_rulaj")
.SetValue("cSchema", "")
.SetValue("cFiltru", "2=2")
.SetValue("cOrder", "descriere")
.SetValue("cColoana", "descriere,id_tip_rulaj")
.SetValue("cTitlu", "Alegeti tipul de rulaj")
.SetValue("cTitluColoana", "Descriere,ID")
.SetValue("cFiltruOriginal", [STERS = 0])
.SetValue("cresultcoloana","descriere")
.SetValue("cidcoloana","id_tip_rulaj")
Endwith
Case lcObjectName = "nom_contracte"
With loHash
.SetValue("cSelect", "select id_ctr, id_part, denumire, contract, numar, data from vcontracte")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "data desc, numar")
.SetValue("cColoana", "contract,denumire,id_ctr")
.SetValue("cTitlu", "Alegeti contractul")
.SetValue("cTitluColoana", "Contract,Partener,Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","contract")
.SetValue("cidcoloana","id_ctr")
Endwith
Case lcObjectName = "tipuri_contracte"
With loHash
.SetValue("cSelect", "select id_tip_ctr,denumire from tipuri_contracte")
.SetValue("cSchema", "")
.SetValue("cFiltru", "2=2")
.SetValue("cOrder", "denumire")
.SetValue("cColoana", "denumire,id_tip_ctr")
.SetValue("cTitlu", "Alegeti tipul de contract")
.SetValue("cTitluColoana", "Denumire,ID")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","denumire")
.SetValue("cidcoloana","id_tip_ctr")
Endwith
Case lcObjectName = "nom_transe"
With loHash
.SetValue("cSelect", "select id_transa, transa from sal_vnom_transe")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "transa")
.SetValue("cColoana", "transa, id_transa")
.SetValue("cTitlu", "Alegeti transa")
.SetValue("cTitluColoana", "Transa, Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","transa")
.SetValue("cidcoloana","id_transa")
Endwith
Case lcObjectName = "nom_tichete"
With loHash
.SetValue("cSelect", "select id, denumire,valoare from sal_vnom_tichete")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "denumire")
.SetValue("cColoana", "denumire, valoare, id")
.SetValue("cTitlu", "Alegeti tipul tichetului")
.SetValue("cTitluColoana", "Tip tichet,Valoare, Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","denumire")
.SetValue("cidcoloana","id")
Endwith
Case lcObjectName = "nom_locatii"
With loHash
.SetValue("cSelect", "select id, denumire, sters, inactiv, id_util, dataora, id_utils, dataoras from vnom_locatii")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "denumire")
.SetValue("cColoana", "denumire,id")
.SetValue("cTitlu", "Alegeti locatia")
.SetValue("cTitluColoana", "Denumire,Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","denumire")
.SetValue("cidcoloana","id")
Endwith
Case lcObjectName = "nom_tipfactura"
With loHash
.SetValue("cSelect", "select id, denumire from fact_tipuri")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "denumire")
.SetValue("cColoana", "denumire,id")
.SetValue("cTitlu", "Alegeti tipul facturii")
.SetValue("cTitluColoana", "Denumire,Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","denumire")
.SetValue("cidcoloana","id")
Endwith
Case lcObjectName = "nom_ruta"
With loHash
.SetValue("cSelect", "select id_ruta, ruta from fact_nom_rute")
.SetValue("cSchema", "")
.SetValue("cFiltru", "1=2")
.SetValue("cOrder", "ruta")
.SetValue("cColoana", "denumire,id")
.SetValue("cTitlu", "Alegeti ruta")
.SetValue("cTitluColoana", "Ruta,Id")
.SetValue("cFiltruOriginal", [])
.SetValue("cresultcoloana","ruta")
.SetValue("cidcoloana","id_ruta")
Endwith
ENDCASE
RETURN loHash
ENDFUNC && GetDefObjectByName
Enddefine && BizDataObject

View File

@@ -0,0 +1,177 @@
*!* 27.08.2009
*!* marius.mutu
*!* viz_catalog_articole - taxa reconditionare
*!* 07.11.2019
*!* marius.mutu
*!* viz_catalog_articole - codnc8,greutate,tara origine
********* Inceput: viz_grupe_subgr_articole
PROCEDURE viz_grupe_subgr_articole
PRIVATE pnId_grupa
STORE 0 TO pnId_grupa
lcSelect1 = ['select id_grupa,grupa from ] + gcS + [.vgest_art_gr where 1=2']
lcschema1 = ['']
lcorder1= [grupa]
lcnume_coloane1 = [grupa]
lctitlu_coloane1 = [Grupa]
lcSelect2 = ['select id_subgrupa,subgrupa,id_grupa,grupa,indicativ from ] + gcS + [.vgest_art_sbgr where 1=2']
lcschema2 = ['']
lcorder2= [subgrupa]
lcnume_coloane2 = [subgrupa;indicativ]
lctitlu_coloane2 = [Subgrupa,Indicativ]
lcFiltru2 = [id_grupa=?pnId_grupa]
ofrm_gsa = CREATEOBJECT('frm_grupe_subgr_articole')
ofrm_gsa.Lb_titlu_alb_b121.caption = [Categorii de articole]
*** INITIALIZEZ PROPRIETATILE CONTAINER GRID STANGA
WITH ofrm_gsa.ct_grid_search1
.cSelect = lcSelect1
.cSchema = lcSchema1
.cFiltruOriginal = [2=2]
.cFiltru = [2=2]
.cTitlu = 'GRUPE'
.corder = lcorder1
.cnume_coloane = lcnume_coloane1
.ctitlu_coloane = lctitlu_coloane1
.cnumecursor = [crsgrupe_art]
ENDWITH
WITH ofrm_gsa.ct_grid_search2
.cSelect = lcSelect2
.cSchema = lcSchema2
.cFiltruOriginal = lcFiltru2
.cFiltru = [2=2]
.cTitlu = 'SUBGRUPE'
.corder = lcorder2
.cnume_coloane = lcnume_coloane2
.ctitlu_coloane = lctitlu_coloane2
.cnumecursor = [crssubgrupe_art]
ENDWITH
ofrm_gsa.show(1)
RELEASE ofrm_gsa
ENDPROC
********* Sfarsit: viz_grupe_subgr_articole
********* Inceput: viz_catalog_articole
PROCEDURE viz_catalog_articole
PARAMETERS tlMax,tlCuBifa,tcfiltru_init,tlCaut,tcTitlu,tlHide
Local lcFiltru_init, lcNrColoane_check, lcSchema, lcTitlu, lcWidth_coloane, lcfiltru, lcnume_coloane
Local lcorder, lcselect, lctitlu_coloane, llCaut, llCuBifa, llHide, llMax, lnPornire, lnparam
Local loColoaneCatalogArticole
lnparam = pcount()
llMax = IIF(lnparam >= 1 and TYPE('tlMax')='L',tlMax,.t.)
llCuBifa = IIF(lnparam >=2 and TYPE('tlCuBifa')='L', tlCuBifa,.f.)
lcFiltru_init = IIF(lnparam >=3 and TYPE('tcFiltru_init')='C', tcFiltru_init,[1=1])
llCaut = IIF(lnparam >=4 and TYPE('tlCaut')='L', tlCaut,.f.)
lcTitlu = IIF(lnparam >= 5 and TYPE('tcTitlu')='C',tcTitlu,[CATALOG DE MATERIALE SI MARFURI])
llHide = IIF(lnparam >=6 and TYPE('tlHide')='L', tlHide,.f.)
PRIVATE pnpretvtva
STORE 0 TO pnpretvtva
IF (llCuBifa)
lcselect = ['select 0 as bifa,0 as cant,'+]
lcNrColoane_check = [2]
lcSchema = ['bifa n(1),cant n(7,3),'+]
lcnume_coloane = [bifa;]
lctitlu_coloane =[Selectat,]
ELSE
lcselect = ['select ' +]
lcSchema= []
lcnume_coloane = []
lctitlu_coloane =[]
lcNrColoane_check = [11,12,15,21] && IN_STOC, IN_CRM, INACTIV, LISTARE_CODBARE
ENDIF
lcselect = lcselect + ['inactiv, id_articol, codmat, denumire, um, um2, um_iso, cod_um_iso, id_subgrupa, subgrupa,' +] +;
['id_grupa, grupa, cant_bax, cont, acont, dnf, in_crm, in_stoc, codbare, codmatf, conditii_pastrare,' + ] + ;
['id_part,partener,indicativ,taxa_reconditionare,' + ] + ;
['id_articol_general, articol_general, listare_codbare, tip, timpn, codnc8, greutate, id_tara_origine, tara_origine, codcpv from vnom_articole_toate where 1=2']
lcschema = lcschema + ['inactiv n(1),id_articol n(20),codmat c(50),denumire c(100),um c(6),um2 c(6),um_iso c(250),cod_um_iso c(6),id_subgrupa n(5),' +] +;
['subgrupa c(100), id_grupa n(5), grupa c(100),' +] +;
['cant_bax n(9,4),cont c(4),acont c(4), dnf n(5), in_crm N(1), in_stoc N(1), codbare C(50), codmatf c(50),' + ] + ;
['conditii_pastrare M,id_part n(10), partener v(70),indicativ v(10),taxa_reconditionare N(18,4),' + ] + ;
['id_articol_general n(20),articol_general c(100), listare_codbare n(1), tip n(1), timpn n(10,3), codnc8 C(20), greutate N(12,4), id_tara_origine I, tara_origine C(100), codcpv C(20)']
lcorder = [denumire]
lcnume_coloane = lcnume_coloane + [codmat;denumire;um;um_iso;cod_um_iso;grupa;subgrupa;cant_bax;um2;cont;acont;in_stoc;in_crm;codbare;dnf;inactiv;codmatf;conditii_pastrare;partener;taxa_reconditionare;articol_general;listare_codbare;tip;timpn;codnc8;greutate;tara_origine;codcpv]
lctitlu_coloane = lctitlu_coloane + [Cod material,Denumire,UM,UM ISO,Cod UM ISO,Grupa,Subgrupa,] +;
[Cant/impachetare,UM2,Cont,Analitic,Gestionabil,Catalog,Cod bare,DNF,Inactiv,Cod Material Furnizor,Conditii Pastrare,Furnizor principal,Taxa reconditionare,Articol general, Listare CodBare,Tip,Timp Normat,Cod NC8, Greutate, Tara origine, Cod CPV]
lcfiltru = [1=2]
*!* 18.04.2012
lcWidth_coloane = ""
lnPornire = 1
loColoaneCatalogArticole = CITESTE_SELECTII_OPTIUNI_UTILIZATOR("CATALOG_ARTICOLE", lcnume_coloane)
lcnume_coloane = IIF(!EMPTY(NVL(loColoaneCatalogArticole.nume_col,'')), loColoaneCatalogArticole.nume_col, m.lcnume_coloane)
lctitlu_coloane = IIF(!EMPTY(NVL(loColoaneCatalogArticole.titlu_col,'')), loColoaneCatalogArticole.titlu_col, m.lctitlu_coloane)
lcWidth_coloane = IIF(!EMPTY(NVL(loColoaneCatalogArticole.width_col,'')), loColoaneCatalogArticole.width_col, m.lcWidth_coloane)
lcOrder = IIF(!EMPTY(NVL(loColoaneCatalogArticole.ordine,'')), loColoaneCatalogArticole.ordine, m.lcorder)
lnPornire = IIF(!EMPTY(NVL(loColoaneCatalogArticole.pornire,'')), loColoaneCatalogArticole.pornire, m.lnPornire)
*!* 18.04.2012 ^
PRIVATE ofrm_cat
ofrm_cat = CREATEOBJECT('frm_catalog_articole')
ofrm_cat.Lb_titlu_alb_b121.Caption = lcTitlu
ofrm_cat.lCaut = llCaut
ofrm_cat.lCuBifa = llCuBifa
ofrm_cat.lHide = llHide
IF !llMax
ofrm_cat.windowstate = 0
ofrm_cat.height = 350
ofrm_cat.width = 800
ofrm_cat.resize
ofrm_cat.autocenter = .t.
ENDIF
WITH ofrm_cat.ct_grid_search1
.cSelect = lcSelect
.cSchema = lcSchema
.cFiltruOriginal = lcFiltru_init
.cFiltru = lcFiltru
.cTitlu = ''
.corder = lcorder
.cnume_coloane = lcnume_coloane
.ctitlu_coloane = lctitlu_coloane
.cnumecursor = [crsnom_articole]
.cNrColoane_check = lcNrColoane_check
*!* 18.04.2012
.cWidth_coloane = Alltrim(lcWidth_coloane)
.nPornire = lnPornire
*!* 18.04.2012 ^
ENDWITH
ofrm_cat.Show(1)
RETURN ofrm_cat
*!* USE IN (lccursor1)
*!* USE IN (lccursor2)
ENDPROC
********* Sfarsit: viz_catalog_articole
********* Inceput: config_codmat
Procedure config_codmat
ofrm_configcodmat = CreateObject([frm_config_codmat])
ofrm_configcodmat.show(1)
EndProc
********* Sfarsit: config_codmat
********* Inceput: config_codbare
Procedure config_codbare
ofrm_configcodbare = CreateObject([frm_config_codbare])
ofrm_configcodbare.show(1)
EndProc
********* Sfarsit: config_codbare

View File

@@ -0,0 +1,633 @@
Procedure citeste_atasament_vanzari
Lparameters tnIdAtVanz,tcTip,tnNrAct
If !Empty(tnIdAtVanz)
Private poDocument
Store "" To poDocument
If Used('crsat')
Use In crsat
Endif
Local loTherm
loTherm = Newobject("_thermometer","_therm","","Citire document din baza de date...")
loTherm.AlwaysOnTop = .T.
loTherm.Show()
lcSelect = [select document from ] + gcS + [.atasamente_vanzari where ]
lcFiltru = [id_at_vanz=]+Alltrim(Str(tnIdAtVanz))
lcSchema = [document W]
lcOrder = []
llAfisare = .F.
GENCURSOR('poDocument','crsat',lcSelect,lcFiltru,lcSchema,lcOrder,llAfisare)
loTherm.Update(40, "Citire document din baza de date...")
poDocument.ca_baza1.afisare()
loTherm.Update(55, "Citire document din baza de date...")
lcFisier = gcTempPath + Alltrim(Str(tnNrAct,14,0)) + [_] + Alltrim(tcTip) + [.pdf]
loTherm.Update(65, "Testare creare fisier...")
If File(lcFisier)
Try
Delete File (lcFisier)
Catch To oException
lcFisier = Strtran(lcFisier,[.pdf],Ttoc(Datetime(),1)+[.pdf])
Endtry
Endif
Select crsat
loTherm.Update(85, "Creare fisier...")
Strtofile(Document,lcFisier)
loTherm.Update(95, "Deschidere fisier...")
open_default_app(lcFisier)
loTherm.Complete()
Use In crsat
Release poDocument,loTherm
Endif
Endproc && citeste_atasament_vanzari
***-----------------------------------------------------------------------------------------------------------------------------
Procedure arata_meniu_at_vanz
Lparameters tnCod,tcSerie,tnNrFactura,tcCampValoare
&& daca este completat si tcCampValoare, atunci apare in meniu si optiunea "Copiaza"
&& tcCampValoare trebuie sa fie de forma "cursor.coloana"
Local lnCod,lnNrAct,lcSerie
lnCod = tnCod
lnNrAct = tnNrFactura
lcSerie = Alltrim(Nvl(tcSerie,[]))
If Used('crsmeniu')
Use In crsmeniu
Endif
lcSql = [select a.id_at_vanz,a.tip,a.tip_doc from ] + gcS + [.vatasamente_vanzari a where a.cod = ] + Alltrim(Str(lnCod)) + [ order by a.tip]
lnSucces = goExecutor.oExecute(lcSql,[crsmeniu])
If lnSucces < 0
amessagebox(goExecutor.cEroare,16,"Eroare")
Else
Do Case
Case !Empty(tcCampValoare)
lcMeniu = [;\<Copiaza]
If Reccount('crsmeniu') > 0
lcMeniu = lcMeniu + [;\-]
Select crsmeniu
Scan
lcMeniu = lcMeniu + [;] + Alltrim(tip_doc)
Endscan
Endif
x = xmenu(Substr(lcMeniu,2))
Do Case
Case x = 1
_Cliptext = Transform(Evaluate(tcCampValoare))
Case Between(x,3,2+Reccount('crsmeniu'))
Select crsmeniu
Go (x - 2)
citeste_atasament_vanzari(crsmeniu.id_at_vanz,crsmeniu.tip_doc,lnNrAct)
Endcase
Case Reccount('crsmeniu') = 1
citeste_atasament_vanzari(crsmeniu.id_at_vanz,crsmeniu.tip_doc,lnNrAct)
Case Reccount('crsmeniu')>0
lcMeniu = []
Select crsmeniu
Scan
lcMeniu = lcMeniu + [;] + Alltrim(tip_doc)
Endscan
x = xmenu(Substr(lcMeniu,2))
Select crsmeniu
Go x
citeste_atasament_vanzari(crsmeniu.id_at_vanz,crsmeniu.tip_doc,lnNrAct)
Otherwise
amessagebox("Nu exista documente salvate in baza de date pentru factura "+lcSerie+" "+Alltrim(Str(lnNrAct,14,0)) + " !",48,"Atentie")
Endcase
Use In crsmeniu
Endif
Endproc && arata_meniu_at_vanz
***-----------------------------------------------------------------------------------------------------------------------------
Procedure make_crsAtasamente
Parameters tlToate
Private poLink
Store '' To poLink
Local lcSchema, lcSelect, lcOrder, lcFiltru, lcFiltruOriginal, llAfiseaza, lcgroup, lcFiltruOriginal
lcSchema = [id_referinta N(5), id_atas N(5), descriere c(50), nume_fisier c(200), fisier w, dataora t, utilizator c(100) ]
lcSelect = [select ar.id_referinta, ar.id_atas, ar.descriere, ar.nume_fisier, '' as fisier, dataora, utilizator ]+;
[ from VATAS_REFERINTE ar ]
lcOrder = [ar.nume_fisier, ar.descriere]
lcgroup = []
lcFiltru = []
*lcFiltruOriginal = [l.sters=0 and l.nume_fisier is not null and l.id_reg =]+Alltrim(Str(goRegistratura.id_reg))
Do Case
Case Upper(Alltrim(gcNumeProgram)) = "ROAREGISTRATURA"
lcFiltruOriginal = [ ar.nume_fisier is not null and ar.id_program = 70 and ar.id_entitate=]+Alltrim(Str(goRegistratura.id_reg))
Case Upper(Alltrim(gcNumeProgram)) = "ROACONTRACTE"
lcFiltruOriginal = [ ar.nume_fisier is not null and ar.id_program = 21 and ar.id_entitate=]+Alltrim(Str(goContract.id_ctr))
Case Upper(Alltrim(gcNumeProgram)) = "ROALUCRARI"
lcFiltruOriginal = [ ar.nume_fisier is not null and ar.id_program = 13 and ar.id_entitate=]+Alltrim(Str(crsProiecte.id_proiect))
Endcase
llModParam = .T.
llAfiseaza = .F.
GENCURSOR('poLink','crsAtasamenteI', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poLink.ca_baza1.afisare()
Select * From crsAtasamenteI With (Buffering = .T.);
into Cursor crsAtasamente Readwrite
If Used('crsAtasamenteI')
Use In crsAtasamenteI
Endif
Endproc && make_crsAtasamente
***-----------------------------------------------------------------------------------------------------------------------------
PROCEDURE inchide_crsAtasamente
IF USED('crsAtasamente')
USE IN crsAtasamente
ENDIF
ENDPROC && inchide_crsAtasamente
***-----------------------------------------------------------------------------------------------------------------------------
Procedure upload
Parameters tcTabel
Private pnId_entitate, pcLink, pcDescriere, pcFis_name, pcFisier, pnId_atas &&,pntip_entitate modificare 30.05.2011
Store 0 To pnTip_entitate, pnId_atas &&,pnTip_entitate modificare 30.05.2011
Store "" To pcDescriere, pcFis_name, pcFisier, pcLink
* pcLink - private - folosit in frm_atas_nou
Local llReturn,lcSql,lnSucces
llReturn = .T.
Local lcTabelLinkuri
Store '' To lcTabelLinkuri
If !Empty(tcTabel)
lcTabelLinkuri = Alltrim(tcTabel) && Thisform.grid_linkuri.RecordSource
Select (lcTabelLinkuri)
Scatter Name poLink Blank Memo
Else
Create Cursor crsAtasTemp (id_atas N(5), descriere c(50), nume_fisier c(200), fisier w)
Select crsAtasTemp
Scatter Name poLink Blank Memo
Use In crsAtasTemp
Endif
If Upper(Alltrim(gcNumeProgram)) = "ROAREGISTRATURA"
AddProperty(poLink,'id_proiect',goRegistratura.id_proiect)
AddProperty(poLink,'proiect',Alltrim(goRegistratura.proiect))
Else
AddProperty(poLink,'id_proiect',0)
AddProperty(poLink,'proiect','')
Endif
AddProperty(poLink,'id_ctr',0)
AddProperty(poLink,'contract','')
lodn = Createobject("frm_atas_nou")
lodn.Show(1)
If gnButon = 2
Return
Endif
If Upper(Alltrim(gcNumeProgram)) = "ROAREGISTRATURA"
pnId_entitate = goRegistratura.id_reg
*!* pnTip_entitate = 1 modificare 30.05.2011
Endif
If Upper(Alltrim(gcNumeProgram)) = "ROACONTRACTE"
pnId_entitate = goContract.id_ctr
*!* pnTip_entitate = 2 modificare 30.05.2011
Endif
If Upper(Alltrim(gcNumeProgram)) = "ROALUCRARI"
pnId_entitate = Alltrim(Str(crsProiecte.id_proiect))
*!* pnTip_entitate = 3 modificare 30.05.2011
Endif
pcDescriere = Upper(Alltrim(poLink.descriere))
pcFis_name = Upper(Alltrim(poLink.nume_fisier))
If Empty(pcLink)
Return
Endif
pcFisier = Filetostr(pcLink)
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")
Else
lcSql = [insert into atas_atasamente(fisier, nume_fisier, descriere, id_util) ]+;
[values (?pcFisier, ?pcFis_name, ?pcDescriere, ?gnIdUtil) ] + ;
[ returning id_atas into ?@pnId_atas]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,0+16,'Eroare')
Else
If Upper(Alltrim(gcNumeProgram)) = "ROAREGISTRATURA"
lcSql = [update registratura set id_proiect = ?polink.id_proiect where id_reg = ?pnId_entitate]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,0+16,'Eroare')
Else
lcSql = [insert into atas_referinte(id_atas, id_program, id_entitate, id_util) ]+;
[values (?pnId_atas, ?gnIdProgram, ?pnId_entitate, ?gnIdUtil) ] && registratura modificare 30.05.2011 : am inlocuit pnTip_Entitate cu gnIdProgram
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,0+16,'Eroare')
Else
If !Empty(Nvl(poLink.id_ctr,0)) And poLink.id_ctr<> -1
lcSql = [insert into atas_referinte(id_atas, id_program, id_entitate, id_util) ]+;
[values (?pnId_atas, ?gnIdProgram, ?polink.id_ctr, ?gnIdUtil) ] && contracte modificare 30.05.2011 : am inlocuit pnTip_Entitate cu gnIdProgram
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,0+16,'Eroare')
Else
If !Empty(Nvl(poLink.id_proiect,0)) And poLink.id_proiect <> -1
lcSql = [insert into atas_referinte(id_atas, id_program, id_entitate, id_util) ]+;
[values (?pnId_atas, ?gnIdProgram, ?polink.id_proiect, ?gnIdUtil) ] && lucrari modificare 30.05.2011 : am inlocuit pnTip_Entitate cu gnIdProgram
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,0+16,'Eroare')
Endif
Endif
Endif
Endif
Endif
Endif
Else && RoaContracte, RoaLucrari
lcSql = [insert into atas_referinte(id_atas, id_program, id_entitate, id_util) ]+;
[values (?pnId_atas, ?gnIdProgram, ?pnId_entitate, ?gnIdUtil) ] && modificare 30.05.2011 : am inlocuit pnTip_Entitate cu gnIdProgram
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,0+16,'Eroare')
Endif
Endif
Endif
Endif
If lnSucces < 0
lcSql = "ROLLBACK"
Else
lcSql = "COMMIT"
Endif
lnSucces2 = goExecutor.oExecute(lcSql)
If lnSucces2 < 0
amessagebox(lcSql + Chr(13) + goExecutor.cEroare,0+16,"Eroare")
Endif
lnSucces2 = SQLSetprop(gnhandle,"Transactions",1)
If lnSucces2 < 0
amessagebox('Programul nu a reusit sa treaca pe tranzactie automata. Iesiti din program si intrati din nou!',0+48,'Atentie!')
Else
If lcSql = "COMMIT"
If !Empty(lcTabelLinkuri)
Select (lcTabelLinkuri)
Append Blank
Gather Name poLink Memo
Replace fisier With pcFisier, id_atas With pnId_atas, nume_fisier With pcFis_name, descriere With pcDescriere, dataora With Datetime(), utilizator With gcUserNameApp
Endif
Do Case
Case Upper(Alltrim(gcNumeProgram)) = "ROAREGISTRATURA"
goRegistratura.proiect = poLink.proiect
goRegistratura.id_proiect = poLink.id_proiect
Replace are_link With 1 In cRegistratura
Replace id_proiect With poLink.id_proiect In cRegistratura
Replace proiect With poLink.proiect In cRegistratura
Case Upper(Alltrim(gcNumeProgram)) = "ROACONTRACTE"
Replace are_link With 1 In cContracte
Endcase
Endif
Endif
Endproc && upload
***-----------------------------------------------------------------------------------------------------------------------------
Procedure import_atasamente
Parameters tnTipEntitate
&& completare campuri nume_fis si link_bd din link - la versiunea 2.0.7 - se salveaza atasamentele in bd
&& ver. 2.0.12 - preluare din ctr_linkuri (reg_linkuri) in atas_atasamente, atas_referinte
&& tnTipEntitate/gnIdProgram = 70-RoaRegistratura, 21-RoaContracte, 13-RoaLucrari
Private poLink, pcFisier, pcNume_fis, pcDescriere, pnId_entitate, pnId_atas, pnId_link, pnTipEntitate
Store '' To poLink
Store 0 To pnId_entitate, pnId_atas, pnId_link
*!* modificare 31.05.2011
*!* If Empty(tnTipEntitate)
*!* Return
*!* Endif
*!* pnTipEntitate= tnTipEntitate
pnTipEntitate = IIF(EMPTY(tnTipEntitate),gnIdProgram,tnTipEntitate)
*!* modificare 31.05.2011 ^
Local lcSchema, lcSelect, lcOrder, lcFiltru, lcFiltruOriginal, llAfiseaza, lcgroup, lcFiltruOriginal
lcSchema = [id_link N(5), id_entitate n(5), descriere c(50), link c(200) ]
Do Case
Case Upper(Alltrim(gcNumeProgram)) = "ROACONTRACTE"
lcSelect = [select id_link, id_ctr as id_entitate, DENUMIRE AS descriere, link ]+;
[from ctr_linkuri]
Case Upper(Alltrim(gcNumeProgram)) = "ROAREGISTRATURA"
lcSelect = [select id_link, id_reg as id_entitate, DENUMIRE AS descriere, link ]+;
[from reg_linkuri]
Case Upper(Alltrim(gcNumeProgram)) = "ROALUCRARI"
lcSelect = [select id_link, id_proiect as id_entitate, DENUMIRE AS descriere, link ]+;
[from con_linkuri]
Endcase
lcOrder = []
lcgroup = []
lcFiltru = [STERS=0]
lcFiltruOriginal = [link is not null and id_link not in (select id_link from atas_atasamente where id_tip_ent_prel = ?pnTipEntitate)]
llModParam = .T.
llAfiseaza = .F.
GENCURSOR('poLink','cCtrLink2', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poLink.ca_baza1.afisare()
Private pnId_link, pcNume_fis, pcLink_bd
Local lcMesaj
lcMesaj = ''
Select cCtrLink2
Calculate Cnt() To lnFisiere
lnIndex = 0
Scan
pnId_link = id_link
pnId_entitate = id_entitate
lcLink = Alltrim(Link)
pcNume_fis = Justfname(lcLink)
pcDescriere = Upper(Alltrim(descriere))
lnIndex = lnIndex + 1
Wait Window Alltrim(Str(lnIndex)) + '/' + Alltrim(Str(lnFisiere)) + " " + pcNume_fis Nowait
If File(lcLink)
pcFisier = Filetostr(lcLink)
*lcSql = [update ctr_linkuri set nume_fis=?pcNume_fis, link_bd = ?pcLink_bd where id_link=?pnId_link]
lcSql = [insert into atas_atasamente (fisier, nume_fisier, id_util, descriere, id_link, id_tip_ent_prel) ]+;
[values (?pcFisier, ?pcNume_fis, ?gnIdUtil, ?pcDescriere, ?pnId_link, ?pnTipEntitate) ] +;
[returning id_atas into ?@pnId_atas]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
If amessagebox(goExecutor.cEroare + Chr(13) + Chr(10) + 'Doriti sa continuati?',4+48,'Eroare') # 6
Exit
Endif
Else
lcSql = [insert into atas_referinte (id_atas, id_program, id_entitate, id_util) ]+;
[values (?pnId_atas, ?pnTipEntitate, ?pnId_entitate, ?gnIdUtil)]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
If amessagebox(goExecutor.cEroare + Chr(13) + Chr(10) + 'Doriti sa continuati?',4+48,'Eroare') # 6
Exit
Endif
Endif
Endif
Else
lcMes = 'Nu exista fisierul '+lcLink+Chr(13)
lcMesaj = lcMesaj + lcMes
Endif
Select cCtrLink2
Endscan
If !Empty(lcMesaj)
amessagebox(lcMesaj)
Endif
If Used('cCtrLink2')
Use In cCtrLink2
Endif
Endproc && import_atasamente
***-----------------------------------------------------------------------------------------------------------------------------
Procedure modifica_atasament
Parameters tcTabel
Private pcDescriere, pnId_atas
Store 0 To pnId_atas
Store "" To pcDescriere
* pcLink - private - folosit in frm_atas_nou
Local llReturn,lcSql,lnSucces
llReturn = .T.
Local lcTabelLinkuri
If !Empty(tcTabel)
lcTabelLinkuri = Alltrim(tcTabel) && Thisform.grid_linkuri.RecordSource
Select (lcTabelLinkuri)
Scatter Name poLink Memo
Else
Return
Endif
If Upper(Alltrim(gcNumeProgram)) = "ROAREGISTRATURA"
AddProperty(poLink,'id_proiect',goRegistratura.id_proiect)
AddProperty(poLink,'proiect',Alltrim(goRegistratura.proiect))
Else
AddProperty(poLink,'id_proiect',0)
AddProperty(poLink,'proiect','')
Endif
AddProperty(poLink,'id_ctr',0)
AddProperty(poLink,'contract','')
lodn = Createobject("frm_atas_nou")
lodn.Command3.Enabled=.F.
lodn.Show(1)
If gnButon = 2
Return
Endif
pnId_atas = poLink.id_atas
pcDescriere = Upper(Alltrim(poLink.descriere))
lcSql = [update atas_atasamente set descriere = ?pcDescriere ]+;
[where id_atas = ?pnId_atas]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,0+16,'Eroare')
Endif
If !Empty(lcTabelLinkuri)
Select (lcTabelLinkuri)
Gather Name poLink Memo
Replace descriere With pcDescriere
Endif
Endproc && modifica_atasament
***-----------------------------------------------------------------------------------------------------------------------------
Procedure salveaza_atasamente
Parameters tcTabel
Local lcTabel
lcTabel = tcTabel
lcSql = [select ar.id_referinta ]+;
[ from VATAS_REFERINTE ar ]+;
[ where ar.nume_fisier is not null and ar.id_program = ?gnIdProgram and ar.id_entitate=]+Alltrim(Str(goContract.id_ctr))
lcCursor = 'crsAtasamente_server'
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare")
Return lnSucces
Endif
* daca exista id_referinta in plus in cursorul de pe local, adaug pe server
Private pnId_entitate, pcLink, pcDescriere, pcFis_name, pcFisier, pnId_atas
Store 0 To pnId_entitate, pnId_atas
Store "" To pcDescriere, pcFis_name, pcFisier, pcLink
pnId_entitate = goContract.id_ctr
Select * From (lcTabel) ;
Where (Empty(id_referinta) Or Isnull(id_referinta)) ;
INTO Cursor cAtasamente_nou
Select cAtasamente_nou
Scan
pcDescriere = Upper(Alltrim(descriere))
pcFis_name = Upper(Alltrim(nume_fisier))
*!* If Empty(pcLink)
*!* Return
*!* Endif
* pcFisier = Filetostr(pcLink)
pcFisier = fisier
lcSql = [insert into atas_atasamente(fisier, nume_fisier, descriere, id_util) ]+;
[values (?pcFisier, ?pcFis_name, ?pcDescriere, ?gnIdUtil) ] + ;
[ returning id_atas into ?@pnId_atas]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,0+16,'Eroare')
Endif
lcSql = [insert into atas_referinte(id_atas, id_program, id_entitate, id_util) ]+;
[values (?pnId_atas, ?gnIdProgram, ?pnId_entitate, ?gnIdUtil) ]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,0+16,'Eroare')
Return lnSucces
Endif
Select cAtasamente_nou
Endscan
If Used('cAtasamente_nou')
Use In cAtasamente_nou
Endif
* daca exista id_referinta pe server, care nu mai sunt pe local, sterg
*!* Select id_referinta From crsAtasamente_server ;
*!* Where id_referinta Not In (Select id_referinta From cId_ref) ;
*!* INTO Cursor cAtasamente_sters
lcDeleted = Set("Deleted")
Set Deleted Off
Select * From (lcTabel) Where Deleted() And !Empty(id_referinta);
INTO Cursor cAtasamente_sters
Select cAtasamente_sters
Scan
*pcId_atas = Alltrim(Str(id_atas))
lcId_referinta = Alltrim(Str(id_referinta))
lcSql = [update atas_referinte set sters = 1, dataoras = SYSDATE, id_utils = ] + Alltrim(Str(gnIdUtil)) + ;
[ WHERE id_referinta = ] + lcId_referinta
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare")
Return lnSucces
Endif
Select cAtasamente_sters
Endscan
If Used('cAtasamente_sters')
Use In cAtasamente_sters
Endif
Set Deleted &lcDeleted
If Used('cAtasamente_sters')
Use In cAtasamente_sters
Endif
If Used('crsAtasamente_server')
Use In crsAtasamente_server
Endif
Return lnSucces
Endproc && salveaza_atasamente
***-----------------------------------------------------------------------------------------------------------------------------
Procedure arata_linkuri
Private poLink
Store '' To poLink
Local lcMenu, lnx, lcDocument,lnNrLinkuri, lnIdAtas
Local lcSchema, lcSelect, lcOrder, lcFiltru, lcFiltruOriginal, llAfiseaza, lcgroup, lcFiltruOriginal
Store '' To lcMenu
Store 0 To lnNrLinkuri, lnIdAtas
Do make_crsAtasamente In oproceduri_atasamente.prg
lcMenu = lcMenu + "Ataseaza ...;\-;"
Select crsAtasamente
Scan
lcMenu = lcMenu + Alltrim(Nvl(descriere,''))+ ' - ' + Alltrim(Nvl(nume_fisier,'')) +';'
lnNrLinkuri = lnNrLinkuri + 1
Select crsAtasamente
Endscan
If Upper(Alltrim(gcNumeProgram)) = "ROALUCRARI" And lnNrLinkuri > 0
lcMenu = lcMenu + '\-;'+ "Vizualizare atasamente ...;"
Endif
If !Empty(lcMenu)
lcMenu = Substr(lcMenu,1,Len(lcMenu)-1)
lnx = xmenu(lcMenu)
Do Case
Case lnx = 1 && Ataseaza
Do upload In oproceduri_atasamente.prg
Case lnx = lnNrLinkuri + 4
Select crsAtasamente
Go Top
ofrmVizAtas = Createobject('frm_viz_atasamente')
ofrmVizAtas.Show(1)
Release ofrmVizAtas
Otherwise
Select crsAtasamente
Locate For Recno() = lnx - 2
If Found()
lnIdAtas = id_atas
lcNume_fisier = Alltrim(nume_fisier)
lcSchema = [fisier w ]
lcSelect = [select fisier from atas_atasamente where id_atas = ] + Alltrim(Str(lnIdAtas))
lcOrder = []
lcgroup = []
lcFiltru = []
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
GENCURSOR('poLink','cRegFisierTemp', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poLink.ca_baza1.afisare()
If Used('cRegFisierTemp')
lcFisier = fisier
Use In (Select('cRegFisierTemp'))
lcFisSalvat = Addbs(gcTempPath)+lcNume_fisier
Strtofile(lcFisier, lcFisSalvat)
open_default_app(lcFisSalvat)
Endif
Endif
Endcase
If Used('crsAtasamente')
Use In crsAtasamente
Endif
Endif
Endproc && arata_linkuri
***-----------------------------------------------------------------------------------------------------------------------------

View File

@@ -0,0 +1,103 @@
*********************************************************************************************************
Procedure imprimare_bon_fiscal
Lparameters tcSir,tdDataOra,tnNrBon
Private pcCale,pcExec,pcFisierText
Store [] To pcCaleExec,pcExec,pcFisierText
Local lcSir
lcSir=tcSir
gaseste_fisier_ini()
If !Empty(pcCaleExec)
Set Safety Off
Strtofile(lcSir,pcCaleExec+pcFisierText,0)
Cd (pcCaleExec)
lcDirectorZi=Iif(Type('tdDataOra')='D',Dtos(tdDataOra),Dtos(Ttod(tdDataOra)))
ltDataOra=Iif(Type('tdDataOra')='T',tdDataOra,Datetime())
lcNumeFisierBon=Alltrim(Str(tnNrBon))+[_]+Alltrim(Str(Hour(ltDataOra)))+[_]+;
ALLTRIM(Str(Minute(ltDataOra)))+[_]+Alltrim(Str(Sec(ltDataOra)))
lnRaspuns=6
lnNrIncercare=0
Do While lnRaspuns=6
lcComanda=[RUN ]+pcCaleExec+pcExec
&lcComanda
If File(pcCaleExec+[ERR])
lcString=Filetostr(pcCaleExec+[ERR])
lcStringOk=Replicate([0]+Chr(13)+Chr(10),Occurs(Chr(13)+Chr(10),lcString))
If lcString=lcStringOk
lcDirector=[Bonuri ok]
lnRaspuns=7
Else
lcDirector=[Bonuri err]
lnRaspuns=aMessagebox("Eroare la listarea bonului! Doriti sa reincercati?",;
4+16+256,"Eroare")
lnNrIncercare=lnNrIncercare+1
Endif
If !Directory(pcCaleExec+lcDirector)
Md (lcDirector)
Endif
If !Directory(pcCaleExec+lcDirector+[\]+lcDirectorZi)
Md (pcCaleExec+lcDirector+[\]+lcDirectorZi)
Endif
lcNumeFisierBon=lcNumeFisierBon+;
IIF(lnNrIncercare>0,[_I]+Alltrim(Str(lnNrIncercare)),[])
Copy File (pcCaleExec+pcFisierText) To ;
(pcCaleExec+lcDirector+[\]+lcDirectorZi+[\]+lcNumeFisierBon+[.txt])
Copy File (pcCaleExec+[ERR]) To ;
(pcCaleExec+lcDirector+[\]+lcDirectorZi+[\]+lcNumeFisierBon+[.err])
Delete File (pcCaleExec+[ERR])
Else
lcDirectorErr=[Bonuri err]
If !Directory(pcCaleExec+lcDirectorErr)
Md (lcDirectorErr)
Endif
If !Directory(pcCaleExec+lcDirectorErr+[\]+lcDirectorZi)
Md (pcCaleExec+lcDirectorErr+[\]+lcDirectorZi)
Endif
Copy File (pcCaleExec+pcFisierText) To ;
(pcCaleExec+lcDirectorErr+[\]+lcDirectorZi+[\]+lcNumeFisierBon+[.txt])
Endif
Enddo
Cd (gcAppPath)
Endif
Endproc && imprimare_bon_fiscal
*********************************************************************************************************
Procedure gaseste_fisier_ini
Local lnFileHandle,lcFisierConfigurare,lnRaspuns
lnRaspuns=6
lcFisierConfigurare=gcAppPath+[\INITIALIZARI\]+Alltrim(gcNumeProgram)+[_bon.xml]
Do While lnRaspuns=6
If File(lcFisierConfigurare)
lnFileHandle=Fopen(lcFisierConfigurare,12)
lnSize = Fseek(lnFileHandle,0,2)
If lnSize>0
Fseek(lnFileHandle, 0, 0)
lcFisier = Fread(lnFileHandle,lnSize)
lcString = Strextract(Upper(lcFisier),;
[<]+Upper(Alltrim(gcS))+[>],[</]+Upper(Alltrim(gcS))+[>])
If !Empty(lcString)
lcElement=[LAUNCH_PATH]
pcCaleExec=Strextract(lcString,[<]+lcElement+[>],[</]+lcElement+[>])
lcElement=[LAUNCH_FILE]
pcExec=Strextract(lcString,[<]+lcElement+[>],[</]+lcElement+[>])
lcElement=[LAUNCH_DATA]
pcFisierText=Strextract(lcString,[<]+lcElement+[>],[</]+lcElement+[>])
Else
aMessagebox("Nu exista configurarile pentru listarea bonurilor fiscale pe aceasta firma!",0+48,"Atentie")
pcCaleExec=[]
Endif
Else
aMessagebox("Fisierul de configurari pentru bonurilor fiscale este gol!",0+48,"Atentie")
pcCaleExec=[]
Endif
Fclose(lnFileHandle)
Else
aMessagebox("Nu exista fisierul de configurare pentru listarea bonurilor fiscale!",0+48,"Atentie")
pcCaleExec=[]
Endif
If Empty(pcCaleExec)
lnRaspuns=aMessagebox("Doriti sa mai incercati listarea bonului?",4+32+256,"Confirmare")
Else
lnRaspuns=7
Endif
Enddo
Endproc && gaseste_fisier_ini
*********************************************************************************************************

View File

@@ -0,0 +1,116 @@
*********************************************************************************************************
Procedure imprimare_bon_mp500
Lparameters tcSir,tdDataOra,tnNrBon
Private pcCale,pcExec,pcFisierText
Store [] To pcCaleExec,pcExec,pcFisierText
Local lcSir,lcFisierRez,laCount,i,llOk
lcSir=tcSir
lcFisierRez = []
laCount = 0
i=0
lcOk = .t.
gaseste_fisier_ini_mp500()
If !Empty(pcCaleExec)
Set Safety Off
Strtofile(lcSir,pcCaleExec+pcFisierText,0)
Cd (pcCaleExec)
lcDirectorZi=Iif(Type('tdDataOra')='D',Dtos(tdDataOra),Dtos(Ttod(tdDataOra)))
ltDataOra=Iif(Type('tdDataOra')='T',tdDataOra,Datetime())
lcNumeFisierBon=Alltrim(Str(tnNrBon))+[_]+Alltrim(Str(Hour(ltDataOra)))+[_]+;
ALLTRIM(Str(Minute(ltDataOra)))+[_]+Alltrim(Str(Sec(ltDataOra)))
lnRaspuns=6
lnNrIncercare=0
Do While lnRaspuns=6
lcComanda=[RUN ]+pcCaleExec+pcExec + [ ] + pcCaleExec + pcFisierText
&lcComanda
lcFisierRez = pcCaleExec+[answer.txt]
laCount = ALINES(laFisierRez,FILETOSTR(lcFisierRez))
IF laCount#0
FOR i=1 TO laCount
llOk = IIF(OCCURS('Er',STREXTRACT(laFisierRez[i],';',';',1))>0,.f.,.t.)
IF llOk = .f.
EXIT
ENDIF
ENDFOR
ELSE
llOk = .f.
ENDIF
RELEASE laFisierRez
IF llOk = .f.
lcDirector=[Bonuri err]
lnRaspuns=aMessagebox("Eroare la listarea bonului! Doriti sa reincercati?",;
4+16+256,"Eroare")
lnNrIncercare=lnNrIncercare+1
ELSE
lcDirector=[Bonuri ok]
lnRaspuns=7
ENDIF
If !Directory(pcCaleExec+lcDirector)
Md (lcDirector)
Endif
If !Directory(pcCaleExec+lcDirector+[\]+lcDirectorZi)
Md (pcCaleExec+lcDirector+[\]+lcDirectorZi)
Endif
lcNumeFisierBon=lcNumeFisierBon+;
IIF(lnNrIncercare>0,[_I]+Alltrim(Str(lnNrIncercare)),[])
Copy File (lcFisierRez) To ;
(pcCaleExec+[\]+lcDirector+[\]+lcDirectorZi+[\]+lcNumeFisierBon+[.txt])
Enddo
Cd (gcAppPath)
Endif
Endproc && imprimare_bon_fiscal
*********************************************************************************************************
Procedure gaseste_fisier_ini_mp500
Local lnFileHandle,lcFisierConfigurare,lnRaspuns
lnRaspuns=6
lcFisierConfigurare=gcAppPath+[\INITIALIZARI\]+Alltrim(gcNumeProgram)+[_mp500.xml]
Do While lnRaspuns=6
If File(lcFisierConfigurare)
lnFileHandle=Fopen(lcFisierConfigurare,12)
lnSize = Fseek(lnFileHandle,0,2)
If lnSize>0
Fseek(lnFileHandle, 0, 0)
lcFisier = Fread(lnFileHandle,lnSize)
lcString = Strextract(Upper(lcFisier),;
[<]+Upper(Alltrim(gcS))+[>],[</]+Upper(Alltrim(gcS))+[>])
If !Empty(lcString)
lcElement=[LAUNCH_PATH]
pcCaleExec=Strextract(lcString,[<]+lcElement+[>],[</]+lcElement+[>])
lcElement=[LAUNCH_FILE]
pcExec=Strextract(lcString,[<]+lcElement+[>],[</]+lcElement+[>])
lcElement=[LAUNCH_DATA]
pcFisierText=Strextract(lcString,[<]+lcElement+[>],[</]+lcElement+[>])
Else
aMessagebox("Nu exista configurarile pentru listarea bonurilor fiscale pe aceasta firma!",0+48,"Atentie")
pcCaleExec=[]
Endif
Else
aMessagebox("Fisierul de configurari pentru bonurilor fiscale este gol!",0+48,"Atentie")
pcCaleExec=[]
Endif
Fclose(lnFileHandle)
Else
aMessagebox("Nu exista fisierul de configurare pentru listarea bonurilor fiscale!",0+48,"Atentie")
pcCaleExec=[]
Endif
If Empty(pcCaleExec)
lnRaspuns=aMessagebox("Doriti sa mai incercati listarea bonului?",4+32+256,"Confirmare")
Else
lnRaspuns=7
Endif
Enddo
Endproc && gaseste_fisier_ini
*********************************************************************************************************

View File

@@ -0,0 +1,186 @@
Procedure casademarcat
Local lnLungime,lnButon
lnLungime=14
lnRaspuns=6
Dimension taValori[lnLungime,3]
*!* modificare migrare v 1.0 > v 2.0
*!* Do While lnRaspuns = 6
*!* glListareBonFiscal=.T.
*!* modificare migrare v 1.0 > v 2.0 ^
taValori[1,1]="poAct.id_fdoc"
taValori[1,2]=Alltrim(Str(gnid_fdoc_bonfiscal))
taValori[1,3]= !Empty(gnid_fdoc_bonfiscal)
taValori[2,1]="poAct.fdoc"
*!* modificare migrare v 1.0 > v 2.0
*!* taValori[2,2]=IIF(!EMPTY(gnid_fdoc_bonfiscal),[BON FISCAL],[])
taValori[2,2]=Iif(!Empty(gnid_fdoc_bonfiscal),citeste_setari_casademarcat(1,gnid_fdoc_bonfiscal),[])
*!* modificare migrare v 1.0 > v 2.0
taValori[2,3]= !Empty(gnid_fdoc_bonfiscal)
taValori[3,1]="poAct.id_gestout"
taValori[3,2]=Alltrim(Str(gnid_gestiune_bufet))
taValori[3,3]= !Empty(gnid_gestiune_bufet)
taValori[4,1]="poAct.gestout"
*!* modificare migrare v 1.0 > v 2.0
*!* taValori[4,2]=IIF(!EMPTY(gnid_gestiune_bufet),[BUFET],[])
taValori[4,2]=Iif(!Empty(gnid_gestiune_bufet),citeste_setari_casademarcat(2,gnid_gestiune_bufet),[])
*!* modificare migrare v 1.0 > v 2.0
taValori[4,3]=!Empty(gnid_gestiune_bufet)
*!* lnNumarBon = aloca_numar_bf() && in oserii_numere.prg
*!* IF lnNumarBon = -1
*!* Return
*!* Endif
*!* taValori[5,1]="poAct.nract"
*!* taValori[5,2]=Alltrim(Str(lnNumarBon))
*!* taValori[5,3]=.T.
taValori[5,1]="poAct.id_vv4111"
taValori[5,2]=Alltrim(Str(gnid_part_diversi))
taValori[5,3]=!Empty(gnid_part_diversi)
taValori[6,1]="poAct.v4111"
*!* modificare migrare v 1.0 > v 2.0
*!* taValori[6,2]= IIF(!EMPTY(gnid_part_diversi),[DIVERSI],[])
taValori[6,2]= Iif(!Empty(gnid_part_diversi),citeste_setari_casademarcat(3,gnid_part_diversi),[])
*!* modificare migrare v 1.0 > v 2.0 ^
taValori[6,3]=!Empty(gnid_part_diversi)
taValori[7,1]="poAct.id_lucrare"
taValori[7,2]=[0]
taValori[7,3]=.T.
taValori[8,1]="poAct.nrord"
taValori[8,2]=[<NU SE COMPLETEAZA>]
taValori[8,3]=.T.
taValori[9,1]="poAct.id_responsabil"
taValori[9,2]=[0]
taValori[9,3]=.T.
taValori[10,1]="poAct.nresp"
taValori[10,2]=[<NU SE COMPLETEAZA>]
taValori[10,3]=.T.
taValori[11,1]="poAct.id_sectie"
taValori[11,2]=Alltrim(Str(gnid_sectie_bufet))
taValori[11,3]=!Empty(gnid_sectie_bufet)
taValori[12,1]="poAct.sectie"
*!* modificare migrare v 1.0 > v 2.0
*!* taValori[12,2]=IIF(!EMPTY(gnid_sectie_bufet),[BUFET],[])
taValori[12,2]=Iif(!Empty(gnid_sectie_bufet),citeste_setari_casademarcat(4,gnid_sectie_bufet),[])
*!* modificare migrare v 1.0 > v 2.0 ^
taValori[12,3]=!Empty(gnid_sectie_bufet)
taValori[13,1]="poAct.id_vv53110"
taValori[13,2]=Alltrim(Str(gnid_part_bufet))
taValori[13,3]=!Empty(gnid_part_bufet)
taValori[14,1]="poAct.v53110"
*!* modificare migrare v 1.0 > v 2.0
*!* taValori[14,2]=IIF(!EMPTY(gnid_part_bufet),[BUFET],[])
taValori[14,2]=Iif(!Empty(gnid_part_bufet),citeste_setari_casademarcat(5,gnid_part_bufet),[])
*!* modificare migrare v 1.0 > v 2.0 ^
taValori[14,3]=!Empty(gnid_part_bufet)
*!* modificare migrare v 1.0 > v 2.0
Do While lnRaspuns = 6
glListareBonFiscal=.T.
*!* modificare migrare v 1.0 > v 2.0 ^
lnSucces=lans(228,.F.,.T.,@taValori)
glListareBonFiscal=.F.
lnRaspuns = amessagebox("Doriti sa continuati cu operatii de acest fel?",4+32,"Confirmare")
Enddo
Endproc
*******************************************
Procedure creare_bon_fiscal
Local lcSirBonFiscal,lnTip,lnIdCasa,lnTotalSuma,ldDataBonFiscal,lnNumarBonFiscal,lnTotalSuma
lnNumarBonFiscal=0
lnTotalSuma=0
lcSirBonFiscal=[]
&& lcSirBonFiscal (explicatii) :
&& 5 (incasare);suma achitata;0(numerar);0(moneda);0(numar card credit)
ldDataBonFiscal=get_ora()
Select actactan
Set Filter To scd='5311'
Scan
lnNumarBonFiscal=nract
lnIdCasa=id_partd
Do Case
Case Type('gnId_casa_achit')<>'U' And lnIdCasa=gnId_casa_achit && optiune din Devize
lnTip=1
*!* Case TYPE('gnId_Part_Bufet')<>'U' AND lnIdCasa=gnId_Part_Bufet && optiune din Gestiuni
*!* lnTip=2
Otherwise
lnTip=3
Endcase
lcSirBonFiscal=lcSirBonFiscal+[1;Fact.]+Alltrim(Str(perechec))+[;1;]+Alltrim(Str(lnTip))+[;1;]+Alltrim(Str(suma*100))+[;1000;0]+CRLF
lnTotalSuma=lnTotalSuma+suma
Endscan
Set Filter To
If !Empty(lcSirBonFiscal)
lcSirBonFiscal=lcSirBonFiscal+[5;]+Alltrim(Str(lnTotalSuma*100))+[;0;0;0]+CRLF+CRLF
imprimare_bon_fiscal(lcSirBonFiscal,ldDataBonFiscal,lnNumarBonFiscal)
Else
amessagebox("Bonul nu contine nici un element!",0+48,"Atentie")
Endif
Endproc
******************************************************************************************
Function citeste_setari_casademarcat
Lparameters tnTip,tnId
Local lcValoare,lcCursor,llCautare
llCautare = .T.
lcCursor = [crssetaricasa]
Do Case
Case tnTip = 1 And !Empty(Nvl(tnId,0))
lcValoare = [BON FISCAL]
lcSql = [select fel_document as valoare from nom_fdoc ] + ;
[where sters = 0 and inactiv = 0 and id_fdoc = ] + Alltrim(Str(tnId)) && gnid_fdoc_bonfiscal
Case tnTip = 2 And !Empty(Nvl(tnId,0))
lcValoare = [BUFET]
lcSql = [select nume_gestiune as valoare from nom_gestiuni ] + ;
[where sters = 0 and inactiv = 0 and id_gestiune = ] + Alltrim(Str(tnId)) && gnid_gestiune_bufet
Case tnTip = 3 And !Empty(Nvl(tnId,0))
lcValoare = [DIVERSI]
lcSql = [select denumire as valoare from nom_parteneri ] + ;
[where sters = 0 and inactiv = 0 and id_part = ] + Alltrim(Str(tnId)) && gnid_part_diversi
Case tnTip = 4 And !Empty(Nvl(tnId,0))
lcValoare = [BUFET]
lcSql = [select sectie as valoare from nom_sectii ] + ;
[where sters = 0 and inactiv = 0 and id_sectie = ] + Alltrim(Str(tnId)) && gnid_sectie_bufet
Case tnTip = 5 And !Empty(Nvl(tnId,0))
lcValoare = [BUFET]
lcSql = [select denumire as valoare from nom_parteneri ] + ;
[where sters = 0 and inactiv = 0 and id_part = ] + Alltrim(Str(tnId)) && gnid_part_bufet
Otherwise
lcValoare = []
llCautare = .F.
Endcase
If llCautare
If Used(lcCursor)
Use In (lcCursor)
Endif
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare")
Else
If Reccount(lcCursor) > 0
Select (lcCursor)
lcValoare = Alltrim(valoare)
Endif
Endif
If Used(lcCursor)
Use In (lcCursor)
Endif
Endif
Return lcValoare
Endfunc && citeste_setari_casademarcat
******************************************************************************************

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,188 @@
*!* oproceduri_comune_imob
*!* 12.07.2006
*!* marius.mutu
*!* 27.03.2013
*!* marius.mutu
*!* GET_CURSOR_INCHIDERE_AMORTIZARI
*!* DEFALCARE SUME CHELTUIELI IN DEDUCTIBILE, NEDEDUCTIBILE IN FUNCTIE DE AMORT_MAX_DEDUCTIBL
*!* 09.04.2013
*!* marius.mutu
*!* GET_CURSOR_INCHIDERE_AMORTIZARI
*!* s-au tratat imobilizarile fara cont
*!* 24.06.2020
*!* Inchiderea de amortizari se face folosind modul experimental, din view
*!* In ROACONT nu am mod experimental, asa ca implicit este .T.
*!* 23.01.2024
*!* GET_CURSOR_INCHIDERE_AMORTIZARI : defalcare pe lucrari
*** tcCursor = GET_CURSOR_AMORTIZARI (tnFiscala, tnAn, tnLuna)
*** tcCursor = GET_CURSOR_INCHIDERE_AMORTIZARI (tnTip, tnSectie, tnAn, tnLuna, tcCursor)
*----------------------------------------------------
Procedure GET_CURSOR_AMORTIZARI
Lparameters tnFiscala, tnAn, tnLuna, tnIdTipImobilizare, tnIdMf
Local lnSucces, lcSel, lcCursor, llExperimental
Local lcFiltru, llSucces
Private pdDataI, pdDataF, pcCond, pnFiscala
llExperimental = .T.
IF TYPE('goApp.nExperimental') = 'N'
llExperimental = .T. && 25.11.2021 llExperimental = (goApp.nExperimental = 1)
ENDIF
pdDataI = Date(tnAn, tnLuna, 1)
pdDataF = pdDataI
*pcCond = [id_tip_imobilizare = ] + ALLTRIM(STR(tnTip)) && merge fffff greu
pcCond = [2=2]
lcFiltru = IIF(!EMPTY(m.tnIdTipImobilizare), [id_tip_imobilizare = ] + Alltrim(Str(m.tnIdTipImobilizare)), [1=1]) + m.gcCondSucursala + IIF(!EMPTY(m.tnIdMf), [ and id_mf = ] + ALLTRIM(STR(m.tnIdMf)), []) && merge normal in mod experimental cu selectie din view imob_vsituatie_lunara
If Empty(tnFiscala)
pnFiscala = 0
Else
pnFiscala = tnFiscala
Endif
lcCursor = 'crsAmortizareTemp'
WAIT WINDOW 'Selectie amortizari ' + PADL(INT(m.tnLuna), 2, '0') + '/' + ALLTRIM(STR(INT(m.tnAn))) + ' ...' NOWAIT
If m.llExperimental
* EXPERIMENTAL SELECTIE DIN IMOB_VSITUATIE_LUNARA IN LOC DE PACK_IMOB.CALCUL_SITUATIE_LUNARA()
* Setez luna pentru view
llSucces = goExecutor.oExecuta('begin pack_imob.setlunacurenta(?pdDataI); end;')
If m.llSucces
lcSel = [SELECT * FROM ] + Iif(m.pnFiscala = 0, [imob_vsituatie_lunara], [imobf_vsituatie_lunara]) + [ WHERE ] + m.lcFiltru
llSucces = goExecutor.oExecuta(m.lcSel, m.lcCursor)
Endif
Else
lcSel = [{call pack_imob.CALCUL_SITUATIE_LUNARA(?pdDataI,?pdDataF,?pcCond,?pnFiscala,?gnIdSucursala)}]
llSucces = goExecutor.oExecuta(lcSel, lcCursor)
Endif
If !m.llSucces
lcCursor = ''
Endif
Return m.lcCursor
Endproc && GET_CURSOR_AMORTIZARI
*----------------------------------------------------
Procedure GET_CURSOR_INCHIDERE_AMORTIZARI
Lparameters tnTip, tnSectie, tnLucrare, tnAn, tnLuna, tcCursor
Local lnFiscal, lcCursor, lcSqlSectie, lnAnLuna, lnSucces
Local lcCursorPlcont, lcCursorTemp, lcSql
lnFiscal = 0 && amortizare contabila
lcCursor = ""
lcCursor = GET_CURSOR_AMORTIZARI(m.lnFiscal, m.tnAn, m.tnLuna, m.tnTip)
If Empty(lcCursor)
Return ''
Endif
&& CORESPONDENTE CONTURI INCHIDERE
&& DACA NU SUNT COMPLETATE - SE FOLOSESC CONTURI DEFAULT
*** ADAUG LINIILE PENTRU SUME DEDUCTIBILE (TIP = 1)
Create Cursor crsConturi (TIP N(1), Id N(10), id_sectie I Null, Cont c(4), acont c(4) Null, scd c(4) Null, ascd c(4) Null, scc c(4) Null, ascc c(4) Null)
lcSql = "select 1 as tip, id, id_sectie, cont, acont, scd, ascd, scc, ascc from imob_inchidere"
llSucces = goExecutor.oExecuta(lcSql, "crsConturiTemp")
If m.llSucces
Insert Into crsConturi (tip, id, id_sectie, cont, acont, scd, ascd, scc, ascc) ;
select tip, Id, id_sectie, cont, acont, scd, ascd, scc, ascc From crsConturiTemp
Endif
*!* *** COMPLETEZ CONTURILE CARE NU SUNT CONFIGURATE IN IMOB_INCHIDERE
*!* Insert Into crsConturi (TIP, Cont, acont) ;
*!* select Distinct 1 As TIP, Cont, acont ;
*!* from (m.lcCursor) Where !Empty(Nvl(Cont, '')) And Padr(Nvl(Cont, ''), 4, ' ') + Padr(Nvl(acont, ''), 4, ' ') Not In ;
*!* (Select Padr(Nvl(Cont, ''), 4, ' ') + Padr(Nvl(acont, ''), 4, ' ') From crsConturi)
*!* && COMPLETEZ SCD, SCC DEFAULT
*!* Update crsConturi Set scd = '6811' Where Empty(scd)
*!* Update crsConturi Set scc = Iif(tnTip = 1, '281', '280') + Substr(Cont, 3, 1) Where Empty(scc)
*** ADAUG LINIILE PENTRU SUME NEDEDUCTIBILE (TIP = 2)
Insert Into crsConturi (tip, id_sectie, Cont, acont, scd, ascd, scc, ascc) ;
select 2 As tip, id_sectie, Cont, acont, scd, ascd, scc, ascc ;
from crsConturi
lnAnLuna = tnAn * 12 + tnLuna;
lcSql = [select cont, acont, explicatie from plcont where inactiv = 0 and an = ] + Transform(tnAn)
lcCursorPlcont = [crsPlcontTemp]
lnSucces = goExecutor.oExecute(lcSql, lcCursorPlcont)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
Endif
If !Used("crsPlContTemp")
Create Cursor crsPlContTemp (Cont c(4), acont c(4), explicatie c (30))
Endif
*** CUMULARE PE SECTII sau pe lucrari
m.lcCursorTemp = 'crsAmortizariTemp'
Select Sum(Cast(Iif(c.TIP = 1, Iif(a.amort_max_deductibil > 0, Min(a.rata, a.amort_max_deductibil), a.rata), ;
iif(a.amort_max_deductibil > 0 And a.rata > a.amort_max_deductibil, a.rata - a.amort_max_deductibil, 0)) As N(20, 4))) As suma, ;
a.Cont, a.acont, Nvl(a.id_sectie, 00000) As id_sectie, Nvl(a.sectie, Space(50)) As sectie, ;
CAST(Nvl(a.id_lucrare, 0) as I) As id_lucrare, CAST(Nvl(a.nrord, '') as C(100)) As nrord, ;
IIF(!Empty(Nvl(c.Cont, "")), c.scd, Space(4)) As scd, ;
IIF(!Empty(Nvl(c.Cont, "")), c.ascd, Space(4)) As ascd, ;
IIF(!Empty(Nvl(c.Cont, "")), c.scc, Space(4)) As scc, ;
IIF(!Empty(Nvl(c.Cont, "")), c.ascc, Space(4)) As ascc, ;
padr(Alltrim(Nvl(a.Cont, '')) + Iif(!Empty(Nvl(a.acont, '')), '.' + Nvl(a.acont, ''), '') + ' ' + Alltrim(Nvl(p.explicatie, '')) + Iif(c.TIP = 1, ' - DEDUCTIBIL', ' - NEDEDUCTIBIL'), 200, ' ') As explicatie ;
from (m.lcCursor) a ;
left Join crsPlContTemp p On a.Cont = p.Cont And Nvl(a.acont, 'xxxx') = Nvl(p.acont, 'xxxx') ;
left Join crsConturi c On a.Cont = c.Cont And Nvl(a.acont, 'xxxx') = Nvl(c.acont, 'xxxx') AND NVL(a.id_sectie, 0) = NVL(c.id_sectie,0) ;
where id_tip_imobilizare = tnTip ;
group By a.Cont, a.acont, a.id_sectie, a.sectie, a.id_lucrare, a.nrord, p.explicatie, c.Cont, c.scd, c.ascd, c.scc, c.ascc, c.TIP ;
into Cursor crsAmortizariTemp Readwrite
DO CASE
*** CUMULARE SUME PE SECTII SI LUCRARI
CASE tnSectie = 1 AND tnLucrare = 1
Select Cont, acont, scd, ascd, scc, ascc, explicatie, id_sectie, sectie, id_lucrare, nrord, Sum(suma) As suma ;
from (m.lcCursorTemp) ;
group By Cont, acont, scd, ascd, scc, ascc, explicatie, id_sectie, sectie, id_lucrare, nrord ;
into Cursor (m.tcCursor) Readwrite
*** CUMULARE SUME FARA SECTII, PE LUCRARI
CASE tnSectie <> 1 AND tnLucrare = 1 && nu pe sectii
Select Cont, acont, scd, ascd, scc, ascc, explicatie, 0 As id_sectie, '' As sectie, id_lucrare, nrord, Sum(suma) As suma ;
from (m.lcCursorTemp) ;
group By Cont, acont, scd, ascd, scc, ascc, explicatie, id_lucrare, nrord ;
into Cursor (m.tcCursor) Readwrite
*** CUMULARE SUME PE SECTI, FARA LUCRARI
CASE tnSectie = 1 AND tnLucrare <> 1 && nu pe sectii
Select Cont, acont, scd, ascd, scc, ascc, explicatie, id_sectie, sectie, 0 as id_lucrare, '' as nrord, Sum(suma) As suma ;
from (m.lcCursorTemp) ;
group By Cont, acont, scd, ascd, scc, ascc, explicatie, id_sectie, sectie ;
into Cursor (m.tcCursor) Readwrite
*** CUMULARE SUME FARA LUCRARI, FARA SECTI
CASE tnSectie <> 1 AND tnLucrare <> 1 && nu pe sectii
Select Cont, acont, scd, ascd, scc, ascc, explicatie, 0 AS id_sectie, '' AS sectie, 0 as id_lucrare, '' as nrord, Sum(suma) As suma ;
from (m.lcCursorTemp) ;
group By Cont, acont, scd, ascd, scc, ascc, explicatie ;
into Cursor (m.tcCursor) Readwrite
ENDCASE
Use In (Select(m.lcCursorTemp))
&& sterg sumele 0
Delete From (tcCursor) Where suma = 0
Use In (Select(m.lcCursor))
Use In (Select(m.lcCursorPlcont))
If Used(m.tcCursor)
Return m.tcCursor
Else
Return ''
Endif
Endproc && GET_CURSOR_INCHIDERE_AMORTIZARI

View File

@@ -0,0 +1,229 @@
*!* 22.02.2010
*!* marius.mutu
*!* viz_config_grupe_gestiuni - arat doar gestiunile din sucursala curenta
*!* 22.03.2010
*!* marius.mutu
*!* viz_config_grupe_gestiuni - + ID_SECTIE, SECTIE
*!* 31.12.2019
*!* marius.mutu
*!* viz_config_grupe_gestiuni - GESTIUNI.GESTIONAR, COMISIE_RECEPTIE
PROCEDURE viz_config_grupe_gestiuni
PARAMETERS tntip
lntip = tntip
PRIVATE poGestiuni
Local lcSchema, lcSelect, lcOrder, lcFiltru, lcFiltruOriginal, llAfiseaza, lcgroup, lcFiltruOriginal
PRIVATE poGrupe,pcschema2,pcselect2,pcfiltru2,pcorder2
PRIVATE poUtilizatori
LOCAL lcschema3,lcselect3,lcfiltru3,lcorder3,lcgroup3, llModParam3, lcFiltruOriginal3
PRIVATE poGrupe_Gestiuni,pcschema4,pcselect4,pcfiltru4,pcorder4
PRIVATE poGrupe_Utilizatori,pcschema5,pcselect5,pcfiltru5,pcorder5
STORE '' TO poGestiuni,poGrupe,poUtilizatori,poGrupe_Gestiuni,poGrupe_Utilizatori
***********************
PRIVATE aTipuriGestiuni
DIMENSION aTipuriGestiuni(7)
*EXTERNAL ARRAY taTipuriGestiuni
aTipuriGestiuni(1)=[<Nedefinit>]
aTipuriGestiuni(2)=[Materii Prime si Materiale]
aTipuriGestiuni(3)=[Obiecte de Inventar]
aTipuriGestiuni(4)=[Produse]
aTipuriGestiuni(5)=[Marfuri la Pret de Achizitie]
aTipuriGestiuni(6)=[Marfuri la Pret de Vanzare]
aTipuriGestiuni(5)=[Marfuri la Pret de Achizitie*]
***********************
lcsql = [select nume_tip,id_tipgest from vtipuri_gestiuni ]
lnSucces = goExecutor.oexecute(lcSql,[crsTipuri_gest])
IF lnSucces < 0
lcMesaj = goExecutor.cEroare
ofrm_er =CREATEOBJECT([frm_mesaj],[Eroare],[exclam.ico],[Avertizare],lcmesaj)
ofrm_er.show()
RELEASE ofrm_er
return
ENDIF
lcSchema = [ID_GESTIUNE N(5), NUME_GESTIUNE V(50),INACTIV N(1),CONT V(4),ACONT V(4),] + ;
[NR_PAG N(2) ,CGEST V(20) ,ID_SUCURSALA N(10) ,DESCRIERE V(100) ,NUME_TIP V(30) ,SUCURSALA V(100) , ] + ;
[ID_RESPONSABIL N(10) ,DENUMIRE V(70), ID_SECTIE N(5), SECTIE V(50), ACONT_CHELTUIALA V(4), ACONT_ADAOS V(4),ID_LUCRARE N(10), NRORD V(100), ] + ;
[GESTIONAR V(50), COMISIE_RECEPTIE1 V(50), COMISIE_RECEPTIE2 V(50), COMISIE_RECEPTIE3 V(50)]
lcSelect = [select ID_GESTIUNE,NUME_GESTIUNE,INACTIV,CONT,ACONT,NR_PAG,CGEST,ID_SUCURSALA,DESCRIERE,NUME_TIP,SUCURSALA,ID_RESPONSABIL,DENUMIRE, ] + ;
[ID_SECTIE, SECTIE, ACONT_CHELTUIALA, ACONT_ADAOS,ID_LUCRARE, NRORD, ] +;
[GESTIONAR, COMISIE_RECEPTIE1, COMISIE_RECEPTIE2, COMISIE_RECEPTIE3] + ;
[ from vnom_gestiuni]
lcOrder = [nume_gestiune]
lcgroup = []
lcFiltru = []
*!* 22.02.2010
lcFiltruOriginal = SUBSTR(gcCondSucursala,6)
*!* 22.02.2010 ^
pcschema2=['id_grupe n(5),nume_grupa c(100), nume_parinte c(100), parent_id n(5), inactiv n(1)']
pcselect2=['select id_grupe,nume_grupa, nume_parinte, parent_id, inactiv'+]+;
[' from ]+gcS+[.vgest_nom_grupe where 1=2']
pcorder2=[nume_grupa]
pcfiltru2=[2=2]
lcschema3=[id_util n(5),utilizator c(30)]
lcselect3=[select distinct a.id_util,a.utilizator ]+;
[ from syn_vutilizatori a join syn_vdef_util_firme b on a.id_util = b.id_util ]
*!* pcselect3=['select id_util,utilizator'+]+;
*!* [' from contafin_oracle.vutilizatori where 1=2']
lcorder3=[utilizator]
lcfiltru3=[1=2]
lcgroup3 = []
llModParam3 = .T.
*!* modificare 19.03.2007
lcFiltruOriginal3 = [a.inactiv = 0 and b.id_firma = ?gnIdFirma]
*!* lcFiltruOriginal3 = [b.id_program = ]+ALLTRIM(STR(gnIdProgram))+[ and b.id_firma = ]+ALLTRIM(STR(gnIdFirma))
*!* modificare 19.03.2007 ^
pcschema4=['id_cgg n(5),id_gestiune n(5),nume_gestiune c(50),cgest c(20),nr_pag n(2),'+]+;
['cont c(4),acont c(4),inactiv_gest n(1),nume_tip_gest c(30),'+]+;
['id_grupe n(5),nume_grupa c(100),inactiv_grupa n(1)']
pcselect4=['select a.id_cgg,a.id_gestiune,b.nume_gestiune,b.cgest,b.nr_pag,'+]+;
['b.cont,b.acont,b.inactiv as inactiv_gest,b.nume_tip as nume_tip_gest,'+]+;
['a.id_grupe,c.nume_grupa,c.inactiv as inactiv_grupa'+]+;
[' from ]+ gcS+[.vgest_coresp_grupe_gestiuni a '+] + ;
[' join ]+ gcS + [.vnom_gestiuni b on a.id_gestiune=b.id_gestiune '+]+;
[' join ]+gcS+ [.vgest_nom_grupe c on a.id_grupe = c.id_grupe '+]+;
[' where 1=2']
pcorder4=[c.nume_grupa]
pcfiltru4=[1=2]
pcschema5=['id_cug n(5),id_util n(5),id_grupe n(5),nume_grupa c(100),inactiv n(1)']
pcselect5=['select a.id_cug,a.id_util,a.id_grupe,b.nume_grupa,b.inactiv'+]+;
[' from ]+gcS+[.vgest_coresp_util_grupe a '+]+;
[' join ]+gcS+[.vgest_nom_grupe b on a.id_grupe = b.id_grupe'+]+;
[' where 1=2']
pcorder5=[b.nume_grupa]
pcfiltru5=[1=2]
llModParam = .T.
llAfiseaza = .F.
_screen.MousePointer= 11
*gencursor('poGestiuni','crsGestiuni',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza)
gencursor('poGestiuni','crsGestiuni', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
gencursor('poGrupe','crsGrupe',pcselect2,pcfiltru2,pcschema2,pcorder2,llAfiseaza)
gencursor('poUtilizatori','crsUtilizatori',lcselect3,lcfiltru3,lcschema3,lcorder3,llAfiseaza,lcgroup3, llModParam3, lcFiltruOriginal3)
gencursor('poGrupe_Gestiuni','crsGrupe_Gestiuni',pcselect4,pcfiltru4,pcschema4,pcorder4,llAfiseaza)
gencursor('poGrupe_Utilizatori','crsGrupe_Utilizatori',pcselect5,pcfiltru5,pcschema5,pcorder5,llAfiseaza)
poGrupe.ca_baza1.afisare()
poGestiuni.ca_baza1.afisare()
poUtilizatori.ca_baza1.afisare()
SELECT crsUtilizatori
GO top
lcId_util = ALLTRIM(STR(crsUtilizatori.id_util))
poGrupe_Utilizatori.ca_baza1.cfiltru = [a.id_util=]+lcId_util
poGrupe_Utilizatori.ca_baza1.afisare()
DO case
CASE lntip = 1
SELECT crsGrupe
GO top
lcId_grupe = ALLTRIM(STR(crsGrupe.id_grupe))
poGrupe_Gestiuni.ca_baza1.cfiltru=[a.id_grupe=]+lcId_grupe
poGrupe_Gestiuni.ca_baza1.corder=[b.nume_gestiune]
poGrupe_Gestiuni.ca_baza1.afisare()
CASE lntip = 2
SELECT crsGestiuni
GO top
lcId_gestiune = ALLTRIM(STR(crsGestiuni.id_gestiune))
poGrupe_Gestiuni.ca_baza1.cfiltru=[a.id_gestiune=]+lcId_gestiune
poGrupe_Gestiuni.ca_baza1.corder=[c.nume_grupa]
poGrupe_Gestiuni.ca_baza1.afisare()
CASE lntip = 3
poGrupe_Gestiuni.ca_baza1.cfiltru = [1=2]
poGrupe_Gestiuni.ca_baza1.afisare()
ENDCASE
*!* DO FORM frm_grupe_gestiuni_utilizatori NOSHOW NAME ofrm_gest LINKED
ofrm_gest = CREATEOBJECT('frm_gestiuni_grupe_utilizatori')
_screen.MousePointer= 0
ofrm_gest.pagefr_config.activepage = lntip
ofrm_gest.show(1)
RELEASE ofrm_gest
RELEASE poGestiuni
RELEASE poGrupe
RELEASE poUtilizatori
RELEASE poGrupe_Gestiuni
RELEASE poGrupe_Utilizatori
ENDPROC
***********************
***********************
FUNCTION tip_gestiune
PARAMETERS tnpoz
IF tnpoz = 0
RETURN [<Nedefinit>]
ELSE
RETURN aTipuriGestiuni(tnpoz)
ENDIF
ENDFUNC
***********************
FUNCTION iif_inactiv
LOCAL lcrez
lcrez = IIF(inactiv=1,'DA','NU')
RETURN lcrez
ENDFUNC
********* INCEPUT: viz_config_tipuri_gestiuni ***********
PROCEDURE viz_config_tipuri_gestiuni
PRIVATE pnId_tipgest
STORE 0 TO pnId_tipgest
PRIVATE poCoresp,poPlcont
STORE '' TO poCoresp,poPlcont
lcSql1 = [select nume_tip,id_tipgest from tipuri_gestiuni]
lccursor1 = [crsTipuri_gest]
lnsucces1 = goExecutor.oExecute(lcSql1,lccursor1)
IF lnsucces1 < 0
lcmesaj = goExecutor.cEroare
ofrm_er = CREATEOBJECT('frm_mesaj','Eroare','exclam.ico','Avertizare',lcmesaj)
ofrm_er.show(1)
RELEASE ofrm_er
RETURN
ENDIF
lcSelect1 = ['select cont from ] + gcS + [.vplcont_sintetic where 1=2']
lcSchema1 = ['cont c(4)']
lcorder1 = [cont]
lcfiltru1 = [ an = ] + ALLTRIM(STR(gnAn)) + [ and SUBSTR(cont,1,1) = '3' ] + ;
[ and cont not in (select cont from ] + gcs +;
[.vcoresp_cont_tipgest where id_tipgest = ?pnId_tipgest)]
lcSelect2 = ['select cont,id_cct,id_tipgest from ] + gcS + [.vcoresp_cont_tipgest where 1=2']
lcSchema2 = ['cont c(4),id_cct n(5),id_tipgest n(5)']
lcorder2 = [cont]
lcfiltru2 = [id_tipgest = ?pnId_tipgest]
llAfiseaza = .t.
gencursor('poPlcont','crsPlcont',lcselect1,lcfiltru1,lcschema1,lcorder1,llAfiseaza)
gencursor('poCoresp','crsCoresp',lcselect2,lcfiltru2,lcschema2,lcorder2,llAfiseaza)
ofrm_tipgest = CREATEOBJECT('frm_config_tipuri_gestiuni')
ofrm_tipgest.show(1)
RELEASE ofrm_tipgest
RELEASE poCoresp
ENDPROC
********* SFARSIT: viz_config_tipuri_gestiuni ***********

View File

@@ -0,0 +1,125 @@
***************************************************************************************************************
**** Proceduri:
**** vizualizeaza_curs
**** citeste_cursuri_stoc
**** citeste_curs_zi
***************************************************************************************************************
****************************************** INCEPUT: vizualizeaza_curs *****************************************
Procedure vizualizeaza_curs
*!* modificare ROAFACTURARE v 2.0.46
Lparameters tdDataCurs
*!* modificare ROAFACTURARE v 2.0.46 ^
Private poCurs
Local lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, loFrmCurs
Store .F. To llAfiseaza
Store '' To poCurs
If Used('crscurs')
Use In crscurs
Endif
lcSchema = ['id_curs n(10),id_valuta n(10),data d,data2 d,nume_val c(100),curs n(20,gnPCurs),multiplicator N(10),id_valuta_iso N(10),iso_valuta C(3),curs_bnr n(20,4)']
lcSelect = ['select id_curs,id_valuta,data,data2,nume_val,curs,multiplicator,id_valuta_iso,iso_valuta,curs_bnr from ] + gcS + [.vcurs where 2=2']
lcOrder = [data]
*!* modificare ROAFACTURARE v 2.0.46
*!* lcFiltru = [1 = 2]
lcFiltru = Iif(Empty(tdDataCurs),[1 = 2],[data <= to_date('] + Dtoc(tdDataCurs,1) + [','YYYYMMDD') ] + ;
[and data2 >= to_date('] + Dtoc(tdDataCurs,1) + [','YYYYMMDD') ])
*!* modificare ROAFACTURARE v 2.0.46 ^
llAfiseaza = .F.
gencursor('poCurs', 'crscurs', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza)
poCurs.ca_baza1.afisare()
*!* modificare ROAFACTURARE v 2.0.46
*!* loFrmCurs = Createobject("frm_curs")
loFrmCurs = Createobject("frm_curs",tdDataCurs)
*!* modificare ROAFACTURARE v 2.0.46 ^
loFrmCurs.Show(1)
Release loFrmCurs, poCurs
If Used('crscurs')
Use In crscurs
Endif
Endproc
****************************************** SFARSIT: vizualizeaza_curs *****************************************
***************************************** INCEPUT: citeste_cursuri_stoc ****************************************
Function citeste_cursuri_stoc
Lparameters tdData,tnIdValuta
Private pdDataCurs,pnIdValuta
Local lcCursor, llContinuare,lcListaValute
pdDataCurs = tdData
pnIdValuta = tnIdValuta
lcCursor = [crscursuri]
llVerificare = .T.
llContinuare = .T.
lnIncercari = 1
Do While llVerificare
If llContinuare
If Used(lcCursor)
Use In (lcCursor)
Endif
lcSql = [select a.id_valuta, b.curs, b.multiplicator, c.nume_val, c.moneda_nationala from ] + ;
[(select distinct id_valuta from ] + gcS + [.stoc where an = ?gnAn and luna = ?gnLuna ] + gcCondSucursala + ;
[and id_gestiune in (select distinct b.id_gestiune from ] + gcS + [.gest_coresp_util_grupe a ] + ;
[left join ] + gcS + [.gest_coresp_grupe_gestiuni b on a.id_grupe = b.id_grupe ] + ;
[left join ] + gcS + [.nom_gestiuni c on b.id_gestiune = c.id_gestiune ] + ;
[where a.id_util = ?gnIdUtil and a.sters = 0 and b.sters = 0 and c.nr_pag ] + IIF(gnTipGest=6,[=],[<>]) + [ 6) ] + ;
[union select ?pnIdValuta as id_valuta from dual) a ] + ;
[left join ] + gcS + [.curs b on a.id_valuta = b.id_valuta and b.data <= ?pdDataCurs and b.data2 >= ?pdDataCurs and b.sters = 0 ] + ;
[left join ] + gcS +[.nom_valute c on a.id_valuta = c.id_valuta ] + ;
[where c.moneda_nationala = 0 and a.id_valuta is not null]
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare")
llVerificare = .F.
llContinuare = .F.
Else
If Reccount(lcCursor) > 0
lcListaValute = []
Select (lcCursor)
Scan For Isnull(Curs)
lcListaValute = lcListaValute + Alltrim(Upper(nume_val)) + [,]
Endscan
If !Empty(lcListaValute)
If Used(lcCursor)
Use In (lcCursor)
Endif
If lnIncercari >= 2 And aMessagebox("Doriti sa continuati introducerea datelor?",4+32,"Confirmare continuare")==7
llVerificare = .F.
llContinuare = .F.
Else
lcListaValute = Substr(lcListaValute,1,Len(lcListaValute)-1) + [ !]
amessagebox("Pentru data de "+Dtoc(pdDataCurs)+" nu exista cursul pentru " + ;
IIF(Getwordcount(lcListaValute,[,])=1,"valuta ","valutele ")+lcListaValute,48,"Atentie")
vizualizeaza_curs()
Endif
Else
llVerificare = .F.
Endif
Else
amessagebox("Cautarea cursurilor pentru ziua de "+Dtoc(pdDataCurs)+" nu a intors rezultate!",16,"Eroare")
llVerificare = .F.
llContinuare = .F.
Endif
Endif
Endif
lnIncercari = lnIncercari + 1
Enddo
Return llContinuare
Endfunc && citeste_cursuri_stoc
***************************************** SFARSIT: citeste_cursuri_stoc ****************************************
***************************************** INCEPUT: citeste_curs_zi ****************************************
Procedure citeste_cursuri_zi
Lparameters tdDataCurs
Local lcCursor
lcCursor = [crscursuri]
lcSql = [select nume_val,curs,id_valuta,multiplicator from ] + gcS + [.vcurs where data <= to_date('] + Dtoc(tdDataCurs,1) + [','YYYYMMDD') ] + ;
[and data2 >= to_date('] + Dtoc(tdDataCurs,1) + [','YYYYMMDD') order by nume_val]
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare")
EndIf
Release lcCursor
Endproc && citeste_curs_zi
***************************************** SFARSIT: citeste_curs_zi ****************************************

View File

@@ -0,0 +1,407 @@
*!* 24.06.2011
*!* marius.mutu
*!* calc_indicatori_randuri
*!* daca un indicator avea valoare negativa, formula dadea eroare
*!* am transformat +-valoare in +(-valoare)
*!* 31.07.2012
*!* marius.mutu
*!* evalueaza_randul
*** Nu reevaluez totalurile cu CASE/IIF (ex R15 = CASE WHEN R15A > 0 THEN R15A ELSE 0 END)
*** pentru ca doresc sa suprascriu R15
*!* 27.02.2019
*!* marius.mutu
*!* evalueaza_randul - upper(allt(rand))
*!* 13.02.2026
*!* calc_indicatori_randuri - lcRandEval = 0 daca nu exista randul
Procedure viz_set_calc
Parameters tctable, tnId_set, tlFaraGrafic, tcNumeSet, tnId_sectie, tnId_venchelt
Private pcDataOra
pcDataOra = Get_Ora(2)
Local llFaraGrafic, lcTitlu
llFaraGrafic = tlFaraGrafic
If !Empty(tcNumeSet)
lcTitlu = Alltrim(tcNumeSet)
Else
lcTitlu = ''
Endif
*!* If !Empty(tcFCentru)
*!* If !("FIRMA"$Upper(Alltrim(tcFCentru)))
*!* lcTitlu = Proper(Alltrim(tcFCentru)) + ' - ' + lcTitlu
*!* Endif
*!* Endif
If !Used(tctable)
Return
Endif
Select (tctable) && id_ind, rand, nume_ind, comentariu -> ....date
frml = Createobject("frm_viz_set_calc", tnId_set, tlFaraGrafic, lcTitlu, tnId_sectie, tnId_venchelt)
frml.lb_titlu_alb_b121.Caption = "Set calculat - " + lcTitlu
frml.grid1.RecordSource = tctable
frml.grid1.DeleteColumn(1) && id_ind
frml.grid1.DeleteColumn(1) && ord_rand
frml.grid1.DeleteColumn(3) && comentariu
* frml.grid1.FontName = "Arial Narrow"
lnnrcoloane = frml.grid1.ColumnCount
frml.grid1.column4.Width = 300 && nume_ind
For i = 6 To lnnrcoloane+3
cformat = "frml.grid1.Column"+Alltrim(Str(i))+".format='rk'"
&cformat
cinputmask = "frml.grid1.Column"+Alltrim(Str(i))+".inputmask"
&cinputmask = "999 999 999 999.99"
Endfor
*!* frml.grid1.Width = frml.edtcomentariu.Left + frml.edtcomentariu.Width
frml.edtComentariu.ControlSource = tctable + ".comentariu"
*!* If tlcalculat
*!* frml.cb_save1.Visible = .F.
*!* frml.cb_print1.Left = frml.cb_print1.Left+frml.cb_print1.Width+1
*!* frml.cb_excel1.Left=frml.cb_excel1.Left+frml.cb_excel1.Width+1
*!* frml.cb_explorer1.Left=frml.cb_explorer1.Left+frml.cb_explorer1.Width+1
*!* Endif
*frml.lockscreen=.f.
frml.Show(1)
If Used('gtemp')
Use In gtemp
Endif
If Used('xtab')
Use In xtab
Endif
Endproc && viz_set_calc
***------------------------------------------------------------------------------------
Procedure lanseaza_excel
Parameters tcalias, tcTitlu, tlfara_grafic
Private pctitlu
Local llEsteExcel
llEsteExcel = .F.
llEsteExcel=isComobject("Excel.Application")
If !llEsteExcel
Do mesaj With "Instalati Microsoft Excel",""
Return
Endif
If Empty(tcTitlu)
pctitlu="Indicatori"
Else
pctitlu=Alltrim(tcTitlu)
Endif
Declare aranduri[1]
Declare acoloane[1]
Declare arand[1]
Select (tcalias)
lcField2=Field(4) && campul cu descrierea indicatorilor
lcSelect = [select ] + lcField2 + " "+[from ] + tcalias +" "+[into cursor tdesc]
&lcSelect
lnCount = _Tally
Dimension aranduri[lnCount]
&&& obtin array pt grafic
i=0
Select tdesc
Scan
i=i+1
aranduri[i]=tdesc.nume_ind
Endscan
If Used("tdesc")
Use In tdesc
Endif
***
Select (tcalias)
lcField1=Field(3) && campul cu numele randului (indicatorului)
lcSelect1 = [select ] + lcField1 + " "+[from ] + tcalias +" "+[into cursor trand]
&lcSelect1
lnCount1 = _Tally
Dimension arand[lnCount1]
j=0
Select trand
Scan
j=j+1
arand[j]=Right(Alltrim(trand.Rand),2)
Endscan
If Used("trand")
Use In trand
Endif
Select (tcalias)
lnFields=Fcount()
Dimension acoloane[lnFields]
Select (tcalias)
lcSelect = [select ]
For i=5 To lnFields
lcField=Field(i)
lcSelect = lcSelect + lcField + [,]
Endfor
lcSelect=Left(lcSelect,Len(lcSelect)-1)
lcSelect = lcSelect +" "+[ from ]+tcalias+" "+[ into cursor tExcel]
&lcSelect
lnCount = _Tally
&&& obtin d200331001 , 200304
Select (tcalias)
For i=5 To lnFields
lcTipCumul=Left(Field(i),1)
lcan=Substr(Field(i),2,4)
lcgrup=Right(Field(i),2)
acoloane[i-4]=cluna(lcgrup,lcTipCumul,lcan)
Endfor
lcfis = Alltrim(pctitlu)
For i=0 To Len(lcfis)-1
lccar = Substr(lcfis,i,1)
If Inlist(lccar,":","*","/","\","<",">",'"',"|","?")
lcfis= Strtran(lcfis,lccar,"_")
Endif
Endfor
lcexcel= Addbs(Strtran(gcTempPath,"\\","\"))+lcfis+"_"+Sys(2)+".XLS"
lcClasa = "EXCELX"
x=Newobject("XL_Manager",lcClasa) && alternatively you can drop this class on a VFP form
x.SaveAs=lcexcel && PART.XLS to be created in your TEMP folder
Dimension x.oWorkSheet[1] && need one page
x.oWorkSheet[1] = "Page 1 (with chart)"
x.Go() && remember this calls .populate_pages().
*WAIT WINDOW 'Check out! ' + x.SAVEAS && Presto! (the output XLS document)
Release x
OLEAPP = Getobject("","Excel.Application")
If Type('OLEAPP')!='O'
OLEAPP = Createobject("Excel.Application")
Endif
OLEAPP.WorkBooks.Open(lcexcel)
OLEAPP.Visible=1
Use In texcel
Return
Endproc &&lanseaza_excel
***------------------------------------------------------------------------------------
***------------------------------------------------------------------------------------
Procedure lanseaza_html
Parameters tcFile, tcTitluHtml, tlFaraGrafic
Local llFaraGrafic, lcTitluHtml
llFaraGrafic = tlFaraGrafic
lcTitluHtml = Alltrim(tcTitluHtml)
Select (tcFile)
lcfisd = gcTempPath + "copie.dbf"
Copy To (lcfisd)
Use (lcfisd) In 0 Exclusive
Select Copie
losc = Createobject("aShowCursor")
With losc
.lAlternateRows = .T.
.CTABLEWIDTH = '100%'
.cCellspacing = '3'
.cAlternatingBGColor = "white"
.cTableBorder = "1"
.nForceToPreList = 75000
.ShowCursor()
Endwith
******
*!* DEBUG
*!* SUSPEND
lcBar = ""
loGraph = Createobject('wwWebGraphs')
*** Make sure you pick a directory that exists
*** and is accessible through the Web
If Type("loGraph") = "O"
loGraph.cPhysicalPath = gcTempPath
loGraph.cLogicalPath = gcTempPath
loGraph.ShowGraphFromCursor()
lcBar = loGraph.GetOutput()
Endif
******
lcFile = Strtran(Addbs(gcTempPath),"\\","\")+"Indicatori.htm"
lchtml = [<html><body><h2><center> &lcTitluHtml </center></h2>]
lchtml = lchtml + losc.ohtml.coutput
If !llFaraGrafic &&daca am bifat optiunea "fara grafic"
lchtml = lchtml + [<br>] + lcBar
Endif
lchtml = lchtml + [</body></html>]
Strtofile(lchtml, lcFile)
orep = Createobject("frm_webreporter")
orep.cReportFileName = lcFile
orep.displayreport
Use In Copie
Endproc && lanseaza_html
***------------------------------------------------------------------------------------
*!* ***------------------------------------------------------------------------------------
*!* Procedure calc_indicatori_randuri
*!* Parameters tcFormula, tcTabel, tcColoana
*!* lcFormula = ALLTRIM(tcFormula)
*!* lcColoana = ALLTRIM(tcColoana)
*!* lcTabel = tcTabel
*!* lcFormEvaluata = ''
*!* Select * From (lcTabel) Into Cursor cLucru
*!* Do While Len(lcFormula) > 0
*!* lnRand = At('R',lcFormula)
*!* If lnRand > 0 Then
*!* lnNext = At(']',lcFormula)
*!* lcRand = ALLTRIM(Substr(lcFormula, lnRand + 1, (lnNext - lnRand - 1)))
*!* Select cLucru
*!* Calculate Sum(&lcColoana) For ALLTRIM(Rand) = lcRand To lnSumaRand
*!* lcFormEvaluata = lcFormEvaluata + Substr(lcFormula, 1, lnRand - 2) + '(' + Alltrim(Str(lnSumaRand,20,gnPA) + ')')
*!* lcFormula = Substr(lcFormula, lnNext + 1)
*!* Else
*!* lcFormEvaluata = lcFormEvaluata + Substr(lcFormula, 1)
*!* lcFormula = ''
*!* Endif
*!* Enddo
*!* If !Empty(lcFormEvaluata) And !Isnull(lcFormEvaluata)
*!* lcOldError = On("error")
*!* On Error lnret = 0
*!* lnret = &lcFormEvaluata
*!* On Error &lcOldError
*!* Endif
*!* Use In cLucru
*!* Return lnret
*!* Endproc && calc_indicatori_randuri
*!* ***------------------------------------------------------------------------------------
****------------------------------------------------------------------------------------
Procedure calc_indicatori_randuri
Parameters tcFormula, tcTabel, tcColoana
Local lnRet, lcFormula, lcColoana, lcTabel, lcFormEvaluata
Store 0 To lnRet
lcFormula = Alltrim(UPPER(tcFormula))
lcFormula = Strtran(lcFormula,'CASE WHEN','IIF(')
lcFormula = Strtran(lcFormula,'THEN',',')
lcFormula = Strtran(lcFormula,'ELSE',',')
lcFormula = Strtran(lcFormula,'END',')')
lcColoana = Alltrim(tcColoana)
lcTabel = tcTabel
lcFormEvaluata = ''
Select * From (lcTabel) with (buffering = .T.) Into Cursor cLucru
If Len(lcFormula) > 0
Do While At('[R',lcFormula)>0
lnRand = At('[R',lcFormula)
IF lnRand > 0
lnRand = lnRand + 1 && pozitia R
ENDIF
lnNext = At(']',lcFormula)
lcRandCompl = Substr(lcFormula, lnRand - 1, (lnNext - lnRand + 2))
lcRand = Alltrim(Substr(lcFormula, lnRand + 1, (lnNext - lnRand - 1)))
*STRTOFILE(TRANSFORM(lcRand) + CHR(13) + CHR(10), 'e:\rand.txt',.T.)
lcRandEval = evalueaza_randul(lcRand, "cLucru", lcColoana)
IF EMPTY(NVL(m.lcRandEval, ''))
lcRandEval = '0'
ENDIF
lnRandEval = At('[R',lcRandEval)
If lnRandEval > 0
lnRandEval = lnRandEval + 1 && pozitia R
lcRandEval = '(' + ALLTRIM(lcRandEval) + ')'
ENDIF
*!* 24.06.2011
IF LEFT(lcRandEval,1) = [-]
lcRandEval = '(' + ALLTRIM(lcRandEval) + ')'
ENDIF
*!* 24.06.2011 ^
lcFormula = Strtran(lcFormula,lcRandCompl,lcRandEval)
Enddo
Endif
If !Empty(lcFormula) And !Isnull(lcFormula)
lcOldError = On("error")
On Error lnRet = 0
lnRet = &lcFormula
On Error &lcOldError
Endif
If Used("cLucru")
Use In cLucru
Endif
Return lnRet
Endproc && calc_indicatori_randuri
***------------------------------------------------------------------------------------
Function evalueaza_randul
Parameters tcRand, tcTabel, tcColoana
Local lcReturn, lcRand, lcTabel, lcColoana
Store "" To lcReturn
lcRand = tcRand
lcTabel = tcTabel
lcColoana = tcColoana
Select (lcTabel)
Locate For UPPER(ALLTRIM(Rand)) = lcRand
If Found()
lnTip = tip
If tip = 5
*** Nu reevaluez totalurile cu CASE/IIF (ex R15 = CASE WHEN R15A > 0 THEN R15A ELSE 0 END)
*** pentru ca doresc sa suprascriu R15
IF !('CASE'$UPPER(NVL(formula,'')) OR 'IIF'$UPPER(NVL(formula,'')))
lcReturn = UPPER(formula)
lcReturn = Strtran(lcReturn,'CASE WHEN','IIF(')
lcReturn = Strtran(lcReturn,'THEN',',')
lcReturn = Strtran(lcReturn,'ELSE',',')
lcReturn = Strtran(lcReturn,'END',')')
ELSE
lcReturn = Alltrim(Str(NVL(&tcColoana,0),20,2))
ENDIF
Else
lcReturn = Alltrim(Str(NVL(&tcColoana,0),20,2))
Endif
Endif
Return lcReturn
Endfunc && evalueaza_randul
***-----------------------------------------------------

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,633 @@
*!* 12.04.2011
*!* marius.mtuu
*!* viz_flux
*!* salvez si refolosesc lista id act incasari/plati tip compensari de care trebuie sa se tina cont la flux
*!* lcComentariu = FormulaFlux2Comentariu([substr(scd,1,3) in ('758','759', '760')],'D',1,"",0,"")
*!* MessageBox(lcComentariu)
*!* 24.06.2011
*!* marius.mutu
*!* viz_flux - se creeaza si coloanele defalcate pe luni pentru perioada precedenta
*!* dadea eroare cand se calcula defalcat pe luni + perioada precedenta
PROCEDURE viz_flux
PARAMETERS tnLunaI, tnAnulI, tnLunaF, tnAnulF, tnModel, tlCompensari, tlPrecedent, tlDefalcat
&& tnModel 1 = FORMULE FLUX MAI VECHI; 2 = FORMULE FLUX CONTAFIN CONPRESS
&& tlCompensari daca se afiseaza compensarile din registrul jurnal pentru luarea in considerare in calcul
&& tlDefalcat 1 = daca se creeaza cate o coloana pentru fiecare luna sau se cumuleaza lunile intr-o singura coloana
IF EMPTY(tnModel)
tnModel = 2
ENDIF
LOCAL i, j, lcPrecedent, lcCurent
PRIVATE pnLuna, pnAnul, pnLI, pnAI, pnLF, pnAF, pnSI, pnSF, pnModel, pnNuCalculeazaTotaluri, pcIdsAct
STORE 0 TO pnLuna, pnAnul, pnLI, pnAI, pnLF, pnAF, pnSI, pnSF
LOCAL lcMesaje, lnDifSoldFPrecedent, lnDifSoldFCurent
lcMesaje = ""
lnDifSoldFPrecedent = 0
lnDifSoldFCurent = 0
pnModel = tnModel
pnNuCalculeazaTotaluri = 0
pcIdsAct = ''
llDefalcat = IIF(PCOUNT() = 8, tlDefalcat, .F.)
llPrecedent = tlPrecedent AND !m.llDefalcat && daca se defalca pe luni, nu mai am perioada precedenta, doar curenta
IF !initializeaza_sucursala() && oinit_optiuni.prg
RETURN
ENDIF
lcPrecedent = []
lcCurent = PADL(INT(tnLunaI), 2, '0') + '/' + PADL(INT(tnAnulI), 4, '0') + ' - ' + PADL(INT(tnLunaF), 2, '0') + '/' + PADL(INT(tnAnulF), 4, '0') && pentru listare - precedent
lnParcurgeri = 1
IF m.llPrecedent
lnParcurgeri = 2
lcPrecedent = PADL(INT(tnLunaI), 2, '0') + '/' + PADL(INT(tnAnulI) - 1, 4, '0') + ' - ' + PADL(INT(tnLunaF), 2, '0') + '/' + PADL(INT(tnAnulF) - 1, 4, '0') && pentru listare - precedent
ENDIF
*!* 03.05.2011
lcCursorFlux = [Select Rand, denumire, Cast(0 As N(14,2)) As precedent, Cast(0 As N(14,2)) As curent, ] + ;
[suma, formula, Total, tip, si, sf ]
FOR iLunaFlux = tnAnulI * 12 + tnLunaI TO tnAnulF * 12 + tnLunaF
lnLunaFlux = INT(MOD(m.iLunaFlux, 12))
lnAnFlux = INT(FLOOR(iLunaFlux / 12))
IF m.lnLunaFlux = 0
m.lnLunaFlux = 12
m.lnAnFlux = m.lnAnFlux - 1
ENDIF
lcCursorFlux = m.lcCursorFlux + [, CAST(0 as N(14,2)) as l] + PADL(m.lnLunaFlux, 2, "0") + [_] + ALLTRIM(STR(m.lnAnFlux))
*!* 24.06.2011
IF m.llPrecedent
lnLunaFluxPrec = lnLunaFlux
lnAnFluxPrec = lnAnFlux - 1
lcCursorFlux = m.lcCursorFlux + [, CAST(0 as N(14,2)) as l] + PADL(m.lnLunaFluxPrec, 2, "0") + [_] + ALLTRIM(STR(m.lnAnFluxPrec))
ENDIF
*!* 24.06.2011 ^
ENDFOR
lcCursorFlux = m.lcCursorFlux + [ From cIntermediar Into Cursor cFlux Readwrite]
*!* 03.05.2011 ^
FOR j = 1 TO lnParcurgeri && 1 = precedent/curent 2 = curent/nimic
lnAnulI = tnAnulI
lnLunaI = tnLunaI
lnAnulF = tnAnulF
lnLunaF = tnLunaF
IF j = 1 AND m.llPrecedent
lnAnulI = (lnAnulI - 1)
lnAnulF = (lnAnulF - 1)
ENDIF
pnLI = lnLunaI
pnAI = lnAnulI
pnLF = lnLunaF
pnAF = lnAnulF
pnSI = 0
pnSF = 0
FOR i = lnAnulI * 12 + lnLunaI TO lnAnulF * 12 + lnLunaF
pnLuna = INT(MOD(i, 12))
pnAnul = INT(FLOOR(i / 12))
IF pnLuna = 0
pnLuna = 12
pnAnul = pnAnul - 1
ENDIF
*!* 03.05.2011
lcColoanaLuna = "l" + PADL(m.pnLuna, 2, "0") + [_] + ALLTRIM(STR(m.pnAnul))
*!* 03.05.2011 ^
WAIT WINDOW 'Luna ' + PADL(ALLTRIM(STR(pnLuna)), 2, '0') + ' ' + ALLTRIM(STR(pnAnul)) NOWAIT
pcIdsAct = ''
*!* 12.04.2011
lnSucces = goExecutor.oFunction2Value([pack_mg_flux.GetIdsActCompensari(] + ALLTRIM(STR(pnLuna)) + [, ] + ALLTRIM(STR(pnAnul)) + [)], @pcIdsAct)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
RETURN
ELSE
pcIdsAct = NVL(pcIdsAct, '')
ENDIF
*!* 12.04.2011 ^
IF tlCompensari
lcSql = [{call PACK_MG_FLUX.GetCompensari(] + ALLTRIM(STR(pnLuna)) + [, ] + ALLTRIM(STR(pnAnul)) + [)}]
lnSucces = goExecutor.oExecute(lcSql, 'crsCompensariTemp')
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
RETURN
ELSE
IF RECCOUNT('crsCompensariTemp') > 0
*!* 12.04.2011
SELECT *, ALLTRIM(STR(id_act)) + ',' $ pcIdsAct + ',' AS ales FROM crsCompensariTemp INTO CURSOR crsCompensari READWRITE
*!* 12.04.2011 ^
loFrmCompensari = CREATEOBJECT("frm_compensari")
loFrmCompensari.lb_titlu_alb_b121.CAPTION = 'Compensari ' + PADL(ALLTRIM(STR(pnLuna)), 2, '0') + ' ' + ALLTRIM(STR(pnAnul))
loFrmCompensari.SHOW(1)
pcIdsAct = ''
SELECT crsCompensari
SET FILTER TO
SCAN FOR ales
pcIdsAct = pcIdsAct + ',' + ALLTRIM(STR(id_act))
ENDSCAN
IF !EMPTY(pcIdsAct)
pcIdsAct = SUBSTR(pcIdsAct, 2)
ENDIF
ENDIF
USE IN (SELECT('crsCompensariTemp'))
USE IN (SELECT('crsCompensari'))
ENDIF
ENDIF && tlCompensari
lcSql = [begin PACK_MG_FLUX.calc_flux(] + ALLTRIM(STR(pnLuna)) + [, ] + ALLTRIM(STR(pnAnul)) + [, ] + ALLTRIM(STR(pnNuCalculeazaTotaluri)) + [, ] + ALLTRIM(STR(pnModel)) + [, '] + ALLTRIM(pcIdsAct) + ['); end;]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
RETURN
ENDIF
* Set Textmerge On To Memvar lcMesaje Noshow
lcSql = [select * from mg_flux_trezorerie where rand = 0 ]
lcCursor = 'cNerepartizate'
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
ENDIF
SELECT COUNT(*) AS CNT FROM cNerepartizate INTO CURSOR cNr
SELECT cNr
lnNr = CNT
IF USED('cNr')
USE IN cNr
ENDIF
SET TEXTMERGE ON TO MEMVAR lcMesaje ADDITIVE NOSHOW
IF lnNr > 0
\*** Luna <<Padl(Alltrim(Str(pnLuna)),2,'0')>>/<<Alltrim(Str(pnAnul))>>, urmatoarele inregistrari nu au fost repartizate: <<CHR(13)+CHR(10)>>
\ nract debit=credit suma
SELECT cNerepartizate
SCAN
\ <<PADR(nract,14," ")>> <<PADR(scd,4," ")>>=<<PADR(scc,4," ")>> <<PADL(ALLTRIM(TRANSFORM(suma,get_mask(20,gnPA))),20," ")>> <<CHR(13)>>
SELECT cNerepartizate
ENDSCAN
\<<CHR(13)+CHR(10)>>
ENDIF
USE IN cNerepartizate
SET TEXTMERGE TO
***--------------------
lcSql = [select * FROM mg_flux order by rand]
lcCursor = 'cIntermediar'
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
LOOP
ENDIF
IF (i = lnAnulI * 12 + lnLunaI) AND (j = 1) && in prima luna creez cursorul cFLux
&lcCursorFlux
&& completez sumele pe coloana precedent/curent cumulat
IF j = 1 AND m.llPrecedent
REPLACE ALL precedent WITH suma IN cFlux
ELSE
REPLACE ALL curent WITH suma IN cFlux
ENDIF
&& completez sumele defalcat pentru luna curenta
REPLACE ALL &lcColoanaLuna WITH suma IN cFlux
ELSE
&& scanez si insumez
lnsuma = 0
SELECT cFlux
SCAN
lcRand = RAND
SELECT cIntermediar
LOCATE FOR RAND = lcRand
IF FOUND()
lnsuma = suma
SELECT cFlux
IF j = 1 AND m.llPrecedent
REPLACE precedent WITH precedent + m.lnsuma
ELSE
REPLACE curent WITH curent + m.lnsuma
ENDIF
*!* 03.05.2011
REPLACE &lcColoanaLuna WITH m.lnsuma
*!* 03.05.2011 ^
ENDIF
SELECT cFlux
ENDSCAN
ENDIF && (i = lnAnulI*12 + lnLunaI) And (j = 1) && in prima luna creez cursorul cFLux
USE IN (SELECT('cIntermediar'))
*** solduri initiale, finale luna curenta
pnSI = 0
pnSF = 0
lcSql = [begin PACK_MG_FLUX.get_SI_balanta(?pnLuna, ?pnAnul, ?@pnSI); end;]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
RETURN
ENDIF
lcSql = [begin PACK_MG_FLUX.get_SF_balanta(?pnLuna, ?pnAnul, ?@pnSF); end;]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
RETURN
ENDIF
lnDifSoldF = 0
SELECT cFlux
REPLACE &lcColoanaLuna WITH pnSI FOR si = 1
IF pnNuCalculeazaTotaluri = 0 && daca se calculeaza totalurile in baza de date compar soldul final calculat cu cel din balanta
LOCATE FOR sf = 1
IF FOUND()
IF &lcColoanaLuna <> m.pnSF
lnDifSoldF = m.pnSF - (&lcColoanaLuna + m.pnSI) && soldul initial nu era inclus in randul calculat
ENDIF
ENDIF
ENDIF
REPLACE &lcColoanaLuna WITH m.pnSF FOR sf = 1
*!* Set Textmerge On To Memvar lcMesaje Additive Noshow
IF lnDifSoldF <> 0
lcMesaje = lcMesaje + CHR(13) + CHR(10) + STRTRAN(SUBSTR(lcColoanaLuna, 2), "_", " ") + ' DIFERENTA INTRE SOLD FINAL TREZORERIE CALCULAT SI SOLD FINAL DIN BALANTA DE VERIFICARE: ' + ALLTRIM(TRANSFORM(lnDifSoldF, '999 999 999 999.99'))
ENDIF
*** solduri initiale, finale luna curenta ^
ENDFOR && i = lnAnulI*12 + lnLunaI To lnAnulF*12 + lnLunaF
*** solduri initiale, finale cumulat precedent/curent
lcSql = [begin PACK_MG_FLUX.get_SI_balanta(?pnLI, ?pnAI, ?@pnSI); end;]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
RETURN
ENDIF
lcSql = [begin PACK_MG_FLUX.get_SF_balanta(?pnLF, ?pnAF, ?@pnSF); end;]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
RETURN
ENDIF
lcDifSoldFPrecedent = 0
lcDifSoldFCurent = 0
SELECT cFlux
IF j = 1 AND m.llPrecedent
REPLACE precedent WITH pnSI FOR si = 1
IF pnNuCalculeazaTotaluri = 0 && daca se calculeaza totalurile in baza de date compar soldul final calculat cu cel din balanta
LOCATE FOR sf = 1
IF FOUND()
IF precedent <> pnSF
lnDifSoldFPrecedent = pnSF - (precedent + pnSI)
ENDIF
ENDIF
ENDIF
REPLACE precedent WITH pnSF FOR sf = 1
ELSE
REPLACE curent WITH pnSI FOR si = 1
IF pnNuCalculeazaTotaluri = 0 && daca se calculeaza totalurile in baza de date compar soldul final calculat cu cel din balanta
LOCATE FOR sf = 1
IF FOUND()
IF curent <> pnSF
lnDifSoldFCurent = pnSF - (curent + pnSI) && soldul initial nu era inclus in randul calculat
ENDIF
ENDIF
ENDIF
REPLACE curent WITH pnSF FOR sf = 1
ENDIF
*!* Set Textmerge On To Memvar lcMesaje Additive Noshow
IF lnDifSoldFPrecedent <> 0
lcMesaje = lcMesaje + CHR(13) + CHR(10) + 'DIFERENTA INTRE SOLD FINAL TREZORERIE CALCULAT SI SOLD FINAL DIN BALANTA DE VERIFICARE: ' + ALLTRIM(TRANSFORM(lnDifSoldFPrecedent, '999 999 999 999.99'))
ENDIF
IF lnDifSoldFCurent <> 0
lcMesaje = lcMesaje + CHR(13) + CHR(10) + 'DIFERENTA INTRE SOLD FINAL TREZORERIE CALCULAT SI SOLD FINAL DIN BALANTA DE VERIFICARE: ' + ALLTRIM(TRANSFORM(lnDifSoldFCurent, '999 999 999 999.99'))
ENDIF
*** solduri initiale, finale cumulat precedent/curent ^
ENDFOR && j
lcFisier = gcTempPath + "mesaje.txt"
STRTOFILE(lcMesaje, lcFisier)
IF !EMPTY(lcMesaje)
MODIFY FILE (lcFisier)
ENDIF
***------------------------------------------------
SELECT cFlux
GO TOP
SELECT cFlux
lovf = CREATEOBJECT('frm_flux', m.llPrecedent, lcPrecedent, lcCurent)
lovf.ADDPROPERTY("lDefalcat", tlDefalcat)
*!* 03.05.2011
*** adaug coloane in grid pentru luni defalcat
IF m.llDefalcat
lnColumnOffset = lovf._grdrow1.COLUMNCOUNT
lovf._grdrow1.COLUMNCOUNT = m.lnColumnOffset + (tnAnulF * 12 + tnLunaF) - (tnAnulI * 12 + tnLunaI) + 1
i = 0
FOR iLunaFlux = tnAnulI * 12 + tnLunaI TO tnAnulF * 12 + tnLunaF
lnLunaFlux = INT(MOD(m.iLunaFlux, 12))
lnAnFlux = INT(FLOOR(iLunaFlux / 12))
i = i + 1
IF m.lnLunaFlux = 0
m.lnLunaFlux = 12
m.lnAnFlux = m.lnAnFlux - 1
ENDIF
lcColoanaLuna = "l" + PADL(m.lnLunaFlux, 2, "0") + [_] + ALLTRIM(STR(m.lnAnFlux))
lnCurentColumnIndex = m.lnColumnOffset + i
WITH lovf._grdrow1
.COLUMNS(m.lnCurentColumnIndex).NAME = lcColoanaLuna
.&lcColoanaLuna..CONTROLSOURCE = "cFlux." + m.lcColoanaLuna
.&lcColoanaLuna..FORMAT = "RK"
.&lcColoanaLuna..INPUTMASK = get_mask(14, gnPA)
.&lcColoanaLuna..Header1.CAPTION = STRTRAN(SUBSTR(m.lcColoanaLuna, 2), "_", "/")
.&lcColoanaLuna..Header1.ALIGNMENT = 2
ENDWITH
ENDFOR && iLunaFlux = lnAnulI*12 + lnLunaI To lnAnulF*12 + lnLunaF
lovf._grdrow1.cPrecedent.VISIBLE = .F.
lovf._grdrow1.cCurent.VISIBLE = .F.
*!* lovf._grdrow1.cCurent.Header1.Caption = PADL(INT(tnLunaI), 2, '0') + "/" + ALLTRIM(STR(INT(tnAnulI))) + " - " + PADL(INT(tnLunaF), 2, '0') + "/" + ALLTRIM(STR(INT(tnAnulF)))
ENDIF && m.llDefalcat
lovf.grid_column_bind()
*!* 03.05.2011 ^
lovf.SHOW(1)
IF USED('cFlux')
USE IN cFlux
ENDIF
ENDPROC && viz_flux
***-------------------------------------------------------------------------------------
PROCEDURE lanseaza_excel_flux
PARAMETERS tcalias, tlTip, toGridObject
LOCAL loExcelXML AS "ExcelXml" OF "ExcelXml.prg"
LOCAL x AS "XL_flux" OF "EXCELX"
LOCAL lcFile, lcexcel
*:Global OLEAPP
LOCAL llEsteExcel
llEsteExcel = isComobject("Excel.Application")
IF !m.llEsteExcel
*CopyToExcelSimple("flux_trezorerie.xls", "", m.tcalias, "", "*", ".T.")
loExcelXML = NEWOBJECT("ExcelXml", "ExcelXml.prg")
WITH loExcelXML
.GridObject = toGridObject
.HasFilter = .F.
.LockHeader = .F.
.SheetName = "Flux Trezorerie"
.OpenAfterSaving = .T.
lcFile = PUTFILE("Flux trezorerie", "flux_trezorerie", "xls")
IF .SAVE(m.lcFile)
AMESSAGEBOX("Fisierul s-a salvat!", 64)
ELSE
AMESSAGEBOX("Fisierul nu s-a salvat!", 48)
ENDIF
ENDWITH
RETURN
ENDIF
PRIVATE lcTabel
*!* llEsteExcel = isComobject("Excel.Application")
*!* If !llEsteExcel
*!* Do mesaj With "Instalati Microsoft Excel",""
*!* Return
*!* Endif
lcTabel = ALLTRIM(tcalias)
*!* lcNumeDirExcel = Addbs(Strtran(CALEFIRMA,"\\","\"))+"Excel\"
*!* If !Directory(lcNumeDirExcel)
*!* Md (lcNumeDirExcel)
*!* ENDIF
*!* lcexcel = lcNumeDirExcel +"Flux de trezorerie_"+Sys(2)+".XLS"
lcexcel = ADDBS(STRTRAN(gcTempPath, "\\", "\")) + "Flux de trezorerie_" + SYS(2) + ".XLS"
x = NEWOBJECT("XL_flux", "EXCELX") && alternatively you can drop this class on a VFP form
x.SAVEAS = lcexcel && PART.XLS to be created in your TEMP folder
SELECT (lcTabel)
DIMENSION x.oWorkSheet[1] && need four pages
x.oWorkSheet[1] = "Flux"
ADDPROPERTY(x, "lTip", tlTip)
x.GO() && remember this calls .populate_pages().
RELEASE x
**************************8
OLEAPP = GETOBJECT("", "Excel.Application")
IF TYPE('OLEAPP')!= 'O'
OLEAPP = CREATEOBJECT("Excel.Application")
ENDIF
OLEAPP.WorkBooks.OPEN(lcexcel)
OLEAPP.VISIBLE = 1
RETURN
ENDPROC &&lanseaza_excel_flux
***------------------------------------------------------------------------------------
PROCEDURE viz_formule_flux
LPARAMETERS tnModel
LOCAL lcSql, lnSucces, lcCursor
PRIVATE pcDataOra, pnModel
lcCursor = 'cFormule'
pcDataOra = Get_Ora(2)
&& tnModel 1 = FORMULE FLUX MAI VECHI; 2 = FORMULE FLUX CONTAFIN CONPRESS
IF EMPTY(tnModel)
pnModel = 2
ELSE
pnModel = tnModel
ENDIF
lcSql = [select * from mg_flux_formule where model = ?pnModel order by rand]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
IF lnSucces < 0
AMESSAGEBOX(lcSql, 0 + 32, 'Eroare')
RETURN
ENDIF
SELECT cFormule
REPLACE ALL comentariu WITH FormulaFlux2Comentariu(debit, 'D', tip, CONT, TOTAL, ftotal) + IIF(!EMPTY(credit), " " + FormulaFlux2Comentariu(credit, 'C', tip, CONT, 0, ""), "")
SELECT DISTINCT RAND, denumire FROM cFormule INTO CURSOR cFluxParinte READWRITE
SELECT * FROM cFormule INTO CURSOR cFluxCopil READWRITE
SELECT cFluxCopil
INDEX ON RAND TAG RAND
SELECT cFluxParinte
SET RELATION TO RAND INTO cFluxCopil ADDITIVE
poff = CREATEOBJECT("frm_formule")
poff.SHOW(1)
USE IN (SELECT('cFluxCopil'))
USE IN (SELECT('cFluxParinte'))
USE IN (SELECT('cFormule'))
ENDPROC && viz_formule_flux
***---------------------------------------------------------------------------------------------
PROCEDURE viz_conturi_flux
lcSql = [select cont from mg_flux_conturi order by cont]
lnSucces = goExecutor.oExecute(lcSql, "cConturiFlux")
IF lnSucces < 0
AMESSAGEBOX(lcSql, 0 + 32, 'Eroare')
RETURN
ENDIF
loFrmConturi = CREATEOBJECT("frm_conturi_flux")
loFrmConturi.SHOW(1)
USE IN (SELECT('cConturiFlux'))
ENDPROC && viz_conturi_flux
***---------------------------------------------------------------------------------------------
PROCEDURE FormulaFlux2Comentariu
LPARAMETERS tcFormula, tcDebit_credit, tnTip, tcContTip2, tnTotal, tcFTotal
&& cFormuleFlux.debit,'D',cFormuleFlux.tip,cFormuleFlux.cont,cFormuleFlux.total,cFormuleFlux.ftotal
LOCAL lcFormula, lcDebit_credit, lcCautInc, lcListaConturi, lcListaContAfis, lnTip, lcContTip2, llTotal, lcFTotal
IF !EMPTY(NVL(tcDebit_credit, ''))
lcDebit_credit = ALLTRIM(UPPER(NVL(tcDebit_credit, '')))
ELSE
lcDebit_credit = ''
ENDIF
IF !EMPTY(NVL(tcFormula, ''))
lcFormula = ALLTRIM(NVL(tcFormula, ''))
ELSE
lcFormula = ''
ENDIF
IF !EMPTY(NVL(tnTip, 0))
lnTip = tnTip
ELSE
lnTip = 0
ENDIF
IF !EMPTY(NVL(tcContTip2, ''))
lcContTip2 = ALLTRIM(NVL(tcContTip2, ''))
ELSE
lcContTip2 = ''
ENDIF
STORE '' TO lcListaConturi, lcListaContAfis
llTotal = NVL(tnTotal, 0) = 1
IF !EMPTY(NVL(tcFTotal, ''))
lcFTotal = ALLTRIM(NVL(tcFTotal, ''))
ENDIF
IF EMPTY(lcFormula) AND EMPTY(lcFTotal)
RETURN ''
ENDIF
IF !llTotal
DO CASE
CASE lcDebit_credit = 'D'
lcCautInc = [substr(scd,1,3) in (] && [inlist(left(scd,3)]
CASE lcDebit_credit = 'C'
lcCautInc = [substr(scc,1,3) in (] && [inlist(left(scc,3)]
ENDCASE
lnInc = AT(lcCautInc, lcFormula)
IF lnInc > 0
lcCautSf = [')]
lnSF = AT(lcCautSf, lcFormula)
ENDIF
lnLen = LEN(lcFormula) - LEN(lcCautInc) && 19
lcListaConturi = SUBSTR(lcFormula, LEN(lcCautInc) + 1, lnLen - 1)
lcListaConturi = STRTRAN(lcListaConturi, ['], [])
lnConturi = GETWORDCOUNT(lcListaConturi, [,])
IF lnConturi = 1
lcCont = GETWORDNUM(lcListaConturi, 1, [,])
lcListaContAfis = lcListaContAfis + lcCont
ELSE
FOR i = 1 TO lnConturi
lcCont = GETWORDNUM(lcListaConturi, i, [,])
DO CASE
CASE i = 1
lcListaContAfis = lcListaContAfis + lcCont + [ ]
CASE i = 2
lcListaContAfis = lcListaContAfis + [ (] + lcCont + [, ]
OTHERWISE
lcListaContAfis = lcListaContAfis + lcCont + [, ]
ENDCASE
ENDFOR
lcListaContAfis = SUBSTR(lcListaContAfis, 1, LEN(lcListaContAfis) - 2)
lcListaContAfis = lcListaContAfis + [)]
ENDIF
DO CASE
CASE lnTip = 1
DO CASE
CASE lcDebit_credit = 'D'
lcTraducere = [Platile din perioada selectata de tipul ] + lcListaContAfis + [ = 5xxx.]
CASE lcDebit_credit = 'C'
lcTraducere = [Incasarile din perioada selectata de tipul 5xxx = ] + lcListaContAfis + [.]
ENDCASE
CASE lnTip = 2
DO CASE
CASE lcDebit_credit = 'D'
lcTraducere = [Platile din perioada selectata de tipul ] + lcContTip2 + [ = 5xxx, ]
lcTraducere = lcTraducere + [pentru care s-au gasit inregistrari de tipul ] + lcListaContAfis + [ = ] + lcContTip2 + [ in Registrul Jurnal Total.]
CASE lcDebit_credit = 'C'
lcTraducere = [Incasarile din perioada selectata de tipul 5xxx = ] + lcContTip2 + [, ]
lcTraducere = lcTraducere + [pentru care s-au gasit inregistrari de tipul ] + lcContTip2 + [ = ] + lcListaContAfis + [ in Registrul Jurnal Total.]
ENDCASE
OTHERWISE
lcTraducere = ''
ENDCASE
ENDIF
IF llTotal
lcTraducere = [Suma randurilor ] + STRTRAN(lcFTotal, 'R', '')
*lcTraducere = STRTRAN(lcTraducere, '0', ' ')
ENDIF
RETURN lcTraducere
ENDPROC && FormulaFlux2Comentariu

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,295 @@
gnHandle = SQLCONNECT('ROA_ARGENTA', 'ARGENTA', '123')
SET PROCEDURE TO D:\CONTAFIN_ORACLE\COMUN\PROGRAME\OPROCEDURI_COMUNE.PRG ADDITIVE
PRIVATE goExecutor, gcS
gcS = 'ARGENTA'
goExecutor = CREATEOBJECT("oExecutor")
goExecutor.nHandle = gnHandle
LOCAL lcEroare, lnAn1, lnLuna1, lnAn2, lnLuna2
LOCAL lnRecno, i, lnSucces
lcEroare = ''
lnAn1 = 1995
lnLuna1 = 1
lnAn2 = 2006
lnLuna2 = 2
SELECT crsPartenerDiferente
lnRecno = RECCOUNT()
i = 0
SCAN
SCATTER NAME loPartener
i = i + 1
WAIT WINDOW TRANSFORM(I) + '/' + TRANSFORM(LNRECNO) NOWAIT
* lcEroare = modifica_id_partener(loPartener.id_part1, loPartener.id_part, lnAn1, lnLuna1, lnAn2, lnLuna2)
lcSql = [update nom_parteneri set inactiv = 1 where id_part = ] + TRANSFORM(loPartener.id_part1)
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
IF !EMPTY(lcEroare)
aMESSAGEBOX(lcEroare)
EXIT
ENDIF
ENDSCAN
IF !EMPTY(lcEroare)
aMESSAGEBOX(lcEroare)
ENDIF
SQLDISCONNECT(0)
*** =================================================================================== ***
*** MODIFICARE ID_PARTENER IN CAZUL IN CARE EXISTA ACELASI PARTENER DE MAI MULTE ORI ***
*** IN NOMENCLATORUL DE PARTENERI ***
*** MARIUS.MUTU ***
*** 15.02.2006 ***
*** =================================================================================== ***
PROCEDURE modifica_id_partener
LPARAMETERS tnIdPartProst, tnIdPartBun, tnAn1, tnLuna1, tnAn2, tnLuna2
LOCAL lnAn1, lnLuna1, lnAn2, lnLuna2, lnSucces, lnSucces2, lcEroare
LOCAL lcSql, lcCursor
PRIVATE lnIdPartProst, tnIdPartBun, lnInit, lnFinal
lcEroare = ''
lnSucces = 1
lnSucces2 = 1
lnIdPartProst = 0
lnIdPartBun = 0
lnInit = 0
lnFinal = 0
IF EMPTY(tnIdPartProst) OR EMPTY(tnIdPartBun) OR EMPTY(tnAn1) OR EMPTY(tnLuna1) OR EMPTY(tnAn2) OR EMPTY(tnLuna2)
lcEroare = 'Completati parametrii'
lnSucces = -1
ENDIF
IF lnSucces > 0
lnIdPartProst = tnIdPartProst
lnIdPartBun = tnIdPartBun
lnInit = tnAn1 * 12 + tnLuna1
lnFinal = tnAn2 * 12 + tnLuna2
IF lnInit > lnFinal
lcEroare = 'Luna de sfarsit trebuie sa fie mai mare sau egala decat luna de inceput'
lnSucces = -1
ENDIF
ENDIF
IF lnSucces > 0
&& TRANZACTIE MANUALA
lnSucces = SQLSETPROP(gnhandle,"Transactions",2)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& ACT : ID_PARTD
IF lnSucces > 0
lcSql = [update ] + gcs + [.act set id_partd = ?lnIdPartBun where id_partd = ?lnIdPartProst and an*12+luna between ?lnInit and ?lnFinal]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& ACT : ID_PARTC
IF lnSucces > 0
lcSql = [update ] + gcs + [.act set id_partc = ?lnIdPartBun where id_partc = ?lnIdPartProst and an*12+luna between ?lnInit and ?lnFinal]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& IREG_PARTENERI
IF lnSucces > 0
lcSql = [update ] + gcs + [.ireg_parteneri set id_part = ?lnIdPartBun where id_part = ?lnIdPartProst and an*12+luna between ?lnInit and ?lnFinal]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& BALANTA PARTENERI
IF lnSucces > 0
FOR I = lnInit TO lnFinal
lnLuna=MOD(I,12)
lnAn=INT(I/12)
IF lnLuna=0
lnLuna=12
lnAn=lnAn-1
ENDIF
lcSql = [SELECT ?lnIdPartBun as id_part, an, luna, NVL(cont,' ') as cont, NVL(acont,' ') as acont, id_valuta, ] +;
[sum(precdeb1) as precdeb1,sum(preccred1) as preccred1,sum(precdeb) as precdeb,sum(preccred) as preccred,] +;
[sum(precvaldeb1) as precvaldeb1,sum(precvalcred1) as precvalcred1,sum(precvaldeb) as precvaldeb,sum(precvalcred) as precvalcred,] +;
[sum(debit) as debit,sum(credit) as credit,sum(valdebit) as valdebit,sum(valcredit) as valcredit ]+;
[ FROM ] + gcs + [.BALANTA_PARTENERI WHERE ID_PART IN (?lnIdPartBun,?lnIdPartProst) AND ] +;
[ AN = ?lnAn and luna = ?lnLuna ] + ;
[ GROUP BY AN, LUNA, CONT, ACONT, ID_VALUTA ]
lcCursor = [crsBalanta]
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
EXIT
ENDIF
IF lnSucces > 0
lcDel = [DELETE FROM ] + gcs + [.BALANTA_PARTENERI WHERE ID_PART IN (?lnIdPartBun,?lnIdPartProst) AND ] +;
[ AN = ?lnAn and luna = ?lnLuna]
lnSucces = goExecutor.oExecute(lcDel)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
EXIT
ENDIF
ENDIF
IF lnSucces > 0
SELECT crsBalanta
SCAN
SCATTER NAME loB
loB.CONT = ALLTRIM(loB.CONT)
loB.acont = ALLTRIM(loB.acont)
lcIns = [INSERT INTO ] + gcs + [.BALANTA_PARTENERI ] + ;
[(an,luna,cont,acont,id_part,id_valuta,] + ;
[precdeb1,preccred1,precdeb,preccred,] + ;
[precvaldeb1,precvalcred1,precvaldeb,precvalcred,] + ;
[debit,credit,valdebit,valcredit) VALUES ] + ;
[(?loB.an,?loB.luna,?loB.cont,?loB.acont,?loB.id_part,?loB.id_valuta,] + ;
[?loB.precdeb1,?loB.preccred1,?loB.precdeb,?loB.preccred,] + ;
[?loB.precvaldeb1,?loB.precvalcred1,?loB.precvaldeb,?loB.precvalcred,] + ;
[?loB.debit,?loB.credit,?loB.valdebit,?loB.valcredit) ]
lnSucces = goExecutor.oExecute(lcIns)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
EXIT
ENDIF
ENDSCAN
ENDIF
IF USED('crsBalanta')
USE IN crsBalanta
ENDIF
ENDFOR
ENDIF
&& MASINI_CLIENTI
IF lnSucces > 0
lcSql = [update ] + gcs + [.dev_masiniclienti set id_partener = ?lnIdPartBun where id_partener = ?lnIdPartProst]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& CON_LUCRARI
IF lnSucces > 0
lcSql = [update ] + gcs + [.con_lucrari set id_part = ?lnIdPartBun where id_part = ?lnIdPartProst]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& RUL - id_responsabil
IF lnSucces > 0
lcSql = [update ] + gcs + [.rul set id_responsabil = ?lnIdPartBun where id_responsabil = ?lnIdPartProst]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& RUL - id_responsabilc
IF lnSucces > 0
lcSql = [update ] + gcs + [.rul set id_responsabilc = ?lnIdPartBun where id_responsabilc = ?lnIdPartProst]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& RUL_OBINV
IF lnSucces > 0
lcSql = [update ] + gcs + [.rul_obinv set id_responsabil = ?lnIdPartBun where id_responsabil = ?lnIdPartProst]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& STOC_OBINV
IF lnSucces > 0
lcSql = [update ] + gcs + [.stoc_obinv set id_responsabil = ?lnIdPartBun where id_responsabil = ?lnIdPartProst]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& CON_CONTRACTE
IF lnSucces > 0
lcSql = [update ] + gcs + [.con_contracte set id_part = ?lnIdPartBun where id_part = ?lnIdPartProst]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
IF lnSucces > 0
lnSucces2 = goExecutor.oExecute('COMMIT')
IF lnSucces2 < 0
lcEroare = goExecutor.cEroare
ENDIF
ELSE
lnSucces2 = goExecutor.oExecute('ROLLBACK')
IF lnSucces2 < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& inactiv
IF lnSucces > 0
lcSql = [update ] + gcs + [.nom_parteneri set inactiv = 1 where id_part = ?lnIdPartProst]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
IF lnSucces > 0
lnSucces2 = goExecutor.oExecute('COMMIT')
IF lnSucces2 < 0
lcEroare = goExecutor.cEroare
ENDIF
ELSE
lnSucces2 = goExecutor.oExecute('ROLLBACK')
IF lnSucces2 < 0
lcEroare = goExecutor.cEroare
ENDIF
ENDIF
&& TRANZACTIE AUTOMATA
lnSucces = SQLSETPROP(gnhandle,"Transactions",1)
IF lnSucces < 0
lcEroare = goExecutor.cEroare
ENDIF
RETURN lcEroare
ENDPROC && modifica_id_partener

View File

@@ -0,0 +1,115 @@
Procedure make_cFCentre
*!* Create Cursor cFCentre (id_centru I(4) Null, csectie C(2) Null, centru C(30) Null)
*!* Insert Into cFCentre Values (0, '00','<FIRMA>')
Create Cursor cFCentre (id_sectie I(4) Null, sectie C(30) Null)
Insert Into cFCentre Values (0, '<FIRMA>')
Private poCentre, pcschema1, pcselect1
Store '' To poCentre
pcschema1 = ['']
*!* If gnId_centre_sectie = 1 Then
*!* pcselect1 = ['select ce.id_centru, ce.csectie, ce.sectie as centru ]+;
*!* [from mg_nom_centre_sectie ce ]+;
*!* [where 1=2']
*!* pcorder1 = [ce.sectie]
*!* pcfiltru1 = [ce.sectie is not null and ce.societate = 0]
*!* Else
*!* pcselect1 = ['select ce.id_centru, ce.csectie, ce.centru ]+;
*!* [from mg_nom_centre_profit ce ]+;
*!* [where 1=2']
*!* pcorder1 = [ce.centru]
*!* pcfiltru1 = [ce.centru is not null and ce.societate = 0]
*!* Endif
Local lcSchema, lcSelect, lcOrder, lcgroup, lcFiltru, lcFiltruOriginal, llModParam, llAfiseaza
lcSchema = [id_sectie N(5), sectie C(30)]
lcSelect = [select id_sectie, sectie from vnom_sectii]
lcOrder = [sectie]
lcgroup = []
lcFiltru = [2=2]
llModParam = .T.
llAfiseaza = .F.
gencursor('pocentre','cc', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poCentre.ca_baza1.afisare()
Select cFCentre
Append From Dbf("cc")
If Used('cc')
Use In cc
Endif
Release poCentre
Select cFCentre
Go Top
Endproc && make_cFCentre
***---------------------------------------------------------------------------------------------
Procedure make_cTipuri_seturi
Create Cursor cTipuri_seturi (id_tip_set N(5), nume_tip_set C(30))
Insert Into cTipuri_seturi Values (0, '<Normal>')
Private poTipuri_seturi, pcschema1, pcselect1
Store '' To poTipuri_seturi
pcschema1 = ['']
pcselect1 = ['select ts.id_tip_set, ts.nume_tip_set ]+;
[from mg_tipuri_seturi ts ]+;
[where 1=2']
pcorder1 = [ts.nume_tip_set]
pcfiltru1 = [2=2]
llAfiseaza = .F.
gencursor('poTipuri_seturi','cc',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza)
poTipuri_seturi.ca_baza1.afisare()
Select cTipuri_seturi
Append From Dbf("cc")
Release poTipuri_seturi
Select cTipuri_seturi
Go Top
Endproc && make_cTipuri_seturi
***---------------------------------------------------------------------------------------------
Procedure make_venChelt
Create Cursor cVenChelt (id_venchelt I(4) Null, explicatie C(200) Null)
Insert Into cVenChelt Values (0, '<TOATE>')
Insert Into cVenChelt Values (99999, 'FARA TIP CHELTUIALA')
Private poVenChelt, pcschema1, pcselect1
Store '' To poVenChelt
Local lcSchema, lcSelect, lcOrder, lcgroup, lcFiltru, lcFiltruOriginal, llModParam, llAfiseaza
lcSchema = [id_venchelt N(5), explicatie C(30)]
lcSelect = [select id_venchelt, explicatie from vnom_venchel]
lcOrder = [explicatie]
lcgroup = []
lcFiltru = [2=2]
llModParam = .T.
llAfiseaza = .F.
gencursor('poVenChelt','cc', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poVenChelt.ca_baza1.afisare()
Select cVenChelt
Append From Dbf("cc")
If Used('cc')
Use In cc
Endif
Release poVenChelt
Select cVenChelt
Go Top
Endproc && make_venChelt
***---------------------------------------------------------------------------------------------

View File

@@ -0,0 +1,176 @@
***-----------------------------------------------------------------------------------------------------------
PROCEDURE fisa_lichidare
PRIVATE pcTitlu &&, pcDataOra
STORE "" TO pcTitlu &&, pcDataOra
LOCAL lcOrder, lcOrderColumn, loColumnSort
lcOrder = ""
lcOrderColumn = ""
PRIVATE pnId_responsabil
STORE 0 TO pnId_responsabil
loResp = caut_responsabil(.T.)
pnId_responsabil = loResp.id_responsabil
lcTitlu = [FISA DE LICHIDARE]
pcTitlu = ceretitlu_rap([Titlul raportului],lcTitlu)
*!* pcDataOra = get_ora(2)
pcGrupGest = [nresp]
pcGrupCont = [EOF()]
pcGrupAcont = [EOF()]
pcHeaderGrup = [Responsabil ]
lcOrder = "nresp,denumire,codmat"
lcSql = []
* SELECT * from crsStocuri INTO CURSOR crs_rap ORDER BY &lcOrder
***-------------------------------
lcSel = [{call pack_gest_rapoarte.fisa_ob_inventar_resp_stoc(?gnAn, ?gnLuna, ?pnId_responsabil,?gnIdSucursala)}]
lcCursor = 'cFisa'
lnSucces = goExecutor.oExecute(lcSel,lcCursor)
IF lnSucces < 0
AMESSAGEBOX('Call pack_gest_rapoarte.fisa_ob_inventar_resp' + CHR(13) + goExecutor.cEroare,0+16,"Eroare")
RETURN
ENDIF
***-------------------------------
** raportul nu calcula bine totalurile
SELECT *, ;
IIF(dnf<>0,(dnf-(dns_luni-IIF(!EMPTY(datain) AND !ISNULL(datain),((gnAn*12+gnLuna)-(YEAR(datain)*12+MONTH(datain))),0)))/dnf*100,0000) AS uzura ;
FROM cFisa ;
INTO CURSOR sel1 READWRITE
IF USED('cFisa')
USE IN cFisa
ENDIF
SELECT *, ;
IIF(uzura <= 100,ROUND((cants+CANT-CANTE)*PRET - (cants+CANT-CANTE)*PRET* uzura/100,gnPC),0) AS val_ramas ;
FROM sel1 ;
INTO CURSOR cFisaLic
IF USED('sel1')
USE IN sel1
ENDIF
*!* SELECT cFisaLic
*!* REPORT FORMAT fisa_lichidare.FRX TO PRINTER PROMPT NOCONSOLE PREVIEW
goExport.export2frx([cFisaLic],[fisa_lichidare])
IF USED('cFisaLic')
USE IN cFisaLic
ENDIF
ENDPROC && fisa_lichidare
***-----------------------------------------------------------------------------------------------------------
PROCEDURE fisa_echip_uzat_pred_imputat
*!* comentarii : 19.02.2008
PARAMETERS tnOperatie
&& tnOperatie: 1 - uzat; 2 - predat
PRIVATE pnOperatie
pnOperatie = tnOperatie
LOCAL lcRaport
lcRaport = []
PRIVATE pcTitlu, pcPerioada && , pcDataOra && pt. raport
STORE "" TO pcTitlu
*!* pcDataOra = get_ora(2)
PRIVATE pnId_responsabil
STORE 0 TO pnId_responsabil
loResp = caut_responsabil(.T.)
pnId_responsabil = loResp.id_responsabil
***-------------------------------
PRIVATE pdDataI, pdDataF
STORE {} TO pdDataI, pdDataF
loLuna = get_oluna(gnAn, gnLuna)
lcLuna1 = PADL(loLuna.lunamin,2,'0') + PADL(loLuna.anmin,4,'0')
lcLuna2 = PADL(loLuna.lunamax,2,'0') + PADL(loLuna.anmax,4,'0')
LOCAL lcData1
lcData1 = '01/'+PADL(loLuna.lunamin,2,'0')+'/'+ALLTRIM(STR(loLuna.anmin))
pdDataI = CTOD(lcData1)
pdDataF = ULTIMAZI(STR(loLuna.anmax), STR(loLuna.lunamax))
ofrmperioada = CREATEOBJECT('frm_perioada_zzllaaaa')
ofrmperioada.pdDataI = pdDataI
ofrmperioada.pdDataF = pdDataF
ofrmperioada.SHOW(1)
IF gnButon=2
RETURN
ENDIF
pcPerioada = DTOC(pdDataI) + ' - ' + DTOC(pdDataF)
PRIVATE pnNnir
pnNnir = 0
***-------------------------------
lcSel = [{call pack_gest_rapoarte.fisa_echip_uzat_pred_imputat(?gnAn, ?gnLuna, ?pnNnir, ?pdDataI, ?pdDataF, ?pnId_responsabil, ?pnOperatie, ?gnIdSucursala)}]
lcCursor = 'cFisa'
lnSucces = goExecutor.oExecute(lcSel,lcCursor)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare")
RETURN
ENDIF
***-------------------------------
*!* DO CASE
*!* CASE pnOperatie = 1
*!* pcTitlu = "FISA ECHIPAMENT UZAT"
*!* CASE pnOperatie = 2
*!* pcTitlu = "FISA ECHIPAMENT PREDAT"
*!* CASE pnOperatie = 3
*!* pcTitlu = "FISA ECHIPAMENT IMPUTAT"
*!* ENDCASE
PRIVATE pcSemnaturi
STORE '' TO pcSemnaturi
DO CASE
CASE pnOperatie = 1
pcTitlu = [FISA ECHIPAMENT UZAT]
lcRaport = [rap_echip_uzat]
param_listari(lcRaport,,@pcSemnaturi)
*!* SELECT cFisa
*!* REPORT FORM rap_echip_uzat TO PRINTER PROMPT PREVIEW
CASE pnOperatie = 2
pcTitlu = [FISA ECHIPAMENT PREDAT]
lcRaport = [rap_echip_predat]
param_listari(lcRaport,,@pcSemnaturi, .T.)
*!* SELECT cFisa
*!* REPORT FORM rap_echip_predat TO PRINTER PROMPT PREVIEW
CASE pnOperatie = 3
pcTitlu = [FISA ECHIPAMENT IMPUTAT]
lcRaport = [rap_echip_imputat]
param_listari(lcRaport,,@pcSemnaturi, .T.)
*!* SELECT cFisa
*!* REPORT FORM rap_echip_imputat TO PRINTER PROMPT PREVIEW
ENDCASE
goExport.export2frx([cFisa],lcRaport)
IF USED("cFisa")
USE IN cFisa
ENDIF
ENDPROC && fisa_echip_uzat_pred_imputat
***-----------------------------------------------------------------------------------------------------------

View File

@@ -0,0 +1,276 @@
*************************************************************************************************************************
* adauga corespondente intre partener si fiecare tip din lista de id-uri tip partener
* Date : 04/10/2006
* author : marius.mutu
******************************************************* ADAUGA_CORESP_TIP_PART ******************************************
PROCEDURE ADAUGA_CORESP_TIP_PART
LPARAMETERS tnIdPart, tcTipuriPartener
&& tcTipuriParteneri: lista de id-uri tipuri parteneri delimitata prin ','
*!* ADAUG TIPURI DE PARTENER - PARTENER DACA NU EXISTA
LOCAL lcTipPart, lcSql, lnSucces, i
IF EMPTY(tcTipuriPartener) OR EMPTY(tnIdPart)
RETURN
ENDIF
FOR i = 1 TO GETWORDCOUNT(tcTipuriPartener,[,;])
lcTipPart = GETWORDNUM(tcTipuriPartener,i,[,;])
lcSql = [begin PACK_DEF.adauga_coresp_tip_part(] + ALLTRIM(TRANSFORM(tnIdPart)) + [,] + lcTipPart + [); END;]
lnSucces = goExecutor.oExecute(lcSql)
IF lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,'Eroare')
ENDIF
ENDFOR
ENDPROC && ADAUGA_CORESP_TIP_PART
******************************************************* ADAUGA_CORESP_DELEGAT ******************************************
Procedure ADAUGA_CORESP_DELEGAT
Lparameters tnIdDelegat, tnIdPart
Local lcSql,lnSucces
lcSql = [begin pack_def.adauga_coresp_delegat(] + Alltrim(Str(tnIdDelegat)) + [,] + Alltrim(Str(tnIdPart)) + [); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,'Eroare')
Endif
EndProc
*************************************************************************************************************************
Procedure Adauga_Delegat_Partener
Lparameters tnIdDelegat, tnIdPartener
Local lcTipPart, lcSql, lnSucces
If Empty(tnIdDelegat) Or Empty(tnIdPartener)
Return
Endif
lcSql = [begin pack_def.adauga_coresp_tip_part(]+Alltrim(Str(tnIdDelegat))+[,?gnIdTipDelegati);] + ;
[pack_def.actualizeaza_coresp_delegati(] + Alltrim(Str(tnIdDelegat)) + [,'] + ;
Alltrim(Str(tnIdPartener)) + [;'); END;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare,0+16,'Eroare')
Endif
Endproc && Adauga_Delegat_Partener
PROCEDURE Adauga_partener
LPARAMETERS toPartener
Local lcAdresa, lcApart, lcBanca, lcBloc, lcCod_fiscal, lcCodpostal, lcCont_Banca, lcCorespDel
Local lcDA_apare, lcDenumire, lcDenumire_adresa, lcEmail, lcEtaj, lcFax, lcIdPart, lcIdString
Local lcId_Judet, lcId_categ_ent, lcId_loc, lcId_loc_inreg, lcId_tara, lcId_util, lcItem, lcJudet
Local lcJudetBucuresti, lcLocalitate, lcMesaj, lcMotiv_inactiv, lcNumar, lcNume, lcPrefix, lcPrenume
Local lcPrincipala, lcReg_comert, lcScara, lcSql, lcSqlInsert, lcStrada, lcSufix, lcTara, lcTelefon1
Local lcTelefon2, lcTip_persoana, lcWeb, lcinactiv, llSucces, lnIdJudet, lnIdJudetBucuresti
Local lnIdLocalitateBucuresti, lnIdTaraRO, lnItem, lnItems, lnSucces
*:Global pnIdAdresa, pnIdJudet
lcDenumire = Nvl(Strtran(Alltrim(Upper(toPartener.denumire)), ['], ['']), "")
lcNume = ''
IF TYPE('toPartener.nume') = 'C'
lcNume = Nvl(Strtran(Alltrim(Upper(toPartener.nume)), ['], ['']), "")
ENDIF
If Empty(m.lcNume)
lcNume = m.lcDenumire
m.lcPrenume = ''
Endif
lcPrenume = ''
IF TYPE('toPartener.prenume') = 'C'
lcPrenume = Nvl(Strtran(Alltrim(Upper(toPartener.prenume)), ['], ['']), "")
ENDIF
lcCod_fiscal = ''
IF TYPE('toPartener.cod_fiscal') = 'C'
lcCod_fiscal = Upper(Alltrim(toPartener.cod_fiscal))
ENDIF
lcReg_comert = ''
IF TYPE('toPartener.reg_com') = 'C'
lcReg_comert = Nvl(Alltrim(Upper(toPartener.reg_com)), "")
ENDIF
lcId_loc_inreg = 'NULL'
lcId_categ_ent = 'NULL'
lcPrefix = ""
lcSufix = ""
lcTip_persoana = IIF(!EMPTY(m.lcCod_fiscal) and LEN(m.lcCod_fiscal) < 13, "1", "2")
lcBanca = ""
lcCont_Banca = ""
lcinactiv = "0"
lcMotiv_inactiv = ""
lcTip = 'CLIENTI'
IF TYPE('toPartener.tip') = 'C'
lcTip = UPPER(ALLTRIM(toPartener.tip))
ENDIF
lcIdString = IIF(m.lcTip = 'CLIENTI', "16", "17") && 16 = CLIENTI, 17 = FURNIZORI
lcCorespDel = ""
lcId_util = "-3"
lcSqlInsert = [begin pack_def.adauga_partener('] + lcDenumire + [','] + lcNume + [','] + lcPrenume + [','] + lcCod_fiscal + [','] + ;
lcReg_comert + [',] + lcId_loc_inreg + [,] + lcId_categ_ent + [,'] + lcPrefix + [','] + lcSufix + [',] + ;
lcTip_persoana + [,'] + lcBanca + [','] + lcCont_Banca + [',] + lcinactiv + [,'] + lcMotiv_inactiv + [',] + ;
lcId_util + [,'] + lcIdString + [','] + lcCorespDel + [',?@pnIdPart); end;]
llSucces = goExecutor.oExecuta(m.lcSqlInsert)
***********************************
* Adresa partener
***********************************
lcIdPart = Alltrim(Str(m.pnIdPart))
lcAdresa = Nvl(Strtran(Alltrim(Upper(toPartener.adresa)), ['], ['']), "")
lcDenumire_adresa = ""
lcDA_apare = "0"
lcStrada = ""
lcNumar = ""
lcBloc = ""
lcScara = ""
lcApart = ""
lcEtaj = ""
lcId_loc = "NULL"
lcLocalitate = ""
lcId_Judet = "NULL"
lcCodpostal = "NULL"
lcId_tara = "NULL"
lcTelefon1 = ""
lcTelefon2 = ""
lcFax = ""
lcEmail = ""
lcWeb = ""
lcPrincipala = Iif(m.pnNrAdrese = 0, "1", "0")
lcinactiv = "0"
lcId_util = "-3"
lnItems = Getwordcount(m.lcAdresa, ',')
For lnItem = 1 To m.lnItems
lcItem = Alltrim(Getwordnum(m.lcAdresa, m.lnItem, ','))
Do Case
Case m.lnItem = 1 && strada
lcStrada = LEFT(Alltrim(m.lcItem), 150)
Case 'NR.' $ m.lcItem && nr strada
lcNumar = LEFT(Alltrim(Strtran(m.lcItem, 'NR.', '')), 10)
Case 'BL.' $ m.lcItem
lcBloc = LEFT(Alltrim(Strtran(m.lcItem, 'BL.', '')), 30)
Case 'SC.' $ m.lcItem
lcScara = LEFT(Alltrim(Strtran(m.lcItem, 'SC.', '')), 10)
Case 'ET.' $ m.lcItem
lcEtaj = LEFT(Alltrim(Strtran(m.lcItem, 'ET.', '')), 20)
Case 'AP.' $ m.lcItem
lcApart = LEFT(Alltrim(Strtran(m.lcItem, 'AP.', '')), 10)
Case 'COD POSTAL' $ m.lcItem
lcCodpostal = ALLTRIM(STR(INT(VAL(LEFT(Alltrim(Strtran(m.lcItem, 'COD POSTAL', '')), 20)))))
Case 'LOC.' $ m.lcItem
lcLocalitate = Alltrim(Strtran(m.lcItem, 'LOC.', ''))
Case 'JUD.' $ m.lcItem
lcJudet = Alltrim(Strtran(m.lcItem, 'JUD.', ''))
Case m.lnItem = m.lnItems - 1 And Empty(m.lcLocalitate)
lcLocalitate = m.lcItem
Case m.lnItem = m.lnItems
lcTara = m.lcItem
Endcase
Endfor
lnIdJudetBucuresti = 10
lcJudetBucuresti = "BUCURESTI"
lnIdLocalitateBucuresti = 1759
lnIdTaraRO = 1
If m.lcLocalitate = 'BUCURESTI'
m.lcLocalitate = 'BUCURESTI SECTORUL 1'
Endif
If Empty(m.lcLocalitate)
lcLocalitate = 'BUCURESTI SECTORUL 1'
Endif
If Empty(m.lcJudet)
lcJudet = m.lcJudetBucuresti
ENDIF
* caut adresa dupa localitate. daca nu o gasesc, o adaug
SELECT cAdrese
LOCATE FOR id_part = m.pnIdPart AND localitate = m.lcLocalitate
IF !FOUND()
pnIdJudet = 0
lnSucces = goExecutor.oSelect2Value([select j.id_judet, j.id_tara from syn_nom_judete j where j.judet = '] + m.lcJudet + [' and j.inactiv = 0 and j.sters = 0], @pnIdJudet)
If m.lnSucces > 0
IF EMPTY(NVL(m.pnIdJudet,0))
lnSucces = goExecutor.oSelect2Value([select j.id_judet, j.id_tara from syn_nom_judete j where j.judet like '%] + m.lcJudetBucuresti + [%' and j.inactiv = 0 and j.sters = 0], @pnIdJudet)
IF m.lnSucces > 0
lnIdJudet = m.pnIdJudet
ELSE
lnIdJudet = m.lnIdJudetBucuresti
ENDIF
ELSE
lnIdJudet = m.pnIdJudet
ENDIF
ELSE
This.Trace(goExecutor.cEroare)
lnIdJudet = m.lnIdJudetBucuresti
ENDIF
lcSql = [select l.id_loc, l.id_judet, j.id_tara from syn_nom_localitati l left join syn_nom_judete j on l.id_judet = j.id_judet where l.id_judet = ] + ALLTRIM(STR(m.lnIdJudet)) + [ and l.localitate = '] + m.lcLocalitate + [' and l.inactiv = 0 and l.sters = 0 order by l.localitate]
lnSucces = goExecutor.oExecute(m.lcSql, 'cLocalitateTemp')
If m.lnSucces > 0
IF RECCOUNT('cLocalitateTemp') > 0
Select cLocalitateTemp
Go Top
lcId_loc = Alltrim(Str(id_loc))
lcId_Judet = Alltrim(Str(id_judet))
lcId_tara = Alltrim(Str(id_tara))
Use In (Select('cLocalitateTemp'))
ELSE
Use In (Select('cLocalitateTemp'))
lcSql = [select l.id_loc, l.id_judet, j.id_tara from syn_nom_localitati l left join syn_nom_judete j on l.id_judet = j.id_judet where l.id_judet = ] + ALLTRIM(STR(m.lnIdJudet)) + [ and l.inactiv = 0 and l.sters = 0 order by l.localitate]
lnSucces = goExecutor.oExecute(m.lcSql, 'cLocalitateTemp')
If m.lnSucces > 0
Select cLocalitateTemp
Go Top
lcId_loc = Alltrim(Str(id_loc))
lcId_Judet = Alltrim(Str(id_judet))
lcId_tara = Alltrim(Str(id_tara))
ELSE
This.Trace(goExecutor.cEroare)
ENDIF
Use In (Select('cLocalitateTemp'))
ENDIF
ELSE
This.Trace(goExecutor.cEroare)
ENDIF
IF EMPTY(NVL(m.lcId_loc, ''))
lcId_loc = Alltrim(Str(m.lnIdLocalitateBucuresti))
lcId_Judet = Alltrim(Str(m.lnIdJudetBucuresti))
lcId_tara = Alltrim(Str(m.lnIdTaraRO))
Endif && lnSucces
If m.lcId_loc <> 'NULL'
pnIdAdresa = 0
*!* * caut adresa dupa localitate. daca nu o gasesc, o adaug
*!* lcSql = [SELECT id_adresa FROM adrese_parteneri where sters = 0 and inactiv = 0 and id_loc = ] + m.lcId_loc + [ AND id_part = ] + m.lcIdPart
*!* lnSucces = goExecutor.oSelect2Value(m.lcSql, @pnIdAdresa)
*!* If m.lnSucces < 0
*!* lcMesaj = goExecutor.cEroare
*!* Thisform.trace(m.lcMesaj)
*!* AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption )
*!* Exit
*!* Endif
If Empty(NVL(m.pnIdAdresa,0))
lcSql = [begin pack_def.adauga_adresa_partener2(] + lcIdPart + [,'] + lcDenumire_adresa + [',] + lcDA_apare + [,] + ;
['] + lcStrada + [','] + lcNumar + [','] + ;
lcBloc + [','] + lcScara + [','] + lcApart + [','] + lcEtaj + [',] + lcId_loc + [,'] + lcLocalitate + [',] + lcId_Judet + [,] + lcCodpostal + [,] + lcId_tara + [,'] + ;
lcTelefon1 + [','] + lcTelefon2 + [','] + lcFax + [','] + lcEmail + [','] + lcWeb + [',] + ;
lcPrincipala + [,] + lcinactiv + [,] + lcId_util + [,?@pnIdAdresa); end;]
lnSucces = goExecutor.oExecute(m.lcSql)
If m.lnSucces < 0
lcMesaj = goExecutor.cEroare
Thisform.trace(m.lcMesaj)
AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption )
Exit
Endif
Endif && empty(m.pnIdAdresa)
Endif && m.lcId_loc <> 'NULL'
ENDIF && !found()
ENDPROC && Adauga_partener

View File

@@ -0,0 +1,850 @@
***************************************************************************************************************
**** Clasa:
**** oDateListare
**** Proceduri:
**** rap_avize
**** rap_facturi
**** rap_incasari
**** rap_articole
**** rap_articole_tr
**** rap_avize_transfer
**** rap_centralizator
**** rap_centr_subgrupe
***************************************************************************************************************
Define Class oDateListare As Custom
datai = {}
dataf = {}
data_referinta = {}
csql = []
id_client = Null
nume_client = []
id_agent = Null
nume_agent = []
id_delegat = Null
nume_delegat = []
id_masina = Null
nrinmat = []
categorie = []
id_categorie_entitate = Null
denumire = []
id_articol = Null
grupa = []
id_grupa = Null
subgrupa = []
id_subgrupa = Null
id_gestiune_sursa = Null
gestiune_sursa = []
id_gestiune_dest = Null
gestiune_dest = []
id_util = Null
utilizator = []
id_gestiune = Null
nume_gestiune = []
subgr_art = []
id_furnart = Null
furnizor_art = []
*!* tip_raport = 1
*!* Dimension acoloane(30,4) && 1 - nume_camp
*!* && 2 - ordine la grupare
*!* && 3 - ordine la order by
*!* && 4 - sens la order by ( 1 - ASC, 2 - DESC )
Procedure Init
With This
ldData = Ttod(get_ora())
If Year(ldData) * 12 + Month(ldData) <> gnAn * 12 + gnLuna
.datai = Date(gnAn, gnLuna, 1)
.dataf = Gomonth(Date(gnAn, gnLuna, 1), 1) - 1
.data_referinta = .dataf
Else
.dataf = ldData
.data_referinta = ldData
.datai = Date(Year(ldData), Month(ldData), 1)
Endif
Endwith
Endproc
Enddefine
***************************************************************************************************************
********************************************** INCEPUT: rap_avize *********************************************
Procedure rap_avize
Private poListare
poListare = Createobject("oDateListare")
ofrmdatelistare = Createobject("frm_date_rapoarte_avize")
ofrmdatelistare.Show(1)
Release poListare, ofrmdatelistare
Endproc && rap_avize
********************************************** SFARSIT: rap_avize *********************************************
********************************************* INCEPUT: rap_facturi ********************************************
Procedure rap_facturi
Private poListare
poListare = Createobject("oDateListare")
ofrmdatelistare = Createobject("frm_date_rapoarte_facturi")
ofrmdatelistare.Show(1)
Release poListare, ofrmdatelistare
Endproc && rap_facturi
********************************************** SFARSIT: rap_facturi *******************************************
******************************************** INCEPUT: rap_incasari ********************************************
Procedure rap_incasari
Private poListare
poListare = Createobject("oDateListare")
ofrmdatelistare = Createobject("frm_date_rapoarte_incasari")
ofrmdatelistare.Show(1)
Release poListare, ofrmdatelistare
Endproc && rap_incasari
******************************************** SFARSIT: rap_incasari ********************************************
******************************************** INCEPUT: rap_articole ********************************************
Procedure rap_articole
Private poListare
poListare = Createobject("oDateListare")
ofrmdatelistare = Createobject("frm_date_rapoarte_articole")
ofrmdatelistare.Show(1)
Release poListare, ofrmdatelistare
Endproc && rap_articole
******************************************** SFARSIT: rap_articole ********************************************
******************************************** INCEPUT: rap_articole_tr ********************************************
Procedure rap_articole_tr
Private poListare
poListare = Createobject("oDateListare")
ofrmdatelistare = Createobject("frm_date_rapoarte_articole_tr")
ofrmdatelistare.Show(1)
Release poListare, ofrmdatelistare
Endproc && rap_articole_tr
******************************************** SFARSIT: rap_articole_tr ********************************************
******************************************** INCEPUT: rap_articole_v ********************************************
Procedure rap_articole_v
Private poListare
poListare = Createobject("oDateListare")
ofrmdatelistare = Createobject("frm_date_rapoarte_articole_v")
ofrmdatelistare.Show(1)
Release poListare, ofrmdatelistare
Endproc && rap_articole_tr
******************************************** SFARSIT: rap_articole_v ********************************************
***************************************** INCEPUT: rap_avize_transfer *****************************************
Procedure rap_avize_transfer
Private poListare
poListare = Createobject("oDateListare")
ofrmdatelistare = Createobject("frm_date_rapoarte_avize_tr")
ofrmdatelistare.Show(1)
Release poListare, ofrmdatelistare
Endproc && rap_avize_transfer
***************************************** SFARSIT: rap_avize_transfer *****************************************
***************************************** INCEPUT: rap_centralizator ******************************************
Procedure rap_centralizator
Private pcDataora, pcPerioada, pdDataI, pdDataF, pnTotalFTva1, pnTotalTva1, pnTotalFTva2, pnTotalTva2
Store {} To pdDataI, pdDataF
Store 0 To pnTotalFaraTva1, pnTotalTva1, pnTotalFaraTva2, pnTotalTva2
Local lcOrder, lcSql, lcFiltru, lnSucces, lnNefacturatFTva, lnNefacturatTva
ofrmperioada = Createobject('frm_perioada_zzllaaaa')
ofrmperioada.Show(1)
If gnButon = 2
Return
Endif
pcPerioada = [Perioada ] + Dtoc(pdDataI) + [ - ] + Dtoc(pdDataF)
Create Cursor crsCentralizator(tip N(2), categorie c(100), valftva N(20, Max(gnPC, 4)), valtva N(20, Max(gnPC, 4)))
*!* tip = 1 >> nu afiseaza sumele
pcDataora = get_ora(2)
If Used('crsCentrTot')
Use In crsCentrTot
Endif
lcSql1 = [select 1 as crs,tip,SUM(suma_fara_tva) as valftva,SUM(suma_tva) as valtva from ] + ;
gcS + [.fact_vrap_centralizator_tipuri where data_act between ?pdDataI and ?pdDataF] + gcCondSucursala + ;
[ group by tip]
lcSql2 = [select 2 as crs,null as tip,SUM(suma_fara_tva) as valftva,SUM(suma_tva) as valtva from ] + ;
gcS + [.fact_vrap_centralizator_art where data_act between ?pdDataI and ?pdDataF] + gcCondSucursala
lcSql3 = [select 3 as crs,null as tip,SUM(suma_fara_tva) as valftva,SUM(suma_tva) as valtva from ] + ;
gcS + [.fact_vrap_centralizator_rate where data_act between ?pdDataI and ?pdDataF] + gcCondSucursala
lcSql4 = [select 4 as crs,null as tip,SUM(disc_fara_tva) as valftva,SUM(disc_tva) as valtva from ] + ;
gcS + [.fact_vrap_centralizator_fact where data_act between ?pdDataI and ?pdDataF] + gcCondSucursala
lcSql = lcSql1 + [ union all ] + lcSql2 + [ union all ] + lcSql3 + [ union all ] + lcSql4
lcCursor = [crsCentrTot]
lnSucces = goExecutor.oexecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare")
Use In crsCentrTot
Return
Endif
*** prelucrare raport
*!* Facturi
Select crsCentralizator
Append Blank
Replace categorie With "1. FACTURI"
Select Sum(valftva) As valftva, Sum(valtva) As valtva From crsCentrTot Where tip < 20 And crs = 1 Into Cursor crsTemp
Select crsTemp
Scatter Name poCentr
Select crsCentralizator
Replace valftva With Nvl(poCentr.valftva, 0), valtva With Nvl(poCentr.valtva, 0)
pnTotalFTva1 = Nvl(poCentr.valftva, 0)
pnTotalTva1 = Nvl(poCentr.valtva, 0)
*!* Avize catre clienti
Select crsCentralizator
Append Blank
Replace categorie With "2. AVIZE CATRE CLIENTI", tip With 1
*!* Valoare totala
Append Blank
Replace categorie With Space(5) + "a) Valoare totala"
Select Sum(valftva) As valftva, Sum(valtva) As valtva From crsCentrTot Where Inlist(tip, 21, 22) And crs = 1 Into Cursor crsTemp
Select crsTemp
Scatter Name poCentr
Select crsCentralizator
Replace valftva With Nvl(poCentr.valftva, 0), valtva With Nvl(poCentr.valtva, 0)
lnNefacturatFTva = Nvl(poCentr.valftva, 0)
lnNefacturatTva = Nvl(poCentr.valtva, 0)
*!* Valoare facturata
Append Blank
Replace categorie With Space(5) + "b) Valoare facturata"
Select Sum(valftva) As valftva, Sum(valtva) As valtva From crsCentrTot Where tip = 4 And crs = 1 Into Cursor crsTemp
Select crsTemp
Scatter Name poCentr
Select crsCentralizator
Replace valftva With Nvl(poCentr.valftva, 0), valtva With Nvl(poCentr.valtva, 0)
lnNefacturatFTva = lnNefacturatFTva - Nvl(poCentr.valftva, 0)
lnNefacturatTva = lnNefacturatTva - Nvl(poCentr.valtva, 0)
*!* Valoare retururi
Append Blank
Replace categorie With Space(5) + "c) Valoare retururi"
Select Sum(valftva) As valftva, Sum(valtva) As valtva From crsCentrTot Where tip = 24 And crs = 1 Into Cursor crsTemp
Select crsTemp
Scatter Name poCentr
Select crsCentralizator
Replace valftva With Nvl(poCentr.valftva, 0), valtva With Nvl(poCentr.valtva, 0)
lnNefacturatFTva = lnNefacturatFTva + Nvl(poCentr.valftva, 0)
lnNefacturatTva = lnNefacturatTva + Nvl(poCentr.valtva, 0)
*!* Valoare nefacturata
Append Blank
Replace categorie With Space(5) + "d) Valoare nefacturata (a-b+c)"
Replace valftva With lnNefacturatFTva, valtva With lnNefacturatTva
pnTotalFTva1 = pnTotalFTva1 + lnNefacturatFTva
pnTotalTva1 = pnTotalTva1 + lnNefacturatTva
*!* Transferuri intre subunitati
Select crsCentralizator
Append Blank
Replace categorie With "3. TRANSFERURI INTRE SUBUNITATI"
Select Sum(valftva) As valftva, Sum(valtva) As valtva From crsCentrTot Where tip = 23 And crs = 1 Into Cursor crsTemp
Select crsTemp
Scatter Name poCentr
Select crsCentralizator
Replace valftva With Nvl(poCentr.valftva, 0), valtva With Nvl(poCentr.valtva, 0)
pnTotalFTva1 = pnTotalFTva1 + Nvl(poCentr.valftva, 0)
pnTotalTva1 = pnTotalTva1 + Nvl(poCentr.valtva, 0)
*!* Articole
Select crsCentralizator
Append Blank
Replace categorie With "4. TOTAL ARTICOLE VANDUTE"
Select crsCentrTot
Locate For crs = 2
Scatter Name poCentr
Select crsCentralizator
Replace valftva With Nvl(poCentr.valftva, 0), valtva With Nvl(poCentr.valtva, 0)
pnTotalFTva2 = Nvl(poCentr.valftva, 0)
pnTotalTva2 = Nvl(poCentr.valtva, 0)
*!* Articole
Select crsCentralizator
Append Blank
Replace categorie With "5. TOTAL RATE CONTRACTE"
Select crsCentrTot
Locate For crs = 3
Scatter Name poCentr
Select crsCentralizator
Replace valftva With Nvl(poCentr.valftva, 0), valtva With Nvl(poCentr.valtva, 0)
pnTotalFTva2 = pnTotalFTva2 + Nvl(poCentr.valftva, 0)
pnTotalTva2 = pnTotalTva2 + Nvl(poCentr.valtva, 0)
*!* Discount-uri globale
Select crsCentralizator
Append Blank
Replace categorie With "6. TOTAL DISCOUNT GLOBAL"
Select crsCentrTot
Locate For crs = 4
Scatter Name poCentr
Select crsCentralizator
Replace valftva With Nvl(poCentr.valftva, 0), valtva With Nvl(poCentr.valtva, 0)
pnTotalFTva2 = pnTotalFTva2 - Nvl(poCentr.valftva, 0)
pnTotalTva2 = pnTotalTva2 - Nvl(poCentr.valtva, 0)
Release poCentr
Use In crsTemp
If Used('crsCentrTot')
Use In crsCentrTot
Endif
If Reccount('crsCentralizator') > 0
Keyboard "{ctrl+f10}"
Select crsCentralizator
Report Form raport_centralizator To Printer Prompt Preview
Else
amessagebox("Nu exista inregistrari pentru listare!", 0 + 48, "Atentie")
Endif
If Used('crsCentralizator')
Use In crsCentralizator
Endif
Release pcDataora, pcPerioada, pdDataI, pdDataF, pnTotalFTva1, pnTotalTva1, pnTotalFTva2, pnTotalTva2
Endproc && rap_centralizator
***************************************** SFARSIT: rap_centralizator ******************************************
***************************************** INCEPUT: rap_centr_subgrupe *****************************************
Procedure rap_centr_subgrupe
Local lcSql, lnSucces, lcCursor
Private pcDataora, pcPerioada, pdDataI, pdDataF, pcTitlu
Store {} To pdDataI, pdDataF
lcCursor = [crscentrsubgr]
ofrmperioada = Createobject('frm_perioada_zzllaaaa')
ofrmperioada.Show(1)
If gnButon = 1
pcPerioada = [Perioada ] + Dtoc(pdDataI) + [ - ] + Dtoc(pdDataF)
Else
Return
Endif
lcXMLGestiune = caut_gestiune_xml(2)
If !Empty(lcXMLGestiune) And gnButon = 1
Xmltocursor(lcXMLGestiune, "crsGestTemp")
If Reccount('crsGestTemp') = 0
amessagebox('Nu ati selectat nici o gestiune!', 0 + 48, 'Inventar')
Return
Endif
pcTitlu = [CENTRALIZATOR VALORI PE SUBGRUPE DE ARTICOLE]
lcListaIdGestiuni = cursor2lista("crsGestTemp", "id_gestiune", ",")
Use In crsGestTemp
Else
Return
Endif
If Used(lcCursor)
Use In (lcCursor)
Endif
lcSql = [select subgrupa,nume_gestiune,id_gestiune,Sum(val_ach) as val_ach,Sum(val_vanz) as val_vanz from ] + gcS + [.fact_vcentr_val_subgrupe ] + ;
[where data_act between ?pdDataI and ?pdDataF and id_gestiune in (] + lcListaIdGestiuni + [) ] + ;
[group by id_gestiune,nume_gestiune,subgrupa ] + ;
[order by nume_gestiune,subgrupa]
lnSucces = goExecutor.oexecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 16, "Eroare")
Else
goExport.export2frx(lcCursor, [rap_centr_val_subgrupe]) && , , , , , , .T.)
Endif
If Used(lcCursor)
Use In (lcCursor)
Endif
Release lcSql, lnSucces, pcDataora, pcPerioada, pdDataI, pdDataF, pcTitlu
Endproc && rap_centr_subgrupe
***************************************** SFARSIT: rap_centr_subgrupe *****************************************
Procedure centr_avize_ruta
lcFiltru = [2=2]
lcSchema = [id_lucrare n(10),nrord c(100)]
lcOrder = [nrord]
lccoloane = [nrord]
lcTitlu = [ALEGETI LUCRAREA]
lcTitluColoane = [Lucrare]
*!* llMaiMulteMasini = tlMaiMulteMasini
lcSelect = [select id_lucrare,nrord from vnom_lucrari]
lcFiltruOriginal = [inactiv = 0]
*!* lcNumeProc = [nom_nomrute]
llToateIreg = .F.
lcPrimaColoana = [nrord]
lnPornire = 1
*!* lnTipReturn = Iif(tlMaiMulteMasini, 1, 0)
lcIdColumn = "id_lucrare"
loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, , llToateIreg, lcFiltruOriginal)&&, lcPrimaColoana, lnPornire, , lcIdColumn)
*!* loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, lcNumeProc, tlToateIreg, lcFiltruOriginal) && 11.07.2007
If Empty(loCauta.id_lucrare) Or Isnull(loCauta.id_lucrare)
Return
Endif
lcSql = [ select * from fact_vrap_avize_ruta where id_lucrare = ] + Alltrim(Str(loCauta.id_lucrare)) + [ order by ruta,data_act,numar_act]
lcCursor = [crsavizeruta]
lnSucces = goExecutor.oexecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare")
Use In crsavizeruta
Return
Endif
Select crsavizeruta
If Reccount() < 1
amessagebox('Nu exista date pentru comanda selectata!', 0 + 64, 'Atentie')
Use In crsavizeruta
Return
Endif
Private pcDataora
pcDataora = get_ora(2)
Select crsavizeruta
Report Form rap_avizerute To Printer Prompt Preview
Use In crsavizeruta
Endproc
*-------------------------------------------------------------------------------
Procedure centr_art_ruta
lcFiltru = [2=2]
lcSchema = [id_lucrare n(10),nrord c(100)]
lcOrder = [nrord]
lccoloane = [nrord]
lcTitlu = [ALEGETI LUCRAREA]
lcTitluColoane = [Lucrare]
*!* llMaiMulteMasini = tlMaiMulteMasini
lcSelect = [select id_lucrare,nrord from vnom_lucrari]
lcFiltruOriginal = [inactiv = 0]
*!* lcNumeProc = [nom_nomrute]
llToateIreg = .F.
lcPrimaColoana = [nrord]
lnPornire = 1
*!* lnTipReturn = Iif(tlMaiMulteMasini, 1, 0)
lcIdColumn = "id_lucrare"
loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, , llToateIreg, lcFiltruOriginal)&&, lcPrimaColoana, lnPornire, , lcIdColumn)
*!* loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, lcNumeProc, tlToateIreg, lcFiltruOriginal) && 11.07.2007
If Empty(loCauta.id_lucrare) Or Isnull(loCauta.id_lucrare)
Return
Endif
lcSql = [ select * from fact_vrap_art_ruta where id_lucrare = ] + Alltrim(Str(loCauta.id_lucrare)) + [ order by ruta,subgrupa,denumire]
lcCursor = [crsartruta]
lnSucces = goExecutor.oexecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare")
Use In crsartruta
Return
Endif
Select crsartruta
If Reccount() < 1
amessagebox('Nu exista date pentru comanda selectata!', 0 + 64, 'Atentie')
Use In crsartruta
Return
Endif
Private pcDataora
pcDataora = get_ora(2)
Select crsartruta
Report Form rap_ARTrute To Printer Prompt Preview
Use In crsartruta
Endproc
*---------------------------------------------------------------------------
Procedure rap_factav_doc && lansat din rap_listfactav_centr, lansat la randul lui din frm_facturi (ofacturare.vcx)
Local lnNrIreg, lcFiltruInit, lnRecSel
Store 0 To lnNrIreg, lnRecSel
Store '' To lcFiltruInit
Select crsfacturi
lcFiltruInit = Set("Filter")
lnRecSel = Recno()
Set Filter To ales = 1
Count For ales = 1 To lnNrIreg
*!* modificare v 2.0.40
*!* If Reccount() <1
If lnNrIreg < 1
*!* modificare v 2.0.40 ^
amessagebox('Nu ati selectat vreun document!', 0 + 48, 'Atentie')
*!* modificare v 2.0.40
*!* Return
*!* EndIf
Else
*!* modificare v 2.0.40 ^
Private pcDataora
pcDataora = get_ora(2)
Select crsfacturi
Report Form rap_avizedoc To Printer Prompt Preview
*!* modificare v 2.0.40
Endif
*!* modificare v 2.0.40 ^
Select crsfacturi
Set Filter To &lcFiltruInit
If lnRecSel > 0
Goto lnRecSel
Endif
Endproc
*---------------------------------------------------------------------------
Procedure rap_factav_grupate_doc && lansat din rap_listfactav_centr, lansat la randul lui din frm_facturi (ofacturare.vcx)
Local lnNrIreg, lcFiltruInit, lnRecSel
Store 0 To lnNrIreg, lnRecSel
Store '' To lcFiltruInit
Select crsfacturi
lcFiltruInit = Set("Filter")
lnRecSel = Recno()
Set Filter To ales = 1
Count For ales = 1 To lnNrIreg
*!* modificare v 2.0.40
*!* If Reccount() <1
If lnNrIreg < 1
*!* modificare v 2.0.40 ^
amessagebox('Nu ati selectat vreun document!', 0 + 48, 'Atentie')
*!* modificare v 2.0.40
*!* Return
*!* EndIf
Else
*!* modificare v 2.0.40 ^
Private pcDataora
pcDataora = get_ora(2)
Select crsfacturi
*!* modificare v 2.0.63
If Used('crsdocgrup')
Use In crsdocgrup
Endif
Select client, numar_act, data_act, valoarea, total_cu_tva, ;
PADR(Iif(Inlist(tip, 1, 2, 3, 4, 5, 6, 8, 9, 10, -1, -2, -3, -4, -8, -11), 'FACTURI', ;
IIF(Inlist(tip, 21, 22, 24, 26, -7, -13), 'AVIZE CATRE CLIENTI', ;
IIF(Inlist(tip, 23, 25, 27, 30, 41, -6), 'TRANSFERURI', ;
IIF(Inlist(tip, 28, 29), 'AVIZE CATRE CLIENTI DEBITORI', ;
IIF(Inlist(tip, -9), 'AVIZE DE PROTOCOL', ;
IIF(Inlist(tip, -10), 'AVIZE DE SPONSORIZARI', ;
IIF(Inlist(tip, 7), 'CREDIT NOTE', ;
IIF(Inlist(tip, 42, 47), 'CLIENTI IN CUSTODIE - COMANDA', ;
IIF(Inlist(tip, 43), 'BONURI FISCALE MAGAZINE', '<FARA TIP>'))))))))), 70, ' ') As explicatie ;
FROM crsfacturi ;
ORDER By 6, 1, 3 ;
INTO Cursor crsdocgrup
Report Form rap_avizedoc_grup To Printer Prompt Preview
Use In crsdocgrup
*!* modificare v 2.0.63 ^
*!* modificare v 2.0.40
Endif
*!* modificare v 2.0.40 ^
Select crsfacturi
Set Filter To &lcFiltruInit
If lnRecSel > 0
Goto lnRecSel
Endif
Endproc
*---------------------------------------------------------------------------
Procedure rap_factav_art && lansat din rap_listfactav_centr, lansat la randul lui din frm_facturi (ofacturare.vcx)
Local lcidvanzari, lcSql, lnSucces
Store '' To lcidvanzari
Local lnNrIreg, lcFiltruInit, lnRecSel
Store 0 To lnNrIreg, lnRecSel
Store '' To lcFiltruInit
Select crsfacturi
lcFiltruInit = Set("Filter")
lnRecSel = Recno()
Set Filter To ales = 1
Count For ales = 1 To lnNrIreg
*!* modificare v 2.0.40
*!* If Reccount() <1
If lnNrIreg < 1
*!* modificare v 2.0.40 ^
amessagebox('Nu ati selectat vreun document!', 0 + 48, 'Atentie')
*!* modificare v 2.0.40
*!* Return
*!* EndIf
Else
*!* modificare v 2.0.40
Select crsfacturi
Scan
lcidvanzari = lcidvanzari + [, ] + Alltrim(Str(crsfacturi .id_vanzare))
Select crsfacturi
Endscan
lcidvanzari = Substr(lcidvanzari, 2)
*!* modificare v 2.0.83
*!* lcSql = [select a.codmat,a.denumire,a.pret_achizitie,a.pret,a.subgrupa,sum(cantitate) as cantitate from fact_vfacturi_detalii a ]+;
*!* [ where a.id_vanzare in (]+Alltrim(lcidvanzari)+[)]+;
*!* [ group by a.codmat,a.denumire,a.pret_achizitie,a.pret,a.subgrupa]+;
*!* [ order by a.codmat, a.denumire ]
lcSql = [select d.codmat,NVL(d.denumire, a.explicatie) as denumire,a.pret_achizitie,] + ;
[sum(round(a.cantitate*a.pret_achizitie,?gnPc)) as valoare_achizitie,] + ;
[pack_sesiune.calculeaza_pret_cu_tva(a.pret,nvl(c.curs,1)/NVL(c.multiplicator,1),a.id_valuta,a.proc_tvav,a.pret_cu_tva,2) as pretvtva,] + ;
[sum(pack_sesiune.calculeaza_total_cu_tva(a.pret,a.diferenta,nvl(c.curs,1)/NVL(c.multiplicator,1),a.discount_unitar,b.discount_evidentiat,a.cantitate,a.pret_cu_tva,a.proc_tvav,?gnPPretV,?gnPC)) as valoarevtva,] + ;
[e.subgrupa,sum(a.cantitate) as cantitate ] + ;
[from vanzari_detalii a ] + ;
[left join vanzari b on a.id_vanzare = b.id_vanzare ] + ;
[left join vanzari_cursuri c on a.id_vanzare = c.id_vanzare and a.id_valuta = c.id_valuta ] + ;
[left join nom_articole d on a.id_articol = d.id_articol ] + ;
[left join gest_art_sbgr e on d.id_subgrupa = e.id_subgrupa ] + ;
[where a.sters = 0 and a.id_vanzare in (] + Alltrim(lcidvanzari) + [) ] + ;
[group by NVL(d.denumire, a.explicatie),d.codmat,a.pret_achizitie,e.subgrupa,a.pret,nvl(c.curs,1),NVL(c.multiplicator,1),a.id_valuta,a.proc_tvav,a.pret_cu_Tva ] + ;
[order by e.subgrupa,NVL(d.denumire, a.explicatie) ]
*!* modificare v 2.0.83 ^
lnSucces = goExecutor.oexecute(lcSql, 'crsfactdetaliiartrap')
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
*!* modificare v 2.0.40
*!* Return
*!* Endif
Else
*!* modificare v 2.0.40 ^
Private pcDataora
pcDataora = get_ora(2)
Select crsfactdetaliiartrap
Report Form rap_artdoc To Printer Prompt Preview
*!* modificare v 2.0.40
Endif
Endif
*!* modificare v 2.0.40 ^
Select crsfacturi
Set Filter To &lcFiltruInit
If lnRecSel > 0
Goto lnRecSel
Endif
Endproc
*---------------------------------------------------------------------------
Procedure rap_borderou_ar
Local lcCursor, lcCursorAdrese
lcCursor = [crsARClienti]
lcCursorAdrese = [crsARAdresePart]
lcCursorFirma = [crsARDateFirma]
Select a.client, a.id_part, Space(255) As loc_judet From crsfacturi a With (Buffering = .T.) ;
Where ales = 1 Order By 1 Into Cursor (lcCursor) NOFILTER Readwrite
If Reccount(lcCursor) < 1
amessagebox('Nu ati selectat nici un document!', 0 + 48, 'Atentie')
Else
lcSql = [select antet as denumire,adresa,telefon from syn_nom_firme where id_firma = ?gnIdFirma]
If goExecutor.oExecuta(lcSql, lcCursorFirma)
Private poFirma
Select (lcCursorFirma)
Scatter Name poFirma
Select (lcCursor)
lcListaId = []
Scan For !Isnull(id_part)
lcListaId = lcListaId + [,] + Alltrim(Str(id_part))
Endscan
lcSql = [select distinct id_part,localitate||nvl2(judet,' ('||judet||')','') as loc_judet from vadrese_parteneri ] + ;
[where id_part in (] + Substr(lcListaId, 2) + [) and principala = 1]
If goExecutor.oExecuta(lcSql, lcCursorAdrese)
Select (lcCursorAdrese)
Scan For !Isnull(loc_judet)
lcLocJudet = loc_judet
lnIdPart = id_part
Update (lcCursor) Set loc_judet = lcLocJudet Where id_part = lnIdPart
Endscan
goExport.export2frx(lcCursor, [borderou_ar], , , , , , .T.)
Endif
Use In (Select(lcCursorAdrese))
Endif
Use In (Select(lcCursorFirma))
Endif
Use In (Select(lcCursor))
Endproc
*---------------------------------------------------------------------------
Procedure rap_factav_docart && lansat din rap_listfactav_centr, lansat la randul lui din frm_facturi (ofacturare.vcx)
Select a.*, 1 As g1 From crsfacturi a With (Buffering = .T.) Where ales = 1 Into Cursor crsDocArt NOFILTER Readwrite
Select crsDocArt
If Reccount() < 1
amessagebox('Nu ati selectat nici un document!', 0 + 48, 'Atentie')
*!* modificare v 2.0.40
*!* Return
*!* EndIf
Else
*!* modificare v 2.0.40 ^
Local lcidvanzari, lcSql, lnSucces
Store '' To lcidvanzari
Select crsDocArt
Scan
lcidvanzari = lcidvanzari + [, ] + Alltrim(Str(crsDocArt.id_vanzare))
Select crsDocArt
Endscan
lcidvanzari = Substr(lcidvanzari, 2)
lcSql = [select a.codmat,a.denumire,a.pret_achizitie,a.pret,a.subgrupa,sum(cantitate) as cantitate from fact_vfacturi_detalii a ] + ;
[ where a.id_vanzare in (] + Alltrim(lcidvanzari) + [)] + ;
[ group by a.codmat,a.denumire,a.pret_achizitie,a.pret,a.subgrupa] + ;
[ order by a.codmat, a.denumire ]
lnSucces = goExecutor.oexecute(lcSql, 'crsfactdetaliiartrap')
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
*!* modificare v 2.0.40
*!* Return
*!* EndIf
Else
*!* modificare v 2.0.40 ^
Private pcDataora
pcDataora = get_ora(2)
Select crsfactdetaliiartrap
Report Form rap_artdoc To Printer Prompt Preview
*!* modificare v 2.0.40
Endif
Endif
*!* modificare v 2.0.40 ^
Select crsfacturi
Set Filter To &lcFiltruInit
If lnRecSel > 0
Goto lnRecSel
Endif
Endproc
*----------------------------------------------------------------------------------------------
Procedure rap_transf_art
Local lcidvanzari, lcSql, lnSucces
Store '' To lcidvanzari
Select * From crsfacturi With (Buffering = .T.) Where ales = 1 Into Cursor crsTmp
If Reccount() < 1
amessagebox('Nu ati selectat vreun document!', 0 + 48, 'Atentie')
*!* modificare v 2.0.40
*!* Return
*!* EndIf
Else
*!* modificare v 2.0.40 ^
Select crsTmp
Scan
lcidvanzari = lcidvanzari + [, ] + Alltrim(Str(crsTmp.id_vanzare))
Select crsTmp
Endscan
Use In crsTmp
lcidvanzari = Substr(lcidvanzari, 2)
lcSql = [select a.codmat,a.denumire,a.pret_achizitie,a.pret,a.subgrupa,sum(cantitate) as cantitate,client from fact_vfacturi_detalii a ] + ;
[ where a.id_vanzare in (] + Alltrim(lcidvanzari) + [)] + ;
[ group by a.denumire,a.codmat,a.pret_achizitie,a.pret,a.subgrupa,client] + ;
[ order by a.subgrupa,a.denumire ]
lnSucces = goExecutor.oexecute(lcSql, 'crssitconsum')
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
*!* modificare v 2.0.40
*!* Return
*!* Endif
Else
*!* modificare v 2.0.40 ^
Private pcDataora
pcDataora = get_ora(2)
Select crssitconsum
Report Form rap_transferart To Printer Prompt Preview
*!* modificare v 2.0.40
Endif
Endif
*!* modificare v 2.0.40 ^
Select crsfacturi
Endproc &&rap_transf_art
*---------------------------------------------------------------------------
* Borderou documente de trimis la clienti grupat pe clienti
* Salveaza borderouri individiuale pdf si listeaza la imprimanta un raport cu toate borderourile [borderou1-borderou2]
* Un borderou pentru toti clientii sau un borderou pentru un client, daca se transmite tnIdPart
Procedure rap_borderou_clienti && lansat din frm_facturi (ofacturare.vcx)
Lparameters tcIds, tlPDF, tlListare, tcCursorFacturi
* tlSilent, tlPDF: se apeleaza cu parametri din generare_borderou_facturi si email_borderou_facturi pentru generare pdf silentios pentru fiecare id_borderou
* tlListare: se apeleaza din frm_facturi.do_listare
* tcIds : lista id-uri borderou C; id_borderou N
* tcCursorFacturi: optional, pentru citirea ctip_factura suprascris de utilizator (ACN!)
Private pcDataora
Local loPreviewerConfig As "PreviewerConfig"
Local lcDestinationFile, lcSelect, lcSetare, lcSetareVizualizare, lcSql, ldDataBorderou, llSucces
Local lnIdBorderou, lcIds, lcCursor, lcCursor2
pcDataora = get_ora(2)
lcSelect = Select()
lcIds = IIF(TYPE('tcIds') = 'C', m.tcIds, IIF(TYPE('tcIds') = 'N', ALLTRIM(STR(m.tcIds)), ''))
llSucces = !EMPTY(m.lcIds)
lcCursor = SYS(2015)
SET STEP ON
IF m.llSucces
TEXT TO lcSql TEXTMERGE NOSHOW
Select client, data_act, numar_act, total_fara_tva, total_tva, total_cu_tva, valval, tvaval, totval, ctip_factura, in_valuta, valuta, id_vanzare, id_client, id_borderou, data_borderou, email_client, adresa_client
FROM fact_vborderou_detalii
WHERE id_borderou in (<<m.lcIds>>)
ORDER By 1, 2, 3
ENDTEXT
llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursor)
***************
* Suprascriere ctip_factura special pentru ACN, pentru ca voiau ENERGIE ELECTRICA in loc de CHIRII SI UTILITATI pe borderou
* si nu am adaugat un tip nou de prestatii ENERGIE ELECTRICA
***************
IF !EMPTY(m.tcCursorFacturi) AND USED(m.tcCursorFacturi)
SELECT (m.tcCursorFacturi)
SCAN
lnIdVanzare = id_vanzare
lcTipFactura = ALLTRIM(NVL(ctip_factura,''))
UPDATE (m.lcCursor) SET ctip_factura = m.lcTipFactura WHERE id_vanzare = m.lnIdVanzare
ENDSCAN
ENDIF
ENDIF
If m.llSucces
***********************
lcSetare = [BORDEROU]
lcSetareVizualizare = [PREVIZBORDEROU]
loPreviewerConfig = Createobject("PreviewerConfig") && rapoarte.prg
* Listez toate borderourile intr-un singur raport
If m.tlListare
* m.loPreviewerConfig.SetValue("lDirectPrint", m.tlSilent)
goExport.export2frx(m.lcCursor, [rap_borderou_clienti], .F., m.lcSetareVizualizare, m.lcSetare, , , .T., , loPreviewerConfig)
Endif && tlListare
* salvez pdf-uri cu borderouri individuale cu denumirea borderou_[aaaallzz]_[tnId].pdf
If m.tlPDF
SELECT distinct id_borderou FROM (m.lcCursor) INTO CURSOR cIdsBorderouListareTemp
SELECT cIdsBorderouListareTemp
lcRecc = ALLTRIM(STR(RECCOUNT()))
SCAN
lnIdBorderou = id_borderou
lcRecno = ALLTRIM(STR(RECNO()))
WAIT WINDOW 'Generare pdf borderou ' + m.lcRecno + '/' + m.lcRecc NOWAIT
lcCursor2 = SYS(2015)
SELECT * FROM (m.lcCursor) WHERE id_borderou = m.lnIdBorderou INTO CURSOR (m.lcCursor2)
SELECT (m.lcCursor2)
GO TOP
ldDataBorderou = data_borderou
lcDestinationFile = GetPDFBorderouFile(m.ldDataBorderou, m.lnIdBorderou)
If !File(m.lcDestinationFile) Or (File(m.lcDestinationFile) And amessagebox('Doriti sa suprascrieti ' + m.lcDestinationFile + '?', 4 + 32, _Screen.Caption) = 6)
m.loPreviewerConfig.SetValue("cDestFile", m.lcDestinationFile)
m.loPreviewerConfig.SetValue("lOpenDestFile", .F.)
m.loPreviewerConfig.SetValue("lDirectPrint", .T.)
m.loPreviewerConfig.SetValue("lOpenViewer", .F.)
*!* lcPdfHasImage = goApp.ReadIni([email_factura], "borderoupdfhasimage")
*!* llPdfHasImage = (m.lcPdfHasImage = "1")
*!* If Empty(m.lcPdfHasImage)
*!* goApp.WriteIni([email_factura], "borderoupdfhasimage", "0")
*!* llPdfHasImage = .F.
*!* Endif
*!* m.loPreviewerConfig.SetValue("lPDFasImage", m.llPdfHasImage)
* tcAlias, tcRaport, tlCereTitlu, tcSetareVizualizare, tcSetareImprimanta, tcParametriListare, toListener, tlMultiPreview, tcReportPreviewer, toPreviewerConfig
goExport.export2frx(m.lcCursor2, [rap_borderou_clienti], .F., m.lcSetareVizualizare, m.lcSetare, , , .T., , loPreviewerConfig)
USE IN (SELECT(m.lcCursor2))
Endif
ENDSCAN && cIdsBorderouListareTemp
USE IN (SELECT('cIdsBorderouListareTemp'))
Endif && m.tlPDF
***********************
*!* goExport.export2frx('crsBorderouFacturiTemp', [rap_borderou_clienti], , , , , , .T.)
Use In (Select(m.lcCursor))
Endif && llSuccess
Select (m.lcSelect)
Return m.llSucces
Endproc && rap_borderou_clienti

View File

@@ -0,0 +1,62 @@
********* INCEPUT: viz_retetar ***********
Procedure viz_retetar
Private pnIdReteta
Store 0 To pnIdReteta
ofrm_ret = Createobject('frm_retetar')
ofrm_ret.Show(1)
Release ofrm_ret
*!* && Produse
*!* lcSelect1 = ['select distinct id_produs,codmat_pr,denumire_pr,um_pr,cont_pr ] + ;
*!* [ from ] + gcS + [.vgest_retetar where 1=2']
*!* lcCursor1 = [crsProduse]
*!* lcSchema1 = ['']
*!* lcOrder1 = [denumire_pr]
*!* lcFiltru1 = [1=1]
*!* lcNume_coloane1= [codmat_pr;denumire_pr;um_pr;cont_pr]
*!* lcTitlu_coloane1 = [Cod produs,Denumire,Unitate de masura,Cont]
*!*
*!* PRIVATE pnId_produs,pncant_veche,pncant_noua
*!* STORE 0 TO pnId_produs,pncant_veche,pncant_noua
*!*
*!* &&Materiale
*!* lcSelect2 = ['select id_retetar,id_produs,id_material,codmat_mat,denumire_mat,'+] +;
*!* ['um_mat,cont_mat,cant_mat from ] + gcS + [.vgest_retetar where 1=2']
*!* lcCursor2 = [crsMateriale]
*!* lcSchema2 = ['id_retetar n(5),id_produs n(10),id_material n(10),codmat_mat c(50),' +] +;
*!* ['denumire_mat c(100),um_mat c(6),cont_mat c(4),cant_mat n(12,4)']
*!* lcOrder2 = [denumire_mat]
*!* lcFiltru2 = [ id_produs = ?pnId_produs ]
*!* lcNume_coloane2= [codmat_mat;denumire_mat;um_mat;cont_mat;cant_mat]
*!* lcTitlu_coloane2 = [Cod material,Denumire,Unitate de masura,Cont,Cantitate]
*!*
*!* ofrm_ret = CREATEOBJECT('frm_retetar')
*!*
*!* WITH ofrm_ret.ct_grid_search1
*!* .cSelect = lcSelect1
*!* .cSchema = lcSchema1
*!* .cFiltruOriginal = lcFiltru1
*!* .cFiltru = lcFiltru1
*!* .cTitlu = 'PRODUSE'
*!* .corder = lcorder1
*!* .cnume_coloane = lcnume_coloane1
*!* .ctitlu_coloane = lctitlu_coloane1
*!* .cnumecursor = lccursor1
*!* ENDWITH
*!* WITH ofrm_ret.ct_grid_search2
*!* .cSelect = lcSelect2
*!* .cSchema = lcSchema2
*!* .cFiltruOriginal = lcFiltru2
*!* .cFiltru = [1=1]
*!* .cTitlu = 'MATERIALE'
*!* .corder = lcorder2
*!* .cnume_coloane = lcnume_coloane2
*!* .ctitlu_coloane = lctitlu_coloane2
*!* .cnumecursor = lccursor2
*!* ENDWITH
*!*
*!* ofrm_ret.show(1)
*!* RELEASE ofrm_ret
Endproc
********* SFARSIT: viz_retetar ***********

View File

@@ -0,0 +1,632 @@
*!* 19.03.2015
*!* marius.mutu
*!* VIZ_LUNI_BLOCATE - se afiseaza doar programele pe care are utilizatorul dreptul
*** OPROCEDURI_ROADEF
**************************************** INCEPUT: viz_categorii_entitati ******************************
Procedure viz_categorii_entitati
Private poCategorii_entitati,pcSchema,pcSelect
Store '' To poCategorii_entitati
If Used('crsCategorii_entitati')
Use In crsCategorii_entitati
Endif
llAfisare=.F.
pcSchema = ['']
pcSelect=['select * from ] + gcS + [.vnom_categorii_entitati where 1=2']
pcOrder=[categorie_entitate]
pcFiltru = [1=2]
gencursor('poCategorii_entitati','crsCategorii_entitati',pcSelect,pcFiltru,pcSchema,pcOrder,llAfisare)
poCategorii_entitati.ca_baza1.afisare()
ofrmcategorii=Createobject('frm_categorii_entitati')
ofrmcategorii.Show(1)
Release poCategorii_entitati,ofrmcategorii
Endproc
**************************************** SFARSIT: viz_categorii_entitati ******************************
*******************************************
* PROCEDURE VIZ_LUNI_BLOCATE
* Date : 28/10/2005, 10:27:42
* author : marius.mutu
* description:
*******************************************
Procedure VIZ_LUNI_BLOCATE
Local lcObiect, lcCursor, lcSelect, lcFiltru, lcSchema, lcOrder, llAfisare, lcGroup, llModParam, lcFiltruOriginal, lcSeconds
lnSucces = 1
lcSeconds = SET("Seconds")
SET SECONDS ON
Private poPrograme
poPrograme = .F.
lcObiect = "poPrograme"
lcCursor = "crsPrograme"
*!* lcSelect = "select ide_program, explicatie as denumire from contafin_oracle.vdef_programe"
TEXT TO lcSelect NOSHOW
select distinct p.ide_program, p.nume as denumire, p.instalat
from contafin_oracle.vDEF_UTIL_GRUP ug
join contafin_oracle.def_grup_drept gd on ug.id_grup = gd.id_grup
join contafin_oracle.vdef_programe p on gd.id_program = p.ide_program
ENDTEXT
lcFiltru = ""
lcSchema = ""
lcOrder = "nume"
llAfisare = .F.
lcGroup = ""
llModParam = .T.
lcFiltruOriginal = "ug.id_util = ?gnIdUtil and ug.id_firma = ?gnIdFirma and gd.sters = 0 and p.instalat = 1 and p.nume not in ('INDEX.HTM', 'ROADEF', 'ROADEFSALARII', 'ROASUPORT', 'ROADECL', 'ROAMANAGER', 'ROASITFIN', 'ROAOFERTARE', 'ROAJURIDIC', 'ROAPRETURI')"
gencursor(lcObiect, lcCursor, lcSelect, lcFiltru, lcSchema, lcOrder, llAfisare, lcGroup, llModParam, lcFiltruOriginal)
poPrograme.ca_baza1.lAfisare = .T.
poPrograme.ca_baza1.afisare()
If !Used('crsPrograme')
lnSucces = -1
Endif
If lnSucces > 0
Private poBlocat
poBlocat = .F.
lcObiect = "poBlocat"
lcCursor = "crsLuniAn"
lcSelect = "select * from blocatprogramluni"
TEXT TO lcSelect NOSHOW
select an, luna, ide_program, blocat, id_util, utilizator, stare, dataora from
(select b.an,
b.luna,
b.ide_program,
b.blocat,
l1.id_log,
l1.id_util,
u.utilizator,
l1.stare,
l1.dataora,
max(l1.id_log) OVER(PARTITION BY l1.id_tabel) as idlogmax
from blocatprogramluni b
left join (select l.id_log,
l.tabel,
l.id_tabel,
l.camp,
l.ID_UTIL,
DECODE(VALOAREN, 1, 'BLOCAT', 'DEBLOCAT') AS STARE,
l.dataora
from LOG l) l1
on l1.ID_TABEL = b.ide_program || b.an || lpad(b.luna, 2, '0')
and l1.tabel = 'BLOCATPROGRAMLUNI'
and l1.camp = 'BLOCAT'
and l1.id_util <> 2
left join syn_utilizatori u
on l1.id_util = u.id_util)
ENDTEXT
lcFiltru = "1 = 2"
lcSchema = ""
lcOrder = "ide_program, an desc, luna desc"
llAfisare = .F.
lcGroup = ""
llModParam = .T.
lcFiltruOriginal = "nvl(id_log,0) = nvl(idlogmax,0)"
gencursor(lcObiect, lcCursor, lcSelect, lcFiltru, lcSchema, lcOrder, llAfisare, lcGroup, llModParam, lcFiltruOriginal)
poBlocat.ca_baza1.lAfisare = .T.
poBlocat.ca_baza1.afisare()
If !Used('crsLuniAn')
lnSucces = -1
Endif
Endif
If lnSucces > 0
ovizblocate=Createobject('frm_viz_blocate')
ovizblocate.Show(1)
Endif
If Used('crsPrograme')
Use In crsPrograme
Endif
If Used('crsFirme')
Use In crsFirme
Endif
If Used('crsLuniAn')
Use In crsLuniAn
Endif
SET SECONDS &lcSeconds
Endproc
*----------------------------------sfarsit procedura VIZ_LUNI_BLOCATE----------------------------------
Procedure viz_firme
Private pofirme,pcschema1,pcselect1
Store '' To pofirme
If Used('v_firme')
Use In v_firme
Endif
llAfisare=.F.
pcschema1 = ['']
pcselect1=['select * from syn_v_nom_firme where 1=2']
pcorder1=[firma]
pcfiltru1 = [sters=0 and id_firma = ] + Alltrim(Str(gofirma.id_firma))
gencursor('pofirme','v_firme',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfisare)
pofirme.ca_baza1.afisare()
*!* Select v_firme
*!* Scatter Name poRec
*!* ofrmfirme=Createobject("frm_firme")
*!* ofrmfirme.Show(1)
If Reccount('v_firme')>0
gnButon=1
Select v_firme
Scatter Name loRec
*!* modificare 11.08
AddProperty(loRec,"modificare_schema",0)
*!* modificare 11.08 ^
*!* modificare ROADEF v 2.1.2
*!* *!* modificare ROADEF v 2.0.23
*!* lnCodSiruta = 0
*!* If !Empty(Nvl(loRec.id_loc,0))
*!* lcSql = [select siruta from syn_vnom_localitati where id_loc = ] + Alltrim(Str(loRec.id_loc))
*!* lcCursor = [crstmpsiruta]
*!* If goExecutor.oExecuta(lcSql,lcCursor)
*!* Select (lcCursor)
*!* lnCodSiruta = siruta
*!* Use In (Select(lcCursor))
*!* Endif
*!* Endif
*!* AddProperty(loRec,"siruta",lnCodSiruta)
*!* *!* modificare ROADEF v 2.0.23 ^
*!* modificare ROADEF v 2.1.2 ^
*!* 07.02.2008
*!* Do Adauga_Modifica_Inregistrare With "firme",loRec,loRec.id_firma,"UPDATE"
Private poRec
poRec = loRec
loAdModFirme = Createobject("frm_firme_nou_desktopf",loRec,loRec.id_firma,"UPDATE")
loAdModFirme.Show(1)
llRet = gnButon
*!* 07.02.2008 ^
Endif
*!* Release ofrmfirme
Release pofirme
Endproc && viz_firme
*******************************************
* PROCEDURE def_calculatoare( )
* Date : 08/24/06, 11:57:53
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure def_calculatoare( )
Private pocalc,pcschema1,pcselect1
Store '' To pocalc
*!* pcschema1=['id_gestiune n(5),nume_gestiune c(50),cgest c(4),cont_gestiune c(4),ngest c(10),nrg n(4),ascd c(4),nr_grupa n(4),gest n(3)']
pcschema1 = ['']
pcselect1=['select * from ] + gcS + [.vcalculatoare where 1=2']
pcorder1=[denumire]
pcfiltru1 = [2=2]
llAfiseaza = .F.
gencursor('pocalc','crsCalc',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza)
pocalc.ca_baza1.afisare()
ofrmgest=Createobject('frm_calc')
ofrmgest.Show(1)
Release pocalc
Endproc
*----------------------------------sfarsit procedura def_calculatoare----------------------------------
*******************************************
* PROCEDURE set_calculatoare( )
* Date : 08/24/06, 12:01:59
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure set_calculatoare( )
Private pocalc,pcschema1,pcselect1
Store '' To pocalc
lcSchema = [SUCURSALA C(100), ID_SUCURSALA N(10), CALCULATOR C(100), COLOANE C(100), EXPLICATIA C(100), IDCOLOANA C(50), ] + [ID_CALC N(10), ID_CALCSETARE N(10), RESULTCOLOANA C(50), SETARE C(100), TABEL C(50), TIP C(10), TITLU C(100), TITLUCOLOANE C(100), VALOARE C(64), VALOARE_TEXT C(200)]
lcSelect=[SELECT SUCURSALA, ID_SUCURSALA, CALCULATOR, COLOANE, EXPLICATIA, IDCOLOANA, ID_CALC, ID_CALCSETARE, RESULTCOLOANA, SETARE, TABEL, TIP, TITLU, TITLUCOLOANE, VALOARE, VALOARE_TEXT FROM VCALC_SETARI]
lcOrder=[sucursala,calculator,setare]
lcFiltru = []
lcFiltruOriginal = []
llAfiseaza = .F.
llModParam = .T.
lcGroup = []
gencursor('pocalc','crsCalcsetari', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
pocalc.ca_baza1.afisare()
ofrmgest=Createobject('frm_calcsetari')
ofrmgest.Show(1)
Release pocalc
Endproc
*----------------------------------sfarsit procedura set_calculatoare----------------------------------
*******************************************
* PROCEDURE grupuri_util( )
* Date : 08/24/06, 15:15:22
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure grupuri_util( )
Private pogrup,pcschema1,pcselect1
Store '' To pogrup
*!* pcschema1=['id_gestiune n(5),nume_gestiune c(50),cgest c(4),cont_gestiune c(4),ngest c(10),nrg n(4),ascd c(4),nr_grupa n(4),gest n(3)']
pcschema1 = ['']
pcselect1=['select * from ] + gcS + [.vgrupuri_utilizatori where 1=2']
pcorder1=[denumire_grup]
pcfiltru1 = [2=2]
llAfiseaza = .F.
gencursor('pogrup','crsGrup',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza)
pogrup.ca_baza1.afisare()
ofrmgest=Createobject('frm_grupUtil')
ofrmgest.Show(1)
Release pogrup
Endproc
*----------------------------------sfarsit procedura grupuri_util----------------------------------
*******************************************
* PROCEDURE util_rol_intern( )
* Date : 08/24/06, 15:15:38
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure util_rol_intern( )
Private poutil,pcschema1,pcselect1
Store '' To poutil
*!* pcschema1=['id_gestiune n(5),nume_gestiune c(50),cgest c(4),cont_gestiune c(4),ngest c(10),nrg n(4),ascd c(4),nr_grupa n(4),gest n(3)']
pcschema1 = ['']
pcselect1=['select * from ] + gcS + [.vutilizatori_rol_intern where 1=2']
pcorder1=[sucursala, denumire_grup, utilizator, partener, contact]
pcfiltru1 = [2=2]
llAfiseaza = .F.
*!* modificare v 2.0.11
lcFiltruOriginal = Substr(gcCondSucursala,5)
llModParam = .F.
lcGroup = []
gencursor('poutil','crsUtil',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
*!* gencursor('poutil','crsUtil',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza)
*!* modificare v 2.0.11 ^
poutil.ca_baza1.afisare()
ofrmgest=Createobject('frm_Utilizatori')
ofrmgest.Show(1)
Release poutil
Endproc
*----------------------------------sfarsit procedura util_rol_intern----------------------------------
*******************************************
* PROCEDURE list_utilizatori( )
* Date : 08/25/06, 13:41:16
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure list_utilizatori( )
Local lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, lcFiltruOriginal, lcNumeProc
lcSelect = [select * FROM vNOM_SUCURSALE]
lcFiltru = [1=2]
lcSchema = []
lcOrder = [sucursala]
lccoloane = [sucursala]
lcTitlu = [Alegeti sucursala]
lcTitluColoane = [Sucursala]
lcFiltruOriginal = []
lcNumeProc = ""
lnPornire = 6
llDesktop = .T.
locauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, lcNumeProc, .F., lcFiltruOriginal,,lnPornire,,,llDesktop)
If buton=2
Return
Endif
lcSelect = [select * from vutilizatori_rol_intern ]+;
IIF(!Empty(locauta.id_sucursala) And !Isnull(locauta.id_sucursala), [where id_sucursala = ]+Alltrim(Str(locauta.id_sucursala)),[])
lcCursor = [crsUtilizatori]
lnSucces = goExecutor.oExecute(lcSelect,lcCursor)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,16,"Eroare")
Exit
Endif
*!* MESSAGEBOX(locauta.id_sucursala)
Select crsUtilizatori
Report Form util To Printer Prompt Preview
Endproc
*----------------------------------sfarsit procedura list_utilizatori----------------------------------
*******************************************
* PROCEDURE list_calculatoare( )
* Date : 08/25/06, 13:41:31
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure list_calculatoare( )
Local lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, lcFiltruOriginal, lcNumeProc
lcSelect = [select * FROM vNOM_SUCURSALE]
lcFiltru = [1=2]
lcSchema = []
lcOrder = [sucursala]
lccoloane = [sucursala]
lcTitlu = [Alegeti sucursala]
lcTitluColoane = [Sucursala]
lcFiltruOriginal = []
lcNumeProc = ""
lnPornire = 6
llDesktop = .T.
locauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, lcNumeProc, .F., lcFiltruOriginal,,lnPornire,,,llDesktop)
If buton=2
Return
Endif
lcSelect = [select * from vcalculatoare ]+;
IIF(!Empty(locauta.sucursala), [where id_sucursala = ]+Alltrim(Str(locauta.id_sucursala)),[])+[ order by sucursala]
lcCursor = [crsCalc]
lnSucces = goExecutor.oExecute(lcSelect,lcCursor)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,16,"Eroare")
Exit
Endif
Select crsCalc
Report Form calculatoare To Printer Prompt Preview
Endproc
*----------------------------------sfarsit procedura list_calculatoare----------------------------------
*******************************************
* PROCEDURE list_gestiuni( )
* Date : 08/25/06, 13:42:03
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure list_gestiuni( )
Local lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, lcFiltruOriginal, lcNumeProc
lcSelect = [select * FROM vNOM_SUCURSALE]
lcFiltru = [1=2]
lcSchema = []
lcOrder = [sucursala]
lccoloane = [sucursala]
lcTitlu = [Alegeti sucursala]
lcTitluColoane = [Sucursala]
lcFiltruOriginal = []
lcNumeProc = ""
lnPornire = 6
llDesktop = .T.
locauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lccoloane, lcTitlu, lcTitluColoane, lcNumeProc, .F., lcFiltruOriginal,,lnPornire,,,llDesktop)
If buton=2
Return
Endif
lcSelect = [select * from vnom_gestiuni order by sucursala,nume_gestiune]
*!* +;
*!* IIF(!EMPTY(locauta.sucursala), [where id_sucursala = ]+ALLTRIM(STR(locauta.id_sucursala)),[])
lcCursor = [crsGest]
lnSucces = goExecutor.oExecute(lcSelect,lcCursor)
If lnSucces < 0
aMessagebox(goExecutor.cEroare,16,"Eroare")
Exit
Endif
Select crsGest
Report Form gestiuni To Printer Prompt Preview
Endproc
*----------------------------------sfarsit procedura list_gestiuni----------------------------------
*******************************************
* PROCEDURE list_org_calc( )
* Date : 08/25/06, 13:42:24
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure list_org_calc( )
&&code goes here
Endproc
*----------------------------------sfarsit procedura list_org_calc----------------------------------
*******************************************
* PROCEDURE list_org_gest( )
* Date : 08/25/06, 13:42:41
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure list_org_gest( )
&&code goes here
Endproc
*----------------------------------sfarsit procedura list_org_gest----------------------------------
*******************************************
* PROCEDURE list_org_util( )
* Date : 08/25/06, 13:42:58
* author : liana.macinic
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
*******************************************
Procedure list_org_util( )
ofrmgest=Createobject('frm_listutil')
ofrmgest.Show(1)
Endproc
*----------------------------------sfarsit procedura list_org_util----------------------------------
*!* iif(lower(pcPctLucru)='sucursala','Punct de lucru',IIF(LOWER(pcPctLucru) = 'partener',[Partener],'Grup')) + [: ]+ iif(allt(pcPctLucru) = 'sucursala',allt(sucursala),IIF(ALLT(pcPctLucru) = 'partener',ALLT(partener),allt(denumire_grup)))
*---------------------------------- inceput procedura asociere_parteneri_sectii ----------------------------------
Procedure asociere_parteneri_sectii
Parameters tnTip
If Empty(tnTip) Or Isnull(tnTip)
Return
Endif
Private pnTip_asociere
pnTip_asociere = tnTip
Private poAsociere
Local lcSchema, lcSelect, lcFiltru, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal
Store '' To poAsociere
lcSchema = []
lcSelect=[select * from vasociere_parteneri_sectii]
lcOrder=[denumire]
lcFiltru = []
llAfiseaza = .F.
lcGroup = ""
llModParam = .T.
lcFiltruOriginal = [id_tip=]+Alltrim(Str(pnTip_asociere))
gencursor('poAsociere','crsAsociere',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poAsociere.ca_baza1.afisare()
lops = Createobject('frm_parteneri_sectii')
lops.Show(1)
If Used('crsAsociere')
Use In crsAsociere
Endif
Endproc && asociere_parteneri_sectii
*----------------------------------sfarsit procedura asociere_parteneri_sectii ----------------------------------
*---------------------------------- inceput procedura asociere_parteneri_gestiuni ----------------------------------
Procedure asociere_parteneri_gestiuni
Parameters tnTip
If Empty(tnTip) Or Isnull(tnTip)
Return
Endif
Private pnTip_asociere
pnTip_asociere = tnTip
Private poAsociere
Local lcSchema, lcSelect, lcFiltru, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal
Store '' To poAsociere
lcSchema = []
lcSelect=[select id_asociere, id_part, denumire, id_gestiune, nume_gestiune, cont, id_util, dataora from vasociere_parteneri_gestiuni]
lcOrder=[cont,denumire,nume_gestiune]
lcFiltru = []
llAfiseaza = .F.
lcGroup = ""
llModParam = .T.
lcFiltruOriginal = [id_tip=]+Alltrim(Str(pnTip_asociere))
gencursor('poAsociere','crsAsociere',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poAsociere.ca_baza1.afisare()
lops = Createobject('frm_parteneri_gestiuni')
lops.Show(1)
If Used('crsAsociere')
Use In crsAsociere
Endif
Endproc && asociere_parteneri_gestiuni
*----------------------------------sfarsit procedura asociere_parteneri_gestiuni ----------------------------------
Procedure viz_log_redeschid
*!* lcSelect = [select * from vlog_redeschid ]
*!* lcCursor = [crsLog_redeschid]
*!* lnSucces = goExecutor.oExecute(lcSelect,lcCursor)
*!* If lnSucces < 0
*!* aMessagebox(goExecutor.cEroare,16,"Eroare")
*!* Endif
PRIVATE poLog_redeschid
STORE '' TO poLog_redeschid
Local lcSchema, lcSelect, lcOrder, lcFiltru, lcFiltruOriginal, llAfiseaza, lcGroup, lcFiltruOriginal
lcSchema = []
lcSelect = [select * from vlog_redeschid]
lcOrder = []
lcGroup = []
lcFiltru = []
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poLog_redeschid','crsLog_redeschid', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poLog_redeschid.ca_baza1.afisare()
Create Cursor crsLog_luni (perioada c(22), anul N(4), luna N(2))
Insert Into crsLog_luni (perioada) Values ("<Toate inregistrarile>")
Select distinct Alltrim(Str(anul))+'-'+Alltrim(Str(luna)) As perioada, anul, luna ;
from crsLog_redeschid ;
into Cursor crsLog_luni2 ;
ORDER BY anul desc, luna desc
Select crsLog_luni
Append From Dbf("crsLog_luni2")
If Used("crsLog_luni2")
Use In crsLog_luni2
ENDIF
SELECT crsLog_luni
GO TOP
Select crsLog_redeschid
lolr = Createobject('frm_log_redeschid')
lolr.Show(1)
If Used('crsLog_redeschid')
Use In crsLog_redeschid
Endif
If Used('crsLog_luni')
Use In crsLog_luni
Endif
Endproc && viz_log_redeschid
*----------------------------------sfarsit procedura viz_log_redeschid ----------------------------------

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,508 @@
*!* 29.06.2018
*!* marius.mutu
*!* modificare_articole_gestiune - tratare modificare nota produse > vanzare
*!* 31.12.2019
*!* marius.mutu
*!* viz_rulaje, viz_rulaje_obinv - optimizat selectia pentru cursorul poBon, poNir
Procedure viz_rulaje
Lparameters tnNrPag
Private pcselect, pcschema, pcfiltru, pcorder, llAfiseaza, porulaje, ponir, pobon, pcvrul
Local ofrmrulaje As "frm_rulaje"
Local lcFiltruOriginal, lcgroup, llModParam
Store '' To porulaje, ponir, pobon
*!* IF m.nivel=1
pcschema = ['NRCRT n(10),ID_RUL n(20),AN n(4),LUNA n(2),COD n(20),NNIR n(20),SERIE_ACT C(10),NRACT n(14),UTILS c(50),DATAORAS t,ID_ARTICOL n(10),'+] + ;
['DENUMIRE c(100),CODMAT c(50),SERIE c(100),UM c(6),ID_GESTIUNE n(5),CGEST c(20), nume_gestiune c(50), '+] + ;
['PRET n(16,4),PRETV n(16,4),TVA n(16,4),TVAV n(16,4),CANT n(14,3),CANTE n(14,3),CONT c(4),'+] + ;
['ADAOS n(14,4),ID_LUCRARE n(20),NRORD c(30),ID_RESPONSABIL n(5),NRESP c(30),DATAACT d,'+] + ;
['PROCENT n(7,3),CURS n(14,4),PRETD n(14,4),ID_UTIL n(5),UTIL c(30),DATAORA t,'+] + ;
['ID_SECTIE n(5),SECTIE c(30),ALCOOLTUTUN n(1),PRETVTVA n(14,4),'+] + ;
['ACONT c(4),DATAIN d,DATAOUT d,PROC_DISC n(6,2),DISCUNITAR n(14,4),PROC_TVA n(5,2),PROC_TVAv n(5,2),ID_FACT n(20),STERS n(1), '+] + ;
['ID_GESTIUNEC N(5), CGESTC C(20), ID_RESPONSABILC N(5), NRESPC C(30),ID_TIP_RULAJ N(10),TIP_RULAJ C(40),'+] + ;
['um2 c(10),cant_bax n(9,4), id_grupa n(5), grupa c(100), id_subgrupa n(5), subgrupa c(100),'+] + ;
['id_valuta n(5), nume_val c(4), codmatf c(50), lot c(50), adata_expirare T,'+] + ;
['id_sucursala N(5),sucursala c(100),id_part_rez N(10),part_rez c(100),'+] + ;
['id_lucrare_rez N(10),nrord_rez C(50), codbare c(100), id_set I, id_furnizor N(10), furnizor C(100), codnc8 C(20), greutate N(12,4), tara_origine C(100),'+] + ;
['id_jtva_coloana N(20), explicatie_tva C(250), taxcode N(6), taxname C(250), fdoc C(30), id_fdoc I, ales N(1)']
pcselect = ['select row_number() over (order by a.dataact,a.nnir) as nrcrt, '+] + ;
['A.ID_RUL,A.AN,A.LUNA,A.COD,A.NNIR,A.SERIE_ACT,A.NRACT,A.UTILS,A.DATAORAS,A.ID_ARTICOL,A.DENUMIRE,A.CODMAT,A.SERIE,'+] + ;
['A.UM,A.ID_GESTIUNE,A.cgest, a.nume_gestiune,A.PRET,A.PRETv,A.tva,A.tvav, ' + ] + ;
['A.CANT,A.CANTE,A.CONT,A.ADAOS,A.ID_LUCRARE,A.NRORD,A.ID_RESPONSABIL,A.NRESP,A.DATAACT,A.PROCENT,A.curs, '+] + ;
['A.PRETD,A.ID_UTIL,A.UTIL,A.DATAORA,A.ID_SECTIE,A.SECTIE,A.ALCOOLTUTUN, '+] + ;
['A.pretvtva,A.ACONT,A.DATAIN,A.DATAOUT,A.PROC_DISC,A.DISCUNITAR,A.PROC_TVA,A.PROC_TVAV,A.ID_FACT,a.sters, '+] + ;
['A.ID_GESTIUNEC, A.CGESTC, A.ID_RESPONSABILC, A.NRESPC, A.ID_TIP_RULAJ, A.TIP_RULAJ, '+] + ;
['a.um2, a.cant_bax, a.id_grupa, a.grupa, a.id_subgrupa, a.subgrupa, a.id_valuta, a.nume_val, a.codmatf,' + ] + ;
['a.lot, a.adata_expirare, a.id_sucursala, a.sucursala,a.id_part_rez,a.part_rez,a.id_lucrare_rez,a.nrord_rez, a.codbare, a.id_set, '+] + ;
['a.id_furnizor, a.furnizor, a.codnc8, a.greutate, a.tara_origine, a.id_jtva_coloana, a.explicatie_tva, a.taxcode, a.taxname,a.fdoc, a.id_fdoc,0 as ales '+] + ;
['from vrul_tot a where 1=2']
pcvrul = '_tot'
pcfiltru = [1=2]
pcorder = [1]
llAfiseaza = .F.
gencursor('porulaje', 'crsrulx', pcselect, pcfiltru, pcschema, pcorder, llAfiseaza)
porulaje.ca_baza1.afisare()
pcschema = [NRCRT n(10),DENUMIRE c(100),CODMAT c(50),UM c(6),DATAACT D,PRET n(16,4),TVA n(16,4),PRETV n(16,4),TVAV n(16,4),CANT n(14,3),CANTE n(14,3),COD n(20),NNIR n(10), NRESP C(30),SERIE c(100)]
Text To pcselect Noshow
select row_number() over(order by b.denumire) as nrcrt,
b.denumire,
b.codmat,
b.um,
a.dataact,
a.pret,
a.tva,
a.pretv,
a.tvav,
a.cant,
a.cante,
a.cod,
a.nnir,
c.denumire as nresp,
a.serie
FROM rul a left join nom_articole b on a.id_articol = b.id_articol
left join nom_parteneri c on a.id_responsabil = c.id_part
Endtext
pcfiltru = [1=2]
pcorder = [b.denumire]
llAfiseaza = .F.
lcgroup = []
llModParam = .T.
lcFiltruOriginal = [a.sters=0]
gencursor('ponir', 'crsnir', m.pcselect, m.pcfiltru, m.pcschema, m.pcorder, m.llAfiseaza, m.lcgroup, m.llModParam, m.lcFiltruOriginal)
gencursor('pobon', 'crsbon', m.pcselect, m.pcfiltru, m.pcschema, m.pcorder, m.llAfiseaza, m.lcgroup, m.llModParam, m.lcFiltruOriginal)
Select crsRulX
ofrmrulaje = Createobject("frm_rulaje", tnNrPag)
*DO FORM frm_rulaje NAME ofrmrulaje NOSHOW
ofrmrulaje.lb_titlu_alb_b121.Caption = ofrmrulaje.lb_titlu_alb_b121.Caption + " LUNA " + Alltrim(Str(gnLuna)) + "/" + Alltrim(Str(gnAn))
ofrmrulaje.Show(1)
Release porulaje
Endproc && viz_rulaje
*---------------------------------------------------------------------------------------------
Procedure viz_rulaje_obinv
Private pcselect, pcschema, pcfiltru, pcorder, llAfiseaza, porulaje, ponir, pobon, pcvrul
Local ofrmrulaje As "frm_rulaje_obinv"
Local lcFiltruOriginal, lcgroup, llModParam
Store '' To porulaje, ponir, pobon
pcschema = ['']
pcselect = ['select row_number() over (order by a.dataact,a.nnir) as nrcrt,a.*,0 as ales from vrul_obinv_tot a where 1=2']
pcvrul = '_tot'
pcfiltru = [1=2]
pcorder = [1]
llAfiseaza = .F.
gencursor('porulaje', 'crsrul', pcselect, pcfiltru, pcschema, pcorder, llAfiseaza)
porulaje.ca_baza1.afisare()
*!* pcschema = ['NRCRT n(10),DENUMIRE c(100),CODMAT c(50),UM c(6),PRET n(16,4),'+] + ;
*!* ['TVA n(16,4),CANT n(14,3),COD n(20), NRESP C(30)']
*!* pcselect = ['select row_number() over (order by denumire) as nrcrt,a.denumire,a.codmat,'+] + ;
*!* ['a.um,a.pret,a.tva,a.cant,a.cod, a.nresp from ] + gcS + [.vrul_obinv] + pcvrul + [ a '+] + ;
*!* ['where 1=2']
*!* pcfiltru = [1=2]
*!* pcorder = [a.denumire]
*!* llAfiseaza = .F.
*!* gencursor('ponir', 'crsnir', pcselect, pcfiltru, pcschema, pcorder, llAfiseaza)
*!* pcschema = ['NRCRT n(10),DATAACT d,DENUMIRE c(100),UM c(6),PRETV n(16,4),CANTE n(14,3),NNIR n(10), NRESP C(30)']
*!* pcselect = ['select row_number() over (order by cod) as nrcrt,a.dataact,'+] + ;
*!* ['a.denumire,a.um,a.pretv,a.cante,a.nnir, a.nresp from ] + gcS + [.vrul_obinv] + pcvrul + [ a '+] + ;
*!* ['where 1=2']
*!* pcfiltru = [1=2]
*!* pcorder = [cod]
*!* llAfiseaza = .F.
*!* gencursor('pobon', 'crsbon', pcselect, pcfiltru, pcschema, pcorder, llAfiseaza)
pcschema = [NRCRT n(10),DENUMIRE c(100),CODMAT c(50),UM c(6),DATAACT D,PRET n(16,4),TVA n(16,4),PRETV n(16,4),TVAV n(16,4),CANT n(14,3),CANTE n(14,3),COD n(20),NNIR n(10), NRESP C(30),SERIE c(100)]
Text To pcselect Noshow
select row_number() over(order by b.denumire) as nrcrt,
b.denumire,
b.codmat,
b.um,
a.dataact,
a.pret,
a.tva,
a.pretv,
a.tvav,
a.cant,
a.cante,
a.cod,
a.nnir,
c.denumire as nresp,
a.serie
FROM rul_obinv a left join nom_articole b on a.id_articol = b.id_articol
left join nom_parteneri c on a.id_responsabil = c.id_part
Endtext
pcfiltru = [1=2]
pcorder = [b.denumire]
llAfiseaza = .F.
lcgroup = []
llModParam = .T.
lcFiltruOriginal = [a.sters=0]
gencursor('ponir', 'crsnir', m.pcselect, m.pcfiltru, m.pcschema, m.pcorder, m.llAfiseaza, m.lcgroup, m.llModParam, m.lcFiltruOriginal)
gencursor('pobon', 'crsbon', m.pcselect, m.pcfiltru, m.pcschema, m.pcorder, m.llAfiseaza, m.lcgroup, m.llModParam, m.lcFiltruOriginal)
*DO FORM "frm_rulaje_obinv" NAME ofrmrulaje NOSHOW LINKED
ofrmrulaje = Createobject("frm_rulaje_obinv")
ofrmrulaje.lb_titlu_alb_b121.Caption = "RULAJE OBIECTE DE INVENTAR IN FOLOSINTA * LUNA " + Alltrim(Str(gnLuna)) + "/" + Alltrim(Str(gnAn))
ofrmrulaje.Show(1)
Release porulaje
Endproc && viz_rulaje_obinv
******************************************************
*
* Apelata din gestiuni_comun.vcx > afrulaje > but_modifica1
*
******************************************************
Procedure modificare_antet_gestiune
Lparameters toActNou
Local llSucces, lnCod, lnIdResp, lcSelect
Local lcCursor, lcSql, llRul, lnReturn, lnSucces
Local loActNou, loActOriginal
Private pnCod
Private pdDataOra
pdDataOra = Null
llSucces = .F.
lcSelect = Select()
loActNou = toActNou
pnCod = loActNou.cod
llRul = .T.
lcSql = [select * from vact_tot where an = ?gnAn and luna = ?gnLuna and cod = ?pnCod]
lcCursor = [actactan]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
aMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Else
Select actactan
Go Top
Scatter Name loActOriginal
lcSql = [select * from vrul_tot where an = ?gnAn and luna = ?gnLuna and cod = ?pnCod]
lcCursor = [rul_temp]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
aMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Else
lcSql = [select * from vrul_obinv_tot where an = ?gnAn and luna = ?gnLuna and cod = ?pnCod]
lcCursor = [RUL_TEMP_OBINV]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
goExecutor.oReset()
If m.lnSucces < 0
aMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Endif && lnSucces
Endif && lnSucces
Endif && lnSucces
If m.lnSucces > 0
If loActNou.nract <> loActOriginal.nract
Update actactan Set nract = loActNou.nract Where nract = loActOriginal.nract
Update RUL_TEMP Set nract = loActNou.nract
Update RUL_TEMP_OBINV Set nract = loActNou.nract
Endif
If loActNou.NNIR <> loActOriginal.NNIR
Update actactan Set NNIR = loActNou.NNIR Where NNIR = loActOriginal.NNIR
Update RUL_TEMP Set NNIR = loActNou.NNIR
Update RUL_TEMP_OBINV Set NNIR = loActNou.NNIR
Endif
If loActNou.dataact <> Ttod(loActOriginal.dataact)
Update actactan Set dataact = loActNou.dataact Where dataact = loActOriginal.dataact And nract = loActOriginal.nract
Update RUL_TEMP Set dataact = loActNou.dataact
Update RUL_TEMP_OBINV Set dataact = loActNou.dataact
Endif
If loActNou.dataireg <> Ttod(loActOriginal.dataireg)
Update actactan Set dataireg = loActNou.dataireg Where dataireg = loActOriginal.dataireg
Endif
If Nvl(loActNou.id_sectie, 0) <> Nvl(loActOriginal.id_sectie, 0)
Update actactan Set id_sectie = loActNou.id_sectie Where Nvl(id_sectie, 0) = Nvl(loActOriginal.id_sectie, 0)
Update RUL_TEMP Set id_sectie = loActNou.id_sectie Where Nvl(id_sectie, 0) = Nvl(loActOriginal.id_sectie, 0)
Update RUL_TEMP_OBINV Set id_sectie = loActNou.id_sectie Where Nvl(id_sectie, 0) = Nvl(loActOriginal.id_sectie, 0)
Endif
If Nvl(loActNou.id_responsabil, 0) <> Nvl(loActOriginal.id_responsabil, 0)
Update actactan Set id_responsabil = loActNou.id_responsabil Where Nvl(id_responsabil, 0) = Nvl(loActOriginal.id_responsabil, 0)
Update RUL_TEMP Set id_responsabil = loActNou.id_responsabil Where Left(Cont, 1) <> '8' && nu modific obiectele de inventar in folosinta
Endif
If Nvl(loActNou.id_lucrare, 0) <> Nvl(loActOriginal.id_lucrare, 0)
Update actactan Set id_lucrare = loActNou.id_lucrare Where Nvl(id_lucrare, 0) = loActOriginal.id_lucrare
Update RUL_TEMP Set id_lucrare = loActNou.id_lucrare Where Nvl(id_lucrare, 0) = loActOriginal.id_lucrare
Update RUL_TEMP_OBINV Set id_lucrare = loActNou.id_lucrare Where Nvl(id_lucrare, 0) = loActOriginal.id_lucrare
Endif
If Nvl(loActNou.id_partener, 0) <> Nvl(loActOriginal.id_partc, 0)
Update actactan Set id_partd = loActNou.id_partener Where Nvl(id_partd, 0) = Nvl(loActOriginal.id_partc, 0)
Update actactan Set id_partc = loActNou.id_partener Where Nvl(id_partc, 0) = Nvl(loActOriginal.id_partc, 0)
Endif
If do_deschide_tranzactie()
Select actactan
lnSucces = oscrie_in_fisiere(2, .T., m.llRul)
If m.lnSucces > 0
lnSucces = oscrie_in_fisiere(0, .T., m.llRul)
Endif
If m.lnSucces > 0
lcSql = [begin pack_contafin.finalizeaza_modificare_nota(?gnLuna,?gnAn,?pdDataOra,] + Alltrim(Str(loActOriginal.id_set)) + [,] + ;
Alltrim(Str(m.pnCod)) + [,] + Alltrim(Str(loActOriginal.id_fact)) + [,] + Alltrim(Str(loActOriginal.id_fact)) + [,?gnIdUtil); end;]
lnSucces = Iif(goExecutor.oExecuta(m.lcSql), 1, -1)
Endif && lnSucces
do_inchide_tranzactie(Iif(m.lnSucces < 0, 2, 1))
Endif && deschide_Tranzactie
Endif && lnSucces
Use In (Select('actactan'))
Use In (Select('RUL_TEMP'))
Use In (Select('RUL_TEMP_OBINV'))
m.llSucces = (m.lnSucces > 0)
Select (m.lcSelect)
Return m.llSucces
Endproc && modificare_antet_gestiune
*******************************************
Procedure do_deschide_tranzactie
Local llReturn
If Type('goExecutor') = 'O'
goExecutor.oExecuta([select * from dual])
Endif
lnSucces = SQLSetprop(gnHandle, "Transactions", 2)
If m.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 m.llReturn
Endproc && do_deschide_tranzactie
*******************************************
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 && do_inchide_tranzactie
******************************************************
*
* Apelata din gestiuni_comun.vcx > afrulaje > but_modifica1
*
******************************************************
Procedure modificare_articole_gestiune
Lparameters tnCod, tnIdSet
Private pnCod
Local lcColumnId, lcColumnValue, lcCont, lcFisLista, lcIdFisier, lcMemoryVarId, lcMemoryVarValue
Local lcSelect, lcSql, lcVarItem, lcWhere, llContinua, llPartener, llSucces, llVerificaAcont
Local lnButon, lnIdSet, lnIdValue, lnItem, lnSucces, lnVariabile, luValue, lcCgest, lnIdGestiune
Local loAct As "empty"
Local lcNumeGestiune, lcResponsabil, lnIdResponsabil
lnVariabile = 0
llSucces = .F.
lcSelect = Select()
pnCod = m.tnCod
lnIdSet = m.tnIdSet
lcCgest = ""
lnIdGestiune = 0
*** Initializez variabilele din xrequest
lcSql = [select * From VACT a Where an = ] + Alltrim(Str(m.gnAn)) + [ and luna = ] + Alltrim(Str(m.gnLuna)) + [ and cod = ] + Alltrim(Str(m.pnCod))
lnSucces = goExecutor.oExecute(m.lcSql, 'ACT_TEMP')
If m.lnSucces < 0
aMESSAGEBOX(goExecutor.cEroare, 0 + 48, _Screen.Caption)
Else
lcSql = [select r.*, g.nume_gestiune, g.cgest, p.denumire as responsabil From rul r Left Join vnom_gestiuni g On r.id_gestiune = g.id_gestiune left join vnom_parteneri p on r.id_responsabil = p.id_part Where an = ] + Alltrim(Str(m.gnAn)) + [ and luna = ] + Alltrim(Str(m.gnLuna)) + [ and cod = ] + Alltrim(Str(m.pnCod))
lnSucces = goExecutor.oExecute(m.lcSql, 'RUL_TEMP')
If m.lnSucces < 0
aMESSAGEBOX(goExecutor.cEroare, 0 + 48, _Screen.Caption)
Endif
Endif && m.lnSucces < 0
If m.lnSucces < 0
Use In (Select('ACT_TEMP'))
Use In (Select('RUL_TEMP'))
Return
Endif
Select scd As Cont, id_partd As id_part, partd As partener ;
From ACT_TEMP ;
Where !Empty(Nvl(id_partd, 0)) ;
Union ;
Select scc As Cont, id_partc As id_part, partc As partener ;
From ACT_TEMP ;
Where !Empty(Nvl(id_partc, 0)) ;
Into Cursor cParteneriTemp
Select a.Cont, a.id_part, b.partener ;
From (Select Cont, Max(id_part) As id_part From cParteneriTemp Group By Cont) a Left Join ;
(Select Distinct id_part, partener From cParteneriTemp) b On a.id_part = b.id_part ;
Into Cursor cParteneriAct
Use In (Select('cParteneriTemp'))
Text To lcSql Noshow Textmerge
Select i.id_item, i.var_item, i.fis_lista, i.id_fisier
From xrequest r Join xitems i On r.id_item = i.id_item
Where r.id_set = <<m.tnIdSet>>
Union
Select id_item, var_item, fis_lista, id_fisier
From xitems
Where id_item = 16
Endtext
lnSucces = goExecutor.oExecute(m.lcSql, 'crsVariabileTemp')
If lnSucces > 0
Select Padr(Cont, 4) As var_item, 'parteneri' As fis_lista From cParteneriAct Into Cursor cVariabileParteneri
Select crsVariabileTemp
Append From Dbf('cVariabileParteneri')
Use In (Select('cVariabileParteneri'))
Else
aMESSAGEBOX(goExecutor.cEroare)
Create Cursor crsVariabileTemp (id_item I, var_item C(20), fis_lista C(20), id_fisier C(20))
Endif
loAct = Createobject("empty")
AddProperty(loAct, 'lCorectie', .T.)
AddProperty(loAct, 'nCod', m.pnCod)
Select crsVariabileTemp
Scan
llPartener = Alltrim(Lower(Nvl(fis_lista, ''))) = 'parteneri' && variabila partener
lcVarItem = Lower(Alltrim(Nvl(var_item, '')))
lcFisLista = Lower(Alltrim(Nvl(fis_lista, '')))
lcIdFisier = Lower(Alltrim(Nvl(id_fisier, '')))
lcColumnValue = 'act_temp.' + lcVarItem
lcColumnId = Iif(!Empty(m.lcIdFisier), 'act_temp.' + lcIdFisier, '')
Do Case
Case m.llPartener && parteneri
lcCont = Alltrim(Nvl(var_item, ''))
Select cParteneriAct
Locate For Alltrim(Nvl(Cont, '')) = m.lcCont
If Found()
luValue = Alltrim(partener)
lnIdValue = id_part
AddProperty(loAct, 'v' + Lower(m.lcCont), m.luValue) && loAct.v4111
AddProperty(loAct, 'id_vv' + Lower(m.lcCont), m.lnIdValue) && loAct.id_vv4111
Endif
Case Inlist(m.lcVarItem, "gestin", "gestout") && numele gestiunii
* gestiunea o iau din rulaje, daca sunt mai multe gestiuni nu completez variabila
Select Distinct id_gestiune, nume_gestiune, cgest From RUL_TEMP Into Cursor crsGestiuniTemp
If _Tally = 1
Go Top In crsGestiuniTemp
lcNumeGestiune = Alltrim(crsGestiuniTemp.nume_gestiune)
lnIdGestiune = crsGestiuniTemp.id_gestiune
lcCgest = Alltrim(Nvl(crsGestiuniTemp.cgest, ''))
AddProperty(loAct, m.lcVarItem, m.lcNumeGestiune) && loAct.gestin
AddProperty(loAct, 'id_' + m.lcVarItem, m.lnIdGestiune) && loAct.id_gestin
AddProperty(loAct, "nume_gestiune", m.lcNumeGestiune) && loAct.nume_gestiune
AddProperty(loAct, "cgest", m.lcCgest) && loAct.cgest
AddProperty(loAct, 'id_gestiune', m.lnIdGestiune) && loAct.id_gestin
Endif
Use In (Select('crsGestiuniTemp'))
Case m.lcVarItem = 'nresp' And m.lcFisLista = 'vnom_responsabili' && responsabil/respons sau achizitor/achit_542
lcWhere = Iif(lnIdSet = 89, [cante <> 0], [1=1]) && la transfer intre persoane ma intereseaza persoana de la care se transfera
Select Distinct id_responsabil, responsabil From RUL_TEMP Where &lcWhere Into Cursor crsResponsabiliTemp
If _Tally = 1
Go Top In crsResponsabiliTemp
lcResponsabil = Alltrim(crsResponsabiliTemp.responsabil)
lnIdResponsabil = crsResponsabiliTemp.id_responsabil
AddProperty(loAct, m.lcVarItem, m.lcResponsabil) && loAct.nresp
AddProperty(loAct, 'id_' + m.lcVarItem, m.lnIdResponsabil) && loAct.id_responsabil
Endif
Use In (Select('crsResponsabiliTemp'))
Otherwise
If Type(m.lcColumnValue) <> 'U'
Select ACT_TEMP
Calculate Max(&lcVarItem) To luValue
If Inlist(m.lcVarItem, 'dataact', 'dataireg', 'datascad') And Type('luvalue') = 'T'
luValue = Ttod(m.luValue)
Endif
AddProperty(loAct, m.lcVarItem, m.luValue) && loAct.sectie/dataact/nract
If !Empty(m.lcColumnId) And Type(m.lcColumnId) <> 'U'
Locate For &lcVarItem = luValue
If Found()
luValue = Evaluate(m.lcColumnId)
AddProperty(loAct, m.lcIdFisier, m.luValue) && loAct.id_sectie
Endif
Endif
Endif
Endcase
Endscan && crsVariabileTemp
Use In (Select('crsVariabileTemp'))
Use In (Select('act_temp'))
Use In (Select('rul_temp'))
*** UTILIZATORUL FACE MODIFICARI ASUPRA ARTICOLELOR IN INTRARI/IESIRI
llContinua = .F.
llVerificaAcont = .T.
If Inlist(m.tnIdSet, 79, 83, 271, 225, 272) && produse > vanzare en-gros, en-detail
llSucces = initializeaza_vanzare_din_stoc(m.tnIdSet, loAct)
lnButon = Iif(m.llSucces, 1, 2)
Else
lnButon = lans(m.tnIdSet, m.llContinua, m.llVerificaAcont, .F., .F., loAct)
Endif
*!* Do Case
*!* Case Inlist(m.lnIdSet, 92, 104) && NIR IMPORT MATERIALE/MARFA
*!* lnButon = importmat(m.lnIdSet, loDateSuplimentare) && procmenu.prg
*!* Otherwise
*!* lnButon = lans(m.tnIdSet, m.llContinua, m.llVerificaAcont, @laValori)
*!* Endcase
llSucces = (m.lnButon <> 2)
Select (m.lcSelect)
Return m.llSucces
Endproc &&modificare_antet_gestiune

View File

@@ -0,0 +1,748 @@
***------------------------------------------------------------------------------------
Procedure set_set
LParameters tnId_set
&& adauga in mg_indicatori inregistrarile din mg_tmp_indicatori
Private pnId_set
Local lcSql, lnSucces
If Empty(tnId_set)
Return
Else
pnId_set = tnId_set
Endif
lcSql = [begin PACK_MG_EVOLUTIE.SET_SET(?pnId_set); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Endif
Return m.lnSucces
Endproc && set_set
***------------------------------------------------------------------------------------
Procedure viz_toate_seturile
* DO make_cFCentre IN oproceduri_manager.prg
Create Cursor cTipuri_seturi (id_tip_set N(5), nume_tip_set C(30), ales N(1))
Select cTipuri_seturi
Private poSeturi
Store '' To poSeturi
Local lcSchema1, lcSelect1, lcOrder1, lcFiltru1, llAfiseaza
*!* lcSchema1 = [id_ctr N(5), id_part N(10), nume C(30), nr_ctr N(10), data_ctr D(8), obiect C(200), tip N(1), durata N(3), valftva N(20,4), proc_tva N(5,2), avans N(20,4), proc_avans N(5,2),]+;
*!* [val_finant N(20,4), proc_finant N(5,2), dobanda N(20,4), proc_dobanda N(5,2), val_rezid N(20,4), proc_rezid N(5,2), ]+;
*!* [rata N(20,4), comision N(20,4), proc_comision N(5,2), proc_asigurare N(5,2), val_asigurare N(20,4), val_ctr N(20,4), id_valuta N(5), nume_val C(4), curs N(10,4), zi_plata N(2), incetat N(1), sters N(1) ]
*!*
*!* lcSelect1 = [select c.id_ctr, c.id_part, p.nume, c.nr_ctr, c.data_ctr, c.obiect, c.tip, c.durata, c.valftva, c.proc_tva, c.avans, c.proc_avans, ]+;
*!* [c.val_finant, c.proc_finant, c.dobanda, c.proc_dobanda, c.val_rezid, c.proc_rezid, ]+;
*!* [c.rata, c.comision, c.proc_comision, c.proc_asigurare, c.val_asigurare, c.val_ctr, c.id_valuta, v.nume_val, c.curs, c.zi_plata, c.incetat, c.sters from ] + gcS + ;
*!* [.cf_contracte c join ] + gcS + [.nom_parteneri p on p.id_part = c.id_part]+;
*!* [ join ] + gcS + [.nom_valute v on c.id_valuta = v.id_valuta]
lcSelect1 = [select s1.*, nvl(s2.uzual,0) as uzual from (select s.* from mg_seturi s) s1 left join (select distinct id_set, 1 as uzual from mg_seturi_uzuale u where u.sters = 0) s2 on s1.id_set = s2.id_set]
lcOrder1 = [s1.nume_set]
lcgroup = []
lcFiltru1 = [1=2]
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poSeturi', 'crsSeturi', lcSelect1, lcFiltru1, lcSchema1, lcOrder1, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poSeturi.ca_baza1.afisare()
lots = Createobject("frm_toate_seturile")
lots.Show(1)
*!* IF USED("cFCentre")
*!* USE IN cFCentre
*!* ENDIF
Endproc && viz_toate_seturile
***------------------------------------------------------------------------------------
Procedure modifica_parametri
Parameters tnTip, tcAlias, tlDinFormModi
&& tnTip: 1 - toate seturile; 2 - seturi uzuale
Private pnTip, pnId_set, pnLunaI, pnAnulI, pnLunaF, pnAnulF, pnCumul, pnIndAct, pnIndBal, pnDinFormModi && le trimit pe server
Store 0 To pnIndAct, pnIndBal
If !Empty(tnTip)
pnTip = tnTip
Else
pnTip = 0
Endif
Local lcalias, llDinFormModi
lcalias = Alltrim(tcAlias)
llDinFormModi = tlDinFormModi
If llDinFormModi
pnDinFormModi = 1
Else
pnDinFormModi = 0
Endif
Select (lcalias)
Scatter Name poset
pnId_set = id_set
***----
lcSql = [begin PACK_MG_EVOLUTIE.get_indicatori_nu_act(?pnId_set,?pnDinFormModi,?@pnIndAct,?@pnIndBal); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
***----
lopc = Createobject("frm_parametri_calcul", pnIndAct, pnIndBal)
If tnTip = 2
*!* lcSql = [select nume_set from mg_seturi where id_set = ]+Alltrim(Str(pnId_set))
*!* lcCursor = 'cNume_set'
*!* lnSucces = goExecutor.oExecute(lcSel, lcCursor)
*!* If lnSucces < 0
*!* AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare")
*!* Return
*!* Endif
*!* Select cNume_set
*!* lopc.lb_titlu_alb_b121.Caption = cNume_set.nume_set
*!* If Used('cNume_set')
*!* Use In cNume_set
*!* Endif
lopc.lb_titlu_alb_b121.Caption = 'set'
Else
lopc.lb_titlu_alb_b121.Caption = Alltrim(poset.nume_set)
Endif
lopc.Show(1)
If buton = 2
Return
Endif
Select (lcalias)
Gather Name poset
*pnId_set = poset.id_set
pnLunaI = poset.lunaI
pnAnulI = poset.anulI
pnLunaF = poset.lunaF
pnAnulF = poset.anulF
pnCumul = poset.cumul
lcSql = [begin PACK_MG_EVOLUTIE.set_parametri(?pnTip, ?pnId_set, ?pnLunaI, ?pnAnulI, ?pnLunaF, ?pnAnulF, ?pnCumul, ?gnIdutil); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
Endproc && modifica_parametri
***------------------------------------------------------------------------------------
Procedure adauga_indicator
Parameters tnId_set, tcAlias
Local lcalias, lnInd, llSucces
Private pnId_set, pnId_ind
If !Empty(tnId_set)
pnId_set = tnId_set
Else
pnId_set = 0
Endif
pnId_ind = 0
lcalias = Alltrim(tcAlias)
lnInd = 0
llSucces = .F.
Select (lcalias)
Scatter Name poIndicator Blank Memo
poIndicator.tip = 1
Calculate Max(Val(Rand)) To lnRandMax
lnRandMax = lnRandMax + 1
lcRandUrm = Padl(Alltrim(Str(lnRandMax, 4, 0)), 4, '0')
poIndicator.Rand = lcRandUrm
poIndicator.nume_ind = "INDICATOR_" + lcRandUrm
Calculate Cnt() For !Deleted() To lnInd
poIndicator.ord_rand = m.lnInd + 1
loib = Createobject("frm_tip_nume_rand_indicator")
loib.Show(1)
If buton = 2
RETURN m.llSucces
Endif
poIndicator.id_set = pnId_set
lcSql = [begin PACK_MG_EVOLUTIE.next_id_ind(?@pnId_ind); end;]
llSucces = goExecutor.oExecuta(lcSql)
If m.llSucces
poIndicator.id_ind = pnId_ind
lcSql = [begin PACK_MG_EVOLUTIE.adauga_indicator(?pnId_set, ?pnId_ind, ?ALLTRIM(poIndicator.Rand), ?ALLTRIM(poIndicator.nume_ind), ?poIndicator.tip, ?poindicator.ord_rand); end;]
llSucces = goExecutor.oExecuta(lcSql)
IF m.llSucces
Select (lcalias)
Append Blank
Gather Name poIndicator Memo
ENDIF
ENDIF
RETURN m.llSucces
Endproc && adauga_indicator
***------------------------------------------------------------------------------------
***------------------------------------------------------------------------------------
Procedure modifica_indicator
Parameters tnId_set, tnId_ind, tcAlias
Private pnId_set, pnId_ind
LOCAL lnTip, lcAlias, llSucces
pnId_set = tnId_set
pnId_ind = tnId_ind
lcalias = Alltrim(tcAlias)
llSucces = .F.
Select (lcalias)
Scatter Name poIndicator Memo
lnTip = poIndicator.tip
loib = Createobject("frm_tip_nume_rand_indicator")
loib.Show(1)
If buton = 2
RETURN m.llSucces
ENDIF
lcSql = [begin PACK_MG_EVOLUTIE.modifica_indicator(?pnId_set, ?pnId_ind, ?Alltrim(poIndicator.Rand), ?Alltrim(poIndicator.nume_ind), ?poIndicator.tip, ?poindicator.ord_rand); end;]
llSucces = goExecutor.oExecuta(lcSql)
If m.llSucces
IF poIndicator.tip <> m.lnTip
poIndicator.formula = ""
ENDIF
Select (lcalias)
Gather Name poIndicator Memo
Endif
RETURN m.llSucces
Endproc && modifica_indicator
***------------------------------------------------------------------------------------
Procedure test
loft = Createobject("frm_test")
loft.Show(1)
Endproc && test
*------------------------------------------------------------------------------------
Procedure test_List
pcLista = "+T201 +T203 +T204+T205+T206+T207-T208+T209"
lcLista = gcTempPath + "tLista.dbf"
Create Table (lcLista) (valoare C(11))
lnAparitiiP = 1
lnAparitiiM = 1
For i = 1 To Len(pcLista)
lcSemn = Substr(pcLista, i, 1)
If lcSemn = "+" Or lcSemn = "-"
If lcSemn = "+"
lnAparitiiP = lnAparitiiP + 1
Endif
If lcSemn = "-"
lnAparitiiM = lnAparitiiM + 1
Endif
lnNextSemnP = At("+", pcLista, lnAparitiiP)
lnNextSemnM = At("-", pcLista, lnAparitiiM)
If lnNextSemnP < lnNextSemnM And lnNextSemnP > 0
lnNextSemn = lnNextSemnP
Else
If lnNextSemnM > 0
lnNextSemn = lnNextSemnM
Else
lnNextSemn = lnNextSemnP
Endif
Endif
* ?'lnNextSemn = '+ALLTRIM(STR(lnNextSemn))
lnLen = lnNextSemn - i
If lnNextSemn = 0 And i < Len(pcLista) && ultimul cont
lcCont = Substr(pcLista, i)
Else
lcCont = Substr(pcLista, i, lnLen)
Endif
Select (lcLista)
Insert Into (lcLista) (valoare) Values (lcCont)
* ?lcCont
Endif
Endfor
Select (lcLista)
loft = Createobject("frm_test_List")
loft.Show(1)
Endproc && test_List
*------------------------------------------------------------------------------------
Procedure editare_set
Lparameters tnId_set, tnId_ModiPara, tnId_ind
Private pnId_set, pnCount, pcNume_set
pnId_set = Iif(!Empty(m.tnId_set), m.tnId_set, 0)
pnCount = 0 && cati indicatori are setul
pcNume_set = ''
llNou = Empty(m.tnId_set)
* Nume Set
If m.llNou
pcNume_set = "Set nou_" + Ttoc(Datetime())
lcSql = [begin PACK_MG_EVOLUTIE.next_id_set(?@pnId_set); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
Else
lcSql = [begin PACK_MG_EVOLUTIE.GET_NUME_SET(?ALLTRIM(STR(pnId_set)),?@pcNume_set);end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
Endif
* Copii indicatori din mg_indicatori in temporarul mg_tmp_indicatori
* La editare lucrez cu mg_tmp_indicatori ca sa pot salva/renunta
lcSql = [begin PACK_MG_EVOLUTIE.GET_SET(?pnId_set,?@pnCount); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
* Selectez din mg_tmp_indicatori
Private poset, pcschema1, pcselect1
Store '' To poset
pcschema1 = ['']
pcselect1 = ['select id_ind, id_set, rand, ord_rand, nume_ind, formula, ales, tip, comentariu from mg_tmp_indicatori where 1=2']
pcorder1 = [ord_rand, rand]
pcfiltru1 = [sters=0 and id_set = ] + Alltrim(Str(pnId_set))
llAfiseaza = .F.
tcAlias = 'm_indicatori'
gencursor('poSet', 'm_indicatori', pcselect1, pcfiltru1, pcschema1, pcorder1, llAfiseaza)
poset.ca_baza1.afisare()
* Selectez din planul de conturi
Private poPlcont, pcschema1, pcselect1
Store '' To poPlcont
pcschema1 = ['']
pcschema1 = [cont C(4), acont C(4), explicatie C(100), an N(4) ]
pcselect1 = ['select distinct cont, acont, explicatie, an FROM plcont where 1=2']
pcorder1 = [cont, acont]
pcfiltru1 = []
pcfiltru1 = [AN = ] + Alltrim(Str(GNAN))
llAfiseaza = .F.
gencursor('poPlcont', 'crsPlcont', pcselect1, pcfiltru1, pcschema1, pcorder1, llAfiseaza)
poPlcont.ca_baza1.afisare()
* cursor temporar pentru indicatorii de tip jurnal
* lcTabelRJ = gcTempPath + "tLista_rj.dbf"
Create Cursor tLista_rj (camp_numeT C(30), camp_nume C(30), formula C(200), traducere C(200))
* DO make_cFCentre IN oproceduri_manager.prg && apelata in princ.set_uzual_requery
Select m_indicatori
If !Empty(tnId_ind)
Locate For id_ind = tnId_ind
If !Found()
Go Top
Endif
Else
Go Top
Endif
poms = Createobject("frm_set", pnId_set, pcNume_set, m.llNou, tnId_ModiPara)
poms.Show(1)
Use In (Select('tLista_rj'))
Use In (Select('m_indicatori'))
Release poset
Endproc && editare_set
*------------------------------------------------------------------------------------
Procedure desparte_formula_bal
Parameters tcFormula
Local lcFormula
lcFormula = Alltrim(tcFormula)
Store '' To pcPD1, pcPC1, pcPD, pcPC, pcRD, pcRC, pcTD, pcTC, pcSD, pcSC
Dimension laSir(100)
lnElem = lista2array(lcFormula, @laSir, ";")
For i = 1 To lnElem
lnPD1 = At("<PD1>", laSir(i))
lnPC1 = At("<PC1>", laSir(i))
lnPD = At("<PD>", laSir(i))
lnPC = At("<PC>", laSir(i))
lnRD = At("<RD>", laSir(i))
lnRC = At("<RC>", laSir(i))
lnTD = At("<TD>", laSir(i))
lnTC = At("<TC>", laSir(i))
lnSD = At("<SD>", laSir(i))
lnSC = At("<SC>", laSir(i))
Do Case
Case lnPD1 > 0
pcPD1 = Substr(laSir(i), 6)
Case lnPC1 > 0
pcPC1 = Substr(laSir(i), 6) && <PC1>-C1511
Case lnPD > 0
pcPD = Substr(laSir(i), 5)
Case lnPC > 0
pcPC = Substr(laSir(i), 5)
Case lnRD > 0
pcRD = Substr(laSir(i), 5)
Case lnRC > 0
pcRC = Substr(laSir(i), 5)
Case lnTD > 0
pcTD = Substr(laSir(i), 5)
Case lnTC > 0
pcTC = Substr(laSir(i), 5)
Case lnSD > 0
pcSD = Substr(laSir(i), 5)
Case lnSC > 0
pcSC = Substr(laSir(i), 5)
Endcase
Endfor
Endproc && desparte_formula_bal
*------------------------------------------------------------------------------------
Procedure completeaza_lista_bal
Parameters tcLista, tcTabel
Local lcLista, lcTabel, lnAparitiiP, lnAparitiiM
lcLista = Alltrim(tcLista)
lcTabel = Alltrim(tcTabel)
Store 1 To lnAparitiiP, lnAparitiiM
For i = 1 To Len(lcLista)
lcSemn = Substr(lcLista, i, 1)
If lcSemn = "+" Or lcSemn = "-"
If lcSemn = "+"
lnAparitiiP = lnAparitiiP + 1
Endif
If lcSemn = "-"
lnAparitiiM = lnAparitiiM + 1
Endif
lnNextSemnP = At("+", lcLista, lnAparitiiP)
lnNextSemnM = At("-", lcLista, lnAparitiiM)
If lnNextSemnP < lnNextSemnM And lnNextSemnP > 0
lnNextSemn = lnNextSemnP
Else
If lnNextSemnM > 0
lnNextSemn = lnNextSemnM
Else
lnNextSemn = lnNextSemnP
Endif
Endif
lnLen = lnNextSemn - i
If lnNextSemn = 0 And i < Len(lcLista) && ultimul cont
lcCont = Substr(lcLista, i)
Else
lcCont = Substr(lcLista, i, lnLen)
Endif
Select (lcTabel)
Insert Into (lcTabel) (valoare) Values (lcCont)
Endif
Endfor
Select (lcTabel)
Insert Into (lcTabel) (valoare) Values ("")
Endproc && completeaza_lista_bal
*------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------
Procedure completeaza_lista_randuri
Parameters tcLista, tcTabel
Local lcLista, lcTabel
lcLista = Alltrim(tcLista)
lcTabel = Alltrim(tcTabel)
Do While Len(lcLista) > 0 && +[R01]+[R02]
lnRand = At("[R", lcLista) && 2
If lnRand > 0
For i = 1 To lnRand - 2
lcVal = Substr(lcLista, i, 1)
Select (lcTabel)
Insert Into (lcTabel) (valoare) Values (lcVal)
Endfor
lnPI = At("]", lcLista) && paranteza inchisa = "]"
lcVal = Substr(lcLista, lnRand - 1, lnPI - (lnRand - 2)) && rand
Select (lcTabel)
Insert Into (lcTabel) (valoare) Values (lcVal)
lcLista = Substr(lcLista, lnPI + 1)
Else
For i = 1 To Len(lcLista)
lcVal = Substr(lcLista, i, 1)
Insert Into (lcTabel) (valoare) Values (lcVal)
Endfor
lcLista = ""
Endif
Enddo
Select (lcTabel)
Insert Into (lcTabel) (valoare) Values ("")
Endproc && completeaza_lista_randuri
*------------------------------------------------------------------------------------
Procedure desparte_formula_rj
Parameters tcFormula, tcTabel
Local lcFormula, lcTabel
lcFormula = Alltrim(tcFormula)
lcTabel = Alltrim(tcTabel)
Select (lcTabel)
Delete All
If !Empty(lcFormula)
Dimension laSir(100), laSirCamp(100)
lnElem = lista2array(lcFormula, @laSir, ";") && pe cate campuri am definit formula
For i = 1 To lnElem &&
lnCampuri = lista2array(laSir[i], @laSirCamp, "|") && intotdeauna am 4 chestii:
* <traducere camp> <camp> <traducere_formula> <formula>
Select (lcTabel)
Append Blank
Replace camp_numeT With Substr(laSirCamp[1], 2, Len(laSirCamp[1]) - 2), ;
camp_nume With Substr(laSirCamp[2], 2, Len(laSirCamp[2]) - 2), ;
traducere With Substr(laSirCamp[3], 2, Len(laSirCamp[3]) - 2), ;
formula With Substr(laSirCamp[4], 2, Len(laSirCamp[4]) - 2)
Endfor
Select (lcTabel)
Go Top
Endif
Endproc && desparte_formula_rj
*------------------------------------------------------------------------------------
***------------------------------------------------------------------------------------
Procedure sterge_set_uzual
Parameters tnId_set
Private pnId_set
If !Empty(tnId_set)
pnId_set = tnId_set
Else
Return
Endif
**
lcSql = [begin pack_mg_evolutie.sterge_set_uzual(?pnId_set,?gnIdUtil); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
Endproc && sterge_set_uzual
***------------------------------------------------------------------------------------
Procedure calculeaza_set
Parameters tcFile, tcNumeSet
Local lcNumeSet, lcFisExport
lcalias = Juststem(tcFile)
Select Distinct id_set, ;
gnLuna As lunaI, GNAN As anulI, ;
gnLuna As lunaF, GNAN As anulF, ;
00 As cumul, 0 As faraGrafic ;
From (lcalias) ;
Into Cursor cParametri
Select cParametri
Scatter Name poset
poset.cumul = 1 && luni
loexport = Createobject("frm_parametri_calcul")
loexport.Show(1)
If buton = 2
Return
Endif
Endproc && calculeaza_set
***------------------------------------------------------------------------------------
***---------------------------------------------------------------------------------------------
Procedure listare_set
Parameters tnId_set
Private pcTitlu, pnId_set, pcNume_set && ,pcDataOra
Store '' To pcTitlu, pcNume_set
pnId_set = tnId_set
&& pcDataOra = Get_Ora(2)
Local aFormula, aImpart, lcSql, lnSucces, lcFormula
Declare aFormula[1], aImpart[1]
lcSql = [begin PACK_MG_EVOLUTIE.GET_NUME_SET(?ALLTRIM(STR(pnId_set)),?@pcNume_set);end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
Return
Endif
pcTitlu = Alltrim(pcNume_set)
Private poset
Store '' To poset
lcSchema1 = [rand C(4), nume_ind C(200), tip N(1), formula M(4), comentariu M(4)]
lcSelect1 = ['select rand, nume_ind, tip, formula, comentariu from mg_indicatori where 1=2']
lcOrder1 = [ord_rand, rand]
lcFiltru1 = [id_set=] + Alltrim(Str(pnId_set))
llAfiseaza = .F.
gencursor('poSet', 'cSet', lcSelect1, lcFiltru1, lcSchema1, lcOrder1, llAfiseaza)
poset.ca_baza1.afisare()
Select * From cSet Into Cursor cListSet Readwrite
Select cListSet
If _Tally = 0
AMESSAGEBOX("Setul nu contine indicatori", 0 + 48, "Atentie")
Return
Endif
Select cListSet
Replace All formula With Strtran(formula, ";<", ";" + Chr(13) + "<") For tip = 1
Replace All formula With Strtran(formula, "PD", "Precedent Debit") For tip = 1
Replace All formula With Strtran(formula, "PC", "Precedent Credit") For tip = 1
Replace All formula With Strtran(formula, "RD", "Rulaj Debit") For tip = 1
Replace All formula With Strtran(formula, "RC", "Rulaj Credit") For tip = 1
Replace All formula With Strtran(formula, "TD", "Total Debit") For tip = 1
Replace All formula With Strtran(formula, "TC", "Total Credit") For tip = 1
Replace All formula With Strtran(formula, "SD", "Sold Debit") For tip = 1
Replace All formula With Strtran(formula, "SC", "Sold Credit") For tip = 1
Replace All formula With Strtran(formula, ">", "> ") For tip = 1
Select cListSet
Scan For tip = 2 && registru jurnal
lcFormula = ''
lnCampuri = lista2array(formula, @aFormula, ";")
For i = 1 To lnCampuri
ln = lista2array(aFormula[i], @aImpart, "|")
lcFormula = lcFormula + aImpart[1] + ": " + Substr(aImpart[3], 2, Len(aImpart[3]) - 2) + Chr(13)
Replace formula With lcFormula
Endfor
Endscan
*!* Select cListSet
*!* Report Form rList_set To Printer Prompt Preview
goExport.export2frx([cListSet], [rList_set])
If Used("cListSet")
Use In cListSet
Endif
Release poset
Endproc && listare_set
***---------------------------------------------------------------------------------------------
Procedure pre_listare_formule_set
Parameters tnId_set
Local aFormula, aImpart, lcSql, lnSucces, lcFormula
Declare aFormula[1], aImpart[1]
Private poset
Store '' To poset
Local lcSchema1, lcSelect1, lcOrder1, lcFiltru1, llAfiseaza
lcSchema1 = [rand C(4), nume_ind C(200), tip N(1), formula M(4), comentariu M(4), ales N(1)]
lcSelect1 = [select rand, nume_ind, tip, formula, comentariu, ales from mg_indicatori]
lcOrder1 = []
lcgroup = []
lcFiltru1 = []
lcFiltruOriginal = [id_set=] + Alltrim(Str(tnId_set))
llModParam = .T.
llAfiseaza = .F.
gencursor('poset', 'cSet', lcSelect1, lcFiltru1, lcSchema1, lcOrder1, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poset.ca_baza1.afisare()
Release poset
Select * From cSet Into Cursor cListSet Readwrite
If Used("cSet")
Use In cSet
Endif
Select cListSet
If _Tally = 0
AMESSAGEBOX("Setul nu contine indicatori", 0 + 48, "Atentie")
Return
Endif
Select cListSet
Replace All formula With Strtran(formula, ";<", ";" + Chr(13) + "<") For tip = 1
Replace All formula With Strtran(formula, "PD", "Precedent Debit") For tip = 1
Replace All formula With Strtran(formula, "PC", "Precedent Credit") For tip = 1
Replace All formula With Strtran(formula, "RD", "Rulaj Debit") For tip = 1
Replace All formula With Strtran(formula, "RC", "Rulaj Credit") For tip = 1
Replace All formula With Strtran(formula, "TD", "Total Debit") For tip = 1
Replace All formula With Strtran(formula, "TC", "Total Credit") For tip = 1
Replace All formula With Strtran(formula, "SD", "Sold Debit") For tip = 1
Replace All formula With Strtran(formula, "SC", "Sold Credit") For tip = 1
Replace All formula With Strtran(formula, ">", "> ") For tip = 1
Select cListSet
Scan For tip = 2 && registru jurnal
lcFormula = ''
lnCampuri = lista2array(formula, @aFormula, ";")
For i = 1 To lnCampuri
ln = lista2array(aFormula[i], @aImpart, "|")
lcFormula = lcFormula + aImpart[1] + ": " + Substr(aImpart[3], 2, Len(aImpart[3]) - 2) + Chr(13)
Replace formula With lcFormula
Endfor
Endscan
Release poset
Return "cListSet"
Endproc && pre_listare_formule_set
***---------------------------------------------------------------------------------------------

View File

@@ -0,0 +1,288 @@
*!* 07.05.2010
*!* marius.mutu
*!* viz_stocuri - + codbare
PROCEDURE viz_stocuri
PARAMETERS tnTipGest,tcTipGest
LOCAL lnTipGest, lcFiltruInitial,lcTipGest, lcFiltruPermis
lcFiltruTipGest = ""
lcFiltruPermis = ""
lnTipGest = tnTipGest
lcTipGest = ""
IF EMPTY(tcTipGest)
lcTipGest = []
ELSE
lcTipGest = tcTipGest
ENDIF
lcFiltruInitial = [a.an=]+ Alltrim(Str(gnAn))+[ and a.luna=]+ Alltrim(Str(gnLuna))+;
STRTRAN(gcCondSucursala,[id_sucursala],[a.id_sucursala])
IF !EMPTY(lnTipGest)
lcFiltruTipGest = [ and a.nr_pag = ] + ALLTRIM(STR(lnTipGest))
ENDIF
IF EMPTY(gcGestPermis)
lcFiltruPermis = [ and 1=2]
else
lcFiltruPermis = [ and a.id_gestiune in (] + gcGestPermis + [)]
EndIf
lcFiltruInitial = lcFiltruInitial + lcFiltruTipGest + lcFiltruPermis
LOCAL lnStocObinv
lnStocObinv = 0
DO INAINTE_DE_STOC WITH gnAn, gnLuna, tnTipGest, lnStocObinv in oinainte_de.prg
PRIVATE postocuri,pcschema,pcselect,pcfiltru,pcorder
STORE '' TO postocuri
*!* 07.05.2010
pcschema=['nr_crt n(6),id_stoc n(20),an n(4),luna n(2),id_articol n(10),serie c(100),pret n(16,4),pretv n(16,4),'+]+;
['tva n(16,4),tvav n(16,4),cants n(14,3),cant n(14,3),cante n(14,3),cont c(4),'+]+;
['acont c(4),pretd n(16,4),dataora d,datain d,dataout d,proc_tvav n(5,2),'+]+;
['id_gestiune n(5),codmat c(50),denumire c(100),um c(6),nr_pag n(2),nume_gestiune c(50),'+]+;
['cgest c(20),um2 c(10),cant_bax n(9,4),grupa c(100),subgrupa c(100),id_valuta n(10), nume_val c(4),'+]+;
['codmatf c(50), lot c(50), adata_expirare T,id_sucursala N(5),sucursala C(100),'+]+;
['id_lucrare_rez N(10),nrord_rez C(50),id_part_rez N(10),part_rez C(100), codbare c(100),id_part N(10),furn_princ c(100), id_furnizor N(10), furnizor c(100), codnc8 C(20), greutate N(12,4), tara_origine C(100)']
pcselect=['select row_number() over (order by a.denumire) as nr_crt,a.id_stoc,a.an,a.luna,a.id_articol,a.serie,'+]+;
['a.pret,a.pretv,a.tva,a.tvav,a.cants,a.cant,a.cante,a.cont,a.acont,a.pretd,a.dataora,'+]+;
['a.datain,a.dataout,a.proc_tvav,'+]+;
['a.id_gestiune,a.codmat,a.denumire,a.um,a.nr_pag,a.nume_gestiune,a.cgest,a.um2,a.cant_bax,a.grupa,a.subgrupa, a.id_valuta, a.nume_val, a.codmatf, a.lot, a.adata_expirare,'+]+;
['a.id_sucursala,a.sucursala,'+]+;
['a.id_lucrare_rez,a.nrord_rez,a.id_part_rez,a.part_rez, a.codbare,id_part,furn_princ, id_furnizor, furnizor, a.codnc8, a.greutate, a.tara_origine '+]+;
['from vstoc a where 1=2']
*!* 07.05.2010 ^
pcfiltru = [1=2]
pcorder=[1]
llAfiseaza=.F.
_SCREEN.MOUSEPOINTER= 11
gencursor('postocuri','crsStocuri',pcselect,pcfiltru,pcschema,pcorder,llAfiseaza)
postocuri.ca_baza1.afisare()
LOCAL loStocuri
loStocuri=CREATEOBJECT('frm_stocuri')
_SCREEN.MOUSEPOINTER= 0
loStocuri.ntipgest = lnTipGest
PRIVATE pcListTipGest
pcListTipGest = []
lnOptgrValue = IIF(loStocuri.ntipgest<>0,IIF(loStocuri.ntipgest=6,2,IIF(loStocuri.ntipgest=7,4,1)),3)
WITH loStocuri
.Lb_titlu_alb_b121.CAPTION = [STOCURI] + IIF(!EMPTY(lcTipGest),[ / ] + lcTipGest,[])
.cFiltruInitial = lcFiltruInitial
.optgrup.VALUE = lnOptgrValue
IF lnOptgrValue = 1
.optgrup.option2.VISIBLE = .F.
.optgrup.option3.VISIBLE = .F.
.optgrup.option4.VISIBLE = .F.
ENDIF
IF lnOptgrValue = 2
.optgrup.option1.VISIBLE = .F.
.optgrup.option3.VISIBLE = .F.
.optgrup.option4.VISIBLE = .F.
ENDIF
IF lnOptgrValue = 4
.optgrup.option1.VISIBLE = .F.
.optgrup.option2.VISIBLE = .F.
.optgrup.option3.VISIBLE = .F.
ENDIF
.optgrup.ENABLED = IIF(.ntipgest<>0,.F.,.T.)
IF .But_modifica1.VISIBLE
.But_modifica1.VISIBLE = IIF(.ntipgest<>0,.T.,.F.)
ENDIF
ENDWITH
loStocuri.SHOW(1)
RELEASE postocuri
ENDPROC && viz_stocuri
************************************************************************************************
PROCEDURE viz_stocuri_pretv
PARAMETERS tnTipGest,tcTipGest
LOCAL lnTipGest, lcFiltruInitial,lcTipGest, lcFiltruPermis
lcFiltruTipGest = ""
lcFiltruPermis = ""
lnTipGest = tnTipGest
lcTipGest = ""
IF EMPTY(tcTipGest)
lcTipGest = []
ELSE
lcTipGest = tcTipGest
ENDIF
lcFiltruInitial = [a.an=]+ Alltrim(Str(gnAn))+[ and a.luna=]+ Alltrim(Str(gnLuna))+;
STRTRAN(gcCondSucursala,[id_sucursala],[a.id_sucursala])
IF !EMPTY(lnTipGest)
lcFiltruTipGest = [ and a.nr_pag = ] + ALLTRIM(STR(lnTipGest))
ENDIF
IF EMPTY(gcGestPermis)
lcFiltruPermis = [ and 1=2]
else
lcFiltruPermis = [ and a.id_gestiune in (] + gcGestPermis + [)]
EndIf
lcFiltruInitial = lcFiltruInitial + lcFiltruTipGest + lcFiltruPermis
LOCAL lnStocObinv
lnStocObinv = 0
DO INAINTE_DE_STOC WITH gnAn, gnLuna, tnTipGest, lnStocObinv in oinainte_de.prg
PRIVATE postocuri,pcschema,pcselect,pcfiltru,pcorder
STORE '' TO postocuri
pcschema=['nr_crt n(6),an n(4),luna n(2),id_articol n(10),serie c(100),pretv n(16,4),'+]+;
['tvav n(16,4),cants n(14,3),cant n(14,3),cante n(14,3),cont c(4),'+]+;
['acont c(4),dataora d,datain d,dataout d,proc_tvav n(5,2),'+]+;
['id_gestiune n(5),codmat c(50),denumire c(100),'+]+;
['um c(6),nr_pag n(2),nume_gestiune c(50),cgest c(20),um2 c(10),cant_bax n(9,4),grupa c(100),'+]+;
['subgrupa c(100), codmatf c(50), lot c(50), adata_expirare T,id_sucursala n(5),sucursala c(100),'+]+;
['id_lucrare_rez N(10),nrord_rez C(50),id_part_rez N(10),part_rez C(100),id_part n(10),furn_princ c(100), id_furnizor N(10), furnizor c(100), codnc8 C(20), greutate N(12,4), tara_origine C(100)']
pcselect=['select row_number() over (order by a.denumire) as nr_crt,a.an,a.luna,a.id_articol,a.serie,'+]+;
['a.pretv,a.tvav,a.cants,'+]+;
['a.cant,a.cante,a.cont,a.acont,a.dataora,'+]+;
['a.datain,a.dataout,a.proc_tvav,'+]+;
['a.id_gestiune,a.codmat,a.denumire,a.um,a.nr_pag,a.nume_gestiune,a.cgest,a.um2,a.cant_bax,a.grupa,'+]+;
['a.subgrupa, a.codmatf, a.lot, a.adata_expirare,a.id_sucursala,a.sucursala,'+]+;
['a.id_lucrare_rez,a.nrord_rez,a.id_part_rez,a.part_rez,a.id_part,a.furn_princ, a.id_furnizor, a.furnizor, a.codnc8, a.greutate, a.tara_origine '+]+;
[' from ]+ gcS+[.vstoc_pretv a where 1=2']
pcfiltru = [1=2]
pcorder=[1]
llAfiseaza=.F.
_SCREEN.MOUSEPOINTER= 11
gencursor('postocuri','crsStocuri',pcselect,pcfiltru,pcschema,pcorder,llAfiseaza)
postocuri.ca_baza1.afisare()
LOCAL loStocuri
loStocuri=CREATEOBJECT('frm_stocuri_pretv')
_SCREEN.MOUSEPOINTER= 0
loStocuri.ntipgest = lnTipGest
PRIVATE pcListTipGest
pcListTipGest = []
WITH loStocuri
.Lb_titlu_alb_b121.CAPTION = [STOCURI] + IIF(!EMPTY(lcTipGest),[ / ] + lcTipGest,[])
.cFiltruInitial = lcFiltruInitial
ENDWITH
loStocuri.SHOW(1)
RELEASE postocuri
ENDPROC && viz_stocuri_pretv
************************************************************************************************
PROCEDURE viz_stocuri_obinv
PARAMETERS tnTipGest,tcTipGest, tlInFolosinta
LOCAL lnTipGest, lcFiltruInitial,lcTipGest, lcFiltruPermis
lcFiltruTipGest = ""
lcFiltruPermis = ""
lnTipGest = tnTipGest
lcTipGest = ""
IF EMPTY(tcTipGest)
lcTipGest = []
ELSE
lcTipGest = tcTipGest
ENDIF
lcFiltruInitial = [a.an=]+ Alltrim(Str(gnAn))+[ and a.luna=]+ Alltrim(Str(gnLuna))+;
STRTRAN(gcCondSucursala,[id_sucursala],[a.id_sucursala])
*!* 05.06.2008
*!* nu este nevoie de nr_pag in vstoc_obinv
*!* IF !EMPTY(lnTipGest)
*!* lcFiltruTipGest = [ and a.nr_pag = ] + ALLTRIM(STR(lnTipGest))
*!* ENDIF
*!* 05.06.2008 ^
IF EMPTY(gcGestPermis)
lcFiltruPermis = [ and 1=2]
else
lcFiltruPermis = [ and a.id_gestiune in (] + gcGestPermis + [)]
EndIf
lcFiltruInitial = lcFiltruInitial + lcFiltruTipGest + lcFiltruPermis
LOCAL lnStocObinv
lnStocObinv = 1
DO INAINTE_DE_STOC WITH gnAn, gnLuna, tnTipGest, lnStocObinv in oinainte_de.prg
PRIVATE postocuri
Local lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal
STORE '' TO postocuri
IF tlInFolosinta
lcSchema = [nr_crt n(6),id_stoc n(20),an n(4),luna n(2),id_articol n(10),serie c(100), lot c(20), pret n(16,4),cants n(14,3),cant n(14,3),cante n(14,3),cont c(4), ]+;
[acont c(4),pretd n(16,4),dataora d,datain d,dataout d, ]+;
[id_gestiune n(5),codmat c(50),denumire c(100),id_responsabil n(10),nresp c(30), ]+;
[um c(6),cgest c(20),datapif d,dnf N(5),dns_luni n(10),nume_gestiune c(50), ]+;
[marca N(10), id_meseria N(5), meserie C(64), id_formatia N(5), formatia C(64), dataang D, datalic D, ]+;
[id_grupa N(5), grupa C(100), id_subgrupa N(5), subgrupa C(100), ]+;
[um2 c(10),cant_bax n(9,4),id_sucursala N(5),sucursala C(100), furn_princ C(100), codnc8 C(20), greutate N(12,4), tara_origine C(100)]
ELSE
lcschema = [nr_crt n(6),id_stoc n(20),an n(4),luna n(2),id_articol n(10),serie c(100),lot c(20),pret n(16,4),cants n(14,3),cant n(14,3),cante n(14,3),cont c(4), ]+;
[acont c(4),pretd n(16,4),dataora d,datain d,dataout d, ]+;
[id_gestiune n(5),codmat c(50),denumire c(100),id_responsabil n(10),nresp c(30), ]+;
[um c(6),cgest c(20),datapif d,dns_luni n(10),nume_gestiune c(50), ]+;
[um2 c(10),cant_bax n(9,4),grupa c(100),subgrupa c(100),id_sucursala N(5),sucursala C(100), furn_princ C(100), codnc8 C(20), greutate N(12,4), tara_origine C(100)]
ENDIF
IF tlInFolosinta
lcselect = [select row_number() over (order by denumire) as nr_crt, ]+;
[id_stoc, an, luna, id_articol, serie, lot,pret, cants, ]+;
[cant, cante, cont, acont, pretd, dataora, datain, dataout, id_gestiune, ]+;
[codmat, denumire, id_responsabil, nresp, ]+;
[um, cgest, datapif, dnf, dns_luni, nume_gestiune, ]+;
[marca, id_meseria, meseria, id_formatia, formatia, dataang, datalic, ]+;
[id_grupa, grupa, id_subgrupa, subgrupa, um2, cant_bax,id_sucursala,sucursala,furn_princ, codnc8, greutate, tara_origine ]+;
[ from vstoc_obinv_sal a]
ELSE
lcselect = [select row_number() over (order by denumire) as nr_crt,id_stoc,an,luna,id_articol,serie,lot,pret,cants, ]+;
[cant,cante,cont,acont,pretd,dataora,datain,dataout,id_gestiune,codmat,denumire,id_responsabil,nresp, ]+;
[um,cgest,datapif,dns_luni,nume_gestiune,um2,cant_bax,grupa,subgrupa,id_sucursala,sucursala,furn_princ, codnc8, greutate, tara_origine ]+;
[ from vstoc_obinv a]
ENDIF
lcFiltru = [1=2]
lcOrder = [1]
lcgroup = []
llAfiseaza=.F.
lcFiltruOriginal = []
llModParam = .T.
_SCREEN.MOUSEPOINTER= 11
gencursor('postocuri','crsStocuri', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
postocuri.ca_baza1.afisare()
_SCREEN.MOUSEPOINTER= 0
PRIVATE pcListTipGest
LOCAL loStocuri
pcListTipGest = []
loStocuri=CREATEOBJECT('frm_stocuri_obinv',tlInFolosinta)
loStocuri.ntipgest = lnTipGest
lnOptgrValue = IIF(lnTipGest<>0,IIF(lnTipGest=6,2,1),3)
WITH loStocuri
.Lb_titlu_alb_b121.CAPTION = [STOCURI / OBIECTE DE INVENTAR AFLATE IN FOLOSINTA]
.cFiltruInitial = lcFiltruInitial
.optgrup.VALUE = lnOptgrValue
IF lnOptgrValue = 1
.optgrup.option2.VISIBLE = .F.
.optgrup.option3.VISIBLE = .F.
ENDIF
IF lnOptgrValue = 2
.optgrup.option1.VISIBLE = .F.
.optgrup.option3.VISIBLE = .F.
ENDIF
.optgrup.ENABLED = IIF(.ntipgest<>0,.F.,.T.)
IF .But_modifica1.VISIBLE
.But_modifica1.VISIBLE = IIF(.ntipgest<>0,.T.,.F.)
ENDIF
ENDWITH
loStocuri.SHOW(1)
RELEASE postocuri
ENDPROC && viz_stocuri_obinv

View File

@@ -0,0 +1,67 @@
*!* 03.01.2017
*!* GetProcTvaStandard TVA 19%
*** proceduri utilitare
*!* get_oluna() intoarce un obiect cu luna, anul de inceput, luna, anul de sfarsit din calendar
*!* tnAn, tnLuna - daca procedura da eroare se anul, luna inceput/sfarsit se intializeaza cu aceste valori
Function get_oluna
Lparameters tnAn, tnLuna
Local loReturn
loReturn = Createobject("EMPTY")
Local lcSelect, lcCursor, lnSucces, lnMaxLuna, lnMinLuna, lnLunaMax, lnAnMax, lnLunaMin, lnAnMin
lnLunaMin = tnAn
lnAnMin = tnLuna
lnLunaMax = tnAn
lnAnMax = tnLuna
AddProperty(loReturn, 'lunamin',0)
AddProperty(loReturn, 'anmin',0)
AddProperty(loReturn, 'lunamax',0)
AddProperty(loReturn, 'anmax',0)
lcSelect = [select max(anul*12+luna) as maxluna, min(anul*12+luna) as minluna from calendar]
lcCursor = [crsCalendarTemp]
lnSucces = goExecutor.oExecute(lcSelect,lcCursor)
If lnSucces > 0
Select crsCalendarTemp
lnMaxLuna = maxluna
lnMinLuna = minluna
lnLunaMax = Round(Mod(lnMaxLuna,12),0)
lnAnMax = Int(lnMaxLuna/12)
If lnLunaMax = 0 And lnAnMax <> 0
lnLunaMax = 12
lnAnMax = lnAnMax - 1
Endif
lnLunaMin = Round(Mod(lnMinLuna,12),0)
lnAnMin = Int(lnMinLuna/12)
If lnLunaMin = 0 And lnAnMin <> 0
lnLunaMin = 12
lnAnMin = lnAnMin - 1
Endif
If Used(lcCursor)
Use In (lcCursor)
Endif
Else
aMESSAGEBOX(goExecutor.cEroare,0+16,'Eroare')
Endif
loReturn.lunamin = lnLunaMin
loReturn.anmin = lnAnMin
loReturn.lunamax = lnLunaMax
loReturn.anmax = lnAnMax
Return loReturn
Endfunc && get_oluna

View File

@@ -0,0 +1,323 @@
***************************************************************************************************************
Procedure rap_marfa_comenzi_facturate_partial
Private pcDataOra
lcSql = [select * from ] + gcS + [.com_vrap_marfa_nelivrata]
lcCursor = [crsraport]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 48, "Eroare")
Return
Endif
*!* modificare v 2.0.11
*!* If Reccount('crsraport')>0
*!* pcDataOra=get_ora(2)
*!* Keyboard "{ctrl+f10}"
*!* Select crsraport
*!* Report Form rap_marfa_nelivrata To Printer Prompt Preview
*!* Else
*!* amessagebox("Nu exista date pentru listare!",0+64,"Listare")
*!* Endif
goExport.export2frx(lcCursor, [rap_marfa_nelivrata])
*!* modificare v 2.0.11 ^
If Used(lcCursor)
Use In (lcCursor)
Endif
Endproc && rap_marfa_comenzi_facturate_partial
***************************************************************************************************************
Procedure rap_vanzari_perioada
Local lnOptiune
lnOptiune = xmenu("\<Generare raport vanzari;\<Vizualizare raport vanzari")
Do Case
Case lnOptiune = 1 && generare tabel comenzi bazate pe vanzari
genereaza_rap_vanz_per()
Case lnOptiune = 2 && vizualizare tabel comenzi bazate pe vanzari
viz_rap_vanz_per()
Endcase
ENDPROC
PROCEDURE sterg_rap_vanz_per
LPARAMETERS tnIdComRapVanz
LOCAL llSucces
PRIVATE pnIdComRapVanz
IF !EMPTY(tnIdComRapVanz) AND TYPE('tnIdComRapVanz') = 'N'
pnIdComRapVanz = m.tnIdComRapVanz
ENDIF
lcSql = [begin pack_comenzi.raport_proc_vanzari_sterge(?pnIdComRapVanz); end;]
llSucces = goExecutor.oExecuta(lcSql)
RETURN llSucces
ENDPROC && sterg_rap_vanz_per
****************************************
* Afiseaza centralizatorul de rapoarte bazate pe vanzari si se alege un raport - ulterior se vizualizeaza/editeaza
* Intoarce id-ul raportului ales - pentru folosirea in (re)vizualizarea raportului
****************************************
Function viz_rap_vanz_per
Local loFrm As "frm_rap_vanz_centr"
Local lcCursor, lcSql, lnIdComRapVanz, lnSucces
lnIdComRapVanz = 0
lcSql = [{call pack_comenzi.centralizator_rapoarte(?gnLuna, ?gnAn, ?gnId_sectie)}]
lcCursor = [crsrapoarte]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 48, "Eroare")
Else
If Reccount("crsrapoarte") > 0
loFrm = Createobject("frm_rap_vanz_centr")
loFrm.Show(1)
If gnButon = 1
lnIdComRapVanz = crsrapoarte.id_comrapvanz
Endif
Else
amessagebox("Nu exista rapoarte in luna curenta!", 48, "Atentie")
Endif
Endif
Use In (Select(lcCursor))
Return m.lnIdComRapVanz
Endfunc && viz_rap_vanz_per
***************************************************************************************************************
Procedure genereaza_rap_vanz_per
Lparameters tnIdComRapVanz, ttDataI, ttDataS
* tnIdComRapVanz: optional = daca este completat se modifica raportul deja generat, altfel se genereaza un raport nou
Private ptDataI, ptDataS, pnIdGrupaGest, pcGrupaGest, pnProcent, pnIdComRapVanz, llSucces
Local loFrm, lcSql, lcCursor, lnSucces, lcCursor2, llGenereaza
lcCursor = [crsraport]
lcCursor2 = [crscantitati]
ptDataS = IIF(!EMPTY(m.ttDataI), m.ttDataI, get_Ora())
ptDataI = IIF(!EMPTY(m.ttDataS), m.ttDataS, m.ptDataS - 60 * 60 * 24)
pnIdGrupaGest = Null
pcGrupaGest = []
pnIdComRapVanz = tnIdComRapVanz
llGenereaza = !EMPTY(m.pnIdComRapVanz)
If Empty(m.tnIdComRapVanz)
pnProcent = citeste_optiune_firma('PROCVANZPER')
loFrm = Createobject("frm_rap_vanz")
loFrm.Show(1)
If gnButon <> 1
Return
Endif
lcSql = [{call pack_comenzi.raport_proc_vanzari(?ptDataI,?ptDataS,?pnIdGrupaGest,?pnProcent,?gnId_sectie,?gnIdUtil,?gnIdSucursala)}]
Else
lcSql = [{call pack_comenzi.raport_proc_vanzari_viz(?pnIdComRapVanz)}]
Endif
llSucces = goExecutor.oExecuta(lcSql, lcCursor)
If m.llSucces
If Reccount(lcCursor) > 0
* Select *, IIF(cantitate <> 0, 1, 0) as validat From (lcCursor) Into CURSOR (lcCursor2) Order By nume_gestiune, subgrupa, denumire READWRITE
*!* IF TYPE(lcCursor + '.validat') = 'U'
*!* Select *, IIF(cantitate <> 0, 1, 0) as validat From (lcCursor) Into CURSOR (lcCursor2) Order By nume_gestiune, subgrupa, denumire READWRITE
*!* ELSE
Select * From (lcCursor) Into CURSOR (lcCursor2) Order By nume_gestiune, subgrupa, denumire READWRITE
SELECT (lcCursor2)
INDEX on id_comrapvanzelem TAG id
SET ORDER TO
Use In (Select(lcCursor))
*!* ENDIF
*!* copiaza_structura_cursor(lcCursor, lcCursor2)
*!* lnSucces = -1
*!* Insert Into (lcCursor2) Select * From (lcCursor) Order By nume_gestiune, subgrupa, denumire
Endif
Endif
If Used(m.lcCursor2)
Select (m.lcCursor2)
Go Top
pnIdComRapVanz = id_comrapvanz
*!* Do While !llSucces
loFrm = Createobject("frm_rap_vanz_cant", ptDataI, ptDataS, pnIdComRapVanz)
loFrm.Show(1)
If gnButon = 1
llSucces = .T.
IF m.llGenereaza
listeaza_rap_vanz_per(m.pnIdComRapVanz)
ENDIF
*!* Else
*!* llSucces = .F.
*!* Endif
ENDIF
*!* Enddo
Release pnIdComRapVanz
Else
amessagebox("Nu exista articole in perioada care sa aiba procentul de vanzari specificat!", 48, "Atentie")
Endif
Use In (Select(lcCursor2))
Release loFrm, lcSql, lcCursor, lnSucces, ptDataI, ptDataS, pnIdGrupaGest, pcGrupaGest
Endproc
***************************************************************************************************************
Function completeaza_rap_vanz_per
Lparameters tnIdComRapVanz, tcCursorArt, tcCursorGest, tcCursor
Local lcCursorTemp, lcCursorTemp2, lcIdArticole, lcIdGestiuni, llReturn, lnId, lcFiltru
llReturn = .F.
lcCursorTemp = Sys(2015)
lcCursorTemp2 = Sys(2015)
lcIdArticole = cursor2lista(tcCursorArt, "id_articol", ",")
lcIdGestiuni = cursor2lista(tcCursorGest, "id_gestiune", ",")
lcSql = [{call pack_comenzi.completeaza_raport(] + Alltrim(Str(tnIdComRapVanz)) + [,] + ;
['] + Alltrim(lcIdArticole) + [','] + Alltrim(lcIdGestiuni) + [')}]
lnSucces = goExecutor.oExecute(lcSql, lcCursorTemp)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 48, "Eroare")
Else
Select (tcCursor)
lcFiltru = Set('Filter')
lnId = id_comrapvanzelem
copiaza_structura_cursor(tcCursor, lcCursorTemp2)
Insert Into (lcCursorTemp2) ;
Select * From (lcCursorTemp) ;
Union All ;
Select * From (tcCursor)
Use In (Select(tcCursor))
copiaza_structura_cursor(lcCursorTemp2, tcCursor)
Insert Into (tcCursor) Select * From (lcCursorTemp2) Order By nume_gestiune, subgrupa, denumire
Use In (Select(lcCursorTemp))
Use In (Select(lcCursorTemp2))
Select (tcCursor)
Set Filter To &lcFiltru
Locate For id_comrapvanzelem = lnId
llReturn = .T.
Endif
Release lcCursorTemp, lcCursorTemp2, lcIdArticole, lcIdGestiuni, lnId, lcFiltru
Return llReturn
Endfunc
***************************************************************************************************************
***************************************************************************************************************
* raport comenzi pe gestiuni bazat pe vanzarile dintr-o perioda
***************************************************************************************************************
Procedure listeaza_rap_vanz_per
Lparameters tnIdComRapVanz, tnExportExcel
Private ptDataRaport, pnIdComRapVanz
Local lcSql, lcCursor, lnSucces, lnExportExcel
If Type('tnExportExcel') = 'L'
lnExportExcel = tnExportExcel
Else
lnExportExcel = .F.
Endif
ptDataRaport = Datetime()
pnIdComRapVanz = tnIdComRapVanz
lcSql = [{call pack_comenzi.listeaza_raport(?pnIdComRapVanz,?@ptDataRaport)}]
lcCursor = [crslistare]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 48, "Eroare")
Else
If lnExportExcel
goExport.export2xls(lcCursor, [rap_comanda_vanz])
Else
goExport.export2frx(lcCursor, [rap_comanda_vanz])
Endif
Endif
If Used(lcCursor)
Use In (lcCursor)
Endif
Release ptDataRaport, pnIdComRapVanz, lcSql, lcCursor, lnSucces
Endproc
***************************************************************************************************************
* raport comenzi pe furnizori bazat pe vanzarile dintr-o perioda
***************************************************************************************************************
Procedure listeaza_rap_vanz_fz_per
Lparameters tnIdComRapVanz, tlCantitate, tlExportExcel
Private ptDataRaport, ptDataI, ptDataS, pnIdComRapVanz, pnCantitate
Local lcSql, lcCursor, lnSucces, llExportExcel
pnCantitate = IIF(Type('tlCantitate') = 'L', IIF(m.tlCantitate, 1, 0), 0) && daca se foloseste coloana "cantitate" sau "vanzari" pentru cantitate
llExportExcel = IIF(Type('tlExportExcel') = 'L', m.tlExportExcel, .F.)
ptDataRaport = Datetime()
ptDataI = Datetime()
ptDataS = Datetime()
pnIdComRapVanz = tnIdComRapVanz
lcSql = [{call pack_comenzi.listeaza_raport_vz_fz(?pnIdComRapVanz, ?pnCantitate, ?@ptDataRaport,?@ptDataI,?@ptDataS)}]
lcCursor = [crslistare]
llSucces = goExecutor.oExecuta(lcSql, lcCursor)
If m.llSucces
SET FILTER TO cantitate <> 0 OR stocdep <> 0 IN (m.lcCursor)
LOCATE FOR cantitate <> 0 OR stocdep <> 0
IF !FOUND()
AMESSAGEBOX('Nu exista inregistrari pentru listare!', 0+64, _screen.Caption)
ELSE
If m.llExportExcel
goExport.export2xls(lcCursor, [rap_comanda_vanz_fz])
Else
goExport.export2frx(lcCursor, [rap_comanda_vanz_fz])
ENDIF
ENDIF
Endif
Use In (SELECT(lcCursor))
Release ptDataRaport, pnIdComRapVanz, lcSql, lcCursor, llSucces
Endproc
***************************************************************************************************************
***************************************************************************************************************
Procedure listeaza_rap_vanz_fz_val_per
Lparameters tnIdComRapVanz, tlCantitate, tnExportExcel
Private ptDataRaport, ptDataI, ptDataS, pnIdComRapVanz, pnCantitate
Local lcSql, lcCursor, lnSucces, llExportExcel
pnCantitate = IIF(Type('tlCantitate') = 'L', IIF(m.tlCantitate, 1, 0), 0) && daca se foloseste coloana "cantitate" sau "vanzari" pentru cantitate
llExportExcel = IIF(Type('tlExportExcel') = 'L', m.tlExportExcel, .F.)
ptDataRaport = Datetime()
ptDataI = Datetime()
ptDataS = Datetime()
pnIdComRapVanz = tnIdComRapVanz
lcSql = [{call pack_comenzi.listeaza_raport_vz_fz(?pnIdComRapVanz, ?pnCantitate, ?@ptDataRaport,?@ptDataI,?@ptDataS)}]
lcCursor = [crslistare]
llSucces = goExecutor.oExecuta(lcSql, lcCursor)
If m.llSucces
SET FILTER TO stoci<>0 OR stocf <> 0 OR cantitate <> 0 OR stocdep <> 0 IN (m.lcCursor)
LOCATE FOR stoci<>0 OR stocf <> 0 OR cantitate <> 0 OR stocdep <> 0
IF !FOUND()
AMESSAGEBOX('Nu exista inregistrari pentru listare!', 0+64, _screen.Caption)
ELSE
If m.llExportExcel
goExport.export2xls(lcCursor, [rap_comanda_vanz_fz_val])
Else
goExport.export2frx(lcCursor, [rap_comanda_vanz_fz_val])
ENDIF
ENDIF
Endif
Use In (SELECT(lcCursor))
Release ptDataRaport, pnIdComRapVanz, lcSql, lcCursor, llSucces
Endproc
***************************************************************************************************************
***************************************************************************************************************
* Detaliu vanzari articol, gestiune pe o perioada
* Dbl Click pe coloana vanzari
***************************************************************************************************************
Procedure rap_vanz_per_detaliu
Parameters tnIdComrapvanzElem
lcCursor = [crsCantitatiDetaliu]
lcSql = [{call pack_comenzi.rap_vanz_per_detaliu(?tnIdComrapvanzElem)}]
llSucces = goExecutor.oExecuta(lcSql, lcCursor)
If m.llSucces
If Reccount(m.lcCursor) > 0
loFrm = Createobject("frm_rap_vanz_cant_detaliu")
loFrm.Show(1)
Else
amessagebox("Nu exista articole in perioada care sa aiba procentul de vanzari specificat!", 48, "Atentie")
Endif
Endif
Endproc

View File

@@ -0,0 +1,725 @@
*!* 25.03.2022
*!* viz_frm_facturi > situatie_facturi se afiseaza si facturile cu total cu tva = 0
*_________________________________________________________*
* *
* proceduri utilizate pentru generarea rapoartelor din: *
* Terti->Furnizori *
* ->Clienti *
* ->Alti *
*_________________________________________________________*
* PROCEDURE viz_frm_facturi( tntip )
* Date : 19/11/2004, 14:36:36
* author : lavinia.viziru
* description:
****** PARAMETER BLOCK **************
* Parameters : 1
* Parameter 1:
*
******************************************* INCEPUT:viz_frm_facturi *******************************************
Procedure viz_frm_facturi
Parameters tntip, tccont, tnId_part, tcNume
&& tnId_part, tcNume - din programul de contracte, ca sa intru deja pe partenerul pe care sunt pozitionat in lista de contracte
Private pocauta, pnlunai, pnani, pnlunaf, pnanf, pccont, plemise, pcperioada, pctitlu, pcpartener
Store '' To pocauta, pcperioada, pctitlu, pcpartener
Store 0 To pnlunai, pnani, pnlunaf, pnanf
plemise = Iif(tntip = 2, .T., .F.)
plActiv = .T.
pccont = Iif(!Empty(tccont), tccont, [])
If !Empty(pccont)
pcexec = [select NVL(fel_cont,0) as fel_cont from ] + gcs + [.vcoresp_tip_cont where cont=?pcCont]
pcCursor = [felCont_cursor]
pnsucces = goExecutor.oExecute(pcexec, pcCursor)
If pnsucces > 0 And _Tally > 0
Select felCont_cursor
Locate
plActiv = Iif(felCont_cursor.fel_cont = 0, .T., .F.)
Use In felCont_cursor
Endif
Endif
gnButon = 1
Do While gnButon = 1
ofrm = Createobject('frm_rap_facturi')
With ofrm
If !Empty(tnId_part)
.lnIdPart = tnId_part
.ncu_contract = 1
.ckContract.Value = 1
*.clb_tx_simplu3.text_simplu1.Value = [<TOATE INREGISTRARILE>]
Endif
If !Empty(tcNume)
.clb_tx_simplu2.text_simplu1.Value = tcNume
Endif
.lcCont = pccont
.llActiv = plActiv
.clb_tx_simplu1.text_simplu1.Value = pccont
.lb_titlu_alb_b121.Caption = [Facturi ] + Iif(!Empty(pccont), pccont, [])
.opt_perioada.Value = tntip
.lhide = .T.
Endwith
ofrm.Show(1)
pccont = ofrm.lcCont
plemise = Iif(ofrm.opt_perioada.Value = 1, .F., .T.)
pnIdPart = ofrm.lnIdPart
plActiv = ofrm.llActiv
pnani = ofrm.Caut_anluna1.nan
pnanf = ofrm.Caut_anluna2.nan
pnlunai = ofrm.Caut_anluna1.nluna
pnlunaf = ofrm.Caut_anluna2.nluna
pnCuAnalitic = ofrm.ncu_analitic
pcAnalitic = ofrm.lcAcont
pnCuValuta = ofrm.ncu_valuta
pnIdValuta = ofrm.lnIdValuta
pnCuVechime = ofrm.ncu_vechime
pcValuta = ofrm.txt_valuta.Value
pnCuContract = ofrm.ncu_contract
pnIdCtr = ofrm.lnIdCtr
ofrm.Release
If gnButon = 1
pcperioada = [Perioada: ] + Alltrim(Str(pnlunai)) + [/] + Alltrim(Str(pnani)) + ;
[ - ] + Alltrim(Str(pnlunaf)) + [/] + Alltrim(Str(pnanf))
* lcCursor = situatie_facturi(pccont,plActiv,plemise,pnIdPart,pnani,pnlunai,pnanf,pnlunaf,pnCuAnalitic,pcAnalitic,pnCuValuta,pnIdValuta,pnCuVechime)
lcCursor = situatie_facturi(Alltrim(pccont), plActiv, plemise, pnIdPart, pnani, pnlunai, pnanf, pnlunaf, pnCuAnalitic, pcAnalitic, pnCuValuta, pnIdValuta, pnCuVechime, pnCuContract, pnIdCtr)
*!* Do Case
*!* Case Empty(lcCursor)
*!* amessagebox("Nu a fost generata selectia pentru listare!",0+48,"Atentie")
*!* Case Reccount(lcCursor) = 0
*!* amessagebox("Nu exista inregistrari pentru listare!",0+48,"Atentie")
*!* Use In (lcCursor)
*!* Otherwise
If Alltrim(pccont) = [401]
pcpartener = [Furnizor: ]
lctitlu = [Situatia facturilor de cumparari]
Else && pccont = [411]
pcpartener = [Client: ]
lctitlu = [Situatia facturilor de vanzari]
Endif
If pnCuVechime = 0
lcRaport = [rap_facturi]
Else
lcRaport = [rap_facturi_vechime]
Endif
If pnCuAnalitic = 0
pcGrupAcont = [EOF()]
Else
pcGrupAcont = [acont]
Endif
If !Empty(pnIdValuta)
lctitlu = lctitlu + Chr(13) + [Valuta ] + Alltrim(pcValuta)
Endif
*!* pctitlu = ceretitlu_rap('Titlul Raportului',lctitlu)
*!* pcDataOra = Get_Ora(2)
*!* Select (lcCursor)
*!* Report Form &lcRaport To Printer Prompt Preview
pctitlu = lctitlu
goExport.export2frx(lcCursor, lcRaport, .T., , , , , .T., , )
If Messagebox('Doriti sa exportati in XLS?', 4 + 32, _Screen.Caption) = 6
lcFileXLS = Putfile("Salvati fisierul XLS", "Facturi.xls", "xls")
If !Empty(lcFileXLS)
Select (lcCursor)
Copy To (lcFileXLS) Type Xl5
open_default_app(lcFileXLS)
Endif
Endif
Use In (lcCursor)
*!* Endcase
Endif
Enddo
Endproc
****************************************** SFARSIT: viz_frm_facturi ****************************
* PROCEDURE situatie_facturi
* Date : 10/04/2006, 16:10:03
* author : georgiana.voicu
* description: preluare facturi pentru conturi cu inregistrari
****** PARAMETER BLOCK **************
* Parameters : 3
* Parameter 1: tlemise
* Description: tipul facturilor preluate
* (.t.-facturi emise intr-o perioada determinata
* .f.-facturi cu sold dintr-o perioada determinata)
* Parameter 2: tccont
* Description: contul partenerului(411-client, 401- furnizor)
* Parameter 3: topartener
* Description: obiectul care contine datele partenerului(client/furnizor) selectat:nume + id_part
* (daca numele partenerului=<TOATE INREGISTRARILE> atunci se iau in considerare
* toti partenerii- clienti sau furnizori)
* Parameter 4,5,6,7 : perioada
******************************************* INCEPUT:situatie_facturi *******************************************
Procedure situatie_facturi
Parameters tccont, tlActiv, tlemise, tnIdPart, tnAnI, tnLunaI, tnAnF, tnLunaF, tnCuAnalitic, tcAnalitic, tnCuValuta, tnIdValuta, tnCuVechime, tnCuContract, tnIdCtr
Private lnrlunii, lnrlunif, lnNrPrimaL
Local lcAchitat, lcAcontIncPl, lcCondAnalitic, lcCondData, lcCondExclud, lcCondId_ctr, lcCondId_part
Local lcCondPerioada, lcCondPrimaLuna, lcConditieSupl, lcCondvaluta, lcContIncPl, lcCursor
Local lcCursor1, lcExceptii, lcIdPartener, lcIdPereche, lcOrder, lcPartener, lcPereche, lcSelect
Local lcSelect1, lcSoldPrec, lcSql, lcTotctva, lcTotctvaPrec, ldDataFactura, ldDataVechime, lnIdFact
Local lnIdPart, lnNrRand, lnNrZile, lnSoldFact, lnSoldPart, lnSucces, lnSucces1
PRIVATE lnnrlunii, lnnrlunif
PRIVATE oComplet, oInc, objFactInc, osold, pcExplicatie
oComplet = NULL
oInc = NULL
objFactInc = NULL
osold = NULL
pcExplicatie = ''
lnnrlunii = tnLunaI + 12 * tnAnI
lnnrlunif = tnLunaF + 12 * tnAnF
*!* IF tlemise
lnNrPrimaL = lnnrlunii
*!* ELSE
*!* lnNrPrimaL = lnnrlunii -1
*!* ENDIF
Local lnId_ctr, lcContract
Store 0 To lnId_ctr
Store '' To lcContract
If tnIdPart = 0
lcCondId_part = [1=1]
Else
lcCondId_part = [id_part = ] + Alltrim(Str(tnIdPart))
Endif
If tnIdCtr = 0
lcCondId_ctr = [1=1]
Else
lcCondId_ctr = [id_ctr = ] + Alltrim(Str(tnIdCtr))
Endif
lcSql = [select * from ] + gcs + [.exceptii_ireg where invers = 1 and debit = ] + Iif(tlActiv, [1], [0]) + [ and cont = ] + tccont
lcCursor = [ex_debit]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
lcExceptii = [-1]
If lnSucces > 0
Select ex_debit
Scan
lcExceptii = lcExceptii + ',' + Alltrim(cont_c)
Endscan
Use In ex_debit
Endif
If !tlActiv && - furnizori
lcTotctva = Iif(tnCuValuta = 0, [credit + preccred], [valcredit + precvalcred])
*!* modificare v 2.0.46
lcTotctvaPrec = Iif(tnCuValuta = 0, [preccred], [precvalcred]) && am nevoie pentru calcularea soldului prec.
*!* modificare v 2.0.46 ^
lcSoldPrec = Iif(tnCuValuta = 0, [preccred - precdeb], [precvalcred - precvaldeb])
*lcAchitat = [debit + precdeb]
lcAchitat = Iif(tnCuValuta = 0, [precdeb], [precvaldeb])
lcPereche = [pereched]
lcIdPereche = [id_factd]
lcPartener = [partd]
lcIdPartener = [id_partd]
lcContIncPl = [scd]
lcAcontIncPl = [ascd]
lcCondExclud = [(to_number(scc) not in (] + lcExceptii + [))]
Else && - clienti
lcTotctva = Iif(tnCuValuta = 0, [debit + precdeb], [valdebit + precvaldeb])
*!* modificare v 2.0.46
lcTotctvaPrec = Iif(tnCuValuta = 0, [precdeb], [precvaldeb])
*!* modificare v 2.0.46 ^
lcSoldPrec = Iif(tnCuValuta = 0, [precdeb - preccred], [precvaldeb - precvalcred])
*lcAchitat = [credit + preccred]
lcAchitat = Iif(tnCuValuta = 0, [preccred], [precvalcred])
lcPereche = [perechec]
lcIdPereche = [id_factc]
lcPartener = [partc]
lcIdPartener = [id_partc]
lcContIncPl = [scc]
lcAcontIncPl = [ascc]
lcCondExclud = [(to_number(scd) not in (] + lcExceptii + [))]
Endif
lcCondPerioada = [((luna + 12*an) between ?lnNrPrimaL and ?lnnrlunif)]
lcCondData = [(to_number(to_char(dataireg,'MM'),'99') + 12*to_number(to_char(dataireg,'YYYY'),'9999'))]
lcCondPrimaLuna = [(luna + 12*an = ?lnNrPrimaL)]
If tnCuAnalitic = 1
lcCondAnalitic = Iif(!Empty(tcAnalitic), [acont = ?tcAnalitic], [1=1])
Else
lcCondAnalitic = [1=1]
Endif
If tnCuValuta = 1
lcCondvaluta = Iif(!Empty(tnIdValuta), [id_valuta = ?tnIdValuta], [id_valuta<>0])
Else
lcCondvaluta = [1=1]
Endif
pcExplicatie = [Din Precedent]
*!* lcSelect = [select an, luna, id_fact, id_part, nume, acont, dataact, nract,] + lcTotctva + [ as totctva,?pcExplicatie as fdoc,] + ;
*!* IIF(tlemise,[0],[(case when ] + lcCondPrimaLuna +[ then ] + lcAchitat + [ else 0 end)]) + [ as achitat] + ;
*!* [ from ] + gcS + [.vireg_parteneri ] + ;
*!* [where cont = ?tccont and ] + lcCondId_part + [ and ] + lcCondPerioada + ;
*!* [ and (luna + 12*an =] + IIF(tlemise,lcCondData,[(case when ] + lcCondPrimaLuna +;
*!* [ then luna + 12*an else ] + lcCondData + [ end)]) + [)] + ;
*!* [ order by an, luna, nume, dataact, nract]
lcSelect = [select an, luna, id_fact, id_part, nume, cod_fiscal, ] + ;
Iif(tnCuContract = 1, [id_ctr], [0]) + [ as id_ctr, ] + ;
Iif(tnCuContract = 1, [contract], ['xxxxxxxxxxxxxxxxxxxx']) + [ as contract, ] + ;
Iif(tnCuAnalitic = 1, [acont], ['xxxx']) + [ as acont, serie_act, dataact, nract,] + ;
Iif(tnCuValuta = 1, [id_valuta,nume_val,], []) + ;
[(case when precdeb <> 0 or preccred <> 0 then 1 else 0 end) as precedent,SUM(] + lcTotctva + [) as totctva, SUM(] + m.lcSoldPrec + [) as soldprec, ?pcExplicatie as fdoc,] + ;
[SUM(] + Iif(tlemise, [0], [(case when ] + lcCondPrimaLuna + [ then ] + lcAchitat + [ else 0 end)]) + [) as achitat] + ;
[ from ] + gcs + [.vireg_parteneri ] + ;
[ where cont = ?tccont and ] + lcCondId_part + [ and ] + lcCondId_ctr + [ and ] + lcCondPerioada + [ and ] + lcCondAnalitic + [ and ] + lcCondvaluta + m.gcCondSucursala + ;
[ and (luna + 12*an =] + Iif(tlemise, lcCondData, [(case when ] + lcCondPrimaLuna + ;
[ then luna + 12*an else ] + lcCondData + [ end)]) + [)] + ;
[ group by an, luna, id_fact, id_part, nume, cod_fiscal, ] + Iif(tnCuContract = 1, [id_ctr, contract,], []) + Iif(tnCuAnalitic = 1, [acont,], []) + [ dataact, serie_act, nract] + Iif(tnCuValuta = 1, [,id_valuta,nume_val], []) + [,(case when precdeb <> 0 or preccred <> 0 then 1 else 0 end)] + ;
[ order by ] + Iif(tnCuContract = 1, [contract,], []) + [ an, luna, nume, cod_fiscal, ] + Iif(tnCuContract = 1, [contract,], []) + Iif(tnCuValuta = 1, [id_valuta,], []) + Iif(tnCuAnalitic = 1, [acont,], []) + [dataact, serie_act, nract]
lcCursor = [cFacturi]
If Used(lcCursor)
Use In (lcCursor)
Endif
lnSucces = goExecutor.oExecute(lcSelect, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare')
Return ''
Endif
Select (lcCursor)
Replace All dataact With {} For Isnull(dataact)
&& 27.05.2008
&& soldurile initiale pentru facturile emise in perioada nu se pot obtine din facturile din cFacturi (nu am precdeb/preccred <> 0)
&& trebuie sa le selectez din ireg_parteneri separat
If tlemise
lcSelect = [select an, luna, id_part, cont, acont, Sum(] + lcSoldPrec + [) as soldprec ] + ;
[ from ireg_parteneri ] + ;
[ where cont = ?tccont and ] + lcCondId_part + [ and ] + lcCondAnalitic + ;
[ and ] + lcCondvaluta + gcCondSucursala + ;
[ and ] + lcCondPrimaLuna + ;
[ group by an, luna, id_part, cont, acont]
lcCursor = [cSoldParteneri]
If Used(lcCursor)
Use In (lcCursor)
Endif
lnSucces = goExecutor.oExecute(lcSelect, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare')
Return ''
Endif
Endif
&& soldurile initiale pentru facturile emise in perioada ^
&& iau in considerare doar incasarile inregistrate in perioada data
lcCondPerioada = [((luna + 12*an) between ?lnNrLuniI and ?lnNrLuniF)]
If tnIdPart = 0
lcCondId_part = [1=1]
Else
lcCondId_part = lcIdPartener + [ = ] + Alltrim(Str(tnIdPart))
Endif
If tnCuAnalitic = 1
lcCondAnalitic = Iif(!Empty(tcAnalitic), lcAcontIncPl + [ = ?tcAnalitic], [1=1])
Else
lcCondAnalitic = [1=1]
Endif
If tnCuValuta = 1
lcCondvaluta = Iif(!Empty(tnIdValuta), [id_valuta = ?tnIdValuta and suma_val<>0], [id_valuta<>0 and suma_val<>0])
Else
lcCondvaluta = [1=1]
Endif
*!* modificare v 2.0.46
If tccont = '4111'
lcConditieSupl = [ OR (SCD = '4111' ] + Iif(!Empty(tcAnalitic), [AND ASCD = ?tcAnalitic ], []) + ;
[AND SCC = '4427' ] + Iif(tnIdPart = 0, [], [AND ID_PARTD = ] + Alltrim(Str(tnIdPart)) + [ ]) + ;
[AND (NVL(PERECHED,0) <> 0 OR NVL(ID_FACTD,0)<>0))]
lcSelect1 = [Select (case when scc = '4427' then id_partd else id_partc end) as id_part,] + ;
[(case when scc = '4427' then partd else partc end) as nume,fdoc,dataact as datadoc,] + ;
[serie_act as serie_doc,nract as nrdoc,] + ;
Iif(tnCuAnalitic = 1, [(case when scc='4427' then ascd else ascc end)], ['xxxx']) + [ as acont,] + ;
[(case when scc = '4427' then pereched else perechec end) as pereche,] + ;
[(case when scc = '4427' then id_factd else id_factc end) as id_fact,] + ;
[(case when scc = '4427' then (-1)*] + Iif(tnCuValuta = 0, [suma else suma], [suma_val else suma_val]) + [ end) as suma,] + ;
[ id_valuta, luna as luna_inc, an as an_inc ] + ;
[ from ] + gcs + [.vact ] + ;
[ where ((] + lcContIncPl + [ = ] + tccont + [ and ] + lcCondId_part + [ and ] + lcCondAnalitic + [ and (] + lcPereche + [ <> 0 or ] + lcIdPereche + [ <>0))] + ;
lcConditieSupl + [)] + ;
[ and ] + lcCondExclud + [ and ] + lcCondPerioada + ;
[ and ] + lcCondvaluta + gcCondSucursala + ;
[ order by serie_act, nract, dataact]
Else
lcSelect1 = [select ] + lcIdPartener + [ as id_part,] + lcPartener + [ as nume,fdoc,dataact as datadoc,serie_act as serie_doc,nract as nrdoc,] + ;
Iif(tnCuAnalitic = 1, lcAcontIncPl, ['xxxx']) + [ as acont,] + lcPereche + [ as pereche,] + lcIdPereche + [ as id_fact,] + ;
Iif(tnCuValuta = 0, [suma], [suma_val]) + [ as suma,] + ;
[ id_valuta, luna as luna_inc, an as an_inc ] + ;
[ from ] + gcs + [.vact ] + ;
[ where ] + lcContIncPl + [ = ] + tccont + [ and ] + lcCondId_part + [ and ] + lcCondvaluta + [ and ] + lcCondAnalitic + ;
[ and ] + lcCondExclud + [ and (] + lcPereche + [ <> 0 or ] + lcIdPereche + [ <>0) and ] + lcCondPerioada + ;
gcCondSucursala + ;
[ order by serie_act, nract, dataact]
Endif
*!* modificare v 2.0.46 ^
lcCursor1 = [cIncasari_temp]
If Used(lcCursor1)
Use In (lcCursor1)
Endif
lnSucces1 = goExecutor.oExecute(lcSelect1, lcCursor1)
If lnSucces1 < 0
amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare')
Return ''
Endif
Select cIncasari_temp
Replace All datadoc With {} For Isnull(datadoc)
Select an, luna, id_fact, id_part, nume, cod_fiscal, acont, Nvl(Ttod(dataact), {}) As datafact, Nvl(serie_act, []) As serie_fact, ;
id_ctr, contract, ;
nract As nrfact, totctva, ;
Padr(fdoc, 30, ' ') As fdoc, {//} As datadoc, 00000000000000 As nrdoc, precedent, ;
achitat As suma, 00000000000000000000.0000 As sold, ;
00000000000000000000.0000 As soldcumulat, 0 As tip, 00 As luna_inc, 0000 As an_inc, 0 As sold_final, ;
00000000000000000000.0000 As vechime_1, 00000000000000000000.0000 As vechime_2, 00000000000000000000.0000 As vechime_3, 00000000000000000000.0000 As vechime_4 ;
From cFacturi ;
Where totctva - achitat <> 0 OR totctva = 0 ;
Order By nume, id_part, acont, dataact, serie_act, nract ;
Into Cursor cFactInc Readwrite
Select cIncasari_temp
Scan
Scatter Name oInc
Select cFactInc
Locate For id_fact = oInc.id_fact And id_part = oInc.id_part And Nvl(acont, [xxxx]) = Nvl(oInc.acont, [xxxx])
Do Case
Case !Found() && nu exista factura pentru incasare
*!* modificare v 2.0.50 ^
*!* modificare v 2.0.46
*!* Append blank
*!* caut incasarea neimperecheata
If Used('crstempireg')
Use In crstempireg
Endif
lcSql = [select 1 as precedent,id_fact,id_part,serie_act as serie_fact,nract as nrfact,dataact as datafact,] + ;
[pack_sesiune.suma_ron((-1)*] + ;
Iif(!tlActiv, Iif(tnCuValuta = 0, [debit], [valdebit]), Iif(tnCuValuta = 0, [credit], [valcredit])) + ;
[,Nvl(dataact,to_date(an||luna,'YYYYMM'))) as totctvaprec ] + ;
[from ireg_parteneri ] + ;
[where id_fact = ] + Alltrim(Str(oInc.id_fact)) + [ and id_part = ] + Alltrim(Str(oInc.id_part)) + [ ] + ;
[and ] + Iif(tnCuValuta = 0, [precdeb=0 and preccred=0], [precvaldeb=0 and precvalcred=0]) + [ and ] + ;
Iif(!tlActiv, Iif(tnCuValuta = 0, [credit], [valcredit]), Iif(tnCuValuta = 0, [debit], [valdebit])) + [=0]
lnSucces = goExecutor.oExecute(lcSql, [crstempireg])
If lnSucces < 0
amessagebox(goExecutor.cEroare, 16, "Eroare")
Return
Else
If Reccount('crstempireg') > 0
Select crstempireg
Scatter Name oComplet
AddProperty(oComplet, "totctva", oComplet.totctvaprec)
Use In crstempireg
Select cFacturi
Locate For id_fact = oComplet.id_fact && verificare daca mai exista deja
If !Found()
Append Blank
Gather Name oComplet Fields id_part, totctva, totctvaprec, precedent
Select cFactInc
Append Blank
Gather Name oComplet
Else
Select cFactInc
Append Blank
Endif
Else
Select cFactInc
Append Blank
Endif
Endif
*!* modificare v 2.0.50
Case Found() And ((tip = 1) Or (tip = 0 And suma <> 0)) && daca mai exista deja o incasare pe factura sau are achitat din precedent
Scatter Name objFactInc
lnId_ctr = id_ctr
lcContract = contract
Append Blank
Gather Name objFactInc
Replace totctva With 0
Case Found() And tip = 0 && daca nu mai exista incasare pe factura
&& completez dupa case
lnId_ctr = id_ctr
lcContract = contract
Otherwise && adaug incasarea
Append Blank
Endcase
*!* Endif
*!* modificare v 2.0.50 ^
*!* modificare v 2.0.46 ^
Gather Name oInc
Replace id_ctr With lnId_ctr, contract With lcContract && las contractul de pe factura (f. probabil sa nu-l am in precedent pe incasare )
Replace tip With 1
Select cIncasari_temp
Endscan
* calculez soldurile (initial, cumulat, pe factura)
* ordonez datele pentru grupare
*!* SELECT id_part, SUM(totctva-achitat) as soldi_part FROM cFacturi WHERE an*12 + luna = lnNrPrimaL INTO CURSOR cSoldiPart GROUP BY id_part
*!* SELECT id_part,acont, SUM(totctva-achitat) as soldi_ana FROM cFacturi WHERE an*12 + luna = lnNrPrimaL INTO CURSOR cSoldiAna GROUP BY id_part, acont
&& 27.05.2008
&& soldurile initiale pentru facturile emise in perioada nu se pot obtine din facturile din cFacturi (nu am precdeb/preccred <> 0)
If tlemise
Select id_part, Sum(soldprec) As soldi_part From cSoldParteneri Into Cursor cSoldiPart Group By id_part
Select id_part, Nvl(acont, Space(4)) As acont, Sum(soldprec) As soldi_ana From cSoldParteneri Into Cursor cSoldiAna Group By id_part, acont Readwrite
Else
*!* modificare v 2.0.46
*!* Select id_part, Sum(totctva-achitat) As soldi_part From cFacturi Where precedent = 1 Into Cursor cSoldiPart Group By id_part
*!* Select id_part,Nvl(acont,Space(4)) As acont, Sum(totctva-achitat) As soldi_ana From cFacturi Where precedent = 1 Into Cursor cSoldiAna Group By id_part, acont Readwrite
Select id_part, Sum(soldprec) As soldi_part From cFacturi Where precedent = 1 Into Cursor cSoldiPart Group By id_part
Select id_part, Nvl(acont, Space(4)) As acont, Sum(soldprec) As soldi_ana From cFacturi Where precedent = 1 Into Cursor cSoldiAna Group By id_part, acont Readwrite
*!* modificare v 2.0.46 ^
Endif
&& 27.05.2008 ^
If tnCuContract = 1
lcOrder = [c.nume, c.id_part, c.id_ctr, c.acont, c.datafact, c.serie_fact, c.nrfact, c.id_fact]
Else
lcOrder = [c.nume, c.id_part, c.acont, c.datafact, c.serie_fact, c.nrfact, c.id_fact]
Endif
* SELECT * FROM cFactInc INTO TABLE c:\factinc.dbf
Select c.*, p.soldi_part, a.soldi_ana ;
From cFactInc c ;
Left Join cSoldiPart p On c.id_part = p.id_part ;
Left Join cSoldiAna a On c.id_part = a.id_part And Nvl(c.acont, '') = Nvl(a.acont, '') ;
Into Cursor cFactIncO ;
Order By &lcOrder Readwrite
If Used('cSoldiPart')
Use In cSoldiPart
Endif
If Used('cSoldiAna')
Use In cSoldiAna
Endif
* soldul cumulat
**** pt vechime (temporar) aflu ultima zi a perioadei , consider data de referinta
ldDataVechime = Gomonth(Date(tnAnF, tnLunaF, 1), 1) - 1
****
Select cFactIncO
Locate
lnIdFact = id_fact
lnIdPart = id_part
lnSoldFact = Nvl(totctva, 0)
lnSoldPart = Nvl(soldi_part, 0)
*ldDataFactura = NVL(TTOD(datafact),{})
ldDataFactura = Nvl(datafact, {})
Scan
Scatter Name osold
lnNrRand = Recno()
If lnIdFact <> osold.id_fact
Select cFactIncO
If tnCuVechime = 1
Go lnNrRand - 1
Replace sold_final With 1
lnNrZile = ldDataVechime - ldDataFactura
If Empty(ldDataFactura)
lnNrZile = 400 && peste 1 An
Else
lnNrZile = ldDataVechime - ldDataFactura
Endif
Do Case
Case Between(lnNrZile, 0, 30)
Replace vechime_1 With sold
Case Between(lnNrZile, 31, 90)
Replace vechime_2 With sold
Case Between(lnNrZile, 91, 365)
Replace vechime_3 With sold
Otherwise
Replace vechime_4 With sold
Endcase
Select cFactIncO
Go lnNrRand
Endif
*ldDataFactura = NVL(TTOD(datafact),{})
ldDataFactura = Nvl(datafact, {})
lnIdFact = osold.id_fact
lnSoldFact = Nvl(osold.totctva, 0)
Endif
If lnIdPart <> osold.id_part
lnIdPart = osold.id_part
lnSoldPart = Nvl(osold.soldi_part, 0)
Endif
lnSoldFact = lnSoldFact - Nvl(osold.suma, 0)
* lnSoldPart = lnSoldPart + IIF(osold.an*12+osold.luna >=lnnrlunii, NVL(osold.totctva,0), 0) - IIF(osold.an_inc*12+osold.luna_inc >=lnnrlunii, NVL(osold.suma,0), 0)
lnSoldPart = lnSoldPart + Iif(osold.precedent = 0, Nvl(osold.totctva, 0), 0) - Iif(osold.an_inc * 12 + osold.luna_inc >= lnnrlunii, Nvl(osold.suma, 0), 0)
Replace sold With lnSoldFact, soldcumulat With lnSoldPart
Select cFactIncO
Endscan
If tnCuVechime = 1
Select cFactIncO
Go Bottom
Replace sold_final With 1
*ldDataFactura = NVL(TTOD(datafact),{})
ldDataFactura = Nvl(datafact, {})
If Empty(ldDataFactura)
lnNrZile = 400 && peste 1 An
Else
lnNrZile = ldDataVechime - ldDataFactura
Endif
Do Case
Case Between(lnNrZile, 0, 30)
Replace vechime_1 With sold
Case Between(lnNrZile, 31, 90)
Replace vechime_2 With sold
Case Between(lnNrZile, 91, 365)
Replace vechime_3 With sold
Otherwise
Replace vechime_4 With sold
Endcase
Endif
*!* SELECT cFactIncO
*!* DELETE from cFactIncO WHERE id_fact IN (select id_fact from cFactIncO where sold_final = 1 AND NVL(vechime_1,0) = 0 AND NVL(vechime_2,0) = 0 AND NVL(vechime_3,0) = 0 AND NVL(vechime_4,0) = 0)
If Used('cFacturi')
Use In cFacturi
Endif
If Used('cIncasari_temp')
Use In cIncasari_temp
Endif
If Used('cFactInc')
Use In cFactInc
Endif
Return "cFactIncO"
Endproc
******************************************* SFARSIT: situatie_facturi *******************************************
Procedure Alege_Cont
Lparameters tccont, tleActiv
Private polista, pcschema1, pcselect1, pcfiltru1, pcorder1
Store "" To polista
pcschema1 = ['cont c(4),acont c(4),explicatie c(50)']
pcselect1 = ['select distinct cont,rpad(CHR(32),4,CHR(32)) as acont,explicatie from ] + gcs + [.vcoresp_tip_cont where 1=2']
pcfiltru1 = [2=2]
pcorder1 = [cont]
llAfisare = .F.
gencursor('polista', 'clista', pcselect1, pcfiltru1, pcschema1, pcorder1, llAfisare)
polista.ca_baza1.afisare()
Select clista
loCont = myscatter('blank')
Private eActiv
Store .T. To eActiv
Ol = Createobject("frm_cere_cont")
With Ol
*.titlufrumos1.CAPTION= 'Selectati contul'
If Empty(.cboCont.RowSource)
.cboCont.RowSource = "clista.cont,acont"
Endif
.ocont = loCont
If Empty(.cAlias)
.cAlias = Left(.cboCont.RowSource, At(".", .cboCont.RowSource) - 1)
Endif
.Height = 190
Endwith
Ol.Show(1)
If buton = 2
Use In clista
Return
Endif
tccont = loCont.Cont
tleActiv = eActiv
Endproc
********************************************************************************************
********************************* INCEPUT:incasari_facturi_lunac ****************************
Procedure incasari_facturi_lunac
Parameters tlemitere
Private pctitlu, pddata_incasi, pddata_incasf && pcDataOra,
Store '' To pctitlu && ,pcDataOra
pddata_incasi = Ctod('01/' + Alltrim(Str(gnLuna)) + '/' + Alltrim(Str(gnAn)))
If Month(Date()) = gnLuna And Year(Date()) = gnAn
pddata_incasf = Date()
Else
pddata_incasf = Gomonth(pddata_incasi, 1) - 1
Endif
Do Form frm_filtru_numar Name ofrm_filtru Linked With [a.dataact], [Data incasarii], 1, 1, 'D', [], 0 To lcFiltruData Noshow
*ofrm_filtru.text1.ResetToDefault([lostfocus])
*ofrm_filtru.text1.lostfocus()
ofrm_filtru.text2.SetFocus()
ofrm_filtru.text1.ControlSource = [pddata_incasi]
ofrm_filtru.text2.ControlSource = [pddata_incasf]
ofrm_filtru.Show(1)
pcperioada = [Perioada: ] + Alltrim(Dtoc(pddata_incasi)) + [-] + Alltrim(Dtoc(pddata_incasf))
If tlemitere
lcOrdonare = [data_fact,data_incas]
Else
lcOrdonare = [data_incas,data_fact]
Endif
lcSelect = [select a.dataact as data_incas,a.nract as nr_doc, a.serie_act, f.fel_document as fdoc, a.suma as incasat,] + ;
[a.scd as tip_incas, d.denumire as nume, c.nract as nr_fact, e.nrord, c.dataact as data_fact, ] + ;
[ c.datascad, c.debit + c.precdeb as total_fact] + Iif(glEMama, [,g.firma as sucursala], []) + [ ] + ;
[from ] + gcs + [.act a join ] + gcs + [.ireg_parteneri c on ] + ;
[a.perechec = c.nract and a.id_partc = c.id_part and NVL(a.id_sucursala,-99) = NVL(c.id_sucursala,-99) ] + ;
[left join ] + gcs + [.nom_parteneri d on c.id_part = d.id_part ] + ;
[left join ] + gcs + [.vnom_lucrari e on c.id_lucrare = e.id_lucrare ] + ;
[left join ] + gcs + [.nom_fdoc f on a.id_fdoc = f.id_fdoc ] + ;
Iif(glEMama, [left join syn_nom_firme g on a.id_sucursala = g.id_firma ], []) + ;
[where a.sters = 0 and SUBSTR(a.scc,1,4) = '4111' and SUBSTR(a.scd,1,1) = '5' and c.cont = '4111'] + ;
[ and a.an = ] + Alltrim(Str(gnAn)) + [ and a.luna = ] + Alltrim(Str(gnLuna)) + ;
[ and c.an = ] + Alltrim(Str(gnAn)) + [ and c.luna = ] + Alltrim(Str(gnLuna)) + ;
Strtran(gcCondSucursala, [id_sucursala], [a.id_sucursala]) + ;
[ ] + lcFiltruData + [ order by ] + lcOrdonare
lcCursor = [cIncasari]
lnSucces = goExecutor.oExecute(lcSelect, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare')
Return
Endif
*!* If Reccount(lcCursor)>0
pctitlu = [Situatia incasarilor ]
goExport.export2frx(lcCursor, [rap_incasari_facturi], .T.)
*!* pctitlu = ceretitlu_rap('Titlul Raportului',lctitlu)
*!* pcDataOra= Get_Ora(2)
*!* Select (lcCursor)
*!* Report Form rap_incasari_facturi To Printer Prompt Preview
*!* Else
*!* amessagebox("Nu exista inregistrari pentru listare!",48,"Atentie")
*!* Endif
Use In (lcCursor)
Release pctitlu, pddata_incasi, pddata_incasf
Endproc
********************************* SFARSIT:incasari_facturi_lunac ****************************

1135
COMUN/programe/orapoarte.prg Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,251 @@
*!* 04.03.2011
*!* marius.mutu
*!* alege_raport - arat doar rapoartele pe care are drepturi utilizatorul curent
Procedure alege_raport
Lparameters tnIdFormularRaport, tlDrepturi
Private pnIdRaport
Local lcSql, lnSucces, loFrmAlegeRaport,loFrmRaport,lcForm
pnIdRaport = 0
lcForm = [frm_date_rapoarte_rulaje]
Do Case
Case tnIdFormularRaport = 1 && rapoarte bazate pe rulaje
lcForm = [frm_date_rapoarte_rulaje]
Case tnIdFormularRaport = 2 && rapoarte dinamice sql
lcForm = [frm_date_rapoarte_sql]
Case tnIdFormularRaport = 3 && rapoarte bazate pe balanta de parteneri
lcForm = [frm_date_rapoarte_balpart]
Otherwise
amessagebox("Nu exista configurari pentru acest tip de raport!",16,_screen.Caption)
Return
Endcase
If Used('crsrapoarte')
Use In crsrapoarte
Endif
IF tlDrepturi
lcSql = [select r.id_raport,Substr(denumire,1,254) as denumire,titlu from vrapoarte r join rapoarte_utilizatori ru on r.id_raport = ru.id_raport ] + ;
[where r.id_formular_raport = ] + Alltrim(Str(m.tnIdFormularRaport)) + [ and ru.id_utilizator = ] + ALLTRIM(STR(m.gnIdUtil)) + [ order by denumire]
ELSE
lcSql = [select r.id_raport,Substr(denumire,1,254) as denumire,titlu from vrapoarte r ] + ;
[where r.id_formular_raport = ] + Alltrim(Str(tnIdFormularRaport)) + [ order by denumire]
ENDIF
lnSucces = goExecutor.oExecute(lcSql,[crsrapoarte])
If lnSucces < 0
amessagebox(goExecutor.cEroare,16,"Eroare")
Return
ELSE
lcMenu = [Raport nou;\-]
SELECT crsRapoarte
SCAN
lcMenu = lcMenu + [;] + ALLTRIM(denumire)
ENDSCAN
lnMenu = xmenu(lcMenu)
*!* If Reccount('crsrapoarte') > 0
*!* loFrmAlegeRaport = Createobject('frm_optiuni_rapoarte')
*!* loFrmAlegeRaport.Show(1)
*!* Else
*!* gnButon = 1
*!* Endif
pnIdRaport = 0
IF lnMenu > 0
IF lnMenu = 1 && raport nou
pnIdRaport = 0
ELSE
SELECT crsRapoarte
IF RECCOUNT()>= lnMenu-2
GOTO lnMenu - 2
pnIdRaport = id_raport
ENDIF
ENDIF
loFrmRaport = Createobject(lcForm, m.pnIdRaport, m.tlDrepturi)
loFrmRaport.Show(1)
ENDIF && lnMenu > 0
If Used('crsrapoarte')
Use In crsrapoarte
Endif
ENDIF && lnSucces < 0
Release loFrmAlegeRaport,loFrmRaport
Endproc
*===========================================================
* lanseaza formularul de editare raport cu un raport incarcat (fara sa aleg raportul)
* folosesc daca stiu ID-ul raportului (ex. rapoarte sql predefinite)
*===========================================================
PROCEDURE executa_raport
LPARAMETERS tnIdFormularRaport, tnIdRaport
llDrepturi = .T.
lcForm = []
Do Case
Case tnIdFormularRaport = 1 && rapoarte bazate pe rulaje
lcForm = [frm_date_rapoarte_rulaje]
Case tnIdFormularRaport = 2 && rapoarte dinamice sql
lcForm = [frm_date_rapoarte_sql]
Case tnIdFormularRaport = 3 && rapoarte bazate pe balanta de parteneri
lcForm = [frm_date_rapoarte_balpart]
ENDCASE
IF EMPTY(m.lcForm)
amessagebox("Nu exista configurari pentru acest tip de raport!",16,_screen.Caption)
Return
ENDIF
loFrmRaport = Createobject(m.lcForm, m.tnIdRaport, m.llDrepturi)
loFrmRaport.Show(1)
ENDPROC
*===========================================================
* creez cursorul cu parametri din tcSql, il completez cu definitiile salvate in rapoarte.csql_parametri
* salvez definitia parametrilor (titlu, tip ...) in rapoarte
* salvez filtrul cu parametri in rapoarte_filtre (titlu,camp,semn,valoare)
*===========================================================
Procedure parametri_rapoarte_sql
Parameters tcSql, tnIdRaport
Private pcParametriXML, pcFiltru
Local lcParametriXML, lnSucces, lcText, lcValue, lnAtPos1, lnAtPos2, lcSelect
Local lcParametri, lcParametru, loFrmAlegeRaport, lcTitlu, lcCamp, lcTipCamp
Local lcPozitieSemn, lcValoare
pcParametriXML = ""
pcFiltru = ""
lcSelect = Select()
lcText = tcSql
lcParametri = ""
lnSucces = goExecutor.oSelect2Value([select csql_parametri from rapoarte where id_raport = ?tnIdRaport], @lcParametriXML)
If lnSucces < 0
amessagebox(goExecutor.cEroare,16,"Eroare")
Return
Endif
Create Cursor crsParametriTemp(parametru C(250))
Create Cursor crsParametriXML(parametru C(250), titlu C(100), CAMP M, TIPCAMP C(10), CAMPID C(100), CAMPCAUTARE C(100))
If !Empty(Nvl(m.lcParametriXML,''))
Xmltocursor(m.lcParametriXML, "crsParametriXMLTemp")
Select crsParametriXML
Append From Dbf("crsParametriXMLTemp")
Use In (Select("crsParametriXMLTemp"))
Endif
*** Lista de parametri din sql dupa separatori <%=...%>
*** ex: select * from act where an = <%=tnAn%> and luna = <%=tnLuna%>
Do While Atcc('<%=', lcText) > 0
* Get the start and end position of the next expression
lnAtPos1 = Atcc('<%=', lcText)
lnAtPos2 = Atcc('%>', lcText)
* Extract the next expression
lcParametru = Substr(m.lcText, lnAtPos1 + 3, lnAtPos2 - lnAtPos1 - 3)
* Remove any cariage returns from the expression as they could be inserted by an HTML editor
lcParametru = Upper(Alltrim(Chrtran(m.lcParametru, Chr(13) + Chr(10), '')))
* Adaug o singura aparitie a unui parametru (sa nu ii cer de mai multe ori data curenta, daca in sql este nevoie de ea de mai multe ori)
SELECT crsParametriTemp
LOCATE FOR parametru = lcParametru
IF !FOUND()
Insert Into crsParametriTemp (parametru) Values (m.lcParametru)
ENDIF
* Evaluate it
*!* lcValue = TRANSFORM(EVALUATE(lcEval))
lcValue = 'x'
* Stuff the result back instead of the original expression
lcText = Stuffc(lcText, lnAtPos1, lnAtPos2 - lnAtPos1 + 2, lcValue)
Enddo
***
*!* completare parametri cu definitia salvata in baza de date
Select p.parametru, x.titlu, p.parametru as CAMP, x.TIPCAMP, x.CAMPID, x.CAMPCAUTARE ;
FROM crsParametriTemp p Left Join crsParametriXML x On p.parametru = x.parametru ;
INTO Cursor crsParametri Readwrite
Use In (Select('crsParametriTemp'))
Use In (Select('crsParametriXML'))
Select crsParametri
loFrmAlegeRaport = Createobject('frm_optiuni_rapoarte_sql')
loFrmAlegeRaport.Show(1)
If gnButon = 1
Cursortoxml("crsParametri", "pcParametriXML",1,0+2,0,"")
lnSucces = goExecutor.oExecute("update rapoarte set csql_parametri = ?pcParametriXML where id_raport = ?tnIdRaport")
If lnSucces < 0
amessagebox(goExecutor.cEroare,16,"Eroare")
ELSE
*** salvez filtrul in rapoarte_filtre
pcFiltru = ""
Select crsParametri
Scan
lcTitlu = Alltrim(titlu)
lcCamp = Alltrim(parametru)
lcTipCamp = Upper(Alltrim(TIPCAMP))
lcCamp = Iif(lcTipCamp = 'D1', 'AN*12+LUNA', lcCamp)
lcPozitieSemn = Iif(lcTipCamp = 'N', '1', Iif(lcTipCamp = 'C', '2', Iif(lcTipCamp = 'D', '1', Iif(lcTipCamp = 'D1', '1', '1'))))
lcValoare = Iif(lcTipCamp = 'N', '0', Iif(lcTipCamp = 'C', '', Iif(lcTipCamp = 'D', '{//}', Iif(lcTipCamp = 'D1', Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)), '0'))))
pcFiltru = pcFiltru + lcTitlu + [;] + lcCamp + [;] + lcPozitieSemn + [;;] + lcValoare + [|]
*!* IESIRI;CANTE;2;;0.000|SI|TIP RULAJ;NONE;0;0;INTRARE/IESIRE REALA|SI|PERIOADA;AN*12+LUNA;1;;LUNA_CURENTA|
lnSucces = goExecutor.oExecute("begin pack_rapoarte.salveaza_filtru(?tnIdRaport, ?pcFiltru); end;")
If lnSucces < 0
amessagebox(goExecutor.cEroare,16,"Eroare")
ENDIF
Endscan
Endif
Endif
Use In (Select('crsParametri'))
Select (lcSelect)
RETURN gnButon
Endproc
*===========================================================
* creeaza cursorul crsParametriXML cu criteriile de selectie (an, luna etc.)
*===========================================================
Procedure criterii_rapoarte_sql
Parameters tnIdRaport
Local lcParametriXML, lnSucces, lcSelect
lcSelect = Select()
Create Cursor crsParametriXML(parametru C(250), titlu C(100), CAMP M, TIPCAMP C(10), CAMPID C(100), CAMPCAUTARE C(100) )
lnSucces = goExecutor.oSelect2Value([select csql_parametri from rapoarte where id_raport = ?tnIdRaport], @lcParametriXML)
If lnSucces < 0
amessagebox(goExecutor.cEroare,16,"Eroare")
Else
If !Empty(Nvl(m.lcParametriXML,''))
Xmltocursor(m.lcParametriXML, "crsParametriXMLTemp")
Select crsParametriXML
Append From Dbf("crsParametriXMLTemp")
Use In (Select("crsParametriXMLTemp"))
Endif
Endif
Select (lcSelect)
Endproc && criterii_rapoarte_sql

View File

@@ -0,0 +1,300 @@
*!* 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<75>]
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 *************************

View File

@@ -0,0 +1,112 @@
Procedure refacere
Lparameters tcSursa,tcLunar,tcCont,tnLuna,tnAn
*!* 11.02.2008
*!* TREBUIE SA FIE SETAT pack_contafin.SET_ID_SUCURSALA INAINTE DE REFACERE/SCRIERE
LOCAL lcExecute, lcSql
Private lcLunar,lcCont,lnSucces,lnLuna,lnAn
lnSucces = -1
If Empty(tnLuna)
lnLuna=gnLuna
Else
lnLuna=tnLuna
Endif
If Empty(tnAn)
lnAn=gnAn
Else
lnAn=tnAn
Endif
lcProc = "REFAC_" + Upper(Alltrim(tcSursa))
lcLunar=Alltrim(tcLunar)
If Empty(tcCont)
lcCont = ""
Else
lcCont = Alltrim(tcCont)
Endif
Do Case
Case lcProc == 'REFAC_BALANTA'
lcSql = [begin PACK_REFACERI.] + lcProc + [('] + gcS +[',] + Alltrim(Str(lnAn)) + [,] +;
ALLTRIM(Str(lnLuna)) + [,] + lcLunar + [); end;]
Case lcProc == 'REFAC_BALANTA_PARTENERI'
lcSql = [begin PACK_REFACERI.] + lcProc + [('] + gcS +[',] + Alltrim(Str(lnAn)) + [,] +;
ALLTRIM(Str(lnLuna)) + [,'] + lcCont + [',] + lcLunar + [); end;]
Case lcProc == 'REFAC_IREG_PARTENERI'
lcSql = [begin PACK_REFACERI.] + lcProc + [('] + gcS +[',] + Alltrim(Str(lnAn)) + [,] +;
ALLTRIM(Str(lnLuna)) + [,'] + lcCont + [',] + lcLunar + [,0); end;]
Case lcProc == 'REFAC_TVA_2007'
lcSql = [begin ] + gcS + [.PACK_REFACERI.] + lcProc + [('] + lcCont + [',] + Alltrim(Str(lnAn)) + [,] + ;
ALLTRIM(Str(lnLuna)) + [); end;]
Case lcProc == 'REFAC_TVA'
Select infisiere
If lcCont = '4426'
Locate For Cont = '4426'
lcCorespD = Alltrim(coresp_d)
lcCorespC = Alltrim(coresp_c)
lcCorespDtva = Alltrim(coresp_d) + [,4428]
lcCorespCtva = Alltrim(coresp_c)
*lcExceptii = [767]
lcExceptii = [-1]
lcTabel = [cump]
lcSql = [select distinct cont_c as exceptie from ] + gcS + [.exceptii_ireg where cont in (] + lcCorespD + [) and invers = 1]
Endif
If lcCont = '4427'
Select infisiere
Locate For Cont = '4427'
lcCorespD = Alltrim(coresp_d)
lcCorespC = Alltrim(coresp_c) + [,5121,5311]
lcCorespDtva = Alltrim(coresp_d)
lcCorespCtva = Alltrim(coresp_c) + [,4428]
lcExceptii = [419]
lcTabel = [vanz]
lcSql = [select distinct cont_c as exceptie from ] + gcS + [.exceptii_ireg where cont in (] + lcCorespC + [) and invers = 1]
Endif
lnSucces = goExecutor.oExecute(lcSql,'cont_exceptii')
If lnSucces > 0
Select cont_exceptii
Scan
lcExceptii = lcExceptii + ',' + Alltrim(exceptie)
Endscan
Use In cont_exceptii
Else
amessagebox(lcProc + CRLF + goExecutor.cEroare,0+16,"Eroare")
Endif
lcListaCampuri = get_lista_Act()
lcSql = [begin pack_REFACERI.REFAC_TVA('] + gcS +[',?lcTabel, pack_contafin.getCotaTVAStandard(?gnLuna,?gnAn), 1.09, '] + lcCorespDtva +[', '] + lcCorespD +[', '] + lcCorespCtva +[', '] + lcCorespC +[',] + lcCont + [, '] + lcExceptii +[',?lnAn, ?lnLuna,1,'] + lcListaCampuri + [' ); end;]
Case lcProc == 'REFAC_STOC'
lcSql = [begin pack_refaceri.refac_stoc(?gcS,?lnAn,?lnLuna,] + lcLunar + [); end;]
Case lcProc == 'REFAC_STOC_OBINV'
lcSql = [begin pack_refaceri.refac_stoc_obinv(?gcS,?lnAn,?lnLuna,] + lcLunar + [); end;]
Otherwise
lcSql = []
Endcase
If !Empty(lcSql)
*!* 11.02.2008
lcExecute = [begin pack_contafin.SET_ID_SUCURSALA(?gnIdSucursala); end;]
lnSucces = goExecutor.oExecute(lcExecute)
If lnSucces < 0
amessagebox(goExecutor.cEroare,0+16,"Eroare")
ELSE
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
amessagebox(lcProc + CRLF + goExecutor.cEroare,0+16,"Eroare")
ENDIF
ENDIF
*!* 11.02.2008 ^
Endif
Return lnSucces
Endproc

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,357 @@
*!* 21.12.2011
*!* marius.mutu
*!* tlNuSuprascrieCod default .F. se foloseste codul generat din pack_contafin, .T. se foloseste codul din act_temp
*!* folosit in inventare de corectie. se foloseste acelasi cod, id_fact ca la inventarul original
*!* 11.01.2012
*!* marius.mutu
*!* tlLoadBackup - apelare oscrie_in_fisiere cu restaurarea actactan, rul_temp, rul_temp_obinv din backupset
*!* 24.03.2026
*!* marius.mutu
*!* stergere_import_note_contabile - se stergea doar prima nota cu succes, apoi iesea din scan
Parameters tnScrie_Sterge, tlModificare, tlRul, tlNuSuprascrieCod, tlLoadBackup
*!* tnScrie_Sterge: 0 = scriere, 2 = stergere, 1 = refacere (nu se foloseste de oscrie_in_fisiere)
*!* tlModificare: .F. = nota noua, .T. modificare nota (scriere + stergere)
*!* tlNuSuprascrieCod default .F. se foloseste codul generat din pack_contafin, .T. se foloseste codul din act_temp
*!* tlLoadBackup: default .F. - nu restaurez actactan, rul_temp, rul_temp_obinv din backupset, .T. restaurez actactan, rul_temp, rul_temp_obinv din backupset
Private pcMesajRefacereNota, pdData
Local lnSucces, lnCod, lcSql, llManualTransactions, lnSucces2
*!* 11.01.2012
Local loBackupXML
pcMesajRefacereNota = ""
loBackupXML = Createobject("backupxml", "oscrie_in_fisiere") && oproceduri_comune.prg
If m.tlLoadBackup
If loBackupXML.ExistsBackupSet()
loBackupXML.RestoreBackupSet()
If Used('actactan')
Select ACTACTAN
Browse
Endif
If Used('rul_temp')
Select RUL_TEMP
Browse
Endif
If Used('rul_temp_obinv')
Select RUL_TEMP_OBINV
Browse
Endif
If AMESSAGEBOX('Doriti sa continuati scrierea notelor din backup?', 4 + 32, _Screen.Caption) <> 6
lnSucces = -1
Return m.lnSucces
Endif
Else
AMESSAGEBOX('Nu Exista backupset-ul "oscrie_in_fisiere"!', 0 + 48, _Screen.Caption)
lnSucces = -1
Return m.lnSucces
Endif
Else
If loBackupXML.ExistsBackupSet()
loBackupXML.DeleteBackupSet()
Endif
If Used('actactan')
loBackupXML.SaveBackupSet("actactan")
Endif
If Used('rul_temp')
loBackupXML.SaveBackupSet("rul_temp")
Endif
If Used('rul_temp_obinv')
loBackupXML.SaveBackupSet("rul_temp_obinv")
Endif
Endif
*!* 11.01.2012 ^
lnSucces = -1
If Reccount('actactan') = 0
AMESSAGEBOX('Nu s-a inregistrat nota contabila.')
Return lnSucces
Endif
If Empty(tnScrie_Sterge) Or Isnull(tnScrie_Sterge)
tnScrie_Sterge = 0
Endif
If !Used('ACTACTAN')
AMESSAGEBOX('Nu exista fisierul <actactan>.')
Return lnSucces
Endif
If tnScrie_Sterge = 2
Select ACTACTAN
Locate
lnCod = cod
Else
lnCod = Null
Endif
*!* modificare 18.09.2007
If tnScrie_Sterge = 2 And !tlModificare And Used('rul_temp') And Reccount('rul_temp') > 0
Private pcMesaj
Store '' To pcMesaj
lcSql = [begin ] + gcS + [.verifica_stoc(] + Alltrim(Str(lnCod)) + [,?@pcMesaj); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces < 0
AMESSAGEBOX(goExecutor.oPrelucrareEroare(), 16, "Eroare")
Return lnSucces
Endif
If !Isnull(pcMesaj)
AMESSAGEBOX(pcMesaj, 48, "Atentie")
Release pcMesaj
Return - 5
Endif
Release pcMesaj
Else
lnSucces = 1
Endif
llManualTransactions = Iif(SQLGetprop(gnhandle, "Transactions") = 2, .T., .F.)
If lnSucces > 0
If !tlModificare And !llManualTransactions
lnSucces = SQLSetprop(gnhandle, "Transactions", 2)
Endif
Endif
If lnSucces > 0
pdData = {}
lcSql = [begin pack_contafin.init_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna,] + ;
Iif(m.tlNuSuprascrieCod, "0", "1") + [,] + Alltrim(Str(tnScrie_Sterge)) + [,?gnIdSucursala); end;]
lnSucces = Iif(goExecutor.oExecuta(lcSql), 1, -1)
Endif
If lnSucces > 0
lnSucces = sql_temp_insert('actactan', 'ACT_TEMP')
If lnSucces > 0 And tlRul
If Used('rul_temp') And Reccount('rul_temp') > 0
lnSucces = sql_temp_insert('rul_temp', 'RUL_TEMP')
Endif
If Used('RUL_TEMP_OBINV') And Reccount('RUL_TEMP_OBINV') > 0
lnSucces = sql_temp_insert('rul_temp_obinv', 'RUL_TEMP_OBINV')
Endif
Endif
Endif
If lnSucces > 0
pcMesajRefacereNota = ""
lcSql = [begin pack_contafin.final_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna,] + Iif(tnScrie_Sterge == 2, Alltrim(Str(lnCod)), [NULL]) + [,] + ;
Alltrim(Str(tnScrie_Sterge)) + [,] + Iif(tlModificare, [0], [1]) + [,?@pcMesajRefacereNota); end;]
lnSucces = Iif(goExecutor.oExecuta(lcSql), 1, -1)
If !Empty(Nvl(pcMesajRefacereNota, ''))
AMESSAGEBOX(pcMesajRefacereNota, 0 + 48, 'Atentie')
Endif
Endif
If !tlModificare And !llManualTransactions
If lnSucces < 0
lcSql = "ROLLBACK"
Else
lcSql = "COMMIT"
Endif
lnSucces2 = goExecutor.oExecute(lcSql)
If lnSucces2 < 0
AMESSAGEBOX(lcSql + Chr(13) + goExecutor.cEroare, 0 + 16, "Eroare")
Endif
lnSucces2 = SQLSetprop(gnhandle, "Transactions", 1)
If lnSucces2 < 0
AMESSAGEBOX('Programul nu a reusit sa treaca pe tranzactie automata. Iesiti din program si intrati din nou!', 0 + 48, 'Atentie!')
Endif
Endif
Return lnSucces
&& ------------------------------------------------------------------------------------
Procedure sql_temp_insert
Lparameters tcAlias, tcTableName
Local lcAlias, lcCursor, lnSucces
Private poIreg
Local lcVariable
If Empty(tcAlias)
lcAlias = 'ACTACTAN'
Else
lcAlias = Upper(Alltrim(tcAlias))
Endif
If Empty(tcTableName)
lcTableName = 'ACT_TEMP'
Else
lcTableName = Upper(Alltrim(tcTableName))
Endif
lcCursor = 'crs_Coloane'
lcSql = [SELECT COLUMN_NAME AS COLOANA from user_tab_columns WHERE table_name = ?lcTableName]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
AMESSAGEBOX('Eroare la selectare coloane din ' + lcTableName + Chr(13) + goExecutor.cEroare, 0 + 16, 'Eroare')
Endif
If lnSucces > 0
***
Select (lcAlias)
lnCount = Fcount()
Scan
lcFields = []
lcValues = []
lcInsert = []
Scatter Name poIreg
For i = 1 To lnCount
Select (lcAlias)
lcFieldName = Upper(Alltrim(Field(i)))
lcFieldType = Type(lcFieldName)
lcFieldValue = Evaluate(lcFieldName)
If lcFieldType = 'C'
lcVariable = '?ALLTRIM(poIreg.' + lcFieldName + ')'
Else
lcVariable = '?poIreg.' + lcFieldName
Endif
Select CRS_COLOANE
Locate For Upper(Alltrim(COLOANA)) == lcFieldName
If !Found()
Loop
Endif
lcFields = lcFields + [,] + lcFieldName
lcNumber = '0'
lcDate = ''
lcString = ''
lcValues = lcValues + [,] + lcVariable
*!* DO CASE
*!* CASE lcFieldType = 'N'
*!* IF EMPTY(lcFieldValue) OR ISNULL(lcFieldValue)
*!* lcNumber = '0'
*!* ELSE
*!* lcNumber = ALLTRIM(STR(lcFieldValue,24,4))
*!* ENDIF
*!* lcValues = lcValues + [,] + lcNumber
*!* CASE lcFieldType = 'C'
*!* IF EMPTY(lcFieldValue) OR ISNULL(lcFieldValue)
*!* lcString = ''
*!* ELSE
*!* lcString = ALLTRIM(lcFieldValue)
*!* ENDIF
*!* lcValues = lcValues + [,] + ['] + lcString + [']
*!* CASE INLIST(lcFieldType,'D','T')
*!* IF EMPTY(lcFieldValue) OR ISNULL(lcFieldValue)
*!* lcDate = ''
*!* ELSE
*!* lcDate = DTOS(lcFieldValue)
*!* ENDIF
*!* lcValues = lcValues + [,] + [TO_DATE('] + lcDate + [','YYYY-MM-DD')]
*!* ENDCASE
Endfor
* FAC NULL ID-URILE CU VALOARE 0
poIreg.id_sucursala = IIF(!EMPTY(NVL(poIreg.id_sucursala,0)), poIreg.id_sucursala, NULL)
IF TYPE('poIreg.taxcode') <> 'U'
poIreg.taxcode = IIF(!EMPTY(NVL(poIreg.taxcode,0)), poIreg.taxcode, NULL)
ENDIF
IF TYPE('poIreg.paymentcode') <> 'U'
poIreg.paymentcode = IIF(!EMPTY(NVL(poIreg.paymentcode,'')), poIreg.paymentcode, NULL)
ENDIF
IF TYPE('poIreg.id_jtva_coloana') <> 'U'
poIreg.id_jtva_coloana = IIF(!EMPTY(NVL(poIreg.id_jtva_coloana,0)), poIreg.id_jtva_coloana, NULL)
ENDIF
lcFields = Substr(lcFields, 2)
lcValues = Substr(lcValues, 2)
&& INSERT INTO ACT_TEMP
lcInsert = [INSERT INTO ] + lcTableName + [ (] + lcFields + [) VALUES (] + lcValues + [)]
lnSucces = goExecutor.oExecute(lcInsert)
If lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
Exit
Endif
Endscan
Endif
If Used('crs_coloane')
Use In CRS_COLOANE
Endif
Return lnSucces
Endproc && sql_temp_insert
******************
* Sterge importuri dupa act.explicatia5 sau un cod, cate un calup de note (cod)
******************
PROCEDURE stergere_import_note_contabile
LPARAMETERS tcExplicatia, tnCod, tcColoana
* tcExplicatia = valoarea din coloana act.explicatia5
* tcColoana (optional) default = 'explicatia5'
* tnCod (optional) daca doresc sa sterg un singur cod
PRIVATE pcExplicatia
Local lcColoana, lcCursor, lcSql, llSucces, lnSucces, lcSelect
LOCAL lnPercent, lcTask
lcselect = SELECT()
lcColoana = IIF(EMPTY(m.tcColoana), 'explicatia5', m.tcColoana)
pcExplicatia = ALLTRIM(NVL(m.tcExplicatia, ''))
pnCod = NVL(m.tnCod, 0)
IF EMPTY(m.pcExplicatia) AND EMPTY(m.pnCod)
llSucces = .F.
SELECT (m.lcSelect)
RETURN m.llSucces
ENDIF
lcTask = 'Stergere...'
lcSql = [select distinct cod from act where an=?gnAn and Luna=?gnLuna and sters=0 ] + ;
IIF(!EMPTY(m.pcExplicatia), [ and ] + m.lcColoana + [ = ?pcExplicatia], '') + ;
IIF(!EMPTY(m.pnCod), [ and cod = ?pnCod], '')
lcCursor = [cCoduri]
llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursor)
IF !m.llSucces
SELECT (m.lcSelect)
RETURN m.llSucces
ENDIF
lnSucces = SQLSetprop(m.gnhandle, "Transactions", 2)
lcSql = [begin pack_contafin.init_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna, 1,0,?gnIdSucursala); end;]
llSucces = goExecutor.oExecuta(lcSql)
If m.llSucces
Select cCoduri
Scan
pnCod = cod
If Mod(Recno(), 10) = 0
lnPercent = Round(Recno() / Reccount() * 100, 0)
WAIT WINDOW m.lcTask + Alltrim(Str(m.lnPercent)) + '%' NOWAIT
Endif
lcSql = [begin pack_contafin.sterge_document(?pnCod); end;]
llSucces = goExecutor.oExecuta(lcSql)
If !m.llSucces
Exit
Endif
ENDSCAN
Endif
If m.llSucces
llSucces2 = goExecutor.oExecuta('COMMIT')
Else
llSucces2 = goExecutor.oExecuta('ROLLBACK')
Endif
SQLSetprop(m.gnhandle, "Transactions", 1)
SELECT (m.lcSelect)
RETURN m.llSucces
ENDPROC && stergere_import_note_contabile

View File

@@ -0,0 +1,268 @@
*!* 19.05.2009
*!* marius.mutu
*!* gnewcryptxml = .T. nu mai exista fisiere roa_security.xml cu criptarea veche (windows api)
*!* 21.06.2012
*!* marius.mutu
*!* VERIFICA_UTILIZATOR
*!* tratare utilizatori ADMIN -1, SUPER -2
#DEFINE CRLF CHR(13) + CHR(10)
*** osecurity
********************* INCEPUT Getcrssecurity **********************
* PROCEDURE Getcrssecurity( )
* Date : 04/05/05, 11:25:56
* author : marius.mutu
* description:
PROCEDURE GetcrsSecurity
LPARAMETERS tcSecurityFile
*!* SECURITY.TXT - NECRIPTAT
*!* SECURITY.XML - CRIPTAT
*!* DACA EXISTA SECURITY.XML - PARSEZ XML, ALTFEL PARSEZ TXT
*!* gnewcryptxml - daca roa_security.xml are criptare noua(blowfish)
*!* gnewcryptfll - daca exista vfpencryption.fll
IF TYPE("gnewcryptxml")="U"
PUBLIC gnewcryptxml
ENDIF
*!* 19.05.2009
*!* nu mai exista fisiere roa_security.xml cu criptarea veche (windows api)
*!* gnewcryptxml=.F.
gnewcryptxml = .T.
IF TYPE("gnewcryptfll")="U"
PUBLIC gnewcryptfll
ENDIF
gnewcryptfll=.T.
LOCAL lnAt,lcDirMare
IF TYPE("gcComunPath")="U"
PUBLIC gcComunPath
lnAt=RAT("\",gcAppPath,2)
lcDirMare=LEFT(gcAppPath,lnAt)
gcComunPath=ADDBS(lcDirMare)+"COMUNROA\"
ENDIF
LOCAL loex AS EXCEPTION
TRY
lcEncryptionFile = gcComunPath+"vfpencryption.fll"
IF !"vfpencryption"$LOWER(SET("Library"))
SET LIBRARY TO (lcEncryptionFile) ADDITIVE
ENDIF
CATCH TO loex
gnewcryptfll=.F.
ENDTRY
LOCAL lcSecurityFile,lcSecurityPath, lcCursor, lcLinie, lcMode
LOCAL lcSecurityFileXML
lcSecurityFileXML = FORCEEXT(tcSecurityFile,'xml')
lcCursor = "crsHost"
lcSecurityFile = tcSecurityFile
lcSecurityPath = ADDBS(JUSTPATH(lcSecurityFile))
lnValid = 0
llSucces = .T.
IF !DIRECTORY(lcSecurityPath)
TRY
MD (lcSecurityPath)
CATCH
aMESSAGEBOX('Nu se poate crea directorul ' + lcSecurityPath + '!',0+16,'Atentie')
ENDTRY
ENDIF
IF !(FILE(lcSecurityFile) OR FILE(lcSecurityFileXML))
CD (lcSecurityPath)
IF !FILE(lcSecurityFileXML)
lcSecurityText = 'ROA;CONTAFIN_ORACLE;123;'
lcSecurityText = INPUTBOX('Host(DSN);SCHEMA;SCHEMA_PASSWORD;1;','Server',lcSecurityText)
lcSecurityText = ALLTRIM(lcSecurityText)
IF !EMPTY(lcSecurityText)
IF RIGHT(lcSecurityText,1) # ';'
lcSecurityText = lcSecurityText + ';'
ENDIF
ELSE
llSucces = .F.
ENDIF
ENDIF
IF llSucces
TRY
IF !(FILE(lcSecurityFileXML) OR FILE(lcSecurityFile))
*!* SECURITY.TXT
STRTOFILE(lcSecurityText, lcSecurityFile)
*!* SECURITY.TXT ^
ENDIF
*!* SECURITY.XML
IF !FILE(lcSecurityFileXML)
CREATE CURSOR cXML (HOST c(50), schema c(50), pwd c(50))
INSERT INTO cXML (HOST, schema, pwd) VALUES("ROA","CONTAFIN_ORACLE","ENCRYPTED PWD")
CURSORTOXML("cXML",lcSecurityFileXML, 1, 512, 0, "1")
USE IN cXML
ENDIF
*!* SECURITY.XML ^
CATCH
aMESSAGEBOX('Nu s-a putut crea fisierul ' + lcSecurityFile,0+16,'Atentie')
llSucces = .F.
ENDTRY
ENDIF
ENDIF
IF llSucces
IF !FILE(lcSecurityFile) AND !FILE(lcSecurityFileXML)
aMESSAGEBOX('Nu exista fisierul ' + lcSecurityFile,0+16,'Atentie')
llSucces = .F.
ENDIF
ENDIF
IF llSucces
IF USED(lcCursor)
USE IN (lcCursor)
ENDIF
&& daca exista security.xml - il transform in cursorul cXML si completez crsHost
CREATE CURSOR (lcCursor)(HOST c(100), schema c(100), pwd v(100), IsEncrypted c(1))
IF FILE(lcSecurityFileXML)
TRY
lcSecurityText = FILETOSTR(lcSecurityFileXML)
XMLTOCURSOR(lcSecurityFileXML, "cXML", 512)
SELECT cXML
GO TOP
SCATTER NAME lofirstrecord
IF lofirstrecord.HOST="ENCRYPTION"
gnewcryptxml=.T.
DELETE
ENDIF
INSERT INTO (lcCursor) (HOST, schema, pwd, IsEncrypted) ;
SELECT HOST, schema, pwd, "1" AS IsEncrypted ;
FROM cXML
lnValid = RECCOUNT('cXML')
USE IN cXML
CATCH TO loex
*!* Local loEx As Exception
aMESSAGEBOX('Mesaj: ' + loex.MESSAGE + CRLF + ;
'Eroare nr: ' + ALLTRIM(TRANSFORM(loex.ERRORNO)) + CRLF + ;
'Cod: ' + loex.LINECONTENTS + CRLF + 'Procedura: ' + loex.PROCEDURE + CRLF + ;
'Linia nr: ' + ALLTRIM(TRANSFORM(loex.LINENO)),0+16,'Eroare')
FINALLY
USE IN (SELECT('cXML'))
ENDTRY
ELSE
* CREATE CURSOR (lcCursor)(HOST c(100), Schema c(100), Pwd v(100), IsEncrypted c(1))
lcSecurityText = FILETOSTR(lcSecurityFile)
LOCAL laHost
DIMENSION laHost[1]
lnLen = ALINES(laHost, lcSecurityText)
IF lnLen > 0
FOR i = 1 TO lnLen
lcLinie = laHost[i]
lcHost = GETWORDNUM(lcLinie, 1, ';')
lcSchema = GETWORDNUM(lcLinie, 2, ';')
lcPassword = GETWORDNUM(lcLinie, 3, ';')
lcMode = "0" && necriptat - security.txt
IF EMPTY(lcHost) OR EMPTY(lcSchema) OR EMPTY(lcPassword)
LOOP
ENDIF
lnValid = lnValid + 1
INSERT INTO &lcCursor (HOST, schema, pwd, IsEncrypted) VALUES (lcHost, lcSchema, lcPassword, IIF(EMPTY(lcMode), '0', lcMode))
ENDFOR
ENDIF
ENDIF
ENDIF
RETURN lnValid
ENDPROC
********************* SFARSIT Getcrssecurity **********************
*************************************************************************************************************
FUNCTION verifica_utilizator
LPARAMETERS tcNumeUtilizator,tcParola
LOCAL lnVerificare,lnRezultat,lnSuma,lnCkSum
glAdministrator = .F.
glSupervizor = .F.
lnRezultat = -1
TRY
lcSql = [SELECT pack_drepturi.verificautilizator(']+ALLTRIM(tcNumeUtilizator)+[',']+;
ALLTRIM(tcParola)+[') as id_util from dual]
lcCursor = [v_verificare]
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
goExecutor.oReset()
IF USED('v_verificare') AND RECCOUNT('v_verificare')>0
SELECT v_verificare
lnVerificare = id_util
USE IN v_verificare
ENDIF
IF m.lnVerificare = -1
glAdministrator = .F.
glSupervizor = .F.
RETURN m.lnRezultat
ENDIF
IF lnVerificare < -1000000 && ADMIN, SUPER, SERVER
lnRezultat = lnVerificare + 1000000
DO case
CASE lnRezultat = -1 && ADMIN
glAdministrator = .T.
CASE lnRezultat = -2 && SUPER
glSupervizor = .T.
ENDCASE
ELSE
lnSuma = 0
lnRezultat = INT(lnVerificare/100) && id_util
lnVerificare = ABS(m.lnVerificare) && pentru cazul in care am id_util (-1,-2,-3)
i = lnRezultat
lnCkSum = MOD(lnVerificare,100)
DO WHILE i > 0
lnSuma = lnSuma+MOD(i,10)
i = INT(i/10)
ENDDO
IF MOD(lnSuma+lnCkSum, 13) = 0
glAdministrator = .T. && GRUP ADMINISTRARE ID = 0
ELSE
IF MOD(lnSuma+lnCkSum, 11) = 0
glSupervizor = .T. && GRUP SUPERVIZARE ID = -1
ENDIF
ENDIF
ENDIF
CATCH
lnRezultat = -1
ENDTRY
RETURN lnRezultat
ENDFUNC
*************************************************************************************************************
FUNCTION verifica_id_util
LPARAMETERS tnIdUtil
LOCAL lcRezultat
lcRezultat=[]
lcSql = [SELECT pack_drepturi.verificaidutil(]+;
ALLTRIM(STR(tnIdUtil))+[) as utilizator from dual]
lcCursor = [v_cursor_verif]
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
goExecutor.oReset()
IF USED('v_cursor_verif') AND RECCOUNT('v_cursor_verif')>0
SELECT v_cursor_verif
lcRezultat=utilizator
USE IN v_cursor_verif
ENDIF
RETURN lcRezultat
ENDFUNC
*************************************************************************************************************

View File

@@ -0,0 +1,448 @@
**************************************************************************************************************
** Clase:
** oGeneratorNumere
** Proceduri:
** viz_config_serii_complet
** creeaza_cursor_serii
** Functii:
** caut_serii_fact
** caut_tipentitate_permis
**************************************************************************************************************
*********************************** Obiect oNumereDocumente *********************************
Define Class oGeneratorNumere As Custom
cAliasVechi = Null
lInitializare = .F. && modificare 14.07.2010
nTipuriDocument = 30
Declare paPlaje (30,8)
** 1 - numar
** 2 - nume cursor
** 3 - cu_serie
** 4 - cu_plaja
** 5 - id_serie
** 6 - cu buffer .T. daca se genereaza mai multe numere in cadrul aceleiasi operatii
** 7 - tip buffer 1 - in caz de renuntare, se dezaloca toate numerele din buffer ( implicit )
** 2 - in caz de renuntare, se dezaloca toate numerele din buffer, cu exceptia primului, care este repus in array
** 8 - nume cursor buffer
******************************
Procedure Init
*!* modificare 14.07.2010
*!* This.ResetAll()
This.lInitializare = .T.
This.ResetAll()
This.lInitializare = .F.
*!* modificare 14.07.2010 ^
Endproc
******************************
Procedure Reset
Lparameters tnIdTipDoc
With This
.paPlaje(tnIdTipDoc,1) = 0
.paPlaje(tnIdTipDoc,2) = Null
.paPlaje(tnIdTipDoc,3) = .F.
.paPlaje(tnIdTipDoc,4) = .F.
.paPlaje(tnIdTipDoc,5) = Null
.dezactiveazaBuffer(tnIdTipDoc)
Endwith
Endproc
******************************
Procedure ResetAll
With This
For i = 1 To This.nTipuriDocument
.Reset(i)
Endfor
Endwith
Endproc
******************************
Procedure ResetNumar
Lparameters tnIdTipDoc
With This
.paPlaje(tnIdTipDoc,1) = 0
.paPlaje(tnIdTipDoc,5) = Null
Endwith
Endproc
******************************
Procedure ResetNumere
With This
For i = 1 To This.nTipuriDocument
.ResetNumar(i)
Endfor
Endwith
Endproc
******************************
Procedure activeazaBuffer
Lparameters tnIdTipDoc,tnTipBuffer
Local lnTipBuffer
lcSql = [begin pack_serii_numere.seteazaNumereMultiple(1); end;]
If goExecutor.oExecuta(lcSql)
If Empty(tnTipBuffer) Or !Between(tnTipBuffer,1,2)
lnTipBuffer = 1
Else
lnTipBuffer = tnTipBuffer
Endif
lcCursor = [crsbufsertemp]+Alltrim(Str(tnIdTipDoc))
Create Cursor (lcCursor) (numar N(14))
*!* If !Empty(This.paPlaje(tnIdTipDoc,1))
*!* Select (lcCursor)
*!* Append Blank
*!* Replace numar With This.paPlaje(tnIdTipDoc,1)
*!* This.ResetNumar(tnIdTipDoc)
*!* Endif
This.paPlaje(tnIdTipDoc,6) = .T.
This.paPlaje(tnIdTipDoc,7) = lnTipBuffer
This.paPlaje(tnIdTipDoc,8) = lcCursor
Endif
Endproc
******************************
Procedure dezactiveazaBuffer
Lparameters tnIdTipDoc
lcSql = [begin pack_serii_numere.seteazaNumereMultiple(0); end;]
*!* modificare 14.07.2010 : imi apeleaza de 20 de ori procedura la fiecare initializare a obiectului
*!* lnSucces = goExecutor.oExecute(lcSql)
If (This.lInitializare And tnIdTipDoc = 1) Or !This.lInitializare
llSucces = goExecutor.oExecuta(lcSql)
Else
llSucces = .T.
Endif
*!* modificare 14.07.2010 ^
If llSucces
lcCursor = This.paPlaje(tnIdTipDoc,8)
If !Empty(Nvl(lcCursor,[]))
Use In (lcCursor)
Endif
This.paPlaje(tnIdTipDoc,6) = .F.
This.paPlaje(tnIdTipDoc,7) = 1
This.paPlaje(tnIdTipDoc,8) = Null
Endif
Endproc
******************************
Procedure salveazaAliasVechi
This.cAliasVechi = Alias()
Endproc
******************************
Procedure selecteazaAliasVechi
If !Empty(Nvl(This.cAliasVechi,[]))
Select (This.cAliasVechi)
Endif
Endproc
******************************
Function creeaza_cursor_serii
Lparameters tnIdTipDoc
Local lcSql,lcCursor,llSucces
Private pnIdTipDoc,pnRezultat
pnIdTipDoc = tnIdTipDoc
pnRezultat = 0
This.salveazaAliasVechi()
lcCursor = [crsseriitemp]+Alltrim(Str(tnIdTipDoc))
If Used(lcCursor)
Use In (lcCursor)
Endif
lcSql = [{call ] + gcS + [.pack_serii_numere.verifica_cursor_serii(?pnIdTipDoc,?gnIdUtil,?gnIdSucursala,?@pnRezultat)}]
llSucces = goExecutor.oExecuta(lcSql,lcCursor)
With This
*!* modificare 04.09.2012
If !llSucces OR pnRezultat = -1
*!* If !llSucces
*!* modificare 04.09.2012 ^
*!* modificare ROAGEST v 2.0.138
lcSql = [{call ] + gcs + [.pack_serii_numere.verifica_tipdoc(?pnIdTipDoc,?@pnRezultat)}]
IF !goExecutor.oExecuta(lcSql,lcCursor)
*!* modificare ROAGEST v 2.0.138 ^
pnRezultat = 1
.paPlaje(tnIdTipDoc,2) = Null
.paPlaje(tnIdTipDoc,3) = .F.
.paPlaje(tnIdTipDoc,4) = .F.
*!* modificare ROAGEST v 2.0.138
Else
.paPlaje(tnIdTipDoc,2) = Null
.paPlaje(tnIdTipDoc,3) = Iif(Mod(pnRezultat,2)=1,.T.,.F.)
.paPlaje(tnIdTipDoc,4) = .F.
Endif
*!* modificare ROAGEST v 2.0.138 ^
Else
If Reccount(lcCursor) > 0
.paPlaje(tnIdTipDoc,2) = lcCursor
.paPlaje(tnIdTipDoc,3) = Iif(Mod(pnRezultat,2)=1,.T.,.F.)
.paPlaje(tnIdTipDoc,4) = Iif(pnRezultat>=2,.T.,.F.)
Else
pnRezultat = 1
.paPlaje(tnIdTipDoc,2) = Null
.paPlaje(tnIdTipDoc,3) = .F.
.paPlaje(tnIdTipDoc,4) = .F.
Endif
Endif
Endwith
This.selecteazaAliasVechi()
Release pnIdTipDoc
Return pnRezultat
Endfunc && creeaza_cursor_serii
******************************
Function aloca_numar
Lparameters tnIdTipDoc,tnIdGestiune
Private pnIdTipDoc,pnIdGestiune,pnNumar,pnIdSerie
Do Case
Case Isnull(This.paPlaje(tnIdTipDoc,2))
pnNumar = 0
*!* modificare ROAGEST v 2.0.105
*!* Case This.paPlaje(tnIdTipDoc,1) <> 0
*!* modificare ROAGEST v 2.0.105 ^
Case This.paPlaje(tnIdTipDoc,1) <> 0 And !This.paPlaje(tnIdTipDoc,6)
pnNumar = This.paPlaje(tnIdTipDoc,1)
Otherwise
pnNumar = -1
pnIdTipDoc = tnIdTipDoc
pnIdGestiune = Iif(Isnull(tnIdGestiune) Or Pcount()=1,Null,tnIdGestiune)
This.salveazaAliasVechi()
lcCursor = This.paPlaje(tnIdTipDoc,2)
If Used(lcCursor)
Select (lcCursor)
pnIdSerie = id_serie
Else
pnIdSerie = Null
Endif
lcSql=[begin ] + gcS + [.pack_serii_numere.aloca_numar(?pnIdTipDoc,?pnIdSerie,?pnIdGestiune,?gnIdUtil,?gnIdSucursala,?@pnNumar); end;]
IF !goExecutor.oExecuta(lcSql)
pnNumar = 0
Endif
Release pnIdTipDoc,pnIdGestiune,pnIdEntitate
With This
*!* modificare ROAGEST v 2.0.105 : daca e activat buffer-ul, atunci pun fiecare numar generat in cursor,nu in array ( in afara de primul, care ramane in array )
If This.paPlaje(tnIdTipDoc,6)
lcCursor = This.paPlaje(tnIdTipDoc,8)
Select (lcCursor)
Append Blank
Replace numar With pnNumar
Else
*!* modificare ROAGEST v 2.0.105^
.paPlaje(tnIdTipDoc,1) = pnNumar
*!* modificare ROAGEST v 2.0.105
Endif
*!* modificare ROAGEST v 2.0.105 ^
.paPlaje(tnIdTipDoc,5) = pnIdSerie
Endwith
This.selecteazaAliasVechi()
Endcase
Return pnNumar
Endfunc && aloca_numar
******************************
Procedure verifica_numar
Lparameters tnIdTipDoc,tnNumar
With This
If tnNumar <> .paPlaje(tnIdTipDoc,1) And .paPlaje(tnIdTipDoc,1) <> 0
.dezaloca_numar(tnIdTipDoc)
Endif
Endwith
Endproc
******************************
Function verifica_serie
Lparameters tnIdTipDoc
Local lcCursor,llReturn
llReturn = .F.
With This
If !Isnull(This.paPlaje(tnIdTipDoc,2))
.salveazaAliasVechi()
lcCursor = Alltrim(.paPlaje(tnIdTipDoc,2))
If Used(lcCursor)
Select (lcCursor)
If Nvl(.paPlaje(tnIdTipDoc,5),-99)<>Nvl(id_serie,-99)
.dezaloca_numar(tnIdTipDoc)
llReturn = .T.
Endif
Endif
.selecteazaAliasVechi()
Else
llReturn = .T.
Endif
Endwith
Return llReturn
Endfunc
******************************
Procedure dezaloca_numar
Lparameters tnIdTipDoc
Private pnIdTipDoc
pnIdTipDoc = tnIdTipDoc
With This
If !Isnull(This.paPlaje(tnIdTipDoc,2))
.salveazaAliasVechi()
If .paPlaje(tnIdTipDoc,1) <> 0
* Cateodata dadea eroare la executia in Oracle wrong type, desi pnIdTipDoc era numeric
*!* lcSql=[begin ] + gcS + [.pack_serii_numere.dezaloca_numar(?pnIdTipDoc); end;]
lcSql=[begin pack_serii_numere.dezaloca_numar(] + ALLTRIM(TRANSFORM(m.pnIdTipDoc)) + [); end;]
If goExecutor.oExecuta(lcSql)
.paPlaje(tnIdTipDoc,1) = 0
Endif
Endif
.selecteazaAliasVechi()
Endif
Endwith
Release pnIdTipDoc
Endproc && dezaloca_numar
******************************
Procedure dezaloca_buffer
Lparameters tnIdTipDoc,tlDezactiveazaBuffer
Private pnIdTipDoc
pnIdTipDoc = tnIdTipDoc
With This
pnTip = .paPlaje(tnIdTipDoc,7)
.salveazaAliasVechi()
lcSql=[begin ] + gcS + [.pack_serii_numere.dezaloca_numere(?pnIdTipDoc,?pnTip); end;]
If goExecutor.oExecuta(lcSql)
If pnTip = 1
.paPlaje(tnIdTipDoc,1) = 0
Endif
If tlDezactiveazaBuffer
.dezactiveazaBuffer(tnIdTipDoc)
Endif
Endif
.selecteazaAliasVechi()
Endwith
Release pnIdTipDoc,pnTip
Endproc && dezaloca_numere
*******************************
Procedure dezaloca_numere
With This
For i = 1 To This.nTipuriDocument
If .paPlaje(i,1)<>0
.dezaloca_numar(i)
Endif
Endfor
Endwith
Endproc && dezaloca_numere
******************************
Function getNumeCursor
Lparameters tnIdTipDoc
Return This.paPlaje(tnIdTipDoc,2)
Endfunc && getNumeCursor
******************************
Function getSerieCursor
Lparameters tnIdTipDoc
Local lcSerie
With This
If Reccount(.paPlaje(tnIdTipDoc,2))>0
.salveazaAliasVechi()
Select (.paPlaje(tnIdTipDoc,2))
lcSerie = Alltrim(serie)
.selecteazaAliasVechi()
Else
lcSerie = []
Endif
Endwith
Return lcSerie
Endfunc && getNumeCursor
******************************
Function getLungimeSerie
Lparameters tnIdTipDoc
Local lnLungime
With This
If Reccount(.paPlaje(tnIdTipDoc,2))>0
.salveazaAliasVechi()
Select (.paPlaje(tnIdTipDoc,2))
lnLungime = lungime
.selecteazaAliasVechi()
Else
lnLungime = Null
Endif
Endwith
Return lnLungime
Endfunc && getLungimeSerie
******************************
Function getIdSerie
Lparameters tnIdTipDoc
Return This.paPlaje(tnIdTipDoc,5)
Endfunc && getIdSerie
******************************
Enddefine
************************************ INCEPUT : viz_config_serii_complet **********************************
Procedure viz_config_serii_complet
Lparameters tnIdTipDoc
Private pcSchema,pcSelect,pcFiltru,pcOrder,poDocumente,poPlaje,poSerii
Local llAfiseaza
Store [] To pcSchema,pcSelect,pcFiltru,pcOrder,poDocumente,poPlaje,poSerii
Store .F. To llAfiseaza
pcSchema = []
pcSelect = [select id_tipdoc, id_tipentitate, tipdoc, descriere, maxlen, cu_serie, cu_plaje, tipentitate, plajepeentitate, an, luna, an2caractere from vserii_tipdoc where]
If Empty(tnIdTipDoc)
pcFiltru = [2=2]
Else
pcFiltru = [id_tipdoc=] + Alltrim(Str(tnIdTipDoc))
Endif
pcOrder = [tipdoc]
llAfiseaza = .F.
gencursor('poDocumente','crsTipdoc',pcSelect,pcFiltru,pcSchema,pcOrder,llAfiseaza)
poDocumente.ca_baza1.afisare()
pcSchema = [id_serie N(10),serie C(10),an N(1),luna N(1),lungime N(10),inactiv N(1),resetare C(50),exemplu C(50), isautofactura N(1), isbeneficiari N(1), isterti N(1), isfurnizori N(1), prefix N(5), an2caractere N(1)]
pcSelect = [select id_serie, serie, an, luna, lungime, inactiv, resetare, exemplu, isautofactura, isbeneficiari, isterti, isfurnizori, prefix, an2caractere from vserii where]
pcFiltru = [2=2]
pcOrder = [serie]
llAfiseaza = .F.
gencursor('poSerii','crsSerii',pcSelect,pcFiltru,pcSchema,pcOrder,llAfiseaza)
poSerii.ca_baza1.afisare()
pcSchema = [id_plaja N(10),id_tipdoc N(10),id_tipentitate N(10),id_entitate N(10),pl_inf N(18),pl_sup N(18),] + ;
[inactiv N(1),id_serie N(10),datai d,datas d,tipentitate C(100),entitate C(100),serie C(10),urmval C(100),valabil N(1)]
pcSelect = [select id_plaja, id_tipdoc, id_tipentitate, id_entitate, pl_inf, pl_sup, inactiv, id_serie,] + ;
[datai, datas, tipentitate, entitate, serie, urmval, valabil from vplaje_numere where]
pcFiltru = [1=2]
pcOrder = [id_tipdoc]
llAfiseaza = .F.
lcFiltruOriginal = [NVL(id_sucursala,-99) = NVL(?gnIdSucursala,-99)]
gencursor('poPlaje','crsPlaje',pcSelect,pcFiltru,pcSchema,pcOrder,llAfiseaza,[],.F.,lcFiltruOriginal)
ofrmseriicomplet = Createobject('frm_plaje_numere')
ofrmseriicomplet.Show(1)
Use In (Select('crsTipdoc'))
Use In (Select('crsSerii'))
Use In (Select('crsPlaje'))
Release ofrmseriicomplet, poDocumente, poSerii, poPlaje
Endproc && viz_config_serii_complet
************************************ SFARSIT : viz_config_serii_complet **********************************
*********************************** INCEPUT : caut_tipentitate_permis ********************************
Function caut_tipentitate_permis
Parameters tnTipDoc,tnPornire, tlDesktop
Private pnTipDoc
pnTipDoc = tnTipDoc
Local lcCont,loCauta, lnPornire, llDesktop
lnPornire = tnPornire && 1-incepe cu...6-toate
llDesktop = tlDesktop
Store "" To loCauta
lcSelect = [select id_tipentitate, descriere from ] + gcS + [.vserii_tipentpermis]
lcFiltru = [1=2]
lcSchema = []
lcOrder = [descriere]
lccoloane = [descriere]
lcTitlu = [Alegeti tipul entitatii]
lcTitluColoane = [Tip entitate]
lcFiltruOriginal = [id_tipdoc = ?pnTipDoc]
lcNumeProc = []
llToateIreg = .F.
loCauta = cauta_alfa(lcSelect,lcFiltru,lcSchema,lcOrder,lccoloane,lcTitlu,lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal,,lnPornire,,,llDesktop) && 11.07.2007
Return loCauta
Endfunc && caut_tipentitate_permis
********************************** SFARSIT : caut_tipentitate_permis ********************************
************************************** INCEPUT : caut_serii_fact ************************************
Function caut_serii_fact
Parameters tnPornire, tlDesktop
Local lcCont,loCauta, lnPornire, llDesktop
lnPornire = tnPornire && 1-incepe cu...6-toate
llDesktop = tlDesktop
Store "" To loCauta
lcSelect = [select id_serie,serie,resetare,lungime,exemplu,an,luna from ] + gcS + [.vserii]
lcFiltru = [1=2]
lcSchema = [id_serie N(10),serie C(50),resetare C(50),lungime N(10),exemplu C(50),an N(1),luna N(1)]
lcOrder = [serie,luna,an]
lccoloane = [serie,resetare,lungime,exemplu]
lcTitlu = [Alegeti seria]
lcTitluColoane = [Serie,Resetare,Lungime,Exemplu]
lcFiltruOriginal = [inactiv = 0]
lcNumeProc = []
llToateIreg = .F.
loCauta = cauta_alfa(lcSelect,lcFiltru,lcSchema,lcOrder,lccoloane,lcTitlu,lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal,,lnPornire,,,llDesktop) && 11.07.2007
Return loCauta
Endfunc && caut_serii_fact
************************************** SFARSIT : caut_serii_fact ************************************

View File

@@ -0,0 +1,337 @@
*!* 09.07.2020
*!* marius.mutu
*!* start_firma - initializare pack_sesiune.set_an, set_luna, pack_sesiune.set_sucursala, pack_sesiune.set_id_util
* PROCEDURE Start_Firma( )
* Date : 06/10/2004, 12:27:00
* author : marius.mutu
* description:
* creeaza cursorul v_firme;
* alege firma, anul, luna;
* initializeaza <gcS> = schema firmei
* creeaza cursorul <calendar> si verifica luna aleasa
* apeleaza <oinit_optiuni>
* apeleaza <update_nomenclator>
****** PARAMETER BLOCK **************
* Parameters : 0
*
******************************************* INCEPUT:Start_Firma *******************************************
Procedure Start_Firma
*** selectez firmele
Do update_firme_util_prog With gnIdProgram,gnIdUtil In updateserver.prg
Select v_Firme
If Reccount() = 0
aMessagebox('Nu aveti drepturi pe nici o firma!',0+16,'Atentie')
Quit
Endif
Go Top
If Type('goFirma') = 'O' And Type('goFirma.id_firma') = 'N'
If !Empty(goFirma.id_firma) And !Isnull(goFirma.id_firma)
Locate For id_firma = goFirma.id_firma
If !Found()
Go Top
Endif
Endif
Endif
Do While .T.
*---------------------
Private polunilean
lcSelect = [select * from syn_lunilean ]
lcCursor = [v_lunilean]
lnSucces = goExecutor.oExecute(lcSelect,lcCursor)
If lnSucces < 0
aMessagebox('Eroare la selectie ' + goExecutor.cEroare)
Return
Endif
*---------------------
If Type('loStart_Firma')!='O' Or Isnull(loStart_Firma)
*!* DO FORM frm_start_firma NAME loStart_Firma LINKED NOSHOW
Select v_Firme
Do Form frm_start_firma_nou Name loStart_Firma Linked Noshow
Endif
Select v_Firme
If gnLuna*gnAn <> 0
Select v_lunilean
Locate For nrluna = gnLuna
loStart_Firma.cLuna = Alltrim(v_lunilean.numeluna)
loStart_Firma.cAn = Alltrim(Str(gnAn))
Endif
loStart_Firma.cFirma = Alltrim(v_Firme.firma)
*****************************Inceput Lansare toolbar*****************************
If !(gnLuna*gnAn <> 0 And primadata=.T.)
loStart_Firma.Show(1)
Else
*!* 05.03.2007
*!* la lansarea din toolbar formularul este invizibil si gnbuton = 2 -> (ca si cum as da renunt - iese din program)
gnbuton = 1
*!* 05.03.2007 ^
Select v_Firme
*!* 11.02.2008
*!* Locate For Upper(Alltrim(schema))== gcs
Locate For id_firma = gnIdFirma
*!* 11.02.2008 ^
lcschemaParola=Alltrim(v_Firme.parola)
loStart_Firma.nnrluna = gnLuna
loStart_Firma.cAn = Alltrim(Str(gnAn))
lnschema_noua = schema_noua
lnIdFirma = v_firme.id_firma
lnSucces = schimba_firma(gnHandle,gcs,lnIdFirma,lcschemaParola,lnschema_noua)
If lnSucces<0
aMessagebox(goExecutor.cEroare, 0+16, 'Eroare')
Return
Endif
*--- &&lansare
Endif
*****************************Sfarsit Lansare toolbar*****************************
*!* modificare 01.03.2007
*!* am pus conditia TYPE("loStart_Firma") # "O" pentru cazul in care utilizatorul apasa "X"
*!* atunci cand este vizibila fereastra de alegere a firmei/lunii/anului >> apare "Doriti sa iesiti din program"
*!* si daca apasa da,atunci gnButon = 1 din fereastra de confirmare si nu de la fereastra de alegere a firmei
If Type("loStart_Firma.nnrluna") = "U" And gnbuton = 1
Return To Master
Endif
*!* modificare 01.03.2007 ^
If gnbuton <> 1
* QUIT
Cancel
*RETRY
*RETURN
If Buton = 2
Do Start_Firma
Endif
Endif
Select v_Firme
*!* modificare 17.12.2008
Locate for id_firma = gnIdFirma
*!* modificare 17.12.2008 ^
Scatter Name goFirma && variabila globala
If Type('gofirma.codfiscalfro') = 'U'
AddProperty(gofirma, 'codfiscalfro', ALLTRIM(Strtran(Alltrim(gofirma.cod_fiscal), 'RO','')))
Endif
lnId_Firma = v_Firme.id_firma
*lnLuna = ROUND(VAL(loStart_Firma.cLuna),0)
lnLuna = loStart_Firma.nnrluna
lnAn = Round(Val(loStart_Firma.cAn),0)
lcFirma = Upper(Alltrim(v_Firme.firma))
lcSchema = Upper(Alltrim(v_Firme.schema))
lcschemaParola = Upper(Alltrim(v_Firme.parola))
lnschema_noua = v_Firme.schema_noua
*!* IF USED('v_ancalendar')
*!* USE IN v_ancalendar
*!* ENDIF
*!* IF USED('crs_ani')
*!* USE IN crs_ani
*!* ENDIF
If Empty(lcSchema) Or Isnull(lcSchema)
*!* DO mesaj WITH "Firma "+ lcFirma + " nu are definita schema in <NOM_FIRME>",""
lcMesaj="Firma "+ lcFirma + " nu are definita schema in <NOM_FIRME>!"
aMessagebox(lcMesaj,0+48,"Atentie")
Loop
Endif
*!* 11.02.2008
*!* If gcs <> lcSchema
IF lnId_Firma <> goFirma.id_firma
LLSCHIMB = .T.
Else
LLSCHIMB = .F.
Endif
*!* 11.02.2008 ^
gcs = lcSchema
lnSucces = 1
If LLSCHIMB
lnSucces = schimba_firma(gnHandle,gcS,lnId_Firma,lcSchema,lnschema_noua)
*DO schimba_firma WITH gnHandle,GCS,lcschemaParola
If lnSucces < 0
aMessagebox('Firma nu s-a putut schimba!'+Chr(13)+Chr(13)+'ostartfirma.prg',0+16)
Return
Endif
Endif
If lnSucces > 0
lnSucces = update_calendar()
Endif
llLunaBuna = .F.
If !Used('calendar')
*!* DO mesaj WITH 'Nu s-a putut deschide calendarul firmei ' + lcFirma,''
lcMesaj="Nu s-a putut deschide calendarul firmei "+ lcFirma + "!"
aMessagebox(lcMesaj,0+48,"Atentie")
Loop
Endif
*** verific daca luna aleasa e deschisa in calendar
Select Min(Val(an)*12 + Val(nl)) As minluna,Max(Val(an)*12 + Val(nl)) As maxluna From calendar Into Cursor crsCalendar
Select crsCalendar
lnMaxLuna = maxluna
lnMinLuna = minluna
lnAnLuna = lnAn * 12+ lnLuna
Use In crsCalendar
lnLunaMax = Mod(lnMaxLuna,12)
lnAnMax = Int(lnMaxLuna/12)
If lnLunaMax = 0 And lnAnMax <> 0
lnLunaMax = 12
lnAnMax = lnAnMax - 1
Endif
lnLunaMin = Mod(lnMinLuna,12)
lnAnMin = Int(lnMinLuna/12)
If lnLunaMin = 0 And lnAnMin <> 0
lnLunaMin = 12
lnAnMin = lnAnMin - 1
Endif
Select calendar
Locate For Val(nl) = lnLuna And Val(an) = lnAn
If Found()
llLunaBuna = .T.
Scatter Name goCalendar
If lnMaxLuna = lnAnLuna
glUltimaLuna = .T.
Endif
If lnMinLuna = lnAnLuna
glPrimaLuna = .T.
Endif
glLunaBuna = llLunaBuna
lnSucces = OINIT_OPTIUNI()
If lnSucces > 0
Do update_nomenclator.prg
Do ovariabile_globale.prg
lcSql = [begin pack_contafin.set_idutil(?gnIdUtil); pack_contafin.set_id_sucursala(?gnIdSucursala); pack_sesiune.setan(?gnAn); pack_sesiune.setluna(?gnLuna);end;]
lnSucces = goExecutor.oExecute(m.lcSql)
Endif
Return lnSucces
Else
Do Case
Case lnAnLuna > lnMaxLuna And lnMaxLuna <> 0
lcMesaj = [Ultima luna deschisa este ] + Alltrim(Str(lnLunaMax)) + [/] + Alltrim(Str(lnAnMax))
gnLuna = lnLunaMax
gnAn = lnAnMax
pcNl = Padl(Alltrim(Str(gnLuna)),2,'0')
pcAn = Alltrim(Str(gnAn))
m.nl = m.pcnl
m.an = m.pcAn
Case lnAnLuna < lnMinLuna And lnMinLuna <>0
lcMesaj = [Prima luna deschisa este ] + Alltrim(Str(lnLunaMin)) + [/] + Alltrim(Str(lnAnMin))
gnLuna = lnLunaMin
gnAn = lnAnMin
pcNl = Padl(Alltrim(Str(gnLuna)),2,'0')
pcAn = Alltrim(Str(gnAn))
m.nl = m.pcnl
m.an = m.pcAn
Otherwise
lcMesaj = [Luna ] + Alltrim(Str(lnLuna)) + [ / ] + Alltrim(Str(lnAn)) + [ nu este deschisa in calendar]
Endcase
*!* DO mesaj WITH lcMesaj,''
aMessagebox(lcMesaj,0+48,"Atentie")
Loop
Endif
Enddo
Endproc
******************************************* SFARSIT: Start_Firma *******************************************
* PROCEDURE login( )
* Date : 18/10/2004, 13:14:01
* author : marius.mutu
* description:
****** PARAMETER BLOCK **************
* Parameters : 0
*
******************************************* INCEPUT:login *******************************************
Procedure login( )
*LPARAMETERS tcHost,tcUserName,tcPassword,tcUserNameApp,tcPasswordApp,tnIdUtil,tnIdProgram
Do Form frm_login
Endproc
******************************************* SFARSIT: login *******************************************
******************************************* INCEPUT:schimba_firma *************************************
Procedure schimba_firma
Lparameters tnHandle,tcSchema, tnIdFirma,tcschemaParola,tnschema_noua
Local llDeconectez,lcuser, lnSucces, lnIdFirma
LOCAL lnSucces
lnSucces = 1
IF TYPE('goFirma') = 'O'
lnIdFirma = goFirma.id_firma
ELSE
lnIdFirma = -1
ENDIF
*!* 16.02.2009
*!* aveam probleme :)
*!* ma deconectez/conectez la fiecare apel
*!* IF tnIdFirma <> lnIdFirma
*!* llDeconectez = .T.
*!* ENDIF
llDeconectez = .T.
*!* 16.02.2009 ^
If llDeconectez
goConn.Disconnect(tnHandle)
If tnschema_noua = 0
lcHost = gcHost
lcuser = gcUserName
lcPassword = gcPassword
Else
lcHost = gcHost
lcuser = tcSchema
lcPassword = tcschemaParola
Endif
lnHandle = goConn.Connect(lcHost, lcuser, lcPassword)
goLog.Log('CONECTARE ' + lcHost + ' ' + lcUser + ' ID_FIRMA ' + STR(lnIdFirma) + ' HANDLE = ' + TRANSFORM(lnHandle), PROGRAM())
If lnHandle < 0
lnSucces = -1
Else
lnSucces = 1
Endif
gcs = tcSchema
Endif && llDeconectez
Return lnSucces
Endproc
******************************************* SFARSIT:schimba_firma *************************************

515
COMUN/programe/oupdate.prg Normal file
View File

@@ -0,0 +1,515 @@
*!* 21.07.2009
*!* marius.mutu
*!* set library to inainte de dezarhivarea arhivelor (vezi comunroa care are vfpencryption si da conflict)
*!* 19.03.2024
*!* marius.mutu
*!* updatecheck: s-a inlocuit dezarhivarea cu vfpcompression cu shell.copyhere
*!* comun\programe\
*!* oupdate.prg
*!* iniacces.prg
*!* procese.prg
*!* version.prg
*!* xmlaccess.prg
*!* xmlparser.prg
*!* filebringer.prg
*!* wwcodeupdate.prg
*!* wwhttp.prg
*!* wwapi.prg
*!* comun\include\
*!* security.h
*!* comun\clase\
*!* wwdialogs.vcx
*!* main.prg
*!* PRIVATE gcDirMare
*!* gcDirMare=Left(gcAppPath,liat)
*!* SET CLASSLIB TO wwdialogs ADDITIVE
#Define crlf Chr(13)+Chr(10)
Define Class oUpdate As Custom
oInterfataXml = Null
oContainerAfisare = Null
cFisier = Null
cExtensieFisier = [.zip]
cExtensieFisierExe = [.exe] && pentru romfast_suport
Procedure Init
Lparameters tcFisier,toContainerAfisare,tcProgram
Declare ExitProcess In WIN32API Integer
Return This.initializeazaDate(tcFisier,toContainerAfisare,tcProgram)
Endproc
Function reinitializeazaDate
Lparameters tcFisier,toContainerAfisare,tcProgram
This.oInterfataXml = Null
Return This.initializeazaDate(tcFisier,toContainerAfisare,tcProgram)
Endfunc
Function initializeazaDate
Lparameters tcFisier,toContainerAfisare,tcProgram
Local llReturn
llReturn = .T.
This.oContainerAfisare = toContainerAfisare
If Empty(tcFisier)
This.cFisier= This.getServer()
Else
This.cFisier = tcFisier
Endif
This.oInterfataXml = Createobject("xmlAccess",This.cFisier)
If Type('This.oInterfataXml') <> 'O'
This.actualizeazaContainerAfisare("Nu se pot face actualiz<69>ri!")
If !Empty(tcProgram)
lcVersiune = Iif(Left(tcProgram,3)='ROA',Getversion(tcProgram),GetTxtVersion(tcProgram))
lcVersiune = Iif(lcVersiune = [0.0.0],[...],[ ] + lcVersiune)
This.actualizeazaContainerAfisare("Se lanseaz<61> " + tcProgram + lcVersiune)
Endif
llReturn = .F.
Endif
Return llReturn
Endfunc
Procedure actualizeazaContainerAfisare
Lparameters tcMesaj &&,tlSelStart modificare ROASTART v 2.0.23
If Type('this.oContainerAfisare') = 'O'
This.oContainerAfisare.Value = This.oContainerAfisare.Value + tcMesaj + crlf
*!* modificare ROASTART v 2.0.23
*!* If tlSelStart
*!* This.oContainerAfisare.SelStart = Len(This.oContainerAfisare.Value)
*!* Endif
*!* modificare ROASTART v 2.0.23 ^
This.oContainerAfisare.Refresh()
Endif
Endproc
Function getServer
Local lcnumeserver
lcnumeserver=[]
If Type('goFirma') = 'O' And Type('goFirma.nume_server') <> 'U'
lcnumeserver = Alltrim(goFirma.nume_server)
Else
lcSql = [select nume_server from syn_nom_firme where id_firma=?gnIdFirma]
lnSucces = goExecutor.oExecute(lcSql,[crsnf])
If lnSucces < 0
aMessagebox(goExecutor.ceroare,64,'Eroare')
Else
Select crsnf
lcnumeserver = Alltrim(nume_server)
Endif
If Used('crsnf')
Use In crsnf
Endif
Endif
Return lcnumeserver
Endfunc
Procedure createUpdateCursor
Lparameters tcNumeCursor
This.oInterfataXml.getXmlItems(tcNumeCursor)
Endproc
Function Getversion
Lparameters tcProgram
Return This.oInterfataXml.Getversion(tcProgram)
Endfunc
Function updatecheckTxt
Lparameters tcCurrentProg, tlSilent, tlLocalFileExist
* tlLocalFileExist: daca exista fisierul pe calculator. se descarca chiar daca versiunile din fisierul de setari si cel de pe internet sunt la fel, dar nu exista fisierul pe local
Local lcCaleActualizari, lcVersiuneLocal, lcVersiuneInternet, lcFisier, lcFisierVersiuniInternet, lcSectiune, lcExtensieFisier
Local lcLibraryPath, loEx As Exception
lcLibraryPath = gcDirMare + [COMUNROA\vfpconnection.fll]
*!* modificare 06.03.2014 : am adaugat lcExtensieFisier in loc de This.cExtensieFisier
lcExtensieFisier = IIF(INLIST(tcCurrentProg, [romfast_suport], [roascreenshot]),This.cExtensieFisierExe,This.cExtensieFisier)
If File(lcLibraryPath)
Try
Set Library To (lcLibraryPath) Additive
lcCaleActualizari = [http://www.romfast.ro/romfastsuport/files/]
lcFisierVersiuniInternet = [versiune_aplicatii.txt]
lcSectiune = [versiuni]
lcFisier = lcCaleActualizari + lcFisierVersiuniInternet
If !HTTPGet(lcFisier, gcTempPath+lcFisierVersiuniInternet, [MyProgressHandler("] + lcFisier + [")])
IF !m.tlSilent
polog.Log("Nu se poate descarca fisierul cu versiuni! " + m.lcFisier, Program())
Messagebox("Nu se poate descarca fisierul cu versiuni!",16,"Eroare")
ENDIF
Else
lcBuffer=Space(255)
DECLARE INTEGER GetPrivateProfileString ;
IN WIN32API ;
STRING cSection,;
STRING cEntry,;
STRING cDefault,;
STRING @cRetVal,;
INTEGER nSize,;
STRING cFileName
GetPrivateProfileString(lcSectiune,tcCurrentProg,"",@lcBuffer, Len(lcBuffer), gcTempPath+lcFisierVersiuniInternet)
lcVersiuneInternet = Alltrim(Strtran(lcBuffer,Chr(0),""))
Delete File (gcTempPath+lcFisierVersiuniInternet)
loIniHandler = Createobject("iniaccess")
lcVersiuneLocal = loIniHandler.getCValue(lcSectiune,tcCurrentProg)
polog.Log("Program: " + tcCurrentProg + " VersiuneLocal: " + lcVersiuneLocal + " VersiuneInternet: " + lcVersiuneInternet + " LocalFileExist: " + TRANSFORM(m.tlLocalFileExist), Program())
If ((Empty(lcVersiuneLocal) Or lcVersiuneLocal < lcVersiuneInternet) And !Empty(lcVersiuneInternet)) OR !m.tlLocalFileExist
*!* modificare 28.06.2012 : am adaugat This.cExtensieFisier in loc de .exe
*!* modificare 06.03.2014 : am adaugat lcExtensieFisier in loc de This.cExtensieFisier
lcFisier = lcCaleActualizari + tcCurrentProg + lcExtensieFisier
If (Bringfile(lcFisier,tcCurrentProg,gcDirMare+tcCurrentProg+lcExtensieFisier )=.F.)
IF !m.tlSilent
polog.Log("Eroare la copierea "+tcCurrentProg + ", versiunea "+lcVersiuneInternet+"!", Program())
Messagebox("Eroare la copierea "+tcCurrentProg + ", versiunea "+lcVersiuneInternet+"!",16,"Eroare")
ENDIF
Else
loIniHandler.setCValue(lcSectiune,tcCurrentProg,lcVersiuneInternet)
Endif
Endif
Release loIniHandler
Endif
Catch To loEx
IF !m.tlSilent
polog.Log('vfpconnection ' + loEx.Message, Program())
Messagebox('vfpconnection ' + loEx.Message)
ENDIF
Endtry
Endif
Return .T.
Endfunc
Function updatecheck
Lparameters tccurrentprog,tlmsgshow,tnTipActualizare,tcDefaultDir
* tccurrentprog este programul care trebuie actualizat
* lcmsgshow - daca e true,atunci se citeste din ini daca apare mesajul de confirmare sau nu
* tnTipActualizare - 0 = este din numeserver.xml ;
1 = este din roastart.xml ;
2 = programul se actualizeaza singur la pornire
* tcDefaultDir - directorul in care se copiaza actualizarile pentru configurarile USER... ;
( de ex.: DEV_USERREPORTS e tccurrentprog,dar trebuie sa fie copiat in USERREPORTS )
Local iniHandler As Object,lnTipFisier,lnTipActualizare && modificare v 2.0.14 : am adaugat lnTipFisier
LOCAL lcOldLibrary
lnTipActualizare = Iif(!Empty(tnTipActualizare),tnTipActualizare,0)
*!* modificare v 2.0.6
*!* If Used("SERVER_INFO")
*!* Use In SERVER_INFO
*!* Endif
*!* modificare v 2.0.6 ^
If lnTipActualizare<>2
If At("_",tccurrentprog)#0
lccurrentUR=Substr(tccurrentprog,At("_",tccurrentprog)+1)
Else
lccurrentUR=tccurrentprog
Endif
********************************************
* Rularea procedurii de update pentru
* toate programele in afara de ROASTART
********************************************
lbrun=.T.
Local lraspuns
lraspuns=4
Local loex1,loex2,loex As Exception
*!* Verifica daca trebuie rulate
*!* procedurile de update
This.actualizeazaContainerAfisare(tccurrentprog + " se verific<69> ultima versiune")
iniHandler=Createobject("iniaccess")
If lnTipActualizare = 0
lnTipFisier = 0
If Empty(This.cFisier) Or This.cFisier = "ROASTART"
XmlData="nu s-a putut conecta"
Else
polog.Log("S-a gasit serverul "+This.cFisier,Program())
polog.Log("Se cauta pentru "+This.cFisier+".XML",Program())
XmlData=This.oInterfataXml.ReadXmlFile(tccurrentprog)
Endif
Else
If Left(tccurrentprog,3)="ROA"
lnTipFisier = 0
Else
lnTipFisier = 1
Endif
polog.Log("Se cauta xml-ul pentru "+tccurrentprog,Program())
XmlData=This.oInterfataXml.ReadXmlFile(tccurrentprog)
Endif
Do Case
Case XmlData$"<>(){}"
polog.Log("Nu s-au gasit in fisierul Xml inregistrari pentru "+tccurrentprog,Program())
Case XmlData$"nu s-a putut conecta"
If iniHandler.getURL()!=""
This.actualizeazaContainerAfisare("Nu s-a g<>sit actualizare pe internet.")
else
This.actualizeazaContainerAfisare("Nu s-a g<>sit actualizare <20>n re<72>ea/local.") &&,.T. modificare ROASTART v 2.0.23
Endif
Otherwise
If tlmsgshow=.F.
lcallowconfirm=.T.
Else
lcallowconfirm=.F.
If(iniHandler.getAllowConfirm())
lcallowconfirm=.T.
Endif
Endif
If Compareversion(stripXmlVersion(XmlData),XmlData,;
IIF(Empty(tcDefaultDir),tccurrentprog,tcDefaultDir),lcallowconfirm,lnTipFisier)
polog.Log("S-a gasit versiunea " + stripXmlVersion(XmlData) + " pentru "+tccurrentprog + " (" + Getversion(tccurrentprog) + ")",Program())
lcconfirm=0
If iniHandler.getAllowConfirm()
lcconfirm = aMessagebox(stripXmlMsg(XmlData)+crlf+"Dori<72>i s<>-l <20>nc<6E>rca<63>i?",36,"Confirmare actualizare")
Else
lcconfirm = 6
Endif
If lcconfirm = 6
This.actualizeazaContainerAfisare(tccurrentprog + " se actualizeaz<61> versiunea "+stripXmlVersion(XmlData))&&,.T. modificare ROASTART v 2.0.23
polog.Log("Se incepe actualizarea "+tccurrentprog+" la versiunea "+stripXmlVersion(XmlData),Program())
*!* Verifica daca nu cumva programul este in procese
*This.oContainerAfisare.value = This.oContainerAfisare.value+"Se verfica daca se poate face updateul" + crlf
polog.Log("Se verifica daca nu cumva programul este in procese ",Program())
lnWinHandle=1
Do While lnWinHandle=1 And lraspuns=4
lnWinHandle=0
If CheckProcess(tccurrentprog)
lnWinHandle=1
*This.oContainerAfisare.value = This.oContainerAfisare.value+"Nu se poate face updateul(fisier in uz)" + crlf
polog.Log("Programul s-a gasit printre procesele care ruleaza",Program())
Endif
If lnWinHandle =1
lraspuns=aMessagebox("<22>nchideti toate instantele " + tccurrentprog + " <20>i ap<61>sa<73>i pe Repet<65> pentru a actualiza programul!",21,"Actualizare")
Else
Exit
Endif
Enddo
If lraspuns=2
polog.Log("S-a respins actualizarea",Program())
This.actualizeazaContainerAfisare("S-a respins actualizarea " + tccurrentprog)&&,.T. modificare ROASTART v 2.0.23
Endif
If lnWinHandle =0
************review ..CV
************03.oct.2007
polog.Log("Se aduce fisierul",Program())
myfilestr=StripXmlFile(XmlData)
If iniHandler.getDefault()="URL"
If Occurs("http",myfilestr)>0
lcFileToBeBrought=myfilestr
Else
If Left(myfilestr,1)="\"
lcFileToBeBrought=Right(myfilestr,Len(myfilestr)-1)
Else
lcFileToBeBrought=myfilestr
Endif
lcFileToBeBrought=iniHandler.getURL()+"/"+lcFileToBeBrought
Endif
lcFileToBeBrought = strtran(lcFileToBeBrought,[\],[/]) && modificare ROASTART v 2.1.3
Else
If Left(myfilestr,1)="\"
lcFileToBeBrought=Right(myfilestr,Len(myfilestr)-1)
Else
lcFileToBeBrought=myfilestr
Endif
lcFileToBeBrought=Addbs(ShortPath(iniHandler.getNetworkPath()))+lcFileToBeBrought
Endif
****************review***Cristian Vasile***
****************cale relativa URL**********
******************************03.10.2007***
If(Bringfile(lcFileToBeBrought,tccurrentprog)=.F.)
aMessagebox("A intervenit o eroare la copierea fisierului!",16,"Copiere")
polog.Log("A intervenit o eroare la copierea fisierului",Program())
*This.oContainerAfisare.txt_Mesaj.Caption = This.oContainerAfisare.txt_Mesaj.Caption+"A intervenit o eroare la copierea fisierului" + crlf
Else
tempfile = GetCurrentTempPath(tccurrentprog)
Cd Addbs(Justpath(tempfile))
*!* lcEncryptionFile = gcComunPath+"vfpcompression.fll"
*!* IF !"vfpcompression"$LOWER(SET("Library"))
*!* SET LIBRARY TO (lcEncryptionFile) ADDITIVE
*!* ENDIF
*!* UnzipQuick(tempfile)
lcErrorMessage = ''
lcUnzipDir = JUSTPATH(m.tempfile)
llSucces = UnzipQuickShell(m.tempfile, @lcUnzipDir, @lcErrorMessage)
IF m.llSucces
polog.Log("S-a actualizat "+ tccurrentprog + " la versiunea "+stripXmlVersion(XmlData),Program())
This.actualizeazaContainerAfisare(tccurrentprog + " s-a actualizat la versiunea "+stripXmlVersion(XmlData))&&,.T. modificare ROASTART v 2.0.23
ELSE
polog.Log("Nu s-a actualizat "+ tccurrentprog + " la versiunea "+stripXmlVersion(XmlData),Program())
This.actualizeazaContainerAfisare(tccurrentprog + " NU s-a actualizat la versiunea "+stripXmlVersion(XmlData) + " " + m.lcErrorMessage)&&,.T. modificare ROASTART v 2.0.23
ENDIF
lcDir=Addbs(Justpath(Sys(16,0)))
*!* Stergere temporar
*!*
Try
*!* modificare 28.06.2012
*!* Delete File "&tempfile"
DELETE FILE (tempfile)
*!* modificare 28.06.2012 ^
Catch To loex2
If loex2.ErrorNo=1705
This.actualizeazaContainerAfisare("NU s-a putut sterge fisierul temporar!")&&,.T. modificare ROASTART v 2.0.23
Endif
Endtry
*!*
If Atc("PROCEDURE",lcDir) > 0
lcDir = Substr(lcDir,Rat(":",lcDir)-1)
Endif
Cd (lcDir)
Endif
Else
* MESSAGEBOX("Inchideti toate instantele de ale ROA - Financiar contabilitate pentru a actualiza programul.",16,"Actualizare !")
lbrun=.F.
Endif
Else
*!* Strtofile(Dtoc(Date())+" "+Time()+" > S-a respins de utillizator updateul programului "+tccurrentprog+Chr(13)+Chr(10),gcDirMare + "updates.log",1)
polog.Log("S-a respins de utilizator actualizarea programului "+tccurrentprog,Program())
Endif
Else
polog.Log(tccurrentprog + " " + stripXmlVersion(XmlData)+" este cea mai noua versiune.",Program())
This.actualizeazaContainerAfisare(tccurrentprog + " " + stripXmlVersion(XmlData)+" este cea mai nou<6F> versiune.")&&,.T. modificare ROASTART v 2.0.23
Endif
Endcase
*!* Release InterfataXml
Release iniHandler
Return lbrun
********************************************
* Rularea procedurii de update pentru
* toate programele in afara de ROASTART
********************************************
Else
Try
*!* modificare 28.06.2012
*!* Delete file "temporar.exe"
Delete File "temporar"+This.cExtensieFisier
*!* modificare 28.06.2012 ^
Delete File "test.vbs"
Endtry
*MESSAGEBOX("Verificare")
*!* InterfataXml=Createobject("xmlAccess")
iniHandler=Createobject("iniaccess")
XmlData=This.oInterfataXml.ReadXmlFile(tccurrentprog)
Do Case
Case XmlData$"<>(){}"
polog.Log("Nu s-au gasit in fisierul Xml inregistrari pentru "+tccurrentprog,Program())
Case XmlData$"nu s-a putut conecta"
If iniHandler.getURL()!=""
This.actualizeazaContainerAfisare("Nu s-a g<>sit actualizare pe internet.")
ELSE
This.actualizeazaContainerAfisare("Nu s-a g<>sit actualizare <20>n re<72>ea/local.")&&,.T. modificare ROASTART v 2.0.23
Endif
Otherwise
polog.Log("Am inceput update "+tccurrentprog+" !",Program())
polog.Log("Versiunea din xml este " + stripXmlVersion(XmlData))
If Compareversion(stripXmlVersion(XmlData),XmlData,tccurrentprog,iniHandler.getAllowConfirm())
polog.Log("Am detectat versiuni diferite",Program())
lcconfirm=0
If iniHandler.getAllowConfirm()
lcconfirm = aMessagebox(stripXmlMsg(XmlData)+crlf+"Dori<72>i s<>-l <20>nc<6E>rca<63>i?",292,"Confirmare actualizare")
Else
lcconfirm = 6
Endif
If lcconfirm = 6
polog.Log("Trebuie sa aduca programul",Program())
************review ..CV
************03.oct.2007
myfilestr=StripXmlFile(XmlData)
If iniHandler.getDefault()="URL"
If Occurs("http",myfilestr)>0
lcFileToBeBrought=myfilestr
Else
If Left(myfilestr,1)="\"
lcFileToBeBrought=Right(myfilestr,Len(myfilestr)-1)
Else
lcFileToBeBrought=myfilestr
Endif
lcFileToBeBrought=iniHandler.getURL()+"/"+lcFileToBeBrought
Endif
Else
If Left(myfilestr,1)="\"
lcFileToBeBrought=Right(myfilestr,Len(myfilestr)-1)
Else
lcFileToBeBrought=myfilestr
Endif
lcFileToBeBrought=Addbs(ShortPath(iniHandler.getNetworkPath()))+lcFileToBeBrought
Endif
****************review***Cristian Vasile***
****************cale relativa URL**********
******************************03.10.2007***
If(Bringfile(lcFileToBeBrought,tccurrentprog)=.F.)
aMessagebox("A intervenit o eroare la <20>ncercarea copierii fi<66>ierului de actualizare!",16,"Actualizare")
Else
polog.Log("Am adus programul",Program())
*!* tempfile = GetCurrentTempPath(tccurrentprog) && modificare 28.06.2012
*!* modificare v 2.0.29
*!* lcrunvbs=[Run /N7 ]+Addbs(Substr(gcAppPath,1,Rat([\],gcAppPath,2)))+[COMUNROA\updater.exe ] + ;
*!* STRTRAN(Addbs(Justpath(Sys(16,0))),[ ],[~])+tccurrentprog+[.EXE]
lcrunvbs=[Run /N7 ]+shortpath(Addbs(Substr(gcAppPath,1,Rat([\],gcAppPath,2))))+[COMUNROA\updater.exe |] + ;
shortpath(Addbs(Justpath(Sys(16,0))))+tccurrentprog+[.EXE]
*!* modificare v 2.0.29 ^
&lcrunvbs
polog.Log("Am executat updater.exe",Program())
ExitProcess(0)
Endif
Endif
Endif
Endcase
Return .T.
Endif
Endfunc
Enddefine
Function updatecheckfiles
*!* (07.09.09) tlSilent = .T. - daca nu apare mesajul de eroare in caz ca nu poate copia fisierul
Lparameters lcFisier,tlSilent
Local loUpdate,cLocalFile,cFilePath
***************************************
*
***************************************
iniHandler = Createobject("iniaccess")
If lcFisier="ROA_SECURITY.XML"
cLocalFile = gcDirMare + "Security\" + lcFisier
Else
cLocalFile = gcDirMare + lcFisier
Endif
If (iniHandler.getNetworkPath()#"" And iniHandler.getDefault()="NetworkPath") && Or iniHandler.getNetworkPath()#"" And iniHandler.getURL()="")
cFilePath = Addbs(ShortPath(iniHandler.getNetworkPath())) + lcFisier
Else
If(iniHandler.getURL()#"" And iniHandler.getDefault()="URL") && Or iniHandler.getURL()#"" And iniHandler.getNetworkPath()="")
cFilePath =iniHandler.getURL() +"/"+ lcFisier
Else
Return .F.
Endif
Endif
If(Bringfile(cFilePath,lcFisier,cLocalFile)=.F.) and !tlSilent
aMessagebox("A intervenit o eroare la copierea fisierului de actualizare! " + CHR(10) + ;
TRANSFORM(cFilePath) + CHR(10) + TRANSFORM(lcFisier) + CHR(10) + TRANSFORM(cLocalFile),16,"Actualizare")
Endif
Endfunc

91
COMUN/programe/outile.prg Normal file
View File

@@ -0,0 +1,91 @@
Define Class oUtile As Custom
Procedure Init
Declare Integer GetShortPathName In Win32API;
STRING @lpszLongPath, String @lpszShortPath,;
INTEGER cchBuffer
Endproc
Function ShortPath
Lparameter tcPath
Local lcPath, lcShortName, lnLength, lnResult
lcPath = tcPath
lcShortName = Space(260)
lnLength = Len(lcShortName)
lnResult = GetShortPathName(@lcPath, @lcShortName, lnLength)
If lnResult = 0
Return ""
Endif
Return Left(lcShortName,lnResult)
Endfunc
Function GetAppStartPath
Local lcPath
Do Case
*** VFP 6 provides ServerName property for COM servers EXE/DLL/MTDLL
Case Inlist(Application.StartMode,2,3,5)
lcPath = Justpath(Application.ServerName)
*!* *** Interactive
*!* CASE (Application.StartMode) = 0
*!* lcPath = SYS(5) + CURDIR()
*** Active Document
Case Atc(".APP",Sys(16,0)) > 0
lcPath = Justpath(Sys(16,0))
*** Standalone EXE or VFP Development
Otherwise
lcPath = Justpath(Sys(16,0))
If Atc("PROCEDURE",lcPath) > 0
lcPath = Substr(lcPath,Rat(":",lcPath)-1)
Endif
Endcase
Return Addbs(lcPath)
Endfunc
Procedure lista2array
Lparameters tcLISTA,taArray,tcSeparator
&& tcLista este un sir de caractere care contine elementele separate prin <;> default
&& tarray este vectorul care se completeaza - trebuie dat prin referinta
&& tcSeparator separatorul de elemente din tcLista - default este ";" - este optional
&& intoarce numarul de elemente gasite
&& ex: lnNr = lista2array("ana;are;mere",@alista,";")
External Array taArray
Local Lclista,lcSeparator,lnNRF,lcF1,i
lnNRF = 0
Lclista=Allt(tcLISTA)
If Parameters()<3 Or Empty(tcSeparator)
lcSeparator=";"
Else
lcSeparator=Alltrim(tcSeparator)
Endif
If Right(Lclista,1)!=lcSeparator
Lclista=Lclista+lcSeparator
Endif
lnNRF=Occurs(lcSeparator,Lclista)
If lnNRF>0
Dimension taArray[lnNrf,1]
For i=1 To lnNRF
lcF1=Left(Lclista,At(lcSeparator,Lclista)-1)
If i!=lnNRF
Lclista=Substr(Lclista,At(lcSeparator,Lclista)+1)
Endif
taArray[i]=lcF1
Endfor
Else
lnNRF = 0
Endif
Return lnNRF
Endproc && lista2array
Procedure decripteazaParola
Endproc
Enddefine

View File

@@ -0,0 +1,363 @@
**************************************
* Intoarce .T. daca luna are situatii contabile invalidate
**************************************
PROCEDURE VerificaInvalidat
LPARAMETERS tnAn, tnLuna
LOCAL llInvalidat, lnRec, llInvalidat, lcSql
PRIVATE pnRec
llInvalidat = .F.
lcSql = [select count(*) as nr from tabele_validare where dinvalidat is not null]
IF !(EMPTY(m.tnAn) OR EMPTY(m.tnLuna))
lcSql = lcSql + [ and an = ] + ALLTRIM(STR(m.tnAn)) + [ and luna = ] + ALLTRIM(STR(m.tnLuna))
ENDIF
pnRec = 0
llSucces = goExecutor.oSelecteaza2Value(m.lcSql, @pnRec)
IF m.llSucces
llInvalidat = (m.pnRec > 0)
ENDIF
RETURN m.llInvalidat
ENDPROC
*!* Arata situatii contabile invalidate in luna curenta
Procedure SituatiiInvalidate
Private poSituatii
Local loSituatiiInvalide As 'frm_situatii_invalidate'
Local lcFiltru, lcFiltruOriginal, lcGroup, lcOrder, lcSelect, llAfiseaza, llModParam
poSituatii = null
Text To lcSelect Noshow
select tabel,
situatie,
an,
luna,
cont,
id_gestiune,
cgest,
nume_gestiune,
dultima_operatie,
dultima_refacere,
dinvalidat,
id_util_invalidare,
util_invalidare,
explicatie,
tip_validare,
ctip_validare,
blocat,
id_util_validare,
util_validare,
dataora_validare
from vtabele_validare
Endtext
lcSchema = []
lcOrder = [tabel, cont, cgest, an, luna]
lcGroup = []
lcFiltru = [1=2]
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poSituatii', 'cSituatiiInvalidate', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poSituatii.ca_baza1.afisare()
If Used('cSituatiiInvalidate')
loSituatiiInvalide = Createobject('frm_situatii_invalidate')
loSituatiiInvalide.Show(1)
Endif
Endproc && SituatiiInvalide
Procedure verificareGlobala
Parameters tlArat, tlFaraPeriada
Private plArat, pcondper, plPerioada, plFaraPeriada
Local lnPoz
Store .F. To plPerioada
If Empty(tlArat)
Store .F. To plArat
Else
plArat = tlArat
Endif
If Empty(tlFaraPeriada)
Store .F. To plFaraPeriada
Else
plFaraPeriada = tlFaraPeriada
Endif
pcondper = ""
If !plFaraPeriada
ofrmperioada = Createobject('frm_perioada_luni')
ofrmperioada.Show(1)
If gnButon = 2
Return
Endif
lnPoz = At('_', pcondper)
If lnPoz > 0
plPerioada = .T.
Endif
Endif
Private pcmesaj_refacere
Store "" To pcmesaj_refacere
If Used('crsverificari')
Use In crsverificari
Endif
Create Cursor crsverificari (sursa c(20), Cont c(20), tip c(1), mesaj c(200), selectat N(1), explicatia c(50), luna N(2), an N(4))
If !plArat
If plPerioada
lnInit = Val(Substr(pcondper, 1, 2)) + Val(Substr(pcondper, 3, 4)) * 12
lnFinal = Val(Substr(pcondper, 8, 2)) + Val(Substr(pcondper, 10, 4)) * 12
For k = lnInit To lnFinal
lnLuna = Mod(k, 12)
lnAn = Int(k / 12)
If lnLuna = 0
lnLuna = 12
lnAn = lnAn - 1
Endif
Do VerificareLunaDeschisa With lnLuna, lnAn, .F.
Endfor
Select crsverificari
Set Filter To !Empty(mesaj)
Go Top
obj = Createobject('frm_verificare_globala_per')
obj.lb_titlu_alb_b121.Caption = "VERIFICARE GLOBALA PENTRU PERIOADA " + Substr(pcondper, 1, 2) + "/" + Substr(pcondper, 3, 4) + " - " + Substr(pcondper, 8, 2) + "/" + Substr(pcondper, 10, 4)
obj.ninit = lnInit
obj.nfinal = lnFinal
obj.Show(1)
Else
Do VerificareLunaDeschisa
If Empty(pcmesaj_refacere)
obj = Createobject('frm_verificare_globala')
obj.Show(1)
Endif
Endif
Else
Do VerificareLunaDeschisa
Select crsverificari
Replace All selectat With 1
If Used('crsrefaceri')
Use In crsrefaceri
Endif
Select sursa, Cont, tip From crsverificari Where selectat = 1 Into Cursor crsrefaceri
If Reccount('crsrefaceri') > 0
Local lcsursa, lccont, lctip
Select crsrefaceri
Scan
lcsursa = Upper(Alltrim(sursa))
lccont = Alltrim(Cont)
* lctip=tip
lctip = '1'
Do refacere With lcsursa, lctip, lccont In orefaceri.prg
Select crsrefaceri
Endscan
If Used('crsverificari')
Use In crsverificari
Endif
Create Cursor crsverificari (sursa c(20), Cont c(20), tip c(1), mesaj c(200), selectat N(1), explicatia c(50), luna N(2), an N(4))
Do VerificareLunaDeschisa
Select crsverificari
Go Top
*!* MESSAGEBOX("Refacerea s-a incheiat!",0+64,"Info refacere")
Endif
Use In crsrefaceri
Endif
Use In crsverificari
Endproc
**********************************************************************************************************************************
**********************************************************************************************************************************
Procedure VerificareLunaDeschisa
Lparameters tnLuna, tnAn, tlRefaceri, tlFaraTest, tlExtraCont
&& tlRefaceri = .T. cu refaceri ; .F. fara refaceri
&& tlTest = .T. face inainte_de
&& llExtraCont = .T. : + STOC, STOC_OBINV
Private pcmesaj, pctip
Local lnselectat, lcsursa, lccont, lnNrInreg, loTherm, lcTask, lnPercent, lcexplicatia, lnInregAct, lnLuna, lnAn, llRefaceri
Store "" To pcmesaj, pctip, lcsursa, lccont, loTherm, lcTask, lcexplicatia
Store 0 To lnselectat, lnNrInreg, lnPercent, lnInregAct
lnNrInreg = 6
If !Used('crsverificari')
Create Cursor crsverificari (sursa c(20), Cont c(20), tip c(1), mesaj c(200), selectat N(1), explicatia c(50), luna N(2), an N(4))
Endif
If Empty(tnLuna)
lnLuna = gnLuna
Else
lnLuna = tnLuna
Endif
If Empty(tnAn)
lnAn = gnAn
Else
lnAn = tnAn
Endif
If Pcount() = 3
llRefaceri = tlRefaceri
Else
llRefaceri = .T.
Endif
llCuTest = !tlFaraTest
lcsursa = "BALANTA"
If llCuTest
Do inainte With lcsursa, '', "pcmesaj", "pctip", '', '', lnLuna, lnAn In oinainte_de.prg
Else
pcmesaj = ""
Endif
If !Empty(pcmesaj) And llRefaceri
pcmesaj_refacere = pcmesaj + Chr(10) + Chr(13) + Chr(10) + Chr(13) + "Doriti sa refaceti balanta?"
If Empty(plArat) Or !plArat
If aMessagebox(pcmesaj_refacere, 4 + 32, "Diferente la balanta") == 6
aMessagebox("Se apeleaza refacerea", 64, "Info refacere")
lccont = ""
Do refacere With lcsursa, pctip, lccont, lnLuna, lnAn In orefaceri.prg
pcmesaj_refacere = ""
Do inainte With lcsursa, '', "pcmesaj", "pctip", '', '', lnLuna, lnAn In oinainte_de.prg
Else
*Return
pcmesaj_refacere = ""
Endif
Else
Do refacere With lcsursa, pctip, lnLuna, lnAn In orefaceri.prg
pcmesaj_refacere = ""
Do inainte With lcsursa, '', "pcmesaj", "pctip", '', '', lnLuna, lnAn In oinainte_de.prg
Endif
Endif
lnselectat = Iif(Empty(pcmesaj), 0, 1)
Insert Into crsverificari (sursa, tip, mesaj, selectat, explicatia, luna, an) Values (lcsursa, pctip, pcmesaj, lnselectat, 'Balanta', lnLuna, lnAn)
lcSql = [select distinct 1 as nrcrt,cont from ] + Alltrim(gcS) + [.config_cont_ireg ]
lcSql = lcSql + [ union ]
lcSql = lcSql + [select distinct 2 as nrcrt,cont from ] + Alltrim(gcS) + [.config_Cont_ireg ] + ;
[where cu_Inregistrari = 1]
lcSql = lcSql + [ order by cont]
lcCursor = [crsConturi]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
aMessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
Endif
If Used('crsconturi')
lnNrInreg = lnNrInreg + Reccount('crsconturi')
Endif
loTherm = Newobject("_thermometer", "_therm", "", "Verificare globala " + Alltrim(Str(lnLuna)) + "/" + Alltrim(Str(lnAn)) + "...")
With loTherm
.Show()
lnPercent = 0
*!* modificare 2007
If gnAn < 2007
lcexplicatia = "Registrul de vanzari"
.Update(lnPercent, 'Verificare ' + lcexplicatia)
lcCoresp = ['4111']
lcExceptii = ['667,622']
lcsursa = "VANZ"
If llCuTest
Do inainte With lcsursa, , "pcmesaj", "pctip", lcExceptii, lcCoresp, lnLuna, lnAn In oinainte_de.prg
Endif
lnselectat = Iif(Empty(pcmesaj), 0, 1)
Insert Into crsverificari (sursa, Cont, tip, mesaj, selectat, explicatia, luna, an) Values ('TVA', '4427', pctip, pcmesaj, lnselectat, lcexplicatia, lnLuna, lnAn)
lnPercent = (1 * 100) / lnNrInreg
lcexplicatia = 'Registrul de cumparari'
.Update(lnPercent, 'Verificare ' + lcexplicatia)
lcsursa = "CUMP"
If llCuTest
Do inainte With lcsursa, '', "pcmesaj", "pctip", '', '', lnLuna, lnAn In oinainte_de.prg
Endif
lnselectat = Iif(Empty(pcmesaj), 0, 1)
Insert Into crsverificari (sursa, Cont, tip, mesaj, selectat, explicatia, luna, an) Values ('TVA', '4426', pctip, pcmesaj, lnselectat, lcexplicatia, lnLuna, lnAn)
Else
lcexplicatia = "Registrul de vanzari"
.Update(lnPercent, 'Verificare ' + lcexplicatia)
lcCoresp = []
lcExceptii = []
lcsursa = "TVA_2007"
pcmesaj = ""
If llCuTest
Do inainte With "VANZ2007", , "pcmesaj", "pctip", lcExceptii, lcCoresp, lnLuna, lnAn In oinainte_de.prg
Endif
lnselectat = Iif(Empty(pcmesaj), 0, 1)
Insert Into crsverificari (sursa, Cont, tip, mesaj, selectat, explicatia, luna, an) Values (lcsursa, 'JV', pctip, pcmesaj, lnselectat, lcexplicatia, lnLuna, lnAn)
lnPercent = (1 * 100) / lnNrInreg
lcexplicatia = 'Registrul de cumparari'
pcmesaj = ""
.Update(lnPercent, 'Verificare ' + lcexplicatia)
lcsursa = "TVA_2007"
If llCuTest
Do inainte With "CUMP2007", '', "pcmesaj", "pctip", '', '', lnLuna, lnAn In oinainte_de.prg
Endif
lnselectat = Iif(Empty(pcmesaj), 0, 1)
Insert Into crsverificari (sursa, Cont, tip, mesaj, selectat, explicatia, luna, an) Values (lcsursa, 'JC', pctip, pcmesaj, lnselectat, lcexplicatia, lnLuna, lnAn)
Endif
If Used('crsconturi') And Reccount('crsconturi') > 0
lnInreg = 6
Select crsconturi
Scan
lnnrcrt = nrcrt
lccont = Cont
Do Case
Case lnnrcrt = 1
lnPercent = (lnInreg * 100) / lnNrInreg
lcexplicatia = 'Balanta analitica - cont ' + lccont
.Update(lnPercent, 'Verificare ' + lcexplicatia)
lcsursa = "BALANTA_PARTENERI"
pcmesaj = ""
If llCuTest
Do inainte With lcsursa, lccont, "pcmesaj", "pctip", '', '', lnLuna, lnAn In oinainte_de.prg
Endif
lnselectat = Iif(Empty(pcmesaj), 0, 1)
Insert Into crsverificari (sursa, Cont, tip, mesaj, selectat, explicatia, luna, an) Values (lcsursa, lccont, pctip, pcmesaj, lnselectat, lcexplicatia, lnLuna, lnAn)
lnInreg = lnInreg + 1
Case lnnrcrt = 2
lnPercent = (lnInreg * 100) / lnNrInreg
lcexplicatia = 'Inregistrari - cont ' + lccont
.Update(lnPercent, 'Verificare ' + lcexplicatia)
lcsursa = "IREG_PARTENERI"
pcmesaj = ""
If llCuTest
Do inainte With lcsursa, lccont, "pcmesaj", "pctip", '', '', lnLuna, lnAn In oinainte_de.prg
Endif
lnselectat = Iif(Empty(pcmesaj), 0, 1)
Insert Into crsverificari (sursa, Cont, tip, mesaj, selectat, explicatia, luna, an) Values (lcsursa, lccont, pctip, pcmesaj, lnselectat, lcexplicatia, lnLuna, lnAn)
lnInreg = lnInreg + 1
Endcase
Endscan
If tlExtraCont
Insert Into crsverificari (sursa, Cont, tip, mesaj, selectat, explicatia, luna, an) Values ('STOC', '', '', '', 0, 'Stocuri', lnLuna, lnAn)
Insert Into crsverificari (sursa, Cont, tip, mesaj, selectat, explicatia, luna, an) Values ('STOC_OBINV', '', '', '', 0, 'Stocuri obiecte de inventar', lnLuna, lnAn)
Endif
Endif
.Complete()
Endwith
Release loTherm
Endproc

1164
COMUN/programe/pmenu.prg Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More