Importul cauta partenerul dupa codul brut din XML, dar il salva pe cel intors de
GetCodFiscalValid, care la persoana fizica poate lua CNP-ul din campul de serie CI /
pasaport. Cand cele doua difera, partenerul nu era gasit niciodata si pack_def.adauga_partener
respingea inserarea ("Mai exista un partener cu acest CNP"), oprind tot importul.
- cautarea se face acum pe codul cu care partenerul chiar se salveaza, cu revenire pe codul
brut si pe cheia externa a importului;
- GetIdPartener() intoarce partenerul cel mai vechi cand mai multi au acelasi cod fiscal;
- GetIdPartenerROA() preia partenerul existent din ROA dupa refuzul procedurii, ca importul
sa continue; se opreste doar daca nici acolo nu exista;
- lcCod nu mai e suprascris cu codul fiscal, deci in coresp_parteneri se scrie iar cheia
externa, nu codul fiscal.
Verificat pe baza reala cu Teste\test_parteneri_roa.prg (doar SELECT, in afara suitei
implicite); suita implicita ramane PASS.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PTZNiJg2pZk1rky1rpw94u
88 lines
3.7 KiB
Plaintext
88 lines
3.7 KiB
Plaintext
* test_parteneri_roa.prg - cautarea partenerului la import, pe datele reale din ROA.
|
|
*
|
|
* Reguli verificate:
|
|
* - cautarea se face pe codul cu care partenerul se salveaza (GetCodFiscalValid), nu pe cel brut
|
|
* - cand mai multi parteneri au acelasi cod fiscal, se ia cel mai vechi (id_part minim)
|
|
*
|
|
* Testul e READ ONLY (doar SELECT) si NU face parte din suita implicita: cere Oracle.
|
|
* vfp9.exe -A -T "D:\PROIECTE\FLORA\FLORA2ROA\Teste\test_parteneri_roa.prg"
|
|
|
|
#INCLUDE "comun.h"
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
|
|
PUBLIC gcUILog, gcSyncDir, gnTestFail, gnMockRaspuns, gcMockUltimMesaj, gnMockUltimTip
|
|
gnTestFail = 0
|
|
gnMockRaspuns = 6
|
|
gcMockUltimMesaj = ''
|
|
gnMockUltimTip = 0
|
|
|
|
LOCAL lcTestDir, lcSqlPart, lnSucces, lnTip, lcCodSalvat, lnIdVechi, lnIdGasit
|
|
lcTestDir = ADDBS(JUSTPATH(SYS(16, 0)))
|
|
gcUILog = lcTestDir + 'test_parteneri_roa_log.txt'
|
|
gcSyncDir = lcTestDir + 'uisync\'
|
|
IF !DIRECTORY(gcSyncDir)
|
|
MD (gcSyncDir)
|
|
ENDIF
|
|
STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
|
|
|
SQLSETPROP(0, 'DispLogin', 3)
|
|
DO (lcTestDir + 'test_init_env_auto.prg') WITH .T.
|
|
SET PROCEDURE TO (lcTestDir + 'ui_harness.prg') ADDITIVE
|
|
SET PROCEDURE TO (lcTestDir + 'mock_amessagebox.prg') ADDITIVE
|
|
DO HarnessInit
|
|
|
|
IF TYPE('gnHandle') <> 'N' OR gnHandle <= 0
|
|
HarnessLog('Fara conexiune la ROA (' + ALLTRIM(goApp.oSettings.host) + '), testul iese controlat.')
|
|
DO HarnessDone WITH 'SKIP'
|
|
QUIT
|
|
ENDIF
|
|
|
|
DO FORM (gcAppPath + 'frm_import') NAME goImportFrm NOSHOW
|
|
goImportFrm.WindowType = 0
|
|
|
|
* un CNP care in ROA e pe mai multi parteneri: se ia cel mai vechi
|
|
LOCAL lcCnpDublat
|
|
lcCnpDublat = '1951113297313'
|
|
lnSucces = goExecutor.oExecute(GetHash("cSql=>select min(id_part) as id_part, count(*) as nr from nom_parteneri " + ;
|
|
"where replace(upper(cod_fiscal), ' ', '') = '" + m.lcCnpDublat + "' and sters = 0??cCursor=>cAsteptat"))
|
|
TestAssertEqual(CT_SUCCES, m.lnSucces, 'interogare de control executata')
|
|
lnIdVechi = NVL(cAsteptat.id_part, 0)
|
|
HarnessLog('CNP ' + m.lcCnpDublat + ': ' + TRANSFORM(cAsteptat.nr) + ' parteneri, cel mai vechi ' + TRANSFORM(m.lnIdVechi))
|
|
TestAssert(m.lnIdVechi > 0, 'CNP-ul de test exista in ROA')
|
|
|
|
* cursorul de cautare, ca in CompleteazaParteneriROA
|
|
CREATE CURSOR cParteneri (id_part N(10), cod_fiscal C(30) null, denumire C(100) null)
|
|
lcSqlPart = [select id_part, cod_fiscal, denumire from nom_parteneri where sters = 0 and inactiv = 0]
|
|
lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSqlPart + '??cCursor=>cParteneriTemp'))
|
|
TestAssertEqual(CT_SUCCES, m.lnSucces, 'parteneri ROA cititi')
|
|
SELECT cParteneri
|
|
APPEND FROM DBF('cParteneriTemp')
|
|
INDEX on denumire TAG denumire
|
|
INDEX on PADR(STRTRAN(cod_fiscal, ' ', ''),30, ' ') TAG cod_fiscal
|
|
USE IN (SELECT('cParteneriTemp'))
|
|
|
|
* randul din Fidelio cu campurile inversate: CNP in 'serie CI / pasaport'
|
|
lnTip = 0
|
|
lcCodSalvat = GetCodFiscalValid('PX920016', @lnTip, 'STRATON ADRIAN FLORIN', m.lcCnpDublat, '')
|
|
TestAssertEqual(m.lcCnpDublat, m.lcCodSalvat, 'CNP-ul din serie CI este codul care se salveaza')
|
|
|
|
lnIdGasit = goImportFrm.GetIdPartener(PADR('PX920016', 30, ' '), PADR('STRATON ADRIAN FLORIN', 100, ' '))
|
|
TestAssertEqual(0, m.lnIdGasit, 'codul brut din import nu gaseste partenerul')
|
|
|
|
lnIdGasit = goImportFrm.GetIdPartener(PADR(m.lcCodSalvat, 30, ' '), PADR('STRATON ADRIAN FLORIN', 100, ' '))
|
|
TestAssertEqual(m.lnIdVechi, m.lnIdGasit, 'codul salvat gaseste partenerul cel mai vechi')
|
|
|
|
lnIdGasit = goImportFrm.GetIdPartenerROA(m.lcCodSalvat)
|
|
TestAssertEqual(m.lnIdVechi, m.lnIdGasit, 'cautarea in ROA da tot partenerul cel mai vechi')
|
|
|
|
TestAssertEqual(0, goImportFrm.GetIdPartenerROA(''), 'cod fiscal gol: nu se cauta in ROA')
|
|
|
|
goImportFrm.Release()
|
|
goConn.Disconnect()
|
|
|
|
HarnessLog('REZULTAT: ' + TestRezultat())
|
|
DO HarnessDone WITH TestRezultat()
|
|
QUIT
|