Compare commits
3 Commits
8857e8fedf
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| de23611b4d | |||
| 36b116c00d | |||
| 8c4a14deb1 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -103,3 +103,4 @@ _textcache/
|
|||||||
docs/diff_*.patch
|
docs/diff_*.patch
|
||||||
docs/local/
|
docs/local/
|
||||||
.gstack/
|
.gstack/
|
||||||
|
flora2roa.zip
|
||||||
|
|||||||
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
|
02/08/2026
|
||||||
FLORA2ROA - 2.0.6
|
FLORA2ROA - 2.0.6
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ Specific FLORA2ROA:
|
|||||||
- `test_conectare_roa.prg` - verifica drumul CU conectare la Oracle: fie se conecteaza si
|
- `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
|
executa o interogare de proba, fie raporteaza esecul si iese controlat. NU e in suita
|
||||||
implicita (depinde de reteaua/serverul Oracle).
|
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
|
## 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: disconnectmentor
|
||||||
*m: disconnectroa
|
*m: disconnectroa
|
||||||
*m: exportdate
|
*m: exportdate
|
||||||
|
*m: getidpartener
|
||||||
|
*m: getidpartenerroa
|
||||||
*m: scrienote
|
*m: scrienote
|
||||||
*m: sql_temp_insert
|
*m: sql_temp_insert
|
||||||
*m: sterge_import
|
*m: sterge_import
|
||||||
@@ -73,6 +75,8 @@ DEFINE CLASS form1 AS form
|
|||||||
<memberdata name="nhandlementor" display="nHandleMentor"/>
|
<memberdata name="nhandlementor" display="nHandleMentor"/>
|
||||||
<memberdata name="disconnectmentor" display="DisconnectMentor"/>
|
<memberdata name="disconnectmentor" display="DisconnectMentor"/>
|
||||||
<memberdata name="completeazaparteneriroa" display="CompleteazaParteneriROA"/>
|
<memberdata name="completeazaparteneriroa" display="CompleteazaParteneriROA"/>
|
||||||
|
<memberdata name="getidpartener" display="GetIdPartener"/>
|
||||||
|
<memberdata name="getidpartenerroa" display="GetIdPartenerROA"/>
|
||||||
</VFPData>
|
</VFPData>
|
||||||
*</PropValue>
|
*</PropValue>
|
||||||
|
|
||||||
@@ -278,7 +282,7 @@ DEFINE CLASS form1 AS form
|
|||||||
Local lcItem1, lcItem2, lcItem3, lcItem4, lcJudet, lcJudetBucuresti, lcLocalitate, lcNumar
|
Local lcItem1, lcItem2, lcItem3, lcItem4, lcJudet, lcJudetBucuresti, lcLocalitate, lcNumar
|
||||||
Local lcPrincipala, lcScara, lcSqlJudete, lcSqlLocalitati, lcSqlPart, lcStrada, lcTelefon1
|
Local lcPrincipala, lcScara, lcSqlJudete, lcSqlLocalitati, lcSqlPart, lcStrada, lcTelefon1
|
||||||
Local lcTelefon2, lcWeb, lnIdJudet, lnIdJudetBucuresti, lnIdLocalitateBucuresti, lnIdTaraRO, lnPos
|
Local lcTelefon2, lcWeb, lnIdJudet, lnIdJudetBucuresti, lnIdLocalitateBucuresti, lnIdTaraRO, lnPos
|
||||||
Local lnRecc
|
Local lnRecc, lcCodBrut
|
||||||
*:Global pcDenumire, pnIdAdresa, pnNrAdrese
|
*:Global pcDenumire, pnIdAdresa, pnNrAdrese
|
||||||
|
|
||||||
*:Global pcCodFiscal, pnIdPart
|
*:Global pcCodFiscal, pnIdPart
|
||||||
@@ -353,12 +357,8 @@ DEFINE CLASS form1 AS form
|
|||||||
lnRecc = RECCOUNT()
|
lnRecc = RECCOUNT()
|
||||||
Scan
|
Scan
|
||||||
pnIdPart = 0
|
pnIdPart = 0
|
||||||
pcCodFiscal = PADR(STRTRAN(cod_fiscal, ' ', ''),30, ' ')
|
|
||||||
pcDenumire = PADR(Alltrim(Upper(denumire)), 100, ' ')
|
pcDenumire = PADR(Alltrim(Upper(denumire)), 100, ' ')
|
||||||
lcAdresa = Strtran(Alltrim(Upper(Nvl(adresa, ''))), Chr(13), ' ')
|
lcAdresa = Strtran(Alltrim(Upper(Nvl(adresa, ''))), Chr(13), ' ')
|
||||||
IF LEN(ALLTRIM(m.pcCodFiscal)) <= 3
|
|
||||||
pcCodFiscal = PADL(ALLTRIM(cod), 10, '0')
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
lcCod = cod
|
lcCod = cod
|
||||||
IF MOD(RECNO(), 250) = 0
|
IF MOD(RECNO(), 250) = 0
|
||||||
@@ -375,61 +375,62 @@ DEFINE CLASS form1 AS form
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
SELECT cParteneri
|
Select cClientiFurnizori
|
||||||
DO CASE
|
lcDenumire = Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), "")
|
||||||
CASE !Empty(m.pcCodFiscal)
|
lcNume = Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), "")
|
||||||
IF SEEK(m.pcCodFiscal, 'cParteneri', 'cod_fiscal')
|
lcPrenume = ''
|
||||||
pnIdPart = cParteneri.id_part
|
lcCod_fiscal = Upper(Alltrim(cod_fiscal))
|
||||||
ENDIF
|
lcReg_comert = Nvl(Alltrim(Upper(reg_com)), "")
|
||||||
OTHERWISE
|
***************************
|
||||||
IF SEEK(m.pcDenumire, 'cParteneri', 'denumire')
|
lcCodBrut = Alltrim(Upper(Nvl(m.lcCod_fiscal,"")))
|
||||||
pnIdPart = cParteneri.id_part
|
lcTip_persoana = "2" && 1 = juridica, 2 = fizica
|
||||||
ENDIF
|
* GetCodFiscalValid decide tipul de persoana din denumire, nr. registrul comertului si
|
||||||
ENDCASE
|
* 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))
|
If !Empty(Nvl(m.pnIdPart, 0))
|
||||||
Replace id_part With m.pnIdPart In cClientiFurnizori
|
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))
|
*!* lcMesaj = 'Client existent ' + Alltrim(cParteneri.denumire) + ' CUI: ' + Alltrim(cParteneri.cod_fiscal) + ' ID: ' + Alltrim(Transform(cParteneri.id_part))
|
||||||
*!* Thisform.trace(m.lcMesaj)
|
*!* Thisform.trace(m.lcMesaj)
|
||||||
Else
|
Else
|
||||||
* Adaugare clienti
|
* 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_loc_inreg = 'NULL'
|
||||||
lcId_categ_ent = 'NULL'
|
lcId_categ_ent = 'NULL'
|
||||||
@@ -451,15 +452,25 @@ DEFINE CLASS form1 AS form
|
|||||||
lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSqlInsert))
|
lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSqlInsert))
|
||||||
If !Empty(Nvl(m.pnIdPart, 0))
|
If !Empty(Nvl(m.pnIdPart, 0))
|
||||||
Replace id_part With m.pnIdPart In cClientiFurnizori
|
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)))
|
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, cClientiFurnizori.denumire, cClientiFurnizori.cod_fiscal)
|
INSERT INTO cParteneri (id_part, denumire, cod_fiscal) VALUES (m.pnIdPart, m.pcDenumire, m.pcCodFiscal)
|
||||||
Else
|
Else
|
||||||
lcMesaj = 'Eroare la adaugarea in clienti ROA ' + Alltrim(cParteneri.denumire) + ' CUI: ' + Alltrim(cParteneri.cod_fiscal) + Chr(13) + Chr(10) + goExecutor.oPrelucrareEroare()
|
* 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.
|
||||||
Thisform.trace(m.lcMesaj)
|
lcMesaj = goExecutor.oPrelucrareEroare()
|
||||||
aMessagebox(m.lcMesaj)
|
pnIdPart = Thisform.GetIdPartenerROA(m.lcCod_fiscal)
|
||||||
SET STEP ON
|
If !Empty(Nvl(m.pnIdPart, 0))
|
||||||
Exit
|
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))
|
||||||
Endif && !Empty(Nvl(m.pnIdPart,0))
|
Endif && !Empty(Nvl(m.pnIdPart,0))
|
||||||
|
|
||||||
@@ -1745,6 +1756,62 @@ DEFINE CLASS form1 AS form
|
|||||||
|
|
||||||
ENDPROC
|
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
|
PROCEDURE Init
|
||||||
Local ldData1, ldData2, ldLastDay, lnHeight, lnWidth
|
Local ldData1, ldData2, ldLastDay, lnHeight, lnWidth
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user