*-------------------------------------------------------------------------------------------------------------------------------------------------------- * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- *< FOXBIN2PRG: Version="1.21" SourceFile="frm_import.scx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * * #INCLUDE "comun.h" DEFINE CLASS dataenvironment AS dataenvironment *< CLASSDATA: Baseclass="dataenvironment" Timestamp="" Scale="" Uniqueid="" ClassIcon="1" /> * DataSource = .NULL. Height = 200 Left = 1 Name = "Dataenvironment" Top = 220 Width = 520 * ENDDEFINE DEFINE CLASS form1 AS form *< CLASSDATA: Baseclass="form" Timestamp="" Scale="" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="cmdExport" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="edtInfo" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="txtData1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Label1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Command1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="chkTVAIncasare" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="chkTest" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="chkFacturi" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="txtData2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Label2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="chkHotel" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="chkVanzariRestaurant" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="chkIesiriRestaurant" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="chkIntrariRestaurant" UniqueID="" Timestamp="" /> * *m: completeazaparteneriroa *m: connectmentor *m: connectroa *m: creeazanote *m: disconnectmentor *m: disconnectroa *m: exportdate *m: scrienote *m: sql_temp_insert *m: sterge_import *m: trace *m: verificafactura *p: nhandlementor *p: _memberdata && XML Metadata for customizable properties * * Caption = "Import Fidelio & Biz > ROA" DoCreate = .T. Height = 538 Icon = app.ico Left = 0 Name = "form1" nhandlementor = 0 ShowWindow = 0 Top = 0 Width = 627 WindowType = 1 _memberdata = * ADD OBJECT 'chkFacturi' AS checkbox WITH ; Alignment = 0, ; AutoSize = .T., ; BackColor = 240,240,240, ; BackStyle = 0, ; Caption = "Nu scrie facturi duplicate", ; Height = 17, ; Left = 120, ; Name = "chkFacturi", ; TabIndex = 6, ; Top = 56, ; Value = 1, ; Width = 153 *< END OBJECT: BaseClass="checkbox" /> ADD OBJECT 'chkHotel' AS checkbox WITH ; Alignment = 0, ; AutoSize = .T., ; BackColor = 240,240,240, ; BackStyle = 0, ; Caption = "Hotel", ; Height = 17, ; Left = 480, ; Name = "chkHotel", ; TabIndex = 6, ; Top = 54, ; Value = 1, ; Width = 47 *< END OBJECT: BaseClass="checkbox" /> ADD OBJECT 'chkIesiriRestaurant' AS checkbox WITH ; Alignment = 0, ; AutoSize = .T., ; BackColor = 240,240,240, ; BackStyle = 0, ; Caption = "Iesiri Restaurant", ; Height = 17, ; Left = 360, ; Name = "chkIesiriRestaurant", ; TabIndex = 6, ; Top = 54, ; Value = 1, ; Width = 109 *< END OBJECT: BaseClass="checkbox" /> ADD OBJECT 'chkIntrariRestaurant' AS checkbox WITH ; Alignment = 0, ; AutoSize = .T., ; BackColor = 240,240,240, ; BackStyle = 0, ; Caption = "Intrari Restaurant", ; Height = 17, ; Left = 360, ; Name = "chkIntrariRestaurant", ; TabIndex = 6, ; Top = 36, ; Value = 1, ; Width = 113 *< END OBJECT: BaseClass="checkbox" /> ADD OBJECT 'chkTest' AS checkbox WITH ; Alignment = 0, ; AutoSize = .T., ; BackColor = 240,240,240, ; BackStyle = 0, ; Caption = "Nu scrie note contabile", ; Height = 17, ; Left = 120, ; Name = "chkTest", ; TabIndex = 5, ; Top = 37, ; Value = 0, ; Width = 144 *< END OBJECT: BaseClass="checkbox" /> ADD OBJECT 'chkTVAIncasare' AS checkbox WITH ; Alignment = 0, ; AutoSize = .T., ; BackColor = 240,240,240, ; BackStyle = 0, ; Caption = "TVA la Incasare", ; Height = 17, ; Left = 12, ; Name = "chkTVAIncasare", ; TabIndex = 4, ; Top = 37, ; Width = 103 *< END OBJECT: BaseClass="checkbox" /> ADD OBJECT 'chkVanzariRestaurant' AS checkbox WITH ; Alignment = 0, ; AutoSize = .T., ; BackColor = 240,240,240, ; BackStyle = 0, ; Caption = "Vanzari Restaurant", ; Height = 17, ; Left = 480, ; Name = "chkVanzariRestaurant", ; TabIndex = 6, ; Top = 36, ; Value = 1, ; Width = 122 *< END OBJECT: BaseClass="checkbox" /> ADD OBJECT 'cmdExport' AS commandbutton WITH ; Anchor = 9, ; AutoSize = .F., ; Caption = "\ ROA", ; FontBold = .T., ; Height = 27, ; Left = 356, ; Name = "cmdExport", ; TabIndex = 3, ; Top = 3, ; Width = 163 *< END OBJECT: BaseClass="commandbutton" /> ADD OBJECT 'Command1' AS commandbutton WITH ; Anchor = 9, ; AutoSize = .F., ; Caption = "\ ADD OBJECT 'edtInfo' AS editbox WITH ; Anchor = 15, ; Height = 408, ; Left = 10, ; Name = "edtInfo", ; TabIndex = 8, ; Top = 120, ; Width = 602 *< END OBJECT: BaseClass="editbox" /> ADD OBJECT 'Label1' AS label WITH ; AutoSize = .T., ; BackStyle = 0, ; Caption = "Perioada", ; Height = 17, ; Left = 15, ; Name = "Label1", ; TabIndex = 9, ; Top = 10, ; Width = 52 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'Label2' AS label WITH ; AutoSize = .T., ; BackStyle = 0, ; Caption = "-", ; FontBold = .T., ; FontSize = 12, ; Height = 22, ; Left = 176, ; Name = "Label2", ; TabIndex = 10, ; Top = 7, ; Width = 7 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'txtData1' AS textbox WITH ; Format = "K", ; Height = 23, ; Left = 72, ; Name = "txtData1", ; TabIndex = 1, ; Top = 7, ; Width = 100 *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'txtData2' AS textbox WITH ; Format = "K", ; Height = 23, ; Left = 186, ; Name = "txtData2", ; TabIndex = 2, ; Top = 7, ; Width = 100 *< END OBJECT: BaseClass="textbox" /> PROCEDURE completeazaparteneriroa *!* 01.07.2026 *!* codurile fiscale sunt cu prioritate tip_persoana = 2 persoana fizica *!* persoanele fizice cu CNP-urile eronate, le sterg CNP * Completez id_part Local lcBanca, lcCod_fiscal, lcCont_Banca, lcCorespDel, lcDenumire, lcIdString, lcId_categ_ent Local lcId_loc_inreg, lcId_util, lcMesaj, lcMotiv_inactiv, lcNume, lcPrefix, lcPrenume, lcReg_comert Local lcSql, lcSqlInsert, lcSufix, lcTip_persoana, lcinactiv, lnSucces, lnTip_persoana, lcCodTara Local lcAdresa, lcAdreseParteneri, lcApart, lcBloc, lcCaleImport, lcCod, lcCodpostal, lcDA_apare Local lcDenumire_adresa, lcEmail, lcEtaj, lcFax, lcFile, lcIdPart, lcId_Judet, lcId_loc, lcId_tara Local lcItem1, lcItem2, lcItem3, lcItem4, lcJudet, lcJudetBucuresti, lcLocalitate, lcNumar Local lcPrincipala, lcScara, lcSqlJudete, lcSqlLocalitati, lcSqlPart, lcStrada, lcTelefon1 Local lcTelefon2, lcWeb, lnIdJudet, lnIdJudetBucuresti, lnIdLocalitateBucuresti, lnIdTaraRO, lnPos Local lnRecc *:Global pcDenumire, pnIdAdresa, pnNrAdrese *:Global pcCodFiscal, pnIdPart Thisform.Trace('Completare Parteneri ROA') If !Used('npart') lnSucces = CT_INSUCCES Return m.lnSucces Endif Select Distinct Cast(Null As I) As id_part, cod, denumire, cod_fiscal, reg_com, adresa, judet As indicativ_judet, tara As cod_tara, banca, cont_banca ; From npart ; Into Cursor cClientiFurnizori Readwrite lnSucces = This.Connectroa() IF m.lnSucces < 0 Thisform.Trace('Completare Parteneri ROA. Eroare conectare la baza de date!') RETURN m.lnSucces ENDIF CREATE CURSOR cParteneri (id_part N(10), cod_fiscal C(30) null, denumire C(100) null) lcSqlPart = [select id_part, cod_fiscal, denumire from nom_parteneri where sters = 0 and inactiv = 0] lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSqlPart + '??cCursor=>cParteneriTemp')) If m.lnSucces < 0 Thisform.trace('Eroare la selectia din clienti ROA ' + goExecutor.oPrelucrareEroare()) Return m.lnSucces ENDIF SELECT cParteneri APPEND FROM DBF('cParteneriTemp') INDEX on denumire TAG denumire INDEX on PADR(STRTRAN(cod_fiscal, ' ', ''),30, ' ') TAG cod_fiscal USE IN (SELECT('cParteneriTemp')) CREATE CURSOR cAdrese (id_adresa I, id_part I, localitate C(100) null, id_loc I null, judet C(20) null, id_judet I null, tara C(50) null, id_tara I null) lcAdreseParteneri = [select id_adresa, id_part, localitate, id_loc, judet, id_judet, tara, id_tara from vadrese_parteneri] lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcAdreseParteneri + '??cCursor=>cAdreseTemp')) If m.lnSucces < 0 Thisform.trace('Eroare la selectia din adrese parteneri ROA ' + goExecutor.oPrelucrareEroare()) Return m.lnSucces Endif SELECT cAdrese APPEND FROM DBF('cAdreseTemp') INDEX on PADL(id_part,10, '0') + PADR(localitate, 100, ' ') TAG adresa USE IN (SELECT('cAdreseTemp')) CREATE CURSOR cJudete (id_judet I, id_tara I null, judet C(20) null) lcSqlJudete = [select j.id_judet, j.id_tara, j.judet from syn_nom_judete j] lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSqlJudete + '??cCursor=>cJudeteTemp')) If m.lnSucces < 0 Thisform.trace('Eroare la selectia din judete ROA ' + goExecutor.oPrelucrareEroare()) Return m.lnSucces ENDIF SELECT cJudete APPEND FROM DBF('cJudeteTemp') INDEX on id_judet TAG id_judet USE IN (SELECT('cJudeteTemp')) CREATE CURSOR cLocalitati (id_loc I, id_judet I null, id_tara I null, localitate C(100) null) lcSqlLocalitati = [select l.id_loc, l.id_judet, j.id_tara, l.localitate from syn_nom_localitati l left join syn_nom_judete j on l.id_judet = j.id_judet where l.inactiv = 0 and l.sters = 0] lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSqlLocalitati + '??cCursor=>cLocalitatiTemp')) If m.lnSucces < 0 Thisform.trace('Eroare la selectia din localitati ROA ' + goExecutor.oPrelucrareEroare()) Return m.lnSucces ENDIF SELECT cLocalitati APPEND FROM DBF('cLocalitatiTemp') USE IN (SELECT('cLocalitatiTemp')) Select cClientiFurnizori lnRecc = RECCOUNT() Scan pnIdPart = 0 pcCodFiscal = PADR(STRTRAN(cod_fiscal, ' ', ''),30, ' ') pcDenumire = PADR(Alltrim(Upper(denumire)), 100, ' ') lcAdresa = Strtran(Alltrim(Upper(Nvl(adresa, ''))), Chr(13), ' ') IF LEN(ALLTRIM(m.pcCodFiscal)) <= 3 pcCodFiscal = PADL(ALLTRIM(cod), 10, '0') ENDIF lcCod = cod IF MOD(RECNO(), 250) = 0 thisform.trace ('Import clienti... ' + TRANSFORM(RECNO()) + '/' + TRANSFORM(m.lnRecc)) ENDIF * Verific daca partenerul a mai fost importat IF SEEK(m.lcCod, 'coresp_parteneri', 'cod') pnIdPart = coresp_parteneri.id_part SELECT cClientiFurnizori REPLACE id_part WITH m.pnIdPart LOOP ENDIF SELECT cParteneri DO CASE CASE !Empty(m.pcCodFiscal) IF SEEK(m.pcCodFiscal, 'cParteneri', 'cod_fiscal') pnIdPart = cParteneri.id_part ENDIF OTHERWISE IF SEEK(m.pcDenumire, 'cParteneri', 'denumire') pnIdPart = cParteneri.id_part ENDIF ENDCASE If !Empty(Nvl(m.pnIdPart, 0)) Replace id_part With m.pnIdPart In cClientiFurnizori *!* lcMesaj = 'Client existent ' + Alltrim(cParteneri.denumire) + ' CUI: ' + Alltrim(cParteneri.cod_fiscal) + ' ID: ' + Alltrim(Transform(cParteneri.id_part)) *!* Thisform.trace(m.lcMesaj) Else * Adaugare clienti Select cClientiFurnizori lcDenumire = Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), "") lcNume = Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), "") lcPrenume = '' lcCod_fiscal = Upper(Alltrim(cod_fiscal)) lcReg_comert = Nvl(Alltrim(Upper(reg_com)), "") *************************** lcCod=Alltrim(Upper(Nvl(m.lcCod_fiscal,""))) lcTip_persoana = "2" && 1 = juridica, 2 = fizica * GetCodFiscalValid decide tipul de persoana din denumire, nr. registrul comertului si * forma codului, apoi curata DOAR CNP-urile invalide ale persoanelor fizice. * Codul unei persoane juridice nu se sterge niciodata: daca e gresit, vrem sa fim * atentionati la validarea declaratiei si sa il corectam in Fidelio, nu sa il ascundem. If !Empty(m.lcCod) lnTip_persoana = 0 lcCodTara = Alltrim(Upper(Nvl(cod_tara, ""))) lcCod_fiscal = GetCodFiscalValid(m.lcCod, @lnTip_persoana, m.lcDenumire, m.lcReg_comert, m.lcCodTara) lcTip_persoana = Iif(m.lnTip_persoana = 1, "1", "2") Do Case Case m.lcTip_persoana = "2" And Empty(m.lcCod_fiscal) * persoana fizica cu CNP invalid: se salveaza fara CNP (permis la D394/D406) Thisform.trace('CNP invalid, partenerul se salveaza fara CNP: [' + m.lcCod + '] ' + Alltrim(m.lcDenumire)) Case m.lcTip_persoana = "1" And !VerifCF(m.lcCod_fiscal) * persoana juridica cu cod fiscal care nu trece validarea romaneasca: poate fi * partener strain (cod valid la el in tara) sau o eroare de operare. Codul ramane, * dar il semnalam in log ca sa poata fi verificat. Thisform.trace('ATENTIE: persoana juridica cu cod fiscal nevalidat: [' + m.lcCod_fiscal + '] ' + Alltrim(m.lcDenumire)) Endcase ENDIF IF m.lcTip_Persoana = "2" lnPos = At(' ', m.lcNume) IF m.lnPos > 0 lcPrenume = Alltrim(Substr(m.lcNume, m.lnPos)) lcNume = Alltrim(Left(m.lcNume, m.lnPos)) ENDIF ENDIF *************************** lcId_loc_inreg = 'NULL' lcId_categ_ent = 'NULL' lcPrefix = "" lcSufix = "" lcBanca = Upper(Alltrim(Nvl(banca,''))) lcCont_Banca = Upper(Alltrim(Nvl(cont_banca,''))) lcinactiv = "0" lcMotiv_inactiv = "" lcIdString = "16;17" lcCorespDel = "" lcId_util = "-3" lcSqlInsert = [begin pack_def.adauga_partener('] + lcDenumire + [','] + lcNume + [','] + lcPrenume + [','] + lcCod_fiscal + [','] + ; lcReg_comert + [',] + lcId_loc_inreg + [,] + lcId_categ_ent + [,'] + lcPrefix + [','] + lcSufix + [',] + ; lcTip_persoana + [,'] + lcBanca + [','] + lcCont_Banca + [',] + lcinactiv + [,'] + lcMotiv_inactiv + [',] + ; lcId_util + [,'] + lcIdString + [','] + lcCorespDel + [',?@pnIdPart); end;] lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSqlInsert)) If !Empty(Nvl(m.pnIdPart, 0)) Replace id_part With m.pnIdPart In cClientiFurnizori Thisform.trace('Client nou ' + Alltrim(cClientiFurnizori.denumire) + ' CUI: ' + Alltrim(cClientiFurnizori.cod_fiscal) + ' ID: ' + Alltrim(Transform(cClientiFurnizori.id_part))) INSERT INTO cParteneri (id_part, denumire, cod_fiscal) VALUES (m.pnIdPart, cClientiFurnizori.denumire, cClientiFurnizori.cod_fiscal) Else lcMesaj = 'Eroare la adaugarea in clienti ROA ' + Alltrim(cParteneri.denumire) + ' CUI: ' + Alltrim(cParteneri.cod_fiscal) + Chr(13) + Chr(10) + goExecutor.oPrelucrareEroare() Thisform.trace(m.lcMesaj) aMessagebox(m.lcMesaj) SET STEP ON Exit Endif && !Empty(Nvl(m.pnIdPart,0)) Endif && !Empty(Nvl(m.pnIdPart,0)) *********************************** * Adresa partener *********************************** If !Empty(m.lcAdresa) * JUD:Mun. Bucuresti;BUCURESTI;Str.SOS BUCURESTI-URZICENI;159A Calculate Cnt(id_adresa) For id_part = m.pnIdPart To pnNrAdrese In cAdrese lcIdPart = Alltrim(Str(m.pnIdPart)) lcDenumire_adresa = "" lcDA_apare = "0" lcStrada = "" lcNumar = "" lcBloc = "" lcScara = "" lcApart = "" lcEtaj = "" lcId_loc = "NULL" lcLocalitate = "" lcId_Judet = "NULL" lcJudet = "" lcCodpostal = "NULL" lcId_tara = "NULL" lcTelefon1 = "" lcTelefon2 = "" lcFax = "" lcEmail = "" lcWeb = "" lcPrincipala = Iif(m.pnNrAdrese = 0, "1", "0") lcinactiv = "0" lcId_util = "-3" lcItem1 = Alltrim(Getwordnum(m.lcAdresa, 1, ';')) lcItem2 = Alltrim(Getwordnum(m.lcAdresa, 2, ';')) lcItem3 = Alltrim(Getwordnum(m.lcAdresa, 3, ';')) lcItem4 = Alltrim(Getwordnum(m.lcAdresa, 4, ';')) IF LEFT(m.lcItem1, 4) = 'JUD:' lcJudet = Alltrim(SUBSTR(m.lcItem1, 5)) ENDIF IF 'BUCURESTI'$m.lcJudet lcJudet = 'BUCURESTI' ENDIF IF !EMPTY(m.lcItem2) lcLocalitate = ALLTRIM(m.lcItem2) ELSE IF !EMPTY(m.lcItem1) AND LEFT(m.lcItem1, 4) <> 'JUD:' lcLocalitate = m.lcItem2 ENDIF ENDIF IF LOWER(LEFT(m.lcItem3,4)) = 'str.' lcStrada = ALLTRIM(SUBSTR(m.lcItem3, 5)) ELSE lcStrada = ALLTRIM(m.lcItem3) ENDIF IF !EMPTY(m.lcItem4) lcNumar = ALLTRIM(Left(m.lcItem4, 10)) ENDIF lnIdJudetBucuresti = 10 lcJudetBucuresti = "BUCURESTI" lnIdLocalitateBucuresti = 1759 lnIdTaraRO = 1 If m.lcLocalitate = 'BUCURESTI' m.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 cAdrese IF !SEEK(PADL(m.pnIdPart,10, '0') + PADR(m.lcLocalitate, 100, ' '), 'cAdrese', 'adresa') lnIdJudet = m.lnIdJudetBucuresti SELECT cJudete IF SEEK(m.lcJudet, 'cJudete', 'id_judet') lnIdJudet = cJudete.id_judet Endif SELECT * FROM cLocalitati WHERE id_judet = m.lnIdJudet AND localitate = m.lcLocalitate order by localitate INTO CURSOR cLocalitateTemp 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')) SELECT * FROM cLocalitati WHERE id_judet = m.lnIdJudet order by localitate INTO CURSOR cLocalitateTemp 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')) 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 && lnSucces If m.lcId_loc <> 'NULL' pnIdAdresa = 0 If Empty(Nvl(m.pnIdAdresa,0)) lcSql = [begin pack_def.adauga_adresa_partener2(] + lcIdPart + [,'] + lcDenumire_adresa + [',] + lcDA_apare + [,] + ; ['] + lcStrada + [','] + lcNumar + [','] + ; lcBloc + [','] + lcScara + [','] + lcApart + [','] + lcEtaj + [',] + lcId_loc + [,'] + lcLocalitate + [',] + lcId_Judet + [,] + lcCodpostal + [,] + lcId_tara + [,'] + ; lcTelefon1 + [','] + lcTelefon2 + [','] + lcFax + [','] + lcEmail + [','] + lcWeb + [',] + ; lcPrincipala + [,] + lcinactiv + [,] + lcId_util + [,?@pnIdAdresa); end;] lnSucces = goExecutor.oExecute(GetHash("cSql=>" + m.lcSql)) If m.lnSucces < 0 lcMesaj = goExecutor.cEroare Thisform.trace(m.lcMesaj) * AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption ) * Exit Endif Endif && empty(m.pnIdAdresa) Endif && m.lcId_loc <> 'NULL' Endif && !found() Endif && !empty(m.lcAdresa) INSERT INTO coresp_parteneri (cod, id_part, cod_fiscal, denumire) VALUES (m.lcCod, m.pnIdPart, m.pcCodFiscal, m.pcDenumire) Endscan && cClientiFurnizori This.DisconnectRoa() lcCaleImport = Addbs(Alltrim(goApp.oSettings.cale_import)) lcFile = m.lcCaleImport + 'coresp_parteneri.csv' SELECT coresp_parteneri COPY to (m.lcFile) TYPE CSV Return m.lnSucces ENDPROC PROCEDURE connectmentor Local lnHandle lnHandle = SQLSTRINGCONNECT(goapp.osettings.connectionstring_mentor) This.nHandleMentor = m.lnHandle Return m.lnHandle ENDPROC PROCEDURE connectroa Local lnSucces lnSucces = goConn.Connect() Return lnSucces ENDPROC PROCEDURE creeazanote * 11.08.2025 * TVA 21%, 11% * 5125=418 MONETAR RESTAURANT DOCUMENT PERECHE LA 418 DIN NOTA 418 = 707 VENITURI RESTAURANT *!* 16.10.2025 * VANZARI - nu iau in considerare TipPlata = "MD BUFET" * Creeaza actactan cu note contabile vanzari Local lnIdPartCasa, lnIdPartCard, lnSucces, lnIdSet, lnVerificaFacturi Local lcAcontTVAAchizitie, lcAcontTVAVanzare, lcContTVAAchizitie, lcContTVAVanzare, lcDirImport Local lcDirOutput, lcExplicatia5, lcFileOutput, ldDataImport, llFacturaDuplicat, llImport, lnAn Local lnIdBazaAch0, lnIdBazaAch19, lnIdBazaAch20, lnIdBazaAch24, lnIdBazaAch5, lnIdBazaAch9 Local lnIdFdoc, lnIdFdocBonConsum, lnIdFdocBonFiscal, lnIdFdocFactura, lnIdFdocMonetar, lnIdTVAAch19 Local lnIdTVAAch20, lnIdTVAAch24, lnIdTVAAch5, lnIdTVAAch9, lnLuna, lnTVAIncasare, loRec, lcAcontMf4428 Local lcAContCardRestaurant, lcAContCasaRestaurant, lcAContFacturaCardHotel, lcAContFacturaCasaHotel Local lcAContFacturaTicheteHotel, lcAContFacturaViramentIntHotel, lcAContTicheteRestaurant Local lcAcont401, lcAcontCardHotel, lcAcontCasaHotel, lcAcontClientiHotel, lcAcontClientiRestaurant Local lcAcontMarfaBar, lcAcontMarfaBucatarie, lcAcontTicheteHotel, lcAcontVenituriBar Local lcAcontVenituriBucatarie, lcAcontVenituriVanzariTVAS, lcAcontVenituriVanzariTVAR Local lcAcontViramentHotel, lcAcontViramentIntHotel, lcCodFiscal, lcContCardHotel Local lcContCardRestaurant, lcContCasaHotel, lcContCasaRestaurant, lcContClientiHotel Local lcContClientiRestaurant, lcContFacturaCardHotel, lcContFacturaCasaHotel Local lcContFacturaTicheteHotel, lcContFacturaViramentIntHotel, lcContTicheteHotel Local lcContTicheteRestaurant, lcContViramentHotel, lcContViramentIntHotel, lcDenumire, llHotel Local llIesiriRestaurant, llIntrariRestaurant, llVanzariRestaurant, lnCodSectieBarFlora Local lnCodSectieBarRestaurant, lnCodSectieBucatarieFlora, lnCodSectieBucatarieRestaurant Local lnCodSectieVanzariBar, lnCodSectieVanzariBucatarie, lnIdPart, lnIdPartCardHotel Local lnIdPartCardRestaurant, lnIdPartCasaHotel, lnIdPartCasaRestaurant, lnIdPartClientiHotel Local lnIdPartClientiRestaurant, lnIdPartTicheteHotel, lnIdPartTicheteRestaurant Local lnIdPartViramentHotel, lnIdPartViramentIntHotel Local ldDataAct, lnIdJtva, lnTaxCode LOCAL llTest, llTVA21 llTest = (This.chkTest.Value = 1) SET STEP ON Thisform.Trace('Generare note contabile') lnIdSet = 50100 lnIdFdocFactura = 42 lnIdFdocBonConsum = 15 lnIdFdocBonFiscal = 17 lnIdFdocMonetar = 48 lnAn = Year(This.txtData1.Value) lnLuna = Month(This.txtData1.Value) llTVA21 = (m.lnAn*12+m.lnLuna >= 2025*12+8) IF m.llTVA21 lnTVAS = 21 && cota standard lnTVAR = 11 && cota redusa ELSE lnTVAS = 19 lnTVAR = 9 ENDIF lnSucces = CT_SUCCES lnTVAIncasare = This.chkTVAIncasare.Value lnVerificaFacturi = This.chkFacturi.Value llIntrariRestaurant = (this.chkIntrariRestaurant.Value = 1) llIesiriRestaurant = (this.chkIesiriRestaurant.Value = 1) llVanzariRestaurant = (this.chkVanzariRestaurant.Value = 1) llHotel = (this.chkHotel.Value = 1) ldDataImport = This.txtData1.Value lnLuna = Month(m.ldDataImport) lnAn = Year(m.ldDataImport) lcDirImport = Addbs(Alltrim(goApp.oSettings.cale_import)) + Alltrim(Str(m.lnAn)) + '\' + Padl(m.lnLuna, 2, '0') + '\' IF !DIRECTORY(m.lcDirImport) MD (m.lcDirImport) ENDIF lcAcont401 = '01' lcAcontMf4428 = goApp.oSettings.cAcontMf4428 && 'M' lcAcontMarfaBar = goApp.oSettings.cAcontMarfaBar && 371.01 lcAcontMarfaBucatarie = goApp.oSettings.cAcontMarfaBucatarie && 371.08 lcAcontVenituriVanzariTVAS = IIF(m.llTVA21, '0301', '0101') && Venituri Bucatarie Casa Flora 19% / 21% lcAcontVenituriVanzariTVAR = IIF(m.llTVA21, '0302', '0201') && Venituri bucatarie restaurant 9% / 11% lcAcontVenituriBar = goApp.oSettings.cAcontVenituriBar && 707.0202 Venituri Bucatarie Restaurant 9% lcAcontVenituriBucatarie = goApp.oSettings.cAcontVenituriBucatarie && 707.0201 Venituri Bucatarie Casa Flora 19% lnCodSectieVanzariBucatarie = 1 && nu stiu ce sectie este sectia 1 care apare in vanzari - probabil bucatarie casa flora lnCodSectieVanzariBar = 2 lnCodSectieBarFlora = 3 lnCodSectieBucatarieFlora = 4 lnCodSectieBarRestaurant = 1 lnCodSectieBucatarieRestaurant = 2 lcContCasaRestaurant = goApp.oSettings.cContCasaRestaurant && 5311 lcContCardRestaurant = goApp.oSettings.cContCardRestaurant && 5125 lcContTicheteRestaurant = goApp.oSettings.cContTicheteRestaurant && 472 lcAContCasaRestaurant = goApp.oSettings.cAcontCasaRestaurant && 5311. lcAContCardRestaurant = goApp.oSettings.cAcontCardRestaurant && 5125.01 lcAContTicheteRestaurant = goApp.oSettings.cAcontTicheteRestaurant && 472.03 lcContCasaHotel = goApp.oSettings.cContCasaHotel lcAcontCasaHotel = goApp.oSettings.cAcontCasaHotel lcContCardHotel = goApp.oSettings.cContCardHotel lcAcontCardHotel = goApp.oSettings.cAcontCardHotel lcContTicheteHotel = goApp.oSettings.cContTicheteHotel lcAcontTicheteHotel = goApp.oSettings.cAcontTicheteHotel lcContViramentHotel = goApp.oSettings.cContViramentHotel lcAcontViramentHotel = goApp.oSettings.cAcontViramentHotel lcContViramentIntHotel = goApp.oSettings.cContViramentIntHotel lcAcontViramentIntHotel = goApp.oSettings.cAcontViramentIntHotel lnIdPartCasaRestaurant = goApp.oSettings.nIdPartCasaRestaurant && Id Partener Casa Lei 5311 lnIdPartCardRestaurant = goApp.oSettings.nIdPartCardRestaurant && Id Partener CARD 5125 lnIdPartTicheteRestaurant = goApp.oSettings.nIdPartTicheteRestaurant && Id Partener Tichete 472 lnIdPartCasaHotel = goApp.oSettings.nIdPartCasaHotel && Id Partener Casa Lei 5311 lnIdPartCardHotel = goApp.oSettings.nIdPartCardHotel && Id Partener CARD 5125 lnIdPartTicheteHotel = goApp.oSettings.nIdPartTicheteHotel && Id Partener CARD 5125 lnIdPartViramentHotel = goApp.oSettings.nIdPartViramentHotel && Id Partener 5121 lnIdPartViramentIntHotel = goApp.oSettings.nIdPartViramentIntHotel && Id Partener 581 lnIdPartClientiRestaurant = goApp.oSettings.nIdPartClientiRestaurant && Id Partener 418 lnIdPartClientiHotel = goApp.oSettings.nIdPartClientiHotel && Id Partener 418 lcContClientiRestaurant = goApp.oSettings.cContClientiRestaurant && 418 lcAcontClientiRestaurant = goApp.oSettings.cAcontClientiRestaurant && 02 lcContClientiHotel = goApp.oSettings.cContClientiHotel && 418 lcAcontClientiHotel = goApp.oSettings.cAcontClientiHotel && 01 lcContFacturaCasaHotel = goApp.oSettings.cContFacturaCasaHotel && 4111 lcContFacturaCardHotel = goApp.oSettings.cContFacturaCardHotel && 4111 lcContFacturaTicheteHotel = goApp.oSettings.cContFacturaTicheteHotel && 4111 lcContFacturaViramentIntHotel = goApp.oSettings.cContFacturaViramentIntHotel && 4111 lcAContFacturaCasaHotel = goApp.oSettings.cAContFacturaCasaHotel && 01 lcAContFacturaCardHotel = goApp.oSettings.cAContFacturaCardHotel && 02 lcAContFacturaTicheteHotel = goApp.oSettings.cAContFacturaTicheteHotel && '0B' lcAContFacturaViramentIntHotel = goApp.oSettings.cAContFacturaViramentIntHotel && '01' If m.lnTVAIncasare = 1 lcContTVAAchizitie = '4428' lcContTVAVanzare = '4428' lcAcontTVAAchizitie = goApp.oSettings.cAcontAch4428 && 'TP' lcAcontTVAVanzare = goApp.oSettings.cAcontVz4428 && 'TI' lnIdBazaAch21 = 210 lnIdTVAAch21 = 211 lnIdBazaAch11 = 214 lnIdTVAAch11 = 215 lnIdBazaAch19 = 188 lnIdTVAAch19 = 189 lnIdBazaAch9 = 172 lnIdTVAAch9 = 173 lnIdBazaAch5 = 174 lnIdTVAAch5 = 175 lnIdBazaAch0 = 113 Else lcContTVAAchizitie = '4426' lcContTVAVanzare = '4427' lcAcontTVAAchizitie = goApp.oSettings.cAcontAch4426 && '' lcAcontTVAVanzare = goApp.oSettings.cAcontVz4427 && '' lnIdBazaAch21 = 208 lnIdTVAAch21 = 209 lnIdBazaAch11 = 212 lnIdTVAAch11 = 213 lnIdBazaAch19 = 103 lnIdTVAAch19 = 104 lnIdBazaAch9 = 109 lnIdTVAAch9 = 110 lnIdBazaAch5 = 154 lnIdTVAAch5 = 155 lnIdBazaAch0 = 113 ENDIF lnIdBazaAchS = IIF(m.llTVA21, m.lnIdBazaAch21, m.lnIdBazaAch19) lnIdTVAAchS = IIF(m.llTVA21, m.lnIdTVAAch21, m.lnIdTVAAch19) *!* If Empty(m.lnIdPartCasa) *!* lnSucces = CT_INSUCCES *!* Thisform.trace('Nu este completat Id Partener Casa Lei. Verificati setarea: id_part_casa!') *!* Endif Create Cursor actactan (cod I, id_set N(5), id_fdoc N(5), an N(4), luna N(2), explicatia C(100) Null, dataact D, dataireg D, nract N(14), serie_act C(10), nnir N(14), scd C(4), ascd V(4), scc C(4), ascc V(4), id_partd N(10), partd C(200), id_partc N(10), partc C(200), proc_tva N(5,2), id_jtva_coloana N(4) Null, explicatia4 C(100), explicatia5 C(100), suma N(16,2), taxcode N(6) null, paymentcode C(9) null, id_factc I, perechec I, id_factD I, pereched I, id_fact I) * INTRARI - NIR * llImport = (Messagebox('Se importa facturile?',4+32,_Screen.Caption) = 6) llImport = .T. If m.llImport Select '371' Cont, IIF(INLIST(codsectiedeintrare, m.lnCodSectieBarFlora, m.lnCodSectieBarRestaurant), m.lcAcontMarfaBar, IIF(INLIST(codsectiedeintrare, m.lnCodSectieBucatarieFlora, m.lnCodSectieBucatarieRestaurant), m.lcAcontMarfaBucatarie, '')) AS acont, ; CAST(IIF(EMPTY(i.cotatva), 0, i.cotatva) as N(2)) As proctva, CAST(Nvl(p.id_part, 0) as I) As id_part, ; STRTRAN(idinregistrare,'-','0') as nir, ; TTOD(CTOT(i.DataDocument)) As dataact, CAST(LEFT(ALLTRIM(i.nrdocument),14) as N(14)) As nract, UPPER(ALLTRIM(STR(codsectiedeintrare))) as codsectie, UPPER(denumiresectiedeintrare) as sectie, ; Sum(i.valoareajustatafaratva) As VALACH, Sum(i.tvavaloareajustata) As VALTVAA ; FROM cIntrariRestaurant i ; LEFT Join cClientiFurnizori p On p.cod_fiscal = i.codfiscal ; Group By 1,2,3,4,5,6,7,8,9 ; INTO Cursor cIntrari * COD SECTIE 3 = BAR CASA FLORA, 4 = BUCATARIE CASA FLORA * Atentie! Nu exista PROCENT TVA si VALOARE TVA! * Nu exista valoare achizitie. O consider egala cu valoarea de vanzare fara tva * allowance_cod = 7 : protocol = 623 Select '371' As Cont, ; IIF(INLIST(codsectieiesire, m.lnCodSectieBarFlora, m.lnCodSectieBarRestaurant), m.lcAcontMarfaBar, IIF(INLIST(codsectieiesire, m.lnCodSectieBucatarieFlora, m.lnCodSectieBucatarieRestaurant), m.lcAcontMarfaBucatarie, '')) AS acont, ; TTOD(CTOT(i.DataDocument)) As dataact, ; CAST(VAL(DTOS(TTOD(CTOT(i.datadocument)))) as I) As nract, ; DTOS(TTOD(CTOT(i.datadocument))) as nir, ; UPPER(ALLTRIM(STR(codsectieintrare))) as codsectie1, ; UPPER(denumiresectieintrare) as sectie1, ; UPPER(ALLTRIM(STR(codsectieiesire))) as codsectie2, ; UPPER(denumiresectieiesire) as sectie2, ; CAST(VAL(Allowance_cod) as I) as ntip, ; CAST(UPPER(ALLTRIM(ALLTRIM(tipiesire) + ' ' + ALLTRIM(allowance_den))) as C(100)) as ctip, ; CAST(IIF(VAL(Allowance_cod) = 7, '623', '607') as C(4)) as contchelt,; 0 as proctva, ; 0 as valadaos, ; 0 as valtvav, ; SUM(valoare) As valach, ; SUM(valoare) As valftvav ; FROM cIesiriRestaurant i ; Group By 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ; INTO Cursor cIesiri * Nu iau in considerare inregistrarile cu TipPlata = "MD BUFET" * Se pare ca este o plata virtuala pentru descarcare de marfa mic dejun * Descarcarea de marfa apare in Iesiri Select m.lcContClientiRestaurant As Cont, ; m.lcAcontClientiRestaurant as acont, ; 'tichet'$LOWER(tipplata) as tichet, ; CAST(IIF('numerar'$LOWER(tipplata), m.lcContCasaRestaurant, IIF('credit'$LOWER(tipplata), m.lcContCardRestaurant, m.lcContTicheteRestaurant)) AS c(4)) as contplata, ; CAST(IIF('numerar'$LOWER(tipplata), m.lcAContCasaRestaurant, IIF('credit'$LOWER(tipplata), m.lcAContCardRestaurant, m.lcAcontTicheteRestaurant)) AS c(4)) as acontplata, ; CAST(IIF('numerar'$LOWER(tipplata), m.lnIdPartCasaRestaurant, IIF('credit'$LOWER(tipplata), m.lnIdPartCardRestaurant, m.lnIdPartTicheteRestaurant)) AS I) as id_part_plata, ; procentTVA As proctva, SPACE(4) as aconttva, SPACE(4) as acontTVANeex, SPACE(4) as acontVenituri, ; m.lnIdPartClientiRestaurant As id_part, ; TTOD(CTOT(i.DataDocument)) As dataact, ; CAST(i.nrdocument as I) As nract, ; idinregistrare as nir, ; codsectievanzare, ; UPPER(denumiresectievanzare) as sectie, ; SUM(valoarefaratva) As VALFTVAV, ; SUM(valoarefaratva+tva) As VALCTVAV, ; Sum(tva) As VALTVAV, ; Sum(valoarefaratva-valoareachizitie) As VALADAOS, ; Sum(valoareachizitie) As VALACH ; FROM cVanzariRestaurant i ; WHERE ATC('bufet', tipplata) = 0 ; Group By 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 ; INTO Cursor cVanzari READWRITE UPDATE cVanzari SET aconttva = IIF(proctva = 21, '0301', IIF(proctva = 11, '0302', IIF(proctva = 19, '0101', IIF(proctva = 9, '0201', IIF(proctva = 5, '0201', IIF(proctva = 0, SPACE(4), SPACE(4))))))) UPDATE cVanzari SET aconttvaNeex = IIF(proctva = 21, '05 ', IIF(proctva = 11, '06 ', IIF(proctva = 19, '03 ', IIF(proctva = 9, '04 ', IIF(proctva = 5, '04 ', IIF(proctva = 0, SPACE(4), SPACE(4))))))) * este doar codsectievanzare = 1, fara numele sectiei. Nu se potriveste cu codurile de sectie 3 si 4 din intrari, iesiri UPDATE cVanzari SET acontVenituri = m.lcAcontVenituriVanzariTVAS WHERE codsectievanzare = m.lnCodSectieVanzariBucatarie AND proctva = m.lnTVAS AND EMPTY(NVL(acontvenituri, '')) UPDATE cVanzari SET acontVenituri = m.lcAcontVenituriVanzariTVAR WHERE codsectievanzare = m.lnCodSectieVanzariBucatarie AND proctva = m.lnTVAR AND EMPTY(NVL(acontvenituri, '')) UPDATE cVanzari SET acontVenituri = m.lcAcontVenituriVanzariTVAS WHERE proctva = m.lnTVAS AND EMPTY(NVL(acontvenituri, '')) && sectia cod 9, nu stiu ce reprezinta UPDATE cVanzari SET acontVenituri = m.lcAcontVenituriVanzariTVAR WHERE proctva = m.lnTVAR AND EMPTY(NVL(acontvenituri, '')) *!* UPDATE cVanzari SET acontVenituri = m.lcAcontVenituriBar WHERE codsectievanzare = m.lnCodSectieBar AND EMPTY(NVL(acontvenituri, '')) *!* UPDATE cVanzari SET acontVenituri = m.lcAcontVenituriBucatarie WHERE codsectievanzare = m.lnCodSectieBucatarie AND EMPTY(NVL(acontvenituri, '')) Zap In actactan lcExplicatia5 = 'FACTURA ACHIZITIE' This.trace(m.lcExplicatia5) IF m.llIntrariRestaurant * ACHIZITIE RESTAURANT valoare achizitie fara TVA 6028/301/371 = 401 Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocFactura As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; cont As scd, acont As ascd, '401' As scc, m.lcAcont401 As ascc, 0 As id_partd, id_part As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, ; CAST(Iif(proctva = 21, m.lnIdBazaAch21, ; Iif(proctva = 11, m.lnIdBazaAch11, ; Iif(proctva = 19, m.lnIdBazaAch19, ; Iif(proctva = 9, m.lnIdBazaAch9, ; Iif(proctva = 5, m.lnIdBazaAch5, ; Iif(proctva = 0, m.lnIdBazaAch0, ; m.lnIdBazaAchS)))))) AS N(4)) As id_jtva_coloana, ; sectie As explicatia, lcExplicatia5 As explicatia5, ; SUM(ROUND(VALACH,2)) As suma ; FROM cIntrari ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 * ACHIZITIE RESTAURANT valoare tva achizitie 4428 = 401 (firma este cu tva la incasare) Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocFactura As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; m.lcContTVAAchizitie As scd, ; CAST(Iif(proctva = 19, '0101', ; Iif(proctva = 9, '0201', ; Iif(proctva = 21, '0301', ; Iif(proctva = 11, '0302', ; '')))) AS C(4)) As ascd, ; '401' As scc, m.lcAcont401 As ascc, 0 As id_partd, id_part As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, ; CAST(Iif(proctva = 21, m.lnIdTVAAch21, ; Iif(proctva = 11, m.lnIdTVAAch11, ; Iif(proctva = 19, m.lnIdTVAAch19, ; Iif(proctva = 9, m.lnIdTVAAch9, ; Iif(proctva = 5, m.lnIdTVAAch5, ; m.lnIdTVAAchS))))) AS N(4)) As id_jtva_coloana, ; sectie As explicatia, lcExplicatia5 As explicatia5, ; SUM(ROUND(VALTVAA,2)) As suma ; FROM cIntrari ; WHERE !Empty(Nvl(VALTVAA,0)) ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 ENDIF && IF m.llIntrariRestaurant IF m.llIesiriRestaurant * Descarcare gestiune restaurant lcExplicatia5 = 'DESCARCARE RESTAURANT' This.trace(m.lcExplicatia5) * valoare achizitie 607 = 371 Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocBonConsum As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; contchelt As scd, '' As ascd, cont As scc, acont As ascc, 0 As id_partd, 0 As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, Cast(Null As N(4)) As id_jtva_coloana, ; sectie2 As explicatia, cTip as explicatia4, lcExplicatia5 As explicatia5, ; SUM(ROUND(Nvl(valach,0.00),2)) As suma ; FROM cIesiri ; WHERE valach <> 0 ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 * valoare adaos 371 = 378 Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocBonConsum As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; cont As scd, acont As ascd, '378' As scc, '' As ascc, 0 As id_partd, 0 As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, Cast(Null As N(4)) As id_jtva_coloana, ; sectie2 As explicatia, cTip as explicatia4, lcExplicatia5 As explicatia5, ; SUM(ROUND(Nvl(VALADAOS,0.00),2)) As suma ; FROM cIesiri ; WHERE valadaos <> 0 ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 * valoare adaos 378 = 371 Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocBonConsum As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; '378' As scd, acont As ascd, cont As scc, acont As ascc, 0 As id_partd, 0 As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, Cast(Null As N(4)) As id_jtva_coloana, ; sectie2 As explicatia, cTip as explicatia4, lcExplicatia5 As explicatia5, ; SUM(ROUND(Nvl(VALADAOS,0.00),2)) As suma ; FROM cIesiri ; WHERE valadaos <> 0 ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 * valoare tva vz neex 371 = 4428 Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocBonConsum As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; cont As scd, acont As ascd, '4428' As scc, m.lcAcontMf4428 As ascc, 0 As id_partd, 0 As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, Cast(Null As N(4)) As id_jtva_coloana, ; sectie2 As explicatia, cTip as explicatia4, lcExplicatia5 As explicatia5, ; SUM(ROUND(Nvl(VALTVAV, 0.00),2)) As suma ; FROM cIesiri ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 * valoare tva vz neex 4428 = 371 Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocBonConsum As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; '4428' As scd, m.lcAcontMf4428 As ascd, cont As scc, acont As ascc, 0 As id_partd, 0 As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, Cast(Null As N(4)) As id_jtva_coloana, ; sectie2 As explicatia, cTip as explicatia4, lcExplicatia5 As explicatia5, ; SUM(ROUND(Nvl(VALTVAV, 0.00),2)) As suma ; FROM cIesiri ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 ENDIF && llIesiriRestaurant IF m.llVanzariRestaurant * VENITURI RESTAURANT BAZA 418.02 = 707.0201/0202 * doar la incasare numerar si card * incasarile prin tichete: 418 = 472 la importul din receptie Fidelio lcExplicatia5 = 'VENITURI RESTAURANT' This.trace(m.lcExplicatia5) Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia5, suma) ; SELECT lnIdSet As id_set, m.lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; cont As scd, acont As ascd, '707 ' As scc, acontvenituri As ascc, m.lnIdPartClientiRestaurant As id_partd, 0 As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, ; CAST(Iif(proctva = 21, 37, ; Iif(proctva = 11, 41, ; Iif(proctva = 19, 31, ; Iif(proctva = 9, 23, ; Iif(proctva = 5, 25, ; Iif(proctva = 0, 11, ; 37)))))) AS N(4)) As id_jtva_coloana, ; sectie As explicatia, lcExplicatia5 As explicatia5, ; ROUND(valftvav,2) As suma ; FROM cVanzari ; WHERE valftvav <> 0 AND !tichet * VENITURI RESTAURANT TVA 418.02 = 4428.03/04 Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; cont As scd, acont As ascd, '4428' As scc, aconttvaNeex As ascc, m.lnIdPartClientiRestaurant As id_partd, 0 As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, ; CAST(Iif(proctva = 21, 38, ; Iif(proctva = 11, 42, ; Iif(proctva = 19, 32, ; Iif(proctva = 9, 24, ; Iif(proctva = 5, 26, ; 38))))) AS N(4)) As id_jtva_coloana, ; sectie As explicatia, lcExplicatia5 As explicatia5, ; SUM(ROUND(valtvav,2)) As suma ; FROM cVanzari ; WHERE valtvav <> 0 AND !tichet ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 * IESIRI MONETARE RESTAURANT BAZA 5125/5311 = 418.02 lcExplicatia5 = 'MONETAR RESTAURANT' This.trace(m.lcExplicatia5) Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia5, suma, id_factc, perechec) ; SELECT lnIdSet As id_set, m.lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; contplata As scd, acontplata As ascd, cont As scc, acont As ascc, id_part_plata As id_partd, m.lnIdPartClientiRestaurant As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, CAST(Iif(proctva = 21, 35, Iif(proctva = 11, 39, Iif(proctva = 19, 1, Iif(proctva = 9, 3, Iif(proctva = 5, 13, 1))))) AS N(4)) As id_jtva_coloana, ; sectie As explicatia, lcExplicatia5 As explicatia5, ; ROUND(valftvav,2) As suma, ; -1 as id_factc, ; INT(nract) as perechec ; FROM cVanzari ; WHERE valftvav <> 0 AND !tichet * IESIRI MONETARE RESTAURANT BAZA 472.03 = 418.02, suma cu tot cu TVA * incasare tichete, nota inversa 418 = 472 se face in Fidelio, la primirea tichetelor This.trace(m.lcExplicatia5) Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia5, suma) ; SELECT lnIdSet As id_set, m.lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; contplata As scd, acontplata As ascd, cont As scc, acont As ascc, id_part_plata As id_partd, m.lnIdPartClientiRestaurant As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, CAST(Iif(proctva = 21, 35, Iif(proctva = 11, 39, Iif(proctva = 19, 1, Iif(proctva = 9, 3, Iif(proctva = 5, 13, 1))))) AS N(4)) As id_jtva_coloana, ; sectie As explicatia, lcExplicatia5 As explicatia5, ; SUM(ROUND(valftvav + valtvav,2)) As suma ; FROM cVanzari ; WHERE tichet ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 * IESIRI MONETARE RESTAURANT TVA 5125/5311 = 4427.0201 Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; contplata As scd, acontplata As ascd, m.lcContTVAVanzare As scc, aconttva As ascc, id_part_plata As id_partd, 0 As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, ; CAST(Iif(proctva = 21, 36, ; Iif(proctva = 11, 40, ; Iif(proctva = 19, 2, ; Iif(proctva = 9, 4, ; Iif(proctva = 5, 14, ; 36))))) AS N(4)) As id_jtva_coloana, ; sectie As explicatia, lcExplicatia5 As explicatia5, ; SUM(ROUND(valtvav,2)) As suma ; FROM cVanzari ; WHERE !tichet ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 * IESIRI MONETARE RESTAURANT TVA 418.02 = 4428.03/04 - suma TVA (stornare venituri) * stornez nota TVA 4428 provenita de la VENITURI, pentru ca inregistrez TVA 4427 la MONETARE Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, nnir, scd, ascd, scc, ascc, id_partd, id_partc, proc_tva, id_jtva_coloana, explicatia, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), INT(VAL(nir)), ; cont As scd, acont As ascd, '4428' As scc, aconttvaNeex As ascc, m.lnIdPartClientiRestaurant As id_partd, 0 As id_partc, ; 1 + Round(proctva / 100, 2) As proc_tva, ; CAST(Iif(proctva = 21, 38, ; Iif(proctva = 11, 42, ; Iif(proctva = 19, 32, ; Iif(proctva = 9, 24, ; Iif(proctva = 5, 26, ; 32))))) AS N(4)) As id_jtva_coloana, ; sectie As explicatia, lcExplicatia5 As explicatia5, ; ROUND(-valtvav,2) As suma ; FROM cVanzari ; WHERE !tichet ENDIF && IF m.llVanzariRestaurant Use In (Select('cIntrari')) Use In (Select('cIesiri')) Use In (Select('cVanzari')) IF m.llHotel * Facturi Fidelio Select CAST(NR_FACTURA as I) As nract, ; VAL(GETWORDNUM(DATANOTAFACTURA, 3, '/')) AS AN, ; VAL(GETWORDNUM(DATANOTAFACTURA, 1, '/')) AS LUNA, ; VAL(GETWORDNUM(DATANOTAFACTURA, 2, '/')) AS ZI, ; cumparator as denumire, codfiscal_cnp as cod_fiscal, ; CAST(IIF('cazare' $ ALLTRIM(LOWER(pos_denumire)), '704 ', ; IIF('pat suplimentar' $ ALLTRIM(LOWER(pos_denumire)), '704 ', ; IIF('taxa statiune' $ ALLTRIM(LOWER(pos_denumire)), '708 ', ; IIF('dejun' $ ALLTRIM(LOWER(pos_denumire)), '707 ', ; IIF('restaurant' $ ALLTRIM(LOWER(pos_denumire)), '707 ', ; IIF('taxa animal' $ ALLTRIM(LOWER(pos_denumire)), '704 ', '704 ')))))) AS C(4)) as cont, ; CAST(IIF('cazare' $ ALLTRIM(LOWER(pos_denumire)), '0101', ; IIF('pat suplimentar' $ ALLTRIM(LOWER(pos_denumire)), '0101', ; IIF('taxa statiune' $ ALLTRIM(LOWER(pos_denumire)), '03 ', ; IIF('dejun' $ ALLTRIM(LOWER(pos_denumire)), '0202', ; IIF('restaurant' $ ALLTRIM(LOWER(pos_denumire)), '0202', ; IIF('taxa animal' $ ALLTRIM(LOWER(pos_denumire)), '0101', '0101')))))) AS C(4)) as acont, ; CAST(0 as I) as id_part, ; CAST(VAL(ALLTRIM(STRTRAN(POS_TAXAL, 'TVA', '',1,1,1))) AS n(5,2)) AS proctva, ; SPACE(4) as conttva, ; SPACE(4) as aconttva, ; MAX(pos_numeorigine) as numeorigine, ; MAX(LOWER(tip_factura)) as tip_factura, ; CAST(MAX(UPPER(pos_denumire)) as C(200)) as articol, ; CAST(MAX(cash_notafactura) as N(20,2)) as numerar, ; CAST(MAX(cc_notafactura) as N(20,2)) as card, ; CAST(MAX(alt_notafactura) as N(20,2)) as tichete, ; CAST(MAX(virament_notafactura) as N(20,2)) as viramentint, ; CAST(MAX(total_notafactura) as N(20,2)) as total, ; SUM(pos_pret_net_ron) As VALFTVAV, ; Sum(pos_pret_tva_ron) As VALTVAV, ; SUM(pos_pret_net_ron+pos_pret_tva_ron) As VALCTVAV ; FROM cFacturiFidelio f ; WHERE !EMPTY(NVL(f.pos_taxal, '')) ; Group By 1,2,3,4,5,6,7,8,9,10,11 ; INTO Cursor cFacturiHotelTemp2 * Dadea eroare daca faceam date(an,luna,zi) direct in primul cursor!? SELECT *, IIF(!EMPTY(NVL(AN,0)) AND !EMPTY(NVL(LUNA,0)) AND !EMPTY(NVL(ZI,0)), DATE(an, luna, zi), {}) as dataact, ; ROUND(numerar/total,6) as pnumerar, ; ROUND(card/total,6) as pcard, ; ROUND(tichete/total,6) as ptichete, ; ROUND(viramentint/total,6) as pviramentint ; FROM cFacturiHotelTemp2 ; INTO CURSOR cFacturiHotel READWRITE UPDATE cFacturiHotel SET pnumerar = 0, pcard = 0, ptichete = 0, pviramentint = 0 WHERE total = 0 UPDATE cFacturiHotel SET conttva = IIF(tip_factura = 'decontare interna', '4428', '4427') UPDATE cFacturiHotel SET aconttva = IIF(proctva = 21, '05', IIF(proctva = 11, '06', IIF(proctva = 19, '03', IIF(proctva = 9, '04', IIF(proctva = 5, '04', IIF(proctva = 0, SPACE(4), SPACE(4))))))) WHERE tip_factura = 'decontare interna' UPDATE cFacturiHotel SET aconttva = IIF(proctva = 21, '0301', IIF(proctva = 11, '0302', IIF(proctva = 19, '0101', IIF(proctva = 9, '0201', IIF(proctva = 5, '05xx', IIF(proctva = 0, SPACE(4), SPACE(4))))))) WHERE EMPTY(aconttva) * Completez id_part in Facturi Hotel SELECT cFacturiHotel SCAN lcDenumire = UPPER(ALLTRIM(NVL(denumire, ''))) lcCodFiscal = UPPER(ALLTRIM(NVL(cod_fiscal, ''))) lnIdPart = 0 SELECT cClientiFurnizori IF !EMPTY(m.lcCodFiscal) AND LEN(m.lcCodFiscal) > 2 LOCATE FOR cod_fiscal = m.lcCodFiscal IF !FOUND() LOCATE FOR denumire = m.lcDenumire IF FOUND() lnIdPart = id_part ELSE SET STEP ON * Trebuie sa creez partenerul!!! This.trace('Nu exista in ROA partenerul: ' + m.lcDenumire + ' ' + m.lcCodFiscal) ENDIF ELSE lnIdPart = id_part ENDIF ELSE IF !EMPTY(m.lcDenumire) LOCATE FOR denumire = m.lcDenumire IF FOUND() lnIdPart = id_part ELSE SET STEP ON * Trebuie sa creez partenerul!!! This.trace('Nu exista in ROA partenerul: ' + m.lcDenumire + ' ' + m.lcCodFiscal) ENDIF ELSE SET STEP ON * Trebuie sa creez partenerul!!! This.trace('Nu exista in ROA partenerul: ' + m.lcDenumire + ' ' + m.lcCodFiscal) ENDIF ENDIF SELECT cFacturiHotel IF !EMPTY(m.lnIdPart) REPLACE id_part WITH m.lnIdPart ENDIF ENDSCAN * Cursor cu tipuri de plata, ca sa defalc baza si TVA pe tipuri de plata. 5125.01 (card), 03 (tichete) analitice diferite CREATE CURSOR cPlata (nract N(20), tip C(20), suma N(20,2), procent N(20,6), cont C(4), acont C(4), id_part I, contc C(4), acontc C(4)) SELECT nract, ; MAX(numerar) as numerar, MAX(card) as card, MAX(tichete) as tichete, MAX(viramentint) as viramentint, ; MAX(pnumerar) as pnumerar, MAX(pcard) as pcard, MAX(ptichete) as ptichete, MAX(pviramentint) as pviramentint ; FROM cFacturiHotel ; GROUP BY nract ; INTO CURSOR cPlatiTemp SELECT cPlatiTemp SCAN SCATTER NAME loRec WITH loRec IF .numerar <> 0 OR (numerar = 0 AND card = 0 AND tichete = 0 AND viramentint = 0) INSERT INTO cPlata (nract, tip, suma, procent, cont, acont, id_part, contc, acontc) VALUES (.nract, 'NUMERAR', .numerar, .pnumerar, m.lcContCasaHotel, m.lcAcontCasaHotel, m.lnIdPartCasaHotel, lcContFacturaCasaHotel, lcAContFacturaCasaHotel) ENDIF IF .card <> 0 INSERT INTO cPlata (nract, tip, suma, procent, cont, acont, id_part, contc, acontc) VALUES (.nract, 'CARD', .card, .pcard, m.lcContCardHotel, m.lcAcontCardHotel, m.lnIdPartCardHotel, lcContFacturaCardHotel, lcAContFacturaCardHotel) ENDIF IF .tichete <> 0 INSERT INTO cPlata (nract, tip, suma, procent, cont, acont, id_part, contc, acontc) VALUES (.nract, 'TICHETE', .tichete, .ptichete, m.lcContTicheteHotel, m.lcAcontTicheteHotel, m.lnIdPartTicheteHotel, lcContFacturaTicheteHotel, lcAContFacturaTicheteHotel) ENDIF IF .viramentint <> 0 INSERT INTO cPlata (nract, tip, suma, procent, cont, acont, id_part, contc, acontc) VALUES (.nract, 'VIRAMENT INTERN', .viramentint, .pviramentint, m.lcContViramentIntHotel, m.lcAcontViramentIntHotel, m.lnIdPartViramentIntHotel, lcContFacturaViramentIntHotel, lcAContFacturaViramentIntHotel) ENDIF ENDWITH ENDSCAN SELECT dataact, nract, proctva, conttva, aconttva, cont, acont, ; SUM(valftvav) As valftvav, SUM(valtvav) as valtvav ; FROM cFacturiHotel ; group by 1,2,3,4,5,6,7 ; INTO CURSOR cBazaTVATemp SELECT b.*, ROUND(b.valftvav * p.procent, 2) as baza, ROUND(b.valtvav * p.procent, 2) as tva, p.tip as tipplata, p.cont as contplata, p.acont as acontplata, p.id_part as id_part_plata, p.contc, p.acontc ; FROM cBazaTVATemp b LEFT JOIN cPlata p ON b.nract = p.nract ; INTO CURSOR cBazaTVAPlati SELECT f.*, p.baza, p.tva, p.tipplata, p.contplata, p.acontplata, p.id_part_plata, p.contc, p.acontc ; FROM cFacturiHotel f JOIN cBazaTVAPlati p ON f.nract = p.nract AND ; f.proctva = p.proctva AND f.cont = p.cont AND NVL(f.acont, 'x') = NVL(p.acont, 'x') AND ; f.conttva = p.conttva AND NVL(f.aconttva, 'x') = NVL(p.aconttva, 'x') ; INTO CURSOR cFacturiMonetar READWRITE ***************************************** lcExplicatia5 = 'MONETAR HOTEL' This.trace(m.lcExplicatia5) * IESIRI MONETARE RESTAURANT BAZA 5125/5311 = 4111 Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, scd, ascd, scc, ascc, id_partd, partd, id_partc, partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), ; contplata As scd, acontplata As ascd, contc As scc, acontc As ascc, id_part_plata As id_partd, tipplata as partd, id_part As id_partc, denumire as partc, ; CAST(0 as N(5,2)) as proc_tva, CAST(null as N(4)) As id_jtva_coloana, ; tipplata As explicatia, numeorigine as explicatia4, lcExplicatia5 As explicatia5, ; SUM(baza+tva) As suma ; FROM cFacturiMonetar ; WHERE tip_factura <> 'decontare interna' ; group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 *!* * IESIRI MONETARE RESTAURANT TVA 5125/5311 = 4427.0201 *!* Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, scd, ascd, scc, ascc, id_partd, partd, id_partc, partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; *!* SELECT lnIdSet As id_set, lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), ; *!* contplata As scd, acontplata As ascd, conttva As scc, aconttva As ascc, id_part_plata As id_partd, tipplata as partd, 0 As id_partc, '' as partc, ; *!* 1 + Round(proctva / 100, 2) As proc_tva, Iif(proctva = 24, 22, Iif(proctva = 20, 30, Iif(proctva = 19, 32, Iif(proctva = 9, 24, Iif(proctva = 5, 26, 32))))) As id_jtva_coloana, ; *!* tipplata As explicatia, numeorigine as explicatia4, lcExplicatia5 As explicatia5, ; *!* tva As suma ; *!* FROM cFacturiMonetar ; *!* WHERE tip_factura <> 'decontare interna' lcExplicatia5 = 'VENITURI HOTEL' This.trace(m.lcExplicatia5) lcExplicatia5 = 'FACTURI HOTEL' This.trace(m.lcExplicatia5) *!* factura platita direct de client *!* 4111.02 = 704.0101/02 *!* 4111.02 = 4427.0201 (19) / 0202 (9) *!* factura neintocmita platita de agentie *!* 418.01 = 704.0101/02 *!* 418.01 = 4428.03 (19) / 04 (9) SET STEP ON * incasare cu tichete la receptie, 418 = 472 se face in Fidelio, la primirea tichetelor * nota inversa se face in RESTAURANT: IESIRI MONETARE RESTAURANT BAZA 472.03 = 418.02, suma cu tot cu TVA Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, scd, ascd, scc, ascc, id_partd, partd, id_partc, partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), ; m.lcContClientiRestaurant As scd, m.lcAContClientiRestaurant As ascd, m.lcContTicheteRestaurant As scc, m.lcAcontTicheteRestaurant As ascc, m.lnIdPartClientiRestaurant As id_partd, '' as partd, m.lnIdPartTicheteRestaurant As id_partc, CAST('' as C(100)) as partc, ; 1 + Round(proctva / 100, 2) As proc_tva, ; CAST(Iif(proctva = 21, 35, ; Iif(proctva = 11, 39, ; Iif(proctva = 19, 1, ; Iif(proctva = 9, 3, ; Iif(proctva = 5, 13, ; Iif(proctva = 0, 11, ; 35)))))) AS N(4)) As id_jtva_coloana, ; tipplata As explicatia, numeorigine as explicatia4, lcExplicatia5 As explicatia5, ; SUM(baza+tva) As suma ; FROM cFacturiMonetar ; WHERE tipplata = 'TICHETE' ; group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 * FACTURI FIDELIO BAZA Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, scd, ascd, scc, ascc, id_partd, partd, id_partc, partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), ; contc As scd, acontc As ascd, cont As scc, acont As ascc, id_part as id_partd, denumire as partd, CAST(0 as I) As id_partc, CAST('' as C(100)) as partc, ; 1 + Round(proctva / 100, 2) As proc_tva, ; CAST(Iif(proctva = 21, 37, ; Iif(proctva = 11, 41, ; Iif(proctva = 19, 31, ; Iif(proctva = 9, 23, ; Iif(proctva = 5, 25, ; Iif(proctva = 0, 11, ; 37)))))) AS N(4)) As id_jtva_coloana, ; articol As explicatia, numeorigine as explicatia4, lcExplicatia5 As explicatia5, ; SUM(baza) As suma ; FROM cFacturiMonetar ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 * FACTURI FIDELIO TVA Insert Into actactan (id_set, id_fdoc, an, luna, dataact, dataireg, nract, scd, ascd, scc, ascc, id_partd, partd, id_partc, partc, proc_tva, id_jtva_coloana, explicatia, explicatia4, explicatia5, suma) ; SELECT lnIdSet As id_set, lnIdFdocMonetar As id_fdoc, m.lnAn As an, m.lnLuna As luna, dataact, dataact As dataireg, INT(nract), ; contc As scd, acontc As ascd, conttva As scc, aconttva As ascc, id_part as id_partd, denumire as partd, CAST(0 as I) As id_partc, CAST('' as C(100)) as partc, ; 1 + Round(proctva / 100, 2) As proc_tva, ; CAST(Iif(proctva = 21, 38, ; Iif(proctva = 11, 42, ; Iif(proctva = 19, 32, ; Iif(proctva = 9, 24, ; Iif(proctva = 5, 26, ; 38))))) AS N(4)) As id_jtva_coloana, ; articol As explicatia, numeorigine as explicatia4, lcExplicatia5 As explicatia5, ; SUM(tva) As suma ; FROM cFacturiMonetar ; Group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ENDIF && m.llHotel DELETE FROM actactan WHERE suma = 0 * LIVRARI * Pentru facturile cu 4111 in loc de 418 inlocuiesc Explicatie TVA Exigibil in loc de TVA Neexigibil UPDATE actactan SET id_jtva_coloana = 1 WHERE scd = '4111' AND id_jtva_coloana = 31 UPDATE actactan SET id_jtva_coloana = 2 WHERE scd = '4111' AND id_jtva_coloana = 32 UPDATE actactan SET id_jtva_coloana = 3 WHERE scd = '4111' AND id_jtva_coloana = 23 UPDATE actactan SET id_jtva_coloana = 4 WHERE scd = '4111' AND id_jtva_coloana = 24 UPDATE actactan SET id_jtva_coloana = 13 WHERE scd = '4111' AND id_jtva_coloana = 25 UPDATE actactan SET id_jtva_coloana = 14 WHERE scd = '4111' AND id_jtva_coloana = 26 UPDATE actactan SET id_jtva_coloana = 35 WHERE scd = '4111' AND id_jtva_coloana = 37 UPDATE actactan SET id_jtva_coloana = 36 WHERE scd = '4111' AND id_jtva_coloana = 38 UPDATE actactan SET id_jtva_coloana = 39 WHERE scd = '4111' AND id_jtva_coloana = 41 UPDATE actactan SET id_jtva_coloana = 40 WHERE scd = '4111' AND id_jtva_coloana = 42 UPDATE actactan SET paymentcode = '10' WHERE scd = '5311' UPDATE actactan SET paymentcode = '42' WHERE LEFT(scd,3) = '512' SELECT * FROM actactan INTO CURSOR tAct USE IN (SELECT('actactan')) SELECT * FROM tAct ORDER BY explicatia5, dataact, nract, scd, scc INTO CURSOR actactan READWRITE UPDATE actactan SET scd = ALLTRIM(STRTRAN(scd, CHR(9), '')), scc = ALLTRIM(STRTRAN(scc, CHR(9), '')) UPDATE actactan SET ascd = ALLTRIM(STRTRAN(ascd, CHR(9), '')), ascc = ALLTRIM(STRTRAN(ascc, CHR(9), '')) USE IN (SELECT('tAct')) SET STEP ON llFacturaDuplicat = .F. If m.lnVerificaFacturi = 1 Select actactan Go Top Scatter Name loRec Memo llFacturaDuplicat = This.VerificaFactura(loRec) Endif If m.llTest OR !m.llFacturaDuplicat This.Scrienote() Endif Endif && m.llImport Use In (Select('actactan')) SET STEP ON If Used('act_test') lcDirOutput = Addbs(m.lcDirImport) lcFileOutput = m.lcDirOutput + 'act_test' + Sys(2) + '.xls' Select act_test Copy To (m.lcFileOutput) Type Xl5 Use In (Select('act_test')) open_default_app(m.lcDirOutput) open_default_app(m.lcFileOutput) ENDIF Return lnSucces ENDPROC PROCEDURE Destroy CLEAR EVENTS ENDPROC PROCEDURE disconnectmentor IF This.nHandleMentor > 0 SQLDISCONNECT(This.nHandleMentor) This.nHandleMentor = -1 ENDIF Return .T. ENDPROC PROCEDURE disconnectroa Local lnSucces lnSucces = goConn.Disconnect() RETURN m.lnSucces ENDPROC PROCEDURE exportdate Local laFiles[1], lcDirImport, ldDataImport, lnAn, lnFiles, lnLuna, lnSucces Local lcFile, lcPrefix, lnFile Thisform.Trace('Citire fisiere Fidelio&Biz') lnSucces = CT_SUCCES ldData1 = This.txtData1.Value ldData2 = This.txtData2.Value If Empty(m.ldData1) AMESSAGEBOX('Completati data inceput pentru import!',0+16,_screen.Caption) Return Endif If Empty(m.ldData2) AMESSAGEBOX('Completati data sfarsit pentru import!',0+16,_screen.Caption) Return Endif If m.ldData1 > m.ldData2 AMESSAGEBOX('Data de inceput trebuie sa fie mai mica sau egala decat data de sfarsit pentru import!',0+16,_screen.Caption) Return Endif lnLuna = Month(m.ldData1) lnAn = Year(m.ldData2) lcAnLuna = ALLTRIM(STR(m.lnAn)) + PADL(m.lnLuna,2, '0') lcCaleImportFidelio = Addbs(Alltrim(goApp.oSettings.cale_import_fidelio)) lcCaleImportBiz = Addbs(Alltrim(goApp.oSettings.cale_import_biz)) lcCaleImport = Addbs(Alltrim(goApp.oSettings.cale_import)) IF !DIRECTORY(m.lcCaleImportFidelio) AMESSAGEBOX('Nu exista directorul de import ' + m.lcCaleImportFidelio, 0+16,_screen.Caption) lnSucces = CT_INSUCCES RETURN m.lnSucces ENDIF IF !DIRECTORY(m.lcCaleImportFidelio) AMESSAGEBOX('Nu exista directorul de import Fidelio: ' + m.lcCaleImportFidelio, 0+16,_screen.Caption) lnSucces = CT_INSUCCES RETURN m.lnSucces ENDIF IF !DIRECTORY(m.lcCaleImportBiz) AMESSAGEBOX('Nu exista directorul de import Biz: ' + m.lcCaleImportBiz, 0+16,_screen.Caption) lnSucces = CT_INSUCCES RETURN m.lnSucces ENDIF IF !DIRECTORY(m.lcCaleImport) AMESSAGEBOX('Nu exista directorul de import: ' + m.lcCaleImport, 0+16,_screen.Caption) lnSucces = CT_INSUCCES RETURN m.lnSucces ENDIF ******************************************** CREATE CURSOR nPart (id_part I null, cod C(16) null, denumire V(200) null, cod_fiscal V(50) null, reg_com V(50) null, ; adresa V(250) null, judet V(250) null, indicativ_judet V(250) null, tara V(200) null, cod_tara V(200) null, ; banca V(200) null, cont_banca v(200) null) *!* lcFile = m.lcCaleImport + 'coresp_parteneri.dbf' lcFile = m.lcCaleImport + 'coresp_parteneri.csv' CREATE CURSOR coresp_parteneri (cod C(16), id_part I, cod_fiscal C(30), denumire C(100)) IF FILE(m.lcFile) SELECT coresp_parteneri APPEND FROM (m.lcFile) TYPE CSV ELSE SELECT coresp_parteneri COPY to (m.lcFile) TYPE CSV ENDIF SELECT coresp_parteneri INDEX on cod TAG cod Create Cursor cIntrariRestaurant(; idinregistrare C(50) null,; tipdocument C(50) null,; nrdocument C(20) null,; datadocument C(20) null,; codfiscal C(20) null,; denumirefurnizor C(200) null,; valoarefacturafaratva N(18,4) null,; valoareajustatafaratva N(18,4) null,; valoareajustare N(18,4) null,; tvavaloareajustata N(18,4) null,; cotatva N(5,2) null,; codsectiedeintrare N(5) null,; denumiresectiedeintrare C(100) null,; tiptranzactie C(20) null) Create Cursor cIesiriRestaurant(; idinregistrare C(50) null,; tipdocument C(50) null,; nrdocument C(20) null,; datadocument C(20) null,; valoare N(18,4) null,; codsectieiesire N(5) null,; denumiresectieiesire C(100) null,; codsectieintrare N(5) null,; denumiresectieintrare C(100) null,; tipiesire C(20) null,; allowance_cod C(50) null,; allowance_den C(50) null) Create Cursor cVanzariRestaurant(; idinregistrare C(50) null,; tipdocument C(50) null,; nrdocument C(20) null,; datadocument C(20) null,; valoarefaratva N(18,4) null,; tva N(18,4) null,; procenttva N(5,2) null,; valoareachizitie N(18,4) null,; codsectievanzare N(5) null,; denumiresectievanzare C(100) null,; tipplata C(20) null) Create Cursor cFacturiFidelio(; nr_nota N(10) null,; nr_factura C(20) null,; datanotafactura C(20) null,; cumparator C(100) null,; camera N(3) null,; tip_camera C(3) null,; tarif C(4) null,; grupa_tarif C(3) null,; pers_facturare N(1) null,; sosire C(10) null,; plecare C(10) null,; codfiscal_cnp C(50) null,; regcomert_ci_pass C(50) null,; iban C(50) null,; banca C(200) null,; factura_speciala L(1) null,; total_notafactura N(18,4) null,; brut0_notafactura N(18,4) null,; net0_notafactura N(18,4) null,; brut1_notafactura N(18,4) null,; net1_notafactura N(18,4) null,; tva1_notafactura N(18,4) null,; brut2_notafactura N(18,4) null,; net2_notafactura N(18,4) null,; tva2_notafactura N(18,4) null,; cash_notafactura N(18,4) null,; cc_notafactura N(18,4) null,; cec_notafactura N(18,4) null,; virament_notafactura N(18,4) null,; alt_notafactura N(18,4) null,; pos_id N(7) null,; pos_data C(20) null,; pos_dep N(5) null,; pos_denumire C(100) null,; pos_denumirepos C(100) null,; pos_denumirearr C(100) null,; pos_comentariu C(100) null,; pos_cantitatea N(10) null,; pos_numarcec C(20) null,; pos_nrtelefon C(20) null,; pos_pret_brut_ron N(18,4) null,; pos_pret_brut_valuta N(18,4) null,; pos_valuta C(5) null,; pos_curs C(5) null,; pos_pret_net_ron N(18,4) null,; pos_pret_tva_ron N(18,4) null,; pos_taxas C(20) null,; pos_taxal C(20) null,; pos_cameraorigine N(3) null,; pos_numeorigine C(100) null,; pos_origine C(100) null,; pos_sosireorigine C(100) null,; pos_plecareorigine C(100) null,; pos_numar_cc C(100) null,; virament_intern C(100) null,; tip_factura C(50) null,; tip_numar_factura C(50) null,; grup C(10) null,; nr_persoane C(10) null,; companie_nume C(100) null,; companie_cf_cnp C(50) null,; companie_rc_cip C(50) null,; companie_banca C(100) null,; companie_iban C(100) null,; companie_tplata C(100) null,; companie_contract C(100) null,; companie_contract_date C(100) null,; companie_tara C(100) null,; companie_oras C(100) null,; companie_adresa C(200) null,; agentie_nume C(100) null,; agentie_cf_cnp C(100) null,; agentie_rc_cip C(100) null,; agentie_banca C(100) null,; agentie_iban C(100) null,; agentie_tplata C(100) null,; agentie_contract C(100) null,; agentie_contract_date C(100) null,; agentie_tara C(100) null,; agentie_oras C(100) null,; agentie_adresa C(100) null,; sursa_nume C(100) null,; sursa_cf_cnp C(100) null,; sursa_rc_cip C(100) null,; sursa_banca C(100) null,; sursa_iban C(100) null,; sursa_tplata C(100) null,; sursa_contract C(100) null,; sursa_contract_date C(100) null,; sursa_tara C(100) null,; sursa_oras C(100) null,; sursa_adresa C(100) null) ******************************************** * FIDELIO / HOTEL lcFileSkeleton = 'bts_detalii_facturi_rep_' + m.lcAnLuna + '*.xml' lcDirImport = m.lcCaleImportFidelio lnFiles = Adir(laFiles, m.lcDirImport + m.lcFileSkeleton, '', 1) If lnFiles = 0 Thisform.trace('Nu exista fisiere ' + m.lcFileSkeleton + ' in directorul ' + m.lcDirImport) * lnSucces = CT_INSUCCES * pot sa nu fie fisiere Hotel, doar restaurant * RETURN m.lnSucces Endif FOR lnFile = 1 TO m.lnFiles lcFileName = LOWER(laFiles[m.lnFile,1]) lcFile = ADDBS(m.lcDirImport) + m.lcFileName lcDataFisier = RIGHT(JUSTSTEM(m.lcFileName),8) && 20240430 din bts_detalii_facturi_rep_20240430.xml lnZi = INT(VAL(RIGHT(m.lcDataFisier,2))) lnLuna = INT(VAL(SUBSTR(m.lcDataFisier,5,2))) lnAn = INT(VAL(LEFT(m.lcDataFisier,4))) ldDataFisier = DATE(m.lnAn, m.lnLuna, m.lnZi) IF !BETWEEN(m.ldDataFisier, m.ldData1, m.ldData2) LOOP ENDIF lnRecords = XMLTOCURSOR(m.lcFile, 'cFacturiTemp',512) *!* USE (m.lcFile) IN 0 SHARED ALIAS cFacturiTemp IF USED('cFacturiTemp') SELECT cFacturiFidelio APPEND FROM DBF('cFacturiTemp') USE IN (SELECT('cFacturiTemp')) ENDIF ENDFOR * BIZ / RESTAURANT lcFileSkeleton = '*_' + m.lcAnLuna + '*.xml' && iesiri/intrari/vanzari_aaaallzz.xml lcDirImport = m.lcCaleImportBiz lnFiles = Adir(laFiles, m.lcDirImport + m.lcFileSkeleton, '', 1) If lnFiles = 0 Thisform.trace('Nu exista fisiere ' + m.lcFileSkeleton + ' in directorul ' + m.lcDirImport) * lnSucces = CT_INSUCCES * pot sa nu existe fisiere restaurant, doar hotel * RETURN m.lnSucces ENDIF FOR lnFile = 1 TO m.lnFiles lcFileName = LOWER(laFiles[m.lnFile,1]) lcFile = ADDBS(m.lcDirImport) + m.lcFileName lcPrefix = LEFT(m.lcFileName,3) lcDataFisier = RIGHT(JUSTSTEM(m.lcFileName),8) && 20240430 din bts_detalii_facturi_rep_20240430.xml lnZi = INT(VAL(RIGHT(m.lcDataFisier,2))) lnLuna = INT(VAL(SUBSTR(m.lcDataFisier,5,2))) lnAn = INT(VAL(LEFT(m.lcDataFisier,4))) ldDataFisier = DATE(m.lnAn, m.lnLuna, m.lnZi) IF !BETWEEN(m.ldDataFisier, m.ldData1, m.ldData2) LOOP ENDIF DO CASE CASE LEFT(m.lcFileName, 8) = 'intrari_' lcCursorTemp = 'cIntrariTemp' lcCursor = 'cIntrariRestaurant' CASE LEFT(m.lcFileName, 7) = 'iesiri_' lcCursorTemp = 'cIesiriTemp' lcCursor = 'cIesiriRestaurant' CASE LEFT(m.lcFileName, 8) = 'vanzari_' lcCursorTemp = 'cVanzariTemp' lcCursor = 'cVanzariRestaurant' ENDCASE lnRecords = XMLTOCURSOR(m.lcFile, m.lcCursor, 512 + 8192) && 8192 se adauga in cursorul existent *!* IF USED(m.lcCursorTemp) *!* SELECT (m.lcCursor) *!* APPEND FROM DBF(m.lcCursorTemp) *!* USE IN (SELECT(m.lcCursorTemp)) *!* ENDIF ENDFOR IF USED('cFacturiFidelio') SELECT distinct CAST(ALLTRIM(cumparator) as C(200)) as denumire, CAST(ALLTRIM(codfiscal_cnp) as C(50)) as cod_fiscal, CAST(ALLTRIM(regcomert_ci_pass) as C(50)) as reg_com, ; CAST(ALLTRIM(iban) as C(50)) as cont_banca, CAST(ALLTRIM(banca) as C(100)) as banca ; FROM cFacturiFidelio ; INTO CURSOR cPartTemp SELECT nPart APPEND FROM DBF('cPartTemp') USE IN (SELECT('cPartTemp')) ENDIF IF USED('cIntrariRestaurant') SELECT distinct CAST(ALLTRIM(DenumireFurnizor) as C(200)) as denumire, CAST(ALLTRIM(CodFiscal) as C(50)) as cod_fiscal ; FROM cIntrariRestaurant ; INTO CURSOR cPartTemp SELECT nPart APPEND FROM DBF('cPartTemp') USE IN (SELECT('cPartTemp')) ENDIF * Calculez checksum pentru cod cheie externa din denumire si cod fiscal, pentru ca nu am id partener extern UPDATE nPart SET cod = SYS(2007,denumire+cod_fiscal,0,1) Return m.lnSucces ENDPROC PROCEDURE Init Local ldData1, ldData2, ldLastDay, lnHeight, lnWidth DODEFAULT() lnHeight = this.Height lnWidth = this.Width this.AutoCenter = .T. this.WindowState = 2 _screen.Height = lnHeight + 15 _screen.Width = lnWidth + 15 this.Icon = _screen.Icon ldData1 = goApp.oSettings.last_data2 + 1 && ultima zi din importul anterior + 1 IF EMPTY(m.ldData1) ldData1 = DATE() - DAY(DATE()) + 1 && 1 ale lunii curente ENDIF * doar pentru testare folosesc luna mai 2024 *ldData1 = DATE(2024,5,1) this.chkTest.Value = 1 && nu scrie notele contabile ldLastDay = GOMONTH(m.ldData1, 1) - DAY(m.ldData1) IF m.ldData1 <= m.ldLastDay ldData2 = m.ldLastDay ELSE ldData2 = GOMONTH(m.ldLastDay, 1) - DAY(m.ldLastDay) ENDIF thisform.txtData1.Value = m.ldData1 thisform.txtData2.Value = m.ldData2 thisform.chkTVAIncasare.Value = goapp.osettings.nTVAIncasare ENDPROC PROCEDURE scrienote *!* 25.04.2025 Completez codul de taxa saft in luna curenta Private gnAn, gnIdSucursala, gnIdUtil, gnLuna *** Daca am bifa de Test, nu scriu in ROA Local lcMesaj, lcSql, llTest, lnHandle, lnSucces, lnSucces2, lnSucces3 Local lcDirImport, ldDataImport, lnAn, lnLuna ldDataImport = This.txtData1.Value lnLuna = Month(m.ldDataImport) lnAn = Year(m.ldDataImport) lcDirImport = Addbs(Alltrim(goApp.oSettings.cale_import)) + Alltrim(Str(m.lnAn)) + '\' + Padl(m.lnLuna, 2, '0') + '\' lnSucces = CT_INSUCCES SET STEP ON llTest = (This.chkTest.Value = 1) If m.llTest thisform.trace('Salvare note in xls, fara scriere in Registrul Jurnal') If !Used('act_test') Select * From actactan Where .F. Into Cursor act_test Readwrite Endif Select act_test Append From Dbf('actactan') lnSucces = CT_SUCCES RETURN m.lnSucces Endif thisform.trace('Scriere note in Registrul Jurnal') lnSucces = This.Connectroa() If lnSucces = CT_SUCCES lnHandle = goConn.nHandle lnSucces = SQLSetprop(m.lnHandle, "Transactions", 2) Endif If lnSucces = CT_SUCCES lcSql = [SELECT seq_cod.nextval FROM dual] SELECT distinct nract, dataact FROM actactan ORDER BY dataact, nract INTO CURSOR cNract SELECT cNract SCAN IF MOD(RECNO(), 20) = 0 thisform.trace('Generez cod pentru factura ' + TRANSFORM(RECNO()) + '/' + TRANSFORM(RECCOUNT())) ENDIF pnCod = 0 lnSucces = goExecutor.oSelect2Value(m.lcSql, @pnCod) IF lnSucces > 0 UPDATE actactan SET cod = m.pnCod WHERE nract = cNract.nract AND dataact = cNract.dataact ENDIF ENDSCAN USE IN (SELECT('cNract')) && Creez note pentru fiecare luna/an Select Distinct an, luna From actactan Order By an, luna Into Cursor cAnLuna Select cAnLuna Scan gnAn = an gnLuna = luna gnIdUtil = - 3 gnIdSucursala = Null If lnSucces = CT_SUCCES thisform.trace('Initializare scriere') lcSql = [begin pack_contafin.init_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna, 0,0,?gnIdSucursala); end;] lnSucces = goExecutor.oExecute(GetHash("cSql=>" + lcSql)) Endif If lnSucces = CT_SUCCES thisform.trace('Salvare inregistrari') SET STEP ON Select * From actactan Where an = m.gnAn And luna = m.gnLuna ORDER BY cod Into Cursor cAct NOFILTER lnSucces = This.sql_temp_insert('cAct', 'ACT_TEMP') Use In (Select('cAct')) Endif If lnSucces = CT_SUCCES thisform.trace('Finalizare scriere') Private pcMesajRefacereNota pcMesajRefacereNota = "" lcSql = [begin pack_contafin.final_scriere_act_rul_local(?gnIdUtil, ?gnAn, ?gnLuna, NULL, 0, 1, ?@pcMesajRefacereNota); end;] lnSucces = goExecutor.oExecute(GetHash('cSql=>' + m.lcSql)) If !Empty(Nvl(pcMesajRefacereNota, '')) This.trace(m.pcMesajRefacereNota) Messagebox(pcMesajRefacereNota, 0 + 48, 'Atentie') Endif Release pcMesajRefacereNota Else lcMesaj = goExecutor.cEroare This.trace(m.lcMesaj) Messagebox(m.lcMesaj) Exit Endif && lnSucces Endscan && cAnLuna Use In (Select('cAnLuna')) * Completez codul de taxa saft in luna curenta If lnSucces = CT_SUCCES lcSql =[BEGIN pack_saft.UpdateTaxCode(?gnAn, ?gnLuna, ?gnAn, ?gnLuna); end;] lnSucces = goExecutor.oExecute(GetHash('cSql=>' + m.lcSql)) If lnSucces <> CT_SUCCES lcMesaj = goExecutor.cEroare This.trace(m.lcMesaj) Messagebox(m.lcMesaj) Endif && lnSucces ENDIF If lnSucces = CT_SUCCES lnSucces2 = goExecutor.oExecute(GetHash('cSql=>COMMIT')) If lnSucces2 <> CT_SUCCES lnSucces = CT_INSUCCES Endif Else lnSucces2 = goExecutor.oExecute(GetHash('cSql=>ROLLBACK')) Endif If lnSucces2 <> CT_SUCCES This.trace(goExecutor.cEroare) Messagebox(lcSql + Chr(13) + goExecutor.cEroare, 0 + 16, "Eroare") Endif lnSucces3 = SQLSetprop(m.lnHandle, "Transactions", 1) If lnSucces3 <> CT_SUCCES lcMesaj = 'Programul nu a reusit sa treaca pe tranzactie automata. Iesiti din program si intrati din nou!' This.trace(m.lcMesaj) Messagebox(m.lcMesaj, 0 + 48, 'Atentie!') Endif Endif && lnSucces This.Disconnectroa() Return m.lnSucces ENDPROC PROCEDURE Show LPARAMETERS nStyle * goApp.oTrace = goImportFrm DODEFAULT(nStyle) ENDPROC PROCEDURE sql_temp_insert Lparameters tcAlias, tcTableName Local lcAlias, lcCursor, lnSucces Local lcDate, lcFieldName, lcFieldType, lcFieldValue, lcFields, lcInsert, lcMesaj, lcNumber, lcSql Local lcString, lcTableName, lcValues, lnCount Local lnField Private poIreg, pcTableName Local lcVariable If Empty(tcAlias) lcAlias = 'ACTACTAN' Else lcAlias = Upper(Alltrim(tcAlias)) Endif If Empty(tcTableName) pcTableName = 'ACT_TEMP' Else pcTableName = Upper(Alltrim(tcTableName)) Endif lcCursor = 'crs_Coloane' lcSql = [SELECT COLUMN_NAME AS COLOANA from user_tab_columns WHERE table_name = ?pcTableName] lnSucces = goExecutor.oExecute(GetHash('cSql=>' + m.lcSql + '??cCursor=>' + m.lcCursor)) If m.lnSucces <> CT_SUCCES lcMesaj = 'Eroare la selectare coloane din ' + m.lcTableName + Chr(13) + goExecutor.cEroare This.trace(m.lcMesaj) AMESSAGEBOX(m.lcMesaj, 0 + 16, 'Eroare') Endif If m.lnSucces = CT_SUCCES Select (lcAlias) lnCount = Fcount() Scan lcFields = [] lcValues = [] lcInsert = [] Scatter Name poIreg IF MOD(RECNO(), 20) = 0 thisform.trace('Salvez nota ' + TRANSFORM(RECNO()) + '/' + TRANSFORM(RECCOUNT())) ENDIF For lnField = 1 To lnCount Select (lcAlias) lcFieldName = Upper(Alltrim(Field(lnField))) lcFieldType = Type(lcFieldName) lcFieldValue = Evaluate(lcFieldName) If lcFieldType = 'C' lcVariable = '?ALLTRIM(poIreg.' + lcFieldName + ')' Else lcVariable = '?poIreg.' + lcFieldName Endif Select CRS_COLOANE Locate For Upper(Alltrim(COLOANA)) == lcFieldName If !Found() Loop Endif lcFields = lcFields + [,] + lcFieldName lcNumber = '0' lcDate = '' lcString = '' && FAC NULL ID-URILE CU VALOARE 0 If Inlist(lcFieldName, 'ID_SUCURSALA') If poIreg.id_sucursala = 0 poIreg.id_sucursala = Null Endif Endif lcValues = lcValues + [,] + lcVariable *!* DO CASE *!* CASE lcFieldType = 'N' *!* IF EMPTY(lcFieldValue) OR ISNULL(lcFieldValue) *!* lcNumber = '0' *!* ELSE *!* lcNumber = ALLTRIM(STR(lcFieldValue,24,4)) *!* ENDIF *!* lcValues = lcValues + [,] + lcNumber *!* CASE lcFieldType = 'C' *!* IF EMPTY(lcFieldValue) OR ISNULL(lcFieldValue) *!* lcString = '' *!* ELSE *!* lcString = ALLTRIM(lcFieldValue) *!* ENDIF *!* lcValues = lcValues + [,] + ['] + lcString + ['] *!* CASE INLIST(lcFieldType,'D','T') *!* IF EMPTY(lcFieldValue) OR ISNULL(lcFieldValue) *!* lcDate = '' *!* ELSE *!* lcDate = DTOS(lcFieldValue) *!* ENDIF *!* lcValues = lcValues + [,] + [TO_DATE('] + lcDate + [','YYYY-MM-DD')] *!* ENDCASE Endfor lcFields = Substr(lcFields, 2) lcValues = Substr(lcValues, 2) && INSERT INTO ACT_TEMP lcInsert = [INSERT INTO ] + m.pcTableName + [ (] + m.lcFields + [) VALUES (] + m.lcValues + [)] lnSucces = goExecutor.oExecute(GetHash('cSql=>' + m.lcInsert)) If lnSucces <> CT_SUCCES This.Trace(goExecutor.cEroare) DEBUG AMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare') Exit Endif Endscan Endif Use In (SELECT('crs_coloane')) Return lnSucces ENDPROC PROCEDURE sterge_import Local lcCursor, lcMesaj, lcSql, llContinuare, lnInregistrari, lnPercent, lnSucces, lnGrupe PRIVATE gnAn, gnIdSucursala, gnIdUtil, gnLuna, pnCod, pcOptiune pcOptiune = '' lcMeniu = '' lnSucces = This.Connectroa() If lnSucces = CT_SUCCES lnHandle = goConn.nHandle else Return Endif gnAn = Year(Thisform.txtData1.Value) gnLuna = Month(This.txtData1.Value) gnIdUtil = - 3 gnIdSucursala = Null llContinuare = .F. lcSql = [select distinct explicatia5 from act where an=?gnAn and Luna=?gnLuna and id_set=50100 and sters=0 order by explicatia5] lcCursor = [cExplicatia5] lnSucces = goExecutor.oExecute(GetHash('cSql=>' + m.lcSql + '??cCursor=>' + m.lcCursor)) IF m.lnSucces = CT_SUCCES lcMeniu = [Toate tipurile de documente] If m.lnSucces = CT_SUCCES SELECT cExplicatia5 SCAN lcMeniu = m.lcMeniu + ';' + ALLTRIM(explicatia5) ENDSCAN ENDIF USE IN (SELECT(m.lcCursor)) lnOptiune = xmenu(m.lcMeniu) llContinuare = (m.lnOptiune > 0) pcOptiune = IIF(m.lnOptiune = 1, '', GETWORDNUM(m.lcMeniu, m.lnOptiune, ';')) ELSE This.Trace(goExecutor.cEroare) MESSAGEBOX(goExecutor.cEroare) m.llContinuare = .F. ENDIF IF m.llContinuare lcSql = [select distinct cod from act where an=?gnAn and Luna=?gnLuna and id_set=50100 and sters=0] + IIF(m.lnOptiune = 1, '', ' and explicatia5 = ?pcOptiune') lcCursor = [cCoduri] lnSucces = goExecutor.oExecute(GetHash('cSql=>' + m.lcSql + '??cCursor=>' + m.lcCursor)) If m.lnSucces = CT_SUCCES lnInregistrari = Reccount(m.lcCursor) If m.lnInregistrari > 0 llContinuare = (Messagebox('Doriti sa stergeti ' + Alltrim(Str(m.lnInregistrari)) + ' documente ' + IIF(pcOptiune = '', '', ' cu explicatia5 = ' + m.pcOptiune + ' ') + 'din luna ' + Padl(m.gnLuna, 2, '0') + '/' + Alltrim(Str(m.gnAn)) + '?', 4 + 32, _Screen.Caption) = 6) Else Messagebox('Nu sunt inregistrari in luna ' + Padl(m.gnLuna, 2, '0') + '/' + Alltrim(Str(m.gnAn)), 0 + 64, _Screen.Caption) llContinuare = .F. ENDIF ELSE This.Trace(goExecutor.cEroare) MESSAGEBOX(goExecutor.cEroare) m.llContinuare = .F. Endif ENDIF If !m.llContinuare Use In (Select(m.lcCursor)) This.Disconnectroa() Return Endif lnSucces = SQLSetprop(m.lnhandle, "Transactions", 2) If lnSucces = CT_SUCCES lcSql = [begin pack_contafin.init_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna, 1,0,?gnIdSucursala); end;] lnSucces = goExecutor.oExecute(GetHash("cSql=>" + lcSql)) If lnSucces = CT_SUCCES Select cCoduri lnGrupe = MAX(INT(RECCOUNT() / 10), 1) SCAN pnCod = cod If Mod(Recno(), m.lnGrupe) = 0 lnPercent = Round(Recno() / Reccount() * 100, 0) This.Trace('Stergere ' + Alltrim(Str(m.lnPercent)) + '%') Endif lcSql = [begin pack_contafin.sterge_document(?pnCod); end;] lnSucces = goExecutor.oExecute(GetHash("cSql=>" + lcSql)) If lnSucces = CT_INSUCCES This.Trace(goExecutor.cEroare) EXIT Endif ENDSCAN ELSE This.Trace(goExecutor.cEroare) ENDIF USE IN (SELECT('cCoduri')) ELSE This.Trace(goExecutor.cEroare) ENDIF If lnSucces = CT_INSUCCES goExecutor.oExecute(GetHash('cSql=>ROLLBACK')) lcMesaj = 'Stergerea nu s-a efectuat!' Else goExecutor.oExecute(GetHash('cSql=>COMMIT')) lcMesaj = 'Stergerea s-a efectuat cu succes' Endif SQLSetprop(m.lnhandle, "Transactions", 1) This.Disconnectroa() This.Trace(m.lcMesaj) MESSAGEBOX(m.lcMesaj, 0 + 48, _screen.Caption) ENDPROC PROCEDURE trace LPARAMETERS tcMessage This.edtInfo.Value = This.edtInfo.Value + TRANSFORM(NVL(tcMessage,'')) + CHR(13) + CHR(10) this.edtInfo.SelStart = LEN(this.edtInfo.Value) This.edtInfo.Refresh() ENDPROC PROCEDURE verificafactura Lparameters toRec Private gnAn, gnIdSucursala, gnIdUtil, gnLuna, gcExplicatia5, gdDataAct, gnIdSet, gnNrAct Local lcMesaj, lcSql, lnHandle, lnInregistrari, lnSucces lnInregistrari = 0 lnSucces = This.Connectroa() If lnSucces = CT_SUCCES lnHandle = goConn.nHandle Endif If lnSucces = CT_SUCCES gnAn = toRec.an gnLuna = toRec.luna gnIdUtil = - 3 gnIdSucursala = Null gnNrAct = toRec.nract gdDataAct = toRec.dataact gnIdSet = toRec.id_set gcExplicatia5 = Alltrim(toRec.explicatia5) lcSql = [select COUNT(*) as nr from act where sters = 0 and an = ?gnAn and luna = ?gnLuna and nract = ?gnNrAct and dataact = ?gdDataAct and id_set = ?gnIdSet and explicatia5 = ?gcExplicatia5] lnSucces = goExecutor.oExecute(GetHash("cCursor=>cInregistrari??cSql=>" + lcSql)) If lnSucces = CT_SUCCES If !Used('cInregistrari') lnInregistrari = 1 && daca da eroare, consider duplicat ca sa nu se insereze din greseala lnSucces = CT_INSUCCES lcMesaj = 'Nu exista cursorul cInregistrari cu numarul de inregistrari ale facturii!' This.trace(m.lcMesaj) Messagebox(m.lcMesaj, 0 + 48, 'Atentie!') Else lnInregistrari = cInregistrari.nr ENDIF ELSE lnInregistrari = 1 && daca da eroare, consider duplicat ca sa nu se insereze din greseala This.trace(goExecutor.cEroare) Messagebox(goExecutor.cEroare, 0 + 48, 'Atentie!') ENDIF USE IN (SELECT('cInregistrari')) Endif && lnSucces This.Disconnectroa() Return (m.lnInregistrari > 0) ENDPROC PROCEDURE chkTVAIncasare.Valid goApp.oSettings.SetVariable([general], [tva_incasare], thisform.chkTVAIncasare.Value) ENDPROC PROCEDURE cmdExport.Click Close Databases All Local llSucces, ldData1, loEx as Exception ldData1 = Thisform.txtData1.Value lnSucces = Thisform.ExportDate() If m.lnSucces = CT_SUCCES lnSucces = Thisform.CompleteazaParteneriROA() If m.lnSucces = CT_SUCCES lnSucces = Thisform.Creeazanote() goapp.osettings.SetVariable("general", "last_data1", DTOC(thisform.txtData1.Value)) goapp.osettings.SetVariable("general", "last_data2", DTOC(thisform.txtData2.Value)) ENDIF ENDIF Thisform.Trace('Import incheiat ' + IIF(m.lnSucces = CT_SUCCES, 'cu succes.', 'fara succes.')) ENDPROC PROCEDURE Command1.Click Thisform.sterge_import() ENDPROC ENDDEFINE