Import eFactura in lot: borderou cu ce lipseste, coada de contabilizare, alegerea contului
Borderoul tine per factura ce mai are de completat si daca are articole de gestiune (camp gest, coloana si filtru), coada contabilizeaza in serie facturile bifate si incheie cu un rezumat, iar contul de furnizor/client se alege din planul de conturi. Cheia normalizata de articol, rezolvarea automata a partenerului si anularea in bloc intra tot aici. Pozitia in lista se pastreaza peste reaplicarea filtrului. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Aroafxp4z8bmM5oVECZRXY
This commit is contained in:
109
utile/Teste/test_oselecteaza2object.prg
Normal file
109
utile/Teste/test_oselecteaza2object.prg
Normal file
@@ -0,0 +1,109 @@
|
||||
* test_oselecteaza2object.prg
|
||||
* Stabileste experimental comportamentul goExecutor.oSelecteaza2Object
|
||||
* (oproceduri_comune.prg:597) pe 0/1/2+ randuri, pentru cascada din
|
||||
* docs\plan_efactura_23_24.md (banda A).
|
||||
*
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\test_oselecteaza2object.prg"
|
||||
* Verdict in D:\ROA\ROACONT\COMUN\utile\Teste\test_oselecteaza2object_log.txt
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET DELETED ON
|
||||
SET EXACT ON
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog
|
||||
gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\test_oselecteaza2object_log.txt"
|
||||
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
||||
|
||||
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
||||
ON SHUTDOWN QUIT
|
||||
|
||||
TRY
|
||||
DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
||||
IF gnHandle <= 0
|
||||
DO PrLogLocal WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
|
||||
QUIT
|
||||
ENDIF
|
||||
DO PrLogLocal WITH 'mediu initializat, gnHandle=' + TRANSFORM(gnHandle)
|
||||
|
||||
*-- test izolat, fara Oracle: comportamentul SCATTER NAME ... MEMO pe cursor cu 0 randuri
|
||||
DO PrLogLocal WITH '=== SCATTER NAME direct pe cursor VFP cu 0 randuri (fara Oracle) ==='
|
||||
LOCAL loScatterGol
|
||||
CREATE CURSOR crsScatterGol (id N(10), denumire C(20))
|
||||
SELECT crsScatterGol
|
||||
DO PrLogLocal WITH ' RECCOUNT=' + TRANSFORM(RECCOUNT('crsScatterGol')) + ' EOF=' + TRANSFORM(EOF()) + ' BOF=' + TRANSFORM(BOF())
|
||||
SCATTER NAME loScatterGol MEMO
|
||||
DO PrLogLocal WITH ' dupa SCATTER: TYPE(loScatterGol)=' + TYPE('loScatterGol')
|
||||
IF TYPE('loScatterGol') = 'O'
|
||||
DO PrLogLocal WITH ' loScatterGol.id=[' + TRANSFORM(loScatterGol.id) + '] TYPE=' + TYPE('loScatterGol.id') + ' ISNULL=' + TRANSFORM(ISNULL(loScatterGol.id))
|
||||
DO PrLogLocal WITH ' loScatterGol.denumire=[' + TRANSFORM(loScatterGol.denumire) + '] TYPE=' + TYPE('loScatterGol.denumire') + ' ISNULL=' + TRANSFORM(ISNULL(loScatterGol.denumire))
|
||||
ENDIF
|
||||
USE IN (SELECT('crsScatterGol'))
|
||||
|
||||
*-- cele trei cazuri reale, prin goExecutor.oSelecteaza2Object, pe Oracle (dual)
|
||||
DO PrCaz WITH 'CAZ 1: 0 randuri', "select 1 id, 'X' denumire from dual where 1=0"
|
||||
DO PrCaz WITH 'CAZ 2: 1 rand', "select 1 id, 'X' denumire from dual"
|
||||
DO PrCaz WITH 'CAZ 3: 2 randuri', "select 1 id, 'X' denumire from dual union all select 2 id, 'Y' denumire from dual"
|
||||
|
||||
DO PrLogLocal WITH 'TOTAL: test terminat fara exceptie'
|
||||
CATCH TO loEx
|
||||
DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ')'
|
||||
ENDTRY
|
||||
|
||||
QUIT
|
||||
|
||||
**********************************************************
|
||||
PROCEDURE PrCaz
|
||||
LPARAMETERS tcEticheta, tcSql
|
||||
|
||||
LOCAL loObj, llSucces, lcValId, lcValDen
|
||||
|
||||
DO PrLogLocal WITH '=== ' + tcEticheta + ' ==='
|
||||
DO PrLogLocal WITH ' sql: ' + tcSql
|
||||
|
||||
llSucces = goExecutor.oSelecteaza2Object(tcSql, @loObj)
|
||||
|
||||
DO PrLogLocal WITH ' llSucces (retur functie) = ' + TRANSFORM(llSucces)
|
||||
DO PrLogLocal WITH ' TYPE(loObj) = ' + TYPE('loObj')
|
||||
DO PrLogLocal WITH ' goExecutor.nSucces = ' + TRANSFORM(goExecutor.nSucces)
|
||||
DO PrLogLocal WITH ' goExecutor.cEroare = [' + TRANSFORM(goExecutor.cEroare) + ']'
|
||||
|
||||
IF TYPE('loObj') = 'O'
|
||||
DO PrLogLocal WITH ' PEMSTATUS(loObj,"id",5) = ' + TRANSFORM(PEMSTATUS(loObj, 'id', 5))
|
||||
DO PrLogLocal WITH ' TYPE(loObj.id) = ' + TYPE('loObj.id')
|
||||
IF TYPE('loObj.id') = 'N' OR TYPE('loObj.id') = 'C'
|
||||
lcValId = IIF(ISNULL(loObj.id), '<NULL>', TRANSFORM(loObj.id))
|
||||
ELSE
|
||||
lcValId = '<neevaluabil, TYPE=' + TYPE('loObj.id') + '>'
|
||||
ENDIF
|
||||
DO PrLogLocal WITH ' ISNULL(loObj.id) = ' + TRANSFORM(ISNULL(loObj.id)) + ' valoare = [' + lcValId + ']'
|
||||
|
||||
DO PrLogLocal WITH ' PEMSTATUS(loObj,"denumire",5) = ' + TRANSFORM(PEMSTATUS(loObj, 'denumire', 5))
|
||||
DO PrLogLocal WITH ' TYPE(loObj.denumire) = ' + TYPE('loObj.denumire')
|
||||
IF TYPE('loObj.denumire') = 'C'
|
||||
lcValDen = IIF(ISNULL(loObj.denumire), '<NULL>', '[' + TRANSFORM(loObj.denumire) + ']')
|
||||
ELSE
|
||||
lcValDen = '<neevaluabil, TYPE=' + TYPE('loObj.denumire') + '>'
|
||||
ENDIF
|
||||
DO PrLogLocal WITH ' ISNULL(loObj.denumire) = ' + TRANSFORM(ISNULL(loObj.denumire)) + ' valoare = ' + lcValDen
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
**********************************************************
|
||||
PROCEDURE PrLogLocal
|
||||
LPARAMETERS tcMsg
|
||||
LOCAL lcL
|
||||
SET SAFETY OFF
|
||||
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
|
||||
STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcUILog)
|
||||
ENDPROC
|
||||
|
||||
**********************************************************
|
||||
PROCEDURE PrErrLocal
|
||||
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
||||
DO PrLogLocal WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
||||
ENDPROC
|
||||
Reference in New Issue
Block a user