Files
comun/ferestre/frm_import_note_facturi_clienti.sc2

1442 lines
50 KiB
Plaintext

*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.21" SourceFile="frm_import_note_facturi_clienti.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" />
*<PropValue>
DataSource = .NULL.
Height = 200
Left = 1
Name = "Dataenvironment"
Top = 220
Width = 520
*</PropValue>
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="txtData2" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Label1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Command1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="chkModificaNote" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdTemplate" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="chkAnulat" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="But_help1" UniqueID="" Timestamp="" />
*<DefinedPropArrayMethod>
*m: completeazaclientiroa
*m: connectroa
*m: creeazanote
*m: disconnectroa
*m: exportdate
*m: getidpartcasa
*m: modificanote
*m: prelucreazafisierebreeze
*m: scrienote
*m: sql_temp_insert
*m: sql_temp_insert_values
*m: sterge_import
*m: templatexlsx
*m: trace
*m: verificaimport
*p: lanulat
*p: _memberdata && XML Metadata for customizable properties
*</DefinedPropArrayMethod>
*<PropValue>
BackColor = 255,255,255
Caption = "Import note contabile in ROA"
DoCreate = .T.
Height = 538
Icon = ..\grafice\note.ico
lanulat = .F.
Left = 0
Name = "Form1"
ShowWindow = 0
Top = 0
Width = 660
WindowType = 1
_memberdata = <VFPData>
<memberdata name="verificaimport" display="VerificaImport"/>
<memberdata name="modificanote" display="ModificaNote"/>
<memberdata name="getidpartcasa" display="GetIdPartCasa"/>
</VFPData>
*</PropValue>
ADD OBJECT 'But_help1' AS but_help WITH ;
Anchor = 8, ;
Left = 615, ;
Name = "But_help1", ;
Top = 3
*< END OBJECT: ClassLib="..\clase\cmd_butoane.vcx" BaseClass="commandbutton" />
ADD OBJECT 'chkAnulat' AS _checkbox WITH ;
Alignment = 0, ;
Caption = "Facturi anulate", ;
ControlSource = "Thisform.lAnulat", ;
FontSize = 10, ;
Left = 276, ;
Name = "chkAnulat", ;
Top = 11, ;
Value = .F.
*< END OBJECT: ClassLib="..\clase\_baza.vcx" BaseClass="checkbox" />
ADD OBJECT 'chkModificaNote' AS _checkbox WITH ;
Alignment = 0, ;
Caption = "Modifica note contabile", ;
FontSize = 10, ;
Left = 396, ;
Name = "chkModificaNote", ;
Top = 12, ;
Value = 1
*< END OBJECT: ClassLib="..\clase\_baza.vcx" BaseClass="checkbox" />
ADD OBJECT 'cmdExport' AS commandbutton WITH ;
Anchor = 0, ;
AutoSize = .F., ;
BackColor = 255,128,64, ;
Caption = "\<Import", ;
FontBold = .T., ;
FontSize = 10, ;
Height = 36, ;
Left = 132, ;
Name = "cmdExport", ;
TabIndex = 3, ;
Top = 41, ;
Width = 117
*< END OBJECT: BaseClass="commandbutton" />
ADD OBJECT 'cmdTemplate' AS commandbutton WITH ;
Anchor = 0, ;
AutoSize = .F., ;
BackColor = 74,165,255, ;
Caption = "Sablon \<xlsx", ;
FontBold = .T., ;
FontSize = 10, ;
Height = 36, ;
Left = 11, ;
Name = "cmdTemplate", ;
TabIndex = 3, ;
Top = 41, ;
Width = 117
*< END OBJECT: BaseClass="commandbutton" />
ADD OBJECT 'Command1' AS commandbutton WITH ;
Anchor = 0, ;
AutoSize = .F., ;
BackColor = 255,159,159, ;
Caption = "\<Sterge import", ;
FontBold = .T., ;
FontSize = 10, ;
ForeColor = 0,0,0, ;
Height = 36, ;
Left = 251, ;
Name = "Command1", ;
TabIndex = 4, ;
TabStop = .F., ;
ToolTipText = "Sterge note importate, maxim o luna. Pentru mai multe luni trebuie repetata operatia cu alta perioada", ;
Top = 41, ;
Width = 117
*< END OBJECT: BaseClass="commandbutton" />
ADD OBJECT 'edtInfo' AS editbox WITH ;
Anchor = 15, ;
FontSize = 10, ;
Height = 444, ;
Left = 10, ;
Name = "edtInfo", ;
TabIndex = 4, ;
Top = 84, ;
Width = 638
*< END OBJECT: BaseClass="editbox" />
ADD OBJECT 'Label1' AS label WITH ;
AutoSize = .T., ;
BackStyle = 0, ;
Caption = "Perioada", ;
FontSize = 10, ;
Height = 18, ;
Left = 9, ;
Name = "Label1", ;
TabIndex = 5, ;
Top = 11, ;
Width = 53
*< END OBJECT: BaseClass="label" />
ADD OBJECT 'txtData1' AS textbox WITH ;
FontSize = 10, ;
Format = "!K", ;
Height = 23, ;
Left = 66, ;
Name = "txtData1", ;
TabIndex = 1, ;
Top = 7, ;
Width = 100
*< END OBJECT: BaseClass="textbox" />
ADD OBJECT 'txtData2' AS textbox WITH ;
FontSize = 10, ;
Format = "!K", ;
Height = 23, ;
Left = 172, ;
Name = "txtData2", ;
TabIndex = 2, ;
Top = 7, ;
Width = 100
*< END OBJECT: BaseClass="textbox" />
PROCEDURE completeazaclientiroa
* Completez id_part
*loHash = GetHash([cselect=>select id_part from nom_parteneri where replace(UPPER(cod_fiscal),' ', '') = replace(UPPER(?pcCodFiscal), ' ', '') and sters = 0 and inactiv = 0??cCursor=>cClientiROA])
Local lcAdresa, lcApart, lcBanca, lcBloc, lcCod_fiscal, lcCodpostal, lcCont_Banca, lcCorespDel
Local lcDA_apare, lcDenumire, lcDenumire_adresa, lcEmail, lcEtaj, lcFax, lcIdPart, lcIdString
Local lcId_Judet, lcId_categ_ent, lcId_loc, lcId_loc_inreg, lcId_tara, lcId_util, lcItem, lcJudet
Local lcLocalitate, lcMesaj, lcMotiv_inactiv, lcNumar, lcNume, lcPrefix, lcPrenume, lcPrincipala
Local lcReg_comert, lcScara, lcSql, lcSqlCod, lcSqlDenumire, lcSqlInsert, lcStrada, lcSufix, lcTara
Local lcTelefon1, lcTelefon2, lcTip_persoana, lcWeb, lcinactiv, lnItem, lnItems, lnSucces, lcAdreseParteneri
Private pcCodFiscal, pcDenumire, pnIdPart, pnNrAdrese, pnIdJudet
pnIdJudet = 0
pcCodFiscal = ''
pcDenumire = ''
pnIdPart = 0
pnNrAdrese = 0
lcSqlPart = [select id_part, cod_fiscal, denumire from nom_parteneri where sters = 0 and inactiv = 0]
lnSucces = goExecutor.oExecute(m.lcSqlPart, 'cParteneri')
If m.lnSucces < 0
Thisform.trace('Eroare la selectia din clienti ROA ' + goExecutor.oPrelucrareEroare())
RETURN m.lnSucces
ENDIF
lcAdreseParteneri = [select id_adresa, id_part, localitate, id_loc, judet, id_judet, tara, id_tara from vadrese_parteneri]
lnSucces = goExecutor.oExecute(m.lcAdreseParteneri, 'cAdrese')
If m.lnSucces < 0
Thisform.trace('Eroare la selectia din adrese parteneri ROA ' + goExecutor.oPrelucrareEroare())
RETURN m.lnSucces
ENDIF
*!* lcSqlCod = [select MAX(id_part) as id_part from nom_parteneri where replace(UPPER(cod_fiscal),' ', '') = ?pcCodFiscal and sters = 0 and inactiv = 0]
*!* lcSqlDenumire = [select MAX(id_part) as id_part from nom_parteneri where denumire = ?pcDenumire and sters = 0 and inactiv = 0]
lnSucces = 1
Select cClienti
Scan
pcCodFiscal = Alltrim(Upper(STRTRAN(cod_fiscal, ' ', '')))
pcDenumire = Alltrim(Upper(denumire))
pnIdPart = 0
lcAdresa = Strtran(Alltrim(Upper(Nvl(adresa, ''))), Chr(13), ' ')
* Preciziei (Strada), Nr. 6M, Complex rezidential TEN BLOCKS Bl. 8B, Sc. 1, Et. 6, Ap. 32, Cod Postal 062203, Bucuresti, Romania
* Doinei (Strada), Nr. 94, Et. 2, Ap. 12 int 412, Cod Postal 077086, Fundeni, Romania
* Lieberman Partners Srl Braniste Valeriu (Strada), Nr. 37-39, Et. 2, Ap. 8, Cod Postal 030715, Bucuresti, Romania
WAIT WINDOW 'Import clienti... Caut clientul ' + TRANSFORM(RECNO()) + '/' + TRANSFORM(RECCOUNT()) NOWAIT
SELECT cParteneri
If !Empty(m.pcCodFiscal)
LOCATE FOR ALLTRIM(STRTRAN(cod_fiscal, ' ', '')) = m.pcCodFiscal
*!* lnSucces = goExecutor.oSelect2Value(m.lcSqlCod, @pnIdPart)
ELSE
LOCATE FOR ALLTRIM(UPPER(denumire)) = m.pcDenumire
*!* lnSucces = goExecutor.oSelect2Value(m.lcSqlDenumire, @pnIdPart)
Endif
*!* If m.lnSucces = -1
*!* Thisform.trace('Eroare la selectia din clienti ROA ' + goExecutor.oPrelucrareEroare())
*!* Exit
*!* Endif
IF FOUND()
pnIdPart = cParteneri.id_part
ENDIF
If !Empty(Nvl(m.pnIdPart, 0))
Replace id_part With m.pnIdPart In cClienti
lcMesaj = 'Client existent ' + Alltrim(cClienti.denumire) + ' CUI: ' + Alltrim(cClienti.cod_fiscal) + ' ID: ' + Alltrim(Transform(cClienti.id_part))
Thisform.trace(m.lcMesaj)
Else
* Adaugare clienti
Select cClienti
lcDenumire = Nvl(Strtran(Alltrim(Upper(denumire)), ['], ['']), "")
lcNume = Nvl(Strtran(Alltrim(Upper(nume)), ['], ['']), "")
lcPrenume = Nvl(Strtran(Alltrim(Upper(prenume)), ['], ['']), "")
If Empty(m.lcNume)
lcNume = m.lcDenumire
m.lcPrenume = ''
Endif
lcCod_fiscal = Upper(Alltrim(cod_fiscal))
lcReg_comert = Nvl(Alltrim(Upper(reg_com)), "")
lcId_loc_inreg = 'NULL'
lcId_categ_ent = 'NULL'
lcPrefix = ""
lcSufix = ""
lcTip_persoana = IIF(!EMPTY(m.lcCod_fiscal) and LEN(m.lcCod_fiscal) < 13, "1", "2")
lcBanca = ""
lcCont_Banca = ""
lcinactiv = "0"
lcMotiv_inactiv = ""
lcIdString = "16"
lcCorespDel = ""
lcId_util = "-3"
lcSqlInsert = [begin pack_def.adauga_partener('] + 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(m.lcSqlInsert)
If !Empty(Nvl(m.pnIdPart, 0))
Replace id_part With m.pnIdPart In cClienti
Thisform.trace('Client nou ' + Alltrim(cClienti.denumire) + ' CUI: ' + Alltrim(cClienti.cod_fiscal) + ' ID: ' + Alltrim(Transform(cClienti.id_part)))
Else
lcMesaj = 'Eroare la adaugarea in clienti ROA ' + Alltrim(cClienti.denumire) + ' CUI: ' + Alltrim(cClienti.cod_fiscal) + Chr(13) + Chr(10) + goExecutor.oPrelucrareEroare()
Thisform.trace(m.lcMesaj)
AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption )
Exit
Endif && !Empty(Nvl(m.pnIdPart,0))
Endif && !Empty(Nvl(m.pnIdPart, 0))
***********************************
* Adresa partener
***********************************
If !Empty(m.lcAdresa)
CALCULATE CNT(id_adresa) FOR id_part = m.pnIdPart TO pnNrAdrese IN cAdrese
*!* pnNrAdrese = 0
*!* lnSucces = goExecutor.oSelect2Value([SELECT COUNT(*) as nr FROM adrese_parteneri WHERE id_part = ?pnIdPart], @pnNrAdrese)
*!* If m.lnSucces < 0
*!* lcMesaj = goExecutor.cEroare
*!* Thisform.trace(m.lcMesaj)
*!* AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption )
*!* Exit
*!* Endif
lcIdPart = Alltrim(Str(m.pnIdPart))
lcDenumire_adresa = ""
lcDA_apare = "0"
lcStrada = ""
lcNumar = ""
lcBloc = ""
lcScara = ""
lcApart = ""
lcEtaj = ""
lcId_loc = "NULL"
lcLocalitate = ""
lcId_Judet = "NULL"
lcCodpostal = "NULL"
lcId_tara = "NULL"
lcTelefon1 = ""
lcTelefon2 = ""
lcFax = ""
lcEmail = ""
lcWeb = ""
lcPrincipala = Iif(m.pnNrAdrese = 0, "1", "0")
lcinactiv = "0"
lcId_util = "-3"
lnItems = Getwordcount(m.lcAdresa, ',')
For lnItem = 1 To m.lnItems
lcItem = Alltrim(Getwordnum(m.lcAdresa, m.lnItem, ','))
Do Case
Case m.lnItem = 1 && strada
lcStrada = LEFT(Alltrim(m.lcItem), 150)
Case 'NR.' $ m.lcItem && nr strada
lcNumar = LEFT(Alltrim(Strtran(m.lcItem, 'NR.', '')), 10)
Case 'BL.' $ m.lcItem
lcBloc = LEFT(Alltrim(Strtran(m.lcItem, 'BL.', '')), 30)
Case 'SC.' $ m.lcItem
lcScara = LEFT(Alltrim(Strtran(m.lcItem, 'SC.', '')), 10)
Case 'ET.' $ m.lcItem
lcEtaj = LEFT(Alltrim(Strtran(m.lcItem, 'ET.', '')), 20)
Case 'AP.' $ m.lcItem
lcApart = LEFT(Alltrim(Strtran(m.lcItem, 'AP.', '')), 10)
Case 'COD POSTAL' $ m.lcItem
lcCodpostal = ALLTRIM(STR(INT(VAL(LEFT(Alltrim(Strtran(m.lcItem, 'COD POSTAL', '')), 20)))))
Case 'LOC.' $ m.lcItem
lcLocalitate = Alltrim(Strtran(m.lcItem, 'LOC.', ''))
Case 'JUD.' $ m.lcItem
lcJudet = Alltrim(Strtran(m.lcItem, 'JUD.', ''))
Case m.lnItem = m.lnItems - 1 And Empty(m.lcLocalitate)
lcLocalitate = m.lcItem
Case m.lnItem = m.lnItems
lcTara = m.lcItem
Endcase
Endfor
lnIdJudetBucuresti = 10
lcJudetBucuresti = "BUCURESTI"
lnIdLocalitateBucuresti = 1759
lnIdTaraRO = 1
If m.lcLocalitate = 'BUCURESTI'
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
LOCATE FOR id_part = m.pnIdPart AND localitate = m.lcLocalitate
IF !FOUND()
pnIdJudet = 0
lnSucces = goExecutor.oSelect2Value([select j.id_judet, j.id_tara from syn_nom_judete j where j.judet = '] + m.lcJudet + [' and j.inactiv = 0 and j.sters = 0], @pnIdJudet)
If m.lnSucces > 0
IF EMPTY(NVL(m.pnIdJudet,0))
lnSucces = goExecutor.oSelect2Value([select j.id_judet, j.id_tara from syn_nom_judete j where j.judet like '%] + m.lcJudetBucuresti + [%' and j.inactiv = 0 and j.sters = 0], @pnIdJudet)
IF m.lnSucces > 0
lnIdJudet = m.pnIdJudet
ELSE
lnIdJudet = m.lnIdJudetBucuresti
ENDIF
ELSE
lnIdJudet = m.pnIdJudet
ENDIF
ELSE
This.Trace(goExecutor.cEroare)
lnIdJudet = m.lnIdJudetBucuresti
ENDIF
lcSql = [select l.id_loc, l.id_judet, j.id_tara from syn_nom_localitati l left join syn_nom_judete j on l.id_judet = j.id_judet where l.id_judet = ] + ALLTRIM(STR(m.lnIdJudet)) + [ and l.localitate = '] + m.lcLocalitate + [' and l.inactiv = 0 and l.sters = 0 order by l.localitate]
lnSucces = goExecutor.oExecute(m.lcSql, 'cLocalitateTemp')
If m.lnSucces > 0
IF RECCOUNT('cLocalitateTemp') > 0
Select cLocalitateTemp
Go Top
lcId_loc = Alltrim(Str(id_loc))
lcId_Judet = Alltrim(Str(id_judet))
lcId_tara = Alltrim(Str(id_tara))
Use In (Select('cLocalitateTemp'))
ELSE
Use In (Select('cLocalitateTemp'))
lcSql = [select l.id_loc, l.id_judet, j.id_tara from syn_nom_localitati l left join syn_nom_judete j on l.id_judet = j.id_judet where l.id_judet = ] + ALLTRIM(STR(m.lnIdJudet)) + [ and l.inactiv = 0 and l.sters = 0 order by l.localitate]
lnSucces = goExecutor.oExecute(m.lcSql, 'cLocalitateTemp')
If m.lnSucces > 0
Select cLocalitateTemp
Go Top
lcId_loc = Alltrim(Str(id_loc))
lcId_Judet = Alltrim(Str(id_judet))
lcId_tara = Alltrim(Str(id_tara))
ELSE
This.Trace(goExecutor.cEroare)
ENDIF
Use In (Select('cLocalitateTemp'))
ENDIF
ELSE
This.Trace(goExecutor.cEroare)
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
*!* * caut adresa dupa localitate. daca nu o gasesc, o adaug
*!* lcSql = [SELECT id_adresa FROM adrese_parteneri where sters = 0 and inactiv = 0 and id_loc = ] + m.lcId_loc + [ AND id_part = ] + m.lcIdPart
*!* lnSucces = goExecutor.oSelect2Value(m.lcSql, @pnIdAdresa)
*!* If m.lnSucces < 0
*!* lcMesaj = goExecutor.cEroare
*!* Thisform.trace(m.lcMesaj)
*!* AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption )
*!* Exit
*!* Endif
If Empty(NVL(m.pnIdAdresa,0))
lcSql = [begin pack_def.adauga_adresa_partener2(] + 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(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)
Endscan && cClienti
USE IN (SELECT('cParteneri'))
lnSucces = 1
Return m.lnSucces
ENDPROC
PROCEDURE connectroa
ENDPROC
PROCEDURE creeazanote
* Creeaza actactan cu note contabile vanzari
Local lnIdPartCasa, lnSucces, lnIdSet, llTVAIncasare
Local lcContTVA, lcSql, ldDataCurenta, ldDataIreg, ldLastData, lnCota, lnIdBaza, lnIdTVA, lnProcTVA, llAnulat
Local ldDataAct, llFurnizorTVAI, lnIdBaza1, lnIdBaza2, lnIdJtva, lnIdTVA1, lnIdTVA2, lnTaxCode
*:Global pcCasa
Private pnTVAIncasare, pnIdFdoc, pcPartCasa, pnIdPartCasa
lnIdSet = IIF(This.lAnulat, 99996, 50100)
llAnulat = This.lAnulat
pnIdPartCasa = 0
pcPartCasa = ''
lnSucces = -1
UPDATE iesiri SET casa = UPPER(NVL(casa,''))
SELECT distinct casa, CAST(0 as I) as id_part ;
FROM iesiri ;
WHERE !EMPTY(NVL(casa,'')) ;
INTO CURSOR cCase READWRITE
SELECT cCase
LOCATE FOR INLIST(casa, 'CENTRALA', 'CASA LEI')
IF !FOUND()
INSERT INTO cCase (casa, id_part) VALUES ('CENTRALA', 0)
INSERT INTO cCase (casa, id_part) VALUES ('CASA LEI', 0)
ENDIF
SELECT cCase
INDEX on casa TAG casa
SELECT cCase
SCAN
pcCasa = ALLTRIM(casa)
lcSql = [SELECT MAX(ID_PART) AS ID_PART FROM nom_parteneri WHERE STERS = 0 AND INACTIV = 0 AND denumire = ?pcCasa]
lnSucces = goExecutor.oSelect2Value(m.lcSql, @pnIdPartCasa)
IF m.lnSucces > 0
REPLACE id_part WITH NVL(m.pnIdPartCasa,0) IN cCase
ELSE
Thisform.trace('Eroare la selectia partener casa/banca ROA ' + m.pcCasa + " " + goExecutor.oPrelucrareEroare())
EXIT
ENDIF
ENDSCAN
IF m.lnSucces < 0
RETURN m.lnSucces
ENDIF
pnIdPartCasa = 0
pcPartCasa = ''
SELECT cCase
LOCATE FOR INLIST(casa, 'CENTRALA', 'CASA LEI') AND !EMPTY(NVL(id_part,0))
IF FOUND()
pnIdPartCasa = id_part
pcPartCasa = ALLTRIM(casa)
UPDATE iesiri SET casa = m.pcPartCasa WHERE NVL(incasat,'') = 'DA' AND EMPTY(NVL(casa,''))
ENDIF
pnIdFdoc = 0
lcSql = [SELECT ID_FDOC FROM NOM_FDOC WHERE STERS = 0 AND INACTIV = 0 AND FEL_DOCUMENT = 'FACTURA']
lnSucces = goExecutor.oSelect2Value(m.lcSql, @pnIdFdoc)
If m.lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 48, _Screen.Caption)
RETURN m.lnSucces
ELSE
pnTVAIncasare = 0
lcSql = [SELECT tva_incasare FROM calendar WHERE an = ] + Alltrim(Str(m.gnAn)) + [ and luna = ] + Alltrim(Str(m.gnLuna))
lnSucces = goExecutor.oSelect2Value(m.lcSql, @pnTVAIncasare)
llTVAIncasare = (m.pnTVAIncasare = 1)
ENDIF
If m.lnSucces < 0
AMESSAGEBOX(goExecutor.cEroare, 0 + 48, _Screen.Caption)
RETURN m.lnSucces
Else
lcContTVA = Iif(m.llTVAIncasare, '4428', '4427')
Create Cursor cNote (Id N(1), scd c(4), scc c(4), proctva N(2), id_jtva1 N(4) Null, id_jtva2 N(4) Null)
For lnCota = 1 To 8
Do Case
Case lnCota = 1
lnProcTVA = 24
lnIdBaza1 = 15 && fara TVA Incsare
lnIdTVA1 = 16
lnIdBaza2 = 21 && cu TVA Incasare
lnIdTVA2 = 22
Case lnCota = 2
lnProcTVA = 20
lnIdBaza1 = 27 && fara TVA Incsare
lnIdTVA1 = 28
lnIdBaza2 = 29 && cu TVA Incasare
lnIdTVA2 = 30
Case lnCota = 3
lnProcTVA = 19
lnIdBaza1 = 1 && fara TVA Incsare
lnIdTVA1 = 2
lnIdBaza2 = 31 && cu TVA Incasare
lnIdTVA2 = 32
Case lnCota = 4
lnProcTVA = 9
lnIdBaza1 = 3 && fara TVA Incsare
lnIdTVA1 = 4
lnIdBaza2 = 23 && cu TVA Incasare
lnIdTVA2 = 24
Case lnCota = 5
lnProcTVA = 5
lnIdBaza1 = 13 && fara TVA Incsare
lnIdTVA1 = 14
lnIdBaza2 = 25 && cu TVA Incasare
lnIdTVA2 = 26
Case lnCota = 6
lnProcTVA = 0
lnIdBaza1 = 11 && fara TVA Incsare
lnIdTVA1 = 0
lnIdBaza2 = 11 && cu TVA Incasare
lnIdTVA2 = 0
Case lnCota = 7
lnProcTVA = 21
lnIdBaza1 = 35 && fara TVA Incsare
lnIdTVA1 = 36
lnIdBaza2 = 37 && cu TVA Incasare
lnIdTVA2 = 38
Case lnCota = 8
lnProcTVA = 11
lnIdBaza1 = 39 && fara TVA Incsare
lnIdTVA1 = 40
lnIdBaza2 = 41 && cu TVA Incasare
lnIdTVA2 = 42
Endcase
Insert Into cNote (Id, scd, scc, proctva, id_jtva1, id_jtva2) Values (1, '4111', '707', m.lnProcTVA, m.lnIdBaza1, m.lnIdBaza2)
If lnProcTVA <> 0
Insert Into cNote (Id, scd, scc, proctva, id_jtva1, id_jtva2) Values (2, '4111', m.lcContTVA, m.lnProcTVA, m.lnIdTVA1, m.lnIdTVA2)
Endif
Insert Into cNote (Id, scd, scc, proctva, id_jtva1, id_jtva2) Values (3, '5311', '4111', m.lnProcTVA, Null, Null)
Endfor
ldLastData = Gomonth(Date(m.gnAn, m.gnLuna, 1), 1) - 1
ldDataCurenta = Date()
ldDataIreg = Iif(Year(m.ldDataCurenta) <> m.gnAn Or Month(m.ldDataCurenta) <> m.gnLuna, m.ldLastData, m.ldDataCurenta)
Select lnIdSet As id_set, m.gnAn As an, m.gnLuna As luna, ;
CAST(IIF(n.id = 1, IIF(i.cont7xx = '667', i.cont7xx, n.scd), IIF(n.id = 2, n.scd, IIF(!EMPTY(i.cont5xx), i.cont5xx, n.scd))) as C(4)) as scd, ;
CAST(Iif(n.id = 1, IIF(i.cont7xx = '667', i.acont7xx, i.acont4111), IIF(n.id = 2, i.acont4111, i.acont5xx)) as C(4)) as ascd, ;
CAST(Iif(n.id = 1, IIF(i.cont7xx = '667', n.scd, i.cont7xx), Iif(n.id = 2, IIF(!EMPTY(i.cont442x), i.cont442x, m.lcContTVA), n.scc)) as C(4)) As scc, ;
CAST(Iif(n.id = 1, IIF(i.cont7xx = '667', i.acont4111, i.acont7xx), Iif(n.id = 2, i.acont442x, i.acont4111)) as C(4)) As ascc, ;
i.dataact, IIF(m.llAnulat, 0, 1 + Round(i.proctva / 100, 2)) As proc_tva, ;
CAST(IIF(m.llAnulat, null, IIF(!EMPTY(i.tvaincasare), IIF(NVL(i.tvaincasare,'') = 'NU', n.id_jtva1, n.id_jtva2), IIF(!m.llTvaIncasare, n.id_jtva1, n.id_jtva2))) as N(4)) As id_jtva_coloana, ;
i.nract, i.serie_act, i.datascad, i.dataact As dataireg, ;
Cast(Iif(n.id = 1, IIF(i.cont7xx = '667', 0, i.id_part), IIF(n.id = 2, i.id_part, Thisform.GetIdPartCasa(i.casa))) As N(10)) As id_partd, ;
Cast(Iif(n.id = 1, IIF(i.cont7xx = '667', '', i.denumire), IIF(n.id = 2, i.denumire, i.casa)) As C(100)) As partd, ;
Cast(Iif(n.id = 1, IIF(INLIST(i.cont7xx, '667', '419'), i.id_part, 0), IIF(n.id = 2, 0, i.id_part)) As N(10)) As id_partc, ;
Cast(Iif(n.id = 1, IIF(INLIST(i.cont7xx, '667', '419'), i.denumire, ''), IIF(n.id = 2, '', i.denumire)) As C(100)) As partc, ;
Cast(0 As N(14)) As pereched, Cast(Iif(N.Id = 3, i.nract, 0) As N(14)) As perechec, ;
Cast(Iif(N.Id = 1, IIF(i.cont7xx = '667',-i.valftva, i.valftva), Iif(N.Id = 2, valtva, valftva + valtva)) As N(20, 2)) As suma, ;
Cast(m.gnIdSucursala As I NULL) As id_sucursala, Space(100) As sucursala, ;
Cast(m.pnIdFdoc As N(5)) As id_fdoc, 'FACTURA' As fdoc, ;
CAST(0 as I) as id_factd, Cast(Iif(N.Id = 3, -1, 0) As I) As id_factc, CAST(0 as I) as id_fact, pnTVAIncasare as tva_incasare, CAST(0 as I) as cod ;
From iesiri i Join cNote N On i.proctva = N.proctva AND n.id <= IIF(i.incasat = 'DA', 3, 2) ;
left join cCase c on i.casa = c.casa ;
Into Cursor actactanTemp
Select id_set, an, luna, dataact, datascad, dataireg, serie_act, nract, proc_tva, id_jtva_coloana,scd, ascd, scc, ascc, ;
id_partd, partd, id_partc, partc, pereched, perechec, id_sucursala, sucursala, id_fdoc, fdoc, id_factd, id_factc, id_fact, tva_incasare, cod, ;
Sum(suma) As suma ;
From actactanTemp ;
Group By id_set, an, luna, dataact, datascad, dataireg, serie_act, nract, proc_tva, id_jtva_coloana, scd, ascd, scc, ascc, id_partd, partd, id_partc, partc, pereched, perechec, id_sucursala, sucursala, id_fdoc, fdoc, id_factd, id_factc, id_fact, tva_incasare, cod ;
Order By id_set, an, luna, dataact, datascad, dataireg, serie_act, nract, proc_tva, id_jtva_coloana, scd, ascd, scc, ascc, id_partd, partd, id_partc, partc, pereched, perechec, id_sucursala, sucursala, id_fdoc, fdoc, id_factd, id_factc, id_fact, tva_incasare, cod ;
Into Cursor actactan READWRITE
Use In (Select('actactantemp'))
Use In (Select('cNote'))
lnSucces = 1
Endif
Return m.lnSucces
ENDPROC
PROCEDURE disconnectroa
ENDPROC
PROCEDURE exportdate
* Import from xlsx (Sheet1) cod C(8), Data D, Cont C(20), proctva N(2), valftva N(16, 2), valtva N(16, 2)
* denumire, cod fiscal, reg_com, adresa, serie, nr, factura, data act, data scadenta, cont 7xx, procent tva, valoare fara TVA, valoare TVA
Local lcFile, lnSucces, lcFileBinary, ldData1, ldData2
ldData1 = Thisform.txtData1.Value
ldData2 = Thisform.txtData2.Value
lnSucces = 1
AMESSAGEBOX('Alegeti fisierul xlsx completat cu facturile pentru import. Atentie! Pagina cu facturi din fisierul xlsx trebuie sa se numeasca "Sheet1"!',0+64,_Screen.Caption)
lcFile=Getfile('xlsx','Fisier xlsx','Alege', 0,'Fisier xlsx cu facturi')
If Empty(m.lcFile)
lnSucces = -1
Return m.lnSucces
Endif
llAnulat = This.lAnulat
* Import first sheet
importfromxlsx(m.lcFile,2,'Sheet1',.T.,.T.,1,'iesiri')
If Used('iesiri')
If m.llAnulat
Select Upper(denumire) As denumire, Space(100) As nume, Space(100)As prenume, ;
LEFT(Upper(cod_fiscal), 20) As cod_fiscal, Left(reg_com, 50) As reg_com, Left(Upper(Strtran(adresa, Chr(13) + Chr(10), ' ')), 250) As adresa, Left(serie_act, 20) As serie_act,;
IIF(Type('iesiri.nract') = 'N', Int(nract), Int(Val(nract))) As nract, ;
IIF(Type('iesiri.dataact') = 'D', dataact, Ctod(dataact)) As dataact, ;
IIF(Type('iesiri.dataact') = 'D', dataact, Ctod(dataact)) As datascad, ;
0 As proctva, ;
0.00 As valftva, ;
0.00 As valtva, ;
CAST(Iif(Type('iesiri.cont7xx') <> 'C', Alltrim(Transform(cont7xx)), cont7xx) As C(4)) As cont7xx, ;
CAST(Iif(Type('iesiri.acont7xx') <> 'C', Alltrim(Transform(acont7xx)), acont7xx) As C(4)) As acont7xx, ;
CAST(Iif(Type('iesiri.aCont4111') <> 'C', Alltrim(Transform(aCont4111)), aCont4111) As C(4)) As aCont4111, ;
SPACE(4) As Cont442x, ;
SPACE(4) As aCont442x, ;
'NU' As incasat, ;
SPACE(100) As casa, ;
SPACE(4) As cont5xx, ;
SPACE(4) As acont5xx, ;
'NU' As tvaincasare, ;
'NU' As taxareinversa ;
From iesiri Into Cursor cIesiri Readwrite
Else
Select Upper(denumire) As denumire, Space(100) As nume, Space(100)As prenume, ;
LEFT(Upper(cod_fiscal), 20) As cod_fiscal, Left(reg_com, 50) As reg_com, Left(Upper(Strtran(adresa, Chr(13) + Chr(10), ' ')), 250) As adresa, Left(serie_act, 20) As serie_act,;
IIF(Type('iesiri.nract') = 'N', Int(nract), Int(Val(nract))) As nract, ;
IIF(Type('iesiri.dataact') = 'D', dataact, Ctod(dataact)) As dataact, ;
IIF(Type('iesiri.datascad') = 'D', datascad, Ctod(datascad)) As datascad, ;
CAST(Iif(Type('iesiri.proctva') = 'N', Round(proctva,2), Round(Val(proctva),2)) As N(5,2)) As proctva, ;
CAST(Iif(Type('iesiri.valftva') = 'N', Round(valftva,2), Round(Val(valftva),2)) As N(18,2)) As valftva, ;
CAST(Iif(Type('iesiri.valtva') = 'N', Round(valtva,2), Round(Val(valtva),2)) As N(18,2)) As valtva, ;
CAST(Iif(Type('iesiri.cont7xx') = 'N', Alltrim(Transform(cont7xx)), cont7xx) As C(4)) As cont7xx, ;
CAST(Iif(Type('iesiri.acont7xx') = 'N', Alltrim(Transform(acont7xx)), acont7xx) As C(4)) As acont7xx, ;
CAST(Iif(Type('iesiri.aCont4111') = 'N', Alltrim(Transform(aCont4111)), aCont4111) As C(4)) As aCont4111, ;
CAST(Iif(Type('iesiri.Cont442x') = 'N', Alltrim(Transform(Cont442x)), Cont442x) As C(4)) As Cont442x, ;
CAST(Iif(Type('iesiri.aCont442x') = 'N', Alltrim(Transform(aCont442x)), aCont442x) As C(4)) As aCont442x, ;
CAST(Alltrim(Transform(incasat)) As C(2)) As incasat, ;
CAST(Upper(Alltrim(Transform(casa))) As C(100)) As casa, ;
CAST(Iif(Type('iesiri.cont5xx') = 'N', Alltrim(Transform(cont5xx)), cont5xx) As C(4)) As cont5xx, ;
CAST(Iif(Type('iesiri.acont5xx') = 'N', Alltrim(Transform(acont5xx)), acont5xx) As C(4)) As acont5xx, ;
CAST(Alltrim(Transform(tvaincasare)) As C(2)) As tvaincasare, ;
CAST(Alltrim(Transform(taxareinversa)) As C(2)) As taxareinversa ;
From iesiri Into Cursor cIesiri Readwrite
Endif
Use In (Select('iesiri'))
Update cIesiri Set datascad = Gomonth(dataact,1) Where Empty(datascad)
Delete From cIesiri Where !Between(dataact, m.ldData1, m.ldData2)
Update cIesiri Set cod_fiscal = Nvl(cod_fiscal, '')
*** presupun ca denumire este de forma [PRENUME NUME] si transform in [NUME PRENUME] - trebuie in functie de optiune
Update cIesiri Set prenume = Alltrim(Getwordnum(denumire, 1, ' ')) Where Empty(cod_fiscal) Or Len(Alltrim(cod_fiscal)) >= 13
Update cIesiri Set nume = Alltrim(Strtran(denumire, Alltrim(prenume), '',1,1,1)) Where Empty(cod_fiscal) Or Len(Alltrim(cod_fiscal)) >= 13
Update cIesiri Set denumire = Alltrim(nume) + " " + Alltrim(prenume) Where Empty(cod_fiscal) Or Len(Alltrim(cod_fiscal)) >= 13
Select Cast(Null As I) As id_part, denumire, nume, prenume, cod_fiscal, reg_com, Max(adresa) As adresa ;
From cIesiri ;
GROUP By denumire, nume, prenume, cod_fiscal, reg_com ;
Into Cursor cClienti Readwrite
lnSucces = This.CompleteazaClientiROA()
If m.lnSucces = 1
Select I.nract, I.serie_act, C.id_part, C.denumire, C.cod_fiscal, C.reg_com, ;
I.dataact, I.datascad, I.proctva, ;
I.cont7xx, I.acont7xx, I.aCont4111, I.Cont442x, I.aCont442x, ;
I.incasat, I.casa, I.cont5xx, I.acont5xx, I.tvaincasare, I.taxareinversa, ;
SUM(I.valftva) As valftva, Sum(I.valtva) As valtva ;
FROM cIesiri I Left Join cClienti C On I.denumire = C.denumire And I.cod_fiscal = C.cod_fiscal ;
GROUP By I.nract, I.serie_act, C.id_part, C.denumire, C.cod_fiscal, C.reg_com, ;
I.dataact, I.datascad, I.proctva, I.cont7xx, I.acont7xx, I.aCont4111, I.Cont442x, I.aCont442x, ;
I.incasat, I.casa, I.cont5xx, I.acont5xx, I.tvaincasare, I.taxareinversa ;
INTO Cursor iesiri Readwrite
Endif
Else
* Create Cursor cIesiri (denumire C(100), cod_fiscal C(20), reg_com C(50), adresa C(250), serie_act C(20), nract N(14), dataact D, datascad D, proctva N(2), valftva N(16, 2), valtva N(16, 2), Cont7xx C(20), acont7xx C(20), aCont4111 C(20), Cont442x C(20), aCont442x C(20))
* Create Cursor cClienti (id_part I, denumire C(100), cod_fiscal C(20), reg_com C(50), adresa C(250))
lnSucces = -1
Endif
Return m.lnSucces
ENDPROC
PROCEDURE getidpartcasa
LPARAMETERS tcCasa
LOCAL lcCasa, lnId
lnId = 0
lcCasa = ALLTRIM(m.tcCasa)
IF USED('cCase')
IF SEEK(m.lcCasa, 'cCase','casa')
lnId = id_part
ENDIF
ENDIF
RETURN m.lnId
ENDPROC
PROCEDURE Init
LPARAMETERS tcTip
This.lAnulat = (UPPER(ALLTRIM(TRANSFORM(m.tcTip))) = 'ANULAT')
DODEFAULT()
*!* this.Icon = _screen.Icon
thisform.txtData1.Value = DATE(m.gnAn, m.gnLuna, 1)
thisform.txtData2.Value = GOMONTH(DATE(m.gnAn, m.gnLuna, 1), 1) - 1
ENDPROC
PROCEDURE modificanote
PRIVATE pnCod
Local loForm As [frm_modific2024]
Local llMaximize, llNotaNoua, lnIdSet, lnSucces
lnSucces = 1
update_jtva_coloane("JV", 'crsExplicatiiTVATemp', 1)
SET STEP ON
lcSql = [SELECT * FROM vact WHERE 1=2]
llSucces = goExecutor.oExecuta(m.lcSql, 'actactan_temp')
If m.llSucces
Select actactan_temp
IF USED('actactan')
Append From Dbf('actactan')
ENDIF
Select .F. As ales, IIF(EMPTY(NVL(a.id_jtva_coloana,0)), 0, 1) As Cu_tva, Cast(0 As N(2)) As tipnota, a.*, b.denumire As explicatie_tva_2 ;
From actactan_temp a Left Join crsExplicatiiTVATemp b On a.id_jtva_coloana = b.id_jtva_coloana ;
Into Cursor tact Readwrite
Update tact Set explicatie_tva = explicatie_tva_2
USE IN (SELECT('actactan_temp'))
* Actualizez taxcode SAFT in functie de furnizori RTVAI
IF m.gl406
SELECT tact
SCAN FOR !EMPTY(id_jtva_coloana)
lnIdJtva = id_jtva_coloana
ldDataAct = dataact
llFurnizorTVAI = .F.
lnTaxCode = GetTaxCode(m.gnAn, m.gnLuna, m.ldDataAct, m.lnIdJtva, m.llFurnizorTVAI)
SELECT tact
REPLACE taxcode WITH m.lnTaxCode
ENDSCAN
UPDATE tAct SET paymentcode = '42' WHERE LEFT(scd,3) = '512' OR LEFT(scc,3) = '512' && plata in contul bancar
UPDATE tAct SET paymentcode = '10' WHERE scd = '5311' && plata numerar
ENDIF && gl406
ENDIF && llSucces
update_jtva_coloane("", "crsJtvaTemp", 1)
IF m.llSucces
* Creez cursoare trul, trul_obinv
lcSql = [select * from vrul_tot where 1=2]
lcCursor = [v_rul]
llSucces = goExecutor.oExecuta(lcSql,lcCursor)
If m.llSucces
Select *, ;
valoare + valtva As valoarectva, ;
valoarev + valtvav As valoarevctva ;
From v_rul ;
Into Cursor trul READWRITE
Use In (SELECT('v_rul'))
lcSql = [select * from vrul_obinv_tot where 1=2]
lcCursor = [v_rul_obinv]
llSucces = goExecutor.oExecuta(lcSql,lcCursor)
Endif
If m.llSucces
Select *, ;
valoare + valtva As valoarectva, ;
valoarev + valtvav As valoarevctva ;
From v_rul_obinv ;
Into Cursor trul_obinv READWRITE
Use In (SELECT('v_rul_obinv'))
Endif
ENDIF
Use In (Select('crsExplicatiiTVATemp'))
IF m.llSucces
lnIdSet = IIF(this.lAnulat, 99996, 50100)
Select tact
Go Top
llNotaNoua = .T.
llMaximize = .T.
loForm = Createobject([frm_modific2024], m.lnIdSet, m.llNotaNoua)
loForm.lb_titlu_alb_b121.Caption = 'Initializare solduri'
Select tact
loForm.Show(1, m.llMaximize)
llSucces = (buton = 1)
ENDIF
If m.llSucces
Use In (Select('actactan'))
Select tact
Replace id_jtva_coloana With Null, PROC_TVA With 0 For Cu_tva = 0
Select * From tact Into Cursor actactan Readwrite
lcSql = [SELECT seq_cod.nextval FROM dual]
SELECT distinct nract FROM actactan INTO CURSOR cNract
SELECT cNract
SCAN
WAIT WINDOW 'Generez cod pentru factura ' + TRANSFORM(RECNO()) + '/' + TRANSFORM(RECCOUNT()) NOWAIT
pnCod = 0
lnSucces = goExecutor.oSelect2Value(m.lcSql, @pnCod)
IF lnSucces > 0
UPDATE actactan SET cod = m.pnCod WHERE nract = cNract.nract
ENDIF
ENDSCAN
USE IN (SELECT('cNract'))
SELECT actactan
lnSucces = OSCRIE_IN_FISIERE(0, .F., .F., .T.)
llSucces = (m.lnSucces = 1)
Endif && buton = 1
Use In (Select('tAct'))
Use In (Select('actactan'))
Use In (Select('trul'))
Use In (Select('rul_temp'))
Use In (Select('trul_obinv'))
Use In (Select('rul_temp_obinv'))
USE IN (SELECT('crsJtvaTemp'))
RETURN m.llSucces
ENDPROC
PROCEDURE prelucreazafisierebreeze
ENDPROC
PROCEDURE scrienote
Local lcMesaj, lcSql, lnHandle, lnSucces, lnSucces2
Private gnAn, gnIdSucursala, gnIdUtil, gnLuna
lnSucces = SQLSetprop(m.lnHandle, "Transactions", 2)
if lnSucces > 0
&& 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 m.lnSucces > 0
lcSql = [begin pack_contafin.init_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna, 1,0,?gnIdSucursala); end;]
lnSucces = goExecutor.oExecute(m.lcSql)
Endif
if lnSucces > 0
SELECT * FROM actactan WHERE an = m.gnAn AND luna = m.gnLuna INTO CURSOR cAct NOFILTER
lnSucces = This.sql_temp_insert('cAct', 'ACT_TEMP')
USE IN (SELECT('cAct'))
Endif
if lnSucces > 0
Private pcMesajRefacereNota
pcMesajRefacereNota = ""
lcSql = [begin pack_contafin.final_scriere_act_rul_local(?gnIdUtil, ?gnAn, ?gnLuna, NULL, 0, 1, ?@pcMesajRefacereNota); end;]
lnSucces = goExecutor.oExecute(m.lcSql)
If !Empty(Nvl(pcMesajRefacereNota, ''))
This.trace(m.pcMesajRefacereNota)
AMESSAGEBOX(m.pcMesajRefacereNota, 0 + 48, 'Atentie')
Endif
Release pcMesajRefacereNota
ELSE
lcMesaj = goExecutor.cEroare
This.Trace(m.lcMesaj)
AMESSAGEBOX(m.lcMesaj,0+48, _screen.Caption )
EXIT
ENDIF && lnSucces
Endscan && cAnLuna
Use In (Select('cAnLuna'))
if lnSucces > 0
lnSucces2 = goExecutor.oExecute('COMMIT')
IF lnSucces2 <> 1
lnSucces = 0
ENDIF
Else
lnSucces2 = goExecutor.oExecute('ROLLBACK')
Endif
If lnSucces2 <> 1
This.trace(goExecutor.cEroare)
AMESSAGEBOX(lcSql + Chr(13) + goExecutor.cEroare, 0 + 16, "Eroare")
ELSE
This.trace('Import realizat cu succes!')
Endif
lnSucces3 = SQLSetprop(m.lnHandle, "Transactions", 1)
If lnSucces3 <> 1
lcMesaj = 'Programul nu a reusit sa treaca pe tranzactie automata. Iesiti din program si intrati din nou!'
This.trace(m.lcMesaj)
AMESSAGEBOX(m.lcMesaj, 0 + 48, 'Atentie!')
Endif
Endif && lnSucces
Return m.lnSucces
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(m.lcSql, m.lcCursor)
If m.lnSucces <> 1
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 = 1
Select (lcAlias)
lnCount = Fcount()
lcFields = []
lcValues = []
lcInsert = []
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
lcValues = lcValues + [,] + lcVariable
Endfor
lcFields = Substr(lcFields, 2)
lcValues = Substr(lcValues, 2)
&& INSERT INTO ACT_TEMP
lcInsert = [INSERT INTO ] + m.pcTableName + [ (] + m.lcFields + [) VALUES (] + m.lcValues + [)]
Select (lcAlias)
Scan
Scatter Name poIreg
IF MOD(RECNO(), 100) = 0
This.trace(' Inregistrare ' + TRANSFORM(RECNO()) + ' / ' + TRANSFORM(RECCOUNT()) + ' ...')
ENDIF
&& FAC NULL ID-URILE CU VALOARE 0
If TYPE('poReg.id_sucursala') = 'N' AND poIreg.id_sucursala = 0
poIreg.id_sucursala = Null
Endif
lnSucces = goExecutor.oExecute(m.lcInsert)
If lnSucces <> 1
This.trace(goExecutor.cEroare)
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
Exit
Endif
Endscan
Endif
Use In (Select('crs_coloane'))
Return m.lnSucces
ENDPROC
PROCEDURE sql_temp_insert_values
* daca se doreste insert into act_temp cu valori in loc de ?
* trebuie decomentata sectiunea cu valori
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(m.lcSql, m.lcCursor)
If m.lnSucces <> 1
lcMesaj = 'Eroare la selectare coloane din ' + m.pcTableName + Chr(13) + goExecutor.cEroare
This.trace(m.lcMesaj)
AMESSAGEBOX(m.lcMesaj, 0 + 16, 'Eroare')
Endif
If m.lnSucces = 1
Select (lcAlias)
lnCount = Fcount()
Scan
lcFields = []
lcValues = []
lcInsert = []
Scatter Name poIreg
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 + [ (] + lcFields + [) VALUES (] + lcValues + [)]
lnSucces = goExecutor.oExecute(m.lcInsert)
If lnSucces <> 1
This.Trace(goExecutor.cEroare)
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
Exit
Endif
Endscan
Endif
Use In (SELECT('crs_coloane'))
Return m.lnSucces
ENDPROC
PROCEDURE sterge_import
Local lcCursor, lcMesaj, lcSql, llContinuare, lnDocumente, lnPercent, lnSucces
PRIVATE pnCod
llContinuare = .F.
lcIdSet = IIF(this.lAnulat, '99996', '50100')
lcSql = [select distinct cod from act where an=?gnAn and Luna=?gnLuna and id_set=] + m.lcIdSet + [ and sters=0]
lcCursor = [cCoduri]
lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor)
If m.lnSucces > 0
Select(m.lcCursor)
lnDocumente = Reccount()
If m.lnDocumente > 0
llContinuare = (AMessagebox('Doriti sa stergeti ' + Alltrim(Str(m.lnDocumente)) + 'document(e), tip operatie ' + m.lcIdSet + ', din luna ' + Padl(m.gnLuna, 2, '0') + '/' + Alltrim(Str(m.gnAn)) + '?', 4 + 32, _Screen.Caption) = 6)
Else
AMessagebox('Nu sunt inregistrari in luna ' + Padl(m.gnLuna, 2, '0') + '/' + Alltrim(Str(m.gnAn)), 0 + 64, _Screen.Caption)
llContinuare = .F.
Endif
Else
AMessagebox(goExector.cEroare, 0 + 48, _Screen.Caption )
This.Trace(goExecutor.cEroare)
llContinuare = .F.
Endif
If !m.llContinuare
Use In (Select(m.lcCursor))
Return
Endif
lnSucces = SQLSetprop(m.gnhandle, "Transactions", 2)
If lnSucces > 0
lcSql = [begin pack_contafin.init_scriere_act_rul_local(?gnIdUtil,?gnAn,?gnLuna, 1,0,?gnIdSucursala); end;]
lnSucces = goExecutor.oExecute(lcSql)
If lnSucces > 0
Select cCoduri
Scan
pnCod = cod
If Mod(Recno(), 10) = 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(lcSql)
If lnSucces < 0
This.Trace(goExecutor.cEroare)
Exit
Endif
Endscan
Else
This.Trace(goExecutor.cEroare)
Endif
Else
This.Trace(goExecutor.cEroare)
Endif
If lnSucces < 0
goExecutor.oExecute('ROLLBACK')
lcMesaj = 'Stergerea nu s-a efectuat!'
Else
goExecutor.oExecute('COMMIT')
lcMesaj = 'Stergerea s-a efectuat cu succes'
Endif
SQLSetprop(m.gnhandle, "Transactions", 1)
This.Trace(m.lcMesaj)
AMessagebox(m.lcMesaj, 0 + 48, _Screen.Caption)
ENDPROC
PROCEDURE templatexlsx
* Import from xlsx (Sheet1) cod C(8), Data D, Cont C(20), proctva N(2), valftva N(16, 2), valtva N(16, 2)
* denumire, cod fiscal, reg_com, adresa, serie, nr, factura, data act, data scadenta, cont 7xx, procent tva, valoare fara TVA, valoare TVA
* template.xlsx
Local lcFile, lcXLSXTemplate
lcXLSXTemplate = ADDBS(m.gcAppPath) + "include\import_note_facturi_clienti.xlsx"
IF !FILE(m.lcXLSXTemplate)
AMESSAGEBOX('Nu exista fisierul ' + m.lcXLSXTemplate + CHR(13) + CHR(10) + 'Sunati la suportul tehnic',0+48)
RETURN
ENDIF
lcFile = PUTFILE('Salvati fisierul de import', 'import_note_facturi_clienti', 'xlsx')
COPY FILE (m.lcXLSXTemplate) TO (m.lcFile)
open_default_app(m.lcFile)
AMESSAGEBOX('Se va deschide fisierul xlsx cu instructiuni si cateva randuri completate pentru exemplificare.' + CHR(13) + CHR(10) + ;
'Completati fisierul, salvati-l si apoi importati-l',0+64,_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 verificaimport
Local lcCursor, lcSql, ldData1, ldData2, llContinuare, lnHandle, lnInregistrari, lnNrLuni1
Local lnNrLuni2, lnSucces
lnInregistrari = 0
ldData1 = Thisform.txtData1.Value
ldData2 = Thisform.txtData2.Value
lnNrLuni1 = Year(m.ldData1) * 12 + Month(m.ldData1)
lnNrLuni2 = Year(m.ldData2) * 12 + Month(m.ldData2)
llContinuare = .F.
lcIdSet = IIF(this.lAnulat, '99996', '50100')
lcSql = [select COUNT(*) as nr from act where an*12+luna between ] + Alltrim(Str(m.lnNrLuni1)) + [ and ] + Alltrim(Str(m.lnNrLuni2)) + ;
[ and dataact between TO_DATE('] + Dtos(m.ldData1) + [', 'YYYYMMDD') and TO_DATE('] + Dtos(m.ldData2) + [', 'YYYYMMDD')] + ;
[ and id_set=] + m.lcIdSet + [ and sters=0]
lcCursor = [cInregistrari]
lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor)
If m.lnSucces > 0
Select(m.lcCursor)
lnInregistrari = Nvl(nr, 0)
ELSE
AMESSAGEBOX(goExecutor.cEroare)
This.Trace(goExecutor.cEroare)
lnInregistrari = 1 && ca sa nu mai continue importul
Endif
Use In (Select(m.lcCursor))
Return (m.lnInregistrari > 0)
ENDPROC
PROCEDURE But_help1.Click
LOCAL lcInfo
TEXT TO lcInfo noshow
1. Completati perioada de import
2. Apasati pe butonul "Sablon xlsx".
Se va deschide un fisier sablon tip "xlsx" cu date de exemplificare in care completati datele reale.
Stergeti datele de exemplificare
3. Apasati pe butonul "Importa in ROA"
ENDTEXT
AMESSAGEBOX(m.lcInfo)
ENDPROC
PROCEDURE cmdExport.Click
Local llContinuare
llContinuare = .T.
ldData1 = Thisform.txtData1.Value
ldData2 = Thisform.txtData2.Value
lnNrLuni1 = Year(m.ldData1) * 12 + Month(m.ldData1)
lnNrLuni2 = Year(m.ldData2) * 12 + Month(m.ldData2)
lnNrLuni = m.gnAn * 12 + m.gnLuna
If m.lnNrLuni1 <> m.lnNrLuni2 Or m.lnNrLuni1 <> m.lnNrLuni
llContinuare = .F.
AMessagebox('Atentie! Perioada trebuie sa fie in luna curenta!', 0+48, _Screen.Caption)
Endif
If m.llContinuare And Thisform.VerificaImport()
lcIdSet = IIF(thisform.lAnulat, '99996', '50100')
llContinuare = (AMessagebox('Atentie! Exista deja documente importate (tip operatie ' + m.lcIdSet + ') in perioada selectata! Daca continuati, se vor duplica! Doriti sa continuati?', 4 + 32, _Screen.Caption) = 6)
Endif
If m.llContinuare
Local lnSucces
* import note din sursa externa (dbf, xls)
lnSucces = Thisform.ExportDate()
* creez act_temp
If m.lnSucces > 0
lnSucces = Thisform.Creeazanote()
* import act_temp
If used('actactan')
If Thisform.chkModificaNote.Value = 1
lnSucces = Thisform.ModificaNote()
Else
lnSucces = Thisform.Scrienote()
ENDIF
USE IN (SELECT('actactan'))
Endif
Endif
Endif
Use In (Select('cIesiri'))
Use In (Select('cClienti'))
AMessagebox('Importul s-a incheiat!',0+64,_Screen.Caption)
ENDPROC
PROCEDURE cmdTemplate.Click
Thisform.templatexlsx()
ENDPROC
PROCEDURE Command1.Click
Thisform.sterge_import()
ENDPROC
ENDDEFINE