304 lines
12 KiB
Plaintext
304 lines
12 KiB
Plaintext
|
|
*!* 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
|