*!* 16.11.2021 *!* am tratat cazurile suma = "0.00", in loc de "0" *!* 13.12.2021 *!* ExtrasBanca_UNICREDIT_CSV. Am corectat importul sumelor peste 1 milion *!* CreeazaNote. Am corectat importul sumelor in valuta *!* 11.07.2023 *!* CreeazaNote. Am adaugat note depunere/retragere numerar corespondent 5311 = 581 *!* 08.01.2024 *!* csvBT - tratare CSV exportat din BT24. Are sume negative pe Debit si posibil "~~" pe linia cu tranzactia *!* 12.06.2024 *!* csvBT - corectie preluare nume si iban tert *!* 26.08.2024 *!* csvRaiffeisen - corectie conversie suma cu zecimale *!* loImport = CREATEOBJECT("ImportNote", "ExtrasBanca", "RZBR", "MT940", "TXT", "cContBanca=>5121??cContIban=>RO33RONCRT123143213243232") *!* loImport.Import() *!* CreeazaNote - caut partenerul dupa toate variantele de denumire (nume prenume) *!* CreeazaNote - caut un document pereche chiar daca nu am numar de document *!* 06.01.2025 *!* actualizat csvIngbusiness *!* 20.01.2025 *!* actualizat csvStripe *!* 21.01.2025 *!* corectie data tranzactii *!* 06.05.2025 *!* IMPORT xlsx RAIFFEISEN *!* 12.05.2025 *!* IMPORT csv FANCOURIER *!* 22.09.2025 *!* IMPORT GARANTI - corectie eroare cod fiscal, tratare constituire/lichidare/dobanda depozit, *!* 05.01.2026 *!* IMPORT csvbt din extrase de cont csv, nu numai din lista tranzactii csv *!* 09.06.2026 *!* Import csvBT - elimin CRLF din interiorul descrierii care rupe linia de tranzactie pe 2 linii *!* 25.07.2026 *!* marius.mutu *!* CreeazaNote/CompleteazaParteneriROA - la CUI-uri duplicate aleg partenerul cu facturi in perioada curenta, nu ultimul creat ************************************* * Clasa ImportNote este fabrica de clase tip Export ************************************* Define Class ImportNote As Custom oImport = Null cFile = '' && fisierul de import * Perioada de import dData1 = {} dData2 = {} dData = {} && data de import, indiferent de datele din fisier cFileExt = "TXT" cClass = '' && clasa de import: ex: "ExtrasBanca" cClassType = '' && tipul de clasa de import: ex: "RZBR" cFileType = '' && tipul de fisier (optional) ex: MT940 cFileExt = '' && extensia fisierului ex: TXT/XML/CSV/XLS cHashParam = '' cErrorMessage = '' lError = .F. Procedure Init Lparameters tcFile, tdData1, tdData2, tcClass, tcClassType, tcFileType, tcFileExt, tcHashParam, tdData * tcFile = fisierul de importat (optional) * tdData1, tdData2 = perioada de import * tcClass = Clasa de import (ExtrasBanca) * tcClassType = tipul de clasa de import (ex: Identificatorul bancii = RZBR) * tcFileType (optional) = tipul de fisier (MT940, in cazul in care pentru aceeasi extensie ex: "txt" sunt mai multe tipuri de fisier) * tcFileExt = extensia fisierului extras (txt, xml, csv, xls) * tlCreeazaParteneri = se creeaza parteneri in baza de date daca nu exista * tlFactura = se cauta facturi pereche in baza de date * tlComanda = se cauta comenzi in baza de date * tcHashParam = parametri optionali care se transmit la clasa de import sub forma [cselect=>select id, name from test??cwhere=>id=pnId??corder=>name] * Se parseaza cu loHash = GetHash(tcHashParam) oproceduri_comune.prg * tdData = nu mai tin cont de perioada de import, import tot fisierul si pun tdDataExtras. * Se foloseste pentru fisierele de la curieri (un fisier cu transferurile dintr-o zi, chiar daca datele persoanelor individuale sunt diferite) * Tin cont de tdData doar pentru importurile de la curieri This.cFile = Iif(!Empty(m.tcFile), Alltrim(m.tcFile), "") This.dData1 = Iif(!Empty(m.tdData1), m.tdData1, Date(m.gnAn, m.gnLuna, 1)) This.dData2 = Iif(!Empty(m.tdData2), m.tdData2, Gomonth(Date(m.gnAn, m.gnLuna, 1), 1) - 1) This.cClass = Iif(!Empty(m.tcClass), Upper(Alltrim(m.tcClass)), "ExtrasBanca") This.cClassType = Iif(!Empty(m.tcClassType), Upper(Alltrim(m.tcClassType)), "") This.cFileExt = Iif(!Empty(m.tcFileExt), Upper(Alltrim(m.tcFileExt)), "TXT") This.cFileType = Iif(!Empty(m.tcFileType), Upper(Alltrim(m.tcFileType)), "") This.cHashParam = Iif(!Empty(m.tcHashParam), m.tcHashParam, "") This.dData = tdData Endproc && Init Procedure Destroy Use In (Select('C_IMPORT_TEMP')) Use In (Select('cActTemp')) Endproc && Destroy Procedure Import Lparameters tlCreeazaNote Local lcFile, lcFileExt, llSucces, llCreeazaNote Local lcClasa, lcClass, lcClassType, lcFileType, lcHashParam, lnLinii Local ldData1, ldData2, ldData Local llCreeazaParteneri lcClass = This.cClass && ExtrasBanca lcClassType = This.cClassType && RZBR (RAIFFEISEN) lcFileExt = This.cFileExt && TXT/XML/CSV/XLS lcFileType = This.cFileType && MT940 (optional) lcFile = This.cFile && fisierul de import (optional) lcHashParam = This.cHashParam llCreeazaNote = Iif(Pcount() > 0, m.tlCreeazaNote, .T.) ldData1 = This.dData1 ldData2 = This.dData2 ldData = this.dData llSucces = .T. lnLinii = 0 * Aleg fisierul de import If Empty(m.lcFile) lcFileExt = Iif(!Empty(This.cFileExt), Upper(Alltrim(This.cFileExt)), 'TXT') lcFile = Getfile(m.lcFileExt, "Fisier", "Selecteaza", 0, "Alege fisierul din care se realizeaza importul") If !Empty(m.lcFile) This.cFile = m.lcFile Else This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + 'Fisierul este gol!' This.lError = .T. llSucces = .F. Endif Endif * Creez cursoarele pentru import Create Cursor C_IMPORT_TEMP (nr N(14), Data D, suma N(15, 2), suma_val N(15, 2), Curs N (15, 4), nume_val C(20), id_valuta I, explicatie C (100), iban C (24), denumire C (60), cod_fiscal C (13), tip C (2), tip_2 C (3), documente C(250), comenzi C(250)) Select nr, Data, suma, suma_val, Curs, nume_val, id_valuta, explicatie, iban, denumire, cod_fiscal, tip, tip_2, documente, comenzi, ; Space(4) As scd, Space(4) As scc, Space(4) As ascd, Space(4) As ascc, ; Cast(Null As N(10)) As id_partd, Cast(Null As N(10)) As id_partc, Space(100) As partd, Space(100) As partc, ; Cast(Null As N(10)) As id_part, SPACE(100) as partener, ; Cast(0 As I) As id_factd, Cast(0 As I) As id_factc, Cast(0 As I) As pereched, Cast(0 As I) As perechec, ; Cast(Null As I) As id_fdoc, Space(50) As fdoc ; From C_IMPORT_TEMP ; Into Cursor cActTemp Readwrite * Instantiaza clasa de import corespunzatoare bazat pe Class, classType, FileExt, FileType If m.llSucces lcClasa = '' Try lcClasa = m.lcClass + ; Iif(!Empty(m.lcClassType), '_' + m.lcClassType, '') + ; Iif(!Empty(m.lcFileExt), '_' + m.lcFileExt, '') + ; Iif(!Empty(m.lcFileType), '_' + m.lcFileType, '') && ExtrasBanca_RZBR_TXT_MT940, ExtrasBanca_RZBR_TXT, ExtrasBanca_RZBR_XML This.oImport = Createobject(m.lcClasa, m.lcHashParam) Catch Try lcClasa = "ExtrasBanca_General" This.oImport = Createobject(m.lcClasa, m.lcHashParam) Catch To loEx This.lError = .T. llSucces = .F. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + loEx.Message Endtry Endtry If Type('This.oImport') <> 'O' This.lError = .T. llSucces = .F. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + 'Nu este definit importul pentru ' + m.lcClasa Else This.oImport.cFile = m.lcFile This.oImport.dData1 = m.ldData1 This.oImport.dData2 = m.ldData2 This.oImport.dData = m.ldData *!* This.oImport.lCreeazaParteneri = m.llCreeazaParteneri Endif Endif && llSucces If m.llSucces And Type('This.oImport') = 'O' * Parsez fisierul de import si completez C_IMPORT_TEMP llSucces = This.oImport.Parse() If !m.llSucces This.lError = .T. llSucces = .F. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + This.oImport.cErrorMessage Else IF EMPTY(NVL(m.ldData, {})) Delete From C_IMPORT_TEMP Where !Between(Data, m.ldData1, m.ldData2) ELSE * import tot fisierul daca este completata ldData pentru deconturile de la curieri UPDATE C_IMPORT_TEMP SET data = m.ldData ENDIF Endif If !Inlist(This.oImport.cValuta, 'RON', 'LEI', 'ROL') This.oImport.cContBanca = '5124' && banca valuta Endif If m.llSucces And m.llCreeazaNote * Creez note contabile in act_temp, completez parteneri, conturi llSucces = This.oImport.CreeazaNote() Endif Endif && llSucces Return m.llSucces Endproc Enddefine && ImportNote ************************************* * Clasa factory pentru import extras banca * Instantiaza clasa import banca specifica bancii si tipului de fisier ales * Apeleaza ParseStatement din clasa import specifica ************************************* Define Class ExtrasBanca As Custom oExtrasBanca = Null cErrorMessage = '' lError = .F. lCreeazaParteneri = .F. && creeaza parteneri daca nu exista (dupa cod fiscal) lFactura = .F. lComanda = .F. cFile = '' && fisierul de import dData1 = {} && perioada de import dData2 = {} dData = {} && data de import, se importa toate inregistrarile, si se pune dData. Pentru deconturile de la curieri cIBAN = '' && cont bancar IBAN la care se refere extrasul cValuta = 'RON' cBIC = '' && cod BIC banca / nu se mai foloseste ??? nNr = 0 && statement number/ numar extras cContBanca = '5121' && 5121/5124/5125 cAcontBanca = '' && analitic 5121 nIdPartenerBanca = 0 && id_part ROA banca cBanca = '' && denumire banca cTipComisioane = 'COM' && 627 cTipTaxe = 'CHG' && 627 cTipCec = 'CHK' && 403/413 cTipDobanzi = 'INT' && 666/766 cTipTerti = 'TRF' && 401/4111 cTipBuget = 'BUG' && 448 cTipTransfer = 'TRS' && 5121 cTipAlte = 'ALT' && 6588/7588 cTipDepunere = 'DEP' && 5311 cTipEfecteComerciale = 'EFT' && 403/413 cTipComisionDecont = 'CDT' && 473 comisioane retinute de procesatori plati, curieri Dimension aLinii[1] nLinii = 0 Procedure Init Lparameters tcHashParam Local lcContBanca, lcContIBAN, lcHashParam, loHash Local lcAcontBanca, llComanda, llCreeazaParteneri, llFactura Local lcBanca, lnIdPartenerBanca lcHashParam = Iif(!Empty(m.tcHashParam), m.tcHashParam, '') loHash = GetHash(m.lcHashParam) lcContBanca = m.loHash.GetValue('cContBanca') lcAcontBanca = m.loHash.GetValue('cAContBanca') lcContIBAN = loHash.GetValue('cContIban') lnIdPartenerBanca = loHash.GetValue('nIdPartBanca') lcBanca = m.loHash.GetValue('cBanca') llCreeazaParteneri = loHash.GetValue('lCreeazaParteneri') && creeaza parteneri daca nu exista codul fiscal in baza de date llFactura = loHash.GetValue('lFactura') && se cauta facturi pereche in baza de date llComanda = loHash.GetValue('lComanda') && se cauta comenzi in baza de date This.cContBanca = Iif(!Empty(m.lcContBanca), m.lcContBanca, '5121') This.cIBAN = Iif(!Empty(m.lcContIBAN), m.lcContIBAN, '') This.lCreeazaParteneri = m.llCreeazaParteneri This.lFactura = m.llFactura This.lComanda = m.llComanda This.nIdPartenerBanca = m.lnIdPartenerBanca This.cBanca = m.lcBanca Return .T. Endproc && Init ********************** * Se implementeaza in clasa copil ********************** Procedure Parse Endproc && Parse ********************** *** Retrateaza inregistrarile din C_IMPORT_TEMP, le importa in cActTemp si completeaza conturile, partenerii ********************** Procedure CreeazaNote Local lcCodFiscal, lcContBanca, lcContC, lcContD, lcContPartener, lcDenumire, lcDocumente Local lcFdocExtrasCont, lcFdocOp, lcIBAN, lcPartC, lcPartD, lcPartener, lcPartenerBanca, lcTip Local lnDocumente, lnI, lnIdFdocExtrasCont, lnIdFdocOp, lnIdPartC, lnIdPartD, lnIdPartener Local lnIdPartenerBanca, lnNr, lnNrAct, lnSuma, loAct, loCauta, llSucces, lcSelect Local loDate As "Empty" Local lcCont, lcNumeValuta, lcValuta, ldDataIreg, llMonedaNationala, lnCurs, lnIdPartCoresp Local lnIdTipPart, lnIdValuta, lnSpecial, lnTipPersoana, loDate2, loValuta, llDocumentPereche Local lcRecc, lcRecno, lnRecno Local lcComanda, lcDenumire2, lcPartenerCasa, lcTip2, lnVariante, llExcludeOriginal Local lnDenumire, lnDocument, lnIdPartenerCasa, lnVariante, loPartener Local lcGrupIdLista, lcSqlGrup, lnIdPartAlternativ, lcPartAlternativ PRIVATE pcContBanca, pnIdPartBanca lcSelect = Select() llSucces = .T. lcFdocOp = '' lcFdocExtrasCont = '' lnIdFdocOp = 0 lnIdFdocExtrasCont = 0 lcNumeValuta = '' lnIdValuta = 0 lnCurs = 0 llMonedaNationala = .T. If Type('gnID_FDOC_OP') = 'N' And !Empty(m.gnID_FDOC_OP) lnIdFdocOp = m.gnID_FDOC_OP lcFdocOp = GetFdocById(m.gnID_FDOC_OP) Endif If Type('gnID_FDOC_EXTRASCONT') = 'N' And !Empty(m.gnID_FDOC_EXTRASCONT) lnIdFdocExtrasCont = m.gnID_FDOC_EXTRASCONT lcFdocExtrasCont = GetFdocById(m.gnID_FDOC_EXTRASCONT) Endif * llFactura = (GetOptiuneFirma("RC_MT940_DOCUMENTE_PERECHE") = "1") lnNr = This.nNr lcValuta = This.cValuta && RON/EUR/USD/GBP lcContBanca = This.cContBanca && 5121/5124 lcIBAN = This.cIBAN && contul bancar din extras lnIdPartenerBanca = This.nIdPartenerBanca lcPartenerBanca = This.cBanca lnIdPartenerCasa = 0 * Partener Banca lei/valuta Wait Window 'Cautare partener banca...' Nowait If EMPTY(m.lnIdPartenerBanca) AND !Empty(m.lcIBAN) lnIdPartenerBanca = GetIdPartenerByContBanca(m.lcIBAN) Endif If Empty(m.lnIdPartenerBanca) If !Empty(m.lcIBAN) AMESSAGEBOX('Nu exista nici un partener tip Banca ' + m.lcContBanca + ' cu contul bancar ' + m.lcIBAN + Chr(13) + Chr(10) + ; 'Alegeti Banca ' + m.lcContBanca + ' pentru inregistrarea extrasului!', 0 + 64, _Screen.Caption) Endif loCauta = CautPartenerContabilitate(GetHash([cTitlu=>Banca??cCont=>] + m.lcContBanca)) lnIdPartenerBanca = NVL(loCauta.id_part, 0) lcPartenerBanca = Alltrim(m.loCauta.denumire) IF !EMPTY(m.lnIdPartenerBanca) AND AMESSAGEBOX('Doriti sa salvati contul bancar: ' + m.lcIBAN + ' pe acest partener?',4+32,_screen.Caption) = 6 pcContBanca = m.lcIBAN pnIdPartBanca = m.lnIdPartenerBanca llSucces = goExecutor.oExecuta('UPDATE NOM_PARTENERI SET CONT_BANCA = ?pcContBanca WHERE ID_PART = ?pnIdPartBanca') ENDIF Endif If Empty(m.lcPartenerBanca) And !Empty(m.lnIdPartenerBanca) lcPartenerBanca = GetDenumirePartenerById(m.lnIdPartenerBanca) Endif * Valuta If !Empty(m.lcValuta) loValuta = GetValutaByISO(m.lcValuta) lcNumeValuta = Alltrim(loValuta.nume_val) lnIdValuta = loValuta.id_valuta llMonedaNationala = (loValuta.moneda_nationala = 1) Endif * Comasez comisioanele TIP_2 = COM Select Data, Sum(suma) As comision, Count(suma) As nr_comision From C_IMPORT_TEMP Where tip_2 = this.cTipComisioane Group By Data Into Cursor C_COMISION Scan For lnI = 1 To C_COMISION.nr_comision - 1 Select C_IMPORT_TEMP Locate For tip_2 = this.cTipComisioane .And. Data = C_COMISION.Data If Found() Delete Endif Endfor Select C_IMPORT_TEMP Locate For tip_2 = this.cTipComisioane .And. Data = C_COMISION.Data If Found() Replace suma With C_COMISION.comision Endif Endscan USE IN (SELECT('C_COMISION')) * Comasez comisioanele procesatori plati TIP_2 = CDT Select Data, Sum(suma) As comision, Count(suma) As nr_comision From C_IMPORT_TEMP Where tip_2 = this.cTipComisionDecont Group By Data Into Cursor C_COMISION Scan For lnI = 1 To C_COMISION.nr_comision - 1 Select C_IMPORT_TEMP Locate For tip_2 = this.cTipComisionDecont .And. Data = C_COMISION.Data If Found() Delete Endif Endfor Select C_IMPORT_TEMP Locate For tip_2 = this.cTipComisionDecont .And. Data = C_COMISION.Data If Found() Replace suma With C_COMISION.comision Endif Endscan USE IN (SELECT('C_COMISION')) Select cActTemp Append From Dbf('C_IMPORT_TEMP') * Caut/creez parteneri Create Cursor cGrupParteneriCui (id_part_ales N(9), id_part N(9), denumire C(100)) SELECT distinct cod_fiscal, denumire, iban FROM cActTemp INTO CURSOR cParteneriTemp READWRITE SELECT cParteneriTemp lcRecc = Transform(Reccount()) SCAN lcCodFiscal = Upper(Alltrim(cod_fiscal)) lcDenumire = Upper(Alltrim(denumire)) lcIBan = UPPER(ALLTRIM(NVL(iban,''))) lcRecno = Transform(Recno()) lnIdPartener = 0 Wait Window 'Cautare parteneri ' + Transform(Recno()) + '/' + m.lcRecc Nowait IF INKEY(0.5) = 27 IF AMESSAGEBOX('Doriti sa renuntati?',4+32,_screen.Caption) = 6 llSucces = .F. EXIT ENDIF ENDIF * Caut partener dupa cod fiscal If !Empty(m.lcCodFiscal) Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - cautare partener cod fiscal' Nowait loPartener = GetPartenerByCodFiscal(m.lcCodFiscal) If !Isnull(loPartener) lnIdPartener = Nvl(loPartener.id_part, 0) lcPartener = Alltrim(Nvl(loPartener.denumire, "")) If GetParteneriByCuiNormalizat(m.lcCodFiscal, "cGrupCuiTemp") And Reccount("cGrupCuiTemp") > 1 lcGrupIdLista = "" Select cGrupCuiTemp Scan lcGrupIdLista = m.lcGrupIdLista + Iif(Empty(m.lcGrupIdLista), "", ",") + Transform(id_part) Endscan lcSqlGrup = [select id_part, count(*) as nr, sum(precdeb + debit - preccred - credit) as sold from ireg_parteneri ] + ; [where an = ?gnAn and luna = ?gnLuna and id_part in (] + m.lcGrupIdLista + [) group by id_part ] + ; [order by count(*) desc, abs(sum(precdeb + debit - preccred - credit)) desc] If goExecutor.oExecuta(m.lcSqlGrup, "cGrupCuiDoc") And Reccount("cGrupCuiDoc") > 0 Select cGrupCuiTemp Locate For id_part = cGrupCuiDoc.id_part If Found() lnIdPartener = cGrupCuiTemp.id_part lcPartener = Alltrim(Nvl(cGrupCuiTemp.denumire, "")) Endif Endif If Used("cGrupCuiDoc") Use In (Select("cGrupCuiDoc")) Endif Select cGrupCuiTemp Scan Insert Into cGrupParteneriCui (id_part_ales, id_part, denumire) Values (m.lnIdPartener, cGrupCuiTemp.id_part, Alltrim(Nvl(cGrupCuiTemp.denumire, ""))) Endscan Endif If Used("cGrupCuiTemp") Use In (Select("cGrupCuiTemp")) Endif Endif Endif * Caut partener dupa denumire If Empty(m.lnIdPartener) And !Empty(m.lcDenumire) Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - cautare partener denumire' Nowait loPartener = GetPartenerByDenumire(m.lcDenumire) If !Isnull(loPartener) lnIdPartener = Nvl(loPartener.id_part, 0) lcPartener = Alltrim(Nvl(loPartener.denumire, "")) ENDIF IF EMPTY(m.lnIdPartener) * Caut si alte variante de denumiri (nume prenume1 prenume2, prenume1 prenume2 nume) llExcludeOriginal = .T. lcVariante = GetNamePermutations(m.lcDenumire, m.llExcludeOriginal) lnVariante = GETWORDCOUNT(m.lcVariante, ';') FOR lnDenumire = 1 TO m.lnVariante lcDenumire2 = GETWORDNUM(m.lcVariante, m.lnDenumire, ';') loPartener = GetPartenerByDenumire(m.lcDenumire2) If !Isnull(loPartener) AND !EMPTY(Nvl(loPartener.id_part, 0)) lnIdPartener = Nvl(loPartener.id_part, 0) lcPartener = Alltrim(Nvl(loPartener.denumire, "")) EXIT ENDIF ENDFOR ENDIF && EMPTY(m.lnIdPartener) ENDIF * Caut partener dupa IBAN If Empty(m.lnIdPartener) And !Empty(m.lcIBan) Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - cautare partener IBAN' Nowait loPartener = GetPartenerByContBanca(m.lcIBAN) If !Isnull(loPartener) lnIdPartener = Nvl(loPartener.id_part, 0) lcPartener = Alltrim(Nvl(loPartener.denumire, "")) Endif ENDIF * Creez partenerul daca nu l-am gasit dupa cod fiscal sau dupa denumire si doar daca are cod fiscal * Altfel poate sa existe, dar cu denumire diferita If This.lCreeazaParteneri And Empty(m.lnIdPartener) And !Empty(m.lcCodFiscal) Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - adaugare partener' Nowait loDate = Createobject("Empty") AddProperty(loDate, "cod_fiscal", m.lcCodFiscal) AddProperty(loDate, "denumire", m.lcDenumire) AddProperty(loDate, "id_part", m.lnIdPartener) lnIdTipPart = Iif(m.lcTip = "D", 17, 16) && furnizor/client AddProperty(loDate, "tip_partener", m.lnIdTipPart) lnTipPersoana = Iif(Len(m.lcCodFiscal) < 13, 1, 2) && persoana juridica/fizica AddProperty(loDate, "tip_persoana", m.lnTipPersoana) loDate2 = nom_parteneri_nou(, , , , , m.loDate) lnIdPartener = Nvl(loDate2.id_part, 0) lcPartener = Alltrim(Nvl(loDate2.denumire, '')) ENDIF IF !EMPTY(m.lnIdPartener) UPDATE cActTemp SET id_part = m.lnIdPartener, partener = m.lcPartener WHERE UPPER(ALLTRIM(cod_fiscal)) = m.lcCodFiscal AND Upper(Alltrim(denumire)) = m.lcDenumire ENDIF ENDSCAN && cParteneriTemp USE IN (SELECT('cParteneriTemp')) * Completez conturi, parteneri Select cActTemp lcRecc = Transform(Reccount()) Scan lcContD = "" lcContC = "" lnIdPartener = NVL(id_part,0) lnIdPartD = 0 lnIdPartC = 0 lcPartD = "" lcPartC = "" lcPartener = ALLTRIM(partener) lcContPartener = "" lcTip = Alltrim(tip) lcTip2 = Alltrim(tip_2) lcCodFiscal = Upper(Alltrim(cod_fiscal)) lcDenumire = Upper(Alltrim(denumire)) lnRecno = RECNO() lcRecno = Transform(m.lnRecno) Wait Window 'Import inregistrare ' + Transform(Recno()) + '/' + m.lcRecc Nowait IF MOD(m.lnRecno, 100) = 0 IF INKEY(0.5) = 27 IF AMESSAGEBOX('Doriti sa renuntati?',4+32,_screen.Caption) = 6 llSucces = .F. EXIT ENDIF ENDIF ENDIF IF .F. && am facut cautarea partenerilor separat * Caut partener dupa cod fiscal If !Empty(m.lcCodFiscal) Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - cautare partener cod fiscal' Nowait loPartener = GetPartenerByCodFiscal(m.lcCodFiscal) If !Isnull(loPartener) lnIdPartener = Nvl(loPartener.id_part, 0) lcPartener = Alltrim(Nvl(loPartener.denumire, "")) Endif Endif * Caut partener dupa denumire If Empty(m.lnIdPartener) And !Empty(m.lcDenumire) Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - cautare partener denumire' Nowait loPartener = GetPartenerByDenumire(m.lcDenumire) If !Isnull(loPartener) lnIdPartener = Nvl(loPartener.id_part, 0) lcPartener = Alltrim(Nvl(loPartener.denumire, "")) Endif Endif * Creez partenerul daca nu l-am gasit dupa cod fiscal sau dupa denumire If This.lCreeazaParteneri And Empty(m.lnIdPartener) And !(Empty(m.lcCodFiscal) And Empty(m.lcDenumire)) Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - adaugare partener' Nowait loDate = Createobject("Empty") AddProperty(loDate, "cod_fiscal", m.lcCodFiscal) AddProperty(loDate, "denumire", m.lcDenumire) AddProperty(loDate, "id_part", m.lnIdPartener) lnIdTipPart = Iif(m.lcTip = "D", 17, 16) && furnizor/client AddProperty(loDate, "tip_partener", m.lnIdTipPart) lnTipPersoana = Iif(Len(m.lcCodFiscal) < 13, 1, 2) && persoana juridica/fizica AddProperty(loDate, "tip_persoana", m.lnTipPersoana) loDate2 = nom_parteneri_nou(, , , , , m.loDate) lnIdPartener = Nvl(loDate2.id_part, 0) lcPartener = Alltrim(Nvl(loDate2.denumire, '')) ENDIF ENDIF && .F. *!* If !Empty(m.lnIdPartener) *!* WAIT WINDOW 'Import inregistrare ' + TRANSFORM(RECNO()) + '/' + m.lcRecc + ' - cautare denumire partener' NOWAIT *!* lcPartener = GetDenumirePartenerById(m.lnIdPartener) *!* Endif Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - completare conturi' Nowait If m.lcTip = "D" lcContC = m.lcContBanca lnIdPartC = m.lnIdPartenerBanca lcPartC = m.lcPartenerBanca lnIdPartD = m.lnIdPartener lcPartD = m.lcPartener Do Case Case m.lcTip2 = This.cTipComisioane && "COM" && comision lcContD = "627" Case m.lcTip2 = This.cTipTaxe && "CHG" && comisioane, taxe lcContD = "627" Case m.lcTip2 = This.cTipCec && "CHK" && cec-uri, efecte de primit/platit lcContD = "403" Case m.lcTip2 = This.cTipDobanzi && "INT" && venituri/cheltuieli cu dobanzi lcContD = "666" Case m.lcTip2 = This.cTipAlte && "ALT" && alte cheltuieli/venituri exploatare lcContD = "6588" Case m.lcTip2 = This.cTipTerti && "TRF" && terti (clienti/furnizori) lcContD = "401" Case m.lcTip2 = This.cTipBuget && "BUG" && datorii la buget lcContD = "4481" Case m.lcTip2 = This.cTipTransfer && "TRS" transfer intre conturi lcContD = "581" Case m.lcTip2 = This.cTipDepunere && "DEP" depunere/retragere numerar lcContD = "581" Case m.lcTip2 = This.cTipEfecteComerciale && "EFT" efecte comerciale lcContD = "403" Case m.lcTip2 = This.cTipComisionDecont && "CDT" comision procesatori plati lcContD = "473" Otherwise lcContD = "581" Endcase lcContPartener = m.lcContD Else lcContD = m.lcContBanca lnIdPartD = m.lnIdPartenerBanca lcPartD = m.lcPartenerBanca lnIdPartC = m.lnIdPartener lcPartC = m.lcPartener Do Case Case m.lcTip2 = This.cTipDobanzi && "INT" && venituri/cheltuieli cu dobanzi lcContC = "766" Case m.lcTip2 = This.cTipAlte && "ALT" && alte cheltuieli/venituri exploatare lcContC = "7588" Case m.lcTip2 = This.cTipCec && "CHK" && cec-uri, efecte de primit/platit lcContC = "413" Case m.lcTip2 = This.cTipTerti && "TRF" && terti (clienti/furnizori) lcContC = "4111" Case m.lcTip2 = This.cTipBuget && "BUG" && creante de la buget lcContC = "4482" Case m.lcTip2 = This.cTipTransfer && transfer intre conturi lcContC = "581" Case m.lcTip2 = This.cTipDepunere && depunere/retragere numerar lcContC = "581" Case m.lcTip2 = This.cTipEfecteComerciale && "EFE" efecte comerciale lcContC = "413" Otherwise lcContC = "581" Endcase lcContPartener = m.lcContC Endif Select cActTemp Replace scd With m.lcContD, scc With m.lcContC, id_partd With m.lnIdPartD, id_partc With m.lnIdPartC, partd With m.lcPartD, partc With m.lcPartC Replace id_valuta With m.lnIdValuta, nume_val With m.lcNumeValuta If !m.llMonedaNationala IF curs = 0 REPLACE curs WITH 1 ENDIF Replace suma_val With suma Replace suma With ROUND(suma_val * curs, m.gnPC) Endif * TODO? * Intorc cursorul cu facturi al clientului si contului respectiv * Repet pana la epuizarea sumei de plata/incasare sau pana cand nu mai este sold de imperecheat * Caut documentele gasite in cursorul cu facturi si imprechez suma pe facturile din cursor * Daca nu mai am documente, dar suma de plata nu este epuizata, imperechez facturile in ordine cronologica * Adaug facturile imperecheate * Acum asociez doar UN SINGUR DOCUMENT, daca este completat in detaliile operatiei * Incerc sa aflu documentul pereche dupa cont, partener, suma, numar document doar daca am un singur document!!! daca sunt mai multe se complica cazurile If This.lFactura && daca este configurata optiunea sa se caute documentele pereche lcDocumente = Alltrim(NVL(cActTemp.documente,'')) * Fortez cautarea chiar daca nu are documente * Vreau sa gasesc IF EMPTY(m.lcDocumente) lcDocumente = '0' ENDIF lnSuma = cActTemp.suma lnDocumente = Getwordcount(m.lcDocumente, ",") If !Empty(m.lnIdPartener) And m.lnDocumente > 0 FOR lnDocument = 1 TO m.lnDocumente lnNrAct = Int(Val(Getwordnum(m.lcDocumente, m.lnDocument, ","))) Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - cautare factura: ' + Transform(m.lnNrAct) Nowait loAct = GetDocumentByContPartenerAct(m.lcContPartener, m.lnIdPartener, m.lnNrAct, .F.) * daca am gasit un document si suma este mai mica decat soldul facturii (daca erau mai multe documente puteau fi si sume diferite) If !Empty(m.loAct.id_fact) Select cActTemp If m.lcTip = "D" And m.lnSuma <= - m.loAct.solddeb Replace id_factd With m.loAct.id_fact, pereched With m.loAct.nract, scd With m.loAct.Cont, ascd With m.loAct.acont Else If m.lcTip = "C" And m.lnSuma <= m.loAct.solddeb Replace id_factc With m.loAct.id_fact, perechec With m.loAct.nract, scc With m.loAct.Cont, ascc With m.loAct.acont Endif ENDIF * Daca am gasit un document, ies din bucla EXIT Else lnIdPartAlternativ = 0 If Used("cGrupParteneriCui") Select cGrupParteneriCui Scan For id_part_ales = m.lnIdPartener And id_part <> m.lnIdPartener lcPartAlternativ = Alltrim(denumire) loAct = GetDocumentByContPartenerAct(m.lcContPartener, id_part, m.lnNrAct, .F.) If !Empty(m.loAct.id_fact) And ((m.lcTip = "D" And m.lnSuma <= - m.loAct.solddeb) Or (m.lcTip = "C" And m.lnSuma <= m.loAct.solddeb)) lnIdPartAlternativ = id_part Exit Endif Select cGrupParteneriCui Endscan Endif Select cActTemp If !Empty(m.lnIdPartAlternativ) Select cActTemp If m.lcTip = "D" Replace id_factd With m.loAct.id_fact, pereched With m.loAct.nract, scd With m.loAct.Cont, ascd With m.loAct.acont, id_partd With m.lnIdPartAlternativ, partd With m.lcPartAlternativ Else Replace id_factc With m.loAct.id_fact, perechec With m.loAct.nract, scc With m.loAct.Cont, ascc With m.loAct.acont, id_partc With m.lnIdPartAlternativ, partc With m.lcPartAlternativ Endif EXIT Endif ENDIF && !Empty(m.loAct.id_fact) ENDFOR && lnDocument ENDIF && !Empty(m.lnIdPartener) And m.lnDocumente > 0 ENDIF && This.lFactura * Acum asociez doar UN SINGUR DOCUMENT, daca este completat in detaliile operatiei * Incerc sa aflu documentul pereche dupa cont, partener, suma, numar document doar daca am un singur document!!! daca sunt mai multe se complica cazurile If This.lComanda && daca este configurata optiunea sa se caute documentele pereche dupa comanda lcDocumente = Alltrim(cActTemp.comenzi) lnSuma = cActTemp.suma lnDocumente = Getwordcount(m.lcDocumente, ",") If !Empty(m.lnIdPartener) And m.lnDocumente > 0 FOR lnDocument = 1 TO m.lnDocumente lcComanda = Getwordnum(m.lcDocumente, m.lnDocument, ",") Wait Window 'Import inregistrare ' + m.lcRecno + '/' + m.lcRecc + ' - cautare factura pentru comanda: ' + Transform(m.lcComanda) Nowait loAct = GetDocumentByContPartenerAct(m.lcContPartener, m.lnIdPartener, m.lcComanda, .T.) * daca am gasit un document si suma este mai mica decat soldul facturii (daca erau mai multe documente puteau fi si sume diferite) If !Empty(m.loAct.id_fact) Select cActTemp If m.lcTip = "D" And m.lnSuma <= - m.loAct.solddeb Replace id_factd With m.loAct.id_fact, pereched With m.loAct.nract, scd With m.loAct.Cont, ascd With m.loAct.acont Else If m.lcTip = "C" And m.lnSuma <= m.loAct.solddeb Replace id_factc With m.loAct.id_fact, perechec With m.loAct.nract, scc With m.loAct.Cont, ascc With m.loAct.acont Endif ENDIF * Daca am gasit un document, ies din bucla EXIT Else lnIdPartAlternativ = 0 If Used("cGrupParteneriCui") Select cGrupParteneriCui Scan For id_part_ales = m.lnIdPartener And id_part <> m.lnIdPartener lcPartAlternativ = Alltrim(denumire) loAct = GetDocumentByContPartenerAct(m.lcContPartener, id_part, m.lcComanda, .T.) If !Empty(m.loAct.id_fact) And ((m.lcTip = "D" And m.lnSuma <= - m.loAct.solddeb) Or (m.lcTip = "C" And m.lnSuma <= m.loAct.solddeb)) lnIdPartAlternativ = id_part Exit Endif Select cGrupParteneriCui Endscan Endif Select cActTemp If !Empty(m.lnIdPartAlternativ) Select cActTemp If m.lcTip = "D" Replace id_factd With m.loAct.id_fact, pereched With m.loAct.nract, scd With m.loAct.Cont, ascd With m.loAct.acont, id_partd With m.lnIdPartAlternativ, partd With m.lcPartAlternativ Else Replace id_factc With m.loAct.id_fact, perechec With m.loAct.nract, scc With m.loAct.Cont, ascc With m.loAct.acont, id_partc With m.lnIdPartAlternativ, partc With m.lcPartAlternativ Endif EXIT Endif ENDIF && !Empty(m.loAct.id_fact) ENDFOR && lnDocument ENDIF && !Empty(m.lnIdPartener) And m.lnDocumente > 0 ENDIF && This.lComanda ENDSCAN && cActTemp * Completez acum numar document ca sa pot adauga note de retragere/depunere numerar cu acelasi numar document ca si transferul din banca UPDATE cActTemp SET nr = INT(VAL(DTOS(data) + ALLTRIM(STR(RECNO())))) WHERE EMPTY(NVL(nr,0)) * Adaug linii retragere/depunere numerar 5311 = 581 / 581 = 5311 corespunzatoare 581 = 5121 / 5121 = 581 IF m.llSucces SELECT *, -1*RECNO() as nr2 FROM cActTemp WHERE Alltrim(tip_2) = This.cTipDepunere AND (ALLTRIM(scd) = '581' OR ALLTRIM(scc) = '581') INTO CURSOR cNumerarTemp READWRITE IF _tally > 0 loCauta = CautPartenerContabilitate(GetHash([cTitlu=>Alegeti Casa pentru retragere/depunere numerar??cCont=>5311])) lnIdPartenerCasa = NVL(loCauta.id_part, 0) lcPartenerCasa = Alltrim(loCauta.denumire) If Empty(m.lcPartenerCasa) And !Empty(m.lnIdPartenerCasa) lcPartenerCasa = GetDenumirePartenerById(m.lnIdPartenerCasa) ENDIF SELECT cNumerarTemp SCAN IF ALLTRIM(scd) = '581' REPLACE scd WITH '5311', scc WITH '581', id_partc WITH 0, partc WITH '', id_partd WITH m.lnIdPartenerCasa, partd WITH m.lcPartenerCasa ELSE REPLACE scd WITH '581', scc WITH '5311', id_partd WITH 0, partd WITH '', id_partc WITH m.lnIdPartenerCasa, partc WITH m.lcPartenerCasa ENDIF IF EMPTY(NVL(nr, 0)) REPLACE nr WITH nr2 && folosesc nr = recno negativ, sa completez acelasi numar document ca la linia retragere numerar ENDIF ENDSCAN SELECT cActTemp APPEND FROM DBF('cNumerarTemp') ENDIF USE IN (SELECT('cNumerarTemp')) ENDIF && llSucces IF m.llSucces * Completez fel document cu EXTRAS CONT pentru inregistrarile cu nr = nr extras si cu ORDIN PLATA pentru inregistrarile cu nr diferit de nr extras *!* Replace All id_fdoc With Iif(nr = m.lnNr, m.lnIdFdocExtrasCont, Iif(!Empty(nr), m.lnIdFdocOp, id_fdoc)) *!* Replace All fdoc With Iif(nr = m.lnNr, m.lcFdocExtrasCont, Iif(!Empty(nr), m.lcFdocOp, fdoc)) Replace All id_fdoc With m.lnIdFdocExtrasCont, fdoc With m.lcFdocExtrasCont IN cActTemp Wait Window 'Verificare conturi fara parteneri/documente' Nowait * sterg partenerii si documentele pereche de pe conturile care nu au parteneri, documente llSucces = goExecutor.oExecuta('SELECT distinct cont, cu_inregistrari FROM vconfig_cont_ireg order by cont', 'cConturiPartTemp') If m.llSucces Select a.Cont, Iif(!Isnull(b.Cont), 1, 0) As epart, Nvl(b.cu_inregistrari, 0) As cu_inregistrari ; From (Select scd As Cont From cActTemp ; Union ; Select scc As Cont From cActTemp) a Left Join cConturiPartTemp b On a.Cont = b.Cont ; Into Cursor cConturiTemp Select cConturiTemp Scan For epart = 0 lcCont = Alltrim(Cont) If epart = 0 Update cActTemp Set id_partd = 0, partd = '', id_factd = 0, pereched = 0 Where Alltrim(scd) = m.lcCont Update cActTemp Set id_partc = 0, partc = '', id_factc = 0, perechec = 0 Where Alltrim(scc) = m.lcCont Else If cu_inregistrari = 0 Update cActTemp Set id_factd = 0, pereched = 0 Where Alltrim(scd) = m.lcCont Update cActTemp Set id_factc = 0, perechec = 0 Where Alltrim(scc) = m.lcCont Endif Endif Endscan Use In (Select('cConturiTemp')) Use In (Select('cConturiPartTemp')) Endif && llSucces ldDataIreg = Gomonth(Date(m.gnAn, m.gnLuna, 1), 1) - 1 If Type('gnIdSucursala') = 'U' Local gnIdSucursala gnIdSucursala = 0 Endif If Type('gcSucursala') = 'U' Local gcSucursala gcSucursala = Iif(!Empty(Nvl(m.gnIdSucursala, 0)), m.gcFirma, '') Endif Select nr As nract, Data As dataact, Iif(Year(Data) * 12 + Month(Data) = m.gnAn * 12 + m.gnLuna, Data, m.ldDataIreg) As dataireg, suma, ; suma_val, nume_val, id_valuta, Curs, ; Cast(Upper(Alltrim(explicatie) + Iif(!Empty(Nvl(denumire, '')), ' ' + Alltrim(denumire), '') + ; Iif(!Empty(Nvl(cod_fiscal, '')), ' ' + Alltrim(cod_fiscal), '')) As C(100)) As explicatia, ; M.lcIBAN As explicatia4, ; scd, scc, ascd, ascc, id_partd, id_partc, partd, partc, ; id_factd, id_factc, pereched, perechec, ; id_fdoc, fdoc, ; Cast(gnIdSucursala As N(5) Null) As id_sucursala, Space(200) As sucursala ; From cActTemp ; Order By Data ; Into Cursor cActTemp2 Readwrite * Dadea eroare cand puneam cast(m.gnIdSucursala as I) Update cActTemp2 Set id_sucursala = m.gnIdSucursala, sucursala = m.gcSucursala Delete From cActTemp2 Where suma = 0 Use In (Select('cActTemp')) Select * From cActTemp2 Into Cursor cActTemp Readwrite Use In (Select('cActTemp2')) Select (m.lcSelect) ENDIF && llSucces If Used("cGrupParteneriCui") Use In (Select("cGrupParteneriCui")) Endif Return m.llSucces Endproc && CreeazaNote Enddefine && ExtrasBanca Define Class ExtrasBanca_MT940 As ExtrasBanca cDescription = 'clasa generica import extras MT940' ***************************** *** Parseaza liniile din extras si le introduce in cursorul C_IMPORT_TEMP ***************************** Procedure Parse Local lcBanca, lcCodFiscal, lcCursor, lcDenumire, lcDescriere, lcExtraRand, lcFacturi, lcFile Local lcIBAN, lcRand, lcRand1, lcRefDoc, lcTip, lcTip2, ldData, lnLinie, lnLinii, lnNr, lnPos Local lnPozitieN, lnRand, lnResults, lnSuma, llSucces lcFile = This.cFile lnLinii = 0 If File(m.lcFile) lnLinii = Alines(This.aLinii, Filetostr(m.lcFile), 1) lnLinii = Iif(Empty(m.lnLinii), 0, m.lnLinii) This.nLinii = m.lnLinii Endif llSucces = .T. If m.lnLinii = 0 This.lError = .T. llSucces = .F. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + 'Fisierul este gol!' Endif * Verific antetul fisierului If m.llSucces llSucces = .F. * verifica daca exista :25 in primele 20 linii For lnLinie = 1 To 20 lcRand = Alltrim(This.aLinii[m.lnLinie]) If Left(m.lcRand, 4) = ':25:' llSucces = .T. Exit Endif Endfor If !m.llSucces This.lError = .T. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + 'Nu corespunde structura fisierului!' Endif Endif If m.llSucces Select C_IMPORT_TEMP lnLinii = This.nLinii For lnLinie = 1 To m.lnLinii lcRand = Alltrim(This.aLinii[m.lnLinie]) ldData = '' lcTip = '' lcTip2 = '' lnSuma = 0 Do Case Case Left(m.lcRand, 4) = ':25:' && cont bancar * :25:RO57RZBR0000060011634808 This.cIBAN = Upper(Alltrim(Substr(m.lcRand, 5))) && RO57RZBR0000060011634808 This.cBIC = Substr(m.lcRand, 9, 4) && RZBR Case Left(m.lcRand, 5) = ':28C:' && numar extras/statement number * :28C:213/1 This.nNr = Int(Val(Substr(m.lcRand, 6))) && 213 Case Left(m.lcRand, 4) = ':61:' && tranzactie master, pe un singur rand * :61:1712201220D82665,12NTRF32871258//3A9H3KUEDK5T72I * :61:1712201220D3141,04NTRFNONREF//3A9H3KUEDK5T73M * :61:1712201220D8,00NCOMNONREF//3A9H3KUEDK5T73W ldData = Ctod(Substr(m.lcRand, 9, 2) + "." + Substr(m.lcRand, 7, 2) + ".20" + Substr(m.lcRand, 5, 2)) lcTip = Substr(m.lcRand, 15, 1) && D/C lcRand = Substr(m.lcRand, 16) && 82665,12NTRF32871258//3A9H3KUEDK5T72I lnPozitieN = At("N", m.lcRand) lnSuma = Val(Strtran(Substr(m.lcRand, 1, m.lnPozitieN - 1), ",", ".")) && 82665.12 lcTip2 = Substr(m.lcRand, m.lnPozitieN + 1, 3) && TRF Select C_IMPORT_TEMP Append Blank Replace Data With m.ldData, suma With m.lnSuma, tip With m.lcTip, tip_2 With m.lcTip2 If !'NONREF' $ m.lcRand lnPos = At('/', m.lcRand) && && 82665,12NTRF32871258//3A9H3KUEDK5T72I lcCodFiscal = Substr(m.lcRand, m.lnPozitieN + 4, m.lnPos - m.lnPozitieN - 4) && 32871258 Replace cod_fiscal With m.lcCodFiscal Endif *** Se poate sa mai existe o linie suplimentara cu detalii pentru :61: Case Left(m.lcRand, 4) = ":86:" && tranzactie detalii, maxim 6 randuri * Completez randul :86: cu liniile urmatoare, pana la intalnirea liniei :61:,:62:, ':6x:' * :86:000^20C/V F. 54^24Ref.Doc 1501/OPIB^30GE GARAN * TI BANK S.A.^31RO68UGBI0000442012404RON^32ADINA SI * CAMI UNIVERS SRL * :61:1712201220D13,74NCOMNONREF//3A9H3KUEDK5T72S lcExtraRand = "" lcRand1 = m.lcRand For lnRand = 1 To 5 lnLinie = m.lnLinie + 1 && avansez 1 linie IF m.lnLinie > m.lnLinii EXIT ENDIF lcExtraRand = This.aLinii[m.lnLinie] If Left(m.lcExtraRand, 2) = ':6' lnLinie = m.lnLinie - 1 && revin 1 linie Exit Else lcRand1 = m.lcRand1 + m.lcExtraRand Endif Endfor lcRand = m.lcRand1 lcDescriere = Strextract(m.lcRand, '^20', '^', 1, 1 + 2) && 20: descriere: C/V F. 54 * Array sau lista cu numere de facturi separate prin "," daca exista in descriere lcFacturi = '' *!* lnResults = GetRegExpAll(m.lcDescriere, '\d+', @m.lcFacturi) lnResults = GetRegExpAllNumbers(m.lcDescriere, @m.lcFacturi) lcRefDoc = Strextract(m.lcRand, '^24', '^', 1, 1 + 2) && 24: document plata: Ref.Doc 1501/OPIB lnNr = 0 If 'ref.doc' $ Lower(m.lcRefDoc) lnNr = Int(Val(Strextract(m.lcRefDoc, 'ref.doc', '/', 1, 1 + 2))) Endif lcBanca = Strextract(m.lcRand, '^30', '^', 1, 1 + 2) && 30: banca tert: GE GARANTI BANK S.A. lcIBAN = Strextract(m.lcRand, '^31', '^', 1, 1 + 2) && 31: cont bancar tert: RO68UGBI0000442012404RON lcDenumire = Strextract(m.lcRand, '^32', '^', 1, 1 + 2) && 32: nume tert: ADINA SI CAMI UNIVERS SRL Replace iban With m.lcIBAN, denumire With m.lcDenumire, explicatie With m.lcDescriere + '; ' + m.lcRefDoc, nr With m.lnNr, documente With m.lcFacturi Endcase Endfor && lnLinie = 1 TO lnLinii Select C_IMPORT_TEMP Replace All nr With This.nNr For Empty(nr) Endif && llSucces Return m.llSucces Endproc && Parse Enddefine Define Class ExtrasBanca_RAIFFEISEN_TXT_MT940 As ExtrasBanca_MT940 * Se poate suprascrie daca RAIFFEISEN are particularitati fata de clasa generica Enddefine && ExtrasBanca_RAIFFEISEN_TXT_MT940 Define Class ExtrasBanca_CREDITEUROPE_XML As ExtrasBanca ***************************** *** Parseaza liniile din extras si le introduce in cursorul C_IMPORT_TEMP ***************************** Procedure Parse Local lcBanca, lcCodFiscal, lcCursor, lcData, lcDenumire, lcDescriere, lcDescriereFacturi Local lcExplicatie, lcExtraRand, lcFacturi, lcFile, lcIBAN, lcInfo1, lcInfo1Exemplu, lcInfo2 Local lcInfo2Exemplu, lcMovements, lcMovementsExemplu, lcNr, lcRand, lcRand1, lcRef, lcRefDoc Local lcText, lcTip, lcTip2, ldData, lnCredit, lnDay, lnDebit, lnLinie, lnLinii, lnMonth, lnNr Local lnPos, lnPozitieN, lnRand, lnResults, lnSuma, lnYear, llSucces, ldData1, ldData2 Local loEx As Exception lcFile = This.cFile lnLinii = 0 llSucces = .T. If File(m.lcFile) Text To m.lcInfo1Exemplu Noshow 20210428105248 RO88FNNB000503152940RO02 RON 19245.98 20210401 Endtext Text To m.lcInfo2Exemplu Noshow 22354.81 20210428 Endtext Text To m.lcMovementsExemplu Noshow OPIOPRIC/12747148 20210401 20210401
Incasare OP/NOTPROVIDED/DOMINUS CONSULT SRL /ROC/srvicii contabilitate conf. contr.//RFB/35
OPC NOTPROVIDED 15111236 RO78BTRL01401202699905XX DOMINUS CONSULT SRL 0.00 600.00
Endtext lcText = Filetostr(m.lcFile) lcInfo1 = Strextract(m.lcText, '', '', 1, 1) lcInfo2 = Strextract(m.lcText, '', '', 1, 1) lcMovements = Strextract(m.lcText, '', '', 1, 1 + 4) Try lnLinii = Xmltocursor(m.lcMovements, "cMovementsTemp") Catch To loEx This.lError = .T. llSucces = .F. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + 'Nu corespunde structura fisierului!' + ; Chr(13) + loEx.Message lnLinii = 0 Endtry lnLinii = Iif(Empty(m.lnLinii), 0, m.lnLinii) This.nLinii = m.lnLinii Endif If m.lnLinii = 0 This.lError = .T. llSucces = .F. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + 'Fisierul este gol!' Endif * Verific antetul fisierului If m.llSucces If ![] $ m.lcInfo1 This.lError = .T. llSucces = .F. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + 'Nu corespunde structura fisierului!' Endif Endif If m.llSucces This.cIBAN = Upper(Alltrim(Strextract(m.lcInfo1, '', '', 1, 1))) This.cValuta = Upper(Alltrim(Strextract(m.lcInfo1, '', '', 1, 1))) If !Inlist(This.cValuta, 'RON', 'LEI', 'ROL') This.cContBanca = '5124' && banca valuta Endif ldData1 = This.dData1 ldData2 = this.dData2 This.nNr = Int(Val(Strextract(m.lcInfo2, '', '', 1, 1))) && numarul extrasului il consider data de sfarsit a extrasului Select cMovementsTemp Scan lcData = Alltrim(Transform(value_date)) lnYear = Int(Val(Substr(m.lcData, 1, 4))) lnMonth = Int(Val(Substr(m.lcData, 5, 2))) lnDay = Int(Val(Substr(m.lcData, 7, 2))) ldData = Date(m.lnYear, m.lnMonth, m.lnDay) IF !BETWEEN(m.ldData, m.ldData1, m.ldData2) LOOP ENDIF lnDebit = Val(Transform(debit)) lnCredit = Val(Transform(credit)) lnSuma = Iif(m.lnDebit <> 0, m.lnDebit, m.lnCredit) lcTip = Iif(m.lnDebit <> 0, 'D', 'C') lcRef = Getwordnum(Upper(Alltrim(ref)), 1, '/') * OPIOPRIC/12747148 Incasare OP/2021105/WERT SRL /ROC/FACT. 2372 DIN 01.03.2021 * COM/12747474 * ODSIBS.ODORANGE/9061093 Plata factura Orange, cod abonat 0554957175 * OPPIBS.OPRCT/13717432 Plata OP / 342 - BUGETUL DE STAT * FXCIBS.FCTRAN/1962148 Transfer 1000 RON cu data valutei 23-APR-21 * GENCCCPJS/862026678 Plata comision lunar de administrare cont lcTip2 = '' Do Case Case m.lcRef = 'COM' Or 'GENCCCPJS' $ m.lcRef lcTip2 = This.cTipComisioane Case 'OPPIBS.OPRCT' $ m.lcRef lcTip2 = This.cTipBuget Case 'FXCIBS' $ m.lcRef lcTip2 = This.cTipTransfer Case m.lcRef = 'OPIOPRIC' Or 'OPPIBS.OPRCC' $ m.lcRef lcTip2 = This.cTipTerti Otherwise lcTip2 = This.cTipTerti Endcase lcCodFiscal = Upper(Alltrim(TRANSFORM(cui_platitor))) lcDescriere = Alltrim(TRANSFORM(Details)) * Daca sunt mai multe informatii, nu pastrez explicatiile 2,3,4 (numar op, nume partener si alta explicatie necunoscuta) * Pastrez doar tipul de document incasare op / plata op / transfer etc. si detaliile completate de client/furnizor * in procedura import_extras completez explicatia cu nume client/furnizori si cod fiscal lcExplicatie = m.lcDescriere Do Case Case Getwordcount(m.lcDescriere, '/') = 2 lcExplicatie = Alltrim(Getwordnum(m.lcDescriere, 1, '/')) Case Getwordcount(m.lcDescriere, '/') > 4 lcExplicatie = Alltrim(Alltrim(Getwordnum(m.lcDescriere, 1, '/')) + ' ' + Alltrim(Getwordnum(m.lcDescriere, 5, '/'))) Endcase lcBanca = '' && nume banca platitor lcIBAN = Alltrim(TRANSFORM(iban_platitor)) && cont bancar tert: RO68UGBI0000442012404RON lcDenumire = Alltrim(TRANSFORM(denumire_platitor)) && nume tert: ADINA SI CAMI UNIVERS SRL lnNr = 0 && numar document de plata OP If Lower(Left(m.lcDescriere, 8)) = 'plata op' && Plata OP / 343 - BUGETUL DE STAT lcNr = Alltrim(Strextract(m.lcDescriere, 'Plata OP /', '-', 1, 1)) lnNr = Int(Val(m.lcNr)) Endif * Array sau lista cu numere de facturi separate prin "," daca exista in descriere * (?:( \d+)(?![\.\d])(?!2021).) spatiu apoi cifre, fara . si cifra si fara anul curent (sa excluda datele) lcFacturi = '' lcDescriereFacturi = m.lcDescriere If 'incasare op' $ Lower(m.lcDescriereFacturi) * Incasare OP/2021105/WERT SRL /ROC/FACT. 2372 DIN 01.03.2021 * Incasare OP/197 DIVIZIA DE PAZA SRL /ROC/FACT NR 2021102 29 04 2021 SUPORT TEHNIC APR 2021 * Incasare OP/864/CN ACN SA 2021100/29,04,2021 lcDescriereFacturi = Getwordnum(m.lcDescriereFacturi, 3, '/')+ ' ' + Getwordnum(m.lcDescriereFacturi, 4, '/')+ ' '+ Getwordnum(m.lcDescriereFacturi, 5, '/') Endif *!* lcRegExp = "(?:( \d+)(?![\.\d])(?!" + Alltrim(Str(Int(m.gnAn))) + ").)" *!* lcRegExp = "(\d)+" *!* lnResults = GetRegExpAll(m.lcDescriereFacturi, m.lcRegExp, @m.lcFacturi) lnResults = GetRegExpAllNumbers(m.lcDescriereFacturi, @m.lcFacturi) Select C_IMPORT_TEMP Append Blank Replace Data With m.ldData, suma With m.lnSuma, tip With m.lcTip, tip_2 With m.lcTip2, cod_fiscal With m.lcCodFiscal Replace iban With m.lcIBAN, denumire With m.lcDenumire, explicatie With m.lcExplicatie, documente With m.lcFacturi, nr With m.lnNr Endscan && cMovementsTemp Select C_IMPORT_TEMP Replace All nr With This.nNr For Empty(nr) Endif && llSucces Use In (Select('cMovementsTemp')) Return m.llSucces Endproc && Parse Enddefine && ExtrasBanca_CREDITEUROPE_XML Define Class ExtrasBanca_UNICREDIT_CSV As ExtrasBanca ***************************** *** Parseaza liniile din extras si le introduce in cursorul C_IMPORT_TEMP ***************************** Procedure Parse Local lcBanca, lcCodFiscal, lcCursor, lcData, lcDenumire, lcDescriere, lcDescriereFacturi Local lcExplicatie, lcExtraRand, lcFacturi, lcFile, lcIBAN, lcInfo1, lcInfo1Exemplu, lcInfo2 Local lcInfo2Exemplu, lcMovements, lcMovementsExemplu, lcNr, lcRand, lcRand1, lcRef, lcRefDoc Local lcText, lcTip, lcTip2, ldData, lnCredit, lnDay, lnDebit, lnLinie, lnLinii, lnMonth, lnNr Local lnPos, lnPozitieN, lnRand, lnResults, lnSuma, lnYear, llSucces, lcRegExp lcFile = This.cFile lnLinii = 0 llSucces = .T. If File(m.lcFile) Text To m.lcAntetExemplu Noshow Titlu cont;Cont;Valuta;Sold deschidere;Sold inchidere GENIUS IMM MOD OP;819976000;RON;-80.762,64;-158.108,98 Endtext Text To m.lcBodyExemplu Noshow Cont;Suma;Valuta;Data tranzactiei;Data valutei;Banca;Numele bancii;Adresa bancii;Cont;IBAN;Nume;Adresa 1;Adresa 2;Adresa 3;Detalii tranzactie 1;Detalii tranzactie 2;Detalii tranzactie 3;Detalii tranzactie 4;Detalii tranzactie 5;Detalii tranzactie 6;Detalii tranzactie 7;Detalii tranzactie 8;Detalii plata 1;Detalii plata 2;Detalii plata 3;Detalii plata 4;Detalii plata 5;Detalii plata 6;Cod fiscal;Numar ordin;Camp neutilizat;Camp neutilizat;Camp neutilizat;Numar de referinta;Requested Processing date;Numar inregistrare PSP;Nume PSP tert;Referinta plata PSP tert;Tara emiterii autorizatiei;Codul autoritatii nationale 819976000;-21,28;RON;10.05.2021;10.05.2021;;;;;;;;;;COMMISSION FOR CASH TRANS;CAK-LCD/1900/A/0015;;;;;;;;;;;;;;;;;;;;;;;; 819976000;2.127,84;RON;10.05.2021;10.05.2021;;;;;;;;;;CASH DEPOSIT/LEI ACCOUNT;CAK-LCD/1900/A/0015;FACT PROF SOWB21009895;MATEI ANDREI MARIUS;;;;;;;;;;;;;;;;;;;;;; 819976000;-51,33;RON;07.05.2021;07.05.2021;INGB;ING BANK ROMANIA;;;RO54INGB0000999907783025;PRO INTERACTIVE PLUS SRL;;;;;;;;;;;;F 6607/05.04.21;;;;;;32933032;304;;;;279591539;07.05.2021;;;;; Endtext lnLinii = Alines(This.aLinii, Filetostr(m.lcFile), 1) lnLinii = Iif(m.lnLinii < 2, 0, m.lnLinii) This.nLinii = m.lnLinii Endif If m.lnLinii = 0 This.lError = .T. llSucces = .F. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + 'Fisierul este gol!' Endif * Verific antetul fisierului If m.llSucces If ![Titlu cont;Cont;Valuta;Sold deschidere;Sold inchidere] $ This.aLinii[1] This.lError = .T. llSucces = .F. This.cErrorMessage = This.cErrorMessage + Iif(!Empty(This.cErrorMessage), Chr(13), '') + 'Nu corespunde structura fisierului!' Endif Endif If m.llSucces lcLinie = This.aLinii[2] This.cIBAN = syGETWORDNUM(m.lcLinie, 2, ';') This.cValuta = syGETWORDNUM(m.lcLinie, 3, ';') This.nNr = Int(Val(Dtos(Gomonth(Date(m.gnAn, m.gnLuna, 1), 1) - 1))) For lnLinie = 4 To m.lnLinii lcLinie = This.aLinii[m.lnLinie] lcData = syGETWORDNUM(m.lcLinie, 4, ';') lnYear = Int(Val(Substr(m.lcData, 7, 4))) lnMonth = Int(Val(Substr(m.lcData, 4, 2))) lnDay = Int(Val(Substr(m.lcData, 1, 2))) ldData = Date(m.lnYear, m.lnMonth, m.lnDay) lcSuma = syGETWORDNUM(m.lcLinie, 2, ';') lcSuma = Strtran(m.lcSuma, '.', '', 1, 10, 1) && sterg separatorul grupe . lcSuma = Strtran(m.lcSuma, ',', '.', 1, 1, 1) && modific separator zecimale in . lnSuma = Val(m.lcSuma) lcTip = Iif(m.lnSuma < 0, 'D', 'C') lnSuma = Abs(m.lnSuma) lcD1 = syGETWORDNUM(m.lcLinie, 15, ';') lcD2 = syGETWORDNUM(m.lcLinie, 16, ';') lcD3 = syGETWORDNUM(m.lcLinie, 17, ';') lcD4 = syGETWORDNUM(m.lcLinie, 18, ';') lcD5 = syGETWORDNUM(m.lcLinie, 19, ';') lcD6 = syGETWORDNUM(m.lcLinie, 20, ';') lcD7 = syGETWORDNUM(m.lcLinie, 21, ';') lcD8 = syGETWORDNUM(m.lcLinie, 22, ';') lcDP1 = syGETWORDNUM(m.lcLinie, 23, ';') lcDP2 = syGETWORDNUM(m.lcLinie, 24, ';') lcDP3 = syGETWORDNUM(m.lcLinie, 25, ';') lcDP4 = syGETWORDNUM(m.lcLinie, 26, ';') lcDP5 = syGETWORDNUM(m.lcLinie, 27, ';') lcDP6 = syGETWORDNUM(m.lcLinie, 28, ';') lcExplicatie = m.lcD1 + ; Iif(!Empty(m.lcD2), ' ' + m.lcD2, '') + ; Iif(!Empty(m.lcD3), ' ' + m.lcD3, '') + ; Iif(!Empty(m.lcD4), ' ' + m.lcD4, '') + ; Iif(!Empty(m.lcD5), ' ' + m.lcD5, '') + ; Iif(!Empty(m.lcD6), ' ' + m.lcD6, '') + ; Iif(!Empty(m.lcD7), ' ' + m.lcD7, '') + ; Iif(!Empty(m.lcD8), ' ' + m.lcD8, '') + ; Iif(!Empty(m.lcDP1), ' ' + m.lcDP1, '') + ; Iif(!Empty(m.lcDP2), ' ' + m.lcDP2, '') + ; Iif(!Empty(m.lcDP3), ' ' + m.lcDP3, '') + ; Iif(!Empty(m.lcDP4), ' ' + m.lcDP4, '') + ; Iif(!Empty(m.lcDP5), ' ' + m.lcDP5, '') + ; Iif(!Empty(m.lcDP6), ' ' + m.lcDP6, '') * COMMISSION FOR CASH TRANS;CAK-LCD/1900/A/0015 * CASH DEPOSIT/LEI ACCOUNT;CAK-LCD/1900/A/0015;FACT PROF SOWB21009895;MATEI ANDREI MARIUS lcBanca = Upper(Alltrim(syGETWORDNUM(m.lcLinie, 6, ';'))) && nume banca platitor lcIBAN = Upper(Alltrim(syGETWORDNUM(m.lcLinie, 10, ';'))) && cont bancar tert: RO68UGBI0000442012404RON lcDenumire = Upper(Alltrim(syGETWORDNUM(m.lcLinie, 11, ';'))) && denumire tert lcCodFiscal = syGETWORDNUM(m.lcLinie, 29, ';') lnNr = Int(Val(syGETWORDNUM(m.lcLinie, 30, ';'))) lcTip2 = '' Do Case Case 'COMMISSION' $ Upper(m.lcExplicatie) Or ' FEE' $ Upper(m.lcExplicatie) Or ; 'FEE/' $ Upper(m.lcExplicatie) Or Upper(m.lcExplicatie) = 'FEE' lcTip2 = This.cTipComisioane Case 'CASH DEPOSIT' $ Upper(m.lcExplicatie) lcTip2 = This.cTipDepunere Case 'BUGETUL DE STAT' $ m.lcDenumire lcTip2 = This.cTipBuget Case 'PROMISSORY NOTE' $ Upper(m.lcDP1) Or 'PROMISSORY NOTE' $ Upper(m.lcD1) lcTip2 = This.cTipEfecteComerciale Otherwise lcTip2 = This.cTipTerti Endcase * Array sau lista cu numere de facturi separate prin "," daca exista in descriere * (?:( \d+)(?![\.\d])(?!2021).) spatiu apoi cifre, fara . si cifra si fara anul curent (sa excluda datele) lcFacturi = '' lcDescriereFacturi = m.lcExplicatie lnResults = GetRegExpAllNumbers(m.lcDescriereFacturi, @m.lcFacturi) Select C_IMPORT_TEMP Append Blank Replace Data With m.ldData, suma With m.lnSuma, tip With m.lcTip, tip_2 With m.lcTip2, cod_fiscal With m.lcCodFiscal Replace iban With m.lcIBAN, denumire With m.lcDenumire, explicatie With m.lcExplicatie, documente With m.lcFacturi, nr With m.lnNr Endfor && laLinii Select C_IMPORT_TEMP Replace All nr With This.nNr For Empty(nr) Endif && llSucces Use In (Select('cMovementsTemp')) Return m.llSucces Endproc && Parse Enddefine && ExtrasBanca_UNICREDIT_CSV * Clasa preluata din SAGA * Determina automat tipul de fisier (extras, decont curier, procesator plati) din continutul fisierului Define Class ExtrasBanca_General As ExtrasBanca Function Parse Local mdatareferinta, lnfilehandle, mrand, mcomision, mnrcomision, isunicredit, isfaracitire, mnrimport mSelectedFile = This.cFile isunicredit = .F. isbcr = .F. isfaracitire = .F. mdatareferinta = Date() mnrimport = 1 mrand = "" Create Cursor match (Id N (10), id_pi N (7), ip C (1), nr C (16), cod C (8), denumire C (64), Data D, scadent D Null, Total N (15, 2), tva N (15, 2), neachitat N (15, 2), neachitat_real N (15, 2), achitat N (15, 2), cod_valuta C (3), Curs N (15, 4), dif_curs N (15, 2), total_val N (16, 4), is_total N (1, 0), tip_o C (3), grupa C (16), plan C (6), sector C (16), sursa C (16), capitol C (16), articol C (16), tip C (1), tvai N (1, 0), inf_suplm C (100)) Index On Data Tag Data Create Cursor c_iex (Id N (10, 0), ip C (1), nr C (16), Data D, suma N (15, 2), explicatie C (200), original M, iban C (24), cod C (8), tert C (64), cf C (13), tip C (2), tip_2 C (3), Cont C (20), cont_casa C (20), ok N (1, 0), tert_v N (1, 0), suma_v N (1, 0), cod_valuta C (3), tip_o C (3), importat N (1), tel C (20), email C (100), asociat N (1, 0), documente C(250), comenzi C(250)) If !Inlist(Upper(Justext(mSelectedFile)), "XLS", "XML") lnfilehandle = Fopen(mSelectedFile) If lnfilehandle = -1 Messagebox( "Fisierul nu poate fi accesat." + Chr(13) + "Probabil ca este deschis �n alta fereastra.", 16, "Eroare acces" ) Return .F. Endif Do While !Feof(lnfilehandle) .And. Empty(mrand) mrand = Fgets(lnfilehandle) Enddo Fclose(lnfilehandle) Endif Do Case Case Left(Upper(Justext(mSelectedFile)), 3) = "XLS" This.xlsGeneral(mSelectedFile) Case Upper(Justext(mSelectedFile)) = "XML" This.xmlAsc(mSelectedFile) Case Upper(Justext(mSelectedFile)) = "TXT" .And. "mandat postal" $ Lower(mrand) This.txtPosta(mSelectedFile) Case Upper(Justext(mSelectedFile)) = "CSV" Do Case Case 'transaction date,type,order'$Lower(mrand) * Data Comenzii,Tipul,Nr Comanda,,Data Transferului,Suma,Comision,Suma Neta,Referinta This.csvStripe(mSelectedFile) Case Lower(Left(mrand, 4)) = "tip," .Or. Lower(Left(mrand, 5)) = "type," This.csvBooking(mSelectedFile) Case "id produs,cod produs," $ Lower(mrand) This.csvPayu(mSelectedFile) Case Occurs('textbox', Lower(mrand)) > 6 This.csvIntesa(mSelectedFile, 1) Case Occurs('textbox', Lower(mrand)) = 6 This.csvIntesa(mSelectedFile, 2) Case 'localitate' $ Lower(mrand) AND 'persoanae' $ Lower(mrand) This.csvFanCourier(mSelectedFile) Case 'oras destinatar' $ Lower(mrand) This.csvFunCourier(mSelectedFile) Case 'awb,data_awb,destinatar' $ Lower(mrand) This.csvFunCourier2(mSelectedFile) Case 'idawb' $ Lower(mrand) This.csvCargus(mSelectedFile) Case 'waybill' $ Lower(mrand) This.csvDPD(mSelectedFile, 1) Case 'data,id,numar' $ Lower(mrand) .Or. '"data","id","numar"' $ Lower(mrand) .Or. 'data;id;numar' $ Lower(mrand) .Or. '"data";"id";"numar"' $ Lower(mrand) This.csvDPD(mSelectedFile, 2) Case 'tranzactiile contului:' $ Lower(mrand) .Or. 'account activities:' $ Lower(mrand) This.csvGaranti(mSelectedFile) Case Lower(Left(mrand, 11)) = "cod client:" This.csvGaranti_2(mSelectedFile) Case 'suma db' $ Lower(mrand) .Or. ('suma debit' $ Lower(mrand) .And. 'referinta' $ Lower(mrand) .And. 'data val.' $ Lower(mrand)) This.csvOTP(mSelectedFile) Case "perioada:" $ Lower(mrand) .Or. "data generare extras:" $ Lower(mrand) This.csvRaiffeisen(mSelectedFile, Iif(";;" $ mrand, ";", ",")) Case "titlu cont" $ Lower(mrand) .Or. "account title" $ Lower(mrand) If "titlu cont" $ Lower(mrand) This.csvUnicredit(mSelectedFile, Substr(mrand, Atc( "Titlu cont", mrand) + 10, 1)) Else This.csvUnicredit(mSelectedFile, Substr(mrand, Atc( "Account Title", mrand) + 13, 1)) Endif Case ",,detalii tranzactie," $ Lower(mrand) .Or. ",,transaction details," $ Lower(mrand) If "debit,credit" $ Lower(mrand) This.csvIng(mSelectedFile, 2) Else This.csvIng(mSelectedFile, 1) Endif Case "numar cont;" $ Lower(mrand) lnTipFisier = IIF('sold initial;sold final;numar cont;'$ Lower(mrand), 2, 1) This.csvIngbusiness(mSelectedFile, ";", m.lnTipFisier) Case "ingb" $ Lower(mrand) .Or. 'numar cont,' $ Lower(mrand) .Or. 'numar cont",' $ Lower(mrand) This.csvIngbusiness(mSelectedFile, ",") Case Lower(Left(mrand, 10)) = "tranzactii" .Or. Lower(Left(mrand, 12)) = "transactions" * BTGO lista de tranzactii in cursul lunii This.csvBT(mSelectedFile, 1) Case Lower(Left(mrand, 19)) = [lista de tranzactii] OR Lower(Left(mrand, 21)) = ["lista de tranzactii"] * BTGO extrase de cont final de luna This.csvBT(mSelectedFile, 2) Case '"date",' $ Lower(mrand) This.csvPaypal(mSelectedFile) Case Lower(Left(mrand, 6)) = '"brde"' .Or. Lower(Left(mrand, 4)) = 'brde' This.csvBRD(mSelectedFile) Case Lower(Left(mrand, 6)) = '"rncb"' .Or. Lower(Left(mrand, 4)) = 'rncb' This.csvBCR2(mSelectedFile) Case "first bank" $ Lower(mrand) This.csvFirstBank(mSelectedFile) Case "cece" $ Lower(mrand) This.csvCEC(mSelectedFile) Case Lower(Left(mrand, 3)) = '"#"' This.csvMobilPay(mSelectedFile) Case "data emitere extras" $ Lower(mrand) This.csvBCR(mSelectedFile) Case Occurs(";", mrand) = 7 This.csvUnDoi(mSelectedFile) Case Occurs(",", mrand) = 6 This.csvPaypoint(mSelectedFile) Case "platitor_nume_denumire" $ Lower(mrand) This.csvIdea(mSelectedFile) Case "numeclient,perioada,codclient" $ Lower(mrand) This.csvCreditEurope(mSelectedFile) Case Lower(Left(mrand, 3)) = "sep" This.csvAlpha(mSelectedFile) Otherwise Messagebox( "Formatul fisierului CSV nu este implementat pentru import.", 16, "Format necunoscut" ) Return .F. Endcase Case Upper(Justext(mSelectedFile)) = "TXT" && MT940 This.MT940(mSelectedFile) Otherwise * Endcase Update c_iex Set tip_2 = This.cTipTerti Where Empty(tip_2) Select Int(Val(nr)) As nr, Data, suma, explicatie, original, iban, cod, tert As denumire, cf As cod_fiscal, tip, tip_2, ; Cont, tert_v, suma_v As suma_val, cod_valuta As nume_val, tip_o, documente, comenzi ; From c_iex Into Cursor c_iex_temp Select C_IMPORT_TEMP Append From Dbf('c_iex_temp') Use In (Select('c_iex_temp')) Use In (Select('c_iex')) Use In (Select('match ')) *!* This.cIBAN = syGETWORDNUM(m.lcLinie, 2, ';') *!* This.cValuta = syGETWORDNUM(m.lcLinie, 3, ';') *!* If !Inlist(This.cValuta, 'RON', 'LEI', 'ROL') *!* This.cContBanca = '5124' && banca valuta *!* ENDIF Endfunc && Parse Function MT940 Fopen(mSelectedFile) mtextoriginal = "" Select c_iex Do While !Feof(lnfilehandle) If !isfaracitire mrand = Fgets(lnfilehandle) Endif isfaracitire = .F. Do Case Case Left(m.mrand, 4) = ':25:' && cont bancar * :25:RO57RZBR0000060011634808 This.cIBAN = Upper(Alltrim(Substr(m.mrand, 5))) && RO57RZBR0000060011634808 Case ":61:" $ mrand Append Blank mldatae = {} nnrapnc = Occurs("NC", mrand) If nnrapnc > 0 mstartdata = At("NC", mrand, nnrapnc) + 2 mldatae = Ctod(Substr(mrand, mstartdata + 4, 2) + "." + Substr(mrand, mstartdata + 2, 2) + ".20" + Substr(mrand, mstartdata, 2)) Endif If mldatae = {} mldatae = Ctod(Substr(mrand, 9, 2) + "." + Substr(mrand, 7, 2) + ".20" + Substr(mrand, 5, 2)) Endif Replace Data With mldatae, tip With Substr(mrand, 15, 1) + Iif(Inlist(Substr(mrand, 16, 1), "D", "C"), Substr(mrand, 16, 1), "") mrand = Iif(Inlist(Substr(mrand, 16, 1), "D", "C"), Substr(mrand, 17, 50), Substr(mrand, 16, 50)) mtextoriginal = mrand Do Case Case "NTRF" $ mrand isbcr = .T. mpozitien = At("N", mrand) Replace suma With Val(Strtran(Substr(mrand, 1, mpozitien - 1), ",", ".")), tip_2 With Substr(mrand, mpozitien + 1, 3) If "//" $ mrand mpozitienr = At("//", mrand) + 10 Replace nr With Alltrim(Substr(mrand, mpozitienr, 16)) Else Replace nr With Alltrim(Substr(mrand, mpozitien + 4, 16)) Endif Case "FMSC" $ mrand mpozitien = At("F", mrand) Replace suma With Val(Strtran(Substr(mrand, 1, mpozitien - 1), ",", ".")), tip_2 With "", nr With Alltrim(Substr(mrand, mpozitien + 12, 16)) isunicredit = .T. Otherwise mpozitien = At("N", mrand) Replace suma With Val(Strtran(Substr(mrand, 1, mpozitien - 1), ",", ".")), tip_2 With Substr(mrand, mpozitien + 1, 3), nr With Strtran(Alltrim(Substr(mrand, mpozitien + 4, 16)), "NONREF //", "") If !("NONREF //" $ mrand) mrand = Fgets(lnfilehandle) Replace explicatie With mrand mtextoriginal = mtextoriginal + Chr(13) + mrand Endif Endcase Case ":86:" $ mrand .And. "+31" $ mrand Replace iban With Alltrim(Substr(mrand, At( "+31", mrand) + 3, 24)) mrand = Fgets(lnfilehandle) mtextoriginal = mtextoriginal + Chr(13) + mrand Replace tert With Substr(mrand, At( "+32", mrand) + 3, At( "+33", mrand) - 4), cf With Alltrim(Substr(mrand, At( "+33", mrand) + 3, 13)) Case ":86:" $ mrand .And. !isunicredit .And. !isbcr mnextrand = Fgets(lnfilehandle) mtextoriginal = mtextoriginal + Chr(13) + mnextrand If mnextrand = ":61:" mrand = mnextrand isfaracitire = .T. Loop Else mrand1 = mrand + mnextrand Endif mnextrand = Fgets(lnfilehandle) mtextoriginal = mtextoriginal + Chr(13) + mnextrand If mnextrand = ":61:" mrand = mnextrand isfaracitire = .T. Loop Else mrand1 = mrand + mnextrand Endif mnextrand = Fgets(lnfilehandle) mtextoriginal = mtextoriginal + Chr(13) + mnextrand If mnextrand = ":61:" mrand = mnextrand isfaracitire = .T. Loop Else mrand1 = mrand + mnextrand Endif mnextrand = Fgets(lnfilehandle) mtextoriginal = mtextoriginal + Chr(13) + mnextrand If mnextrand = ":61:" mrand = mnextrand isfaracitire = .T. Loop Else mrand1 = mrand + mnextrand Endif mrand1 = Substr(Strtran(mrand1, "intrabancara Platitor", ""), 5, 250) mcf = getnrfromstring(mrand1) miban = Substr(mcf, At("RO", mcf), 24) mcf = Substr(mcf, 1, At( " ", mcf)) mtert = Substr(mrand1, At( " ", mrand1) + 3, At(mcf, mrand1) - 5) If "Detalii " $ mrand1 mexplicatie = Substr(mrand1, At( "Detalii ", mrand1) + 8, 60) Else mexplicatie = Substr(mrand, 5, 60) Endif If !verifcf(mcf) mcf = getdigitsfromstring(mrand1, 4, 1, ".") Endif Replace tert With mtert, cf With mcf, iban With miban, explicatie With mexplicatie Case ":86:" $ mrand .And. isbcr mnextrand = "" mrand1 = mrand ij = 1 Do While !(":61:" $ mnextrand) .And. ij <= 7 mnextrand = Fgets(lnfilehandle) If mnextrand = ":61:" Fseek(lnfilehandle, - Len(mnextrand) - 2, 1) Else mrand1 = mrand1 + mnextrand Endif ij = ij + 1 Enddo mtextoriginal = mtextoriginal + Chr(13) + mrand1 Store "" To mtert, miban, mcf If tip = "C" If "-Platitor" $ mrand1 mstart = At("-Platitor", mrand1) + 11 mtert = Substr(mrand1, mstart, 200) mstartiban = At(" RO", mtert) + 2 miban = Substr(mtert, mstartiban, 24) mstartcf = At(" CODFISC ", mtert) + 9 mcf = Substr(mtert, mstartcf, 12) If " " $ mcf mcf = Left(mcf, At(" ", mcf)) Else If "-" $ mcf mcf = Left(mcf, At("-", mcf) - 1) Endif Endif mtert = Left(mtert, mstartiban - 2) Endif Else If "-Beneficiar" $ mrand1 mstart = At("-Beneficiar", mrand1) + 13 mtert = Substr(mrand1, mstart, 200) mstartiban = At(" RO", mtert) + 2 miban = Substr(mtert, mstartiban, 24) mstartcf = At(" CODFISC ", mtert) + 9 mcf = Substr(mtert, mstartcf, 12) If " " $ mcf mcf = Left(mcf, At(" ", mcf)) Else If "-" $ mcf mcf = Left(mcf, At("-", mcf) - 1) Endif Endif mtert = Left(mtert, mstartiban - 2) Endif Endif If !verifcf(mcf) mcf = getdigitsfromstring(mrand1, 4, 1, ".") Endif If "Detalii " $ mrand1 mexplicatie = Substr(mrand1, At( "Detalii ", mrand1) + 9, 60) Else mexplicatie = Substr(mrand, 5, 60) Endif Replace tert With mtert, cf With mcf, iban With miban, explicatie With mexplicatie Case ":86:" $ mrand .And. isunicredit mtextoriginal = mtextoriginal + Chr(13) + mrand mrand1 = Fgets(lnfilehandle) If mrand1 = ":61:" mrand = mrand1 isfaracitire = .T. Else mtextoriginal = mtextoriginal + Chr(13) + mrand1 If "CUI" $ mrand + mrand1 mrand2 = Fgets(lnfilehandle) mtextoriginal = mtextoriginal + Chr(13) + mrand2 If mrand2 = ":61:" mrand1 = mrand + mrand1 mrand = mrand2 isfaracitire = .T. Else mrand1 = mrand + mrand1 + mrand2 mrand2 = Fgets(lnfilehandle) If mrand2 = ":61:" mrand = mrand2 isfaracitire = .T. Else mrand1 = mrand1 + mrand2 mtextoriginal = mtextoriginal + Chr(13) + mrand2 Endif Endif mtert = Alltrim(Left(mrand1, At("CUI", mrand1) - 3)) mrand1 = Alltrim(Substr(mrand1, At("CUI", mrand1) + 3, 400)) mcf = Alltrim(Substr(mrand1, 1, At(",", mrand1) - 1)) mrand1 = Alltrim(Substr(mrand1, At("Acc.", mrand1) + 4, 400)) miban = Alltrim(Substr(mrand1, 1, At(",", mrand1) - 1)) mrand1 = Alltrim(Substr(mrand1, At(",", mrand1, 4) + 2, 400)) mexplicatie = Alltrim(Substr(mrand1, 1, At(",", mrand1) - 1)) Replace tert With Substr(mtert, 5, 60), cf With mcf, iban With miban, explicatie With mexplicatie, tip_2 With "TRF" Else Do Case Case ":61:" $ mrand1 isfaracitire = .T. mrand = mrand1 mexplicatie = Alltrim(Substr(mrand, 5, 60)) Case mrand1 = ":" mexplicatie = Alltrim(Substr(mrand, 5, 60)) Otherwise mrand2 = Fgets(lnfilehandle) + " " mexplicatie = "" If mrand2 = ":61:" mrand = mrand2 isfaracitire = .T. Else mexplicatie = mrand2 mtextoriginal = mtextoriginal + Chr(13) + mrand2 mrand3 = Fgets(lnfilehandle) If mrand3 = ":61:" mrand = mrand3 isfaracitire = .T. Else mtextoriginal = mtextoriginal + Chr(13) + mrand3 mrand4 = Fgets(lnfilehandle) If mrand4 = ":61:" mrand = mrand4 isfaracitire = .T. Else mtextoriginal = mtextoriginal + Chr(13) + mrand4 If mrand2 = "Fee/" .Or. "Transfond fee" $ mrand2 mexplicatie = mrand2 + mrand3 + " " + mrand4 Else mexplicatie = mrand3 + " " + mrand4 Endif Endif Endif Endif Endcase If mexplicatie = "Fee/" .Or. "Transfond fee" $ mexplicatie .Or. "COMMISSION" $ Upper(mtextoriginal) Replace tip_2 With "COM", explicatie With "Comision" Else Replace explicatie With mexplicatie Endif Endif Endif Endcase Replace original With mtextoriginal Enddo Fclose(lnfilehandle) Endfunc Function xlsGeneral Lparameters pselectedfile Local I, mnrstart, mcf, mtert, mexplicatie, mtipimport, mdataextras Local oexcel As "Excel.Application" Local lcData, lcValue, loEx as Exception, llXLS, llXLSX *:Global jj, mcolcredit, mcoldata, mcoldebit, mcolexplicatie, mcontorinregistrari, mcredit, mdata *:Global mdataimp, mdatatest, mdebit, mexplicatie1, minceput, mlfinal, mlungime, mnrdoc, mnrdoctest *:Global mpozsrl, mpozstart1, mpozstart2, msrl, msuma, msumac, msumad, mtext1, mtextoriginal *:Global mtexttert, oexcelapp, oworkbook mtipimport = "" lcMesajEroare = "" Create Cursor C_TMP_I (data_t C (10), detalii C (250), data_v C (10), debit C (15), credit C (15), cf C (13), tert C (120), nr C (16), iban C (24), comision N (15, 2), documente C(250), comenzi C(250)) * Pentru llXLSX nu folosesc automatizare Microsoft Excel lcDBF = '' IF LOWER(JUSTEXT(m.pselectedfile)) = 'xlsx' llXLS = .F. llXLSX = .T. Create Cursor cXLSXTmp(mfield1 M null,mfield2 M null,mfield3 M null,mfield4 M null,mfield5 M null,mfield6 M null,; mfield7 M null,mfield8 M null,mfield9 M null,mfield10 M null,mfield11 M null,mfield12 M null,mfield13 M null,; mfield14 M null,mfield15 M null,mfield16 M null,mfield17 M null,mfield18 M null,mfield19 M null,mfield20 M null,; mfield21 M null,mfield22 M null,mfield23 M null,mfield24 M null,mfield25 M null,mfield26 M null,mfield27 M null,; mfield28 M null,mfield29 M null,mfield30 M null) TRY * lcFileName,cCur,lcFFields,lnStartRows,lcSheet,llEmptyCells appendfromxlsx(m.pselectedfile,'cXLSXTmp','',1,'',.T.) GO TOP IN cXLSXTmp Catch To loEx lcMesajEroare = loEx.message ENDTRY IF RECCOUNT('cXLSXTmp') = 0 USE IN (SELECT('cXLSXTmp')) AMESSAGEBOX('Eroare la importul din fisier!' + IIF(!EMPTY(m.lcMesajEroare), CHR(13) + m.lcMesajEroare, ""), 0 + 48, 'Atentie!') Return .F. ENDIF ELSE Try oexcel = Createobject("Excel.Application") Catch To loEx * ENDTRY If Vartype(oexcel) <> "O" AMESSAGEBOX( 'Nu aveti instalat Microsoft Excel!', 0 + 48, 'Atentie!') Return .F. Endif oexcel.Visible = .T. oexcel.sheetsinnewworkbook = 1 oworkbook = oexcel.workbooks.Open(pselectedfile) oexcelapp = oexcel.Application llXLS = .T. llXLSX = .F. ENDIF && !m.llXLSX mnrstart = 0 Do Case CASE m.llXLSX AND (LOWER(ALLTRIM(cXLSXTmp.mfield1)) = "payout date") * Import EMAG din XLSX mtipimport = "eMag" INSERT INTO C_TMP_I(data_t, data_v, debit, credit, nr, tert, comenzi) ; SELECT CAST(mfield1 as C(10)) as data_t, CAST(mfield1 as C(10)) as data_v, CAST("" as C(15)) as debit, ; CAST(mfield17 as C(15)) as credit, CAST(mfield9 as C(16)) as nr, CAST(mfield12 as C(120)) as tert, CAST(mfield9 as C(250)) as comenzi ; FROM cXLSXTmp ; WHERE RECNO() > 1 Case m.llXLSX AND (LEFT(LOWER(ALLTRIM(cXLSXTmp.mfield1)),3) = "gls" OR ("referin"$lower(cXLSXTmp.mfield1) AND "colet"$lower(cXLSXTmp.mfield2))) * Import GLS din XLSX mtipimport = "GLS" mdataextras = "" SELECT cXLSXTmp SCAN lcValue = ALLTRIM(LOWER(mfield1)) Do Case Case "data tranferarii banilor:" $ m.lcValue Or "data transferarii banilor:" $ m.lcValue lcData = GetRegExp(m.lcValue, '\d{2}\.\d{2}\.\d{4}', 1) If !Empty(Ctod(m.lcData)) mdataextras = m.lcData Endif Case Inlist(Lower(Left(m.lcValue, 5)), "numar", "num�r") mnrstart = RECNO() Exit Endcase ENDSCAN If mnrstart = 0 Return Endif Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, comenzi) ; SELECT CAST(mfield4 as C(10)) as data_t, CAST(Iif(!Empty(mdataextras), mdataextras, mfield4) as C(10)) as data_v, ; CAST('' as C(15)) as debit, CAST(Iif(!EMPTY(NVL(mfield5, '')), mfield5, "") as C(15)) as credit, ; CAST(mfield7 as C(250)) as detalii, CAST(mfield2 as C(16)) as nr, CAST(ALLTRIM(mfield2) as C(250)) as comenzi ; FROM cXLSXTmp ; WHERE RECNO() > mnrstart AND !EMPTY(NVL(mfield2,'')) AND !EMPTY(NVL(mfield7,'')) UPDATE C_TMP_I SET tert = Upper(Left(detalii, At(" ", detalii))) WHERE " " $ Alltrim(detalii) AND EMPTY(NVL(tert,'')) UPDATE C_TMP_I SET tert = Upper(Left(detalii, At(" RO-", detalii))) WHERE " RO-" $ Alltrim(detalii) AND EMPTY(NVL(tert,'')) Case m.llXLSX AND (LEFT(LOWER(ALLTRIM(cXLSXTmp.mfield1)),14) = "orasdestinatar") AND (LEFT(LOWER(ALLTRIM(cXLSXTmp.mfield2)),8) = "data awb") * Import FAN Courier din XLSX mtipimport = "FAN" mdataextras = "" mnrstart = 1 Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, comenzi) ; SELECT CAST(mfield2 as C(10)) as data_t, CAST(mfield2 as C(10)) as data_v, ; CAST('' as C(15)) as debit, CAST(Iif(!EMPTY(NVL(mfield3, '')), mfield3, "") as C(15)) as credit, ; CAST(mfield6 as C(250)) as detalii, CAST(mfield4 as C(16)) as nr, CAST(ALLTRIM(mfield4) as C(250)) as comenzi ; FROM cXLSXTmp ; WHERE RECNO() > mnrstart AND !EMPTY(NVL(mfield3,'')) AND !EMPTY(NVL(mfield6,'')) SELECT C_TMP_I SCAN FOR " CUI " $ UPPER(detalii) OR " CUI:" $ UPPER(detalii) mcf = getdigitsfromstring(C_TMP_I.detalii, 4, 1, ".") SELECT C_TMP_I IF !EMPTY(mcf) REPLACE cf WITH m.mcf ENDIF ENDSCAN UPDATE C_TMP_I SET tert = Upper(detalii) WHERE !" CUI " $ UPPER(detalii) AND !" CUI:" $ UPPER(detalii) UPDATE C_TMP_I SET tert = Upper(Left(detalii, At(" CUI", detalii))) WHERE EMPTY(NVL(TERT, '')) AND " CUI" $ UPPER(detalii) && CIOBANU ANAMARIA-CRISTINA CUI 33930204 L Case m.llXLS AND (Type( "oExcelApp.Cells(1,1).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(1, 1).Value, 11)) = "payout date") * automatizare Excel pentru fisier EMAG XLSX * Nu se intra pe ramura aceasta pentru ca intra pe importul fara automatizare mtipimport = "eMag" I = 2 Do While !Isnull(oexcelapp.cells(I, 1).Value) .And. !Empty(oexcelapp.cells(I, 1).Value) Insert Into C_TMP_I (data_t, data_v, debit, credit, nr, tert) Values (oexcelapp.cells(I, 1).Value, oexcelapp.cells(I, 1).Value, "", Str(oexcelapp.cells(I, 17).Value, 15, 2), Alltrim(Str(oexcelapp.cells(I, 9).Value, 16, 0)), Alltrim(oexcelapp.cells(I, 12).Value)) I = I + 1 ENDDO Case m.llXLS AND Type( "oExcelApp.Cells(1,1).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(1, 1).Value, 3)) = "gls" * automatizare Excel pentru fisier GSL XLS mtipimport = "GLS" I = 1 mdataextras = "" For I = 1 To 100 lcValue = Alltrim(Lower(Transform(oexcelapp.cells(I, 1).Value))) Do Case Case "data tranferarii banilor:" $ m.lcValue Or "data transferarii banilor:" $ m.lcValue lcData = GetRegExp(m.lcValue, '\d{2}\.\d{2}\.\d{4}', 1) If !Empty(Ctod(m.lcData)) mdataextras = m.lcData Endif *!* If !Empty(Ctod(Substr(oexcelapp.cells(i, 1).Value, 27, 10))) *!* mdataextras = Substr(oexcelapp.cells(i, 1).Value, 27, 10) *!* Endif *!* CASE "cont bancar nr.:" $ m.lcValue *!* This.cIBAN = UPPER(ALLTRIM(SUBSTR(m.lcValue, 17))) Case Inlist(Lower(Left(m.lcValue, 5)), "numar", "num�r") mnrstart = I Exit Endcase Endfor If mnrstart = 0 Return Endif I = mnrstart + 1 Do While !Isnull(oexcelapp.cells(I, 2).Value) .And. !Empty(oexcelapp.cells(I, 2).Value) If !Isnull(oexcelapp.cells(I, 7).Value) Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, documente) ; Values (oexcelapp.cells(I, 4).Value, ; Iif( !Empty(mdataextras), mdataextras, oexcelapp.cells(I, 4).Value), "", ; Iif( !Isnull(oexcelapp.cells(I, 5).Value), Str(oexcelapp.cells(I, 5).Value, 15, 2), ""), ; oexcelapp.cells(I, 7).Value, ; Alltrim(Str(oexcelapp.cells(I, 2).Value)), ; Alltrim(Transform(oexcelapp.cells(I, 1).Value))) If " " $ Alltrim(C_TMP_I.detalii) Replace tert With Upper(Left(C_TMP_I.detalii, At(" ", C_TMP_I.detalii))) Endif Endif I = I + 1 ENDDO Case m.llXLS AND (Type( "oExcelApp.Cells(6,14).Value" ) = "C" .And. Upper(Left(oexcelapp.cells(6, 14).Value, 11)) = "EXTRAS CONT") mtipimport = "ProCredit" I = 44 Do While !Isnull(oexcelapp.cells(I, 10).Value) .And. !Empty(oexcelapp.cells(I, 10).Value) msumad = oexcelapp.cells(I, 19).Value msumac = oexcelapp.cells(I, 21).Value mdata = oexcelapp.cells(I, 10).Value mexplicatie = oexcelapp.cells(I, 13).Value If !Isnull(mexplicatie) mtert = "" If " SRL " $ mexplicatie .Or. " SA " $ mexplicatie If " SRL " $ mexplicatie msrl = " SRL" Else msrl = " SA " Endif mpozsrl = At(msrl, mexplicatie) + 4 mpozstart1 = At(" ", mexplicatie, 2) + 1 mpozstart2 = At(" ", mexplicatie, 3) + 1 If getnumberincrement(Substr(mexplicatie, mpozstart1, mpozstart2 - mpozstart1)) > 0 mpozstart1 = mpozstart2 Endif If mpozsrl - mpozstart1 > 0 mtert = Substr(mexplicatie, mpozstart1, mpozsrl - mpozstart1) mexplicatie = Substr(mexplicatie, mpozsrl + 1, 150) Endif Endif Insert Into C_TMP_I (data_t, data_v, debit, credit, nr, tert, detalii, iban) Values (mdata, mdata, Iif( !Isnull(msumad), msumad, ""), Iif( !Isnull(msumac), msumac, ""), "", mtert, mexplicatie, getibanfromstring(mexplicatie, 1)) Endif I = I + 1 Enddo Case m.llXLS AND (Type( "oExcelApp.Cells(2,2).Value" ) = "C" .And. Upper(Left(oexcelapp.cells(2, 2).Value, 15)) = "PATRIA BANK S.A") mtipimport = "Patria" I = 35 mcontorinregistrari = 1 Do While mcontorinregistrari <= 10 msumad = oexcelapp.cells(I, 16).Value msumac = oexcelapp.cells(I, 21).Value mdata = oexcelapp.cells(I, 4).Value mexplicatie = oexcelapp.cells(I, 9).Value If !Isnull(mdata) Insert Into C_TMP_I (data_t, data_v, debit, credit, nr, tert, detalii) Values (mdata, mdata, Iif( !Isnull(msumad), msumad, ""), Iif( !Isnull(msumac), msumac, ""), "", "", mexplicatie) mcontorinregistrari = 1 Else mcontorinregistrari = mcontorinregistrari + 1 Endif I = I + 1 Enddo Case m.llXLS AND (Type( "oExcelApp.Cells(5,1).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(5, 1).Value, 20)) = "soldul depus �nainte") mtipimport = "Viva" I = 6 Do While !Isnull(oexcelapp.cells(I, 1).Value) .And. !Empty(oexcelapp.cells(I, 1).Value) msuma = oexcelapp.cells(I, 5).Value mdata = Dtoc(oexcelapp.cells(I, 1).Value) Insert Into C_TMP_I (data_t, data_v, debit, credit, nr, tert) Values (mdata, mdata, Iif(msuma > 0, Str(msuma, 15, 2), ""), Iif(msuma < 0, Str(msuma, 15, 2), ""), "", Substr(oexcelapp.cells(I, 3).Value, At(" - ", oexcelapp.cells(I, 3).Value) + 3, 100)) I = I + 1 Enddo Case m.llXLS AND (Type( "oExcelApp.Cells(1,1).Value" ) = "C" .And. (Lower(Left(oexcelapp.cells(1, 1).Value, 15)) = "daily statement" .Or. Lower(Left(oexcelapp.cells(1, 1).Value, 17)) = "account statement")) mtipimport = "PNB" I = 12 Do While !Isnull(oexcelapp.cells(I, 1).Value) .And. !Empty(oexcelapp.cells(I, 1).Value) .And. Type( "oExcelApp.Cells(i,5).Value" ) = "N" Insert Into C_TMP_I (data_t, data_v, detalii) Values (oexcelapp.cells(I, 1).Value, oexcelapp.cells(I, 2).Value, Alltrim(oexcelapp.cells(I, 3).Value)) If oexcelapp.cells(I, 5).Value < 0 Replace debit With Alltrim(Str(oexcelapp.cells(I, 5).Value, 15, 2)) Else Replace credit With Alltrim(Str(oexcelapp.cells(I, 5).Value, 15, 2)) Endif If oexcelapp.cells(I, 4).Value = "TRF" mlfinal = At( " Bank reference", oexcelapp.cells(I, 3).Value) minceput = At( " ", oexcelapp.cells(I, 3).Value, 3) If mlfinal > 0 .And. minceput > 0 Replace tert With Substr(oexcelapp.cells(I, 3).Value, minceput + 1, mlfinal - minceput) Endif Endif Replace iban With getibanfromstring(oexcelapp.cells(I, 3).Value, 1) Replace cf With getdigitsfromstring(oexcelapp.cells(I, 3).Value, 4, 1, ".") I = I + 1 Enddo Case m.llXLS AND Type( "oExcelApp.Cells(1,1).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(1, 1).Value, 22)) = "nume client / companie" mtipimport = "SameDay" oexcelapp = oexcel.activeworkbook.sheets(2) I = 2 If Lower(Left(oexcelapp.cells(1, 9).Value, 18)) = "ramburs transferat" Do While !Isnull(oexcelapp.cells(I, 11).Value) .And. !Empty(oexcelapp.cells(I, 11).Value) Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, tert) Values (oexcelapp.cells(I, 10).Value, oexcelapp.cells(I, 11).Value, "", Iif( !Isnull(oexcelapp.cells(I, 8).Value), Str(oexcelapp.cells(I, 8).Value, 15, 2), ""), Alltrim(oexcelapp.cells(I, 3).Value) + " " + Alltrim(oexcelapp.cells(I, 4).Value) + " " + Alltrim(oexcelapp.cells(I, 5).Value), Alltrim(oexcelapp.cells(I, 1).Value), Alltrim(oexcelapp.cells(I, 2).Value)) I = I + 1 Enddo Else Do While !Isnull(oexcelapp.cells(I, 10).Value) .And. !Empty(oexcelapp.cells(I, 10).Value) Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, tert) Values (oexcelapp.cells(I, 9).Value, oexcelapp.cells(I, 10).Value, "", Iif( !Isnull(oexcelapp.cells(I, 8).Value), Str(oexcelapp.cells(I, 8).Value, 15, 2), ""), Alltrim(oexcelapp.cells(I, 3).Value) + " " + Alltrim(oexcelapp.cells(I, 4).Value) + " " + Alltrim(oexcelapp.cells(I, 5).Value), Alltrim(oexcelapp.cells(I, 1).Value), Alltrim(oexcelapp.cells(I, 2).Value)) I = I + 1 Enddo Endif Case m.llXLSX AND (LEFT(LOWER(ALLTRIM(cXLSXTmp.mfield1)),3) = "awb") AND (LEFT(LOWER(ALLTRIM(cXLSXTmp.mfield2)),15) = "nume destinatar") * Import SameDay din XLSX mtipimport = "SameDay" mdataextras = "" mnrstart = 1 Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, comenzi, tert) ; SELECT CAST(mfield9 as C(10)) as data_t, CAST(mfield10 as C(10)) as data_v, ; CAST('' as C(15)) as debit, CAST(Iif(!EMPTY(NVL(mfield8, '')), mfield8, "") as C(15)) as credit, ; CAST(ALLTRIM(NVL(mfield2, '')) + ' ' + ALLTRIM(NVL(mfield3, '')) + ' ' + ALLTRIM(NVL(mfield4, '')) as C(250)) as detalii, CAST(mfield1 as C(16)) as nr, CAST(ALLTRIM(mfield1) as C(250)) as comenzi, ; CAST(mfield2 as C(100)) as tert ; FROM cXLSXTmp ; WHERE RECNO() > mnrstart AND !EMPTY(NVL(mfield8,'')) AND !EMPTY(NVL(mfield2,'')) Case m.llXLS AND Type( "oExcelApp.Cells(1,1).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(1, 1).Value, 10)) = "merchantid" mtipimport = "EuPlatesc" I = 2 Do While !Isnull(oexcelapp.cells(I, 10).Value) .And. !Empty(oexcelapp.cells(I, 10).Value) mdataimp = "" mdatatest = oexcelapp.cells(I, 10).Value Do Case Case Type("mDataTest") = "T" mdataimp = Dtoc(mdatatest) Case Type("mDataTest") = "D" mdataimp = Left(Ttoc(mdatatest), 10) Otherwise mdataimp = mdatatest Endcase mnrdoc = "" mnrdoctest = oexcelapp.cells(I, 2).Value If Type("mNrDocTest") = "N" mnrdoc = Alltrim(Str(mnrdoctest, 15, 0)) Else mnrdoc = mnrdoctest Endif Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, tert, comision) Values (mdataimp, mdataimp, Iif( !Isnull(oexcelapp.cells(I, 11).Value), Alltrim(Str(oexcelapp.cells(I, 11).Value, 15, 2)), ""), Iif( !Isnull(oexcelapp.cells(I, 6).Value), Alltrim(Str(oexcelapp.cells(I, 6).Value, 15, 2)), ""), Alltrim(oexcelapp.cells(I, 3).Value), mnrdoc, Iif( !Isnull(oexcelapp.cells(I, 4).Value), Alltrim(oexcelapp.cells(I, 4).Value), ""), Iif( !Isnull(oexcelapp.cells(I, 13).Value), oexcelapp.cells(I, 13).Value, 0)) I = I + 1 Enddo Case m.llXLS AND Type( "oExcelApp.Cells(1,1).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(1, 1).Value, 13)) = "expeditie tur" mtipimport = "Cargus" I = 3 Do While !Isnull(oexcelapp.cells(I, 12).Value) .And. !Empty(oexcelapp.cells(I, 12).Value) Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, tert) Values (Dtoc(oexcelapp.cells(I, 9).Value), Dtoc(oexcelapp.cells(I, 12).Value), "", Iif( !Isnull(oexcelapp.cells(I, 11).Value), Str(oexcelapp.cells(I, 11).Value, 15, 2), ""), "Data " + Dtoc(oexcelapp.cells(I, 9).Value) + " Nr chit. " + Alltrim(oexcelapp.cells(I, 10).Value), Alltrim(oexcelapp.cells(I, 13).Value), Alltrim(oexcelapp.cells(I, 5).Value)) I = I + 1 Enddo Case m.llXLS AND Type( "oExcelApp.Cells(1,1).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(1, 1).Value, 22)) = "chitanta cont colector" mtipimport = "Cargus" I = 1 For I = 1 To 100 If oexcelapp.cells(I, 1).Value = "Data" mnrstart = I Exit Endif Endfor If mnrstart = 0 Return Endif I = mnrstart + 1 If Type( "oExcelApp.Cells(i,8).Value" ) = "T" Do While !Isnull(oexcelapp.cells(I, 8).Value) .And. !Empty(oexcelapp.cells(I, 8).Value) Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, tert) Values (Dtoc(oexcelapp.cells(I, 1).Value), Dtoc(oexcelapp.cells(I, 8).Value), "", Iif( !Isnull(oexcelapp.cells(I, 3).Value), Str(oexcelapp.cells(I, 3).Value, 15, 2), ""), "Data " + Dtoc(oexcelapp.cells(I, 1).Value) + " Serie chit. " + Alltrim(oexcelapp.cells(I, 2).Value) + " Serie deco. " + Alltrim(oexcelapp.cells(I, 5).Value), Alltrim(oexcelapp.cells(I, 9).Value), Alltrim(oexcelapp.cells(I, 7).Value)) I = I + 1 Enddo Else Do While !Isnull(oexcelapp.cells(I, 9).Value) .And. !Empty(oexcelapp.cells(I, 9).Value) Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, tert) Values (Dtoc(oexcelapp.cells(I, 1).Value), Dtoc(oexcelapp.cells(I, 9).Value), "", Iif( !Isnull(oexcelapp.cells(I, 3).Value), Str(oexcelapp.cells(I, 3).Value, 15, 2), ""), "Data " + Dtoc(oexcelapp.cells(I, 1).Value) + " Serie chit. " + Alltrim(oexcelapp.cells(I, 2).Value) + " Serie deco. " + Alltrim(oexcelapp.cells(I, 6).Value), Alltrim(oexcelapp.cells(I, 10).Value), Alltrim(oexcelapp.cells(I, 8).Value)) I = I + 1 Enddo Endif Case m.llXLSX AND ((LEFT(LOWER(ALLTRIM(cXLSXTmp.mfield1)),8) = "perioada") OR (LEFT(LOWER(ALLTRIM(cXLSXTmp.mfield1)),20) = "data generare extras")) * Import RAIFFEISEN din XLSX SELECT cXLSXTmp LOCATE FOR 'RAIFFEISEN'$mfield2 IF !FOUND() AMessagebox( "Format fisier incorect.", 16, "Import extrase" ) Return .F. ENDIF LOCATE FOR ATC('Cod IBAN:', mfield1) > 0 IF FOUND() This.cIBAN = UPPER(ALLTRIM(mfield2)) ENDIF mtipimport = "RAIFFEISEN" mdataextras = "" mnrstart = 18 Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, nr, comenzi) ; SELECT CAST(mfield1 as C(10)) as data_t, CAST(mfield2 as C(10)) as data_v, ; CAST(Iif(!EMPTY(NVL(mfield3, '')), mfield3, "") as C(15)) as debit, CAST(Iif(!EMPTY(NVL(mfield4, '')), mfield4, "") as C(15)) as credit, ; CAST(mfield12 as C(250)) as detalii, CAST(mfield9 as C(120)) as tert, CAST(ALLTRIM(mfield11) as C(24)) as iban ; FROM cXLSXTmp ; WHERE RECNO() > mnrstart AND !EMPTY(NVL(mfield1,'')) AND !EMPTY(NVL(mfield2,'')) SELECT C_TMP_I SCAN FOR " CUI " $ UPPER(detalii) OR " CUI:" $ UPPER(detalii) mcf = getdigitsfromstring(C_TMP_I.detalii, 4, 1, ".") SELECT C_TMP_I IF !EMPTY(mcf) REPLACE cf WITH m.mcf ENDIF ENDSCAN Case m.llXLS AND (Type( "oExcelApp.Cells(1,1).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(1, 1).Value, 21)) = "data generare extras:" .Or. (Type( "oExcelApp.Cells(2,1).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(2, 1).Value, 21)) = "data generare extras:" )) mtipimport = "RAIFFEISEN" I = 1 For I = 1 To 100 If Lower(Left(oexcelapp.cells(I, 1).Value, 17)) = "data inregistrare" mnrstart = I Exit Endif Endfor If mnrstart = 0 Return Endif I = mnrstart + 2 Do While !Isnull(oexcelapp.cells(I, 2).Value) .And. !Empty(oexcelapp.cells(I, 2).Value) If !Isnull(oexcelapp.cells(I, 12).Value) Insert Into C_TMP_I (data_t, data_v, debit, credit, detalii, cf, tert, iban, nr) Values (oexcelapp.cells(I, 1).Value, oexcelapp.cells(I, 2).Value, Iif( !Isnull(oexcelapp.cells(I, 3).Value), Str(oexcelapp.cells(I, 3).Value, 15, 2), ""), Iif( !Isnull(oexcelapp.cells(I, 4).Value), Str(oexcelapp.cells(I, 4).Value, 15, 2), ""), oexcelapp.cells(I, 12).Value, Iif( !Isnull(oexcelapp.cells(I, 6).Value), oexcelapp.cells(I, 6).Value, ""), Iif( !Isnull(oexcelapp.cells(I, 9).Value), oexcelapp.cells(I, 9).Value, ""), Iif( !Isnull(oexcelapp.cells(I, 11).Value), oexcelapp.cells(I, 11).Value, ""), Iif( !Isnull(oexcelapp.cells(I, 5).Value), oexcelapp.cells(I, 5).Value, "")) Endif I = I + 1 Enddo CASE m.llXLS mtipimport = "LIBRA" I = 1 For I = 1 To 100 If Type( "oExcelApp.Cells(i,2).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(I, 2).Value, 4)) = "data" mnrstart = I Exit Endif Endfor If mnrstart = 0 Messagebox( "Format XLS incorect.", 16, "Import extrase" ) Return .F. Endif I = mnrstart + 1 mcoldata = 0 mcolexplicatie = 0 mcoldebit = 0 mcolcredit = 0 For jj = 1 To 18 If mcoldata = 0 .And. Type( "oExcelApp.Cells(mNrStart,jj).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(mnrstart, jj).Value, 4)) = "data" mcoldata = jj Loop Endif If jj > mcoldata .And. mcoldata <> 0 .And. mcolexplicatie = 0 .And. Type( "oExcelApp.Cells(mNrStart,jj).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(mnrstart, jj).Value, 9)) = "descriere" mcolexplicatie = jj Loop Endif If jj > mcolexplicatie .And. mcoldata <> 0 .And. mcolexplicatie <> 0 .And. mcoldebit = 0 .And. Type( "oExcelApp.Cells(mNrStart,jj).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(mnrstart, jj).Value, 5)) = "debit" mcoldebit = jj Loop Endif If jj > mcoldebit .And. mcoldata <> 0 .And. mcolexplicatie <> 0 .And. mcoldebit <> 0 .And. mcolcredit = 0 .And. Type( "oExcelApp.Cells(mNrStart,jj).Value" ) = "C" .And. Lower(Left(oexcelapp.cells(mnrstart, jj).Value, 6)) = "credit" mcolcredit = jj Endif Endfor If mcoldata = 0 .Or. mcolexplicatie = 0 .Or. mcoldebit = 0 .Or. mcolcredit = 0 Messagebox( "Format XLS incorect.", 16, "Import extrase" ) Return .F. Endif Do While !Isnull(oexcelapp.cells(I, mcoldata).Value) .And. !Empty(oexcelapp.cells(I, mcoldata).Value) If Type( "oExcelApp.Cells(i,mColDebit).Value" ) = "N" mdebit = Alltrim(Str(oexcelapp.cells(I, mcoldebit).Value, 15, 2)) Else mdebit = Alltrim(oexcelapp.cells(I, mcoldebit).Value) Endif If Type( "oExcelApp.Cells(i,mColCredit).Value" ) = "N" mcredit = Alltrim(Str(oexcelapp.cells(I, mcolcredit).Value, 15, 2)) Else mcredit = Alltrim(oexcelapp.cells(I, mcolcredit).Value) Endif If !Isnull(mdebit) .And. !Isnull(mcredit) Insert Into C_TMP_I (data_t, detalii, data_v, debit, credit) Values (oexcelapp.cells(I, mcoldata).Value, oexcelapp.cells(I, mcolexplicatie).Value, oexcelapp.cells(I, mcoldata).Value, mdebit, mcredit) Endif I = I + 1 ENDDO OTHERWISE AMessagebox( "Format fisier incorect.", 16, "Import extrase" ) Return .F. ENDCASE USE IN (SELECT('cXLSXTmp')) UPDATE C_TMP_I SET data_v = TRANSFORM(ExcelSerialNumber2Date(INT(VAL(data_v)))) WHERE !('.'$data_v OR '/'$data_v) UPDATE C_TMP_I SET data_t = TRANSFORM(ExcelSerialNumber2Date(INT(VAL(data_t)))) WHERE !('.'$data_v OR '/'$data_t) Select C_TMP_I Scan For !Empty(data_v) Select c_iex Insert Into c_iex (Data, documente, comenzi) Values (setdategerman(C_TMP_I.data_v), C_TMP_I.documente, C_TMP_I.comenzi) If !Empty(C_TMP_I.debit) .And. Val(C_TMP_I.debit) <> 0 Replace tip With "D" msuma = This.setsuma(C_TMP_I.debit) Else Replace tip With "C" If mtipimport = "eMag" msuma = Val(C_TMP_I.credit) Else msuma = This.setsuma(C_TMP_I.credit) Endif Endif Replace suma With msuma mexplicatie = Alltrim(C_TMP_I.detalii) mexplicatie = Strtran(mexplicatie, " ", " ") mtert = "" mcf = "" Do Case Case LEFT(ALLTRIM(LOWER(NVL(mexplicatie,''))), 8) = "comision" OR ; 'comision-atm'$LOWER(NVL(mexplicatie,'')) OR ; 'comision procesare ridicare numerar'$LOWER(NVL(mexplicatie,'')) OR ; 'pachet izi'$LOWER(NVL(mexplicatie,'')) OR ; 'abonament'$LOWER(NVL(mexplicatie,'')) Replace tip_2 With This.cTipComisioane Case 'retragere de numerar'$ALLTRIM(LOWER(NVL(mexplicatie,''))) OR ; 'depunere de numerar'$ALLTRIM(LOWER(NVL(mexplicatie,''))) OR ; 'depunere numerar'$ALLTRIM(LOWER(NVL(mexplicatie,''))) OR ; 'retragere numerar'$ALLTRIM(LOWER(NVL(mexplicatie,''))) Replace tip_2 With This.cTipDepunere Case 'transfer intern'$ALLTRIM(LOWER(NVL(mexplicatie,''))) OR ; 'dob.dep'$ALLTRIM(LOWER(NVL(mexplicatie,''))) Replace tip_2 With This.cTipTransfer Otherwise Replace tip_2 With "" ENDCASE If "Detalii: " $ mexplicatie mexplicatie1 = Substr(mexplicatie, Atc( "Detalii: ", mexplicatie) + 9, 100) mtexttert = Left(mexplicatie, Atc( "Detalii: ", mexplicatie) - 1) Else mexplicatie1 = mexplicatie mtexttert = mexplicatie Endif If Empty(C_TMP_I.tert) If c_iex.tip = "D" .And. "beneficiar: " $ Lower(mtexttert) mtext1 = Substr(mtexttert, Atc( "Beneficiar: ", mtexttert) + 12, 60) mlungime = Min(Iif(Occurs( " RO", Upper(mtext1)) > 0, Atc( " RO", mtext1, Occurs( " RO", Upper(mtext1))), 60), Iif( "cont benef" $ Lower(mtext1), Atc( "Cont benef", mtext1), 60), Iif("platitor" $ Lower(mtext1), Atc("Platitor", mtext1), 60)) mlungime = Max(mlungime, 7) - 1 mtert = Left(mtext1, mlungime) Else If "platitor: " $ Lower(mtexttert) mtext1 = Substr(mtexttert, Atc( "Platitor: ", mtexttert) + 10, 60) mlungime = Iif(Occurs( " RO", Upper(mtext1)) > 0, Atc( " RO", mtext1, Occurs( " RO", Upper(mtext1))), 60) mlungime = Max(mlungime, 7) - 1 mtert = Left(mtext1, mlungime) Endif Endif Else mtert = Alltrim(Upper(C_TMP_I.tert)) Endif mcf = getdigitsfromstring(C_TMP_I.detalii, 13, 2, ".") If Empty(mcf) If Empty(C_TMP_I.cf) .And. !Inlist(mtipimport, "GLS", "FAN", "Cargus", "PNB", "eMAG", "SameDay", "Patria", "ProCredit") mcf = getdigitsfromstring(C_TMP_I.detalii, 4, 1, ".") Else mcf = Alltrim(C_TMP_I.cf) Endif Endif mtextoriginal = C_TMP_I.data_v + " " + Chr(13) + Alltrim(C_TMP_I.debit) + Alltrim(C_TMP_I.credit) + " " + Chr(13) + Alltrim(C_TMP_I.nr) + " " + Alltrim(C_TMP_I.cf) + Chr(13) + Alltrim(C_TMP_I.tert) + " " + Alltrim(C_TMP_I.iban) + " " + Chr(13) + Alltrim(C_TMP_I.detalii) + " " Replace tert With Upper(mtert), cf With mcf, explicatie With mexplicatie1, original With mtextoriginal, nr With C_TMP_I.nr, iban With C_TMP_I.iban If mtipimport = "eMag" .And. !Empty(c_iex.nr) Select match Locate For inf_suplm = Alltrim(c_iex.nr) If Found() Replace id_pi With c_iex.Id If Empty(c_iex.cod) .Or. c_iex.cod <> match.cod Replace cod With match.cod, tert With match.denumire In c_iex Endif Select match Replace achitat With c_iex.suma This.actsume() Replace asociat With 1 In c_iex Endif Endif Endscan Select data_v, Sum(comision) As comision From C_TMP_I Group By data_v Into Cursor C_COMISON Scan For comision > 0 Insert Into c_iex (Data, suma, tip, tip_2) Values (setdategerman(C_COMISON.data_v), C_COMISON.comision, "D", "COM") Endscan Use In (Select('C_TMP_I')) IF EMPTY(this.cIBAN) This.cIBAN = m.mtipimport ENDIF Endfunc * Procedure csvFirstBank Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'FirstBank' mtextoriginal = "" mfilestr = Filetostr(pselectedfile) mfilestr = Strtran(mfilestr, '=', '') If "Transaction History" $ mfilestr .Or. "Istoric Tranzac" $ mfilestr Create Cursor C_TMP_I (data_t C (10), data_v C (10), tip_op C (100), referinta C (200), explicatie C (200), suma C (15)) Else Create Cursor C_TMP_I (data_t C (10), data_v C (10), suma C (15), referinta C (200), tip_op C (100), explicatie C (200)) Endif Strtofile(mfilestr, m.gcTempPath + "FirstBankTMP.csv") Append From (m.gcTempPath + "FirstBankTMP.csv") Delimited With Character ";" Delete For Empty(Ctod(C_TMP_I.data_t)) Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_t)) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With This.setsuma(C_TMP_I.suma) Do Case Case "comis" $ Lower(C_TMP_I.tip_op) Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase mexplicatie = C_TMP_I.explicatie mtert = "" miban = "" If Occurs(",", mexplicatie) > 0 mtert = Upper(Left(mexplicatie, At(",", mexplicatie) - 1)) Endif miban = getibanfromstring(mexplicatie, 1) If !Empty(miban) mtert = Left(mexplicatie, At(miban, mexplicatie) - 1) mexplicatie = Substr(mexplicatie, At(miban, mexplicatie) + 25, 100) Endif Replace tert With mtert, iban With miban mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + C_TMP_I.suma + " " + Chr(13) + Alltrim(C_TMP_I.tip_op) + " " + Chr(13) + Alltrim(C_TMP_I.explicatie) Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Procedure csvOTP Lparameters pselectedfile Local mtextoriginal, mexplicatie, mtert, miban, mstarttert, mstartcont, mdataop This.cIBAN = 'OTP' mtextoriginal = "" Create Cursor C_TMP_I (detalii1 C (200), data_v C (10), data_op C (10), detalii2 C (200), debit C (15), credit C (15)) mfilestr = Filetostr(pselectedfile) mlen = Len(mfilestr) If Occurs('""', mfilestr) > 20 mfilestr = EliminVirguleDintreGhilimele(mfilestr, '""') mfilestr = Strtran(mfilestr, '"', '') Strtofile(mfilestr, m.gcTempPath + "OTPTMP.csv") Append From (m.gcTempPath + "OTPTMP.csv") Csv Else Append From (mSelectedFile) Csv Endif Scan For !Empty(data_op) Select c_iex mdataop = Substr(C_TMP_I.data_op, 7, 2) + "." + Substr(C_TMP_I.data_op, 5, 2) + "." + Substr(C_TMP_I.data_op, 1, 4) Insert Into c_iex (Data) Values (Ctod(mdataop)) mtert = "" miban = "" mstarttert = 0 mexplicatie = Alltrim(C_TMP_I.detalii2) If EMPTY(VAL(Alltrim(C_TMP_I.credit))) Replace tip With "D" msuma = Abs(Val(C_TMP_I.debit)) If "Ben:" $ C_TMP_I.detalii2 mstarttert = At("Ben:", mexplicatie) + 5 mstartcont = At("Cont:", mexplicatie) + 6 mtert = Substr(mexplicatie, mstarttert, mstartcont - mstarttert - 8) miban = Substr(mexplicatie, mstartcont, 24) Endif Else Replace tip With "C" msuma = Abs(Val(C_TMP_I.credit)) If "Platitor:" $ C_TMP_I.detalii2 mstarttert = At("Platitor:", mexplicatie) + 10 mstartcont = At("Cont:", mexplicatie) + 6 mtert = Substr(mexplicatie, mstarttert, mstartcont - mstarttert - 8) miban = Substr(mexplicatie, mstartcont, 24) Endif Endif Replace suma With msuma Do Case Case "comision" $ Lower(C_TMP_I.detalii2) Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase mtextoriginal = Alltrim(C_TMP_I.detalii1) + Chr(13) + Alltrim(C_TMP_I.data_op) + " " + Chr(13) + Iif(C_TMP_I.debit <> "0.00", Alltrim(C_TMP_I.debit), Alltrim(C_TMP_I.credit)) + " " + Chr(13) + Alltrim(C_TMP_I.detalii2) Replace nr With Alltrim(Str(Recno())), tert With Upper(mtert), explicatie With mexplicatie, original With mtextoriginal, iban With miban Endscan Endproc * Procedure xmlAsc Lparameters pselectedfile Local oxml, orootnode, orootnodecontext, orootnodecontmisc, ij, npass, onode, nnumlinii, nchildlen, mtextoriginal This.cIBAN = 'XML' mtextoriginal = "" oxml = Createobject('MSXML2.DomDocument') oxml.Async = .F. oxml.Load(pselectedfile) orootnode = oxml.documentelement If Isnull(orootnode) AMessagebox( "Fisier de XML invalid.", 16, "Eroare import extrase" ) Return Endif Do Case Case orootnode.nodename = "document" orootnodecontext = orootnode.childnodes.Item(2) If orootnodecontext.nodename <> "movements" Messagebox( "Format XML invalid.", 64, "Atentie...") Return Endif nnumliniicontext = orootnodecontext.childnodes.Length For ij = 0 To (nnumliniicontext - 1) orootnodecontmisc = orootnodecontext.childnodes.Item(ij) If orootnodecontmisc.nodename <> "movement" Loop Endif nnumlinii = orootnodecontmisc.childnodes.Length m.cf = "" m.tert = "" m.iban = "" m.suma = 0 m.explicatie = "" m.data = {} m.debit = "" m.credit = "" m.suma = "" m.original = "" For npass = 0 To (nnumlinii - 1) olinienode = orootnodecontmisc.childnodes.Item(npass) cvalue = olinienode.Text cparentname = olinienode.nodename Do Case Case cparentname == "ref" m.nr = cvalue Case cparentname == "value_date" m.data = setdategerman(cvalue) Case cparentname = "debit" m.debit = Val(cvalue) Case cparentname = "credit" m.credit = Val(cvalue) Case cparentname == "details" m.explicatie = cvalue Endcase If !Empty(cvalue) m.original = M.original + cvalue + Chr(13) Endif Endfor Select c_iex If m.data >= Ctod("01.01.2015") Insert Into c_iex (Data) Values (m.data) If m.credit = 0 m.suma = M.debit Replace tip With "D", ip With "I" In c_iex Else m.suma = M.credit Replace tip With "C", ip With "P" In c_iex Endif If "comision" $ Lower(m.explicatie) Replace tip_2 With "COM" In c_iex Endif If "in fav." $ M.explicatie mtext1 = Substr(m.explicatie, At( "in fav.", M.explicatie) + 8) mdouapuncte = At(":", mtext1) - 1 If mdouapuncte > 0 m.tert = Substr(mtext1, 1, mdouapuncte) Endif Endif If "Denumire Client:" $ M.explicatie mtext1 = Substr(m.explicatie, At( "Denumire Client:", M.explicatie) + 17) mvirgula = At(",", mtext1) - 1 If mvirgula > 0 m.tert = Substr(mtext1, 1, mvirgula) Endif Endif Gather Memvar Endif Endfor Case orootnode.nodename = "extras" orootnodecontext = orootnode.childnodes.Item(0) If orootnodecontext.nodename <> "cont_ext" AMessagebox( "Format XML invalid.", 64, "Atentie...") Return Endif nnumliniicontext = orootnodecontext.childnodes.Length For ij = 0 To (nnumliniicontext - 1) orootnodecontmisc = orootnodecontext.childnodes.Item(ij) If orootnodecontmisc.nodename <> "cont_misc" Loop Endif nnumlinii = orootnodecontmisc.childnodes.Length m.cf = "" m.tert = "" m.iban = "" m.suma = 0 m.explicatie = "" m.data = {} m.debit = "" m.credit = "" m.suma = "" m.original = "" For npass = 0 To (nnumlinii - 1) olinienode = orootnodecontmisc.childnodes.Item(npass) cvalue = olinienode.Text cparentname = olinienode.nodename Do Case Case cparentname == "nrdoc" m.nr = cvalue Case cparentname == "datadoc" m.data = setdategerman(cvalue) Case cparentname == "platitor" m.cf = Upper(cvalue) Case cparentname == "numepb" m.tert = Upper(cvalue) Case cparentname == "ibanbfpl" m.iban = Upper(cvalue) Case cparentname = "sumad" m.debit = Val(cvalue) Case cparentname = "sumac" m.credit = Val(cvalue) Case cparentname == "explicatii" m.explicatie = cvalue Endcase If !Empty(cvalue) m.original = M.original + cvalue + Chr(13) Endif Endfor Select c_iex If m.data >= Ctod("01.01.2015") Insert Into c_iex (Data) Values (m.data) If m.credit = 0 m.suma = M.debit Replace tip With "D", ip With "I" In c_iex Else m.suma = M.credit Replace tip With "C", ip With "P" In c_iex Endif If "comision" $ Lower(m.explicatie) Replace tip_2 With "COM" In c_iex Endif Gather Memvar Endif Endfor Otherwise AMessagebox( "Format XML invalid.", 64, "Atentie...") Endcase Endproc * Procedure csvAlpha Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'Alpha' mtextoriginal = "" Create Cursor C_TMP_I (data_v C (16), data_t C (16), explicatie C (250), referinta C (60), valuta C (3), suma C (15), tip C (2), valuta1 C (3), sold C (15)) Append From (pselectedfile) Delimited With Char ";" Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(Alltrim(C_TMP_I.data_t))) If Alltrim(C_TMP_I.tip) = "C" Replace tip With "C" Else Replace tip With "D" Endif Replace suma With This.setsuma(C_TMP_I.suma) mexplicatie = Alltrim(C_TMP_I.explicatie) Do Case Case "comision" $ Lower(mexplicatie) Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase miban = "" miban = getibanfromstring(mexplicatie, 1) mpoziban = 0 If miban = "RO" mpoziban = At(miban, mexplicatie) Endif mtert = "" mcf = "" If c_iex.tip = "C" If "PLATITOR: " $ mexplicatie mpoztertstart = At( "PLATITOR: ", mexplicatie) + 10 If mpoziban > mpoztertstart mtert1 = Alltrim(Substr(mexplicatie, mpoztertstart, mpoziban - mpoztertstart)) Else mtert1 = Alltrim(Substr(mexplicatie, mpoztertstart, 100)) Endif If "," $ mtert1 mtert = Left(mtert1, At( ",", mtert1) - 1) Else mtert = mtert1 Endif Endif Else If "BENEFICIAR: " $ mexplicatie mpoztertstart = At( "BENEFICIAR: ", mexplicatie) + 12 If (mpoziban - 9) > mpoztertstart mtert1 = Alltrim(Substr(mexplicatie, mpoztertstart, (mpoziban - 9) - mpoztertstart)) Else mtert1 = Alltrim(Substr(mexplicatie, mpoztertstart, 100)) Endif If "," $ mtert1 mtert = Left(mtert1, At( ",", mtert1) - 1) Else mtert = mtert1 Endif Endif Endif mexplicatiereal = "" If "END TO END " $ mexplicatie .Or. "URGENT " $ mexplicatie If "END TO END " $ mexplicatie mpoztertexplfin = At( "END TO END ", mexplicatie) - 1 Else mpoztertexplfin = At( "URGENT ", mexplicatie) - 1 Endif If "DETALII INCASARE: " $ mexplicatie mpoztertexplstart = At( "DETALII INCASARE: ", mexplicatie) + 18 mexplicatiereal = Alltrim(Substr(mexplicatie, mpoztertexplstart, mpoztertexplfin - mpoztertexplstart)) Else If "DETALII PLATA: " $ mexplicatie mpoztertexplstart = At( "DETALII PLATA: ", mexplicatie) + 15 mexplicatiereal = Alltrim(Substr(mexplicatie, mpoztertexplstart, mpoztertexplfin - mpoztertexplstart)) Else mexplicatiereal = mexplicatie Endif Endif Endif Replace tert With mtert, iban With miban, cf With mcf mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + C_TMP_I.suma + " " + Chr(13) + Alltrim(mexplicatie) Replace explicatie With mexplicatiereal, original With mtextoriginal Endscan Endproc * Procedure csvBCR Lparameters pselectedfile Local mtextoriginal, mfilestr, mlen, ij, mpas This.cIBAN = 'BCR' mtextoriginal = "" Create Cursor C_TMP_I (data_e C (10), ora_e C (6), data_i C (10), data_s C (10), valuta C (16), Curs C (16), Cont C (24), tip C (24), titular C (60), sold_i C (15), data_final C (10), ora_fin C (6), detalii C (250), referinta C (60), debit C (15), credit C (15), t_debit C (15), t_credit C (15), sold_f C (15), sume_b C (15), sold_d C (15), plafon C (15)) mfilestr = Filetostr(pselectedfile) If Occurs('""', mfilestr) >= 4 mfilestr = EliminVirguleDintreGhilimele(mfilestr, '""') Else mfilestr = EliminVirguleDintreGhilimele(mfilestr, '"') Endif mfilestr = Strtran(mfilestr, '"', '') Strtofile(mfilestr, m.gcTempPath + "BCRTMP.csv") Select C_TMP_I Append From (m.gcTempPath + "BCRTMP.csv") Csv Delete For Empty(Ctod(C_TMP_I.data_final)) Scan For !Empty(data_final) .And. !Empty(detalii) Select c_iex Insert Into c_iex (Data) Values (Ctod(C_TMP_I.data_final)) If EMPTY(VAL(Alltrim(C_TMP_I.credit))) Replace tip With "D", suma With This.setsuma(C_TMP_I.debit) Else Replace tip With "C", suma With This.setsuma(C_TMP_I.credit) Endif Do Case Case "comision " $ C_TMP_I.detalii .Or. "Operatiuni fara numerar" $ C_TMP_I.detalii Replace tip_2 With "COM" Case "rambursare automata" $ Lower(C_TMP_I.detalii) .Or. "tragere automata" $ Lower(C_TMP_I.detalii) Replace tip_2 With "XXX" Otherwise Replace tip_2 With "TRF" Endcase mnr = Alltrim(Substr(C_TMP_I.referinta, At("Ordin de plata ", C_TMP_I.referinta) + 15, 100)) Replace nr With Left(mnr, At(".", mnr) - 4) mtert = "" mcf = "" If tip = "C" If "Ordonator: " $ C_TMP_I.detalii mtert = Alltrim(Substr(C_TMP_I.detalii, At( "Ordonator: ", C_TMP_I.detalii) + 11, 100)) Endif If "Platitor: " $ C_TMP_I.detalii mtert = Alltrim(Substr(C_TMP_I.detalii, At( "Platitor: ", C_TMP_I.detalii) + 10, 100)) Endif mcf = Alltrim(Str(Val(Alltrim(Substr(C_TMP_I.detalii, At("CODFISC ", C_TMP_I.detalii) + 8, 13))), 13, 0)) Else If "Ordonator: " $ C_TMP_I.detalii mtert = Alltrim(Substr(C_TMP_I.detalii, At( "Ordonator: ", C_TMP_I.detalii) + 11, 100)) Endif If "Beneficiar: " $ C_TMP_I.detalii mtert = Alltrim(Substr(C_TMP_I.detalii, At( "Beneficiar: ", C_TMP_I.detalii) + 12, 100)) Endif If "CODFISC" $ C_TMP_I.detalii mcf = Alltrim(Str(Val(Alltrim(Substr(C_TMP_I.detalii, At( "CODFISC ", C_TMP_I.detalii, Occurs("CODFISC", C_TMP_I.detalii)) + 8, 13))), 13, 0)) Endif Endif If ";" $ mtert mtert = Left(mtert, At(";", mtert) - 1) Else mlen = Len(mtert) mspace = mlen For ij = 1 To mlen If Substr(mtert, ij, 1) == " " mspace = ij Endif If Isdigit(Substr(mtert, ij, 1)) Exit Endif Endfor mtert = Left(mtert, mspace - 1) Endif Replace tert With mtert, cf With Iif(mcf <> "0 ", mcf, "") mexplicatie = Alltrim(Substr(C_TMP_I.detalii, At("Detalii: ", C_TMP_I.detalii) + 9, 100)) mtextoriginal = C_TMP_I.data_final + Chr(13) + Alltrim(C_TMP_I.titular) + Chr(13) + Alltrim(C_TMP_I.Cont) + Chr(13) + Alltrim(C_TMP_I.detalii) + Chr(13) + Alltrim(C_TMP_I.referinta) + Chr(13) + Alltrim(C_TMP_I.debit) + " " + Alltrim(C_TMP_I.credit) Replace explicatie With mexplicatie, original With mtextoriginal, iban With getibanfromstring(C_TMP_I.detalii, 1) Endscan Endproc * Procedure csvBCR2 Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'BCR' mtextoriginal = "" Create Cursor C_TMP_I (c1 C (4), c2 C (24), c3 C (24), data_v C (10), cod_valuta C (24), c6 C (10), c7 C (10), c8 C (24), c9 C (24), suma C (24), tip C (3), c12 C (24), c13 C (24), tert C (100), c15 C (24), c16 C (2), c17 C (4), c18 C (24), cf C (100), c20 C (100), detalii C (100), detalii2 C (60), detalii3 C (60), detalii4 C (100), detalii5 C (100), c26 C (2), c27 C (2), c28 C (24)) Append From (mSelectedFile) Delimited With Char ";" Locate For !Empty(data_v) If Eof() Use In C_TMP_I Create Cursor C_TMP_I (c1 C (4), c2 C (24), c3 C (24), data_v C (10), cod_valuta C (24), c6 C (10), c7 C (10), c8 C (24), suma C (24), tip C (3), c12 C (24), c13 C (24), tert C (100), c15 C (24), c16 C (2), c17 C (4), c18 C (24), c18_1 C (24), c18_2 C (24), cf C (100), detalii C (100), detalii2 C (24), detalii3 C (60), detalii4 C (100), detalii5 C (100), c26 C (2), c27 C (2), c28 C (24)) Append From (mSelectedFile) Delimited With Character, Endif Scan For !Empty(data_v) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_v)) msuma = Thisform.setsuma(C_TMP_I.suma) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With msuma Do Case Case "com" $ Lower(C_TMP_I.tip) Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase mexplicatie = Alltrim(C_TMP_I.detalii) mexplicatie = Strtran(mexplicatie, " ", " ") If "Detalii: " $ C_TMP_I.detalii mexplicatie = Substr(mexplicatie, At( "Detalii: ", mexplicatie) + 9, 100) Endif miban = getibanfromstring(Alltrim(C_TMP_I.detalii4) + C_TMP_I.detalii5, 1) If "CODFISC" $ C_TMP_I.detalii5 mcf = getdigitsfromstring(Substr(C_TMP_I.detalii5, At("CODFISC", C_TMP_I.detalii5) + 8, 13), 4, 1, ".") Else mcf = "" Endif Replace tert With Upper(C_TMP_I.tert), cf With mcf, iban With miban mtextoriginal = C_TMP_I.data_v + " " + C_TMP_I.tip + " " + Chr(13) + Alltrim(C_TMP_I.suma) + " " + Chr(13) + Alltrim(C_TMP_I.tert) + " " + " " + Chr(13) + Alltrim(C_TMP_I.detalii) + Alltrim(C_TMP_I.detalii2) + Alltrim(C_TMP_I.detalii3) + Alltrim(C_TMP_I.detalii4) + Alltrim(C_TMP_I.detalii5) Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Procedure csvBRD Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'BRD' mtextoriginal = "" Create Cursor C_TMP_I (c1 C (4), c2 C (24), c3 C (24), data_v C (10), cod_valuta C (24), c6 C (10), c7 C (10), c8 C (24), c9 C (24), suma C (24), tip C (3), c12 C (24), c13 C (24), c14 C (100), c15 C (24), c16 C (2), c17 C (4), c18 C (24), tert C (100), cf C (100), detalii C (100), detalii2 C (100), detalii3 C (100), detalii4 C (100), c25 C (24), c26 C (2), c27 C (2), iban C (24)) Append From (mSelectedFile) Delimited With Char ";" Locate For !Empty(data_v) If Eof() Use In C_TMP_I Create Cursor C_TMP_I (c1 C (4), c2 C (24), c3 C (24), data_v C (10), cod_valuta C (24), c6 C (10), c7 C (10), c8 C (24), suma C (24), tip C (3), c12 C (24), c13 C (24), c14 C (100), c15 C (24), c16 C (2), c17 C (4), c18 C (24), c18_1 C (24), c18_2 C (24), tert C (100), cf C (100), detalii C (100), detalii2 C (100), detalii3 C (100), detalii4 C (100), c25 C (24), c26 C (2), c27 C (2), iban C (24)) Append From (mSelectedFile) Delimited With Character, Endif Scan For !Empty(data_v) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_v)) msuma = This.setsuma(C_TMP_I.suma) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With ABS(msuma) Do Case Case "com" $ Lower(C_TMP_I.tip) Replace tip_2 With "COM" Case ATC('TransCr-IncIntra',C_TMP_I.detalii) > 0 Replace tip_2 With This.cTipTransfer Otherwise Replace tip_2 With "" Endcase mexplicatie = Alltrim(C_TMP_I.detalii) mexplicatie = Strtran(mexplicatie, " ", " ") If "Detalii: " $ C_TMP_I.detalii mexplicatie = Substr(mexplicatie, At( "Detalii: ", mexplicatie) + 9, 100) Endif Replace tert With ALLTRIM(STRTRAN(Upper(C_TMP_I.tert), 'Dl ','',1,1,1)), cf With getdigitsfromstring(C_TMP_I.cf, 4, 1, ".") mtextoriginal = C_TMP_I.data_v + " " + C_TMP_I.tip + " " + Chr(13) + Alltrim(C_TMP_I.suma) + " " + Chr(13) + Alltrim(C_TMP_I.tert) + " " + Chr(13) + Alltrim(C_TMP_I.c14) + " " + Chr(13) + Alltrim(C_TMP_I.cf) + " " + Chr(13) + Alltrim(C_TMP_I.detalii) + Alltrim(C_TMP_I.detalii2) + Alltrim(C_TMP_I.detalii3) + Alltrim(C_TMP_I.detalii4) + Chr(13) + Alltrim(C_TMP_I.iban) Replace explicatie With mexplicatie, original With mtextoriginal, iban With C_TMP_I.iban Endscan Endproc * Procedure csvBT Lparameters pselectedfile, tnTip * pcSelectedFile: fisierul csv * tnTip: 1 (default) = lista tranzactii, 2 = extras de cont Local mtextoriginal Local lcDescriereFacturi, lcFacturi, lcLinie, lnLinie, lnLinii, lnResults LOCAL mcf, mexplicatie, mfilestr, miban, mtert lnLinii = Alines(This.aLinii, Filetostr(m.pselectedfile), 1) FOR lnLinie = 1 TO lnLinii lcLinie = This.aLinii[m.lnLinie] lcItem = STRTRAN(LOWER(ALLTRIM(GETWORDNUM(m.lcLinie,1,','))), ["], [],1,2) IF m.lcItem = [numar cont:] This.cIBAN = STRTRAN(LEFT(ALLTRIM(syGETWORDNUM(m.lcLinie, 2, ',')), 24), ["], [], 1, 2) EXIT ENDIF ENDFOR IF EMPTY(this.cIBAN) This.cIBAN = 'BT' ENDIF mtextoriginal = "" IF m.tnTip = 1 && lista de tranzactii * Data tranzactie,Data valuta,Descriere,Referinta tranzactiei,Debit,Credit,Sold contabil Create Cursor C_TMP_I (data_p C (16), data_t C (16), explicatie C (200), referinta C (200), suma_d C (15), suma_c C (15), sold C (15)) ELSE * Data tranzactie,Data valuta,Referinta,Tip tranzactie,Descriere,Debit,Credit Create Cursor C_TMP_I (data_p C (16), data_t C (16), referinta C (200), tipt C (100), explicatie C (200), suma_d C (15), suma_c C (15)) ENDIF mfilestr = Filetostr(pselectedfile) mfilestr = EliminVirguleDintreGhilimele(mfilestr, '"') mfilestr = Strtran(mfilestr, '"', '') * elimin LF din descriere in CSV BT24 se poate sa fie un LF pe linia cu tranzactia + ~~ pe urmatoarea linie mfilestr = Strtran(mfilestr, CHR(10) + '~~', '') * Reunesc liniile rupte: pastrez un \n doar daca e urmat de o data cu an complet (4 cifre) + virgula * Formate suportate: YYYY-MM-DD, / DD/MM/YYYY, / DD.MM.YYYY, / DD-MM-YYYY, / YYYY/MM/DD, / MM/DD/YYYY, mfilestr = Strtranx(mfilestr, "\r?\n(?!(?:\d{4}-\d{2}-\d{2}|\d{2}/\d{2}/\d{4}|\d{2}\.\d{2}\.\d{4}|\d{2}-\d{2}-\d{4}|\d{4}/\d{2}/\d{2}),)", " ", 1, , 1) * Este csv exportat din BT24 sau NeoBT. BT24 are sume negative???? pe debit pentru plati llBT24 = 'sold contabil'$LOWER(mfilestr) Strtofile(mfilestr, m.gcTempPath + "BTTMP.csv") Append From (m.gcTempPath + "BTTMP.csv") Csv Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(Alltrim(C_TMP_I.data_t))) If !EMPTY(VAL(Alltrim(C_TMP_I.suma_d))) Replace tip With "D" Replace suma With This.setsuma(C_TMP_I.suma_d) * Doar pentru export CSV BT24, platile (Debit) au suma negativa * Le inlocuiesc cu suma inversa IF m.llBT24 REPLACE suma WITH -suma ENDIF Else Replace tip With "C" Replace suma With This.setsuma(C_TMP_I.suma_c) ENDIF * Incasare OP;/ROC/FC. 2022047/ 04.02.2022//RFB/4337692;;;;DRAFT DINAMIC CONSTRUCT SRL;RO43OTPV120001427418RO01;OTPVROBU * NEOBT * "30-05-2024","30-05-2024","Incasare OP - canal electronic;f 2024103;ARGENTA SRL;RO86BTRL01401202H76370XX;BTRLRO22;REF: 014ZEXA24151017X","014ZEXA24151017X","","1,184.24 ","2,184.24 " * BT24 * 2024-06-05,2024-06-05,"Incasare OP - canal electronic;F 2024131;MIDIA GREEN ENERGY SA;RO87BTRL01401202716668XX;BTRLRO22;REF: 414ZEXA2415702DU",414ZEXA2415702DU,,"797.30","12,013.14" IF m.tnTip = 1 && lista de tranzactii mexplicatie = Alltrim(C_TMP_I.explicatie) ELSE mexplicatie = Alltrim(C_TMP_I.tipt) + ';' + Alltrim(C_TMP_I.explicatie) ENDIF Do Case Case LEFT(ALLTRIM(LOWER(NVL(mexplicatie,''))), 8) = "comision" OR ; 'comision-atm'$LOWER(NVL(mexplicatie,'')) OR ; 'comision procesare ridicare numerar'$LOWER(NVL(mexplicatie,'')) OR ; 'pachet izi'$LOWER(NVL(mexplicatie,'')) Replace tip_2 With This.cTipComisioane Case 'retragere de numerar'$ALLTRIM(LOWER(NVL(mexplicatie,''))) Replace tip_2 With This.cTipDepunere Case 'transfer intern'$ALLTRIM(LOWER(NVL(mexplicatie,''))) Replace tip_2 With This.cTipTransfer Otherwise Replace tip_2 With "" Endcase mtert = ALLTRIM(syGETWORDNUM(m.mexplicatie, 3, ';')) miban = ALLTRIM(syGETWORDNUM(m.mexplicatie, 4, ';')) mcf = "" lcDescriereFacturi = ALLTRIM(syGETWORDNUM(m.mexplicatie, 2, ';')) lcFacturi = '' lnResults = GetRegExpAllNumbers(m.lcDescriereFacturi, @m.lcFacturi) Replace tert With mtert, iban With miban, cf With mcf, documente WITH m.lcFacturi mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + Alltrim(C_TMP_I.suma_d) + "," + Alltrim(C_TMP_I.suma_c) + " " + Chr(13) + Alltrim(mexplicatie) Replace explicatie With mexplicatie, original With mtextoriginal Endscan ENDPROC && csvBT * Procedure csvBT_original Lparameters pselectedfile Local mtextoriginal, misgilimele This.cIBAN = 'BT' mtextoriginal = "" misgilimele = .F. mfilestr = Filetostr(pselectedfile) Strtofile(mfilestr, m.gcTempPath + "BTTMP.csv") lnfilehandle = Fopen(pselectedfile) Do While !Feof(lnfilehandle) mrand = Fgets(lnfilehandle, 1024) If '""' $ mrand misgilimele = .T. If ';",' $ mrand mpozatm1 = At( ';",', mrand) + 1 mrandfinal = Substr(mrand, mpozatm1, 200) mpozvirgulaatm = At( ',', mrandfinal, 2) mrand = Left(mrand, mpozatm1) + '",,""' + Substr(mrand, mpozatm1 + mpozvirgulaatm, 50) Endif mrand = Strtran(mrand, '""";;;;', '""') mrand = Strtran(mrand, '""";;;', '""') mrand = Strtran(mrand, '""";;', '""') mrand = Strtran(mrand, '""";', '""') mrand = Strtran(mrand, '""', '^') mrand = Strtran(mrand, '"', '') mrand = Strtran(mrand, '^', '"') Endif If Substr(mrand, 3, 1) == '-' .Or. Substr(mrand, 3, 1) == '/' .Or. Substr(mrand, 3, 1) == '.' .Or. Left(mrand, 2) == '20' .Or. Left(mrand, 2) == '21' mldata = setdategerman(Left(mrand, At(',', mrand))) mrand1 = Alltrim(Substr(mrand, At(',', mrand, 2) + 1, 1000)) mrand1 = EliminVirguleDintreGhilimele(mrand1, '"') mnrpctvirg = Occurs(';', mrand1) mpozfinexpl1 = At(';', mrand1) Do Case Case mnrpctvirg = 0 mpozfinexpl1 = At(',', mrand1, 1) mpozfinexpl2 = mpozfinexpl1 mpozfinexpl3 = mpozfinexpl1 mpozfinexpl4 = mpozfinexpl1 mpozfinexpl5 = mpozfinexpl1 mpozfinexpl6 = mpozfinexpl5 Case mnrpctvirg = 1 mpozfinexpl2 = At(';', mrand1, 1) mpozfinexpl3 = At(';', mrand1, 1) mpozfinexpl4 = At(';', mrand1, 1) mpozfinexpl5 = At(';', mrand1, 1) mpozfinexpl6 = mpozfinexpl5 Case mnrpctvirg = 2 mpozfinexpl2 = At(';', mrand1, 2) mpozfinexpl3 = At(';', mrand1, 2) mpozfinexpl4 = At(';', mrand1, 2) mpozfinexpl5 = At(';', mrand1, 2) mpozfinexpl6 = mpozfinexpl5 Case mnrpctvirg = 3 mpozfinexpl2 = At(';', mrand1, 2) mpozfinexpl3 = At(';', mrand1, 2) mpozfinexpl4 = At(';', mrand1, 2) mpozfinexpl5 = At(';', mrand1, 3) mpozfinexpl6 = mpozfinexpl5 Case mnrpctvirg = 4 mpozfinexpl2 = At(';', mrand1, 2) mpozfinexpl3 = At(';', mrand1, 2) mpozfinexpl4 = At(';', mrand1, 3) mpozfinexpl5 = At(';', mrand1, 4) mpozfinexpl6 = mpozfinexpl5 Otherwise mpozfinexpl2 = At(';', mrand1, 2) mpozfinexpl3 = At(';', mrand1, 3) mpozfinexpl4 = At(';', mrand1, 4) mpozfinexpl5 = At(';', mrand1, 5) mpozfinexpl6 = At(';', mrand1, 6) Endcase mlexplicatie1 = Substr(mrand1, 1, mpozfinexpl1 - 1) mlexplicatie2 = Substr(mrand1, mpozfinexpl1 + 1, mpozfinexpl2 - mpozfinexpl1 - 1) mpoz3 = Substr(mrand1, mpozfinexpl3 + 1, mpozfinexpl4 - mpozfinexpl3 - 1) mpoz4 = Substr(mrand1, mpozfinexpl4 + 1, mpozfinexpl5 - mpozfinexpl4 - 1) mpoz5 = Substr(mrand1, mpozfinexpl5 + 1, mpozfinexpl6 - mpozfinexpl5 - 1) If (mpoz5 = "RO" .Or. misgilimele) .And. mpoz4 <> "RO" .And. mnrpctvirg <> 5 mltert = mpoz4 mlcont = mpoz5 Else mltert = mpoz3 mlcont = mpoz4 Endif mrand2 = Substr(mrand1, At(',', mrand1, 2) + 1, 1000) mpozvirgulaexpl4 = At( ',', mrand2, 2) If mrand2 = "," mlsumad = "" mlsumac = Strtran(Strtran(Substr(mrand2, 2, mpozvirgulaexpl4 - 2), '"', ''), ',', '') Else mlsumad = Strtran(Strtran(Substr(mrand2, 1, mpozvirgulaexpl4 - 1), '"', ''), ',', '') mlsumac = "" Endif If mldata >= Ctod("01.01.2015") Insert Into c_iex (Data) Values (mldata) If Val(mlsumad) <> 0 mltip = "D" mlsuma = Abs(Val(mlsumad)) Else mltip = "C" mlsuma = Abs(Val(mlsumac)) Endif If "Comision " $ mrand2 .Or. "Comision " $ mlexplicatie1 Replace tip_2 With "COM" In c_iex Endif If mltip = "D" Replace tip With mltip, ip With "I", suma With mlsuma In c_iex Else Replace tip With mltip, ip With "P", suma With mlsuma In c_iex Endif Replace tert With Upper(mltert), explicatie With Iif(Empty(mlexplicatie2), mlexplicatie1, mlexplicatie2), ; iban With mlcont, original With mrand1 In c_iex Endif Endif Enddo Fclose(lnfilehandle) Endproc * Procedure csvCEC Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'CEC' mtextoriginal = "" Create Cursor C_TMP_I (c1 C (10), c2 C (10), c3 C (10), d1 C (10), moneda C (3), s1 C (10), s2 C (10), data_t C (10), data_v C (10), suma C (15), tip_op C (100), nr C (16), c4 C (10), c5 C (10), c6 C (10), c7 C (10), c8 C (10), c9 C (10), c10 C (10), c11 C (10), explicatie1 C (200), explicatie2 C (200), explicatie3 C (200), explicatie4 C (200), explicatie5 C (200)) mfilestr = Filetostr(pselectedfile) mfilestr = Strtran(mfilestr, '"', '') Strtofile(mfilestr, m.gcTempPath + "CECTMP.csv") Select C_TMP_I Append From (m.gcTempPath + "CECTMP.csv") Delimited With Char ";" Delete For Empty(Ctod(C_TMP_I.data_t)) Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_t)) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With This.setsuma(C_TMP_I.suma) mexplicatie = Alltrim(C_TMP_I.explicatie1) + Alltrim(C_TMP_I.explicatie2) + Alltrim(C_TMP_I.explicatie3) + Alltrim(C_TMP_I.explicatie4) + Alltrim(C_TMP_I.explicatie5) Do Case Case "comision" $ Lower(mexplicatie) .Or. "Abonament Internet Banking" $ mexplicatie Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase mtert = "" miban = "" mcf = "" mpoziban = 0 mlenexpl = 0 If "Iban Platitor" $ mexplicatie mpoziban = At( "Iban Platitor", mexplicatie) mlenexpl = Len( "Iban Platitor" ) + 1 miban = Substr(mexplicatie, mpoziban + mlenexpl, 24) Endif If "Iban Beneficiar" $ mexplicatie mpoziban = At( "Iban Beneficiar", mexplicatie) mlenexpl = Len( "Iban Beneficiar" ) + 1 miban = Substr(mexplicatie, mpoziban + mlenexpl, 24) Endif If mpoziban <> 0 mexplicatie2 = Substr(mexplicatie, 1, mpoziban - 1) + Substr(mexplicatie, mpoziban + mlenexpl + 1, 300) Else mexplicatie2 = mexplicatie Endif If tip = "C" If "Platitor " $ mexplicatie2 mtert1 = Alltrim(Substr(mexplicatie2, At( "Platitor ", mexplicatie2) + 9, 100)) If "," $ mtert1 mtert = Left(mtert1, At( ",", mtert1) - 1) Else mtert = mtert1 Endif Endif If "CUI/CNP Platitor" $ mexplicatie2 mcf = Alltrim(Str(Val(Alltrim(Substr(mexplicatie2, At( "CUI/CNP Platitor", mexplicatie2) + 17, 13))), 13, 0)) Endif Else If "Beneficiar " $ mexplicatie2 mtert1 = Alltrim(Substr(mexplicatie2, At( "Beneficiar ", mexplicatie2) + 11, 100)) If "," $ mtert1 mtert = Left(mtert1, At( ",", mtert1) - 1) Else mtert = mtert1 Endif Endif If "CUI/CNP Beneficiar" $ mexplicatie2 mcf = Alltrim(Str(Val(Alltrim(Substr(mexplicatie2, At( "CUI/CNP Beneficiar", mexplicatie2) + 19, 13))), 13, 0)) Endif Endif mcf1 = getdigitsfromstring(mcf, 4, 1, ".") If Empty(mcf1) mcf1 = getdigitsfromstring(mcf, 13, 2, ".") Endif Replace tert With mtert, iban With miban, cf With mcf1, nr With C_TMP_I.nr mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + C_TMP_I.suma + " " + Chr(13) + Alltrim(C_TMP_I.nr) + " " + Chr(13) + Alltrim(mexplicatie) If Occurs(",", mexplicatie) > 0 mexplicatie = Left(mexplicatie, At(",", mexplicatie) - 1) Endif Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Procedure csvCreditEurope Lparameters pselectedfile Local mtextoriginal lnLinii = Alines(This.aLinii, Filetostr(m.pselectedfile), 1) lcLinie = This.aLinii[2] This.cIBAN = syGETWORDNUM(m.lcLinie, 5, ',') IF EMPTY(this.cIBAN) This.cIBAN = 'CreditEurope' ENDIF mtextoriginal = "" Create Cursor C_TMP_I (data_t C (16), data_v C (16), referinta C (20), explicatie C (200), suma_d C (15), suma_c C (15), sold C (15)) mfilestr = Filetostr(pselectedfile) mfilestr = EliminVirguleDintreGhilimele(mfilestr, '"') mfilestr = Strtran(mfilestr, '"', '') Strtofile(mfilestr, m.gcTempPath + "CreditEuropeTMP.csv") Append From (m.gcTempPath + "CreditEuropeTMP.csv") Csv Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(Alltrim(C_TMP_I.data_t))) If !EMPTY(VAL(Alltrim(C_TMP_I.suma_d))) Replace tip With "D" Replace suma With This.setsuma(C_TMP_I.suma_d) Else Replace tip With "C" Replace suma With This.setsuma(C_TMP_I.suma_c) Endif mexplicatie = Alltrim(C_TMP_I.explicatie) Do Case Case "comision" $ Lower(mexplicatie) Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase mtert = "" miban = "" mcf = "" mpoztertstart = At(" - ", mexplicatie) + 3 mpoztertfin = At(" : ", mexplicatie) If mpoztertstart > 0 .And. mpoztertfin > 0 mtert = Alltrim(Substr(mexplicatie, mpoztertstart, mpoztertfin - mpoztertstart)) Endif Replace tert With mtert, iban With miban, cf With mcf mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + Alltrim(C_TMP_I.suma_d) + "," + Alltrim(C_TMP_I.suma_c) + " " + Chr(13) + Alltrim(mexplicatie) Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Procedure csvFanCourier Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'FanCourier' *:Global mfilestr mtextoriginal = "" Create Cursor C_TMP_I (oras C (60), data_awb C (10), suma C (15), nr_awb C (60), expeditor C (60), tert C (100), continut C (60), pc C (60), data_t C (10), card C (20), pe C (60), ramburs C (20), Retur C (20), data_v C (10)) mfilestr = Filetostr(pselectedfile) mfilestr = Strtran(mfilestr, '""""', '') mfilestr = Strtran(mfilestr, '"""', '""') If Occurs('""', Left(mfilestr, At(Chr(13), mfilestr))) >= 4 mfilestr = EliminVirguleDintreGhilimele(mfilestr, '""') Else mfilestr = EliminVirguleDintreGhilimele(mfilestr, '"') Endif mfilestr = Strtran(mfilestr, '"', '') Strtofile(mfilestr, m.gcTempPath + "FANTMP.csv") Select C_TMP_I Append From (m.gcTempPath + "FANTMP.csv") Csv Delete For Empty(Ctod(C_TMP_I.data_t)) Scan For .Not. Empty(data_t) .And. .Not. Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_t)) Replace tip With "C", suma With This.setsuma(C_TMP_I.suma), tert With Upper(C_TMP_I.tert) mcf = getdigitsfromstring(Alltrim(C_TMP_I.tert), 4, 1, ".") If !EMPTY(Alltrim(mcf)) REPLACE cf WITH mcf Endif mtextoriginal = Alltrim(C_TMP_I.data_t) + " " + Chr(13) + Alltrim(C_TMP_I.suma) + Chr(13) + Alltrim(C_TMP_I.oras) + " " + "AWB " + Alltrim(C_TMP_I.nr_awb) + " " + Alltrim(C_TMP_I.continut) + Chr(13) + Alltrim(C_TMP_I.tert) + Chr(13) + Alltrim(C_TMP_I.pe) + " " + "AWB " + Alltrim(C_TMP_I.ramburs) + " " + Alltrim(C_TMP_I.Retur) + " " + Alltrim(C_TMP_I.card) Replace explicatie With C_TMP_I.tert, original With mtextoriginal Endscan Endproc * * Procedure csvFunCourier Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'FanCourier' *:Global mfilestr mtextoriginal = "" Create Cursor C_TMP_I (oras C (60), data_awb C (10), suma C (15), nr_awb C (60), expeditor C (60), tert C (100), continut C (60), pc C (60), data_t C (10), pe C (60), ramburs C (20), Retur C (20), card C (20)) mfilestr = Filetostr(pselectedfile) mfilestr = Strtran(mfilestr, '""""', '') mfilestr = Strtran(mfilestr, '"""', '""') If Occurs('""', Left(mfilestr, At(Chr(13), mfilestr))) >= 4 mfilestr = EliminVirguleDintreGhilimele(mfilestr, '""') Else mfilestr = EliminVirguleDintreGhilimele(mfilestr, '"') Endif mfilestr = Strtran(mfilestr, '"', '') Strtofile(mfilestr, m.gcTempPath + "FUNTMP.csv") Select C_TMP_I Append From (m.gcTempPath + "FUNTMP.csv") Csv Delete For Empty(Ctod(C_TMP_I.data_t)) Scan For .Not. Empty(data_t) .And. .Not. Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_t)) Replace tip With "C", suma With This.setsuma(C_TMP_I.suma), tert With Upper(C_TMP_I.tert) mtextoriginal = Alltrim(C_TMP_I.data_t) + " " + Chr(13) + Alltrim(C_TMP_I.suma) + Chr(13) + Alltrim(C_TMP_I.oras) + " " + "AWB " + Alltrim(C_TMP_I.nr_awb) + " " + Alltrim(C_TMP_I.continut) + Chr(13) + Alltrim(C_TMP_I.tert) + Chr(13) + Alltrim(C_TMP_I.pe) + " " + "AWB " + Alltrim(C_TMP_I.ramburs) + " " + Alltrim(C_TMP_I.Retur) + " " + Alltrim(C_TMP_I.card) Replace explicatie With C_TMP_I.tert, original With mtextoriginal Endscan Endproc * Procedure csvFunCourier2 Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'FanCourier' mtextoriginal = "" Create Cursor C_TMP_I (nr_awb C (60), data_awb C (10), tert C (100), oras C (60), expeditor C (60), oras_exp C (60), suma C (15), iban C (24), data_t C (10), continut C (60)) mfilestr = Filetostr(pselectedfile) mfilestr = Strtran(mfilestr, '""""', '') mfilestr = Strtran(mfilestr, '"""', '""') If Occurs('""', Left(mfilestr, At(Chr(13), mfilestr))) >= 4 mfilestr = EliminVirguleDintreGhilimele(mfilestr, '""') Else mfilestr = EliminVirguleDintreGhilimele(mfilestr, '"') Endif mfilestr = Strtran(mfilestr, '"', '') Strtofile(mfilestr, m.gcTempPath + "FUNTMP.csv") Select C_TMP_I Append From (m.gcTempPath + "FUNTMP.csv") Csv Delete For Empty(Ctod(C_TMP_I.data_t)) Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_t)) Replace tip With "C", suma With This.setsuma(C_TMP_I.suma), tert With Upper(C_TMP_I.tert) mtextoriginal = Alltrim(C_TMP_I.data_t) + " " + Chr(13) + Alltrim(C_TMP_I.suma) + Chr(13) + Alltrim(C_TMP_I.oras) + " " + "AWB " + Alltrim(C_TMP_I.nr_awb) + " " + Alltrim(C_TMP_I.continut) + Chr(13) + Alltrim(C_TMP_I.tert) Replace explicatie With C_TMP_I.tert, original With mtextoriginal Endscan Endproc * Procedure csvGaranti Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'Garanti' mtextoriginal = "" Create Cursor C_TMP_I (data_t C (16), explicatie C (200), suma C (15), sold C (15)) Append From (pselectedfile) Delimited With Char ";" Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(Alltrim(C_TMP_I.data_t))) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With ABS(This.setsuma(C_TMP_I.suma)) mexplicatie = STRTRAN(Alltrim(C_TMP_I.explicatie), ' ', ' ',1,100,1) && elimin spatiile duble mexplicatie = STRTRAN(Alltrim(mexplicatie ), ' ', ' ',1,100,1) && elimin spatiile duble mexplicatie = STRTRAN(Alltrim(mexplicatie ), ' ', ' ',1,100,1) && elimin spatiile duble mexplicatie = STRTRAN(Alltrim(mexplicatie ), ' ', ' ',1,100,1) && elimin spatiile duble mexplicatie = STRTRAN(Alltrim(mexplicatie ), ' ', ' ',1,100,1) && elimin spatiile duble Do Case Case "comision" $ Lower(mexplicatie) lcTip2 = This.cTipComisioane Case "dobanda" $ Lower(mexplicatie) lcTip2 = This.cTipDobanzi Case "lichidare depozit" $ Lower(mexplicatie) lcTip2 = This.cTipTransfer Case "constituire depozit" $ Lower(mexplicatie) lcTip2 = This.cTipTransfer Otherwise lcTip2 = "" Endcase mtert = "" miban = "" mcf = "" mpoziban = 0 mlenexpl = 0 If "IBAN platitor:" $ mexplicatie mpoziban = At( "IBAN platitor:", mexplicatie) mlenexpl = Len( "IBAN platitor:" ) + 1 miban = Substr(mexplicatie, mpoziban + mlenexpl, 24) Endif If "IBAN beneficiar:" $ mexplicatie mpoziban = At( "IBAN beneficiar:", mexplicatie) mlenexpl = Len( "IBAN beneficiar:" ) + 1 miban = Substr(mexplicatie, mpoziban + mlenexpl, 24) Endif If mpoziban <> 0 mexplicatie2 = Substr(mexplicatie, 1, mpoziban - 1) Else mexplicatie2 = mexplicatie Endif If tip = "C" mpoztertstart = At( "Platitor: ", mexplicatie2) + 10 If "Platitor: " $ mexplicatie2 If mpoziban > mpoztertstart mtert1 = Alltrim(Substr(mexplicatie2, mpoztertstart, mpoziban - mpoztertstart)) Else mtert1 = Alltrim(Substr(mexplicatie2, mpoztertstart, 100)) Endif If "," $ mtert1 mtert = Left(mtert1, At( ",", mtert1) - 1) Else mtert = mtert1 Endif Endif Else mpoztertstart = At( "Beneficiar: ", mexplicatie2) + 12 If "Beneficiar: " $ mexplicatie2 If mpoziban > mpoztertstart mtert1 = Alltrim(Substr(mexplicatie2, mpoztertstart, mpoziban - mpoztertstart)) Else mtert1 = Alltrim(Substr(mexplicatie2, mpoztertstart, 100)) Endif If "," $ mtert1 mtert = Left(mtert1, At( ",", mtert1) - 1) Else mtert = mtert1 Endif Endif Endif If "Cod fiscal:" $ mexplicatie mcf = getdigitsfromstring(Alltrim(Substr(mexplicatie, At("Cod fiscal:", mexplicatie) + 12, 13)), 4, 1, ".") If Alltrim(mcf) == Alltrim(gofirma.codfiscalfro) mcf = "" Endif Endif Replace tert With mtert, iban With miban, cf With mcf, tip_2 With m.lcTip2 mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + C_TMP_I.suma + " " + Chr(13) + Alltrim(mexplicatie) If Occurs("Detalii:", mexplicatie) > 0 mexplicatie = Substr(mexplicatie, At("Detalii:", mexplicatie) + 8, 200) Endif Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Procedure csvGaranti_2 Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'Garanti' mtextoriginal = "" Create Cursor C_TMP_I (data_t C (16), data_v C (16), tert C (60), iban C (36), explicatie C (200), suma C (15), sold C (15)) Append From (pselectedfile) Csv Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(Alltrim(C_TMP_I.data_t))) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With ABS(This.setsuma(C_TMP_I.suma)) mexplicatie = Alltrim(C_TMP_I.explicatie) Do Case Case "comision" $ Lower(mexplicatie) lcTip2 = This.cTipComisioane Case "dobanda" $ Lower(mexplicatie) lcTip2 = This.cTipDobanzi Case "lichidare depozit" $ Lower(mexplicatie) lcTip2 = This.cTipTransfer Case "constituire depozit" $ Lower(mexplicatie) lcTip2 = This.cTipTransfer Otherwise lcTip2 = "" Endcase mtert = Alltrim(C_TMP_I.tert) miban = Alltrim(C_TMP_I.iban) Replace tert With mtert, iban With miban, tip_2 WITH m.lcTip2 mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + mtert + " " + Chr(13) + miban + " " + Chr(13) + C_TMP_I.suma + " " + Chr(13) + Alltrim(mexplicatie) If Occurs("Detalii:", mexplicatie) > 0 mexplicatie = Substr(mexplicatie, At("Detalii:", mexplicatie) + 8, 200) Endif Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Procedure csvIdea Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'Idea' mtextoriginal = "" Create Cursor C_TMP_I (data_t C (10), data_v C (10), referinta C (10), explicatie C (150), tert C (100), suma C (15)) Append From (pselectedfile) Csv Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_t)) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With This.setsuma(Strtran(Strtran(C_TMP_I.suma, "+", ""), "-", "")) Do Case Case "comis" $ Lower(C_TMP_I.explicatie) .Or. "administrare cont" $ Lower(C_TMP_I.explicatie) Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase mexplicatie = C_TMP_I.explicatie mtert = "" miban = "" If Occurs(":", C_TMP_I.tert) > 0 mtert = Upper(Substr(C_TMP_I.tert, At(":", C_TMP_I.tert) + 2, 100)) Else mtert = Upper(C_TMP_I.tert) Endif Replace tert With mtert mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + C_TMP_I.suma + " " + Chr(13) + C_TMP_I.referinta + " " + Chr(13) + Alltrim(C_TMP_I.explicatie) + " " + Chr(13) + Alltrim(C_TMP_I.tert) Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Procedure csvIng Lparameters pselectedfile, pltipfisier Local mtextoriginal This.cIBAN = 'ING' mtextoriginal = "" If pltipfisier = 1 Create Cursor C_TMP_I (text1 C (200), field1 C (10), detalii2 C (200), detalii C (200), debit C (15), field3 C (100), credit C (15), credit2 C (15)) Else Create Cursor C_TMP_I (text1 C (200), field1 C (10), detalii2 C (200), detalii C (200), field4 C (10), debit C (15), field3 C (100), credit C (15), credit2 C (15)) Endif Append From (pselectedfile) Csv Replace detalii With detalii2 For Empty(detalii) Replace credit With credit2 For Empty(credit) Locate Select C_TMP_I Do While !Eof() Select C_TMP_I If !Empty(text1) mtextoriginal = Alltrim(text1) If '""' $ text1 mldatatext = Left(text1, At( ",", text1) - 1) Else mldatatext = Alltrim(text1) Endif mldata = setdategerman(mldatatext) If mldata >= Ctod("01.01.2015") Insert Into c_iex (Data) Values (mldata) Select C_TMP_I If '""' $ text1 mloccurence3 = At(",", text1, 3) mloccurence4 = At(",", text1, 4) mlexplicatie1 = Substr(text1, mloccurence3 + 1, mloccurence4 - mloccurence3) mloccurence5 = At(',', text1, 5) mlsumadc = Substr(text1, mloccurence5 + 1, 100) mloccurence1 = At('""', text1, 1) mloccurence2 = At('""', text1, 2) mlsuma = Val(Strtran(Strtran(Substr(text1, mloccurence1 + 2, mloccurence2 - mloccurence1 - 2), ".", ""), ",", ".")) If mlsumadc = '""' mltip = "D" Else mltip = "C" Endif If "comisio" $ Lower(text1) Replace tip_2 With "COM" In c_iex Endif Else mtextoriginal = mtextoriginal + Chr(13) + Alltrim(debit) + " " + Alltrim(field3) + " " + Alltrim(credit) mdebit = Thisform.setsuma(debit) + Thisform.setsuma(field3) If mdebit > 0 mltip = "D" mlsuma = mdebit Else mltip = "C" mlsuma = Thisform.setsuma(credit) Endif If "comisio" $ Lower(detalii) Replace tip_2 With "COM" In c_iex Endif Endif mltert = "" mlcont = "" mlexplicatie2 = "" Skip If mltip = "D" Replace tip With mltip, ip With "I", suma With mlsuma In c_iex Do While Empty(text1) .And. !Eof() mtextoriginal = mtextoriginal + Chr(13) + Alltrim(detalii) If "Detalii:" $ detalii mlexplicatie2 = Alltrim(Strtran(detalii, "Detalii:", "")) Endif If "Terminal:" $ detalii mltert = Alltrim(Strtran(detalii, "Terminal:", "")) Endif If "Beneficiar:" $ detalii mltert = Alltrim(Strtran(detalii, "Beneficiar:", "")) Endif If "In contul:" $ detalii mlcont = Alltrim(Strtran(detalii, "In contul:", "")) Endif Skip Enddo Else Replace tip With mltip, ip With "P", suma With mlsuma In c_iex Do While Empty(text1) .And. !Eof() mtextoriginal = mtextoriginal + Chr(13) + Alltrim(detalii) If "Detalii:" $ detalii mlexplicatie2 = Alltrim(Strtran(detalii, "Detalii:", "")) Endif If "Ordonator:" $ detalii mltert = Alltrim(Strtran(detalii, "Ordonator:", "")) Endif If "Din contul:" $ detalii mlcont = Alltrim(Strtran(detalii, "Din contul:", "")) Endif Skip Enddo Endif Replace tert With Upper(mltert), explicatie With mlexplicatie2, iban With mlcont, original With mtextoriginal In c_iex Loop Else Skip Endif Else Skip Endif Enddo Endproc * Procedure csvIngbusiness Lparameters pselectedfile, pldelimitator, tnTipFisier Local mtextoriginal, mdataop, lcTipTransfer This.cIBAN = 'INGBussiness' mtextoriginal = "" IF m.tnTipFisier = 1 Create Cursor C_TMP_I (nr_cont C (24), data_t C (10), suma C (15), cod_valuta C (3), tip_tran C (150), tert C (100), ; adresa C (100), iban C (24), banca C (200), explicatie C (200), sold C (15), cf c(20)) ELSE * are in plus la inceput sold_i si sold_f Create Cursor C_TMP_I (sold_i C(20), sold_f C(20), nr_cont C (24), data_t C (10), suma C (15), cod_valuta C (3), tip_tran C (150), tert C (100), ; adresa C (100), iban C (24), banca C (200), explicatie C (200), sold C (15), cf c(20)) ENDIF If pldelimitator = ';' Append From (mSelectedFile) Delimited With Char ";" Else mfilestr = Filetostr(pselectedfile) If '""' $ mfilestr mfilestr = Strtran(mfilestr, '"""', '""') mfilestr = EliminVirguleDintreGhilimele(mfilestr, '""', ".") mfilestr = Strtran(mfilestr, '"', '') Endif Strtofile(mfilestr, m.gcTempPath + "INGTmp.csv") Append From (m.gcTempPath + "INGTmp.csv") Delimited With Character, Endif Scan For !Empty(data_t) Select c_iex If Alltrim(C_TMP_I.data_t) = "202" mdataop = Substr(C_TMP_I.data_t, 7, 2) + "." + Substr(C_TMP_I.data_t, 5, 2) + "." + Substr(C_TMP_I.data_t, 1, 4) Else mdataop = Alltrim(C_TMP_I.data_t) Endif If !Empty(Ctod(mdataop)) Insert Into c_iex (Data) Values (setdategerman(mdataop)) msuma = This.setsuma(C_TMP_I.suma) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With Abs(msuma) lcTipTransfer = Lower(C_TMP_I.tip_tran) Do Case Case "comision" $ m.lcTipTransfer Replace tip_2 With This.cTipComisioane Case 'retragere numerar'$m.lcTipTransfer OR 'depunere numerar'$m.lcTipTransfer Replace tip_2 With This.cTipDepunere Case 'transfer intern'$m.lcTipTransfer Replace tip_2 With This.cTipTransfer Otherwise Replace tip_2 With "" ENDCASE Replace tert With Upper(C_TMP_I.tert), cf WITH ALLTRIM(NVL(C_TMP_I.cf,'')) mexplicatie = Alltrim(C_TMP_I.explicatie) mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + Alltrim(C_TMP_I.suma) + " " + Chr(13) + Alltrim(C_TMP_I.tip_tran) + " " + Chr(13) + Alltrim(C_TMP_I.tert) + Chr(13) + Alltrim(C_TMP_I.iban) + " " + Chr(13) + mexplicatie Replace explicatie With mexplicatie, original With mtextoriginal, iban With C_TMP_I.iban Endif Endscan Endproc * Procedure csvIntesa Lparameters pselectedfile, pisextras Local mtextoriginal This.cIBAN = 'Intesa' mtextoriginal = "" If pisextras = 1 Create Cursor C_TMP_I (data_v C (10), data_t C (10), detalii C (200), Curs C (10), nr C (16), tip C (1), suma C (24)) Else Create Cursor C_TMP_I (data_v C (11), nr C (10), detalii C (200), tert C (10), suma C (24)) Endif mfilestr = Filetostr(pselectedfile) mlen = Len(mfilestr) mfilestr = EliminVirguleDintreGhilimele(mfilestr, '"') mfilestr = Strtran(mfilestr, '"', '') Strtofile(mfilestr, m.gcTempPath + "IntesaTMP.csv") Append From (m.gcTempPath + "IntesaTMP.csv") Csv Scan For !Empty(data_v) mdatatranz = setdategerman(Lower(C_TMP_I.data_v)) If !Empty(mdatatranz) msuma = Thisform.setsuma(C_TMP_I.suma) If msuma <> 0 Select c_iex Insert Into c_iex (Data) Values (mdatatranz) If pisextras = 1 Replace tip With C_TMP_I.tip Else If msuma > 0 Replace tip With "D" Else Replace tip With "C" Endif Endif Replace suma With Abs(msuma) Do Case Case "comision" $ Lower(C_TMP_I.detalii) .Or. "com." $ Lower(C_TMP_I.detalii) Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase miban = getibanfromstring(C_TMP_I.detalii, 1) mtert = "" If "-" $ C_TMP_I.detalii .And. Occurs( "/", C_TMP_I.detalii) >= 2 mpoz1 = At( "-", C_TMP_I.detalii) + 2 mpoz2 = At( "/", C_TMP_I.detalii, 2) mtert = Alltrim(Substr(C_TMP_I.detalii, mpoz1, mpoz2 - mpoz1)) Else If C_TMP_I.detalii = "Incasare" .And. Occurs( "/ ", C_TMP_I.detalii) >= 2 mpoz1 = At( "/ ", C_TMP_I.detalii) + 2 mpoz2 = At( "/ ", C_TMP_I.detalii, 2) - 1 mtert = Substr(C_TMP_I.detalii, mpoz1, mpoz2 - mpoz1) If "," $ mtert mtert = Left(mtert, At( ",", mtert) - 1) Endif Endif Endif If "CUI" $ mtert mtert = Left(mtert, At("CUI", mtert) - 1) Endif mexplicatie = C_TMP_I.detalii If ":" $ C_TMP_I.detalii mpoz1 = At(":", C_TMP_I.detalii) + 2 mexplicatie = Alltrim(Substr(C_TMP_I.detalii, mpoz1, 150)) Endif Replace tert With mtert If "CUI" $ C_TMP_I.detalii mpoz1 = At("CUI", C_TMP_I.detalii) + 4 Replace cf With getdigitsfromstring(Substr(C_TMP_I.detalii, mpoz1, 16), 4, 1, ".") Endif mtextoriginal = C_TMP_I.data_v + Chr(13) + Alltrim(C_TMP_I.suma) + " " + Chr(13) + Alltrim(C_TMP_I.nr) + " " + Chr(13) + Alltrim(C_TMP_I.detalii) Replace explicatie With mexplicatie, original With mtextoriginal, iban With miban Endif Endif Endscan Endproc * Procedure csvPaypal Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'PayPal' mtextoriginal = "" Create Cursor C_TMP_I (data_t C (10), c1 C (10), c2 C (10), detalii1 C (100), cod_valuta C (16), suma C (16), fee C (10), net C (100), ; balance C (10), c3 C (10), email C (60), nume C (100), banca C (10), iban C (24), c5 C (10), c6 C (10), c7 C (10), c8 C (100)) Append From (mSelectedFile) Csv Delete For Empty(C_TMP_I.data_t) Scan For !Empty(data_t) Select c_iex If C_TMP_I.data_t = "202" .Or. !"/" $ C_TMP_I.data_t mdata = setdategerman(C_TMP_I.data_t) Else Set Date To AMERICAN mdata = Ctod(C_TMP_I.data_t) Set Date To German Endif Insert Into c_iex (Data) Values (mdata) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With This.setsuma(C_TMP_I.suma) Do Case Case "comision" $ Lower(C_TMP_I.detalii1) .Or. "COMMISSION" $ Upper(C_TMP_I.detalii1) Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase Replace tert With Upper(C_TMP_I.nume), cod_valuta With C_TMP_I.cod_valuta mexplicatie = Alltrim(C_TMP_I.detalii1) mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + C_TMP_I.suma + " " + Chr(13) + Alltrim(C_TMP_I.iban) + " " + Chr(13) + Alltrim(C_TMP_I.nume) + " " + Alltrim(C_TMP_I.cod_valuta) + " " + Chr(13) + Alltrim(C_TMP_I.email) + " " + Chr(13) + mexplicatie Replace explicatie With mexplicatie, original With mtextoriginal, iban With C_TMP_I.iban, email With C_TMP_I.email mfee = This.setsuma(C_TMP_I.fee) If mfee > 0 Insert Into c_iex (Data, tip, suma, tip_2, explicatie) Values (mdata, "D", mfee, "COM", "Comision") Endif Endscan Endproc * Procedure csvPayu Lparameters pselectedfile Local mtextoriginal, mfilestr, mlen, ij, mpas This.cIBAN = 'PayU' mtextoriginal = "" Create Cursor C_TMP_I (c01 C (1), c02 C (1), c03 C (1), c04 C (1), c05 C (1), c06 C (1), c07 C (1), ; c08 C (1), c09 C (1), c10 C (1), Data C (10), c12 C (1), c13 C (1), c14 C (1), suma C (15), c16 C (1), ; c17 C (1), c18 C (1), c19 C (1), c20 C (1), c21 C (1), c22 C (1), c23 C (1), c24 C (1), ; firma C (150), client C (150), adresa C (160), telefon C (16), email C (64), oras C (24), ; c60 C (1), c61 C (1), c62 C (1), cnp C (13), cf C (13), nr_i C (15), banca C(60), iban C(250), referinta C(60)) Select C_TMP_I Append From (pselectedfile) Csv Scan For !Empty(Data) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.Data)) Replace tip With "C", suma With This.setsuma(C_TMP_I.suma) mtert = "" mcf = "" If !Empty(C_TMP_I.firma) mtert = Upper(Alltrim(C_TMP_I.firma)) Else mtert = Upper(Alltrim(C_TMP_I.client)) Endif If !Empty(C_TMP_I.cf) mcf = Alltrim(C_TMP_I.cf) Else mcf = Alltrim(C_TMP_I.cnp) Endif Replace tert With mtert, cf With mcf, iban With C_TMP_I.iban, tel With C_TMP_I.telefon, email With C_TMP_I.email mexplicatie = Alltrim(C_TMP_I.referinta) mtextoriginal = C_TMP_I.Data + Chr(13) + Alltrim(C_TMP_I.firma) + Alltrim(C_TMP_I.client) + Chr(13) + Alltrim(C_TMP_I.cnp) + Alltrim(C_TMP_I.cf) + Chr(13) + Alltrim(C_TMP_I.telefon) + Chr(13) + Alltrim(C_TMP_I.email) + Chr(13) + Alltrim(C_TMP_I.suma) + Chr(13) + Alltrim(C_TMP_I.oras) + " " + Alltrim(C_TMP_I.adresa) Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Procedure csvStripe Lparameters pselectedfile Local mtextoriginal, mfilestr, mlen, ij, mpas This.cIBAN = 'Stripe' mtextoriginal = "" Create Cursor C_TMP_I (DataC C (25), tip C (30), comanda C (30), client C (150), status C(50), Data C (10), suma C (15), ; comision C (15), sumaneta C (15), referinta c(50)) Select C_TMP_I Append From (pselectedfile) Csv Scan For !Empty(Data) lcData = ALLTRIM(data) ldData = {} lnLuna = VAL(GETWORDNUM(m.lcData,1,'/')) lnZi = VAL(GETWORDNUM(m.lcData,2,'/')) lnAn = VAL(GETWORDNUM(m.lcData,3,'/')) IF BETWEEN(m.lnZi, 1, 31) AND BETWEEN(m.lnLuna, 1, 12) AND BETWEEN(m.lnAn, 2000,2999) TRY ldData = DATE(m.lnAn, m.lnLuna, m.lnZi) CATCH * ENDTRY ENDIF SELECT c_iex Insert Into c_iex (Data) Values (m.ldData) Replace tip With "C", suma With This.setsuma(C_TMP_I.suma) mtert = Upper(Alltrim(C_TMP_I.client)) Replace tert With mtert mexplicatie = Alltrim(C_TMP_I.tip) + ' ' + Alltrim(C_TMP_I.comanda) mtextoriginal = C_TMP_I.Data + Chr(13) + Alltrim(C_TMP_I.client) + Chr(13) + Alltrim(C_TMP_I.suma) + Chr(13) + Alltrim(C_TMP_I.comanda) Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Procedure csvRaiffeisen Lparameters pselectedfile, pdelimiter Local mtextoriginal This.cIBAN = 'Raiffeisen' mtextoriginal = "" Create Cursor C_TMP_I (data_t C (10), data_v C (10), debit C (15), credit C (15), nr C (15), cf C (15), ordonator C (100), beneficiar C (100), ; nume C(100), banca C (100), iban C (24), detalii C (200)) If pdelimiter = ";" Append From (mSelectedFile) Delimited With Char ";" Else Append From (mSelectedFile) Csv Endif Delete For Empty(Ctod(C_TMP_I.data_t)) Scan For !Empty(data_t) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_t)) If !Empty(C_TMP_I.debit) Replace tip With "D" msuma = This.setsuma(C_TMP_I.debit) Else Replace tip With "C" msuma = This.setsuma(C_TMP_I.credit) Endif Replace suma With msuma Do Case Case "comision" $ Lower(C_TMP_I.detalii) Replace tip_2 With "COM" Otherwise Replace tip_2 With "" Endcase Replace nr With C_TMP_I.nr, tert With Upper(C_TMP_I.nume), cf With Upper(C_TMP_I.cf) mexplicatie = Alltrim(C_TMP_I.detalii) mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + Alltrim(C_TMP_I.debit) + Alltrim(C_TMP_I.credit) + " " + Chr(13) + Alltrim(C_TMP_I.nr) + Chr(13) + Alltrim(C_TMP_I.iban) + " " + Chr(13) + Alltrim(C_TMP_I.nume) + " " + Alltrim(C_TMP_I.cf) + " " + Chr(13) + mexplicatie Replace explicatie With mexplicatie, original With mtextoriginal, iban With C_TMP_I.iban Endscan Endproc * Procedure csvUnicredit Lparameters pselectedfile, pdelimiter Local mtextoriginal This.cIBAN = 'Unicredit' mtextoriginal = "" Create Cursor C_TMP_I (Cont C (24), suma C (15), valuta C (16), data_t C (10), data_v C (10), banca C (10), banca_nume C (100), ; adresa C (10), cont1 C(10), iban C (24), nume C(100), adr1 C (10), adr2 C (10), adr3 C (10), detalii1 C (100), detalii2 C (100), ; detalii3 C (100), detalii4 C (100), detalii5 C (100), detalii6 C (100), detalii7 C (100), detalii8 C (100), detaliip1 C (100), detaliip2 C (100), detaliip3 C (100), ; detaliip4 C (100), detaliip5 C (100), detaliip6 C (100), ; cf C (15), nr C (15), camp2 C (10), camp3 C (10), camp4 C (10), plafon C (15)) If File(m.pselectedfile) lnLinii = Alines(This.aLinii, Filetostr(m.lcFile), 1) lnLinii = Iif(Empty(m.lnLinii), 0, m.lnLinii) This.nLinii = m.lnLinii lcLinie = This.aLinii[2] This.cIBAN = syGETWORDNUM(m.lcLinie, 2, ';') This.cValuta = syGETWORDNUM(m.lcLinie, 3, ';') Endif Do Case Case pdelimiter = ";" Append From (mSelectedFile) Delimited With Char ";" Case pdelimiter = Chr(10) .Or. Empty(pdelimiter) Append From (mSelectedFile) Delimited With Char Tab Otherwise Append From (mSelectedFile) Csv Endcase Delete For Empty(Ctod(C_TMP_I.data_t)) Scan For !Empty(data_t) .And. !Empty(setdategerman(C_TMP_I.data_t)) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_t)) If "-" $ C_TMP_I.suma Replace tip With "D" Else Replace tip With "C" Endif Replace suma With This.setsuma(C_TMP_I.suma) Do Case Case "comision" $ Lower(C_TMP_I.detalii1) .Or. "transfond fee" $ Lower(C_TMP_I.detalii1) .Or. ; "COMMISSION" $ Upper(C_TMP_I.detalii1) Or ; ' FEE' $ Upper(C_TMP_I.detalii1) Or 'FEE/' $ Upper(C_TMP_I.detalii1) Or Upper(C_TMP_I.detalii1) = 'FEE' lcTip2 = "COM" Case 'CASH DEPOSIT' $ Upper(C_TMP_I.detalii1) lcTip2 = This.cTipDepunere Case 'BUGETUL DE STAT' $ Upper(C_TMP_I.nume) lcTip2 = This.cTipBuget Case 'PROMISSORY NOTE' $ Upper(C_TMP_I.detaliip1) Or 'PROMISSORY NOTE' $ Upper(C_TMP_I.detalii1) lcTip2 = This.cTipEfecteComerciale Otherwise lcTip2 = This.cTipTerti Endcase Replace nr With C_TMP_I.nr, tert With C_TMP_I.nume, cf With C_TMP_I.cf, tip_2 With m.lcTip2 mexplicatie = Alltrim(Alltrim(C_TMP_I.detalii1) + " " + Alltrim(C_TMP_I.detalii2) + " " + Alltrim(C_TMP_I.detalii3) + " " + ; Alltrim(C_TMP_I.detalii4) + " " + Alltrim(C_TMP_I.detalii5) + " " + ; Alltrim(C_TMP_I.detalii6) + " " + Alltrim(C_TMP_I.detalii7) + " " + Alltrim(C_TMP_I.detalii8) + " " + ; Alltrim(C_TMP_I.detaliip1) + " " + Alltrim(C_TMP_I.detaliip2) + " " + Alltrim(C_TMP_I.detaliip3) + " " + ; Alltrim(C_TMP_I.detaliip4) + " " + Alltrim(C_TMP_I.detaliip5) + " " + Alltrim(C_TMP_I.detaliip6)) mtextoriginal = C_TMP_I.data_t + " " + Chr(13) + C_TMP_I.suma + " " + Chr(13) + Alltrim(C_TMP_I.iban) + " " + Chr(13) + Alltrim(C_TMP_I.nume) + " " + Alltrim(C_TMP_I.cf) + " " + Chr(13) + mexplicatie + " " + Chr(13) + Alltrim(C_TMP_I.nr) * Array sau lista cu numere de facturi separate prin "," daca exista in descriere * (?:( \d+)(?![\.\d])(?!2021).) spatiu apoi cifre, fara . si cifra si fara anul curent (sa excluda datele) lcFacturi = '' lcDescriereFacturi = m.mexplicatie lnResults = GetRegExpAllNumbers(m.lcDescriereFacturi, @m.lcFacturi) Replace explicatie With mexplicatie, original With mtextoriginal, iban With C_TMP_I.iban, documente With m.lcFacturi Endscan Endproc * Procedure csvMobilPay Lparameters pselectedfile Local mtextoriginal, mdata, mexplicatie, msuma, mcomanda, lcTip, lcTip2, lcNr This.cIBAN = 'MobilPay' mtextoriginal = "" Create Cursor C_TMP_I (c1 C (4), c2 C (24), Id C (24), ; data_v C (24), data_o C(10), suma C (24), creditat C (24), comision ; C (10), tva_comis C (10), moneda C (3), c9 C (24), ; c10 C (24), prenume C (36), nume C (36), email C (60), ; tel C (20), descriere C (100)) Append From (mSelectedFile) Delimited With Char, *Locate For .Not. Empty(data_v) Scan For .Not. Empty(data_v) mdata = setdategerman(C_TMP_I.data_v) msuma = This.setsuma(C_TMP_I.suma) mcomision = This.setsuma(C_TMP_I.comision) + This.setsuma(C_TMP_I.tva_comis) lcNr = DTOS(mdata) lcTip2 = '' IF msuma = 0 AND mcomision <> 0 msuma = -ABS(mcomision) lcTip2 = This.cTipComisionDecont ENDIF If !Empty(mdata) And msuma <> 0 Select c_iex Insert Into c_iex (Data) Values (mdata) If msuma < 0 lcTip = "D" Else lcTip = "C" ENDIF * comisioanele au suma negativa msuma = ABS(msuma) mexplicatie = Alltrim(C_TMP_I.descriere) && "Plata comanda SOWB21009885 de la Safetyone" mcomanda = ALLTRIM(STREXTRACT(mexplicatie, 'plata comanda ', ' ', 1, 1+2)) mtextoriginal = Alltrim(C_TMP_I.Id) + " " + C_TMP_I.data_v + " " + Chr(13) + ; Alltrim(C_TMP_I.suma) + " " + Chr(13) + Alltrim(C_TMP_I.nume) + " " + ; Alltrim(C_TMP_I.prenume) + Chr(13) + Alltrim(C_TMP_I.email) + " " + Chr(13) + Alltrim(C_TMP_I.tel) Replace explicatie With mexplicatie, original With mtextoriginal, tel With C_TMP_I.tel, email With C_TMP_I.email, tip_2 WITH m.lcTip2, comenzi WITH mcomanda, ; tert With Upper(Alltrim(C_TMP_I.nume)) + " " + Upper(Alltrim(C_TMP_I.prenume)), tip WITH m.lcTip, suma With msuma, nr WITH m.lcNr Endif Endscan Endproc * Procedure txtPosta Lparameters pselectedfile Local mtextoriginal This.cIBAN = 'POSTA' *:Global mexplicatie, msuma mtextoriginal = "" Create Cursor C_TMP_I (c1 C (24), c2 C (24), nr C (24), data1 C (10), oficiu C (36), tert C (64), adresa C (150), suma C (24), linie C (1), explicatie C (200), data_v C (10)) Append From (mSelectedFile) Delimited With Char ";" Scan For !Empty(data_v) Select c_iex Insert Into c_iex (Data) Values (setdategerman(C_TMP_I.data_v)) msuma = This.setsuma(C_TMP_I.suma) Replace tip With "C", suma With msuma, nr With C_TMP_I.nr mexplicatie = Alltrim(C_TMP_I.explicatie) Replace tert With Upper(C_TMP_I.tert) mtextoriginal = C_TMP_I.data_v + " " + C_TMP_I.c2 + " " + C_TMP_I.nr + " " + Chr(13) + Alltrim(C_TMP_I.suma) + " " + Chr(13) + Alltrim(C_TMP_I.tert) + " " + Chr(13) + Alltrim(C_TMP_I.adresa) + Chr(13) + Alltrim(C_TMP_I.explicatie) Replace explicatie With mexplicatie, original With mtextoriginal Endscan Endproc * Function setsuma Lparameters plsumatext Local ii plsumatext = Alltrim(plsumatext) mlen = Len(plsumatext) For ii = 1 To mlen If !Inlist(Substr(plsumatext, ii, 1), " ", ",", ".", "-", "+", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9") plsumatext = Left(plsumatext, ii - 1) Exit Endif Endfor Do Case Case "." $ Right(Alltrim(plsumatext), 3) Return Val(Strtran(plsumatext, ",", "")) Case "," $ Right(Alltrim(plsumatext), 3) Return Val(Strtran(Strtran(plsumatext, ".", ""), ",", ".")) Otherwise Return Val(Strtran(plsumatext, ",", "")) Endcase Endfunc && SetSuma * * Nu am verificat ce face Function actsume Local mnrrec, lcSelect lcSelec = Select() Select match Do Case Case achitat < neachitat_real Replace is_total With 0 Case achitat = neachitat_real Replace is_total With 1 Case achitat > Total .And. Total > 0 Select (m.lcSelect) Return .F. Endcase If .Not. Eof() mnrrec = Recno() Endif Scan Replace neachitat With neachitat_real - achitat Endscan Sum achitat, neachitat To lnAchitat, lnNeachitat If Type("mNrRec") = "N" Goto mnrrec Endif lnRamas = c_iex.suma - m.lnAchitat If m.lnRamas = 0 Replace asociat With 1 In c_iex Else Replace asociat With 0 In c_iex Endif Select (m.lcSelect) Return .T. Endfunc && ActSume * Enddefine && ExtrasBanca_General * Function ValidCNP Lparameters lpcnp If Len(Alltrim(lpcnp)) <> 13 Return .F. Endif n1 = Val(Substr(lpcnp, 1, 1)) n2 = Val(Substr(lpcnp, 2, 1)) n3 = Val(Substr(lpcnp, 3, 1)) n4 = Val(Substr(lpcnp, 4, 1)) n5 = Val(Substr(lpcnp, 5, 1)) n6 = Val(Substr(lpcnp, 6, 1)) n7 = Val(Substr(lpcnp, 7, 1)) n8 = Val(Substr(lpcnp, 8, 1)) n9 = Val(Substr(lpcnp, 9, 1)) n10 = Val(Substr(lpcnp, 10, 1)) n11 = Val(Substr(lpcnp, 11, 1)) n12 = Val(Substr(lpcnp, 12, 1)) n13 = Val(Substr(lpcnp, 13, 1)) C = Mod((n1 * 2 + n2 * 7 + n3 * 9 + n4 * 1 + n5 * 4 + n6 * 6 + n7 * 3 + n8 * 5 + n9 * 8 + n10 * 2 + n11 * 7 + n12 * 9), 11) If C = 10 C = 1 Endif If C = n13 Return .T. Else Return .F. Endif Endfunc * Function GetDataCNP Lparameters plcnp Local mlan mlan = Substr(plcnp, 2, 2) If Val(mlan) > 20 .And. !Inlist(Left(plcnp, 1), "5", "6") mlan = "19" + mlan Else mlan = "20" + mlan Endif Return Ctod(Substr(plcnp, 6, 2) + "." + Substr(plcnp, 4, 2) + "." + mlan) Endfunc * Function verifcf Lparameters plcfisc Local mlsuma, mlrest plcfisc = getnrfromstring(plcfisc) If Len(Alltrim(plcfisc)) = 13 If !ValidCNP(plcfisc) Return .F. Else Return .T. Endif Else If Len(Alltrim(plcfisc)) < 2 .Or. Len(Alltrim(plcfisc)) > 9 .Or. plcfisc = "0" Return .F. Endif Endif plcfisc = Padl(Alltrim(plcfisc), 10, "0") mlsuma = 0 For I = 1 To 10 mlsuma = mlsuma + Val(Substr(plcfisc, I, 1)) * Val(Substr("753217532", I, 1)) Endfor mlrest = Mod((mlsuma * 10), 11) If mlrest = 10 mlrest = 0 Endif If Val(Substr(plcfisc, 10, 1)) <> mlrest Return .F. Else Return .T. Endif Endfunc * Function getnrfromstring Lparameters plstr Local mlenstr mlenstr = Len(Alltrim(plstr)) Do While Isalpha(plstr) .Or. Left(plstr, 1) == " " .Or. Left(plstr, 1) == "&" .Or. Left(plstr, 1) == "/" .Or. Left(plstr, 1) == "-" .Or. Left(plstr, 1) == "_" .Or. Left(plstr, 1) == "." .Or. Left(plstr, 1) == ":" plstr = Rtrim(Substr(plstr, 2, mlenstr)) Enddo Return plstr Endfunc * Function getdigitsfromstring Lparameters plstr, plnrdigits, pltip, plseparator Local mlenstr, ii, mreturnnrintermed, mreturnnrfinal mlenstr = Len(Alltrim(plstr)) mreturnnrintermed = "" mreturnnrfinal = "" For ii = 1 To mlenstr mcurentchar = Substr(plstr, ii, 1) If Isdigit(mcurentchar) .Or. (pltip = 3 .And. Inlist(mcurentchar, ".", ",")) mreturnnrintermed = mreturnnrintermed + mcurentchar Else If pltip = 1 .Or. pltip = 2 mreturnnrintermed = "" Endif Endif If Len(mreturnnrintermed) >= plnrdigits Do Case Case pltip = 1 If Len(mreturnnrintermed) <= 12 .And. verifcf(mreturnnrintermed) .And. !Isdigit(Substr(plstr, ii + 1, 1)) mreturnnrfinal = mreturnnrintermed Exit Endif Case pltip = 2 If ValidCNP(mreturnnrintermed) mreturnnrfinal = mreturnnrintermed Exit Endif Case pltip = 3 mreturnnrintermed = Strtran(mreturnnrintermed, plseparator, "") If Val(mreturnnrintermed) > 0 mreturnnrfinal = mreturnnrintermed Exit Endif Endcase Endif Endfor Return mreturnnrfinal Endfunc * Function getibanfromstring Lparameters plstr, plpoz Local mlenstr, ii, mreturnnrintermed, mreturnnrfinal mlenstr = Len(Alltrim(plstr)) mreturnnrintermed = "" mreturnnrfinal = "" misok = .F. For ii = 1 To mlenstr mcurentchar = Substr(plstr, ii, 1) If misok If Len(mreturnnrintermed) < 24 mreturnnrintermed = mreturnnrintermed + mcurentchar Else Exit Endif Else If mcurentchar == "R" .And. mreturnnrintermed = "" .And. Substr(plstr, ii + 1, 1) == "O" mreturnnrintermed = mreturnnrintermed + mcurentchar Else If mcurentchar == "O" .And. mreturnnrintermed = "R" mreturnnrintermed = mreturnnrintermed + mcurentchar Else If !misok .And. Inlist(mcurentchar, "1", "2", "3", "4", "5", "6", "7", "8", "9", "0") .And. mreturnnrintermed = "RO" .And. Len(mreturnnrintermed) <= 3 mreturnnrintermed = mreturnnrintermed + mcurentchar If plpoz = 1 misok = .T. Else mreturnnrintermed = "" plpoz = plpoz - 1 Endif Else mreturnnrintermed = "" Endif Endif Endif Endif Endfor If verifiban(mreturnnrintermed) Return mreturnnrintermed Else Return "" Endif Endfunc * Function getnumberincrement Lparameters pactualnumber Local mstartchr, mintermed mstartchr = "" mintermed = Alltrim(pactualnumber) mlennr = Len(mintermed) Do While Isalpha(mintermed) .Or. Left(mintermed, 1) == " " .Or. Left(mintermed, 1) == "-" .Or. Left(mintermed, 1) == "." .Or. Left(mintermed, 1) == "/" mstartchr = mstartchr + Left(mintermed, 1) mintermed = Rtrim(Substr(mintermed, 2, 16)) Enddo Return Round(Val(Strtran(Strtran(mintermed, "e", ""), "E", "")), 0) Endfunc * Function GetSerieIncrement Lparameters pactualnumber Local mstartchr, mintermed mstartchr = "" mintermed = Alltrim(pactualnumber) mlennr = Len(mintermed) Do While Isalpha(mintermed) .Or. Inlist(Left(mintermed, 1), " ", ".", "/", "-") mstartchr = mstartchr + Left(mintermed, 1) mintermed = Rtrim(Substr(mintermed, 2, 16)) Enddo Return mstartchr Endfunc * * Function setdategerman Lparameters pldatatext Local mdatar, mlzi, mlluna, mlan, mlunatext, lcSetDate *:Global mlocc, mlocc1 lcSetDate = Set("Date") If "ian" $ pldatatext .Or. "feb" $ pldatatext .Or. "mar" $ pldatatext .Or. "apr" $ pldatatext .Or. "mai" $ pldatatext .Or. "iun" $ pldatatext .Or. "iul" $ pldatatext .Or. "aug" $ pldatatext .Or. "sep" $ pldatatext .Or. "oct" $ pldatatext .Or. "noi" $ pldatatext .Or. "dec" $ pldatatext .Or. "jan" $ pldatatext .Or. "may" $ pldatatext .Or. "jun" $ pldatatext .Or. "jul" $ pldatatext .Or. "nov" $ pldatatext mlocc = At(" ", pldatatext, 2) mlocc1 = At(" ", pldatatext, 1) If mlocc = 0 mlocc = At("-", pldatatext, 2) mlocc1 = At("-", pldatatext, 1) If mlocc = 0 mlocc = At(".", pldatatext, 2) mlocc1 = At(".", pldatatext, 1) Endif Endif mlzi = Substr(pldatatext, 1, mlocc1 - 1) mlunatext = Lower(Substr(pldatatext, mlocc1 + 1, mlocc - 3)) mlluna = "" Do Case Case mlunatext = "ian" .Or. mlunatext = "jan" mlluna = "01" Case mlunatext = "feb" mlluna = "02" Case mlunatext = "mar" mlluna = "03" Case mlunatext = "apr" mlluna = "04" Case mlunatext = "mai" .Or. mlunatext = "may" mlluna = "05" Case mlunatext = "iun" .Or. mlunatext = "jun" mlluna = "06" Case mlunatext = "iul" .Or. mlunatext = "jul" mlluna = "07" Case mlunatext = "aug" mlluna = "08" Case mlunatext = "sep" mlluna = "09" Case mlunatext = "oct" mlluna = "10" Case mlunatext = "noi" .Or. mlunatext = "nov" mlluna = "11" Case mlunatext = "dec" mlluna = "12" Endcase mlan = Substr(pldatatext, mlocc + 1, 4) mdatar = Ctod(mlzi + "." + mlluna + "." + mlan) Else pldatatext = Substr(pldatatext, 1, 10) If "," $ pldatatext pldatatext = Left(pldatatext, At(",", pldatatext) - 1) Endif mdatar = {} If Substr(pldatatext, 3, 1) == '/' .Or. Substr(pldatatext, 2, 1) == '/' mdatar = Ctod(Strtran(pldatatext, "/", ".")) Else If Left(pldatatext, 3) == '201' .Or. Left(pldatatext, 3) == '202' Set Date To Japan If "-" $ pldatatext .Or. "/" $ pldatatext mdatar = Ctod(Strtran(pldatatext, "-", "/" )) Else mdatar = Ctod(Substr(pldatatext, 1, 4) + "/" + Substr(pldatatext, 5, 2) + "/" + Substr(pldatatext, 7, 2)) Endif Set Date To German Else mdatar = Ctod(pldatatext) Endif Endif Endif Set Date &lcSetDate Return mdatar Endfunc * Function EliminVirguleDintreGhilimele Lparameters plstring, pltipghilimele, plinlocuitor Local mnrghilimele, mlen, mstartghilimele, ij mlen = Len(plstring) mnrghilimele = Len(pltipghilimele) mstartghilimele = 0 For ij = 1 To mlen If Substr(plstring, ij, mnrghilimele) = pltipghilimele If mstartghilimele = 0 mstartghilimele = 1 Else mstartghilimele = 0 Endif Endif If Substr(plstring, ij, 1) = ',' .And. mstartghilimele = 1 If Type("plInlocuitor") = "C" plstring = Substr(plstring, 1, ij - 1) + plinlocuitor + Alltrim(Substr(plstring, ij + 1, 2000000)) Else plstring = Substr(plstring, 1, ij - 1) + Alltrim(Substr(plstring, ij + 1, 2000000)) Endif mlen = mlen - 1 ij = ij - 1 Endif Endfor Return plstring Endfunc * -------------------------------------------------------------------- * Intoarce numarul de rezultate * Parametrul tcItems (OUT) o lista cu numere separate prin virgula din textul original * -------------------------------------------------------------------- Function GetRegExpAllNumbers Lparameters tcSourceString, tcItems * tcSourceString: Bld. Stefan cel Mare 14 Tirgu Neamt * tcPattern: [A-Za-z\s]+$ = (caracter sau spatiu) de cel putin o data la sfarsitul liniei = Tirgu Neamt * tcPattern: \d+[A-Za-z\s]+$ = oricate cifre (caracter sau spatiu) de cel putin o data la sfarsitul liniei = 14 Tirgu Neamt * taItems "A">taItems : array cu rezultatele (OUT) taItems[1..Result] sau taItems "C" lista facturi separate prin virgula Local lnResults, lcPattern, lcAn, lcAn2, lcSourceString *!* lcRegExp = "(\d)+" *!* lcRegExp = "(?select id_part from nom_parteneri where replace(UPPER(cod_fiscal),' ', '') = replace(UPPER(?pcCodFiscal), ' ', '') and sters = 0 and inactiv = 0??cCursor=>cClientiROA]) Local lcAdresa, lcAdreseParteneri, lcApart, lcBanca, lcBloc, lcCod_fiscal, lcCodpostal, lcCont_Banca Local lcCorespDel, lcDA_apare, lcDenumire, lcDenumire_adresa, lcEmail, lcEtaj, lcFax, lcIdPart Local lcIdString, lcId_Judet, lcId_categ_ent, lcId_loc, lcId_loc_inreg, lcId_tara, lcId_util, lcItem Local lcJudet, lcJudetBucuresti, lcLocalitate, lcMesaj, lcMotiv_inactiv, lcNumar, lcNume, lcPrefix Local lcPrenume, lcPrincipala, lcReg_comert, lcScara, lcSelect, lcSql, lcSqlCod, lcSqlDenumire Local lcSqlInsert, lcSqlPart, lcStrada, lcSufix, lcTara, lcTelefon1, lcTelefon2, lcTip_persoana Local lcWeb, lcinactiv, llCallBack, llSucces, lnIdJudet, lnIdJudetBucuresti, lnIdLocalitateBucuresti Local lnIdTaraRO, lnItem, lnItems, lnSucces Local lcCuiNorm Private pnIdAdresa, pcCodFiscal, pcDenumire, pnIdPart, pnNrAdrese, pnIdJudet llCallBack = Type('toCallBackForm') = 'O' And Pemstatus(m.toCallBackForm, 'trace', 5) pnIdJudet = 0 pcCodFiscal = '' pcDenumire = '' pnIdPart = 0 pnNrAdrese = 0 lcSelect = Select() lcSqlPart = [select id_part, cod_fiscal, denumire from nom_parteneri where sters = 0 and inactiv = 0] llSucces = goExecutor.oExecuta(m.lcSqlPart, 'cParteneriROA') If !m.llSucces Return m.llSucces Endif Select id_part, cod_fiscal, denumire, NormalizeazaCUI(cod_fiscal) As cui_norm From cParteneriROA Into Cursor cParteneriROA Readwrite Index On cui_norm Tag cuinorm lcAdreseParteneri = [select id_adresa, id_part, localitate, id_loc, judet, id_judet, tara, id_tara from vadrese_parteneri] llSucces = goExecutor.oExecuta(m.lcAdreseParteneri, 'cAdreseROA') If !m.llSucces Use In (Select('cParteneriROA')) Return m.llSucces Endif *!* lcSqlCod = [select MAX(id_part) as id_part from nom_parteneri where replace(UPPER(cod_fiscal),' ', '') = ?pcCodFiscal and sters = 0 and inactiv = 0] *!* lcSqlDenumire = [select MAX(id_part) as id_part from nom_parteneri where denumire = ?pcDenumire and sters = 0 and inactiv = 0] Select (m.tcCursorParteneri) Scan pcCodFiscal = Alltrim(Upper(Strtran(cod_fiscal, ' ', ''))) pcDenumire = Alltrim(Upper(denumire)) IF LEN(m.pcCodFiscal) <= 3 pcCodFiscal = '' ENDIF pnIdPart = 0 lcAdresa = Iif(Type(m.tcCursorParteneri + '.adresa') = 'C', Strtran(Alltrim(Upper(Nvl(adresa, ''))), Chr(13), ' '), '') * Preciziei (Strada), Nr. 6M, Complex rezidential TEN BLOCKS Bl. 8B, Sc. 1, Et. 6, Ap. 32, Cod Postal 062203, Bucuresti, Romania * Doinei (Strada), Nr. 94, Et. 2, Ap. 12 int 412, Cod Postal 077086, Fundeni, Romania * Lieberman Partners Srl Braniste Valeriu (Strada), Nr. 37-39, Et. 2, Ap. 8, Cod Postal 030715, Bucuresti, Romania Wait Window 'Import parteneri... Caut partenerul ' + Transform(Recno()) + '/' + Transform(Reccount()) Nowait Select cParteneriROA If !Empty(m.pcCodFiscal) Locate For Alltrim(Strtran(cod_fiscal, ' ', '')) = m.pcCodFiscal *!* lnSucces = goExecutor.oSelect2Value(m.lcSqlCod, @pnIdPart) If !Found() lcCuiNorm = NormalizeazaCUI(m.pcCodFiscal) If !Empty(m.lcCuiNorm) Seek m.lcCuiNorm Order cuinorm Endif Endif Else Locate For Alltrim(Upper(denumire)) = m.pcDenumire *!* lnSucces = goExecutor.oSelect2Value(m.lcSqlDenumire, @pnIdPart) Endif *!* If m.lnSucces = -1 *!* Thisform.trace('Eroare la selectia din clienti ROA ' + goExecutor.oPrelucrareEroare()) *!* Exit *!* Endif If Found() pnIdPart = cParteneriROA.id_part Endif If !Empty(Nvl(m.pnIdPart, 0)) Select (m.tcCursorParteneri) Replace id_part With m.pnIdPart lcMesaj = 'Partener existent ' + Alltrim(denumire) + ' CUI: ' + Alltrim(cod_fiscal) + ' ID: ' + Alltrim(Transform(id_part)) If m.llCallBack m.toCallBackForm.trace(m.lcMesaj) Endif Else * Adaugare clienti Select (m.tcCursorParteneri) lcDenumire = Left(Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), ""), 100) lcNume = Left(Nvl(Strtran(Alltrim(Upper(nume)), ['], ['']), ""), 100) lcPrenume = Left(Nvl(Strtran(Alltrim(Upper(prenume)), ['], ['']), ""), 100) If Empty(m.lcNume) lcNume = m.lcDenumire lcPrenume = '' Endif lcCod_fiscal = Upper(Alltrim(cod_fiscal)) IF LEN(m.lcCod_fiscal) <= 3 lcCod_fiscal = '' ENDIF lcReg_comert = Nvl(Alltrim(Upper(reg_com)), "") lcId_loc_inreg = 'NULL' lcId_categ_ent = 'NULL' lcPrefix = "" lcSufix = "" lcTip_persoana = Iif(!Empty(m.lcCod_fiscal) And Len(m.lcCod_fiscal) < 13, "1", "2") lcBanca = "" lcCont_Banca = "" lcinactiv = "0" lcMotiv_inactiv = "" lcIdString = "16" lcCorespDel = "" lcId_util = "-3" lcSqlInsert = [begin pack_def.adauga_partener('] + m.lcDenumire + [','] + m.lcNume + [','] + m.lcPrenume + [','] + m.lcCod_fiscal + [','] + ; M.lcReg_comert + [',] + m.lcId_loc_inreg + [,] + m.lcId_categ_ent + [,'] + m.lcPrefix + [','] + m.lcSufix + [',] + ; M.lcTip_persoana + [,'] + m.lcBanca + [','] + m.lcCont_Banca + [',] + m.lcinactiv + [,'] + m.lcMotiv_inactiv + [',] + ; M.lcId_util + [,'] + m.lcIdString + [','] + m.lcCorespDel + [',?@pnIdPart); end;] llSucces = goExecutor.oExecuta(m.lcSqlInsert) If !Empty(Nvl(m.pnIdPart, 0)) Select (m.tcCursorParteneri) Replace id_part With m.pnIdPart INSERT INTO cParteneriROA (id_part, cod_fiscal, denumire) VALUES (m.pnIdPart, m.lcCod_fiscal, m.lcDenumire) If m.llCallBack m.toCallBackForm.trace('Client nou ' + Alltrim(denumire) + ' CUI: ' + Alltrim(cod_fiscal) + ' ID: ' + Alltrim(Transform(id_part))) Endif Else Select (m.tcCursorParteneri) lcMesaj = 'Eroare la adaugarea in clienti ROA ' + Alltrim(denumire) + ' CUI: ' + Alltrim(cod_fiscal) + Chr(13) + Chr(10) + goExecutor.oPrelucrareEroare() If m.llCallBack m.toCallBackForm.trace(m.lcMesaj) Endif *AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption ) Exit Endif && !Empty(Nvl(m.pnIdPart,0)) Endif && !Empty(Nvl(m.pnIdPart, 0)) *********************************** * Adresa partener *********************************** If !Empty(m.lcAdresa) Calculate Cnt(id_adresa) For id_part = m.pnIdPart To m.pnNrAdrese In cAdreseROA *!* pnNrAdrese = 0 *!* lnSucces = goExecutor.oSelect2Value([SELECT COUNT(*) as nr FROM adrese_parteneri WHERE id_part = ?pnIdPart], @pnNrAdrese) *!* If m.lnSucces < 0 *!* lcMesaj = goExecutor.cEroare *!* Thisform.trace(m.lcMesaj) *!* AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption ) *!* Exit *!* Endif lcIdPart = Alltrim(Str(m.pnIdPart)) lcDenumire_adresa = "" lcDA_apare = "0" lcStrada = "" lcNumar = "" lcBloc = "" lcScara = "" lcApart = "" lcEtaj = "" lcId_loc = "NULL" lcLocalitate = "" lcId_Judet = "NULL" lcCodpostal = "NULL" lcId_tara = "NULL" lcTelefon1 = "" lcTelefon2 = "" lcFax = "" lcEmail = "" lcWeb = "" lcPrincipala = Iif(m.pnNrAdrese = 0, "1", "0") lcinactiv = "0" lcId_util = "-3" lnItems = Getwordcount(m.lcAdresa, ',') For lnItem = 1 To m.lnItems lcItem = Alltrim(Getwordnum(m.lcAdresa, m.lnItem, ',')) Do Case Case m.lnItem = 1 && strada lcStrada = Left(Alltrim(m.lcItem), 150) Case 'NR.' $ m.lcItem && nr strada lcNumar = Left(Alltrim(Strtran(m.lcItem, 'NR.', '')), 10) Case 'BL.' $ m.lcItem lcBloc = Left(Alltrim(Strtran(m.lcItem, 'BL.', '')), 30) Case 'SC.' $ m.lcItem lcScara = Left(Alltrim(Strtran(m.lcItem, 'SC.', '')), 10) Case 'ET.' $ m.lcItem lcEtaj = Left(Alltrim(Strtran(m.lcItem, 'ET.', '')), 20) Case 'AP.' $ m.lcItem lcApart = Left(Alltrim(Strtran(m.lcItem, 'AP.', '')), 10) Case 'COD POSTAL' $ m.lcItem lcCodpostal = Alltrim(Str(Int(Val(Left(Alltrim(Strtran(m.lcItem, 'COD POSTAL', '')), 20))))) Case 'LOC.' $ m.lcItem lcLocalitate = Alltrim(Strtran(m.lcItem, 'LOC.', '')) Case 'JUD.' $ m.lcItem lcJudet = Alltrim(Strtran(m.lcItem, 'JUD.', '')) Case m.lnItem = m.lnItems - 1 And Empty(m.lcLocalitate) lcLocalitate = m.lcItem Case m.lnItem = m.lnItems lcTara = m.lcItem Endcase Endfor lnIdJudetBucuresti = 10 lcJudetBucuresti = "BUCURESTI" lnIdLocalitateBucuresti = 1759 lnIdTaraRO = 1 If m.lcLocalitate = 'BUCURESTI' lcLocalitate = 'BUCURESTI SECTORUL 1' Endif If Empty(m.lcLocalitate) lcLocalitate = 'BUCURESTI SECTORUL 1' Endif If Empty(m.lcJudet) lcJudet = m.lcJudetBucuresti Endif * caut adresa dupa localitate. daca nu o gasesc, o adaug Select cAdreseROA Locate For id_part = m.pnIdPart And localitate = m.lcLocalitate If !Found() pnIdJudet = 0 llSucces = goExecutor.oSelecteaza2Value([select j.id_judet, j.id_tara from syn_nom_judete j where j.judet = '] + m.lcJudet + [' and j.inactiv = 0 and j.sters = 0], @m.pnIdJudet) If m.llSucces If Empty(Nvl(m.pnIdJudet, 0)) llSucces = goExecutor.oSelecteaza2Value([select j.id_judet, j.id_tara from syn_nom_judete j where j.judet like '%] + m.lcJudetBucuresti + [%' and j.inactiv = 0 and j.sters = 0], @m.pnIdJudet) If m.llSucces lnIdJudet = m.pnIdJudet Else lnIdJudet = m.lnIdJudetBucuresti Endif Else lnIdJudet = m.pnIdJudet Endif Else If m.llCallBack m.toCallBackForm.trace(goExecutor.cEroare) Endif lnIdJudet = m.lnIdJudetBucuresti Endif lcSql = [select l.id_loc, l.id_judet, j.id_tara from syn_nom_localitati l left join syn_nom_judete j on l.id_judet = j.id_judet where l.id_judet = ] + Alltrim(Str(m.lnIdJudet)) + [ and l.localitate = '] + m.lcLocalitate + [' and l.inactiv = 0 and l.sters = 0 order by l.localitate] lnSucces = goExecutor.oExecuta(m.lcSql, 'cLocalitateTemp') If m.llSucces If Reccount('cLocalitateTemp') > 0 Select cLocalitateTemp Go Top lcId_loc = Alltrim(Str(id_loc)) lcId_Judet = Alltrim(Str(id_judet)) lcId_tara = Alltrim(Str(id_tara)) Use In (Select('cLocalitateTemp')) Else Use In (Select('cLocalitateTemp')) lcSql = [select l.id_loc, l.id_judet, j.id_tara from syn_nom_localitati l left join syn_nom_judete j on l.id_judet = j.id_judet where l.id_judet = ] + Alltrim(Str(m.lnIdJudet)) + [ and l.inactiv = 0 and l.sters = 0 order by l.localitate] llSucces = goExecutor.oExecuta(m.lcSql, 'cLocalitateTemp') If m.llSucces Select cLocalitateTemp Go Top lcId_loc = Alltrim(Str(id_loc)) lcId_Judet = Alltrim(Str(id_judet)) lcId_tara = Alltrim(Str(id_tara)) Else If m.llCallBack m.toCallBackForm.trace(goExecutor.cEroare) Endif Endif Use In (Select('cLocalitateTemp')) Endif Else If m.llCallBack m.toCallBackForm.trace(goExecutor.cEroare) Endif Endif If Empty(Nvl(m.lcId_loc, '')) lcId_loc = Alltrim(Str(m.lnIdLocalitateBucuresti)) lcId_Judet = Alltrim(Str(m.lnIdJudetBucuresti)) lcId_tara = Alltrim(Str(m.lnIdTaraRO)) Endif && llSucces If m.lcId_loc <> 'NULL' pnIdAdresa = 0 *!* * caut adresa dupa localitate. daca nu o gasesc, o adaug *!* lcSql = [SELECT id_adresa FROM adrese_parteneri where sters = 0 and inactiv = 0 and id_loc = ] + m.lcId_loc + [ AND id_part = ] + m.lcIdPart *!* lnSucces = goExecutor.oSelect2Value(m.lcSql, @pnIdAdresa) *!* If m.lnSucces < 0 *!* lcMesaj = goExecutor.cEroare *!* Thisform.trace(m.lcMesaj) *!* AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption ) *!* Exit *!* Endif If Empty(Nvl(m.pnIdAdresa, 0)) lcSql = [begin pack_def.adauga_adresa_partener2(] + m.lcIdPart + [,'] + m.lcDenumire_adresa + [',] + m.lcDA_apare + [,] + ; ['] + m.lcStrada + [','] + m.lcNumar + [','] + ; M.lcBloc + [','] + m.lcScara + [','] + m.lcApart + [','] + m.lcEtaj + [',] + m.lcId_loc + [,'] + m.lcLocalitate + [',] + m.lcId_Judet + [,] + m.lcCodpostal + [,] + m.lcId_tara + [,'] + ; M.lcTelefon1 + [','] + m.lcTelefon2 + [','] + m.lcFax + [','] + m.lcEmail + [','] + m.lcWeb + [',] + ; M.lcPrincipala + [,] + m.lcinactiv + [,] + m.lcId_util + [,?@pnIdAdresa); end;] llSucces = goExecutor.oExecuta(m.lcSql) If !m.llSucces lcMesaj = goExecutor.cEroare If m.llCallBack m.toCallBackForm.trace(m.lcMesaj) Endif * AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption ) Exit Endif Endif && empty(m.pnIdAdresa) Endif && m.lcId_loc <> 'NULL' Endif && !found() Endif && !empty(m.lcAdresa) Endscan && tcCursorParteneri Use In (Select('cParteneriROA')) Use In (Select('cAdreseROA')) Select (m.lcSelect) Return m.llSucces Endproc && CompleteazaParteneriROA Procedure CompleteazaValutaROA Lparameters tcCursorValuta, toCallBackForm * tcCursorValuta: numele cursorului cValuta (valuta) * toCallBackForm: referinta la un formular cu metoda Trace(tcMesaj) optional Local lcMesaj, lcSelect, lcSql, lcValuta, llCallBack, llSucces, lnIdValuta lcSelect = Select() llCallBack = Type('toCallBackForm') = 'O' And Pemstatus(m.toCallBackForm, 'trace', 5) lcSql = [select id_valuta, nume_val as valuta from vnom_valute] llSucces = goExecutor.oExecuta(m.lcSql, 'cValuteROA') If !m.llSucces If m.llCallBack lcMesaj = goExecutor.cEroare m.toCallBackForm.trace(m.lcMesaj) Endif Return m.llSucces Endif Select (m.tcCursorValuta) Scan lcValuta = Alltrim(Upper(Strtran(valuta, ' ', ''))) lnIdValuta = 0 Wait Window 'Import valute ... Caut valuta' + Transform(Recno()) + '/' + Transform(Reccount()) Nowait Select cValuteROA If !Empty(m.lcValuta) Locate For Alltrim(Strtran(valuta, ' ', '')) = m.lcValuta If Found() lnIdValuta = cValuteROA.id_valuta Select (m.tcCursorValuta) Replace id_valuta With m.lnIdValuta Endif && found Endif && empty Endscan && tcCursorValuta Use In (Select('cValuteROA')) Select (m.lcSelect) Return m.llSucces Endproc