*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (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
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
* Prefer persoanele fizice pentru ca sunt mai multe fata de persoanele juridice
* Sunt multe persoane fizice cu CNP-uri gresite
If !Empty(m.lcCod)
If Left(lcCod,2)="RO"
lcCod=Substr(m.lcCod,3)
lcTip_persoana="1"
ENDIF
IF ISALPHA(m.lcCod)
lcTip_persoana="1"
ENDIF
If Len(m.lcCod)=13 And Isdigit(m.lcCod)
If !cValidCNP(m.lcCod)
* daca CNP invalid, sterg CNP, sa nu dea eroare la D406
lcCod_fiscal = ''
Endif
ELSE
* PJ din ROMANIA au coduri fiscale intre 2-10 cifre
* Exista si PJ din alte tari care pot avea coduri fiscale cu alt numar de cifre, dar sunt exceptii
If Len(m.lcCod)>=2 And Len(m.lcCod)<=10 And Isdigit(m.lcCod)
lcTip_persoana="1"
Endif
Endif
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