Import parteneri: cautare pe codul salvat si preluarea partenerului cel mai vechi
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
This commit is contained in:
87
Teste/test_parteneri_roa.prg
Normal file
87
Teste/test_parteneri_roa.prg
Normal file
@@ -0,0 +1,87 @@
|
||||
* 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
|
||||
@@ -1,3 +1,13 @@
|
||||
<!--
|
||||
18/08/2026
|
||||
FLORA2ROA - 2.0.7
|
||||
|
||||
:eroare:
|
||||
Importul nu se mai opreste cand partenerul exista deja in ROA cu acelasi cod fiscal sau CNP:
|
||||
este folosit partenerul cel mai vechi cu acel cod.
|
||||
Partenerii al caror CNP a fost scris in campul de serie CI sunt acum regasiti corect, fara sa mai fie adaugati inca o data.
|
||||
-->
|
||||
|
||||
<!--
|
||||
02/08/2026
|
||||
FLORA2ROA - 2.0.6
|
||||
|
||||
@@ -39,6 +39,9 @@ Specific FLORA2ROA:
|
||||
- `test_conectare_roa.prg` - verifica drumul CU conectare la Oracle: fie se conecteaza si
|
||||
executa o interogare de proba, fie raporteaza esecul si iese controlat. NU e in suita
|
||||
implicita (depinde de reteaua/serverul Oracle).
|
||||
- `test_parteneri_roa.prg` - cautarea partenerului la import, pe datele reale din ROA:
|
||||
cautarea se face pe codul cu care partenerul se salveaza, iar cand mai multi parteneri au
|
||||
acelasi cod fiscal se ia cel mai vechi. Doar SELECT-uri, NU e in suita implicita (cere Oracle).
|
||||
|
||||
## Comenzi uzuale
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
2.0.6
|
||||
2.0.7
|
||||
191
frm_import.sc2
191
frm_import.sc2
@@ -47,6 +47,8 @@ DEFINE CLASS form1 AS form
|
||||
*m: disconnectmentor
|
||||
*m: disconnectroa
|
||||
*m: exportdate
|
||||
*m: getidpartener
|
||||
*m: getidpartenerroa
|
||||
*m: scrienote
|
||||
*m: sql_temp_insert
|
||||
*m: sterge_import
|
||||
@@ -73,6 +75,8 @@ DEFINE CLASS form1 AS form
|
||||
<memberdata name="nhandlementor" display="nHandleMentor"/>
|
||||
<memberdata name="disconnectmentor" display="DisconnectMentor"/>
|
||||
<memberdata name="completeazaparteneriroa" display="CompleteazaParteneriROA"/>
|
||||
<memberdata name="getidpartener" display="GetIdPartener"/>
|
||||
<memberdata name="getidpartenerroa" display="GetIdPartenerROA"/>
|
||||
</VFPData>
|
||||
*</PropValue>
|
||||
|
||||
@@ -278,7 +282,7 @@ DEFINE CLASS form1 AS form
|
||||
Local lcItem1, lcItem2, lcItem3, lcItem4, lcJudet, lcJudetBucuresti, lcLocalitate, lcNumar
|
||||
Local lcPrincipala, lcScara, lcSqlJudete, lcSqlLocalitati, lcSqlPart, lcStrada, lcTelefon1
|
||||
Local lcTelefon2, lcWeb, lnIdJudet, lnIdJudetBucuresti, lnIdLocalitateBucuresti, lnIdTaraRO, lnPos
|
||||
Local lnRecc
|
||||
Local lnRecc, lcCodBrut
|
||||
*:Global pcDenumire, pnIdAdresa, pnNrAdrese
|
||||
|
||||
*:Global pcCodFiscal, pnIdPart
|
||||
@@ -353,12 +357,8 @@ DEFINE CLASS form1 AS form
|
||||
lnRecc = RECCOUNT()
|
||||
Scan
|
||||
pnIdPart = 0
|
||||
pcCodFiscal = PADR(STRTRAN(cod_fiscal, ' ', ''),30, ' ')
|
||||
pcDenumire = PADR(Alltrim(Upper(denumire)), 100, ' ')
|
||||
lcAdresa = Strtran(Alltrim(Upper(Nvl(adresa, ''))), Chr(13), ' ')
|
||||
IF LEN(ALLTRIM(m.pcCodFiscal)) <= 3
|
||||
pcCodFiscal = PADL(ALLTRIM(cod), 10, '0')
|
||||
ENDIF
|
||||
|
||||
lcCod = cod
|
||||
IF MOD(RECNO(), 250) = 0
|
||||
@@ -375,61 +375,62 @@ DEFINE CLASS form1 AS form
|
||||
|
||||
|
||||
|
||||
SELECT cParteneri
|
||||
DO CASE
|
||||
CASE !Empty(m.pcCodFiscal)
|
||||
IF SEEK(m.pcCodFiscal, 'cParteneri', 'cod_fiscal')
|
||||
pnIdPart = cParteneri.id_part
|
||||
ENDIF
|
||||
OTHERWISE
|
||||
IF SEEK(m.pcDenumire, 'cParteneri', 'denumire')
|
||||
pnIdPart = cParteneri.id_part
|
||||
ENDIF
|
||||
ENDCASE
|
||||
Select cClientiFurnizori
|
||||
lcDenumire = Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), "")
|
||||
lcNume = Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), "")
|
||||
lcPrenume = ''
|
||||
lcCod_fiscal = Upper(Alltrim(cod_fiscal))
|
||||
lcReg_comert = Nvl(Alltrim(Upper(reg_com)), "")
|
||||
***************************
|
||||
lcCodBrut = Alltrim(Upper(Nvl(m.lcCod_fiscal,"")))
|
||||
lcTip_persoana = "2" && 1 = juridica, 2 = fizica
|
||||
* GetCodFiscalValid decide tipul de persoana din denumire, nr. registrul comertului si
|
||||
* forma codului, apoi curata DOAR CNP-urile invalide ale persoanelor fizice.
|
||||
* Codul unei persoane juridice nu se sterge niciodata: daca e gresit, vrem sa fim
|
||||
* atentionati la validarea declaratiei si sa il corectam in Fidelio, nu sa il ascundem.
|
||||
If !Empty(m.lcCodBrut)
|
||||
lnTip_persoana = 0
|
||||
lcCodTara = Alltrim(Upper(Nvl(cod_tara, "")))
|
||||
lcCod_fiscal = GetCodFiscalValid(m.lcCodBrut, @lnTip_persoana, m.lcDenumire, m.lcReg_comert, m.lcCodTara)
|
||||
lcTip_persoana = Iif(m.lnTip_persoana = 1, "1", "2")
|
||||
|
||||
Do Case
|
||||
Case m.lcTip_persoana = "2" And Empty(m.lcCod_fiscal)
|
||||
* persoana fizica cu CNP invalid: se salveaza fara CNP (permis la D394/D406)
|
||||
Thisform.trace('CNP invalid, partenerul se salveaza fara CNP: [' + m.lcCodBrut + '] ' + Alltrim(m.lcDenumire))
|
||||
Case m.lcTip_persoana = "1" And !VerifCF(m.lcCod_fiscal)
|
||||
* persoana juridica cu cod fiscal care nu trece validarea romaneasca: poate fi
|
||||
* partener strain (cod valid la el in tara) sau o eroare de operare. Codul ramane,
|
||||
* dar il semnalam in log ca sa poata fi verificat.
|
||||
Thisform.trace('ATENTIE: persoana juridica cu cod fiscal nevalidat: [' + m.lcCod_fiscal + '] ' + Alltrim(m.lcDenumire))
|
||||
Endcase
|
||||
ENDIF
|
||||
IF m.lcTip_Persoana = "2"
|
||||
lnPos = At(' ', m.lcNume)
|
||||
IF m.lnPos > 0
|
||||
lcPrenume = Alltrim(Substr(m.lcNume, m.lnPos))
|
||||
lcNume = Alltrim(Left(m.lcNume, m.lnPos))
|
||||
ENDIF
|
||||
ENDIF
|
||||
***************************
|
||||
|
||||
* Cautarea se face pe codul cu care partenerul se salveaza in ROA, nu pe cel din import:
|
||||
* GetCodFiscalValid poate lua CNP-ul din campul de serie CI / pasaport.
|
||||
pcCodFiscal = PADR(STRTRAN(m.lcCod_fiscal, ' ', ''), 30, ' ')
|
||||
IF LEN(ALLTRIM(m.pcCodFiscal)) <= 3
|
||||
pcCodFiscal = PADR(STRTRAN(m.lcCodBrut, ' ', ''), 30, ' ')
|
||||
ENDIF
|
||||
IF LEN(ALLTRIM(m.pcCodFiscal)) <= 3
|
||||
pcCodFiscal = PADL(ALLTRIM(cod), 10, '0')
|
||||
ENDIF
|
||||
|
||||
pnIdPart = Thisform.GetIdPartener(m.pcCodFiscal, m.pcDenumire)
|
||||
If !Empty(Nvl(m.pnIdPart, 0))
|
||||
Replace id_part With m.pnIdPart In cClientiFurnizori
|
||||
*!* lcMesaj = 'Client existent ' + Alltrim(cParteneri.denumire) + ' CUI: ' + Alltrim(cParteneri.cod_fiscal) + ' ID: ' + Alltrim(Transform(cParteneri.id_part))
|
||||
*!* Thisform.trace(m.lcMesaj)
|
||||
Else
|
||||
* Adaugare clienti
|
||||
Select cClientiFurnizori
|
||||
lcDenumire = Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), "")
|
||||
lcNume = Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), "")
|
||||
lcPrenume = ''
|
||||
lcCod_fiscal = Upper(Alltrim(cod_fiscal))
|
||||
lcReg_comert = Nvl(Alltrim(Upper(reg_com)), "")
|
||||
***************************
|
||||
lcCod=Alltrim(Upper(Nvl(m.lcCod_fiscal,"")))
|
||||
lcTip_persoana = "2" && 1 = juridica, 2 = fizica
|
||||
* GetCodFiscalValid decide tipul de persoana din denumire, nr. registrul comertului si
|
||||
* forma codului, apoi curata DOAR CNP-urile invalide ale persoanelor fizice.
|
||||
* Codul unei persoane juridice nu se sterge niciodata: daca e gresit, vrem sa fim
|
||||
* atentionati la validarea declaratiei si sa il corectam in Fidelio, nu sa il ascundem.
|
||||
If !Empty(m.lcCod)
|
||||
lnTip_persoana = 0
|
||||
lcCodTara = Alltrim(Upper(Nvl(cod_tara, "")))
|
||||
lcCod_fiscal = GetCodFiscalValid(m.lcCod, @lnTip_persoana, m.lcDenumire, m.lcReg_comert, m.lcCodTara)
|
||||
lcTip_persoana = Iif(m.lnTip_persoana = 1, "1", "2")
|
||||
|
||||
Do Case
|
||||
Case m.lcTip_persoana = "2" And Empty(m.lcCod_fiscal)
|
||||
* persoana fizica cu CNP invalid: se salveaza fara CNP (permis la D394/D406)
|
||||
Thisform.trace('CNP invalid, partenerul se salveaza fara CNP: [' + m.lcCod + '] ' + Alltrim(m.lcDenumire))
|
||||
Case m.lcTip_persoana = "1" And !VerifCF(m.lcCod_fiscal)
|
||||
* persoana juridica cu cod fiscal care nu trece validarea romaneasca: poate fi
|
||||
* partener strain (cod valid la el in tara) sau o eroare de operare. Codul ramane,
|
||||
* dar il semnalam in log ca sa poata fi verificat.
|
||||
Thisform.trace('ATENTIE: persoana juridica cu cod fiscal nevalidat: [' + m.lcCod_fiscal + '] ' + Alltrim(m.lcDenumire))
|
||||
Endcase
|
||||
ENDIF
|
||||
IF m.lcTip_Persoana = "2"
|
||||
lnPos = At(' ', m.lcNume)
|
||||
IF m.lnPos > 0
|
||||
lcPrenume = Alltrim(Substr(m.lcNume, m.lnPos))
|
||||
lcNume = Alltrim(Left(m.lcNume, m.lnPos))
|
||||
ENDIF
|
||||
ENDIF
|
||||
***************************
|
||||
|
||||
lcId_loc_inreg = 'NULL'
|
||||
lcId_categ_ent = 'NULL'
|
||||
@@ -451,15 +452,25 @@ DEFINE CLASS form1 AS form
|
||||
lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSqlInsert))
|
||||
If !Empty(Nvl(m.pnIdPart, 0))
|
||||
Replace id_part With m.pnIdPart In cClientiFurnizori
|
||||
Thisform.trace('Client nou ' + Alltrim(cClientiFurnizori.denumire) + ' CUI: ' + Alltrim(cClientiFurnizori.cod_fiscal) + ' ID: ' + Alltrim(Transform(cClientiFurnizori.id_part)))
|
||||
INSERT INTO cParteneri (id_part, denumire, cod_fiscal) VALUES (m.pnIdPart, cClientiFurnizori.denumire, cClientiFurnizori.cod_fiscal)
|
||||
Thisform.trace('Client nou ' + Alltrim(m.lcDenumire) + ' CUI: ' + Alltrim(m.lcCod_fiscal) + ' ID: ' + Alltrim(Transform(m.pnIdPart)))
|
||||
INSERT INTO cParteneri (id_part, denumire, cod_fiscal) VALUES (m.pnIdPart, m.pcDenumire, m.pcCodFiscal)
|
||||
Else
|
||||
lcMesaj = 'Eroare la adaugarea in clienti ROA ' + Alltrim(cParteneri.denumire) + ' CUI: ' + Alltrim(cParteneri.cod_fiscal) + Chr(13) + Chr(10) + goExecutor.oPrelucrareEroare()
|
||||
|
||||
Thisform.trace(m.lcMesaj)
|
||||
aMessagebox(m.lcMesaj)
|
||||
SET STEP ON
|
||||
Exit
|
||||
* Codul fiscal exista deja in ROA, uneori pe mai multi parteneri: se preia cel mai vechi si
|
||||
* importul continua. Doar daca nici asa nu se gaseste partenerul, importul se opreste.
|
||||
lcMesaj = goExecutor.oPrelucrareEroare()
|
||||
pnIdPart = Thisform.GetIdPartenerROA(m.lcCod_fiscal)
|
||||
If !Empty(Nvl(m.pnIdPart, 0))
|
||||
Replace id_part With m.pnIdPart In cClientiFurnizori
|
||||
INSERT INTO cParteneri (id_part, denumire, cod_fiscal) VALUES (m.pnIdPart, m.pcDenumire, m.pcCodFiscal)
|
||||
Thisform.trace('Partener existent in ROA ' + Alltrim(m.lcDenumire) + ' CUI: ' + Alltrim(m.lcCod_fiscal) + ;
|
||||
' ID: ' + Alltrim(Transform(m.pnIdPart)) + ' (' + Alltrim(m.lcMesaj) + ')')
|
||||
Else
|
||||
lcMesaj = 'Eroare la adaugarea in clienti ROA ' + Alltrim(m.lcDenumire) + ' CUI: ' + ;
|
||||
Alltrim(m.lcCod_fiscal) + Chr(13) + Chr(10) + m.lcMesaj
|
||||
Thisform.trace(m.lcMesaj)
|
||||
aMessagebox(m.lcMesaj)
|
||||
Exit
|
||||
Endif
|
||||
Endif && !Empty(Nvl(m.pnIdPart,0))
|
||||
Endif && !Empty(Nvl(m.pnIdPart,0))
|
||||
|
||||
@@ -1745,6 +1756,62 @@ DEFINE CLASS form1 AS form
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE getidpartener
|
||||
* Cauta partenerul in cursorul cParteneri, intai dupa cod fiscal, apoi dupa denumire.
|
||||
* Cand mai multi parteneri au acelasi cod fiscal, il intoarce pe cel mai vechi (id_part minim).
|
||||
Lparameters tcCodFiscal, tcDenumire
|
||||
Local lcCheie, lnArie, lnIdPart
|
||||
|
||||
lnIdPart = 0
|
||||
lnArie = Select()
|
||||
If !Empty(m.tcCodFiscal)
|
||||
lcCheie = Padr(Strtran(Upper(Alltrim(m.tcCodFiscal)), ' ', ''), 30, ' ')
|
||||
Select cParteneri
|
||||
Set Order To Tag cod_fiscal
|
||||
If Seek(m.lcCheie, 'cParteneri', 'cod_fiscal')
|
||||
Scan Rest While Padr(Strtran(cod_fiscal, ' ', ''), 30, ' ') == m.lcCheie
|
||||
If m.lnIdPart = 0 Or cParteneri.id_part < m.lnIdPart
|
||||
lnIdPart = cParteneri.id_part
|
||||
Endif
|
||||
Endscan
|
||||
Endif
|
||||
Endif
|
||||
If Empty(m.tcCodFiscal) And !Empty(m.tcDenumire)
|
||||
Select cParteneri
|
||||
Set Order To Tag denumire
|
||||
If Seek(Padr(Alltrim(Upper(m.tcDenumire)), 100, ' '), 'cParteneri', 'denumire')
|
||||
lnIdPart = cParteneri.id_part
|
||||
Endif
|
||||
Endif
|
||||
Select (m.lnArie)
|
||||
|
||||
Return m.lnIdPart
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE getidpartenerroa
|
||||
* Intoarce cel mai vechi partener nesters din ROA cu acest cod fiscal (id_part minim), 0 daca nu exista.
|
||||
Lparameters tcCodFiscal
|
||||
Local lcCod, lcSql, lnArie, lnIdPart, lnSucces
|
||||
|
||||
lnIdPart = 0
|
||||
lcCod = Strtran(Upper(Alltrim(Nvl(m.tcCodFiscal, ''))), ' ', '')
|
||||
If Empty(m.lcCod)
|
||||
Return 0
|
||||
Endif
|
||||
|
||||
lnArie = Select()
|
||||
lcSql = [select min(id_part) as id_part from nom_parteneri where replace(upper(cod_fiscal), ' ', '') = '] + ;
|
||||
m.lcCod + [' and sters = 0]
|
||||
lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSql + '??cCursor=>cPartExistent'))
|
||||
If m.lnSucces >= 0 And Used('cPartExistent')
|
||||
lnIdPart = Nvl(cPartExistent.id_part, 0)
|
||||
Use In (Select('cPartExistent'))
|
||||
Endif
|
||||
Select (m.lnArie)
|
||||
|
||||
Return m.lnIdPart
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Init
|
||||
Local ldData1, ldData2, ldLastDay, lnHeight, lnWidth
|
||||
|
||||
|
||||
Reference in New Issue
Block a user