From 2736cbd52589b9988c12ccbb622304648b891463 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Sun, 2 Aug 2026 08:56:52 +0300 Subject: [PATCH] Initial: flux text FoxBin2Prg (git urmareste .??2 in-arbore, binarele VFP git-ignored) Include si sistemul de depanare/testare headless din Teste\ (harness UI cu capturi, verificare de sintaxa prin compilare, wrappere text<->binar) si docs\depanare_testare_flora2roa.md. --- .gitattributes | 4 + .gitignore | 104 + ALTE/azi.sql | 10 + ALTE/documente_duble.sql | 32 + ALTE/oracle-import-script.sql | 406 ++ EXEMPLE/Monografii.xlsx | Bin 0 -> 10932 bytes EXEMPLE/coresp_parteneri.csv | 2963 ++++++++++++++ EXEMPLE/flora.txt | 140 + .../bts_detalii_facturi_rep_20240916.xml | 3481 +++++++++++++++++ EXEMPLE/restaurant/Iesiri_20240718.xml | 1711 ++++++++ EXEMPLE/restaurant/Intrari_20240426.xml | 51 + EXEMPLE/restaurant/Vanzari_20240909.xml | 523 +++ INFO.txt | 91 + Teste/_precompile.ps1 | 66 + Teste/bin_din_text.ps1 | 49 + Teste/mock_amessagebox.prg | 21 + Teste/ruleaza_teste.ps1 | 74 + Teste/test_conectare_roa.prg | 63 + Teste/test_export_date.prg | 111 + Teste/test_frm_import_ui.prg | 82 + Teste/test_helpers.prg | 55 + Teste/test_init_env_auto.prg | 102 + Teste/text_din_bin.ps1 | 35 + Teste/ui_harness.prg | 64 + Teste/verifica_sintaxa.ps1 | 128 + Teste/vfp_ui_harness.ps1 | 231 ++ app.ico | Bin 0 -> 32988 bytes app.prg | 240 ++ capp.prg | 275 ++ changelog_flora2roa.txt | 96 + comun.h | 12 + config.fpw | 1 + docs/depanare_testare_flora2roa.md | 104 + fisiere.prg | 12 + flora2roa.pj2 | 103 + flora2roa.txt | 1 + frm_import.sc2 | 2259 +++++++++++ import.prg | 0 main.prg | 132 + myapp.prg | 0 myutils.prg | 1707 ++++++++ security.h | 1 + settings.flora.ini | 72 + settings.ini | 72 + update.bat | 109 + vfpconnection.fll | Bin 0 -> 827392 bytes vfpconnection_demo.prg | 174 + vfpconnection_utils.prg | 44 + vfpencryption.fll | Bin 0 -> 151552 bytes 49 files changed, 16011 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 ALTE/azi.sql create mode 100644 ALTE/documente_duble.sql create mode 100644 ALTE/oracle-import-script.sql create mode 100644 EXEMPLE/Monografii.xlsx create mode 100644 EXEMPLE/coresp_parteneri.csv create mode 100644 EXEMPLE/flora.txt create mode 100644 EXEMPLE/hotel/bts_detalii_facturi_rep_20240916.xml create mode 100644 EXEMPLE/restaurant/Iesiri_20240718.xml create mode 100644 EXEMPLE/restaurant/Intrari_20240426.xml create mode 100644 EXEMPLE/restaurant/Vanzari_20240909.xml create mode 100644 INFO.txt create mode 100644 Teste/_precompile.ps1 create mode 100644 Teste/bin_din_text.ps1 create mode 100644 Teste/mock_amessagebox.prg create mode 100644 Teste/ruleaza_teste.ps1 create mode 100644 Teste/test_conectare_roa.prg create mode 100644 Teste/test_export_date.prg create mode 100644 Teste/test_frm_import_ui.prg create mode 100644 Teste/test_helpers.prg create mode 100644 Teste/test_init_env_auto.prg create mode 100644 Teste/text_din_bin.ps1 create mode 100644 Teste/ui_harness.prg create mode 100644 Teste/verifica_sintaxa.ps1 create mode 100644 Teste/vfp_ui_harness.ps1 create mode 100644 app.ico create mode 100644 app.prg create mode 100644 capp.prg create mode 100644 changelog_flora2roa.txt create mode 100644 comun.h create mode 100644 config.fpw create mode 100644 docs/depanare_testare_flora2roa.md create mode 100644 fisiere.prg create mode 100644 flora2roa.pj2 create mode 100644 flora2roa.txt create mode 100644 frm_import.sc2 create mode 100644 import.prg create mode 100644 main.prg create mode 100644 myapp.prg create mode 100644 myutils.prg create mode 100644 security.h create mode 100644 settings.flora.ini create mode 100644 settings.ini create mode 100644 update.bat create mode 100644 vfpconnection.fll create mode 100644 vfpconnection_demo.prg create mode 100644 vfpconnection_utils.prg create mode 100644 vfpencryption.fll diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..bbf8fed --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +# SVN ramane autoritatea pentru line endings (rulaj paralel svn+git). +# Dezactiveaza orice normalizare CRLF/LF facuta de git, ca sa nu mai apara +# "modificari" fantoma dupa fiecare svn update/checkout care doar atinge mtime-ul. +* -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7657b18 --- /dev/null +++ b/.gitignore @@ -0,0 +1,104 @@ +# ============================================================================= +# Flux text FoxBin2Prg: git urmareste DOAR versiunile text .??2 (in arbore), +# nu binarele VFP. Binarele convertibile si indecsii regenerabili se ignora. +# SVN ramane sursa de adevar pentru binare (via global-ignores pe .??2). +# ============================================================================= + +# --- Binare VFP convertibile in text .??2 (ambele forme de caz) --- +*.vcx +*.VCX +*.vct +*.VCT +*.scx +*.SCX +*.sct +*.SCT +*.frx +*.FRX +*.frt +*.FRT +*.mnx +*.MNX +*.mnt +*.MNT +*.lbx +*.LBX +*.lbt +*.LBT +*.pjx +*.PJX +*.pjt +*.PJT +*.dbc +*.DBC +*.dct +*.DCT + +# --- Indecsi regenerabili (nu se transporta in .db2/.dc2) --- +*.cdx +*.CDX +*.dcx +*.DCX + +# --- Fisiere generate/compilate Visual FoxPro --- +*.fxp +*.FXP +*.mpr +*.MPR +*.mpx +*.MPX +*.vcr +*.VCR +*.src + +# --- Backup-uri si fisiere temporare create de editorul VFP --- +*.bak +*.BAK +*.tmp +*.TMP +*.err +*.ERR +*.Stats +*.stackdump + +# --- Stare locala / specifica masinii, nu proiectului --- +# Raman urmarite (sunt si in SVN, sunt dependente de rulare): settings.ini, +# settings.flora.ini, app.ico, vfpconnection.fll, vfpencryption.fll +FOXUSER.DBF +FOXUSER.FPT +flora2roa.exe +update_log.txt +log/ +log.txt +LOG.txt + +# --- Date de intrare pentru import: doar exemplele de referinta (cele din SVN) --- +# restul (~900 fisiere, ~80 MB) sunt date locale de lucru, nu sursa +EXEMPLE/* +!EXEMPLE/flora.txt +!EXEMPLE/coresp_parteneri.csv +!EXEMPLE/Monografii.xlsx +!EXEMPLE/hotel/ +EXEMPLE/hotel/* +!EXEMPLE/hotel/bts_detalii_facturi_rep_20240916.xml +!EXEMPLE/restaurant/ +EXEMPLE/restaurant/* +!EXEMPLE/restaurant/Iesiri_20240718.xml +!EXEMPLE/restaurant/Intrari_20240426.xml +!EXEMPLE/restaurant/Vanzari_20240909.xml + +# --- Artefacte ale testelor headless (Teste\ruleaza_teste.ps1) --- +Teste/uisync/ +Teste/screenshots/ +Teste/_erori_test.txt +Teste/*_log.txt + +# --- Cache text extern (inlocuit de fluxul in-arbore .??2) --- +_textcache/ + +# --- Subversion (working copy paralela) --- +.svn/ + +docs/diff_*.patch +docs/local/ +.gstack/ diff --git a/ALTE/azi.sql b/ALTE/azi.sql new file mode 100644 index 0000000..36dd846 --- /dev/null +++ b/ALTE/azi.sql @@ -0,0 +1,10 @@ +SELECT SUM(SUMA) AS SUMA from imp_import_documente where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 +AND SUBSTR(SCD, 1,3) = '401'; +SELECT SUM(SUMA) AS SUMA from imp_import_documente where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 +AND SUBSTR(SCC, 1,3) = '401'; + +SELECT sum(t.suma) as suma, dat_document from imp_import_documente t where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 AND SUBSTR(SCD, 1,3) = '401' group by dat_document order by dat_DOCUMENT; +SELECT sum(t.suma) as suma, dataact from ACT t where AN=2024 AND LUNA = 6 AND SUBSTR(SCD, 1,3) = '401' AND STERS= 0 group by dataact order by dataact; + +select t.*,rowid from imp_import_documente t where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 AND SUBSTR(SCD, 1,3) = '401' AND dat_document = to_date('04062024', 'ddmmyyyy')order by dat_document, suma; +select t.*,rowid from act t where AN=2024 AND LUNA = 6 AND SUBSTR(SCD, 1,3) = '401' AND STERS= 0 AND dataact = to_date('04062024', 'ddmmyyyy')order by dataact, NRACT, suma; diff --git a/ALTE/documente_duble.sql b/ALTE/documente_duble.sql new file mode 100644 index 0000000..797aba2 --- /dev/null +++ b/ALTE/documente_duble.sql @@ -0,0 +1,32 @@ +--select t.*,rowid from act t where an=2024 and luna = 6 order by dataact, nract, cod; + +/*select t.*,rowid from act t where an=2024 and luna = 3 and cod in ( +select cod from +(with select_data as +(select distinct a.cod, a.dataact, a.nract, b.cod as codb from +(select distinct dataact, nract, suma, cod, explicatia4 from act where an=2024 and luna = 2 and sters = 0 and explicatia4 = 'IMPORT BIZ') a join +(select distinct dataact, nract, suma, cod, explicatia4 from act where an=2024 and luna = 2 and sters = 0 and explicatia4 is null) b on (a.dataact = b.dataact and a.nract = b.nract and a.suma = b.suma) +) +select cod from select_data +union +select codb from select_data)) +order by dataact, nract, cod;*/ + + + +select an, luna, nract, dataact, scd, ascd, scc, ascc, suma, explicatia4, sters, id_utils, dataoras, cod from +(select an, luna, nract, dataact, scd, ascd, scc, ascc, suma, explicatia4, sters, id_utils, dataoras, cod from act +union +select an, luna, nract, dataact, scd, ascd, scc, ascc, suma, explicatia4, 0 as sters, 0 as id_utils, null as dataoras, cod from act_imp_2024) +where an=2024 and luna = 10 and cod in ( +select cod from +(with select_data as +(select distinct a.cod, a.dataact, a.nract, b.cod as codb from +(select distinct dataact, nract, suma, cod, explicatia4 from act_imp_2024 where an=2024 and luna = 10 ) a join +(select distinct dataact, nract, suma, cod, explicatia4 from act where an=2024 and luna = 10 and sters = 0 and explicatia4 is null) b on (a.dataact = b.dataact and a.nract = b.nract and a.suma = b.suma) +) +select cod from select_data +union +select codb from select_data)) +order by dataact, nract, cod, suma; + diff --git a/ALTE/oracle-import-script.sql b/ALTE/oracle-import-script.sql new file mode 100644 index 0000000..93885f4 --- /dev/null +++ b/ALTE/oracle-import-script.sql @@ -0,0 +1,406 @@ +-- SQL SERVER +-- DROP VIEW dbo.FACC_V_LIST_REGISTRU_JURNAL_X; +CREATE VIEW dbo.FACC_V_LIST_REGISTRU_JURNAL_X AS +SELECT + TBL_REGISTRU.ID_DOCUMENT, + TBL_REGISTRU.DAT_DOCUMENT, + TBL_REGISTRU.DAT_SCADENT, + TBL_REGISTRU.COD_NUMBER, + TBL_REGISTRU.TIP_DOCUMENT, + TBL_REGISTRU.ID_PARTNER, + TBL_REGISTRU.PARTNER_NAME, + TBL_REGISTRU.COD_FISCAL, + TBL_REGISTRU.COD_CNP, + TBL_REGISTRU.EXPLICATII, + TBL_REGISTRU.CONT_DEBIT, + TBL_REGISTRU.CONT_CREDIT, + SUM(TBL_REGISTRU.DEC_VALUE) AS DEC_VALUE +FROM + (SELECT + TOP (100) PERCENT + dbo.FACC_T_CONTARI.ID_DOCUMENT, + dbo.FACC_T_CONTARI.DAT_DOCUMENT, + dbo.FACC_T_DOCUMENTS.DAT_SCADENT, + dbo.FACC_V_ALL_DOCUMENTS.COD_NUMBER, + dbo._FACC_GET_DOCUMENT_TYPE_NAME(dbo.FACC_T_CONTARI.ID_DOCUMENT) AS TIP_DOCUMENT, + dbo.NCL_V_PARTNERS_NAMES.ID_PARTNER, + dbo.NCL_V_PARTNERS_NAMES.PARTNER_NAME, + dbo.NCL_T_PARTNERS.COD_FISCAL, + dbo.NCL_T_PARTNERS.COD_CNP, + dbo.FACC_T_CONTARI.EXPLICATII, + dbo.FACC_T_CONTARI.CONT_DEBIT, + dbo.FACC_T_CONTARI.CONT_CREDIT, + dbo.FACC_T_CONTARI.DEC_VAL AS DEC_VALUE + FROM + dbo.FACC_T_CONTARI + INNER JOIN dbo.FACC_V_ALL_DOCUMENTS ON dbo.FACC_T_CONTARI.ID_DOCUMENT = dbo.FACC_V_ALL_DOCUMENTS.ID_DOCUMENT + LEFT OUTER JOIN dbo.NCL_V_PARTNERS_NAMES ON dbo.FACC_V_ALL_DOCUMENTS.ID_PARTNER = dbo.NCL_V_PARTNERS_NAMES.ID_PARTNER + LEFT OUTER JOIN dbo.NCL_T_PARTNERS ON dbo.FACC_V_ALL_DOCUMENTS.ID_PARTNER = dbo.NCL_T_PARTNERS.ID_PARTNER + LEFT OUTER JOIN dbo.FACC_T_DOCUMENTS on dbo.FACC_T_CONTARI.ID_DOCUMENT = dbo.FACC_T_DOCUMENTS.ID_DOCUMENT + WHERE + (dbo.FACC_T_CONTARI.DEC_VAL <> 0) + ) AS TBL_REGISTRU + INNER JOIN dbo.NCL_T_ACCOUNTS ON TBL_REGISTRU.CONT_DEBIT = dbo.NCL_T_ACCOUNTS.COD_ACCOUNT + INNER JOIN dbo.NCL_T_ACCOUNTS AS NCL_T_ACCOUNTS_1 ON TBL_REGISTRU.CONT_CREDIT = NCL_T_ACCOUNTS_1.COD_ACCOUNT +GROUP BY + TBL_REGISTRU.ID_DOCUMENT, + TBL_REGISTRU.DAT_DOCUMENT, + TBL_REGISTRU.DAT_SCADENT, + TBL_REGISTRU.COD_NUMBER, + TBL_REGISTRU.TIP_DOCUMENT, + TBL_REGISTRU.ID_PARTNER, + TBL_REGISTRU.PARTNER_NAME, + TBL_REGISTRU.COD_FISCAL, + TBL_REGISTRU.COD_CNP, + TBL_REGISTRU.EXPLICATII, + TBL_REGISTRU.CONT_DEBIT, + TBL_REGISTRU.CONT_CREDIT +HAVING + (SUM(TBL_REGISTRU.DEC_VALUE) <> 0) + + + +CREATE VIEW dbo.FACC_V_LIST_REGISTRU_JURNAL_Y AS +SELECT +r.ID_DOCUMENT,r.DAT_DOCUMENT,r.DAT_SCADENT,r.COD_NUMBER,r.TIP_DOCUMENT,r.ID_PARTNER,r.PARTNER_NAME,r.COD_FISCAL,r.COD_CNP,r.EXPLICATII,r.CONT_DEBIT,r.CONT_CREDIT,r.DEC_VALUE, +l.ID_IN as ID_DOCP, l.VAL_LEI, COALESCE(l.val_lei, r.dec_value) as suma + FROM [mybiz].[dbo].[FACC_V_LIST_REGISTRU_JURNAL_X] r + left outer join [mybiz].[dbo].[PRT_T_LEGATURI] l on r.id_document = l.ID_OUT + + + +CREATE VIEW dbo.FACC_V_LIST_REGISTRU_JURNAL_Y_2024 AS +SELECT [ID_DOCUMENT] + ,[DAT_DOCUMENT] + ,[DAT_SCADENT] + ,[COD_NUMBER] + ,[TIP_DOCUMENT] + ,[ID_PARTNER] + ,[PARTNER_NAME] + ,[COD_FISCAL] + ,[COD_CNP] + ,[EXPLICATII] + ,[CONT_DEBIT] + ,[CONT_CREDIT] + ,[DEC_VALUE] + ,[ID_DOCP] + ,[VAL_LEI] + ,[suma] + FROM [mybiz].[dbo].[FACC_V_LIST_REGISTRU_JURNAL_Y] + where dat_document >= '2024-01-01' + + +/****** Script for SelectTopNRows command from SSMS ******/ +SELECT [ID_DOCUMENT] + ,[DAT_DOCUMENT] + ,[DAT_SCADENT] + ,[COD_NUMBER] + ,[TIP_DOCUMENT] + ,[ID_PARTNER] + ,[PARTNER_NAME] + ,[COD_FISCAL] + ,[COD_CNP] + ,[EXPLICATII] + ,[CONT_DEBIT] + ,[CONT_CREDIT] + ,[DEC_VALUE] + ,[ID_DOCP] + ,[VAL_LEI] + ,[suma] + FROM [mybiz].[dbo].FACC_V_LIST_REGISTRU_JURNAL_Y_2024 + order by dat_document desc + +------------------------------------- +CREATE TABLE EXT_IMPORT_DOCUMENTE ( + ID_DOCUMENT VARCHAR2(100), + DAT_DOCUMENT VARCHAR2(100), + DAT_SCADENT VARCHAR2(100), + COD_NUMBER VARCHAR2(100), + TIP_DOCUMENT VARCHAR2(100), + ID_PARTNER VARCHAR2(100), + PARTNER_NAME VARCHAR2(200), + COD_FISCAL VARCHAR2(100), + COD_CNP VARCHAR2(100), + EXPLICATII VARCHAR2(500), + CONT_DEBIT VARCHAR2(100), + CONT_CREDIT VARCHAR2(100), + DEC_VALUE VARCHAR2(100), + ID_DOCP VARCHAR2(100), + VAL_LEI VARCHAR2(100), + SUMA VARCHAR2(100) +) +ORGANIZATION EXTERNAL ( + TYPE ORACLE_LOADER + DEFAULT DIRECTORY DMPDIR + ACCESS PARAMETERS ( + RECORDS DELIMITED BY NEWLINE + SKIP 1 + FIELDS TERMINATED BY ',' + OPTIONALLY ENCLOSED BY '"' + MISSING FIELD VALUES ARE NULL + ) + LOCATION ('registru_jurnal_2024.csv') +) +REJECT LIMIT 0; + +-- Verificarea datelor brute +SELECT * FROM EXT_IMPORT_DOCUMENTE WHERE ROWNUM <= 10; + +-- Crearea tabelului final cu conversie flexibilă și gestionarea erorilor +create table IMP_IMPORT_DOCUMENTE AS +SELECT + TO_NUMBER(REGEXP_SUBSTR(ID_DOCUMENT, '\d+')) AS ID_DOCUMENT, + TO_DATE(SUBSTR(REPLACE(DAT_DOCUMENT, 'NULL', ''),1,10), 'YYYY-MM-DD') AS DAT_DOCUMENT, + TO_DATE(SUBSTR(REPLACE(DAT_SCADENT, 'NULL', ''),1,10), 'YYYY-MM-DD') AS DAT_SCADENT, + REGEXP_SUBSTR(COD_NUMBER, '\d+') as COD_NUMBER, + REPLACE(TIP_DOCUMENT, 'NULL', '') AS TIP_DOCUMENT, + TO_NUMBER(REGEXP_SUBSTR(ID_PARTNER, '\d+')) AS ID_PARTNER, + REPLACE(PARTNER_NAME, 'NULL', '') AS PARTNER_NAME, + REPLACE(COD_FISCAL, 'NULL', '') AS COD_FISCAL, + REPLACE(COD_CNP, 'NULL', '') AS COD_CNP, + REPLACE(EXPLICATII, 'NULL', '') AS EXPLICATII, + REPLACE(CONT_DEBIT, 'NULL', '') AS CONT_DEBIT, + REPLACE(CONT_CREDIT, 'NULL', '') AS CONT_CREDIT, + TO_NUMBER(REPLACE(DEC_VALUE, 'NULL', '0'), '999999999.99') AS DEC_VALUE, + TO_NUMBER(REGEXP_SUBSTR(ID_DOCP, '\d+')) AS ID_DOCP, + TO_NUMBER(REPLACE(VAL_LEI,'NULL', '0'), '999999999.99') AS VAL_LEI, + TO_NUMBER(REPLACE(SUMA, 'NULL', '0'), '999999999.99') AS SUMA + FROM EXT_IMPORT_DOCUMENTE; + +-- Verificarea datelor convertite +SELECT * FROM IMPORT_DOCUMENTE WHERE ROWNUM <= 10; + +-- Verificarea rândurilor cu probleme la conversia datei +SELECT ID_DOCUMENT, DAT_DOCUMENT, DAT_SCADENT +FROM IMP_IMPORT_DOCUMENTE +WHERE DAT_DOCUMENT IS NULL OR DAT_SCADENT IS NULL; + +ALTER TABLE IMP_IMPORT_DOCUMENTE ADD ID_PART NUMBER(20) NULL; +alter table IMP_IMPORT_DOCUMENTE add scd varchar2(4); +alter table IMP_IMPORT_DOCUMENTE add ascd varchar2(4); +alter table IMP_IMPORT_DOCUMENTE add scc varchar2(4); +alter table IMP_IMPORT_DOCUMENTE add ascc varchar2(4); +alter table IMP_IMPORT_DOCUMENTE add cod number(20); +alter table IMP_IMPORT_DOCUMENTE add id_fdoc number(5); + + + +-- Created on 10/29/2024 by MMARI +declare + lnIdPart NOM_PARTENERI.ID_PART%TYPE := 0; +begin + -- Test statements here + for item in (select distinct id_partner, partner_name, cod_fiscal, cod_cnp from imp_import_documente where cod_fiscal is not null) loop + select max(id_part) into lnIdPart from nom_parteneri where sters = 0 and trim(regexp_replace(cod_fiscal, '[^0-9]', '')) = item.cod_fiscal; + if lnIdPart is null then + PACK_DEF.adauga_partener(tcDenumire => item.partner_name, + tcNume => item.partner_name, + tcPrenume => '', + tcCod_fiscal => item.cod_fiscal, + tcReg_comert => '', + tnId_loc => NULL, + tnId_categorie_entitate => NULL, + tcPrefix => NULL, + tcSufix => NULL, + tnTip_persoana => 1, + tcBanca => NULL, + tcCont_banca => NULL, + tnInactiv => 0, + tcMotiv_inactiv => NULL, + tnId_util => -3, + tcSir_id_tipPart => '16;', + tnId_Part => lnIdPart); + + update nom_parteneri set zona = 'IMPORT' where id_part = lnIdPart; + end if; + + update imp_import_documente set id_part = lnIdPart where id_partner = item.id_partner; + end loop; + +end; +/ + +UPDATE IMP_IMPORT_DOCUMENTE + SET SCD = CASE + WHEN INSTR(cont_debit, '.') > 0 THEN + SUBSTR(cont_debit, 1, INSTR(cont_debit, '.') - 1) + ELSE + cont_debit + END, + ascd = CASE + WHEN INSTR(cont_debit, '.') > 0 THEN + REPLACE(SUBSTR(cont_debit, INSTR(cont_debit, '.') + 1), + '.', + '') + ELSE + null + END, + scc = CASE + WHEN INSTR(cont_credit, '.') > 0 THEN + SUBSTR(cont_credit, 1, INSTR(cont_credit, '.') - 1) + ELSE + cont_credit + END, + ascc = CASE + WHEN INSTR(cont_credit, '.') > 0 THEN + REPLACE(SUBSTR(cont_credit, INSTR(cont_credit, '.') + 1), + '.', + '') + ELSE + null + END; + +BEGIN + FOR ITEM IN (SELECT 50 as id_fdoc, 'Amortizare' as fel_document + FROM DUAL + UNION ALL + SELECT 25, 'Chitanta Beneficiar Lei' + FROM DUAL + UNION ALL + SELECT 25, 'Chitanta Furnizor Lei' + FROM DUAL + UNION ALL + SELECT 15, 'Consum' + FROM DUAL + UNION ALL + SELECT 35, 'Dispozitie de incasare / plata Lei' + FROM DUAL + UNION ALL + SELECT 40, 'Extras de cont Lei' + FROM DUAL + UNION ALL + SELECT 42, 'Factura Client' + FROM DUAL + UNION ALL + SELECT 42, 'Factura Furnizor' + FROM DUAL + UNION ALL + SELECT 50, 'Import Aplicatii Fidelio' + FROM DUAL + UNION ALL + SELECT 50, 'Import Aplicatii Micros' + FROM DUAL + UNION ALL + SELECT 50, 'Inchidere Venituri si Cheltuieli' + FROM DUAL + UNION ALL + SELECT 48, 'Monetar lei' + FROM DUAL + UNION ALL + SELECT 50, 'Nota Salarizare' + FROM DUAL + UNION ALL + SELECT 50, 'Note contabile diverse' + FROM DUAL + UNION ALL + SELECT 56, 'Ordin de plata beneficiar Lei' + FROM DUAL + UNION ALL + SELECT 56, 'Ordin de plata furnizor Lei' + FROM DUAL + UNION ALL + SELECT 55, 'Transfer' + FROM DUAL) LOOP + UPDATE IMP_IMPORT_DOCUMENTE + SET ID_FDOC = ITEM.ID_FDOC + WHERE UPPER(TRIM(replace(tip_document,'-->',''))) = UPPER(ITEM.FEL_DOCUMENT); + END LOOP; +END; + + + +insert into act (an, luna, dataireg, cod, id_fact, dataact, datascad, nract, id_fdoc, explicatia, scd, ascd, scc, ascc, suma, id_Factd, id_factc, id_partd, id_partc, id_util, dataora, explicatia4) +select extract(year from dat_document) as an, extract(month from dat_document) as luna, dat_document as dataireg, id_document as cod, id_document as id_fact, dat_document as dataact, dat_scadent as datascad, to_number(nvl(cod_number,to_char(dat_document, 'yyyymmdd'))) as nract, +id_fdoc, explicatii as explicatia, scd, ascd, scc, ascc, suma, +case when scd in ('401','404','419','462', '408') then nvl(id_docp,0) else 0 end as id_factd, +case when scc in ('4111','409','4091', '4092', '4093', '4094','461', '418') then nvl(id_docp,0) else 0 end as id_factc, +case when scd in ('401','404','419','462', '408','4111','409','4091', '4092', '4093', '4094','461', '418') then nvl(id_part,0) else 0 end as id_partd, +case when scc in ('401','404','419','462', '408','4111','409','4091', '4092', '4093', '4094','461', '418') then nvl(id_part,0) else 0 end as id_partc, + -3 as id_util, to_date('29102024','ddmmyyyy') as dataora, 'IMPORT BIZ' as explicatia4 + from imp_import_documente where extract(year from dat_document) = 2024 and extract(month from dat_document) between 1 and 5 order by dat_document, cod_number; + +update act set id_jtva_coloana = 113 where an=2024 and scc = '401' and id_jtva_coloana is null and explicatia4 = 'IMPORT BIZ'; + +---------------------------------- +-- DOCUMENTE DUBLE DIN IMPORTBIZ SI ROA +--select t.*,rowid from act t where an=2024 and luna = 6 order by dataact, nract, cod; + +select an, luna, nract, dataact, scd, ascd, scc, ascc, suma, explicatia4, sters, id_utils, dataoras, cod from +(select an, luna, nract, dataact, scd, ascd, scc, ascc, suma, explicatia4, sters, id_utils, dataoras, cod from act +union +select an, luna, nract, dataact, scd, ascd, scc, ascc, suma, explicatia4, 0 as sters, 0 as id_utils, null as dataoras, cod from act_imp_2024) +where an=2024 and luna = 10 and cod in ( +select cod from +(with select_data as +(select distinct a.cod, a.dataact, a.nract, b.cod as codb from +(select distinct dataact, nract, suma, cod, explicatia4 from act_imp_2024 where an=2024 and luna = 10 ) a join +(select distinct dataact, nract, suma, cod, explicatia4 from act where an=2024 and luna = 10 and sters = 0 and explicatia4 is null) b on (a.dataact = b.dataact and a.nract = b.nract and a.suma = b.suma) +) +select cod from select_data +union +select codb from select_data)) +order by dataact, nract, cod, suma; + +------------------------ +update act set explicatia5 = 'DUPLICATE' WHERE an=2024 and luna = 9 and cod in ( +select cod from +(with select_data as +(select distinct a.cod, a.dataact, a.nract, b.cod as codb from +(select distinct dataact, nract, suma, cod, explicatia4 from act where an=2024 and luna = 9 and sters = 0 and explicatia4 = 'IMPORT BIZ') a join +(select distinct dataact, nract, suma, cod, explicatia4 from act where an=2024 and luna = 9 and sters = 0 and explicatia4 is null) b on (a.dataact = b.dataact and a.nract = b.nract and a.suma = b.suma) +) +select cod from select_data +union +select codb from select_data)); + + +select t.*,rowid from act t where an=2024 and luna = 6 and cod in ( +select cod from +(with select_data as +(select distinct a.cod, a.dataact, a.nract, b.cod as codb from +(select distinct dataact, nract, suma, cod, explicatia4 from act where an=2024 and luna = 6 and sters = 0 and explicatia4 = 'IMPORT BIZ') a join +(select distinct dataact, nract, suma, cod, explicatia4 from act where an=2024 and luna = 6 and sters = 0 and explicatia4 is null) b on (a.dataact = b.dataact and a.nract = b.nract and a.suma = b.suma) +) +select cod from select_data +union +select codb from select_data)) +order by dataact, nract, cod; + +select T.EXPLICATIA4, T.EXPLICATIA5, T.STERS, T.DATAORAS, T.ID_UTILS, t.nract, t.dataact, t.explicatia, t.scd, t.ascd, t.scc, t.ascc, t.suma, t.*,rowid from act t where an=2024 and luna = 6 AND EXPLICATIA5 like '%DUPLICATE' order by t.dataact, t.nract, t.cod; + +-- DUPLICATE +select T.EXPLICATIA4, T.EXPLICATIA5, T.STERS, t.nract, t.dataact, t.scd, t.ascd, t.scc, t.ascc, t.suma, t.id_jtva_coloana, t.taxcode, t.paymentcode, t.explicatia, t.id_fact, t.id_factd, t.id_factc, t.cod, t.id_act, t.id_fdoc, t.datascad, t.dataireg, t.an, t.luna, t.nnir, t.id_util, t.dataora, t.id_responsabil, t.id_venchelt, t.id_sectie, t.id_set, t.id_lucrare, t.id_Gestin, t.id_Gestout, t.id_Valuta, t.proc_tva, t.id_ctr, t.serie_act,rowid from act t where an=2024 and luna = 6 AND STERS = 0 AND EXPLICATIA5 = 'DUPLICATE' order by t.dataact, t.nract, t.cod, t.suma; + +-- ZDUPLICATE +select T.EXPLICATIA4, T.EXPLICATIA5, T.STERS, t.nract, t.dataact, t.scd, t.ascd, t.scc, t.ascc, t.suma, t.explicatia, t.id_fact, t.id_factd, t.id_factc, t.cod, t.id_act, t.id_jtva_coloana, t.id_fdoc, t.datascad, t.dataireg, t.an, t.luna, t.nnir, t.id_util, t.dataora, t.id_responsabil, t.id_venchelt, t.id_sectie, t.id_set, t.id_lucrare, t.id_Gestin, t.id_Gestout, t.id_Valuta, t.proc_tva, t.id_ctr, t.serie_act, t.taxcode, t.paymentcode,rowid from act t where an=2024 and luna = 6 AND EXPLICATIA5 = 'ZDUPLICATE' order by t.dataact, t.nract, t.cod, t.suma; +------------------------ + + +/*SELECT SUM(SUMA) AS SUMA from imp_import_documente where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 +AND SUBSTR(SCD, 1,3) = '401'; +SELECT SUM(SUMA) AS SUMA from imp_import_documente where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 +AND SUBSTR(SCC, 1,3) = '401';*/ + +SELECT CONT, SUM(DEBIT) AS DEBIT, SUM(CREDIT) AS CREDIT FROM +(SELECT SUBSTR(SCD,1,3) AS CONT, SUMA AS DEBIT, 0 AS CREDIT FROM ACT WHERE AN=2024 AND LUNA = 6 AND STERS = 0 AND SCD IS NOT NULL +UNION ALL +SELECT SUBSTR(SCC,1,3) AS CONT, 0 AS DEBIT, SUMA AS CREDIT FROM ACT WHERE AN=2024 AND LUNA = 6 AND STERS = 0 AND SCC IS NOT NULL) +GROUP BY CONT +ORDER BY CONT; + +select a.dataact, a.suma as biz, b.suma as roa, a.suma - b.suma as dif from +(SELECT sum(t.suma) as suma, dat_document as dataact from imp_import_documente t where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 AND SUBSTR(SCD, 1,3) = '401' group by dat_document) a left join +(SELECT sum(t.suma) as suma, dataact from ACT t where AN=2024 AND LUNA = 6 AND SUBSTR(SCD, 1,3) = '401' AND STERS= 0 group by dataact) b on (a.dataact = b.dataact) order by dataact; + + +select a.scd, a.scc, b.scd, b.scc, a.dataact, a.suma as biz, b.suma as roa, nvl(a.suma,0) - nvl(b.suma,0) as dif from +(SELECT SCD, SCC, sum(t.suma) as suma, dat_document as dataact from imp_import_documente t where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 group by SCD, SCC, dat_document) a left join +(SELECT SCD, SCC, sum(t.suma) as suma, dataact from ACT t where AN=2024 AND LUNA = 6 AND STERS= 0 group by SCD, SCC, dataact) b on (a.dataact = b.dataact and a.scd = b.scd and a.scc = b.scc) +where nvl(a.suma,0) - nvl(b.suma,0) <> 0 order by a.scd, a.dataact; + +select t.*,rowid from imp_import_documente t where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 AND SUBSTR(SCC, 1,3) = '401' AND dat_document = to_date('20062024', 'ddmmyyyy')order by dat_document, to_number(cod_number), suma; +--select t.explicatia4, t.*,rowid from act t where AN=2024 AND LUNA = 6 AND SUBSTR(SCD, 1,3) = '401' AND STERS= 0 AND dataact = to_date('21062024', 'ddmmyyyy')order by dataact, suma; +select T.EXPLICATIA4, T.EXPLICATIA5, T.STERS, t.nract, t.dataact, t.scd, t.ascd, t.scc, t.ascc, t.suma, t.id_jtva_coloana, t.taxcode, t.paymentcode, t.explicatia, t.id_fact, t.id_factd, t.id_factc, t.cod, t.id_act, t.id_fdoc, t.datascad, t.dataireg, t.an, t.luna, t.nnir, t.id_util, t.dataora, t.id_responsabil, t.id_venchelt, t.id_sectie, t.id_set, t.id_lucrare, t.id_Gestin, t.id_Gestout, t.id_Valuta, t.proc_tva, t.id_ctr, t.serie_act,rowid from act t where an=2024 and luna = 6 AND STERS = 0 AND SUBSTR(SCC, 1,3) = '401' AND dataact = to_date('20062024', 'ddmmyyyy') order by t.dataact, T.NRACT, t.suma; + +select t.*,rowid from imp_import_documente t where extract(year from dat_document) = 2024 and extract(month from dat_document) = 6 AND cod_number like '%7000696928%' AND dat_document = to_date('20062024', 'ddmmyyyy')order by dat_document, to_number(cod_number), suma; +select T.EXPLICATIA4, T.EXPLICATIA5, T.STERS, t.nract, t.dataact, t.scd, t.ascd, t.scc, t.ascc, t.suma, t.id_jtva_coloana, t.taxcode, t.paymentcode, t.explicatia, t.id_fact, t.id_factd, t.id_factc, t.cod, t.id_act, t.id_fdoc, t.datascad, t.dataireg, t.an, t.luna, t.nnir, t.id_util, t.dataora, t.id_responsabil, t.id_venchelt, t.id_sectie, t.id_set, t.id_lucrare, t.id_Gestin, t.id_Gestout, t.id_Valuta, t.proc_tva, t.id_ctr, t.serie_act,rowid from act t where an=2024 and luna = 6 AND STERS = 0 AND nract= 7000696928 AND dataact = to_date('20062024', 'ddmmyyyy') order by t.dataact, T.NRACT, t.suma; diff --git a/EXEMPLE/Monografii.xlsx b/EXEMPLE/Monografii.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8e261cd4a810509d6ced9c611c308656e7c3ace3 GIT binary patch literal 10932 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 + + + 16556 + 16556 + 09/16/2024 + WOODS DARREN + 309 + D2 + TA + REC + 2 + 09/12/2024 + 09/17/2024 + + 533627330 + + + 0 + 295.2300 + 2.2300 + 2.2300 + 50.0000 + 42.0200 + 7.9800 + 0.0000 + 0.0000 + 0.0000 + 295.2300 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 4638559 + 09/16/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 243.0000 + 243.0000 + RON + 1 + 222.9400 + 20.0600 + TX3 + TVA 9 + 328 + WOODS DARREN + WOODS DARREN 309 + 09/12/2024 + 09/17/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16556 + 16556 + 09/16/2024 + WOODS DARREN + 309 + D2 + TA + REC + 2 + 09/12/2024 + 09/17/2024 + + 533627330 + + + 0 + 295.2300 + 2.2300 + 2.2300 + 50.0000 + 42.0200 + 7.9800 + 0.0000 + 0.0000 + 0.0000 + 295.2300 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 4638562 + 09/16/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 2.2300 + 2.2300 + RON + 1 + 2.2300 + 0.0000 + TX0 + Neimpozabil + 328 + WOODS DARREN + WOODS DARREN 309 + 09/12/2024 + 09/17/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16556 + 16556 + 09/16/2024 + WOODS DARREN + 309 + D2 + TA + REC + 2 + 09/12/2024 + 09/17/2024 + + 533627330 + + + 0 + 295.2300 + 2.2300 + 2.2300 + 50.0000 + 42.0200 + 7.9800 + 0.0000 + 0.0000 + 0.0000 + 295.2300 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 4638564 + 09/16/2024 + 630 + Taxa Animal + Taxa Animal + Taxa Animal + + 1 + + + 50.0000 + 50.0000 + RON + 1 + 42.0200 + 7.9800 + TX1 + TVA 19 + 328 + WOODS DARREN + WOODS DARREN 309 + 09/12/2024 + 09/17/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16556 + 16556 + 09/16/2024 + WOODS DARREN + 309 + D2 + TA + REC + 2 + 09/12/2024 + 09/17/2024 + + 533627330 + + + 0 + 295.2300 + 2.2300 + 2.2300 + 50.0000 + 42.0200 + 7.9800 + 0.0000 + 0.0000 + 0.0000 + 295.2300 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 4638567 + 09/16/2024 + 900 + Cash + Cash + Cash + + 1 + + + 295.2300 + 295.2300 + RON + 1 + 0.0000 + 0.0000 + + + 328 + WOODS DARREN + WOODS DARREN 309 + 09/12/2024 + 09/17/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16557 + 16557 + 09/16/2024 + PUNDICHI OTILIA + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + 2670826131258 + RK716533 + + + 0 + 10.5700 + 10.5700 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 4638571 + 09/16/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.5100 + 1.5100 + RON + 1 + 1.5100 + 0.0000 + TX0 + Neimpozabil + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16557 + 16557 + 09/16/2024 + PUNDICHI OTILIA + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + 2670826131258 + RK716533 + + + 0 + 10.5700 + 10.5700 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 4638576 + 09/17/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.5100 + 1.5100 + RON + 1 + 1.5100 + 0.0000 + TX0 + Neimpozabil + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16557 + 16557 + 09/16/2024 + PUNDICHI OTILIA + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + 2670826131258 + RK716533 + + + 0 + 10.5700 + 10.5700 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 4638581 + 09/18/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.5100 + 1.5100 + RON + 1 + 1.5100 + 0.0000 + TX0 + Neimpozabil + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16557 + 16557 + 09/16/2024 + PUNDICHI OTILIA + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + 2670826131258 + RK716533 + + + 0 + 10.5700 + 10.5700 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 4638586 + 09/19/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.5100 + 1.5100 + RON + 1 + 1.5100 + 0.0000 + TX0 + Neimpozabil + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16557 + 16557 + 09/16/2024 + PUNDICHI OTILIA + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + 2670826131258 + RK716533 + + + 0 + 10.5700 + 10.5700 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 4638591 + 09/20/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.5100 + 1.5100 + RON + 1 + 1.5100 + 0.0000 + TX0 + Neimpozabil + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16557 + 16557 + 09/16/2024 + PUNDICHI OTILIA + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + 2670826131258 + RK716533 + + + 0 + 10.5700 + 10.5700 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 4638596 + 09/21/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.5100 + 1.5100 + RON + 1 + 1.5100 + 0.0000 + TX0 + Neimpozabil + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16557 + 16557 + 09/16/2024 + PUNDICHI OTILIA + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + 2670826131258 + RK716533 + + + 0 + 10.5700 + 10.5700 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 4638601 + 09/22/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.5100 + 1.5100 + RON + 1 + 1.5100 + 0.0000 + TX0 + Neimpozabil + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16557 + 16557 + 09/16/2024 + PUNDICHI OTILIA + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + 2670826131258 + RK716533 + + + 0 + 10.5700 + 10.5700 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 10.5700 + 0.0000 + 0.0000 + 0.0000 + 4638610 + 09/16/2024 + 913 + Visa Card + Visa Card + Visa Card + + 1 + + + 10.5700 + 10.5700 + RON + 1 + 0.0000 + 0.0000 + + + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123142 + 123142 + 09/16/2024 + CREATIVE EYE SRL + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 1151.9900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 1151.9900 + 0.0000 + 4638568 + 09/16/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 164.5700 + 164.5700 + RON + 1 + 150.9800 + 13.5900 + TX3 + TVA 9 + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123142 + 123142 + 09/16/2024 + CREATIVE EYE SRL + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 1151.9900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 1151.9900 + 0.0000 + 4638573 + 09/17/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 164.5700 + 164.5700 + RON + 1 + 150.9800 + 13.5900 + TX3 + TVA 9 + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123142 + 123142 + 09/16/2024 + CREATIVE EYE SRL + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 1151.9900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 1151.9900 + 0.0000 + 4638578 + 09/18/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 164.5700 + 164.5700 + RON + 1 + 150.9800 + 13.5900 + TX3 + TVA 9 + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123142 + 123142 + 09/16/2024 + CREATIVE EYE SRL + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 1151.9900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 1151.9900 + 0.0000 + 4638583 + 09/19/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 164.5700 + 164.5700 + RON + 1 + 150.9800 + 13.5900 + TX3 + TVA 9 + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123142 + 123142 + 09/16/2024 + CREATIVE EYE SRL + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 1151.9900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 1151.9900 + 0.0000 + 4638588 + 09/20/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 164.5700 + 164.5700 + RON + 1 + 150.9800 + 13.5900 + TX3 + TVA 9 + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123142 + 123142 + 09/16/2024 + CREATIVE EYE SRL + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 1151.9900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 1151.9900 + 0.0000 + 4638593 + 09/21/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 164.5700 + 164.5700 + RON + 1 + 150.9800 + 13.5900 + TX3 + TVA 9 + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123142 + 123142 + 09/16/2024 + CREATIVE EYE SRL + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 1151.9900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 1151.9900 + 0.0000 + 4638598 + 09/22/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 164.5700 + 164.5700 + RON + 1 + 150.9800 + 13.5900 + TX3 + TVA 9 + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123142 + 123142 + 09/16/2024 + CREATIVE EYE SRL + 227 + D1 + TAG1 + TAG + 2 + 09/16/2024 + 09/23/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 1151.9900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 1151.9900 + 0.0000 + 4638611 + 09/16/2024 + 904 + Virament Intern + Virament Intern + Virament Intern + + 1 + + + 1151.9900 + 1151.9900 + RON + 1 + 0.0000 + 0.0000 + + + 227 + PUNDICHI OTILIA + PUNDICHI OTILIA 227 + 09/16/2024 + 09/23/2024 + + 1 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16558 + 16558 + 09/16/2024 + HAMPU STEFAN + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + 1490531400197 + RZ417436 + + + 0 + 5.2800 + 5.2800 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 4638615 + 09/16/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.3200 + 1.3200 + RON + 1 + 1.3200 + 0.0000 + TX0 + Neimpozabil + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16558 + 16558 + 09/16/2024 + HAMPU STEFAN + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + 1490531400197 + RZ417436 + + + 0 + 5.2800 + 5.2800 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 4638620 + 09/17/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.3200 + 1.3200 + RON + 1 + 1.3200 + 0.0000 + TX0 + Neimpozabil + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16558 + 16558 + 09/16/2024 + HAMPU STEFAN + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + 1490531400197 + RZ417436 + + + 0 + 5.2800 + 5.2800 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 4638625 + 09/18/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.3200 + 1.3200 + RON + 1 + 1.3200 + 0.0000 + TX0 + Neimpozabil + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16558 + 16558 + 09/16/2024 + HAMPU STEFAN + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + 1490531400197 + RZ417436 + + + 0 + 5.2800 + 5.2800 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 4638630 + 09/19/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 1.3200 + 1.3200 + RON + 1 + 1.3200 + 0.0000 + TX0 + Neimpozabil + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16558 + 16558 + 09/16/2024 + HAMPU STEFAN + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + 1490531400197 + RZ417436 + + + 0 + 5.2800 + 5.2800 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 5.2800 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 4638636 + 09/16/2024 + 900 + Cash + Cash + Cash + + 1 + + + 5.2800 + 5.2800 + RON + 1 + 0.0000 + 0.0000 + + + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123143 + 123143 + 09/16/2024 + CREATIVE EYE SRL + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 576.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 576.0000 + 0.0000 + 4638612 + 09/16/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 144.0000 + 144.0000 + RON + 1 + 132.1100 + 11.8900 + TX3 + TVA 9 + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123143 + 123143 + 09/16/2024 + CREATIVE EYE SRL + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 576.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 576.0000 + 0.0000 + 4638617 + 09/17/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 144.0000 + 144.0000 + RON + 1 + 132.1100 + 11.8900 + TX3 + TVA 9 + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123143 + 123143 + 09/16/2024 + CREATIVE EYE SRL + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 576.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 576.0000 + 0.0000 + 4638622 + 09/18/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 144.0000 + 144.0000 + RON + 1 + 132.1100 + 11.8900 + TX3 + TVA 9 + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123143 + 123143 + 09/16/2024 + CREATIVE EYE SRL + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 576.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 576.0000 + 0.0000 + 4638627 + 09/19/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 144.0000 + 144.0000 + RON + 1 + 132.1100 + 11.8900 + TX3 + TVA 9 + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 0 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 123143 + 123143 + 09/16/2024 + CREATIVE EYE SRL + 232 + D2 + TAG1 + TAG + 2 + 09/16/2024 + 09/20/2024 + RO 15613488 + J 13/2215/2003 + + + 0 + 576.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 576.0000 + 0.0000 + 4638637 + 09/16/2024 + 904 + Virament Intern + Virament Intern + Virament Intern + + 1 + + + 576.0000 + 576.0000 + RON + 1 + 0.0000 + 0.0000 + + + 232 + HAMPU STEFAN + HAMPU STEFAN 232 + 09/16/2024 + 09/20/2024 + + 1 + Decontare Interna + FOLIONUMBER1 + 0 + 0 + + + + + + + + 01/01/2001 + + + + CREATIVE EYE SRL + RO15613488 + J13/2215/2003 + TRANSILVANIA CONSTANTA + RO62BTRL01401202701392XX + + + 01/01/2001 + Romania + CONSTANTA + STR STEFAN CEL MARE NR 26 + + + + + + + + 01/01/2001 + + + + + + 16559 + 16559 + 09/16/2024 + BLIUC VIOLETA + 333 + D1 + TA + REC + 1 + 09/16/2024 + 09/18/2024 + 2500128221155 + + + + 0 + 735.6900 + 6.6900 + 6.6900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 735.6900 + 0.0000 + 0.0000 + 0.0000 + 4638638 + 09/16/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 243.0000 + 243.0000 + RON + 1 + 222.9400 + 20.0600 + TX3 + TVA 9 + 327 + BLIUC DANA + BLIUC DANA 327 + 09/16/2024 + 09/18/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16559 + 16559 + 09/16/2024 + BLIUC VIOLETA + 333 + D1 + TA + REC + 1 + 09/16/2024 + 09/18/2024 + 2500128221155 + + + + 0 + 735.6900 + 6.6900 + 6.6900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 735.6900 + 0.0000 + 0.0000 + 0.0000 + 4638641 + 09/16/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 2.2300 + 2.2300 + RON + 1 + 2.2300 + 0.0000 + TX0 + Neimpozabil + 327 + BLIUC DANA + BLIUC DANA 327 + 09/16/2024 + 09/18/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16559 + 16559 + 09/16/2024 + BLIUC VIOLETA + 333 + D1 + TA + REC + 1 + 09/16/2024 + 09/18/2024 + 2500128221155 + + + + 0 + 735.6900 + 6.6900 + 6.6900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 735.6900 + 0.0000 + 0.0000 + 0.0000 + 4638643 + 09/16/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 243.0000 + 243.0000 + RON + 1 + 222.9400 + 20.0600 + TX3 + TVA 9 + 331 + BLIUC VIOLETA + BLIUC VIOLETA 322 + 09/16/2024 + 09/18/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16559 + 16559 + 09/16/2024 + BLIUC VIOLETA + 333 + D1 + TA + REC + 1 + 09/16/2024 + 09/18/2024 + 2500128221155 + + + + 0 + 735.6900 + 6.6900 + 6.6900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 735.6900 + 0.0000 + 0.0000 + 0.0000 + 4638646 + 09/16/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 2.2300 + 2.2300 + RON + 1 + 2.2300 + 0.0000 + TX0 + Neimpozabil + 331 + BLIUC VIOLETA + BLIUC VIOLETA 322 + 09/16/2024 + 09/18/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16559 + 16559 + 09/16/2024 + BLIUC VIOLETA + 333 + D1 + TA + REC + 1 + 09/16/2024 + 09/18/2024 + 2500128221155 + + + + 0 + 735.6900 + 6.6900 + 6.6900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 735.6900 + 0.0000 + 0.0000 + 0.0000 + 4638648 + 09/17/2024 + 100 + Tarif Cazare + Tarif Cazare + Cazare Accomodation + + 1 + + + 243.0000 + 243.0000 + RON + 1 + 222.9400 + 20.0600 + TX3 + TVA 9 + 331 + BLIUC VIOLETA + BLIUC VIOLETA 322 + 09/16/2024 + 09/18/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16559 + 16559 + 09/16/2024 + BLIUC VIOLETA + 333 + D1 + TA + REC + 1 + 09/16/2024 + 09/18/2024 + 2500128221155 + + + + 0 + 735.6900 + 6.6900 + 6.6900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 735.6900 + 0.0000 + 0.0000 + 0.0000 + 4638651 + 09/17/2024 + 150 + Taxa Statiune + Taxa Statiune + Taxa Locala City Tax + + 1 + + + 2.2300 + 2.2300 + RON + 1 + 2.2300 + 0.0000 + TX0 + Neimpozabil + 331 + BLIUC VIOLETA + BLIUC VIOLETA 322 + 09/16/2024 + 09/18/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + 16559 + 16559 + 09/16/2024 + BLIUC VIOLETA + 333 + D1 + TA + REC + 1 + 09/16/2024 + 09/18/2024 + 2500128221155 + + + + 0 + 735.6900 + 6.6900 + 6.6900 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 0.0000 + 735.6900 + 0.0000 + 0.0000 + 0.0000 + 4638655 + 09/16/2024 + 913 + Visa Card + Visa Card + Visa Card + + 1 + + + 735.6900 + 735.6900 + RON + 1 + 0.0000 + 0.0000 + + + 331 + BLIUC VIOLETA + BLIUC VIOLETA 322 + 09/16/2024 + 09/18/2024 + + 0 + Factura Laser A4 + FOLIONUMBER + 0 + 0 + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + + + + + + + 01/01/2001 + + + + + diff --git a/EXEMPLE/restaurant/Iesiri_20240718.xml b/EXEMPLE/restaurant/Iesiri_20240718.xml new file mode 100644 index 0000000..5fc9b60 --- /dev/null +++ b/EXEMPLE/restaurant/Iesiri_20240718.xml @@ -0,0 +1,1711 @@ + + + + 2-20240718 + RaportGestiune + 376432.000000 + 18.07.2024 00:00:00 + 6.64 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 3-20240718 + RaportGestiune + 376435.000000 + 18.07.2024 00:00:00 + 1.35 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 4-20240718 + RaportGestiune + 376435.000000 + 18.07.2024 00:00:00 + 2.4 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 5-20240718 + RaportGestiune + 376438.000000 + 18.07.2024 00:00:00 + 20.1 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 6-20240718 + RaportGestiune + 376440.000000 + 18.07.2024 00:00:00 + 4.32 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 7-20240718 + RaportGestiune + 376444.000000 + 18.07.2024 00:00:00 + 0.13 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 8-20240718 + RaportGestiune + 376444.000000 + 18.07.2024 00:00:00 + 14.49 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 9-20240718 + RaportGestiune + 376444.000000 + 18.07.2024 00:00:00 + 2.61 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 10-20240718 + RaportGestiune + 376445.000000 + 18.07.2024 00:00:00 + 6.18 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 11-20240718 + RaportGestiune + 376446.000000 + 18.07.2024 00:00:00 + 4.52 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 12-20240718 + RaportGestiune + 376446.000000 + 18.07.2024 00:00:00 + 5.42 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 13-20240718 + RaportGestiune + 376446.000000 + 18.07.2024 00:00:00 + 0 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 14-20240718 + RaportGestiune + 376448.000000 + 18.07.2024 00:00:00 + 6.4 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 15-20240718 + RaportGestiune + 376449.000000 + 18.07.2024 00:00:00 + 6.95 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 16-20240718 + RaportGestiune + 376450.000000 + 18.07.2024 00:00:00 + 1.74 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 17-20240718 + RaportGestiune + 376450.000000 + 18.07.2024 00:00:00 + 0.31 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 18-20240718 + RaportGestiune + 376450.000000 + 18.07.2024 00:00:00 + 7.01 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 19-20240718 + RaportGestiune + 376451.000000 + 18.07.2024 00:00:00 + 62.95 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 20-20240718 + RaportGestiune + 376451.000000 + 18.07.2024 00:00:00 + 2.67 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 21-20240718 + RaportGestiune + 376452.000000 + 18.07.2024 00:00:00 + 21.15 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 22-20240718 + RaportGestiune + 376452.000000 + 18.07.2024 00:00:00 + 1.63 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 23-20240718 + RaportGestiune + 376454.000000 + 18.07.2024 00:00:00 + 1.7 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 24-20240718 + RaportGestiune + 376455.000000 + 18.07.2024 00:00:00 + 16.93 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 25-20240718 + RaportGestiune + 376456.000000 + 18.07.2024 00:00:00 + 3.75 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 26-20240718 + RaportGestiune + 376459.000000 + 18.07.2024 00:00:00 + 3.46 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 27-20240718 + RaportGestiune + 376459.000000 + 18.07.2024 00:00:00 + 2.46 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 28-20240718 + RaportGestiune + 376460.000000 + 18.07.2024 00:00:00 + 2.64 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 29-20240718 + RaportGestiune + 376460.000000 + 18.07.2024 00:00:00 + 24.07 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 30-20240718 + RaportGestiune + 376461.000000 + 18.07.2024 00:00:00 + 14.99 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 31-20240718 + RaportGestiune + 376462.000000 + 18.07.2024 00:00:00 + 3.44 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 32-20240718 + RaportGestiune + 376462.000000 + 18.07.2024 00:00:00 + 1.8 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 33-20240718 + RaportGestiune + 376463.000000 + 18.07.2024 00:00:00 + 0 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 34-20240718 + RaportGestiune + 376463.000000 + 18.07.2024 00:00:00 + 1.18 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 35-20240718 + RaportGestiune + 376464.000000 + 18.07.2024 00:00:00 + 0.55 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 36-20240718 + RaportGestiune + 376465.000000 + 18.07.2024 00:00:00 + 55.68 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 37-20240718 + RaportGestiune + 376467.000000 + 18.07.2024 00:00:00 + 23.68 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 38-20240718 + RaportGestiune + 376468.000000 + 18.07.2024 00:00:00 + 33.54 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 39-20240718 + RaportGestiune + 376469.000000 + 18.07.2024 00:00:00 + 5.71 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 40-20240718 + RaportGestiune + 376471.000000 + 18.07.2024 00:00:00 + 25.61 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 41-20240718 + RaportGestiune + 376472.000000 + 18.07.2024 00:00:00 + 16.9 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 42-20240718 + RaportGestiune + 376472.000000 + 18.07.2024 00:00:00 + 19.5 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 43-20240718 + RaportGestiune + 376472.000000 + 18.07.2024 00:00:00 + 6.94 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 44-20240718 + RaportGestiune + 376473.000000 + 18.07.2024 00:00:00 + 10.17 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 45-20240718 + RaportGestiune + 376474.000000 + 18.07.2024 00:00:00 + 11.03 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 46-20240718 + RaportGestiune + 376475.000000 + 18.07.2024 00:00:00 + 3.4 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 47-20240718 + RaportGestiune + 376475.000000 + 18.07.2024 00:00:00 + 7.74 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 48-20240718 + RaportGestiune + 376476.000000 + 18.07.2024 00:00:00 + 2.41 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 49-20240718 + RaportGestiune + 376476.000000 + 18.07.2024 00:00:00 + 6.37 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 50-20240718 + RaportGestiune + 376476.000000 + 18.07.2024 00:00:00 + 7.68 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 51-20240718 + RaportGestiune + 376476.000000 + 18.07.2024 00:00:00 + 14.96 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 52-20240718 + RaportGestiune + 376477.000000 + 18.07.2024 00:00:00 + 64.92 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 53-20240718 + RaportGestiune + 376477.000000 + 18.07.2024 00:00:00 + 4.57 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 54-20240718 + RaportGestiune + 376477.000000 + 18.07.2024 00:00:00 + 3.45 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 55-20240718 + RaportGestiune + 376477.000000 + 18.07.2024 00:00:00 + 12.56 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 56-20240718 + RaportGestiune + 376477.000000 + 18.07.2024 00:00:00 + 6.09 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 57-20240718 + RaportGestiune + 376478.000000 + 18.07.2024 00:00:00 + 96.08 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 58-20240718 + RaportGestiune + 376479.000000 + 18.07.2024 00:00:00 + 30.14 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 59-20240718 + RaportGestiune + 376480.000000 + 18.07.2024 00:00:00 + 4.11 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 60-20240718 + RaportGestiune + 376481.000000 + 18.07.2024 00:00:00 + 44.88 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 61-20240718 + RaportGestiune + 376482.000000 + 18.07.2024 00:00:00 + 1.71 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 62-20240718 + RaportGestiune + 376483.000000 + 18.07.2024 00:00:00 + 7 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 63-20240718 + RaportGestiune + 376485.000000 + 18.07.2024 00:00:00 + 20.67 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 64-20240718 + RaportGestiune + 376486.000000 + 18.07.2024 00:00:00 + 18.02 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 65-20240718 + RaportGestiune + 376486.000000 + 18.07.2024 00:00:00 + 6.47 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 66-20240718 + RaportGestiune + 376486.000000 + 18.07.2024 00:00:00 + 5.32 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 67-20240718 + RaportGestiune + 376486.000000 + 18.07.2024 00:00:00 + 10.64 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 68-20240718 + RaportGestiune + 376486.000000 + 18.07.2024 00:00:00 + 13.98 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 69-20240718 + RaportGestiune + 376486.000000 + 18.07.2024 00:00:00 + 5.6 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 70-20240718 + RaportGestiune + 376486.000000 + 18.07.2024 00:00:00 + 7.74 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 71-20240718 + RaportGestiune + 376487.000000 + 18.07.2024 00:00:00 + 2.13 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 72-20240718 + RaportGestiune + 376488.000000 + 18.07.2024 00:00:00 + 8.72 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 73-20240718 + RaportGestiune + 376488.000000 + 18.07.2024 00:00:00 + 18.64 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 74-20240718 + RaportGestiune + 376489.000000 + 18.07.2024 00:00:00 + 7.55 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 75-20240718 + RaportGestiune + 376490.000000 + 18.07.2024 00:00:00 + 74.09 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 76-20240718 + RaportGestiune + 376491.000000 + 18.07.2024 00:00:00 + 3.28 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 77-20240718 + RaportGestiune + 376491.000000 + 18.07.2024 00:00:00 + 0.68 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 78-20240718 + RaportGestiune + 376491.000000 + 18.07.2024 00:00:00 + 17.05 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 79-20240718 + RaportGestiune + 376491.000000 + 18.07.2024 00:00:00 + 5.18 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 80-20240718 + RaportGestiune + 376491.000000 + 18.07.2024 00:00:00 + 2.27 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 81-20240718 + RaportGestiune + 376492.000000 + 18.07.2024 00:00:00 + 2.7 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 82-20240718 + RaportGestiune + 376492.000000 + 18.07.2024 00:00:00 + 15.56 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 83-20240718 + RaportGestiune + 376492.000000 + 18.07.2024 00:00:00 + 21.34 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 84-20240718 + RaportGestiune + 376492.000000 + 18.07.2024 00:00:00 + 0.28 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 85-20240718 + RaportGestiune + 376492.000000 + 18.07.2024 00:00:00 + 8.33 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 86-20240718 + RaportGestiune + 376492.000000 + 18.07.2024 00:00:00 + 4.73 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 87-20240718 + RaportGestiune + 376494.000000 + 18.07.2024 00:00:00 + 2.69 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 88-20240718 + RaportGestiune + 376495.000000 + 18.07.2024 00:00:00 + 5.23 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 89-20240718 + RaportGestiune + 376496.000000 + 18.07.2024 00:00:00 + 2.71 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 90-20240718 + RaportGestiune + 376497.000000 + 18.07.2024 00:00:00 + 18.85 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 91-20240718 + RaportGestiune + 376498.000000 + 18.07.2024 00:00:00 + 13.8 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 92-20240718 + RaportGestiune + 376498.000000 + 18.07.2024 00:00:00 + 0.97 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 93-20240718 + RaportGestiune + 376498.000000 + 18.07.2024 00:00:00 + 14.28 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 94-20240718 + RaportGestiune + 376498.000000 + 18.07.2024 00:00:00 + 3.92 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 95-20240718 + RaportGestiune + 376499.000000 + 18.07.2024 00:00:00 + 0.53 + 2 + Bucatarie Rest + 2 + Bucatarie Rest + Vanzare + 0 + + + + 96-20240718 + RaportGestiune + 376499.000000 + 18.07.2024 00:00:00 + 0.03 + 2 + Bucatarie Rest + 2 + Bucatarie Rest + Vanzare + 0 + + + + 97-20240718 + RaportGestiune + 376499.000000 + 18.07.2024 00:00:00 + 3.06 + 2 + Bucatarie Rest + 2 + Bucatarie Rest + Vanzare + 0 + + + + 98-20240718 + RaportGestiune + 376499.000000 + 18.07.2024 00:00:00 + 0.29 + 2 + Bucatarie Rest + 2 + Bucatarie Rest + Vanzare + 0 + + + + 99-20240718 + RaportGestiune + 376499.000000 + 18.07.2024 00:00:00 + 0.99 + 2 + Bucatarie Rest + 2 + Bucatarie Rest + Vanzare + 0 + + + + 100-20240718 + RaportGestiune + 376500.000000 + 18.07.2024 00:00:00 + 57.06 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 101-20240718 + RaportGestiune + 376501.000000 + 18.07.2024 00:00:00 + 46.79 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 102-20240718 + RaportGestiune + 376501.000000 + 18.07.2024 00:00:00 + 71.06 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 103-20240718 + RaportGestiune + 376502.000000 + 18.07.2024 00:00:00 + 33.59 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 104-20240718 + RaportGestiune + 376502.000000 + 18.07.2024 00:00:00 + 31.09 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 105-20240718 + RaportGestiune + 376502.000000 + 18.07.2024 00:00:00 + 21.28 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 106-20240718 + RaportGestiune + 376502.000000 + 18.07.2024 00:00:00 + 115.66 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 107-20240718 + RaportGestiune + 376503.000000 + 18.07.2024 00:00:00 + 55.42 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 108-20240718 + RaportGestiune + 376503.000000 + 18.07.2024 00:00:00 + 8.33 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 109-20240718 + RaportGestiune + 376503.000000 + 18.07.2024 00:00:00 + 8.44 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 110-20240718 + RaportGestiune + 376503.000000 + 18.07.2024 00:00:00 + 3.76 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 111-20240718 + RaportGestiune + 376503.000000 + 18.07.2024 00:00:00 + 3.7 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 112-20240718 + RaportGestiune + 376504.000000 + 18.07.2024 00:00:00 + 3.75 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 113-20240718 + RaportGestiune + 376505.000000 + 18.07.2024 00:00:00 + 119.15 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 114-20240718 + RaportGestiune + 376506.000000 + 18.07.2024 00:00:00 + 42.58 + 4 + Bucatarie Casa Flora + 4 + Bucatarie Casa Flora + Vanzare + 0 + + + + 115-20240718 + RaportGestiune + 376507.000000 + 18.07.2024 00:00:00 + 59.98 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Vanzare + 0 + + + + 116-20240718 + RaportGestiune + 379344.000000 + 18.07.2024 00:00:00 + 2.2 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Bon consum + 7 + Protocol + + + 117-20240718 + RaportGestiune + 379344.000000 + 18.07.2024 00:00:00 + 0.34 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Bon consum + 7 + Protocol + + + 118-20240718 + RaportGestiune + 379345.000000 + 18.07.2024 00:00:00 + 1.87 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Bon consum + 7 + Protocol + + + 119-20240718 + RaportGestiune + 379345.000000 + 18.07.2024 00:00:00 + 0.17 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Bon consum + 7 + Protocol + + + 120-20240718 + RaportGestiune + 379346.000000 + 18.07.2024 00:00:00 + 2.2 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Bon consum + 7 + Protocol + + + 121-20240718 + RaportGestiune + 379346.000000 + 18.07.2024 00:00:00 + 0.34 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Bon consum + 7 + Protocol + + + 122-20240718 + RaportGestiune + 379347.000000 + 18.07.2024 00:00:00 + 28.42 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Bon consum + 7 + Protocol + + + 123-20240718 + RaportGestiune + 379348.000000 + 18.07.2024 00:00:00 + 16.47 + 3 + Bar Casa Flora + 3 + Bar Casa Flora + Bon consum + 7 + Protocol + + \ No newline at end of file diff --git a/EXEMPLE/restaurant/Intrari_20240426.xml b/EXEMPLE/restaurant/Intrari_20240426.xml new file mode 100644 index 0000000..45ec95b --- /dev/null +++ b/EXEMPLE/restaurant/Intrari_20240426.xml @@ -0,0 +1,51 @@ + + + + 0-20240426 + Factura + 57778 + 26.04.2024 00:00:00 + 22495407 + ARISA CORPORATION SRL + 2613.48 + 2613.48 + 0 + 0 + 0 + 4 + Bucatarie Casa Flora + Achizitie + + + 1-20240426 + Factura + 57779 + 26.04.2024 00:00:00 + 22495407 + ARISA CORPORATION SRL + 3289.77 + 3289.77 + 0 + 0 + 0 + 4 + Bucatarie Casa Flora + Achizitie + + + 2-20240426 + Factura + 57784 + 26.04.2024 00:00:00 + 22495407 + ARISA CORPORATION SRL + 939.39 + 939.39 + 0 + 0 + 0 + 4 + Bucatarie Casa Flora + Achizitie + + \ No newline at end of file diff --git a/EXEMPLE/restaurant/Vanzari_20240909.xml b/EXEMPLE/restaurant/Vanzari_20240909.xml new file mode 100644 index 0000000..5478db6 --- /dev/null +++ b/EXEMPLE/restaurant/Vanzari_20240909.xml @@ -0,0 +1,523 @@ + + + + 0-20240909 + La masa + 2155 + 09.09.2024 00:00:00 + 0 + 0 + 9 + 0 + 1 + + Numerar + + + 1-20240909 + La masa + 2156 + 09.09.2024 00:00:00 + 64.22 + 5.78 + 9 + 0 + 1 + + tichete + + + 2-20240909 + La masa + 2157 + 09.09.2024 00:00:00 + 10.08 + 1.92 + 19 + 0 + 1 + + Carte credit + + + 3-20240909 + La masa + 2158 + 09.09.2024 00:00:00 + 4.59 + 0.41 + 9 + 0 + 1 + + Numerar + + + 4-20240909 + La masa + 2158 + 09.09.2024 00:00:00 + 10.08 + 1.92 + 19 + 0 + 1 + + Numerar + + + 5-20240909 + La masa + 2158 + 09.09.2024 00:00:00 + 13.03 + 2.47 + 19 + 0 + 1 + + Numerar + + + 6-20240909 + La masa + 2158 + 09.09.2024 00:00:00 + 82.57 + 7.43 + 9 + 0 + 1 + + Numerar + + + 7-20240909 + La masa + 2159 + 09.09.2024 00:00:00 + 10.08 + 1.92 + 19 + 0 + 1 + + Carte credit + + + 8-20240909 + La masa + 2160 + 09.09.2024 00:00:00 + 13.76 + 1.24 + 9 + 0 + 1 + + Numerar + + + 9-20240909 + La masa + 2161 + 09.09.2024 00:00:00 + 2.75 + 0.25 + 9 + 0 + 1 + + Carte credit + + + 10-20240909 + La masa + 2161 + 09.09.2024 00:00:00 + 10.08 + 1.92 + 19 + 0 + 1 + + Carte credit + + + 11-20240909 + La masa + 2161 + 09.09.2024 00:00:00 + 13.76 + 1.24 + 9 + 0 + 1 + + Carte credit + + + 12-20240909 + La masa + 2161 + 09.09.2024 00:00:00 + 18.35 + 1.65 + 9 + 0 + 1 + + Carte credit + + + 13-20240909 + La masa + 2161 + 09.09.2024 00:00:00 + 18.49 + 3.51 + 19 + 0 + 1 + + Carte credit + + + 14-20240909 + La masa + 2161 + 09.09.2024 00:00:00 + 27.52 + 2.48 + 9 + 0 + 1 + + Carte credit + + + 15-20240909 + La masa + 2161 + 09.09.2024 00:00:00 + 36.7 + 3.3 + 9 + 0 + 1 + + Carte credit + + + 16-20240909 + La masa + 2161 + 09.09.2024 00:00:00 + 35.29 + 6.71 + 19 + 0 + 1 + + Carte credit + + + 17-20240909 + La masa + 2161 + 09.09.2024 00:00:00 + 43.58 + 3.92 + 9 + 0 + 1 + + Carte credit + + + 18-20240909 + La masa + 2162 + 09.09.2024 00:00:00 + 6.88 + 0.62 + 9 + 0 + 1 + + tichete + + + 19-20240909 + La masa + 2162 + 09.09.2024 00:00:00 + 13.76 + 1.24 + 9 + 0 + 1 + + tichete + + + 20-20240909 + La masa + 2162 + 09.09.2024 00:00:00 + 16.51 + 1.49 + 9 + 0 + 1 + + tichete + + + 21-20240909 + La masa + 2162 + 09.09.2024 00:00:00 + 23.53 + 4.47 + 19 + 0 + 1 + + tichete + + + 22-20240909 + La masa + 2162 + 09.09.2024 00:00:00 + 33.49 + 3.01 + 9 + 0 + 1 + + tichete + + + 23-20240909 + La masa + 2162 + 09.09.2024 00:00:00 + 44.95 + 4.05 + 9 + 0 + 1 + + tichete + + + 24-20240909 + La masa + 2162 + 09.09.2024 00:00:00 + 39.91 + 3.59 + 9 + 0 + 1 + + tichete + + + 25-20240909 + La masa + 2163 + 09.09.2024 00:00:00 + 16.51 + 1.49 + 9 + 0 + 1 + + tichete + + + 26-20240909 + La masa + 2163 + 09.09.2024 00:00:00 + 35.29 + 6.71 + 19 + 0 + 1 + + tichete + + + 27-20240909 + La masa + 2163 + 09.09.2024 00:00:00 + 40.83 + 3.67 + 9 + 0 + 1 + + tichete + + + 28-20240909 + La masa + 2163 + 09.09.2024 00:00:00 + 50 + 4.5 + 9 + 0 + 1 + + tichete + + + 29-20240909 + La masa + 2163 + 09.09.2024 00:00:00 + 21.43 + 4.07 + 19 + 0 + 1 + + tichete + + + 30-20240909 + La masa + 2164 + 09.09.2024 00:00:00 + 9.24 + 1.76 + 19 + 0 + 1 + + Carte credit + + + 31-20240909 + La masa + 2165 + 09.09.2024 00:00:00 + 1.83 + 0.17 + 9 + 0 + 1 + + Numerar + + + 32-20240909 + La masa + 2165 + 09.09.2024 00:00:00 + 3.67 + 0.33 + 9 + 0 + 1 + + Numerar + + + 33-20240909 + La masa + 2165 + 09.09.2024 00:00:00 + 6.88 + 0.62 + 9 + 0 + 1 + + Numerar + + + 34-20240909 + La masa + 2165 + 09.09.2024 00:00:00 + 13.76 + 1.24 + 9 + 0 + 1 + + Numerar + + + 35-20240909 + La masa + 2165 + 09.09.2024 00:00:00 + 13.76 + 1.24 + 9 + 0 + 1 + + Numerar + + + 36-20240909 + La masa + 2165 + 09.09.2024 00:00:00 + 27.52 + 2.48 + 9 + 0 + 1 + + Numerar + + + 37-20240909 + La masa + 2165 + 09.09.2024 00:00:00 + 27.52 + 2.48 + 9 + 0 + 1 + + Numerar + + + 38-20240909 + La masa + 2165 + 09.09.2024 00:00:00 + 100.46 + 9.04 + 9 + 0 + 1 + + Numerar + + + 39-20240909 + La masa + 2165 + 09.09.2024 00:00:00 + 44.95 + 4.05 + 9 + 0 + 1 + + Numerar + + \ No newline at end of file diff --git a/INFO.txt b/INFO.txt new file mode 100644 index 0000000..3e538ec --- /dev/null +++ b/INFO.txt @@ -0,0 +1,91 @@ +Am facut suma(cantitate * pret) pe intrari si pe iesiri, dar nu am gasit in balanta sumele respective la 371, 401. + +In fisierul de iesiri nu am gasit referinte la conturi. Sunt doar iesiri de 371? +In fisierul de intrari nu este contul in clar, ci un camp ID care face referire la un nomenclator de conturi. Trebuie sa aflu ce conturi reprezinta ID-urile + +Am gasit si un fisier cu transferuri. Trebuie sa generam note si pentru transferuri? + +Pentru lamuriri o sa imi trebuiasca: +RAPORT DE GESTIUNE +CENTRALIZATOR BONURI CONSUM +CENTRALIZATOR NIR-URI +CENTRALIZATOR TRANSFERURI (daca trebuie generate note) +LISTA ARTICOLE +Factura F/54381/17.05.2016 COCA COLA HBC ROMANIA SRL (NIR 1299) +NIR 1301 si Factura 866673 18/05/2016 (articolele au alte conturi decat NIR-ul 1299) + + + +SELECT CONT, SUM(CANT*PRET) AS VALOARE FROM NIR1 GROUP BY CONT INTO CURSOR TT +CONT 11 (301): 6598.88 +CONT 18 (371): 7490.00 +balanta 301 debit: 6598.90 +balanta 371 debit: 7533.45 +balanta 378 credit: 4808.81 +balanta 4428.1 credit: 715.53 + + +SELECT l.cont, sum(l1.pret*l1.cant) as valoare FROM livrare l FULL JOIN livrare1 l1 ON l.codparinte = l1.codparinte AND l.indexlocal = l1.indexlivr GROUP BY l.cont + + +transf1 +marfa +607: CALCULATE SUM((valachiz) FOR valachiz <> 0 +378: CALCULATE SUM((pret*cant)-tva-valachiz) FOR valachiz <> 0 +4428: CALCULATE SUM(tva) FOR valachiz <> 0 +------------------------------ +LUNA 06/2016 +INTRARI - NIR +SELECT N.CONT, SUM(N.CANT*N.PRET) AS VALCTVAV, SUM(N.tva) AS VALTVAV, SUM(I.CANT*I.PRET) AS VALACH, SUM(((N.CANT*N.PRET)-N.TVA)-(I.CANT*I.PRET)) AS VALADAOS, SUM(I.TVA) AS VALTVAA FROM NIR1 N JOIN INTRARI1 I ON N.CODPARINTE = I.CODPARINTE AND N.ART = I.ART GROUP BY CONT INTO CURSOR TT + +301 +valoare achizitie fara tva: 7944.39 +valoare tva achizitie: 717.51 + +371 +valoare achizitie fara tva: 2982.41 (371 = 401) +valoare tva achizitie: 377.68 (4426 = 401) +valoare adaos: 5457.26 (371 = 378) +valoare tva vz neex: 904.33 (371 = 4428) +valoare vz cu adaos si tva: 9344 (debit 371) + + +LIVRARE - BON CONSUM (descarcare gestiune produse retete 301 si 371) +SELECT l.cont, ROUND(sum(l1.pret*l1.cant),2) as valvctva, ROUND(SUM((l1.pret-l1.adaos)*l1.cant),2) as valach, ROUND(SUM(l1.pret*l1.tvaneex/(1+l1.tvaneex)*l1.cant),2) as valtvaneex, ROUND(SUM((l1.adaos*l1.cant)-(l1.pret*l1.tvaneex/(1+l1.tvaneex)*l1.cant)),2) as valadaos FROM livrare l FULL JOIN livrare1 l1 ON l.codparinte = l1.codparinte AND l.indexlocal = l1.indexlivr GROUP BY l.cont +301 +valoare achizitie fara tva: 9543.77 (601 = 301) + +371 +valoare achizitie fara tva: 491.42 (607 = 371) +valoare adaos: 1352.62 (378 = 371) +valoare tva neex: 165.96 (4428 = 371) + +TRANSFER - MONETARE (descarcare gestiune marfa 371) +SELECT ROUND(SUM(valachiz),2) as valach, ROUND(SUM((pret*cant)-tva-valachiz),2) as valadaos, ROUND(SUM(tva),2) as valtva WHERE valachiz <> 0 FROM transf1 +371 +valoare achizitie fara tva: 2368.64 (607 = 371) +valoare adaos: 4199.53 (378 = 371) +valoare tva neex: 724.34 (4428 = 371) + +INCASARI +SELECT t.zi, SUM(t.valdoc) as valtot, SUM(NVL(t2.valoare, 0.00)) as valpos, SUM(t.valdoc-NVL(t2.valoare,0.00)) as valcasa FROM transf t LEFT JOIN transf2 t2 ON t.coddoc = t2.codparinte GROUP BY t.zi + +select z.zi, ROUND(NVL(x.proctva*100, 0.00),0) as proctva, ROUND(NVL(x.valvctva, 0.0000),2) - ROUND(NVL(z.valdiscoun * x.valvctva/y.valvctva, 0.0000),2) as valdoc, round(w.valpos* x.valvctva/y.valvctva,2) as valpos, round(w.valcasa* x.valvctva/y.valvctva,2) as valcasa from ; +(SELECT tr.zi, s.tvaneex as proctva, ROUND(SUM(t.cant*t.pret),2) as valvctva FROM transf1 t FULL JOIN sursa1 s ON t.codparinte = s.codparinte AND t.indexlocal = s.indexlivr FULL JOIN transf tr ON t.codparinte = tr.coddoc GROUP BY tr.zi, s.tvaneex ) x, ; +(SELECT tr.zi, ROUND(SUM(t.cant*t.pret),2) as valvctva FROM transf1 t JOIN transf tr ON t.codparinte = tr.coddoc GROUP BY tr.zi) y, ; +(SELECT tr.zi, ROUND(SUM(tr.valdiscoun),2) as valdiscoun FROM transf tr GROUP BY tr.zi) z, ; +(SELECT tr.zi, SUM(NVL(t2.valoare, 0.00)) as valpos, SUM(tr.valdoc-NVL(t2.valoare,0.00)) as valcasa FROM transf tr LEFT JOIN transf2 t2 ON tr.coddoc = t2.codparinte GROUP BY tr.zi) w ; +WHERE x.zi = y.zi AND x.zi = z.zi and x.zi = w.zi ; +INTO CURSOR tt + +select zi, proctva, valdoc, ; + round(valdoc * proctva /(100 + proctva),2) as tva,; + valdoc - round(valdoc * proctva /(100 + proctva),2) as baza,; + round(valpos * proctva /(100 + proctva),2) as tvacard,; + valpos - round(valpos * proctva /(100 + proctva),2) as bazacard,; + round(valcasa * proctva /(100 + proctva),2) as tvanumerar,; + valcasa - round(valcasa * proctva /(100 + proctva),2) as bazanumerar ; + FROM tt INTO CURSOR vv + +CASA = valoarea incasata numerar, cu tot cu TVA +CARD = valoarea incasata cu card, cu tot cu TVA diff --git a/Teste/_precompile.ps1 b/Teste/_precompile.ps1 new file mode 100644 index 0000000..200b2e5 --- /dev/null +++ b/Teste/_precompile.ps1 @@ -0,0 +1,66 @@ +# _precompile.ps1 -Prg - regenereaza .fxp-ul target intr-un proces IZOLAT. +# De ce izolat: precompilarea (vfp9 -A ... COMPILE) atarna dupa COMPILE si e omorata; daca +# ruleaza in ACEEASI sesiune powershell care lanseaza apoi testul, lansarile ulterioare de +# vfp9 esueaza (deschid editorul in loc sa ruleze). Rulat ca proces separat (Start-Process +# -Wait din harness), nu otraveste sesiunea care lanseaza testul. +param([Parameter(Mandatory=$true)][string]$Prg) +$Vfp = 'C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe' +$Fxp = [System.IO.Path]::ChangeExtension($Prg, 'fxp') +$dir = [System.IO.Path]::GetDirectoryName($Prg) +$tmpPrg = Join-Path $dir '_compile_tmp.prg' +# prg temporar care compileaza target-ul (COMPILE cu variabila; forma cu literal in ghilimele da eroare) +Set-Content -Path $tmpPrg -Value ("lcT = `"$Prg`"`r`nCOMPILE (lcT)`r`nQUIT`r`n") -Encoding ascii +# omoara doar vfp9 proprii (linia de comanda contine folderul testului), nu instante straine +function Stop-VfpProprii([string]$Marker) { + Get-CimInstance Win32_Process -Filter "Name='vfp9.exe'" -ErrorAction SilentlyContinue | ForEach-Object { + if ($_.CommandLine -and $_.CommandLine.ToLower().Contains($Marker.ToLower())) { + Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue + } + } +} +Stop-VfpProprii $dir +Start-Sleep -Milliseconds 500 +if (Test-Path $Fxp) { [System.IO.File]::Delete($Fxp) } + +# Fara furt de focus: fereastra vfp9 a compilarii (chiar tranzitorie) e impinsa off-screen, +# la fel ca in vfp_ui_harness.ps1 (SetWindowPos HWND_BOTTOM + NOACTIVATE, x=-4000). +Add-Type @" +using System; +using System.Runtime.InteropServices; +public class Win32UiPc { + [DllImport("user32.dll")] + public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); + [DllImport("user32.dll")] + public static extern bool IsWindow(IntPtr hWnd); + public static readonly IntPtr HWND_BOTTOM = new IntPtr(1); + public const uint SWP_NOSIZE = 0x0001; + public const uint SWP_NOACTIVATE = 0x0010; +} +"@ +function Push-OffscreenPc([IntPtr]$Hwnd) { + if ($Hwnd -eq [IntPtr]::Zero -or -not [Win32UiPc]::IsWindow($Hwnd)) { return } + [Win32UiPc]::SetWindowPos($Hwnd, [Win32UiPc]::HWND_BOTTOM, -4000, 0, 0, 0, ([Win32UiPc]::SWP_NOSIZE -bor [Win32UiPc]::SWP_NOACTIVATE)) | Out-Null +} + +$ok = $false +foreach ($try in 1..3) { + $pcProc = Start-Process -FilePath $Vfp -ArgumentList @('-A', "`"$tmpPrg`"") -PassThru + $dl = (Get-Date).AddSeconds(30) + $pcHwnd = [IntPtr]::Zero + while (-not (Test-Path $Fxp) -and (Get-Date) -lt $dl) { + if ($pcHwnd -eq [IntPtr]::Zero -and -not $pcProc.HasExited) { + $pcProc.Refresh() + if ($pcProc.MainWindowHandle -ne [IntPtr]::Zero) { $pcHwnd = $pcProc.MainWindowHandle } + } + Push-OffscreenPc $pcHwnd + Start-Sleep -Milliseconds 300 + } + Start-Sleep -Seconds 3 + Stop-VfpProprii $dir + Start-Sleep -Seconds 1 + if (Test-Path $Fxp) { $ok = $true; break } +} +foreach ($f in @($tmpPrg, [System.IO.Path]::ChangeExtension($tmpPrg, 'fxp'))) { + if (Test-Path $f) { try { [System.IO.File]::Delete($f) } catch {} } +} +if ($ok) { exit 0 } else { exit 1 } diff --git a/Teste/bin_din_text.ps1 b/Teste/bin_din_text.ps1 new file mode 100644 index 0000000..fe4ce75 --- /dev/null +++ b/Teste/bin_din_text.ps1 @@ -0,0 +1,49 @@ +<# +.SYNOPSIS + Scrie inapoi in proiect binarele VFP (.scx+.sct / .vcx+.vct) regenerate din textul editat. + +.DESCRIPTION + Wrapper peste D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1 cu parametrii FLORA2ROA. Flux in-arbore: + textul .sc2/.vc2 sta LANGA binar, deci -CacheRoot = radacina proiectului. + + Regenereaza in staging, face fidelity check (bin -> text, comparat pe octeti) si abia apoi + copiaza peste binarul din proiect. Refuza daca binarul e blocat (IDE sau flora2roa.exe + deschis) sau daca e mai nou decat textul (fara -Force). + + Editarea textului se face byte-safe, in Windows-1252: + $t = [IO.File]::ReadAllText($p, [Text.Encoding]::GetEncoding(1252)) + [IO.File]::WriteAllText($p, $t, [Text.Encoding]::GetEncoding(1252)) + NU cu tool-uri care scriu UTF-8: corup diacriticele din TOT fisierul. + Vezi COMUN\docs\flux-editare-vfp-text.md si conventie_encoding_cp1252.md. + + Dupa write-back binarul e modificat in SVN: se comite in SVN doar cu acordul utilizatorului. + +.PARAMETER TextFile + Unul sau mai multe fisiere .sc2/.vc2 din arbore (ex. frm_import.sc2). + +.EXAMPLE + powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile frm_import.sc2 -DryRun + +.EXAMPLE + powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile frm_import.sc2 +#> +[CmdletBinding()] +param( + [Parameter(Mandatory=$true)][string[]]$TextFile, + [string]$ProjectRoot, + [switch]$Force, + [switch]$NoVerify, + [switch]$DryRun +) +$ErrorActionPreference = 'Stop' + +if (-not $ProjectRoot) { $ProjectRoot = Split-Path $PSScriptRoot -Parent } +$tool = 'D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1' +if (-not (Test-Path $tool)) { throw "Nu gasesc $tool (tooling-ul partajat FoxBin2Prg)." } + +$TextFile = $TextFile | ForEach-Object { if ([IO.Path]::IsPathRooted($_)) { $_ } else { Join-Path $ProjectRoot $_ } } + +# flux in-arbore: CacheRoot = ProjectRoot (maparea text->binar devine identitate) +& $tool -TextFile $TextFile -ProjectRoot $ProjectRoot -CacheRoot $ProjectRoot ` + -Force:$Force -NoVerify:$NoVerify -DryRun:$DryRun +exit $LASTEXITCODE diff --git a/Teste/mock_amessagebox.prg b/Teste/mock_amessagebox.prg new file mode 100644 index 0000000..9963357 --- /dev/null +++ b/Teste/mock_amessagebox.prg @@ -0,0 +1,21 @@ +* mock_amessagebox.prg - inlocuieste FUNCTION amessagebox (myutils.prg) in testele headless, +* ca dialogurile modale sa nu blocheze procesul. Returneaza 6 (Da/OK) implicit. +* Se incarca cu SET PROCEDURE ... ADDITIVE dupa initializarea mediului: la nume duplicat de +* procedura VFP alege fisierul deschis cel mai recent. +* gnMockRaspuns (PUBLIC, optional): valoarea returnata (implicit 6). +* gcMockUltimMesaj / gnMockUltimTip (PUBLIC, optional): daca testul declara gcMockUltimMesaj ca +* sir, mock-ul memoreaza mesajul si tipul ultimului apel, pentru aserturi pe textul dialogului. +FUNCTION amessagebox + LPARAMETERS tcMessage, tnDialogBoxType, tcTitle, tcFont, tnTimeOut, tnTimeoutValue + LOCAL lnRaspuns + lnRaspuns = IIF(TYPE('gnMockRaspuns') = 'N', gnMockRaspuns, 6) + IF TYPE('gcMockUltimMesaj') = 'C' + gcMockUltimMesaj = TRANSFORM(tcMessage) + gnMockUltimTip = IIF(TYPE('tnDialogBoxType') = 'N', tnDialogBoxType, 0) + ENDIF + TestLog('MOCK amessagebox: [' + ALLTRIM(TRANSFORM(tcMessage)) + '] -> returnez ' + TRANSFORM(lnRaspuns)) + RETURN lnRaspuns +ENDFUNC + +* MESSAGEBOX nativ nu se poate umbri; formularul apeleaza si MESSAGEBOX() direct in cateva +* locuri. Testele care ating acele ramuri trebuie sa evite conditia care le declanseaza. diff --git a/Teste/ruleaza_teste.ps1 b/Teste/ruleaza_teste.ps1 new file mode 100644 index 0000000..f20037a --- /dev/null +++ b/Teste/ruleaza_teste.ps1 @@ -0,0 +1,74 @@ +<# +.SYNOPSIS + Ruleaza suita de teste FLORA2ROA (verificare de sintaxa + teste UI cu capturi). + +.DESCRIPTION + Ordinea e cea din COMUN\docs\depanare_testare_vfp.md: intai compilarea de verificare (ieftina, + prinde sintaxa), apoi testele functionale pe fluxul real al utilizatorului. + + Suitele NU se ruleaza in paralel: harness-ul isi omoara instantele vfp9 proprii inainte de + fiecare lansare (filtrat pe linia de comanda, instantele straine nu sunt atinse). + +.PARAMETER Doar + Ruleaza numai testele al caror nume contine acest sir. + +.PARAMETER FaraSintaxa + Sare peste verificarea de sintaxa. + +.EXAMPLE + powershell -ExecutionPolicy Bypass -File Teste\ruleaza_teste.ps1 + +.EXAMPLE + powershell -ExecutionPolicy Bypass -File Teste\ruleaza_teste.ps1 -Doar export +#> +[CmdletBinding()] +param( + [string]$Doar, + [switch]$FaraSintaxa +) +$ErrorActionPreference = 'Stop' +$Teste = $PSScriptRoot +$Root = Split-Path $Teste -Parent + +# nume test -> etichetele pasilor asteptate de vfp_ui_harness.ps1 (o captura per pas) +$suita = @( + @{ Prg = 'test_frm_import_ui.prg'; Steps = @('afisat', 'trace', 'date') } + @{ Prg = 'test_export_date.prg'; Steps = @('afisat', 'importat') } +) +if ($Doar) { $suita = $suita | Where-Object { $_.Prg -like "*$Doar*" } } + +$rezultate = @() + +if (-not $FaraSintaxa) { + Write-Host '=== Verificare de sintaxa (compilare headless) ===' -ForegroundColor Cyan + & (Join-Path $Teste 'verifica_sintaxa.ps1') + $rezultate += [pscustomobject]@{ Test = 'verifica_sintaxa'; Rezultat = $(if ($LASTEXITCODE -eq 0) { 'PASS' } else { 'FAIL' }) } +} + +foreach ($t in $suita) { + $prg = Join-Path $Teste $t.Prg + if (-not (Test-Path $prg)) { Write-Warning "lipsa: $prg"; continue } + Write-Host '' + Write-Host ("=== {0} ===" -f $t.Prg) -ForegroundColor Cyan + + # capturile fiecarui test in folderul lui, ca sa nu se suprascrie intre teste + $shots = Join-Path (Join-Path $Teste 'screenshots') ([IO.Path]::GetFileNameWithoutExtension($t.Prg)) + & (Join-Path $Teste 'vfp_ui_harness.ps1') -TestPrg $prg -Steps $t.Steps -ShotsDir $shots -StepTimeoutSec 300 + + # verdictul il da testul: ultima linie "REZULTAT:" din log + $log = Join-Path $Teste ([IO.Path]::GetFileNameWithoutExtension($t.Prg) + '_log.txt') + $verdict = 'FARA LOG' + if (Test-Path $log) { + $linie = Select-String -Path $log -Pattern '^REZULTAT:' | Select-Object -Last 1 + if ($linie) { $verdict = $linie.Line -replace '^REZULTAT:\s*', '' } + $failuri = @(Select-String -Path $log -Pattern '^FAIL:') + foreach ($f in $failuri) { Write-Warning $f.Line } + } + $rezultate += [pscustomobject]@{ Test = $t.Prg; Rezultat = $verdict } +} + +Write-Host '' +Write-Host '=== SUMAR ===' -ForegroundColor Cyan +$rezultate | Format-Table -AutoSize +$nrFail = @($rezultate | Where-Object { $_.Rezultat -notlike 'PASS*' }).Count +exit ([int]($nrFail -gt 0)) diff --git a/Teste/test_conectare_roa.prg b/Teste/test_conectare_roa.prg new file mode 100644 index 0000000..67b7e54 --- /dev/null +++ b/Teste/test_conectare_roa.prg @@ -0,0 +1,63 @@ +* test_conectare_roa.prg - verifica drumul de initializare CU conectare la Oracle. +* Ruleaza cu datele din settings.ini; daca baza nu e accesibila, testul trebuie sa raporteze +* esecul si sa iasa - NU sa ramana agatat pe un dialog de login (SQLSetProp DispLogin). +* +* vfp9.exe -A -T "Teste\test_conectare_roa.prg" +* Nu face parte din suita implicita: depinde de reteaua/serverul Oracle. + +SET SAFETY OFF +SET TALK OFF + +PUBLIC gcUILog, gcSyncDir, gnTestFail +gnTestFail = 0 + +LOCAL lcTestDir, llConectat +lcTestDir = ADDBS(JUSTPATH(SYS(16, 0))) +gcUILog = lcTestDir + 'test_conectare_roa_log.txt' +gcSyncDir = lcTestDir + 'uisync\' +IF !DIRECTORY(gcSyncDir) + MD (gcSyncDir) +ENDIF +STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog) + +* fara dialog de login: headless, un prompt ODBC ar bloca procesul la nesfarsit +SQLSETPROP(0, 'DispLogin', 3) + +llConectat = DO_CONECTARE(lcTestDir) + +HarnessLog('gnHandle = ' + TRANSFORM(gnHandle)) +TestAssert(TYPE('goConn') = 'O', 'goConn instantiat chiar si fara conectare') +TestAssert(TYPE('gnHandle') = 'N', 'gnHandle este numeric') + +IF llConectat + TestAssert(gnHandle > 0, 'conectare reusita la ' + ALLTRIM(goApp.oSettings.host)) + LOCAL lnSucces + lnSucces = goExecutor.oExecute(GetHash('cSql=>select 1 as unu from dual??cCursor=>cPing')) + TestAssertEqual(1, lnSucces, 'interogare de test executata') + IF USED('cPing') + TestAssertEqual(1, cPing.unu, 'baza a raspuns corect') + USE IN (SELECT('cPing')) + ENDIF + goConn.Disconnect() + TestAssert(goConn.GetHandle() <= 0, 'deconectare reusita') +ELSE + HarnessLog('Conectare esuata (host ' + ALLTRIM(goApp.oSettings.host) + ; + '). Testul a iesit controlat, fara sa ramana agatat.') + TestAssert(gnHandle <= 0, 'esecul de conectare e raportat, nu ascuns') +ENDIF + +HarnessLog('REZULTAT: ' + TestRezultat()) +DO HarnessDone WITH TestRezultat() +QUIT + +FUNCTION DO_CONECTARE + LPARAMETERS tcTestDir + LOCAL llOk + llOk = .F. + DO (tcTestDir + 'test_init_env_auto.prg') WITH .T. + SET PROCEDURE TO (tcTestDir + 'ui_harness.prg') ADDITIVE + SET PROCEDURE TO (tcTestDir + 'mock_amessagebox.prg') ADDITIVE + DO HarnessInit + llOk = (TYPE('gnHandle') = 'N' AND gnHandle > 0) + RETURN llOk +ENDFUNC diff --git a/Teste/test_export_date.prg b/Teste/test_export_date.prg new file mode 100644 index 0000000..d431470 --- /dev/null +++ b/Teste/test_export_date.prg @@ -0,0 +1,111 @@ +* test_export_date.prg - test functional pe fluxul REAL de citire a fisierelor de import. +* Instantiaza frm_import, seteaza intervalul din controale si apeleaza ExportDate() (pasul pe +* care il declanseaza butonul "Import Fidelio&Biz > ROA"), apoi verifica cursoarele rezultate. +* Nu are nevoie de Oracle: ExportDate citeste doar XML-urile din folderele din settings.ini. +* +* Parametri optionali: data de inceput si data de sfarsit ca AAAALLZZ. +* vfp9.exe -A -T "Teste\test_export_date.prg" 20250601 20250630 +* Rulare cu capturi: +* powershell -ExecutionPolicy Bypass -File Teste\vfp_ui_harness.ps1 ` +* -TestPrg 'D:\PROIECTE\FLORA\FLORA2ROA\Teste\test_export_date.prg' -Steps @('afisat','importat') + +LPARAMETERS tcData1, tcData2 + +SET SAFETY OFF +SET TALK OFF + +PUBLIC gcUILog, gcSyncDir, gnTestFail, gnMockRaspuns, gcMockUltimMesaj, gnMockUltimTip +gnTestFail = 0 +gnMockRaspuns = 6 +gcMockUltimMesaj = '' +gnMockUltimTip = 0 + +LOCAL lcTestDir, ldData1, ldData2 +lcTestDir = ADDBS(JUSTPATH(SYS(16, 0))) +gcUILog = lcTestDir + 'test_export_date_log.txt' +gcSyncDir = lcTestDir + 'uisync\' +IF !DIRECTORY(gcSyncDir) + MD (gcSyncDir) +ENDIF +STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog) + +ldData1 = IIF(TYPE('tcData1') = 'C' AND LEN(ALLTRIM(TRANSFORM(tcData1))) = 8, ; + DATE(VAL(LEFT(tcData1, 4)), VAL(SUBSTR(tcData1, 5, 2)), VAL(RIGHT(tcData1, 2))), DATE(2025, 6, 1)) +ldData2 = IIF(TYPE('tcData2') = 'C' AND LEN(ALLTRIM(TRANSFORM(tcData2))) = 8, ; + DATE(VAL(LEFT(tcData2, 4)), VAL(SUBSTR(tcData2, 5, 2)), VAL(RIGHT(tcData2, 2))), DATE(2025, 6, 30)) + +DO (lcTestDir + 'test_init_env_auto.prg') WITH .F. + +SET PROCEDURE TO (lcTestDir + 'ui_harness.prg') ADDITIVE +SET PROCEDURE TO (lcTestDir + 'mock_amessagebox.prg') ADDITIVE + +DO HarnessInit +HarnessLog('Interval cerut: ' + DTOC(ldData1) + ' - ' + DTOC(ldData2)) +HarnessLog('cale_import_fidelio = ' + goApp.oSettings.cale_import_fidelio) +HarnessLog('cale_import_biz = ' + goApp.oSettings.cale_import_biz) +HarnessLog('cale_import = ' + goApp.oSettings.cale_import) + +TestAssert(DIRECTORY(ADDBS(ALLTRIM(goApp.oSettings.cale_import_fidelio))), 'exista directorul Fidelio') +TestAssert(DIRECTORY(ADDBS(ALLTRIM(goApp.oSettings.cale_import_biz))), 'exista directorul Biz') +TestAssert(DIRECTORY(ADDBS(ALLTRIM(goApp.oSettings.cale_import))), 'exista directorul de import') + +PUBLIC goImportFrm +DO FORM (gcAppPath + 'frm_import') NAME goImportFrm NOSHOW +goImportFrm.WindowType = 0 +goImportFrm.Show() +DOEVENTS FORCE + +DO HarnessStep WITH 0, 'formular afisat' + +* fluxul real: utilizatorul completeaza intervalul in controale, apoi apasa butonul de import +goImportFrm.txtData1.Value = ldData1 +goImportFrm.txtData2.Value = ldData2 +goImportFrm.chkTest.Value = 1 +LOCAL lnSucces +lnSucces = goImportFrm.ExportDate() +DOEVENTS FORCE + +HarnessLog('ExportDate a returnat ' + TRANSFORM(lnSucces)) +TestAssertEqual(1, lnSucces, 'ExportDate returneaza CT_SUCCES') + +LOCAL lnFidelio, lnIntrari, lnIesiri, lnVanzari, lnPart +lnFidelio = IIF(USED('cFacturiFidelio'), RECCOUNT('cFacturiFidelio'), -1) +lnIntrari = IIF(USED('cIntrariRestaurant'), RECCOUNT('cIntrariRestaurant'), -1) +lnIesiri = IIF(USED('cIesiriRestaurant'), RECCOUNT('cIesiriRestaurant'), -1) +lnVanzari = IIF(USED('cVanzariRestaurant'), RECCOUNT('cVanzariRestaurant'), -1) +lnPart = IIF(USED('nPart'), RECCOUNT('nPart'), -1) +HarnessLog('Randuri citite: facturi Fidelio=' + TRANSFORM(lnFidelio) + ' intrari=' + TRANSFORM(lnIntrari) + ; + ' iesiri=' + TRANSFORM(lnIesiri) + ' vanzari=' + TRANSFORM(lnVanzari) + ' parteneri=' + TRANSFORM(lnPart)) + +TestAssert(lnFidelio >= 0, 'cursorul cFacturiFidelio exista') +TestAssert(lnIntrari >= 0, 'cursorul cIntrariRestaurant exista') +TestAssert(lnIesiri >= 0, 'cursorul cIesiriRestaurant exista') +TestAssert(lnVanzari >= 0, 'cursorul cVanzariRestaurant exista') +TestAssert(lnPart >= 0, 'cursorul nPart exista') +TestAssert(lnFidelio + lnIntrari + lnIesiri + lnVanzari > 0, ; + 's-au citit randuri din fisierele intervalului') + +* datele citite trebuie sa fie DOAR din intervalul cerut (filtrul pe numele fisierului) +IF lnVanzari > 0 + LOCAL lnInAfara + SELECT cVanzariRestaurant + COUNT FOR !BETWEEN(CTOD(LEFT(ALLTRIM(NVL(datadocument, '')), 10)), ldData1, ldData2) ; + AND !EMPTY(ALLTRIM(NVL(datadocument, ''))) TO lnInAfara + TestAssertEqual(0, lnInAfara, 'vanzarile citite sunt in intervalul cerut') +ENDIF + +* cheia externa de partener se calculeaza pentru toate randurile +IF lnPart > 0 + LOCAL lnFaraCod + SELECT nPart + COUNT FOR EMPTY(NVL(cod, '')) TO lnFaraCod + TestAssertEqual(0, lnFaraCod, 'toti partenerii au cod cheie externa calculat') +ENDIF + +DO HarnessStep WITH 1, 'import citit: ' + TRANSFORM(lnFidelio + lnIntrari + lnIesiri + lnVanzari) + ' randuri' + +HarnessLog('REZULTAT: ' + TestRezultat()) +DO HarnessDone WITH TestRezultat() + +goImportFrm.Release() +QUIT diff --git a/Teste/test_frm_import_ui.prg b/Teste/test_frm_import_ui.prg new file mode 100644 index 0000000..bf0e48f --- /dev/null +++ b/Teste/test_frm_import_ui.prg @@ -0,0 +1,82 @@ +* test_frm_import_ui.prg - test UI smoke pentru formularul real frm_import. +* Verifica pornirea aplicatiei fara Oracle: mediul se initializeaza, formularul se instantiaza, +* Init completeaza intervalul de date din settings.ini, iar metoda Trace scrie in edtInfo. +* +* Rulare (orchestrator + capturi): +* powershell -ExecutionPolicy Bypass -File Teste\vfp_ui_harness.ps1 ` +* -TestPrg 'D:\PROIECTE\FLORA\FLORA2ROA\Teste\test_frm_import_ui.prg' ` +* -Steps @('afisat','trace','date') +* Rulare fara capturi: vfp9.exe -A -T "Teste\test_frm_import_ui.prg" (auto-continue la 30s/pas) + +SET SAFETY OFF +SET TALK OFF + +PUBLIC gcUILog, gcSyncDir, gnTestFail, gnMockRaspuns, gcMockUltimMesaj, gnMockUltimTip +gnTestFail = 0 +gnMockRaspuns = 6 +gcMockUltimMesaj = '' +gnMockUltimTip = 0 + +LOCAL lcTestDir +lcTestDir = ADDBS(JUSTPATH(SYS(16, 0))) +gcUILog = lcTestDir + 'test_frm_import_ui_log.txt' +gcSyncDir = lcTestDir + 'uisync\' +IF !DIRECTORY(gcSyncDir) + MD (gcSyncDir) +ENDIF +STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog) + +DO (lcTestDir + 'test_init_env_auto.prg') WITH .F. + +SET PROCEDURE TO (lcTestDir + 'ui_harness.prg') ADDITIVE +* mock-ul de dialoguri se incarca ULTIMUL, ca sa umbreasca amessagebox din myutils.prg +SET PROCEDURE TO (lcTestDir + 'mock_amessagebox.prg') ADDITIVE + +DO HarnessInit +HarnessLog('Mediu initializat. goApp=' + TYPE('goApp') + ' goExecutor=' + TYPE('goExecutor') + ; + ' goConn=' + TYPE('goConn')) + +TestAssert(TYPE('goApp') = 'O', 'goApp instantiat') +TestAssert(TYPE('goExecutor') = 'O', 'goExecutor instantiat') +TestAssert(TYPE('goConn') = 'O', 'goConn instantiat') +TestAssert(TYPE('goApp.oSettings') = 'O', 'settings.ini citit in goApp.oSettings') + +PUBLIC goImportFrm +DO FORM (gcAppPath + 'frm_import') NAME goImportFrm NOSHOW +* modeless: Show(1) pe un formular modal nu returneaza si blocheaza testul headless +goImportFrm.WindowType = 0 +goImportFrm.Show() +goImportFrm.WindowState = 2 +DOEVENTS FORCE + +TestAssert(TYPE('goImportFrm') = 'O', 'frm_import instantiat') +TestAssert(TYPE('goImportFrm.txtData1.Value') = 'D', 'txtData1 are valoare data') +TestAssert(TYPE('goImportFrm.txtData2.Value') = 'D', 'txtData2 are valoare data') +TestAssert(goImportFrm.txtData1.Value <= goImportFrm.txtData2.Value, ; + 'interval valid: ' + DTOC(goImportFrm.txtData1.Value) + ' - ' + DTOC(goImportFrm.txtData2.Value)) +TestAssertEqual(1, goImportFrm.chkTest.Value, 'bifa Test activa implicit (nu scrie note in ROA)') + +DO HarnessStep WITH 0, 'formular afisat' + +* Trace este canalul prin care formularul raporteaza progresul importului +goImportFrm.Trace('Verificare harness: mesaj de test') +DOEVENTS FORCE +TestAssert('Verificare harness' $ goImportFrm.edtInfo.Value, 'Trace scrie in edtInfo') + +DO HarnessStep WITH 1, 'trace scris in edtInfo' + +* schimbarea intervalului se reflecta in controale (fluxul real al utilizatorului) +goImportFrm.txtData1.Value = DATE(2025, 6, 1) +goImportFrm.txtData2.Value = DATE(2025, 6, 30) +goImportFrm.Refresh() +DOEVENTS FORCE +TestAssertEqual(DATE(2025, 6, 1), goImportFrm.txtData1.Value, 'data inceput modificata') +TestAssertEqual(DATE(2025, 6, 30), goImportFrm.txtData2.Value, 'data sfarsit modificata') + +DO HarnessStep WITH 2, 'interval 06/2025 setat' + +HarnessLog('REZULTAT: ' + TestRezultat()) +DO HarnessDone WITH TestRezultat() + +goImportFrm.Release() +QUIT diff --git a/Teste/test_helpers.prg b/Teste/test_helpers.prg new file mode 100644 index 0000000..941cac1 --- /dev/null +++ b/Teste/test_helpers.prg @@ -0,0 +1,55 @@ +* test_helpers.prg - proceduri comune testelor FLORA2ROA (handler de erori headless + aserturi). +* Se incarca automat din test_init_env_auto.prg cu SET PROCEDURE ... ADDITIVE. +* TestErrorHandler - ON ERROR pentru rulare fara consola: logheaza si continua +* TestAssert(cond, mesaj) - PASS/FAIL in log; incrementeaza gnTestFail la esec +* TestAssertEqual(asteptat, obtinut, mesaj) +* TestRezultat() - 'PASS'/'FAIL' + numarul de aserturi picate +* TestLog(mesaj) - scrie in gcUILog (harness) sau in gcTestErrLog + +PROCEDURE TestErrorHandler + LPARAMETERS tnError, tcMessage, tcProgram, tnLine + LOCAL lcLinie + lcLinie = TTOC(DATETIME()) + ' EROARE ' + TRANSFORM(tnError) + ': ' + TRANSFORM(tcMessage) + ; + ' | program: ' + TRANSFORM(tcProgram) + ' | linia: ' + TRANSFORM(tnLine) + IF TYPE('gcTestErrLog') = 'C' AND !EMPTY(gcTestErrLog) + SET SAFETY OFF + STRTOFILE(lcLinie + CHR(13) + CHR(10), gcTestErrLog, .T.) + ENDIF + TestLog(lcLinie) +ENDPROC + +PROCEDURE TestLog + LPARAMETERS tcMesaj + IF TYPE('gcUILog') = 'C' AND !EMPTY(gcUILog) + DO HarnessLog WITH TRANSFORM(tcMesaj) + ENDIF +ENDPROC + +FUNCTION TestAssert + LPARAMETERS tlConditie, tcMesaj + IF TYPE('gnTestFail') <> 'N' + PUBLIC gnTestFail + gnTestFail = 0 + ENDIF + IF tlConditie + TestLog('PASS: ' + TRANSFORM(tcMesaj)) + ELSE + gnTestFail = gnTestFail + 1 + TestLog('FAIL: ' + TRANSFORM(tcMesaj)) + ENDIF + RETURN tlConditie +ENDFUNC + +FUNCTION TestAssertEqual + LPARAMETERS tuAsteptat, tuObtinut, tcMesaj + LOCAL llEgal + llEgal = (TRANSFORM(tuAsteptat) == TRANSFORM(tuObtinut)) + RETURN TestAssert(llEgal, TRANSFORM(tcMesaj) + ' [asteptat: ' + TRANSFORM(tuAsteptat) + ; + ' | obtinut: ' + TRANSFORM(tuObtinut) + ']') +ENDFUNC + +FUNCTION TestRezultat + LOCAL lnFail + lnFail = IIF(TYPE('gnTestFail') = 'N', gnTestFail, 0) + RETURN IIF(lnFail = 0, 'PASS', 'FAIL (' + TRANSFORM(lnFail) + ' aserturi picate)') +ENDFUNC diff --git a/Teste/test_init_env_auto.prg b/Teste/test_init_env_auto.prg new file mode 100644 index 0000000..6b4ff76 --- /dev/null +++ b/Teste/test_init_env_auto.prg @@ -0,0 +1,102 @@ +* test_init_env_auto.prg +* Initializare NEINTERACTIVA a mediului FLORA2ROA pentru rulare headless +* (vfp9.exe -A -T "script.prg"), echivalentul programului principal main.prg fara +* DO FORM / READ EVENTS. +* +* Utilizare dintr-un script de test: +* DO Teste\test_init_env_auto WITH .F. && fara conectare Oracle (implicit) +* DO Teste\test_init_env_auto WITH .T. && conectare cu datele din settings.ini +* DO Teste\test_init_env_auto WITH .T., 'ROA', 'XENOTI', 'parola' +* +* Parametri: +* tlConnect - .T. = se conecteaza la Oracle (goConn.Connect); implicit .F. +* tcHost/tcUser/tcPassword - suprascriu datele din settings.ini +* tcAppPath - radacina aplicatiei; implicit se deduce din calea acestui program +* +* Dupa apel sunt disponibile: gcAppName, gcAppPath, gcTempPath, goLog, goApp, goConn, +* goExecutor, gnHandle si SET PROCEDURE / SET LIBRARY ca in main.prg. Se poate face +* CREATEOBJECT('frm_import') sau DO FORM frm_import si apela metodele punctual. +* +* ATENTIE: ErrorHandler-ul din main.prg deschide MESSAGEBOX (blocheaza headless). Aici se +* instaleaza TestErrorHandler (test_helpers.prg), care logheaza in gcTestErrLog si continua. + +LPARAMETERS tlConnect, tcHost, tcUser, tcPassword, tcAppPath + +SET SAFETY OFF +SET TALK OFF +CLOSE DATABASES ALL +SET DELETED ON +SET EXCLUSIVE ON +SET ANSI ON +SET EXACT ON +SET CENTURY ON +SET DATE DMY +SET NULLDISPLAY TO '' + +PUBLIC gcAppName, gcAppPath, gcTempPath, gcTestErrLog +PUBLIC goApp, goLog, goConn, goExecutor, goImportFrm, gnHandle + +LOCAL lcHere +lcHere = ADDBS(JUSTPATH(SYS(16, 0))) +IF TYPE('tcAppPath') = 'C' AND !EMPTY(tcAppPath) + gcAppPath = ADDBS(tcAppPath) +ELSE + * scriptul sta in \Teste\, deci radacina e cu un nivel mai sus + gcAppPath = ADDBS(JUSTPATH(SUBSTR(lcHere, 1, LEN(lcHere) - 1))) +ENDIF + +gcAppName = 'FLORA2ROA' +gcTempPath = GETENV("TEMP") +gcTestErrLog = gcAppPath + 'Teste\_erori_test.txt' +SET DEFAULT TO (gcAppPath) +SET PATH TO (gcAppPath) ADDITIVE +SET PATH TO (gcAppPath + 'Teste') ADDITIVE + +* aceleasi fisiere de proceduri ca in main.prg; mock-urile se incarca DUPA, in test +SET PROCEDURE TO (gcAppPath + 'capp.prg') ADDITIVE +SET PROCEDURE TO (gcAppPath + 'app.prg') ADDITIVE +SET PROCEDURE TO (gcAppPath + 'myutils.prg') ADDITIVE +SET PROCEDURE TO (gcAppPath + 'vfpconnection_utils.prg') ADDITIVE +SET PROCEDURE TO (gcAppPath + 'myapp.prg') ADDITIVE +SET PROCEDURE TO (gcAppPath + 'Teste\test_helpers.prg') ADDITIVE + +LOCAL lnLib, lcLib +FOR lnLib = 1 TO 2 + lcLib = IIF(lnLib = 1, 'vfpconnection.fll', 'vfpencryption.fll') + IF FILE(gcAppPath + lcLib) + TRY + SET LIBRARY TO (gcAppPath + lcLib) ADDITIVE + CATCH + STRTOFILE('Nu s-a putut incarca ' + lcLib + CHR(13) + CHR(10), gcTestErrLog, .T.) + ENDTRY + ENDIF +ENDFOR + +ON ERROR DO TestErrorHandler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() + +goImportFrm = NULL +goConn = CREATEOBJECT("oConn") +goExecutor = CREATEOBJECT("oExecutor") +goLog = CREATEOBJECT("Log", gcAppPath + "log\log_test_" + gcAppName + "_" + DTOS(DATE()) + ".txt") +goApp = CREATEOBJECT("MyApp") +gnHandle = 0 + +IF TYPE('tcHost') = 'C' AND !EMPTY(tcHost) + goApp.oSettings.host = ALLTRIM(tcHost) +ENDIF +IF TYPE('tcUser') = 'C' AND !EMPTY(tcUser) + goApp.oSettings.user = ALLTRIM(tcUser) +ENDIF +IF TYPE('tcPassword') = 'C' AND !EMPTY(tcPassword) + goApp.oSettings.password = ALLTRIM(tcPassword) +ENDIF + +IF TYPE('tlConnect') = 'L' AND tlConnect + goConn.Connect() + gnHandle = goConn.GetHandle() + IF gnHandle <= 0 + RETURN .F. + ENDIF +ENDIF + +RETURN .T. diff --git a/Teste/text_din_bin.ps1 b/Teste/text_din_bin.ps1 new file mode 100644 index 0000000..fb61629 --- /dev/null +++ b/Teste/text_din_bin.ps1 @@ -0,0 +1,35 @@ +<# +.SYNOPSIS + Genereaza/improspateaza versiunile TEXT (.sc2/.vc2/.pj2) ale binarelor VFP din FLORA2ROA. + +.DESCRIPTION + Wrapper peste D:\ROA\UTIL\foxbin2prg\git_sync.ps1 cu parametrii acestui proiect (flux + in-arbore: textul sta LANGA binar, nu intr-un cache extern). Git urmareste textele .??2; + binarele VFP sunt git-ignored, iar SVN ramane sursa de adevar pentru ele. + + Se ruleaza la inceput de sesiune si INAINTE de orice git commit, ca textele sa reflecte + binarele curente. Conversia e incrementala si nu atinge niciodata binarele. + + Fluxul complet si capcanele: COMUN\docs\flux-editare-vfp-text.md, + COMUN\docs\inrolare-proiect-git-text.md. + +.PARAMETER Force + Reconverteste chiar daca textul e la zi. + +.EXAMPLE + powershell -ExecutionPolicy Bypass -File Teste\text_din_bin.ps1 +#> +[CmdletBinding()] +param( + [string]$ProjectRoot, + [switch]$Force +) +$ErrorActionPreference = 'Stop' + +if (-not $ProjectRoot) { $ProjectRoot = Split-Path $PSScriptRoot -Parent } +$tool = 'D:\ROA\UTIL\foxbin2prg\git_sync.ps1' +if (-not (Test-Path $tool)) { throw "Nu gasesc $tool (tooling-ul partajat FoxBin2Prg)." } + +# -DbfList gol: proiectul nu are tabele de configurare de urmarit ca text +& $tool -ProjectRoot $ProjectRoot -DbfList @() -Force:$Force +exit $LASTEXITCODE diff --git a/Teste/ui_harness.prg b/Teste/ui_harness.prg new file mode 100644 index 0000000..143a4db --- /dev/null +++ b/Teste/ui_harness.prg @@ -0,0 +1,64 @@ +* ui_harness.prg - proceduri reutilizabile pentru teste UI VFP cu handshake pe semafoare. +* Un test seteaza PUBLIC gcSyncDir (folder semafoare, cu \ final) si gcUILog (fisier log), +* apoi SET PROCEDURE TO ui_harness ADDITIVE si foloseste: +* HarnessLog(mesaj) - scrie o linie in log +* HarnessStep(n, mesaj [, autoSec]) - semnaleaza pasul n gata + asteapta continuarea +* HarnessReady(n, mesaj) / HarnessWaitContinue(n [, autoSec]) - variantele separate +* HarnessDone([status]) - scrie done.txt +* HarnessWaitContinue asteapta cont_.txt; daca nu apare in autoSec secunde (implicit 30), +* continua singur (auto-continue) => testul merge si FARA orchestrator (doar log, fara capturi). + +PROCEDURE HarnessInit + *-- defensiv: SAFETY OFF ca STRTOFILE peste un fisier existent sa nu scoata dialogul modal + *-- "overwrite?" (blocheaza headless); TALK OFF ca SUM/CALCULATE sa nu deseneze pe desktop. + *-- Un test ar trebui sa faca oricum SET SAFETY OFF INAINTE de prima lui scriere de log. + SET SAFETY OFF + SET TALK OFF +ENDPROC + +PROCEDURE HarnessLog + LPARAMETERS tcMsg + IF TYPE('gcUILog') <> 'C' OR EMPTY(gcUILog) + RETURN + ENDIF + SET SAFETY OFF + LOCAL lcL + lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '') + STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcUILog) +ENDPROC + +PROCEDURE HarnessReady + LPARAMETERS tnStep, tcNote + SET SAFETY OFF + STRTOFILE(TTOC(DATETIME()) + ' ' + tcNote + CHR(13)+CHR(10), gcSyncDir + 'ready_' + TRANSFORM(tnStep) + '.txt') + HarnessLog('READY ' + TRANSFORM(tnStep) + ' - ' + tcNote) +ENDPROC + +FUNCTION HarnessWaitContinue + LPARAMETERS tnStep, tnAutoSec + LOCAL lcCont, lnMax, lnI, llPrimit + lcCont = gcSyncDir + 'cont_' + TRANSFORM(tnStep) + '.txt' + lnMax = IIF(TYPE('tnAutoSec') = 'N' AND tnAutoSec > 0, tnAutoSec, 30) + lnI = 0 + DO WHILE !FILE(lcCont) AND lnI < (lnMax * 5) + lnI = lnI + 1 + DOEVENTS FORCE + = INKEY(0.2) + ENDDO + llPrimit = FILE(lcCont) + HarnessLog('CONTINUE ' + TRANSFORM(tnStep) + IIF(llPrimit, ' (semnal primit)', ' (auto-continue dupa ' + TRANSFORM(lnMax) + 's)')) + RETURN llPrimit +ENDFUNC + +PROCEDURE HarnessStep + LPARAMETERS tnStep, tcNote, tnAutoSec + HarnessReady(tnStep, tcNote) + HarnessWaitContinue(tnStep, tnAutoSec) +ENDPROC + +PROCEDURE HarnessDone + LPARAMETERS tcStatus + SET SAFETY OFF + STRTOFILE(IIF(EMPTY(tcStatus), 'done', tcStatus) + ' ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcSyncDir + 'done.txt') + HarnessLog('GATA') +ENDPROC diff --git a/Teste/verifica_sintaxa.ps1 b/Teste/verifica_sintaxa.ps1 new file mode 100644 index 0000000..53e9ecc --- /dev/null +++ b/Teste/verifica_sintaxa.ps1 @@ -0,0 +1,128 @@ +<# +.SYNOPSIS + Verificare de sintaxa prin compilare headless a fisierelor .prg din FLORA2ROA. + +.DESCRIPTION + Cel mai ieftin test dupa orice editare de .prg (vezi COMUN\docs\depanare_testare_vfp.md, sect. 4). + Compileaza COPII ale fisierelor intr-un folder temporar, ca .fxp-urile si .err-urile generate + sa nu murdareasca arborele proiectului. VFP nu rezolva simboluri externe la compilare, deci + copia izolata e suficienta pentru sintaxa. + + Toate fisierele se compileaza intr-o SINGURA rulare vfp9: lansarile repetate de vfp9 din + aceeasi sesiune PowerShell esueaza tacut (procesul porneste dar nu executa - vezi + COMUN\docs\testare-ui-vfp.md, capcana d). + + Verdict per fisier: existenta unui .err dupa compilare. Se raporteaza si liniile mai + lungi de 250 de caractere (capcana VFP: literal/linie prea lunga = eroare de compilare sau + eroare 11 derutanta la runtime). + + NU inlocuieste testul functional: prinde sintaxa, nu apeluri catre metode inexistente. + +.PARAMETER Files + Fisiere .prg de verificat. Implicit toate .prg-urile din radacina proiectului si din Teste\. + +.PARAMETER ProjectRoot + Radacina proiectului (implicit folderul parinte al acestui script). + +.EXAMPLE + powershell -ExecutionPolicy Bypass -File Teste\verifica_sintaxa.ps1 + +.EXAMPLE + powershell -ExecutionPolicy Bypass -File Teste\verifica_sintaxa.ps1 -Files myutils.prg,app.prg +#> +[CmdletBinding()] +param( + [string[]]$Files, + [string]$ProjectRoot, + [int]$MaxLineLen = 250, + [string]$Vfp = 'C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe' +) +$ErrorActionPreference = 'Stop' + +if (-not $ProjectRoot) { $ProjectRoot = Split-Path $PSScriptRoot -Parent } +if (-not (Test-Path $Vfp)) { throw "Nu gasesc vfp9.exe: $Vfp" } + +if (-not $Files) { + $Files = @(Get-ChildItem -Path $ProjectRoot -Filter '*.prg' -File | ForEach-Object { $_.FullName }) + $Files += @(Get-ChildItem -Path (Join-Path $ProjectRoot 'Teste') -Filter '*.prg' -File -ErrorAction SilentlyContinue | ForEach-Object { $_.FullName }) +} +$Files = $Files | ForEach-Object { if ([IO.Path]::IsPathRooted($_)) { $_ } else { Join-Path $ProjectRoot $_ } } + +$work = Join-Path $env:TEMP ('flora2roa_syntax_' + [Guid]::NewGuid().ToString('N').Substring(0,8)) +New-Item -ItemType Directory -Force -Path $work | Out-Null + +# fisierele .h referite prin #INCLUDE trebuie sa fie langa copie, altfel compilarea da eroare +Get-ChildItem -Path $ProjectRoot -Filter '*.h' -File -ErrorAction SilentlyContinue | + ForEach-Object { Copy-Item $_.FullName (Join-Path $work $_.Name) -Force } + +# omoara doar instantele vfp9 proprii (linia de comanda contine folderul de lucru temporar) +function Stop-VfpProprii([string]$Marker) { + Get-CimInstance Win32_Process -Filter "Name='vfp9.exe'" -ErrorAction SilentlyContinue | ForEach-Object { + if ($_.CommandLine -and $_.CommandLine.ToLower().Contains($Marker.ToLower())) { + Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue + } + } +} + +# copiaza sursele + strange liniile prea lungi (analiza statica, fara VFP) +$copii = @() +$liniiLungi = @{} +foreach ($f in $Files) { + if (-not (Test-Path $f)) { Write-Warning "lipsa: $f"; continue } + $nume = [IO.Path]::GetFileName($f) + $copie = Join-Path $work $nume + Copy-Item -LiteralPath $f -Destination $copie -Force + $copii += [pscustomobject]@{ Nume = $nume; Sursa = $f; Copie = $copie } + + $lungi = @() + $linii = [IO.File]::ReadAllLines($f, [Text.Encoding]::GetEncoding(1252)) + for ($i = 0; $i -lt $linii.Length; $i++) { + if ($linii[$i].Length -gt $MaxLineLen) { $lungi += ('{0} (len={1})' -f ($i + 1), $linii[$i].Length) } + } + if ($lungi) { $liniiLungi[$nume] = ($lungi -join '; ') } +} +if (-not $copii) { Write-Host 'Nimic de verificat.'; return } + +# un singur .prg care compileaza toate copiile (SAFETY OFF: fara dialog "overwrite?" headless) +$linii = @('SET SAFETY OFF', 'SET TALK OFF') +foreach ($c in $copii) { $linii += ('lcT = "{0}"' -f $c.Copie); $linii += 'COMPILE (lcT)' } +$linii += 'STRTOFILE("gata", "' + (Join-Path $work '_gata.txt') + '")' +$linii += 'QUIT' +$tmpPrg = Join-Path $work '_compile_all.prg' +Set-Content -Path $tmpPrg -Value (($linii -join "`r`n") + "`r`n") -Encoding ascii + +# -A ignora config.fpw implicit, -T sare peste splash; ambele obligatorii headless +$p = Start-Process -FilePath $Vfp -ArgumentList @('-A', '-T', "`"$tmpPrg`"") -PassThru -WindowStyle Minimized +if (-not $p.WaitForExit(180000)) { Write-Warning 'Timeout la compilare (180s).'; try { $p.Kill() } catch {} } +Stop-VfpProprii $work +if (-not (Test-Path (Join-Path $work '_gata.txt'))) { + Write-Warning 'Compilarea nu a ajuns la final - verdictul per fisier poate fi incomplet.' +} + +$rezultate = foreach ($c in $copii) { + $err = [IO.Path]::ChangeExtension($c.Copie, 'err') + $fxp = [IO.Path]::ChangeExtension($c.Copie, 'fxp') + $erori = if (Test-Path $err) { (Get-Content -Raw $err).Trim() } else { '' } + [pscustomobject]@{ + Fisier = $c.Nume + Sintaxa = if ($erori) { 'ERORI' } elseif (Test-Path $fxp) { 'OK' } else { 'NECOMPILAT' } + Erori = $erori + LiniiLungi = $(if ($liniiLungi.ContainsKey($c.Nume)) { $liniiLungi[$c.Nume] } else { '' }) + } +} + +Remove-Item -Recurse -Force $work -ErrorAction SilentlyContinue + +$rezultate | Format-Table Fisier, Sintaxa -AutoSize +foreach ($r in $rezultate | Where-Object { $_.Erori }) { + Write-Host '' + Write-Warning ("ERORI in {0}:`n{1}" -f $r.Fisier, $r.Erori) +} +foreach ($r in $rezultate | Where-Object { $_.LiniiLungi }) { + Write-Host '' + Write-Warning ("Linii peste $MaxLineLen caractere in {0}: {1}" -f $r.Fisier, $r.LiniiLungi) +} +$nrProbleme = @($rezultate | Where-Object { $_.Sintaxa -ne 'OK' }).Count +Write-Host '' +Write-Host ("Gata. Fisiere verificate: {0} Cu probleme: {1}" -f @($rezultate).Count, $nrProbleme) +exit ([int]($nrProbleme -gt 0)) diff --git a/Teste/vfp_ui_harness.ps1 b/Teste/vfp_ui_harness.ps1 new file mode 100644 index 0000000..5356ce9 --- /dev/null +++ b/Teste/vfp_ui_harness.ps1 @@ -0,0 +1,231 @@ +# vfp_ui_harness.ps1 - harness reutilizabil pentru teste UI VFP cu capturi de ecran. +# Lanseaza un test VFP care afiseaza un formular real, il conduce pas cu pas prin semafoare +# (ready_.txt scris de test <-> cont_.txt scris de harness), face un screenshot dupa +# fiecare pas si il valideaza. Testul VFP foloseste procedurile din ui_harness.prg. +# +# Exemplu: +# powershell -ExecutionPolicy Bypass -File vfp_ui_harness.ps1 ` +# -TestPrg 'D:\...\test_x_ui.prg' -Steps @('afisat','actiune1','actiune2') +# +# Capcane rezolvate (vezi docs\testare-ui-vfp.md): precompilare izolata, lansare .fxp, +# detectie pornire pe mtime log, timeout-uri generoase, kill zombi vfp9. +# +# FARA FURT DE FOCUS (cerinta Marius, 17/07/2026): capturile NU mai folosesc +# Graphics.CopyFromScreen (poza ecranului intreg - fura focus / se corupe daca utilizatorul +# lucreaza in paralel). Se foloseste PrintWindow pe handle-ul ferestrei vfp9 + fereastra e +# mutata OFF-SCREEN (x=-4000, HWND_BOTTOM, SWP_NOACTIVATE) imediat ce apare handle-ul si +# re-impinsa inainte de fiecare pas (VFP isi poate re-activa fereastra la Show()/dialoguri). +# Fereastra ramane "visible" pentru GDI (PrintWindow merge), doar nu e pe ecranul vizibil +# utilizatorului si nu ia focus. +param( + [Parameter(Mandatory=$true)][string]$TestPrg, + [Parameter(Mandatory=$true)][string[]]$Steps, # etichete pentru pasii 0..N-1 + [int]$StepTimeoutSec = 130, # cat astept fiecare ready_ (dupa pas 0) + [int]$ReadyTimeoutSec = 180, # cat astept ready_0 (afisarea formularului, incarcare lenta) + [string]$ShotsDir, + [string]$SyncDir, + [string]$Vfp = 'C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe' +) +$ErrorActionPreference = 'Stop' + +$TestDir = [System.IO.Path]::GetDirectoryName($TestPrg) +$TestFxp = [System.IO.Path]::ChangeExtension($TestPrg, 'fxp') +$TestLog = [System.IO.Path]::ChangeExtension($TestPrg, $null) + '_log.txt' +if (-not $SyncDir) { $SyncDir = Join-Path $TestDir 'uisync' } +if (-not $ShotsDir) { $ShotsDir = Join-Path $TestDir 'screenshots' } +$Precompile = Join-Path $PSScriptRoot '_precompile.ps1' + +Add-Type -AssemblyName System.Windows.Forms +Add-Type -AssemblyName System.Drawing + +Add-Type @" +using System; +using System.Runtime.InteropServices; +public class Win32Ui { + [StructLayout(LayoutKind.Sequential)] + public struct RECT { public int Left, Top, Right, Bottom; } + [DllImport("user32.dll")] + public static extern bool PrintWindow(IntPtr hwnd, IntPtr hdc, uint nFlags); + [DllImport("user32.dll")] + public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); + [DllImport("user32.dll")] + public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); + [DllImport("user32.dll")] + public static extern bool IsWindow(IntPtr hWnd); + public static readonly IntPtr HWND_BOTTOM = new IntPtr(1); + public const uint SWP_NOSIZE = 0x0001; + public const uint SWP_NOACTIVATE = 0x0010; + public const uint SWP_NOZORDER = 0x0004; +} +"@ + +function Clear-Dir([string]$Dir) { + if (Test-Path $Dir) { + Get-ChildItem -Path $Dir -File -ErrorAction SilentlyContinue | ForEach-Object { + try { [System.IO.File]::Delete($_.FullName) } catch {} + } + } else { New-Item -ItemType Directory -Path $Dir | Out-Null } +} + +# Muta fereastra vfp9 off-screen (x=-4000), fara sa o activeze/minimizeze - ramane randabila +# pentru PrintWindow, dar nu se vede si nu fura focus. Se cheama repetat (VFP isi reactiveaza +# singur fereastra la Show()/dialoguri modale). +function Push-Offscreen([IntPtr]$Hwnd) { + if ($Hwnd -eq [IntPtr]::Zero) { return } + if (-not [Win32Ui]::IsWindow($Hwnd)) { return } + [Win32Ui]::SetWindowPos($Hwnd, [Win32Ui]::HWND_BOTTOM, -4000, 0, 0, 0, ([Win32Ui]::SWP_NOSIZE -bor [Win32Ui]::SWP_NOACTIVATE)) | Out-Null +} + +# Polleaza MainWindowHandle pana devine nenul (fereastra principala vfp9 aparuta). +function Wait-MainWindowHandle([System.Diagnostics.Process]$Proc, [int]$TimeoutSec) { + $deadline = (Get-Date).AddSeconds($TimeoutSec) + while ((Get-Date) -lt $deadline) { + try { + $Proc.Refresh() + if ($Proc.HasExited) { return [IntPtr]::Zero } + if ($Proc.MainWindowHandle -ne [IntPtr]::Zero) { return $Proc.MainWindowHandle } + } catch {} + Start-Sleep -Milliseconds 200 + } + return [IntPtr]::Zero +} + +function Wait-File([string]$Path, [int]$TimeoutSec, [IntPtr]$Hwnd = [IntPtr]::Zero) { + $deadline = (Get-Date).AddSeconds($TimeoutSec) + while (-not (Test-Path $Path)) { + if ((Get-Date) -gt $deadline) { return $false } + if ($Hwnd -ne [IntPtr]::Zero) { Push-Offscreen $Hwnd } + Start-Sleep -Milliseconds 300 + } + return $true +} + +# Captura pe HANDLE cu PrintWindow (nu depinde de foreground/ecran vizibil). flag 2 = +# PW_RENDERFULLCONTENT (randare completa, necesar pt. multe ferestre GDI+/themed); daca da +# imagine goala, se incearca fallback cu flag 0. +function Take-Screenshot([IntPtr]$Hwnd, [string]$Path) { + if ($Hwnd -eq [IntPtr]::Zero -or -not [Win32Ui]::IsWindow($Hwnd)) { + Write-Warning "Take-Screenshot: handle invalid, sar captura ($Path)." + return + } + $rect = New-Object Win32Ui+RECT + [Win32Ui]::GetWindowRect($Hwnd, [ref]$rect) | Out-Null + $w = $rect.Right - $rect.Left + $h = $rect.Bottom - $rect.Top + if ($w -le 0 -or $h -le 0) { $w = 1920; $h = 1080 } + $bmp = New-Object System.Drawing.Bitmap $w, $h + $g = [System.Drawing.Graphics]::FromImage($bmp) + $hdc = $g.GetHdc() + $ok = [Win32Ui]::PrintWindow($Hwnd, $hdc, 2) + $g.ReleaseHdc($hdc) + $g.Dispose() + if (-not $ok) { + $g2 = [System.Drawing.Graphics]::FromImage($bmp) + $hdc2 = $g2.GetHdc() + [Win32Ui]::PrintWindow($Hwnd, $hdc2, 0) | Out-Null + $g2.ReleaseHdc($hdc2) + $g2.Dispose() + } + $bmp.Save($Path, [System.Drawing.Imaging.ImageFormat]::Png) + $bmp.Dispose() +} + +# omoara doar vfp9 proprii (linia de comanda contine folderul testului), nu instante straine +function Stop-VfpProprii([string]$Marker) { + Get-CimInstance Win32_Process -Filter "Name='vfp9.exe'" -ErrorAction SilentlyContinue | ForEach-Object { + if ($_.CommandLine -and $_.CommandLine.ToLower().Contains($Marker.ToLower())) { + Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue + } + } +} + +Clear-Dir $SyncDir +Clear-Dir $ShotsDir + +# 1) Precompilare izolata (proces copil complet, ca sa nu otraveasca sesiunea de lansare). +# -WindowStyle Hidden pe consola powershell copil (sigur - e consola, nu GUI VFP). +Write-Host "Precompilez .fxp (izolat): $Precompile -Prg $TestPrg" +Stop-VfpProprii $TestDir +Start-Sleep -Milliseconds 500 +$pc = Start-Process powershell -WindowStyle Hidden -ArgumentList @('-ExecutionPolicy','Bypass','-File', "`"$Precompile`"", '-Prg', "`"$TestPrg`"") -Wait -PassThru +Start-Sleep -Seconds 2 +Stop-VfpProprii $TestDir +Start-Sleep -Seconds 2 +if (-not (Test-Path $TestFxp)) { Write-Warning "Nu s-a generat $TestFxp - compilare esuata." } + +# 2) Lansez .FXP-ul (nu .prg-ul). vfp9 -A porneste uneori procesul FARA sa execute (log gol); +# discriminator: START e prima linie a testului (mtime log > momentul lansarii) => in ~2s daca +# ruleaza. Relansez doar daca log-ul nu e scris in 30s (instanta moarta). Apoi astept ready_0. +# Imediat ce apare MainWindowHandle, fereastra e impinsa off-screen (fara activare). +$ready0 = Join-Path $SyncDir 'ready_0.txt' +$started = $false +$hwnd = [IntPtr]::Zero +foreach ($try in 1..8) { + if (Test-Path $ready0) { [System.IO.File]::Delete($ready0) } + if (Test-Path $TestLog) { [System.IO.File]::Delete($TestLog) } + $t0 = Get-Date + Write-Host "Lansez VFP (incercarea $try): $Vfp -A $TestFxp" + $proc = Start-Process -FilePath $Vfp -ArgumentList @('-A', "`"$TestFxp`"") -PassThru + $dl = (Get-Date).AddSeconds(30) + while ((Get-Date) -lt $dl) { + if ($hwnd -eq [IntPtr]::Zero -and -not $proc.HasExited) { + $proc.Refresh() + if ($proc.MainWindowHandle -ne [IntPtr]::Zero) { + $hwnd = $proc.MainWindowHandle + Push-Offscreen $hwnd + } + } else { + Push-Offscreen $hwnd + } + if ((Test-Path $TestLog) -and ((Get-Item $TestLog).LastWriteTime -gt $t0)) { $started = $true; break } + if (Test-Path $ready0) { $started = $true; break } + Start-Sleep -Milliseconds 500 + } + if ($started) { break } + Write-Warning "Incercarea ${try}: testul nu a scris START in 30s (instanta moarta); relansez." + if ($proc -and -not $proc.HasExited) { try { $proc.Kill() } catch {} } + Stop-VfpProprii $TestDir + Start-Sleep -Milliseconds 1500 + $hwnd = [IntPtr]::Zero +} +# Daca handle-ul principal inca nu a aparut (formular aditional creat mai tarziu), mai astept putin. +if ($hwnd -eq [IntPtr]::Zero) { $hwnd = Wait-MainWindowHandle $proc 15 } +Push-Offscreen $hwnd +if (-not (Wait-File $ready0 $ReadyTimeoutSec $hwnd)) { + Write-Warning "Testul nu a ajuns la ready_0 in ${ReadyTimeoutSec}s. Ultima linie log: '$(Get-Content $TestLog -Tail 1 -ErrorAction SilentlyContinue)'" +} + +# 3) Parcurg pasii: astept ready_ (re-impingand fereastra off-screen periodic), screenshot +# pe handle (PrintWindow), scriu cont_. +$ok = $true +for ($n = 0; $n -lt $Steps.Count; $n++) { + $label = $Steps[$n] + $ready = Join-Path $SyncDir ("ready_{0}.txt" -f $n) + $cont = Join-Path $SyncDir ("cont_{0}.txt" -f $n) + Write-Host "Astept pasul $n ($label)" + if (-not (Wait-File $ready $StepTimeoutSec $hwnd)) { + Write-Warning "TIMEOUT la pasul $n." + $ok = $false + break + } + Write-Host (" ready: {0}" -f (Get-Content $ready -Raw).Trim()) + # daca fereastra principala s-a schimbat intre timp (formular nou), reincerc handle-ul + if ($hwnd -eq [IntPtr]::Zero -or -not [Win32Ui]::IsWindow($hwnd)) { $hwnd = Wait-MainWindowHandle $proc 5 } + Push-Offscreen $hwnd + Start-Sleep -Milliseconds 1200 # las formularul sa se deseneze complet + Push-Offscreen $hwnd + $png = Join-Path $ShotsDir ("step_{0}_{1}.png" -f $n, $label) + Take-Screenshot $hwnd $png + Write-Host " screenshot: $png" + Set-Content -Path $cont -Value 'go' -Encoding ascii +} + +# 4) Astept done.txt si inchid. +if ($ok) { + $done = Join-Path $SyncDir 'done.txt' + if (Wait-File $done 30 $hwnd) { Write-Host "done: $((Get-Content $done -Raw).Trim())" } +} +Start-Sleep -Milliseconds 800 +if ($proc -and -not $proc.HasExited) { try { $proc.Kill() } catch {} } +Stop-VfpProprii $TestDir +Write-Host "GATA. Screenshots in $ShotsDir" diff --git a/app.ico b/app.ico new file mode 100644 index 0000000000000000000000000000000000000000..6319b7eff68f5fb8507c331403af2986ea59e4c8 GIT binary patch literal 32988 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 T-)rD|4ScVG?=|rMSPlFyf6P~} literal 0 HcmV?d00001 diff --git a/app.prg b/app.prg new file mode 100644 index 0000000..c612ce0 --- /dev/null +++ b/app.prg @@ -0,0 +1,240 @@ +*!* app.prg +*!* MyApp *!* +#INCLUDE COMUN.H +#DEFINE CRLF CHR(13) + CHR(10) + +*** ==================== MyApp ============================ *** +Define Class MyApp As cApp + +Enddefine && MyApp + +Define Class Settings As cSettings + cIniText = ; + "[general]" + CRLF + ; + "host = ROA" + CRLF + ; + "user = XENOTI" + CRLF + ; + "password = +vIcfGb3NCfLCZXaqOM19Q==" + CRLF + ; + "cale_import_fidelioD:\PROIECTE\FLORA\FLORA2ROA\EXEMPLE\hotel\" + CRLF + ; + "cale_import_biz=D:\PROIECTE\FLORA\FLORA2ROA\EXEMPLE\restaurant\" + CRLF + ; + "cale_import=D:\PROIECTE\FLORA\FLORA2ROA\EXEMPLE\import\" + CRLF + ; + "last_data1 =" + CRLF + ; + "last_data2 =" + CRLF + ; + "tva_incasare = 0" + CRLF + ; + "id_part_casa_restaurant = 232" + CRLF + ; + "id_part_card_restaurant = 230" + CRLF + ; + "id_part_tichete_restaurant = 230" + CRLF + ; + "id_part_casa_hotel = 232" + CRLF + ; + "id_part_card_hotel = 230" + CRLF + ; + "id_part_tichete_hotel = 231" + CRLF + ; + "id_part_virament_hotel = 226" + CRLF + ; + "id_part_viramentint_hotel = " + CRLF + ; + "id_part_clienti_hotel = 233" + CRLF + ; + "id_part_clienti_restaurant = 234" + CRLF + ; + "cont_casa_restaurant = 5311" + CRLF + ; + "acont_casa_restaurant = " + CRLF + ; + "cont_card_restaurant = 5125" + CRLF + ; + "acont_card_restaurant = 01" + CRLF + ; + "cont_tichete_restaurant = 472" + CRLF + ; + "acont_tichete_restaurant = 03" + CRLF + ; + "cont_casa_hotel = 5311" + CRLF + ; + "acont_casa_hotel = " + CRLF + ; + "cont_card_hotel = 5125" + CRLF + ; + "acont_card_hotel = 01" + CRLF + ; + "cont_tichete_hotel = 5125" + CRLF + ; + "acont_tichete_hotel = 01" + CRLF + ; + "cont_virament_hotel = 5121" + CRLF + ; + "acont_virament_hotel = " + CRLF + ; + "cont_viramentint_hotel = 581" + CRLF + ; + "acont_viramentint_hotel = " + CRLF + ; + "cont_clienti_restaurant = 418" + CRLF + ; + "acont_clienti_restaurant = 02" + CRLF + ; + "cont_clienti_hotel = 418" + CRLF + ; + "acont_clienti_hotel = 01" + CRLF + ; + "cont_factura_casa_hotel = 4111" + CRLF + ; + "cont_factura_card_hotel = 4111" + CRLF + ; + "cont_factura_tichete_hotel = 4111" + CRLF + ; + "cont_factura_viramentint_hotel = 4111" + CRLF + ; + "acont_factura_casa_hotel = 01" + CRLF + ; + "acont_factura_card_hotel = 02" + CRLF + ; + "acont_factura_tichete_hotel = 0Y" + CRLF + ; + "acont_factura_viramentint_hotel = 01" + CRLF + ; + "acont_marfa_bar = 01" + CRLF + ; + "acont_marfa_bucatarie = 08" + CRLF + ; + "acont_ach_4428 = TP" + CRLF + ; + "acont_ach_4426 = " + CRLF + ; + "acont_vz_4428 = TI" + CRLF + ; + "acont_vz_4427 = " + CRLF + ; + "acont_mf_4428 = M" + CRLF + ; + "[connection]" + CRLF + ; + "connection_timeout=60" + CRLF + ; + "response_timeout=60" + CRLF + ; + "[other]" + CRLF + ; + "write_log=0" + + + host = '' + user = '' + password = '' + password_crypt = '' + + cContCasaRestaurant = '5311' + cAcontCasaRestaurant = '' + cContCardRestaurant = '5125' + cAcontCardRestaurant = '01' + cContTicheteRestaurant = '472' + cAcontTicheteRestaurant = '03' + + cContCasaHotel = '5311' + cAcontCasaHotel = '' + cContCardHotel = '5125' + cAcontCardHotel = '01' + cContTicheteHotel = '5125' + cAcontTicheteHotel = '01' && pe extrasul de cont apar ca incasari cu cardul normale + cContViramentHotel = '5121' + cAcontViramentHotel = '' + cContViramentIntHotel = '5121' + cAcontViramentIntHotel = '' + + cContClientiRestaurant = '418' + cAcontClientiRestaurant = '02' + cContClientiHotel = '4111' + cAcontClientiHotel = '01' + + cContFacturaCasaHotel = '4111' + cContFacturaCardHotel = '4111' + cContFacturaTicheteHotel = '4111' + cContFacturaViramentIntHotel = '418' + cAContFacturaCasaHotel = '01' + cAContFacturaCardHotel = '02' + cAContFacturaTicheteHotel = '02' + cAContFacturaViramentIntHotel = '01' + + cAcontMarfaBar = '01' && 371.01 + cAcontMarfaBucatarie = '08' && 371.08 + + cAcontVenituriBar = '0201' && 707.0201 + cAcontVenituriBucatarie = '0202' && 707.0202 + + nIdPartCasaRestaurant = 251 && Id Partener Casa Lei 5311 Restaurant + nIdPartCardRestaurant = 230 && Id Partener Card 5125 Restaurant + nIdPartTicheteRestaurant = 230 && Id Partener Tichete 472 Restaurant + nIdPartClientiRestaurant = 234 && Id Partener 418 vanzare Restaurant + + nIdPartCasaHotel = 251 && Id Partener Casa Lei 5311 Hotel + nIdPartCardHotel = 230 && Id Partener Card 5125 Hotel + nIdPartTicheteHotel = 230 && Id Partener Card 5125 Hotel + nIdPartViramentHotel = 230 && Id Partener Card 5125 Hotel + nIdPartViramentIntHotel = 230 && Id Partener Card 5125 Hotel + nIdPartClientiHotel = 233 && Id Partener 418 vanzare Hotel + + connect_timeout = 60 && ftpget default 60 secunde + response_timeout = 60 + + nTVAIncasare = 0 && sistem TVA Incasare pentru facturi achizitie 4426/4428 + cAcontAch4428 = '' + cAcontAch4426 = '' + cAcontVz4428 = '' + cAcontVz4427 = '' + cAcontMf4428 = '' + + cale_import_fidelio = '' + cale_import_biz = '' + cale_import = '' + last_data1 = {} + last_data2 = {} + + lWriteLog = .F. + + Procedure ReadSettings + DoDefault() + + lcInifile = This.cIniFile + + Dimension aFiles[4] + + This.host = Alltrim(This.ReadVariable("general","host")) + This.user = This.ReadVariable("general","user") + This.password_crypt = This.ReadVariable("general","password") + This.password = This.DecryptPassword(This.password_crypt) + + lcIdPart = Alltrim(This.ReadVariable("general","id_part_casa_restaurant")) + This.nIdPartCasaRestaurant = IIF(!EMPTY(m.lcIdPart), INT(VAL(m.lcIdPart)), 0) + + lcIdPart = Alltrim(This.ReadVariable("general","id_part_card_restaurant")) + This.nIdPartCardRestaurant = IIF(!EMPTY(m.lcIdPart), INT(VAL(m.lcIdPart)), 0) + + lcIdPart = Alltrim(This.ReadVariable("general","id_part_tichete_restaurant")) + This.nIdPartTicheteRestaurant = IIF(!EMPTY(m.lcIdPart), INT(VAL(m.lcIdPart)), 0) + + lcIdPart = Alltrim(This.ReadVariable("general","id_part_clienti_restaurant")) + This.nIdPartClientiRestaurant = IIF(!EMPTY(m.lcIdPart), INT(VAL(m.lcIdPart)), 0) + + lcTVAIncasare = Alltrim(This.ReadVariable("general","tva_incasare")) + This.nTVAIncasare = IIF(!EMPTY(m.lcTVAIncasare), INT(VAL(m.lcTVAIncasare)), 0) + + This.cContCasaRestaurant = Alltrim(NVL(This.ReadVariable("general","cont_casa_restaurant"),'')) + This.cAcontCasaRestaurant = Alltrim(NVL(This.ReadVariable("general","acont_casa_restaurant"),'')) + This.cContCardRestaurant = Alltrim(NVL(This.ReadVariable("general","cont_card_restaurant"),'')) + This.cAcontCardRestaurant = Alltrim(NVL(This.ReadVariable("general","acont_card_restaurant"),'')) + This.cContTicheteRestaurant = Alltrim(NVL(This.ReadVariable("general","cont_tichete_restaurant"),'')) + This.cAcontTicheteRestaurant = Alltrim(NVL(This.ReadVariable("general","acont_tichete_restaurant"),'')) + + This.cContCasaHotel = Alltrim(NVL(This.ReadVariable("general","cont_casa_hotel"),'')) + This.cAcontCasaHotel = Alltrim(NVL(This.ReadVariable("general","acont_casa_hotel"),'')) + This.cContCardHotel = Alltrim(NVL(This.ReadVariable("general","cont_card_hotel"),'')) + This.cAcontCardHotel = Alltrim(NVL(This.ReadVariable("general","acont_card_hotel"),'')) + + This.cContTicheteHotel = Alltrim(NVL(This.ReadVariable("general","cont_tichete_hotel"),'')) + This.cAcontTicheteHotel = Alltrim(NVL(This.ReadVariable("general","acont_tichete_hotel"),'')) + This.cContViramentHotel = Alltrim(NVL(This.ReadVariable("general","cont_virament_hotel"),'')) + This.cAcontViramentHotel = Alltrim(NVL(This.ReadVariable("general","acont_virament_hotel"),'')) + This.cContViramentIntHotel = Alltrim(NVL(This.ReadVariable("general","cont_viramentint_hotel"),'')) + This.cAcontViramentIntHotel = Alltrim(NVL(This.ReadVariable("general","acont_viramentint_hotel"),'')) + + This.cContClientiRestaurant = Alltrim(NVL(This.ReadVariable("general","cont_clienti_restaurant"),'')) + This.cAcontClientiRestaurant = Alltrim(NVL(This.ReadVariable("general","acont_clienti_restaurant"),'')) + This.cContClientiHotel = Alltrim(NVL(This.ReadVariable("general","cont_clienti_hotel"),'')) + This.cAcontClientiHotel = Alltrim(NVL(This.ReadVariable("general","acont_clienti_hotel"),'')) + + This.cAcontMarfaBar = Alltrim(NVL(This.ReadVariable("general","acont_marfa_bar"),'')) + This.cAcontMarfaBucatarie = Alltrim(NVL(This.ReadVariable("general","acont_marfa_bucatarie"),'')) + + This.cAcontVenituriBar = Alltrim(NVL(This.ReadVariable("general","acont_venituri_bar"),'')) + This.cAcontVenituriBucatarie = Alltrim(NVL(This.ReadVariable("general","acont_venituri_bucatarie"),'')) + + This.cAcontAch4428 = Alltrim(NVL(This.ReadVariable("general","acont_ach_4428"),'')) + This.cAcontAch4426 = Alltrim(NVL(This.ReadVariable("general","acont_ach_4426"),'')) + This.cAcontVz4428 = Alltrim(NVL(This.ReadVariable("general","acont_vz_4428"),'')) + This.cAcontVz4427 = Alltrim(NVL(This.ReadVariable("general","acont_vz_4427"),'')) + This.cAcontMf4428 = Alltrim(NVL(This.ReadVariable("general","acont_mf_4428"),'')) + + This.cale_import_fidelio = Alltrim(This.ReadVariable("general","cale_import_fidelio")) + This.cale_import_biz = Alltrim(This.ReadVariable("general","cale_import_biz")) + This.cale_import = Alltrim(This.ReadVariable("general","cale_import")) + + This.last_data1 = CTOD(This.ReadVariable("general","last_data1")) + This.last_data2 = CTOD(This.ReadVariable("general","last_data2")) + + lcTimeOut = This.ReadVariable("connection","connect_timeout") + If Empty(Nvl(lcTimeOut,'')) + This.connect_timeout = 60 + Else + This.connect_timeout = Round(Val(lcTimeOut),0) + Endif + + lcTimeOut = This.ReadVariable("connection","response_timeout") + If Empty(Nvl(lcTimeOut,'')) + This.response_timeout = 60 + Else + This.response_timeout = Round(Val(lcTimeOut),0) + ENDIF + lcLog = This.ReadVariable("other","write_log") + This.lWriteLog = (VAL(m.lcLog) = 1) + + + + Endproc && ReadSettings + + +Enddefine + \ No newline at end of file diff --git a/capp.prg b/capp.prg new file mode 100644 index 0000000..5793dc5 --- /dev/null +++ b/capp.prg @@ -0,0 +1,275 @@ +*!* capp *!* +#INCLUDE COMUN.H +#INCLUDE SECURITY.H + +#DEFINE CRLF CHR(13) + CHR(10) + +*** ==================== CAPP ============================ *** +Define Class cApp As Custom + oSettings = Null + lError = .F. + cErrorMessage = '' + oLog = Null + oTrace = Null + lWriteLog = .F. && .T. = scrie in log pe disc + + * + Procedure Init + *Set Procedure To "app.prg" Additive + This.oSettings = Newobject("Settings","app.prg") && CREATEOBJECT("Settings") + This.oLog = Iif(Type('goLog') = 'O', goLog, Createobject("Log")) + Endproc && INIT + * + Procedure ProcessError(toHash) + Declare laErrors[1] + + LOCAL loHash + IF TYPE('toHash') = 'O' + loHash = toHash + ELSE + loHash = GetHash() + ENDIF + + lnErrorLines = Aerror(laErrors) + + lnError = Iif(loHash.HasProperty("nError"), loHash.GetValue("nError"), Transform(laErrors(1)) + ' ' + Transform(laErrors(5))) + lcMethod = loHash.GetValue("cMethod") + lnLine = loHash.GetValue("nLine") + lcError = Iif(loHash.HasProperty("cError"), loHash.GetValue("cError"), Transform(laErrors(2))) + lcCode = Iif(loHash.HasProperty("cCode"), loHash.GetValue("cCode"), Message(1) ) + lcCallStack = GetCallStack() + lcUserMessage = loHash.GetValue("cUserMessage") + + This.cErrorMessage = lcUserMessage + CRLF + CRLF + ; + 'Eroarea nr: ' + Transform(lnError) + CRLF + ; + 'Eroarea: ' + Transform(lcError) + CRLF + ; + 'Procedura: ' + Transform(lcMethod) + CRLF + ; + 'Linia: ' + Transform(lnLine) + CRLF + ; + 'Codul: ' + Transform(lcCode) + CRLF + ; + lcCallStack + + This.lError = .T. + This.Log(This.cErrorMessage) + + *!* MESSAGEBOX(THIS.cErrorMessage,0+16,'Eroare') + *!* IF MESSAGEBOX(THIS.cErrorMessage + CRLF + 'Doriti sa iesiti?',16+4,'Eroare') = 6 + *!* IF _vfp.StartMode = 0 + *!* SET STEP ON + *!* ELSE + *!* RETURN TO MASTER + *!* ENDIF + *!* ENDIF + Endproc && ProcessError + * + Procedure Log + Lparameters tcMessage, toTrace + LOCAL loTrace + + IF this.oSettings.lWriteLog + This.oLog.WriteLog(tcMessage) + ENDIF + loTrace = This.oTrace + + *!* 03.03.2010 + IF TYPE('toTrace') = 'O' + toTrace.Trace(tcMessage) + ELSE + IF TYPE('loTrace') = 'O' + loTrace.Trace(tcMessage) + ENDIF + ENDIF + *!* 03.03.2010 ^ + Endproc && Log + * + Function Gethost + Local lcValue + lcValue = This.oSettings.GetValue("HOST") + Return lcValue + Endfunc && GetHost + * + Function GetUser + Local lcValue + lcValue = This.oSettings.GetValue("USER") + Return lcValue + Endfunc && GetUser + * + Function GetPassword + Local lcValue + lcValue = This.oSettings.GetValue("PASSWORD") + Return lcValue + Endfunc && GetPassword + * + Function GetConnectionString + Local lcValue + lcValue = This.oSettings.GetValue("CONNECTIONSTRING") + Return lcValue + Endfunc && GetConnectionString + * + Function GetError + Return This.cErrorMessage + Endfunc && GetError + * + Function HasError + Return This.lError + Endfunc && HasError + * + Function IsLoggedIn + Return .T. + && RETURN THIS.oSettings.GetValue("IdUtilizator") > 0 + Endfunc && IsLoggedIn + + Function ShowError + Return Messagebox(This.cErrorMessage + CRLF + 'Doriti sa iesiti?',16+4,'Eroare') + Endfunc && ShowError + +Enddefine && cAPP + + +*** ==================== cSETTINGS ============================ *** +Define Class cSETTINGS As Custom + cIniFile = '' + cAppPath = '' + cIniText = '' + + + Proc Init + Local lcApppath, lcApplicationFile + If Type('gcAppPath') = 'C' + lcApppath = gcAppPath + Else + lcApppath = Addbs(Justpath(Sys(16, 0))) + + If 'PROGRAME'$Upper(lcApppath) + lcApppath = Strtran(lcApppath, 'PROGRAME\','') + Endif + Endif + This.cAppPath = lcApppath + + This.cIniFile = This.cAppPath + 'settings.ini' + + This.InitSettings() + This.ReadSettings() + Endproc + + Procedure InitSettings + Local lcInifile, lcIniText + lcIniText = This.cIniText + + lcInifile = This.cIniFile + If Empty(lcInifile) + Return + Endif + IF !FILE(lcInifile) + Strtofile(lcIniText, lcInifile) + ENDIF + Endproc && InitSettings + + Procedure ReadSettings + + Endproc && ReadSettings + + + *========================================== + Procedure SetVariable + Lparameters tcSection, tcVarname, tuValue + + Local lcSection, lcVarname, lcValue + + lcSection = Lower(Alltrim(tcSection)) + lcVarname = Lower(Alltrim(tcVarname)) + lcValue = Transform(tuValue) + SetIni(This.cIniFile, lcSection, lcVarname, lcValue) + + Endproc && SetVariable + + *========================================== + Procedure ReadVariable + Lparameters tcSection, tcVarname + + Local lcSection, lcVarname, lcValue + + lcSection = Lower(Alltrim(tcSection)) + lcVarname = Lower(Alltrim(tcVarname)) + + lcValue = GetIni(This.cIniFile, lcSection, lcVarname) + lcValue = Nvl(lcValue, '') + + Return lcValue + Endproc && ReadVariable + + Function GetValue + Lparameters tcSetting + + Local lcSetting, luValue + lcSetting = "THIS." + tcSetting + luValue = '' + If Type(lcSetting) # 'U' + luValue = &lcSetting + Endif + Return luValue + + Endfunc + + + Procedure SetValue + Lparameters tcSetting, tuValue + + Local lcSetting, luValue + lcSetting = "THIS." + tcSetting + luValue = tuValue + If Type(lcSetting) # 'U' + &lcSetting = luValue + Endif + + Endproc + + Function DecryptPassword As Character + Lparameters tcPassword + Local lcPassword + + lcPassword = Alltrim(Strconv(Alltrim(m.tcPassword),14)) + lcPassword = This.EncryptDecrypt(m.lcPassword, ENCRYPTKEY, "decrypt","blowfish") + + Return m.lcPassword + Endfunc + + *!* EncryptDecrypt + *!* EX: EncryptDecrypt("text to encrypt", "encrypt key", "encrypt") + *!* EX: EncryptDecrypt("text to decrypt", "decrypt key", "decrypt") + *!* EX: EncryptDecrypt("text to encrypt", "encrypt key", "encrypt","blowfish") + Function EncryptDecrypt + Lparameters tcText, tcPassword, tcMode, tcAlgorithm + && tcMode : ENCRYPT/DECRYPT + Local lcAlgorithm,lcReturn, lcString, lcPWD + Local loException As Exception + m.lcString = tcText + m.lcPWD = tcPassword + m.lcReturn = "" + lcAlgorithm = "" + If Type('tcAlgorithm') = 'C' + lcAlgorithm = tcAlgorithm + Endif + If lcAlgorithm = "blowfish" + If Upper(Alltrim(Transform(tcMode))) = "ENCRYPT" + lcReturn=Encrypt(m.lcString, m.lcPWD,4,0) + Else + Try + lcReturn=decrypt(m.lcString, Alltrim(m.lcPWD),4,0) + Catch To loException + If loException.ErrorNo=2028 + golog.Log("S-a incercat decriptarea unui text care nu a fost generat cu algoritmul de criptare selectat.",Program()) + Else + golog.Log(loException.Message,Program()) + Endif + Endtry + Endif + Endif + *!* 18.03.2008 : am scos chr(0) de la sfarsitul textului decriptat + If At(Chr(0),m.lcReturn) > 0 And Upper(Alltrim(Transform(tcMode))) != "ENCRYPT" + m.lcReturn = Substr(m.lcReturn, 1, At(Chr(0),m.lcReturn)-1) + Endif + *!* 18.03.2008 + Return m.lcReturn + Endfunc && EncryptDecrypt + +Enddefine && cSETTINGS diff --git a/changelog_flora2roa.txt b/changelog_flora2roa.txt new file mode 100644 index 0000000..3fbee07 --- /dev/null +++ b/changelog_flora2roa.txt @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/comun.h b/comun.h new file mode 100644 index 0000000..0cf1e0d --- /dev/null +++ b/comun.h @@ -0,0 +1,12 @@ +#IFNDEF COMUN_H +#DEFINE COMUN_H + + +#DEFINE LF CHR(10) +#DEFINE CR CHR(10) +#DEFINE CRLF CHR(13) + CHR(10) + +#DEFINE CT_INSUCCES -1 +#DEFINE CT_SUCCES 1 + +#ENDIF diff --git a/config.fpw b/config.fpw new file mode 100644 index 0000000..3c9cfab --- /dev/null +++ b/config.fpw @@ -0,0 +1 @@ +SCREEN=ON \ No newline at end of file diff --git a/docs/depanare_testare_flora2roa.md b/docs/depanare_testare_flora2roa.md new file mode 100644 index 0000000..5a0ad0e --- /dev/null +++ b/docs/depanare_testare_flora2roa.md @@ -0,0 +1,104 @@ +# Depanare si testare FLORA2ROA (headless, fara IDE) + +Implementarea in acest proiect a sistemului comun de depanare/testare VFP. Metoda generala si +capcanele complete: `D:\ROA\ROACONT\COMUN\docs\depanare_testare_vfp.md`, +`testare-ui-vfp.md`, `flux-editare-vfp-text.md`, `reguli_lucru.md`. + +## Ce contine `Teste\` + +Infrastructura (copiata din `COMUN\utile\Teste`, generica): + +- `ui_harness.prg` - proceduri de handshake intre testul VFP si orchestrator + (`HarnessLog`, `HarnessStep`, `HarnessReady`, `HarnessWaitContinue`, `HarnessDone`). +- `vfp_ui_harness.ps1` - orchestrator: precompileaza, lanseaza vfp9, conduce testul pas cu pas + pe semafoare si face o captura PNG dupa fiecare pas. Fereastra e mutata off-screen, deci nu + fura focusul si se poate lucra in paralel. +- `_precompile.ps1` - precompilare izolata a `.fxp`-ului testului (proces copil separat). + +Specific FLORA2ROA: + +- `test_init_env_auto.prg` - initializare NEINTERACTIVA a mediului, echivalentul lui `main.prg` + fara `DO FORM` / `READ EVENTS`. Dupa apel sunt disponibile `goApp`, `goLog`, `goConn`, + `goExecutor`, `gcAppPath`. Conectarea la Oracle e OPTIONALA (primul parametru). +- `test_helpers.prg` - `TestErrorHandler` (ON ERROR care logheaza si continua, fara MESSAGEBOX) + si aserturile `TestAssert` / `TestAssertEqual` / `TestRezultat`. +- `mock_amessagebox.prg` - `amessagebox` care returneaza direct valoarea butonului, ca + dialogurile modale sa nu blocheze rularea headless. +- `verifica_sintaxa.ps1` - compilare de verificare pentru toate `.prg`-urile, pe copii in TEMP. +- `text_din_bin.ps1` / `bin_din_text.ps1` - conversie `.scx`/`.vcx` <-> text (`_textcache\`). +- `ruleaza_teste.ps1` - ruleaza toata suita si da sumarul. +- `test_frm_import_ui.prg` - smoke: formularul real porneste, Init completeaza intervalul din + `settings.ini`, `Trace` scrie in `edtInfo`. +- `test_export_date.prg` - functional: `ExportDate()` citeste XML-urile din interval si + populeaza cursoarele (fara Oracle). +- `test_conectare_roa.prg` - verifica drumul CU conectare la Oracle: fie se conecteaza si + executa o interogare de proba, fie raporteaza esecul si iese controlat. NU e in suita + implicita (depinde de reteaua/serverul Oracle). + +## Comenzi uzuale + +```powershell +# toata suita (sintaxa + teste UI cu capturi) +powershell -ExecutionPolicy Bypass -File Teste\ruleaza_teste.ps1 + +# doar verificarea de sintaxa, dupa orice editare de .prg +powershell -ExecutionPolicy Bypass -File Teste\verifica_sintaxa.ps1 + +# un singur test, cu capturi +powershell -ExecutionPolicy Bypass -File Teste\vfp_ui_harness.ps1 ` + -TestPrg 'D:\PROIECTE\FLORA\FLORA2ROA\Teste\test_export_date.prg' -Steps @('afisat','importat') + +# un singur test, fara capturi (auto-continue la 30s pe pas) +& 'C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe' -A -T "D:\PROIECTE\FLORA\FLORA2ROA\Teste\test_export_date.prg" 20250601 20250630 + +# verificarea conexiunii la Oracle (datele din settings.ini) +& 'C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe' -A -T "D:\PROIECTE\FLORA\FLORA2ROA\Teste\test_conectare_roa.prg" +``` + +Rezultatele: `Teste\_log.txt` (linii `PASS:`/`FAIL:` si `REZULTAT:`), +capturi in `Teste\screenshots\`, erori runtime in `Teste\_erori_test.txt`. + +## Editarea formularului pe text + +```powershell +powershell -ExecutionPolicy Bypass -File Teste\text_din_bin.ps1 # binar -> _textcache\*.sc2 +# editezi _textcache\frm_import.sc2 BYTE-SAFE, in Windows-1252: +# $t = [IO.File]::ReadAllText($p, [Text.Encoding]::GetEncoding(1252)) +# [IO.File]::WriteAllText($p, $t, [Text.Encoding]::GetEncoding(1252)) +powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile _textcache\frm_import.sc2 -DryRun +powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile _textcache\frm_import.sc2 +``` + +Write-back-ul face fidelity check (bin -> text, comparat pe octeti) inainte de a atinge +binarul si refuza daca `frm_import.scx` e blocat de IDE sau de `flora2roa.exe`. + +## Un test nou in 5 pasi + +1. `SET SAFETY OFF` + `SET TALK OFF` ca PRIMA linie, apoi `PUBLIC gcUILog, gcSyncDir`. +2. `DO test_init_env_auto WITH .F.` (sau `.T.` cand testul chiar are nevoie de Oracle), apoi + `SET PROCEDURE TO ui_harness ADDITIVE` si `mock_amessagebox` ULTIMUL. +3. `DO FORM (gcAppPath + 'frm_import') NAME goImportFrm NOSHOW`, `WindowType = 0`, `Show()`. + Modal (`Show(1)`) nu returneaza si blocheaza testul. +4. Pe fiecare pas: actiunea din fluxul REAL al utilizatorului (metoda pe care o apeleaza + butonul, nu popularea directa a cursoarelor), aserturi cu `TestAssert`, apoi + `DO HarnessStep WITH , ''`. La final `DO HarnessDone WITH TestRezultat()` si `QUIT`. +5. Inregistreaza testul in lista `$suita` din `ruleaza_teste.ps1`. + +## Capcane confirmate in acest proiect + +- `ErrorHandler` din `main.prg` deschide `MESSAGEBOX` si face `SET STEP ON`: headless ar bloca + procesul la nesfarsit. De aceea `test_init_env_auto.prg` instaleaza `TestErrorHandler`. +- Compilarile repetate de `vfp9` din ACEEASI sesiune PowerShell esueaza tacut (procesul + porneste dar nu executa). `verifica_sintaxa.ps1` compileaza toate fisierele intr-o singura + rulare; harness-ul foloseste proces copil izolat pentru precompilare. +- `Set Exclusive On` din `main.prg` nu se pastreaza in teste (mediul de test deschide cursoare + partajate); daca un test are nevoie de comportamentul exact al aplicatiei, il seteaza el. +- Testele nu ruleaza in paralel intre ele: harness-ul isi omoara instantele `vfp9` proprii + inainte de fiecare lansare (filtrat pe linia de comanda; instantele straine nu sunt atinse). +- `settings.ini` decide folderele de import. Testele functionale depind de continutul din + `EXEMPLE\hotel` si `EXEMPLE\restaurant`; daca intervalul nu are fisiere, cursoarele raman goale. +- Un test care se conecteaza la Oracle face `SQLSETPROP(0, 'DispLogin', 3)` inainte de conectare: + altfel, cu date de acces gresite, driverul ODBC deschide un dialog de login care blocheaza + procesul headless la nesfarsit (simptom: proces viu, CPU 0%, log fara linii noi). +- `CreeazaNote()` si `ScrieNote()` scriu in ROA si NU pot fi testate fara Oracle. Bifa + "Nu scrie note contabile" (`chkTest.Value = 1`) opreste scrierea; testele o lasa activa. diff --git a/fisiere.prg b/fisiere.prg new file mode 100644 index 0000000..b2a6981 --- /dev/null +++ b/fisiere.prg @@ -0,0 +1,12 @@ +CLOSE DATABASES +SET DELETED ON +SET ANSI ON +SET EXACT ON + +lcdir = [E:\vali\MARITIMO_DBF\] +CD (m.lcDir) +lnFiles = ADIR(laFiles, '*.dbf') +FOR lnFile = 1 TO lnFiles + lcFile = lcDir + laFiles(lnFile,1) + USE (m.lcFile) IN 0 SHARED +ENDFOR \ No newline at end of file diff --git a/flora2roa.pj2 b/flora2roa.pj2 new file mode 100644 index 0000000..8b5bb4b --- /dev/null +++ b/flora2roa.pj2 @@ -0,0 +1,103 @@ +*-------------------------------------------------------------------------------------------------------------------------------------------------------- +* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! +*-------------------------------------------------------------------------------------------------------------------------------------------------------- +*< FOXBIN2PRG: Version="1.21" SourceFile="flora2roa.pjx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) +* +LPARAMETERS tcDir + +lcCurdir = SYS(5)+CURDIR() +CD ( EVL( tcDir, JUSTPATH( SYS(16) ) ) ) + +* +_Author = "" +_Company = "" +_Address = "" +_City = "" +_State = "" +_PostalCode = "" +_Country = "" +*-- +_Comments = "" +_CompanyName = " " +_FileDescription = " " +_LegalCopyright = "" +_LegalTrademark = "" +_ProductName = " " +_MajorVer = "2" +_MinorVer = "0" +_Revision = "5" +_LanguageID = "" +_AutoIncrement = "0" +* + + +* +*<.HomeDir = 'd:\proiecte\flora\flora2roa' /> + +FOR EACH loProject IN _VFP.Projects FOXOBJECT + loProject.Close() +ENDFOR + +STRTOFILE( '', '__newproject.f2b' ) +BUILD PROJECT flora2roa.pjx FROM '__newproject.f2b' +FOR EACH loProject IN _VFP.Projects FOXOBJECT + loProject.Close() +ENDFOR + +MODIFY PROJECT 'flora2roa.pjx' NOWAIT NOSHOW NOPROJECTHOOK + +loProject = _VFP.Projects('flora2roa.pjx') + +WITH loProject.FILES + .ADD('app.ico') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" /> + .ADD('app.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> + .ADD('capp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> + .ADD('comun.h') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> + .ADD('config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> + .ADD('frm_import.scx') && *< FileMetadata: Type="K" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> + .ADD('import.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> + .ADD('main.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> + .ADD('myapp.prg') && *< FileMetadata: Type="P" Cpid="1250" Timestamp="0" ID="0" ObjRev="544" User="" /> + .ADD('myutils.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> + .ADD('security.h') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> + .ADD('settings.ini') && *< FileMetadata: Type="T" Cpid="1250" Timestamp="0" ID="0" ObjRev="0" User="" /> + .ADD('vfpconnection_utils.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> + * + + .ITEM('__newproject.f2b').Remove() + + * + * + + * + .ITEM("settings.ini").Exclude = .T. + * + + * + .ITEM("comun.h").Type = 'T' + .ITEM(lcCurdir + 'config.fpw').Type = 'T' + .ITEM("security.h").Type = 'T' + * +ENDWITH + +WITH loProject + * + .SetMain("main.prg") + + .Icon = "app.ico" + .Debug = .F. + .Encrypted = .F. + *<.CmntStyle = 1 /> + *<.NoLogo = .F. /> + *<.SaveCode = .T. /> + *<.User = '' /> + .ProjectHookLibrary = '' + .ProjectHookClass = '' + * +ENDWITH + + +_VFP.Projects('flora2roa.pjx').Close() +*ERASE '__newproject.f2b' +CD (lcCurdir) +RETURN \ No newline at end of file diff --git a/flora2roa.txt b/flora2roa.txt new file mode 100644 index 0000000..6acdb44 --- /dev/null +++ b/flora2roa.txt @@ -0,0 +1 @@ +2.0.3 \ No newline at end of file diff --git a/frm_import.sc2 b/frm_import.sc2 new file mode 100644 index 0000000..4cb7f51 --- /dev/null +++ b/frm_import.sc2 @@ -0,0 +1,2259 @@ +*-------------------------------------------------------------------------------------------------------------------------------------------------------- +* (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 diff --git a/import.prg b/import.prg new file mode 100644 index 0000000..e69de29 diff --git a/main.prg b/main.prg new file mode 100644 index 0000000..ba99bb4 --- /dev/null +++ b/main.prg @@ -0,0 +1,132 @@ +#INCLUDE COMUN.H +#INCLUDE SECURITY.H +_screen.Icon= 'D:\PROIECTE\FLORA\FLORA2ROA\app.ico' +RELEASE MENU _Msysmenu + +Close Databases All +Set Deleted On +Set Exclusive On +Set Ansi On +Set Exact On +Set Century On +Set Date Dmy +Set Safety Off + +Private gcAppName, gcAppPath, gcTempPath + +Local lcMesaj, lcOnShutdown, llSucces +PRIVATE goApp as "MyApp" +PRIVATE goLog as "Log" +Local lcFile, lcFileI, i + +Local lcLibraryPath +Local loEx As Exception + +gcAppName = 'FLORA2ROA' +gcAppPath = Addbs(Justpath(Sys(16,0))) +gcTempPath = GETENV("TEMP") +SET DEFAULT TO (gcAppPath) + +lcOnShutdown="ShutDown()" +On Shutdown &lcOnShutdown +On Error ErrorHandler(Error(),Program(),Lineno()) + +SET PROCEDURE TO capp.prg ADDITIVE +SET PROCEDURE TO app.prg ADDITIVE +SET PROCEDURE TO myutils.prg ADDITIVE +SET PROCEDURE TO vfpconnection_utils.prg ADDITIVE +SET PROCEDURE TO myapp.prg ADDITIVE + +llSucces = .F. +lcLibraryPath = m.gcAppPath + "vfpconnection.fll" +If File(lcLibraryPath) + llSucces = .F. + Try + Set Library To (lcLibraryPath) Additive + llSucces = .T. + Catch To loEx + lcMesaj = 'vfpconnection ' + loEx.Message + ShowMessage(m.lcMesaj) + Endtry +ENDIF + +If m.llSucces + lcLibraryPath = m.gcAppPath + "vfpencryption.fll" + If File(lcLibraryPath) + llSucces = .F. + Try + Set Library To (lcLibraryPath) Additive + llSucces = .T. + Catch To loEx + lcMesaj = 'vfpencryption' + loEx.Message + ShowMessage(m.lcMesaj) + Endtry + Endif +ENDIF + +*********************** +PRIVATE goImportFrm, goConn, goExecutor +goImportFrm = NULL +goConn = CREATEOBJECT("oConn") +goExecutor = CREATEOBJECT("oExecutor") + +goLog = Createobject("Log", gcApppath + "log\log_" + gcAppName + "_" + Dtos(Date()) + ".txt") +goApp = Createobject("MyApp") + +*!* 02.03.2010 +SetConnectTimeout(goApp.oSettings.connect_timeout) && Default is 10 seconds +SetResponseTimeout(goApp.oSettings.response_timeout) && Default is 10 seconds +*!* 02.03.2010 ^ + +DO FORM frm_import NAME goImportFrm LINKED + +READ EVENTS + +SHUTDOWN() + +************************* +Procedure ShowMessage + Lparameters tcMessage + Messagebox(m.tcMessage) +Endproc +************************* +Function ErrorHandler(nError,cMethod,nLine) + Local lcErrorMsg,lcCodeLineMsg + + Wait Clear + lcErrorMsg=Message()+Chr(13)+Chr(13) + lcErrorMsg=lcErrorMsg+"Method: "+cMethod + lcCodeLineMsg=Message(1) + If Between(nLine,1,10000) And Not lcCodeLineMsg="..." + lcErrorMsg=lcErrorMsg+Chr(13)+"Line: "+Alltrim(Str(nLine)) + If Not Empty(lcCodeLineMsg) + lcErrorMsg=lcErrorMsg+Chr(13)+Chr(13)+lcCodeLineMsg + Endif + ENDIF + SET STEP ON + If Messagebox(lcErrorMsg,17,_Screen.Caption)#1 + On Error + Return .F. + Endif +Endfunc +************************* +Function Shutdown + Cleanup() + Quit +Endfunc +************************* +Function Cleanup + On Error + On Shutdown + Set Classlib To + Set Path To + Clear All + Close All + *POP MENU _msysmenu + Return +ENDFUNC + + + + + \ No newline at end of file diff --git a/myapp.prg b/myapp.prg new file mode 100644 index 0000000..e69de29 diff --git a/myutils.prg b/myutils.prg new file mode 100644 index 0000000..a973cb5 --- /dev/null +++ b/myutils.prg @@ -0,0 +1,1707 @@ +#INCLUDE COMUN.H + +*** ==================== LOG ============================ *** +Define Class Log As Custom + cLog = '' + cOutputFile = 'c:\log_' + Dtos(Date()) + '.txt' + lAdditive = .T. + * + Proc Init + Lparameters tcOutputfile, tlAdditive + + If !Empty(tcOutputfile) And Type('tcOutputFile') = 'C' + This.cOutputFile = tcOutputfile + Endi + If Pcount() = 2 And Type('tlAdditive') = 'L' + This.lAdditive = tlAdditive + Endif + + This.Log() + This.Log() + This.WRITELOG() + + Endproc + * + Proc Log + Lparameters tcMessage, tcProgram + Local lcLog + If Pcount() = 0 Or Type('tcMessage') # 'C' Or Empty(tcMessage) + lcLog = CRLF + Else + lcLog = Ttoc(Datetime()) + ' ' + Sys(0) + CRLF + tcMessage + CRLF + Endi + This.cLog = This.cLog + lcLog + Endproc + * + Proc ResetLog + This.cLog = '' + Endproc + * + Proc WRITELOG + Lpar tcMessage, tcOutputfile, tlAdditive + Local lcOutputfile, llAdditive, lcLog, lcLogDirectory + If !Empty(tcOutputfile) And Type('tcOutputFile') = 'C' + lcOutputfile = tcOutputfile + Else + lcOutputfile = This.cOutputFile + Endi + If Pcount() < 3 Or Type('tlAdditive') # 'L' + llAdditive = This.lAdditive + Else + llAdditive = tlAdditive + Endi + If Type('tcMessage') = 'C' + If Empty(tcMessage) + lcLog = CRLF + Else + lcLog = Ttoc(Datetime()) + ' ' + Sys(0) + CRLF + tcMessage + CRLF + Endi + Else + lcLog = This.cLog + Endi + If !Empty(lcOutputfile) + lcLogDirectory = Justpath(lcOutputfile) + If !Directory(lcLogDirectory) + Md (lcLogDirectory) + Endif + Strtofile(lcLog, lcOutputfile, llAdditive) + Endi + Endproc + * +Enddefine && LOG +* + + +Define Class oexecutor As Custom + nHandle = 0 + cSql = '' + cSchema = '' + cCursor = '' + nSucces = 0 + cEroare = '' + nEroare = 0 + cTime = '' + lReconnect = .T. && cred ca trebuie setat pe .F. inainte de o serie de proceduri executate cu tranzactie manuala + lShowError = .F. + lQuitOnError = .F. + lError = .F. + cErrorMessage = "" + lApplicationError = .F. && eroare generata de RAISE_APPLICATION_ERROR - afisez doar textul erorii. + + Declare aEroare[1] + + + * PROCEDURE INIT( tnHandle, tcSql, tcCursor ) + * Date : 06/10/2004, 12:18:21 + * author : marius.mutu + * description: + + ****** PARAMETER BLOCK ************** + * Parameters : 3 + * Parameter 1: + * Parameter 2: + * Parameter 3: + * + ******************************************* INCEPUT:INIT ******************************************* + Procedure Init + Lparameters tnHandle, tcSql, tcCursor + + + If Empty(tnHandle) + If Type('gnHandle') = 'N' + This.nHandle = gnHandle + Endif + Else + This.nHandle = tnHandle + Endif + + Endproc + ******************************************* SFARSIT: INIT ******************************************* + + + * PROCEDURE oExecute( tcSql, tcCursor,tlProgress, tnHandle ) + * Date : 06/10/2004, 12:16:11 + * author : marius.mutu + * description: + + ****** PARAMETER BLOCK ************** + * Parameters : 3 + * Parameter 1: + * Parameter 2: + * Parameter 3: + * + ******************************************* INCEPUT:oExecute ******************************************* + Procedure oExecute(toHash) + && tcSql, tcCursor, tnHandle + Local lnHandle, lcSql, lcSchema, lcCursor, lcTempCursor, lnSucces, laEroare, lcEroare, llReconnect, lnTip, lcTip, lcEroare, lShowError + Local loEx As Exception + + Declare laEroare[1] + lcEroare = '' + + Local lnTip + lnTip = 0 + + This.Oreset() + + lcSql = Iif(toHash.HasProperty("cSql"), toHash.GetValue("cSql"), Upper(This.cSql)) + lcSchema = Iif(toHash.HasProperty("cSchema"), toHash.GetValue("cSchema"), Upper(This.cSchema)) + lcCursor = Iif(toHash.HasProperty("cCursor"), toHash.GetValue("cCursor"), Upper(This.cCursor)) + lnHandle = Iif(toHash.HasProperty("nHandle"), toHash.GetValue("nHandle"), goConn.GetHandle()) + lShowError = Iif(toHash.HasProperty("lShowError"), toHash.GetValue("lShowError"), .T.) && daca se afiseaza mesajul de eroare + + * Strtofile(lcSql+Chr(13)+Chr(10),Addbs(Justpath(Sys(16,0)))+"log.txt",.T.) + && DACA AM TRANZACTIE MANUALA NU FAC RECONNECT + If SQLGetprop(lnHandle,"Transactions") = 2 && TRANZACTIE MANUALA + llReconnect = .F. + Else + llReconnect = .T. + Endif + + lnTip = Iif('ROLLBACK'$lcSql Or 'COMMIT'$lcSql,1,0) && daca ROLLBACK SAU COMMIT TIP = 1, ALTFEL 0 + + Do Case + Case lnTip = 0 + + lnSucces = -1 + Do While .T. + *!* daca exista SCHEMA => folosesc CURSORADAPTER (ar trebui sa folosesc mereu???) + If !Empty(lcSchema) + Local loC As CursorAdapter + loC = Createobject("cursoradapter") + loC.DataSourceType ="ODBC" + loC.Datasource = lnHandle + loC.SelectCmd = lcSql + loC.CursorSchema = lcSchema + loC.Alias = lcCursor + Use In (Select(lcCursor)) + llSucces = loC.CursorFill(!Empty(lcSchema)) + If llSucces + loC.CursorDetach() + Endif + lnSucces = Iif(llSucces, CT_SUCCES, CT_INSUCCES) + Else + *!* PENTRU SQLEXEC ASINCRON - DO WHILE PANA SE TERMINA EXECUTIA + Do While .T. + Try + lnSucces = SQLExec(lnHandle, lcSql, lcCursor) + Catch To loEx + lnSucces = CT_INSUCCES + Endtry + + If lnSucces = 0 + * + Else + Exit + Endif + Enddo + + lnSucces = Iif(lnSucces > 0, CT_SUCCES, CT_INSUCCES) + Endif + + If lnSucces = CT_SUCCES + If Used(lcCursor) + lcTempCursor = Sys(2015) + Use Dbf(lcCursor) In 0 Again Shared Alias (lcTempCursor) + Use In (lcCursor) + Use Dbf(lcTempCursor) In 0 Again Alias (lcCursor) + Use In (lcTempCursor) + Endif + Exit + Else + Release laEroare + Declare laEroare(1) + lnEroare1 = 0 + lnEroare2 = 0 + lcTextEroare = [] + lnHandle = 0 + llEroare = .F. + + Aerror(laEroare) + If Alen(laEroare) > 1 + lnEroare1 = laEroare[1] + lnEroare2 = laEroare[5] + lcTextEroare = laEroare[3] + This.cEroare = lcTextEroare + lcTextEroare = This.oPrelucrareEroare() + lnHandle = laEroare[6] + llEroare = .T. + Endif + + goApp.ProcessError(GetHash("lShowError=>" + Iif(lShowError, "1", "0") + "??lApplicationError=>" + Iif(This.lApplicationError, "1", "0") + "??cError=> " + lcTextEroare + "??cUserMessage=>" + lcSql)) + + This.lError = goApp.HasError() + This.cErrorMessage = goApp.GetError() + This.nSucces = lnSucces + This.cEroare = This.cErrorMessage + This.nEroare = Iif(Alen(laEroare)>=5,laEroare[5],0) + + + If llReconnect And lnEroare1 = 1526 And Inlist(lnEroare2,12152,3114,12560) && 12512 = TNS: UNABLE TO SEND BREAK MESSAGE; 3114 = NOT CONNECTED TO ORACLE; 12560 = PROTOCOL ADAPTER ERROR + Do While lnRaspuns = .T. && conectare + lnRaspuns = AMESSAGEBOX('Eroare de conectare.' + Chr(13) + lcTextEroare + Chr(13) + 'Doriti reconectare?',4+32,'Eroare') && retry = 4; cancel = 2 + If lnRaspuns = 6 + + lnSucces = goConn.Connect() + + If lnSucces = CT_INSUCCES + + Release laEroare + Loop + Else + Exit + Endif + Else + && daca nu doresc conectare atunci ies din program + Return To Master + Endif && lnRaspuns = 6 + Enddo && conectare + + Loop && daca am iesit cu un handle valid intru din nou in loop si execut din nou comanda + Endif && lnEroare1 = 1526 AND INLIST(lnEroare2,12152,3114,12560) + + Exit + Endif && lnSucces = CT_INSUCCES + + Enddo && .T. + + Case lnTip = 1 + If 'ROLLBACK'$lcSql + lnSucces = Sqlrollback(lnHandle) + Else + lnSucces = Sqlcommit(lnHandle) + Endif + + If lnSucces < 0 + goApp.ProcessError() + This.lError = goApp.HasError() + This.cErrorMessage = goApp.GetError() + This.nSucces = lnSucces + This.cEroare = This.cErrorMessage + This.nEroare = Iif(Alen(laEroare)>=5,laEroare[5],0) + Endif + Endcase + + && loghez sql + If lnSucces > 0 + goApp.Log(lcSql) + ELSE + SET STEP ON + Endif + Return Iif(lnSucces > 0, CT_SUCCES, CT_INSUCCES) + + Endproc + ******************************************* SFARSIT: oExecute ******************************************* + + *!* salveaza rezultatul unei functii in variabila data ca referinta + *!* intoarce SUCCES = (1,-1) + *!* lnSucces = oFunction2Value("MyFunction(MyParam1, MyParam2)", @pnReturnValue) + Function oFunction2Value + Lparameters tcFunction, tuRetValue + + lcSql = "select " + tcFunction + " as retvalue from dual" + lcCursor = Sys(2015) + lcField = lcCursor + ".retvalue" + + lnSucces = This.oExecute(lcSql, lcCursor) + + If lnSucces = CT_SUCCES + tuRetValue = Evaluate(lcField) + If Used(lcCursor) + Use In (lcCursor) + Endif + Endif + + Return lnSucces + + Endfunc && oFunction2Value + ******************************************* SFARSIT: oFunction2Value ******************************************* + + *!* salveaza rezultatul unui select in variabila data ca referinta + *!* daca se intorc mai multe randuri - eroare + *!* intoarce SUCCES = (1,-1) + *!* lnSucces = oSelect2Value("Select sum(cantitate) from tabel where conditie", @pnReturnValue) + Function oSelect2Value + Lparameters tcSql, tuRetValue + + Local lcSelect, lcSql, lcCursor, lcField, lnSucces + + lcSelect = Select() + lcSql = m.tcSql + lcCursor = Sys(2015) + + lnSucces = This.oExecute(GetHash('cSql=>' + m.lcSql + '??cCursor=>' + m.lcCursor)) + + If m.lnSucces = CT_SUCCES + If Reccount(lcCursor) > 1 + goApp.ProcessError(GetHash("cUserMessage=>Au rezultat mai multe valori. Se astepta o singura valoare.")) + lnSucces = CT_INSUCES + Else + lcField = lcCursor + '.' + Field(1) + tuRetValue = Evaluate(lcField) + Endif + Use In (SELECT(m.lcCursor)) + Endif + + Select (m.lcSelect) + Return lnSucces + Endfunc &&oSelect2Value + ******************************************* SFARSIT: oFunction2Value ******************************************* + + ******************************************* INCEPUT: oPrelucrareEroare ******************************************* + && Prelucreaza mesajul de eroare : daca este intre ORA-20000 si ORA-20999 atunci afiseaza doar textul erorii + Function oPrelucrareEroare + Local lcTextEroare + lcTextEroare = This.cEroare + + If Like('*ORA-20???:*',lcTextEroare) + This.lApplicationError = .T. + + lnPozi=At("ORA-20",lcTextEroare)+11 + lnPozf=At("ORA",lcTextEroare,2) + lcTextEroare=Substr(lcTextEroare,lnPozi,lnPozf-lnPozi) + *!* ELSE + *!* lnPozf=At("ORA-",lcTextEroare,3) + *!* lcTextEroare=Substr(lcTextEroare,1,lnPozf-1)+[...] + Endif + Return lcTextEroare + Endfunc && oPrelucrareEroare + ******************************************* SFARSIT: oPrelucrareEroare ******************************************* + * PROCEDURE oReset( ) + * Date : 06/10/2004, 12:21:06 + * author : marius.mutu + * description: + + ****** PARAMETER BLOCK ************** + * Parameters : 0 + * + ******************************************* INCEPUT:oReset ******************************************* + Procedure Oreset( ) + With This + .aEroare = .F. + .nSucces = 0 + .cSql = '' + .cCursor = '' + Endwith + Endproc + ******************************************* SFARSIT: oReset ******************************************* + +Enddefine && oExecutor + + + + +*** oConn =========================================================================================== +Define Class oConn As Custom + + cHost = '' + cUser = '' + cPassword = '' + cConnectionString = '' + nHandle = 0 + cEroare = '' + Declare aEroare[7] + lShowError = .F. + lReconnect = .F. && Daca llReconnect = .T. se apeleaza InitSesiune din oInit_Optiuni.prg + lError = .F. + cErrorMessage = '' + + *** IsConnected =========================================================================================== + Function IsConnected + Local llConnected + llConnected = This.nHandle > 0 + Return llConnected + Endfunc && IsConnected + + *** GetHandle =========================================================================================== + Function GetHandle + Return This.nHandle + Endfunc && GetHandle + + *** Connect =========================================================================================== + Procedure Connect + Lparameters tcHost, tcUser, tcPassword, tlReconnect + + *!* tlReconnect = .T. daca se apeleaza connect la reconectare (atunci se apeleaza si InitSesiune()) + Local lnSucces, laEroare, lcString, lcHost, lcUser, lcPassword, lcSql, lcConnectionString + Local loEx As Exception + + If Pcount() < 3 Or Type('tcHost') # 'C' Or Type('tcUser') # 'C' Or Type('tcPassword') # 'C' + This.cHost = goApp.oSettings.GetValue("HOST") + This.cUser = goApp.oSettings.GetValue("USER") + This.cPassword = goApp.oSettings.GetValue("PASSWORD") + This.cConnectionString = goApp.oSettings.GetValue("CONNECTIONSTRING") + Else + This.cHost = tcHost + This.cUser = tcUser + This.cPassword = tcPassword + Endif + + lcHost = This.cHost + lcUser = This.cUser + lcPassword = This.cPassword + lcConnectionString = This.cConnectionString + + If Pcount() < 4 Or Type('tlReconnect') # 'L' + llReconnect = This.lReconnect + Else + llReconnect = tlReconnect + Endif + + SQLSetprop(0,"DispLogin",3) + If Empty(m.lcConnectionString) + lcString="dsn="+Alltrim(lcHost)+";Uid="+Alltrim(lcUser)+";Pwd="+Alltrim(lcPassword)+";" + Else + lcString = m.lcConnectionString + Endif + lcString = Textmerge(m.lcString) + + If !This.IsConnected() + Try + This.nHandle = Sqlstringconnect(lcString) + Catch To loEx + This.nHandle = -1 + This.ProcessError(loEx.ErrorNo, loEx.Procedure, loEx.Lineno) + Endtry + goApp.Log("Conectare, Handle = " + Alltrim(Transform(This.nHandle))) + Endif + + If Type('gnHandle') = 'N' + gnHandle = This.nHandle + Endif + + If Type('goExecutor') = 'O' + goExecutor.nHandle = This.nHandle + Endif + + If This.IsConnected() + lnSucces = CT_SUCCES + + *** SETARI SESIUNE DUPA CONECTARE + This.postConn() + + *!* IF llReconnect + *!* lnSucces = InitSesiune() && IN oInit_Optiuni.prg + *!* ENDIF + Else + lnSucces = CT_INSUCCES + This.ProcessError() + Endif + + Return lnSucces + + Endproc && Connect + *** END Connect =========================================================================================== + + *** Disconnect =========================================================================================== + Procedure Disconnect + + Local loEx As Exception, lnSucces, lnHandle, llException + lnSucces = CT_SUCCES + llException = .F. + + If This.IsConnected() + lnHandle = This.GetHandle() + *!* TRY + lnSucces = SQLDisconnect(lnHandle) + lnSucces = Iif(lnSucces > 0, CT_SUCCES, CT_INSUCCES) + *!* CATCH TO loEx + *!* lnSucces = CT_INSUCCES + *!* llException = .T. + *!* THIS.ProcessError(loEx.ERRORNO, loEx.PROCEDURE, loEx.LINENO) + *!* ENDTRY + + If lnSucces = CT_INSUCCES + && daca am prins exceptia s-a inregistrat deja eroarea + If !llException + This.ProcessError() + Endif + Else + This.nHandle = -1 + + If Type('gnHandle') = 'N' + gnHandle = This.nHandle + Endif + + If Type('goExecutor') = 'O' + goExecutor.nHandle = This.nHandle + Endif + + Endif + Endif + + If lnSucces > 0 + goApp.Log("Deconectare, Handle = " + Alltrim(Transform(m.lnHandle))) + Endif + + Return Iif(lnSucces > 0, CT_SUCCES, CT_INSUCCES) + + Endproc && + *** END Disconnect =========================================================================================== + + *!*================================================================= + Procedure Destroy + This.Disconnect() + Endproc && DESTROY + + *!*================================================================= + Procedure Error(nError,cMethod,nLine) + This.ProcessError(nError,cMethod,nLine) + Endproc && ERROR + + *** ProcessError =========================================================================================== + Procedure ProcessError + Lparameters nError,cMethod,nLine + + + Local loHash + loHash = GetHash() + If Pcount() = 3 + loHash.SetValue("nError", nError) + loHash.SetValue("cMethod", cMethod) + loHash.SetValue("nLine", nLine) + Endif + + If Type('goApp') = 'O' + goApp.ProcessError(loHash) + + This.cErrorMessage = goApp.GetError() + This.lError = goApp.HasError() + Endif + + Endproc && ProcessError + *** END ProcessError =========================================================================================== + + *** postConn =========================================================================================== + Procedure postConn + *** PUNCT ZECIMAL + Local lcSql, loHash, lnSucces + lnSucces = CT_SUCCES + If goApp.oSettings.GetValue("database") = 'ORACLE' + lcSql=[ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ".,"] + loHash= GetHash("cSql=>" + lcSql) + lnSucces = goExecutor.oExecute(loHash) + Endif + Return lnSucces + + Endproc && postConn + *** END postConn =========================================================================================== + + +Enddefine && oConn +*** END oConn =========================================================================================== + +* ===================== GetHash ==================================== +* INTOARCE UN OBIECT DE TIP HASH CREAT DIN tcPropertyValueList +*!* loHash = GetHash([cselect=>select id, name from test??cwhere=>id=pnId??corder=>name]) +*!* lnMembers = AMEMBERS(laMembers, loHash) +*!* FOR i = 1 TO lnMembers +*!* MESSAGEBOX(loHash.&laMembers(i)) +*!* ENDFOR +* ================================================================== +Function GetHash + Lparameters tcPropertyValueList + + Local loHash + + loHash = Createobject("MyHash", tcPropertyValueList) + Return loHash + +Endfunc + + +Define Class MyHash As Collection + + *!* sir "proprietate1=>valoare1??proprietate2=>valoare2" + *!* genereaza proprietati si valori din sirul initial + Procedure Init + Lparameters tcPropertyValueList + + Local i, lnProperties, lcPropertyValue, lcValue, luValue + Local lnPos + Declare laLinii[1] + + && tcPropertyValueList = [cselect =>ala bala portocala??cfiltru=>un filtru - atentie la spatiile din stanga valorii] + If Type('tcPropertyValueList') = 'C' And !Empty(tcPropertyValueList) + + lnProperties = Alines(laLinii,tcPropertyValueList,4,'??') + For i = 1 To lnProperties + lcPropertyValue = Alltrim(laLinii[i]) + lnPos = At('=>', lcPropertyValue) + If lnPos > 0 + lcProperty = Left(lcPropertyValue,lnPos - 1) + lcValue = Substr(lcPropertyValue, lnPos + 2) + luValue = This.GetDefaultValue(lcProperty, lcValue) + This.SetValue(lcProperty, luValue) + Endif + Endfor + + Endif + Endproc && INIT + + *!* Seteaza valoarea unei proprietati daca exista sau adauga proprietatea, si intoarce valoarea + Procedure SetValue + Lparameters tcProperty, tuValue + + Local loC As Collection + loC = This + + If Type('loc(tcProperty)') <> 'U' + loC(tcProperty) = tuValue + Else + loC.Add(tuValue, tcProperty) + Endif + + Return loC(tcProperty) + + Endproc && SetValue + + *!* Intoarce valoarea unei proprietati daca exista, altfel valoarea empty() corespunzator tipului proprietatii + Function GetValue + Lparameters tcProperty + + Local luValue + Local loC As Collection + loC = This + + If Type('loC(tcProperty)') <> 'U' + luValue = loC(tcProperty) + Else + luValue = loC.GetDefaultValue(tcProperty) + Endif + Return luValue + + Endfunc && GetValue + + *!* Intoarce valoarea empty() a unei proprietati dupa tip = prima litera din numele proprietatii daca nu primeste decat tcProperty + *!* Converteste tcValue la tipul variabilei tcProperty daca tcValue e primit ca parametru + Function GetDefaultValue + Lparameters tcProperty, tcValue + + Local lcType, luValue + luValue = "" + lcType = Upper(Left(tcProperty,1)) + llEmptyValue = Iif(Pcount() = 1, .T., .F.) + + Do Case + Case lcType $ "CM" + luValue = Iif(llEmptyValue, '', tcValue) + Case lcType $ "NIF" + luValue = Iif(llEmptyValue, 0, Val(tcValue)) + Case lcType = "T" + luValue = Iif(llEmptyValue, Dtot({}), Ctot(tcValue)) + Case lcType = "D" + luValue = Iif(llEmptyValue, {}, Ctod(tcValue)) + Case lcType = "L" + luValue = Iif(llEmptyValue, .F., Iif(tcValue = "1" Or Upper(tcValue) = "T" Or Upper(tcValue) = '.T.' Or Upper(tcValue) = 'YES', .T., .F.)) + Otherwise + luValue = "" + Endcase + + Return luValue + Endfunc && GetDefaultValue + + *!* Intoarce .T. daca exista proprietatea + Function HasProperty + Lparameters tcProperty + + Local llReturn + Local loC As Collection + loC = This + llReturn = .F. + + If Type('loC(tcProperty)') <> 'U' + llReturn = .T. + Endif + + Return llReturn + + Endfunc && HasProperty + +Enddefine +* ===================== MyHash ==================================== +* OBIECT EMULARE HASH +* loHash = GetHash([cselect=>select id, name from test??cwhere=>id=pnId??corder=>name]) +* ================================================================== +Define Class MyHashOld As Custom + + + Procedure ReadMe + If .F. + Local loHash + loHash = Createobject("MyHash", [cselect=>select id, name from test??cwhere=>id=pnId??corder=>name]) + Endif + Endproc && readme + + *!* sir "proprietate1=>valoare1??proprietate2=>valoare2" + *!* genereaza proprietati si valori din sirul initial + Procedure Init + Lparameters tcPropertyValueList + + Local i, lnProperties, lcPropertyValue, lcValue, luValue + Local lnPos + Declare laLinii[1] + + && tcPropertyValueList = [cselect =>ala bala portocala??cfiltru=>un filtru - atentie la spatiile din stanga valorii] + If Type('tcPropertyValueList') = 'C' And !Empty(tcPropertyValueList) + *!* lnProperties = GETWORDCOUNT(tcPropertyValueList,'??') + *!* FOR i = 1 TO lnProperties + *!* lcPropertyValue = ALLTRIM(GETWORDNUM(tcPropertyValueList,i,'??')) + *!* IF AT('=>', lcPropertyValue) > 0 + *!* lcProperty = GETWORDNUM(lcPropertyValue, 1, '=>') + *!* lcValue = GETWORDNUM(lcPropertyValue, 2, '=>') + *!* luValue = THIS.GetDefaultValue(lcProperty, lcValue) + *!* THIS.SetValue(lcProperty, luValue) + *!* ENDIF + *!* ENDFOR + lnProperties = Alines(laLinii,tcPropertyValueList,4,'??') + For i = 1 To lnProperties + lcPropertyValue = Alltrim(laLinii[i]) + lnPos = At('=>', lcPropertyValue) + If lnPos > 0 + lcProperty = Left(lcPropertyValue,lnPos - 1) + lcValue = Substr(lcPropertyValue, lnPos + 2) + luValue = This.GetDefaultValue(lcProperty, lcValue) + This.SetValue(lcProperty, luValue) + Endif + Endfor + + Endif + Endproc && INIT + + *!* Seteaza valoarea unei proprietati daca exista sau adauga proprietatea, si intoarce valoarea + Procedure SetValue + Lparameters tcProperty, tuValue + + If Type('THIS.&tcProperty') <> 'U' + This.&tcProperty = tuValue + Else + This.AddProperty(tcProperty, tuValue) + Endif + + Return This.&tcProperty + + Endproc && SetValue + + *!* Intoarce valoarea unei proprietati daca exista, altfel valoarea empty() corespunzator tipului proprietatii + Function GetValue + Lparameters tcProperty + + Local lcProperty, luValue + lcProperty = 'THIS.' + tcProperty + + If Type('THIS.&tcProperty') <> 'U' + luValue = This.&tcProperty + Else + luValue = This.GetDefaultValue(tcProperty) + Endif + Return luValue + + Endfunc && GetValue + + *!* Intoarce valoarea empty() a unei proprietati dupa tip = prima litera din numele proprietatii daca nu primeste decat tcProperty + *!* Converteste tcValue la tipul variabilei tcProperty daca tcValue e primit ca parametru + Function GetDefaultValue + Lparameters tcProperty, tcValue + + Local lcType, luValue + luValue = "" + lcType = Upper(Left(tcProperty,1)) + llEmptyValue = Iif(Pcount() = 1, .T., .F.) + + Do Case + Case lcType $ "CM" + luValue = Iif(llEmptyValue, '', tcValue) + Case lcType $ "NIF" + luValue = Iif(llEmptyValue, 0, Val(tcValue)) + Case lcType = "T" + luValue = Iif(llEmptyValue, Dtot({}), Ctot(tcValue)) + Case lcType = "D" + luValue = Iif(llEmptyValue, {}, Ctod(tcValue)) + Case lcType = "L" + luValue = Iif(llEmptyValue, .F., Iif(tcValue = "1" Or Upper(tcValue) = "T" Or Upper(tcValue) = '.T.' Or Upper(tcValue) = 'YES', .T., .F.)) + Otherwise + luValue = "" + Endcase + + Return luValue + Endfunc && GetDefaultValue + + *!* Intoarce .T. daca exista proprietatea + Function HasProperty + Lparameters tcProperty + + Local lcProperty, llReturn + lcProperty = 'THIS.' + tcProperty + llReturn = .F. + + If Type('THIS.&tcProperty') <> 'U' + llReturn = .T. + Endif + + Return llReturn + + Endfunc && HasProperty + +Enddefine && Hash + + + +***--------------------------------- +Function AMESSAGEBOX + Lparameters tcMessage, tnDialogBoxType, tcTitle, tcFont, tnTimeOut ,tnTimeoutValue + + Local loMessage, lnReturn, lcMessageboxForm + + *!* *!* LOGHEZ ERORILE + *!* IF TYPE('goLog') = 'O' AND 'ERROR'$UPPER(tcMessage) OR 'EROARE'$UPPER(tcMessage) OR 'ORA-'$UPPER(tcMessage) + *!* goLog.LOG(tcMessage,PROGRAM()) + *!* ENDIF + If Type('tnDialogBoxType') # 'N' + tnDialogBoxType = 0 + Endif + + If Type('tcTitle') # 'C' + tcTitle = '' + Endif + + If Type('gcNumeProgram') = 'C' And gcNumeProgram = 'ROASTART' + lcMessageboxForm = "messagebox_form_desktop" && desktop .T. + Else + lcMessageboxForm = "messagebox_form" + Endif + If !'MESSAGEBOX'$Upper(Set("Classlib")) + If Type('lnTimeOut') = 'N' And lnTimeOut # 0 + lnReturn = Messagebox(tcMessage, tnDialogBoxType, tcTitle, tnTimeOut) + Else + lnReturn = Messagebox(tcMessage, tnDialogBoxType, tcTitle) + Endif + Else + loMessage = Newobject(lcMessageboxForm, "MessageBox.vcx", "", tcMessage, tnDialogBoxType, tcTitle, tcFont, tnTimeOut ,tnTimeoutValue) + loMessage.Show(1) + lnReturn = loMessage.IDOpcion + Endif + + + Return lnReturn + +Endfunc && amessagebox +***--------------------------------- + + +Function sir2array + Lparameters tcSir, taArray, tcSeparator + + Local lcSeparator, lnValues, i, lcValue, luValue, lnPos + + External Array taArray + + If Empty(tcSeparator) + lcSeparator = ';' + Else + lcSeparator = tcSeparator + Endif + + lnValues = Alines(taArray, tcSir, 4, lcSeparator) + + Return lnValues + +Endfunc && sir2array + + + +***--------------------------------------------------------------------- +Procedure OPEN_DEFAULT_APP + Parameters tcfilename + + Declare Integer ShellExecute In shell32.Dll ; + INTEGER hndWin, ; + STRING cAction, ; + STRING cFileName, ; + STRING cParams, ; + STRING cDir, ; + INTEGER nShowWin + cFileName = tcfilename + cAction = "open" + ShellExecute(0,cAction,cFileName,"","",1) + +Endproc && OPEN_DEFAULT_APP + + + +Procedure BringWindowTop + Local lnHwnd + + #Define GW_CHILD 5 && 0x00000005 + #Define GW_HWNDNEXT 2 && 0x00000002 + #Define SW_MAXIMIZE 3 && 0x00000003 + #Define SW_NORMAL 1 && 0x00000002 + #Define WAIT_OBJECT_0 0 && 0x00000000 + + Declare Integer CloseHandle In Kernel32 Integer hObject + Declare Integer BringWindowToTop In Win32API Integer HWnd + Declare Integer GetDesktopWindow In User32 + *!* DECLARE INTEGER GetProp IN User32 INTEGER HWND, STRING lpString + Declare Integer GetWindow In User32 Integer HWnd, Integer uCmd + *!* DECLARE INTEGER SHOWWINDOW IN Win32API INTEGER HWND, INTEGER nCmdShow + + lnHwnd = GetWindow(GetDesktopWindow(), GW_CHILD) + BringWindowToTop(lnHwnd) + + CloseHandle(lnHwnd) + + Clear Dlls "BringWindowToTop", "GetDesktopWindow", "GetWindow", "CloseHandle" +Endproc + + + +*!*=============================================================== +Procedure newguid + Local lcPK,lcBuffer,i,lnHex,lnUpper,lnLower + *!* DECLARE INTEGER CoCreateGuid IN OLE32.DLL STRING @lcBuffer + lcBuffer=Space(17) + lcPK=Space(0) + If CoCreateGuid(@lcBuffer) = 0 + For i=1 To 16 + lnHex=Asc(Substr(lcBuffer,i,1)) + lnUpper=Int(lnHex/16) + lnLower=lnHex-(lnUpper*16) + lcPK=lcPK+Substr('0123456789ABCDEF',lnUpper+1,1)+; + SUBSTR('0123456789ABCDEF',lnLower+1,1) + Endfor + Endif + Return lcPK +Endproc + +*!*=============================================================== +Procedure GETCALLSTACK + Local nPos + nPos=Program(-1) - 2 + + + Local cCallStack,i + cCallStack="" + For i=nPos To 1 Step -1 + cCallStack=cCallStack + Program(i) + Chr(13)+Chr(10) + Endfor + + + Return cCallStack + +Endproc && GETCALLSTACK + +Function setini + Parameter pcinifile, pcsection, ; + pcvar, pcval + Private lasect + Private lavars + Private All Like j* + Dimension lasect[1], lavars[ 1,3] + jlsuccess = .T. + If .Not. Empty(pcinifile) + jcfilename = Iif(At('.', ; + pcinifile) > 0, ; + pcinifile, ; + pcinifile + ; + '.INI') + pcsection = Alltrim(pcsection) + pcvar = Alltrim(pcvar) + pcval = Alltrim(pcval) + If File(jcfilename) + jnhandle = Fopen(jcfilename, ; + 2) + If jnhandle < 0 + jlsuccess = .F. + = Messagebox( ; + 'Unable to open file: ' + ; + jcfilename, ; + 'File Open Error', ; + 0) + Return jlsuccess + Endif + Else + jnhandle = -1 + Endif + = buildarray(jnhandle, ; + @lasect,@lavars) + If jnhandle > -1 + = Fclose(jnhandle) + Endif + jsuccess = buildini(jcfilename, ; + pcsection,pcvar, ; + pcval,@lasect, ; + @lavars) + Else + jlsuccess = .F. + Endif + Return jlsuccess +Endfunc && setini +*!* +Function buildini + Parameter pcfilename, pcsection, ; + pcvar, pcval, pasect, ; + pavars + Private All Like j* + jlsuccess = .T. + jnfhandle = 0 + jlfoundvar = .F. + jnfound = 0 + If .Not. Empty(pasect) + For jncount = 1 To ; + ALEN(pasect, 1) + If Upper(pasect(jncount)) == ; + UPPER(pcsection) + jnfound = jncount + Exit + Endif + Endfor + Endif + If jnfound > 0 + For jncount = 1 To ; + ALEN(pavars, 1) + If pavars(jncount,1) == ; + pcvar .And. ; + pavars(jncount,3) == ; + jnfound + pavars[ jncount, ; + 2] = pcval + jlfoundvar = .T. + Exit + Endif + Endfor + If .Not. jlfoundvar + If .Not. ; + EMPTY(pavars(1)) + jnlen2 = Alen(pavars, ; + 1) + 1 + Dimension pavars[ ; + jnlen2, ; + 3] + Else + jnlen2 = 1 + Endif + pavars[ jnlen2, 1] = ; + pcvar + pavars[ jnlen2, 2] = ; + pcval + pavars[ jnlen2, 3] = ; + jnfound + Endif + Else + If .Not. Empty(pasect(1)) + jnlen = Alen(pasect, 1) + ; + 1 + Dimension pasect[ ; + jnlen] + Else + jnlen = 1 + Endif + pasect[ jnlen] = pcsection + If .Not. Empty(pavars(1)) + jnlen2 = Alen(pavars, ; + 1) + 1 + Dimension pavars[ ; + jnlen2, 3] + Else + jnlen2 = 1 + Endif + pavars[ jnlen2, 1] = pcvar + pavars[ jnlen2, 2] = pcval + pavars[ jnlen2, 3] = jnlen + Endif + If File(pcfilename) + jcoldfile = Substr(pcfilename, ; + 1, At('.', ; + pcfilename) - 1) + ; + '.BAK' + If File(jcoldfile) + Delete File (jcoldfile) + Endif + Rename (pcfilename) To ; + (jcoldfile) + Endif + jnfhandle = Fcreate(pcfilename) + If .Not. jnfhandle == -1 .And. ; + .Not. Empty(pasect) + For ncount = 1 To ; + ALEN(pasect, 1) + If (';' $ ; + pasect(ncount)) .Or. ; + EMPTY(pasect(ncount)) + = Fputs(jnfhandle, ; + pasect(ncount)) + Else + = Fputs(jnfhandle, ; + '[' + ; + pasect(ncount) + ; + ']') + Endif + For ncount2 = 1 To ; + ALEN(pavars, 1) + If pavars(ncount2, ; + 3) == ncount + = Fputs(jnfhandle, ; + pavars(ncount2, ; + 1) + ' = ' + ; + pavars(ncount2, ; + 2)) + Endif + Endfor + Endfor + = Fclose(jnfhandle) + Else + = Messagebox( ; + 'Unable to create file: ' + ; + jcfilename, ; + 'File create error',0) + jlsuccess = .F. + Endif + Return jlsuccess +Endfunc && buildini +*!* +Function buildarray + Parameter pnfhandle, pasect, ; + pavars + Private All Like j* + jnalen = 1 + jnvarlen = 1 + If pnfhandle > -1 + = Fseek(pnfhandle, 0) + Do While .Not. ; + FEOF(pnfhandle) + jcline = Fgets(pnfhandle) + If ';' $ jcline .Or. ; + EMPTY(jcline) + If Empty(pasect(1)) + pasect[ 1] = ; + jcline + Else + jnalen = Alen(pasect, ; + 1) + ; + 1 + Dimension pasect[ ; + jnalen] + pasect[ ; + jnalen] = ; + jcline + Endif + Else + jnfound1 = At('[', jcline) + jnfound2 = At(']', jcline) + If jnfound1 > 0 .And. jnfound2 > 0 + jcsection = Substr(jcline, ; + jnfound1 + ; + 1, ; + jnfound2 - ; + 2) + If Empty(pasect(1)) + pasect[ ; + 1] = ; + jcsection + Else + jnalen = ; + ALEN(pasect, ; + 1) + 1 + Dimension ; + pasect[ ; + jnalen] + pasect[ ; + jnalen] = ; + jcsection + Endif + jnalen = Alen(pasect, ; + 1) + Else + If At('=', ; + jcline) > ; + 0 + If Empty(pavars(1, ; + 1)) + pavars[ ; + 1, ; + 1] = ; + ALLTRIM(Substr(jcline, ; + 1, ; + AT( ; + '=', ; + jcline) - ; + 1)) + pavars[ ; + 1, ; + 2] = ; + ALLTRIM(Substr(jcline, ; + AT( ; + '=', ; + jcline) + ; + 1)) + pavars[ ; + 1, ; + 3] = ; + jnalen + Else + jnvarlen = ; + ALEN(pavars, ; + 1) + ; + 1 + Dimension ; + pavars[ ; + jnvarlen, ; + 3] + pavars[ ; + jnvarlen, ; + 1] = ; + ALLTRIM(Substr(jcline, ; + 1, ; + AT( ; + '=', ; + jcline) - ; + 1)) + pavars[ ; + jnvarlen, ; + 2] = ; + ALLTRIM(Substr(jcline, ; + AT( ; + '=', ; + jcline) + ; + 1)) + pavars[ ; + jnvarlen, ; + 3] = ; + jnalen + Endif + Endif + Endif + Endif + Enddo + Endif + Return .T. +Endfunc && buildarray +*!* +Function getini + Parameter pcinifile, pcsection, ; + pcvar + Private All Like j* + jcretval = '' + If .Not. Empty(pcinifile) + jcfilename = Iif(At('.', ; + pcinifile) > 0, ; + pcinifile, ; + pcinifile + ; + '.INI') + If File(jcfilename) + jnhandle = Fopen(jcfilename) + If jnhandle < 0 + jlsuccess = .F. + = Messagebox( ; + 'Unable to open file: ' + ; + jcfilename, ; + 'File Open Error', ; + 0) + Else + pcsection = Alltrim(Upper(pcsection)) + pcvar = Alltrim(Upper(pcvar)) + jcretval = readini(@jnhandle, ; + pcsection, ; + pcvar) + = Fclose(jnhandle) + Endif + Endif + Endif + Return jcretval +Endfunc && getini +*!* +Function readini + Parameter pnfhandle, pcsection, ; + pcvar + Private All Like j* + jcline = '' + jcsection = '' + jnfound1 = 0 + jnfound2 = 0 + jnfound3 = 0 + jnalen = 0 + jcretval = '' + If .Not. Empty(pnfhandle) + = Fseek(pnfhandle, 0) + Do While .Not. ; + FEOF(pnfhandle) + jcline = Fgets(pnfhandle) + jnfound1 = At('[', ; + jcline) + jnfound2 = At(']', ; + jcline) + If jnfound1 > 0 .And. ; + jnfound2 > 0 + jcsection = Upper(Substr(jcline, ; + jnfound1 + ; + 1, ; + jnfound2 - ; + 2)) + Endif + If jcsection == ; + pcsection + jnfound3 = At('=', ; + jcline) + If jnfound3 > 0 + If Alltrim(Upper(Substr(jcline, ; + 1, ; + jnfound3 - ; + 1))) == ; + pcvar + jcretval = ; + ALLTRIM(Substr(jcline, ; + jnfound3 + ; + 1)) + Exit + Endif + Endif + Endif + Enddo + Endif + Return jcretval +Endfunc && readini + + +* Foloseste comment de la coloane si tooltiptext de la grid pt a salva recordsource si controlsource din grid inainte de reconstructie +Procedure SAVE_GRID_COMMENT + Param toGrid + *wait wind 'save_grid' + Private pogrid + If Param()=0 Or Type('togrid')!="O" + Return .F. + Endif + + pogrid=toGrid + + * remember control sources in the column's comment field + With pogrid + Local nColumnIndex + For m.nColumnIndex = 1 To .ColumnCount + .Columns(m.nColumnIndex).Comment = .Columns(m.nColumnIndex).ControlSource + Endfor + .ToolTipText=.RecordSource + .RecordSource="" + Endwith + + Return .T. +Endproc && SAVE_GRID_COMMENT +***-------------------------------------------------------------- +Procedure RESTORE_GRID_COMMENT + Param toGrid + + *wait wind 'restore_grid' + Private pogrid + If Param()=0 Or Type('togrid')!="O" + Return .F. + Endif + + pogrid=toGrid + + + With pogrid + * restore record source + .RecordSource = .ToolTipText + * restore control sources + For m.nColumnIndex = 1 To .ColumnCount + .Columns(m.nColumnIndex).ControlSource = .Columns(m.nColumnIndex).Comment + Endfor + .ToolTipText="" + Endwith + Return .T. +Endproc && RESTORE_GRID_COMMENT + + +* Foloseste comment de la coloane si tooltiptext de la grid pt a salva recordsource si controlsource din grid inainte de reconstructie +Procedure SAVE_GRID_TAG + Param toGrid + *wait wind 'save_grid' + Private pogrid + If Param()=0 Or Type('togrid')!="O" + Return .F. + Endif + + pogrid=toGrid + + * remember control sources in the column's comment field + With pogrid + Local nColumnIndex + For m.nColumnIndex = 1 To .ColumnCount + .Columns(m.nColumnIndex).Tag = .Columns(m.nColumnIndex).ControlSource + Endfor + .ToolTipText=.RecordSource + .RecordSource="" + Endwith + + Return .T. +Endproc && SAVE_GRID_TAG +***-------------------------------------------------------------- +Procedure RESTORE_GRID_TAG + Param toGrid + + *wait wind 'restore_grid' + Private pogrid + If Param()=0 Or Type('togrid')!="O" + Return .F. + Endif + + pogrid=toGrid + + + With pogrid + * restore record source + .RecordSource = .ToolTipText + * restore control sources + For m.nColumnIndex = 1 To .ColumnCount + .Columns(m.nColumnIndex).ControlSource = .Columns(m.nColumnIndex).Tag + Endfor + .ToolTipText="" + Endwith + Return .T. +Endproc && RESTORE_GRID_TAG + + +*------------------------------------------- +* Function...: Xmenu +* Author.....: MARTIN +* Date.......: 04/06/1997 +* Notes......: Based on an idea from Steve Zimmelman for FoxPro 2.x +* Parameters.: tcItems = Semicolon-separated String with the various options +* ...........: tnBar = Initially selected item (default=1) +* Returns....: Selected item number +* See Also...: PROMPT() [FoxPro Native] +* +Procedure XMENU + Lparameters TCITEMS, TNBAR + + Local NITEMCOUNT, AITEMS, X, NROW, NCOL, CTITLE, NLASTPOS, CCOLOR, AITEMS + + Private CPOPMENU, NSELECT && They flow into the GetChoice internal procedure + + If Pcount() < 2 + TNBAR = 1 + Endif + + Activate Screen + + * Parse every item + * + m.NITEMCOUNT = Occurs( ';', TCITEMS ) + 1 + Dimen AITEMS[ m.nItemCount ] + m.NLASTPOS = 1 + + For m.X = 1 To m.NITEMCOUNT + + If m.X < m.NITEMCOUNT + + AITEMS[ m.x ] = Subs( m.TCITEMS, m.NLASTPOS, ; + ( At( ';', m.TCITEMS, m.X ) - 1 ) - m.NLASTPOS + 1 ) + Else + AITEMS[ m.x ] = Subs( m.TCITEMS, m.NLASTPOS, ; + ( Len( m.TCITEMS ) - m.NLASTPOS ) + 1 ) + Endif + + If AITEMS[ m.x ] # "\-" + + AITEMS[ m.x ] = Allt( AITEMS[ m.x ] ) + Endif + + m.NLASTPOS=At( ';', m.TCITEMS, m.X ) + 1 + Next + + * Calculates the mouse pointer position + * + m.NROW = Iif( Mrow() + m.NITEMCOUNT < Srow(), Mrow() - 1, Srow() - m.NITEMCOUNT ) + m.NCOL = Iif( Mcol() + 10 < Scol(), Mcol() - 3, Mcol() - 13 ) + + * Gets an unique name for the pop-up + * + m.CPOPMENU = 'M' + Sys(3) + "_" + + Define Popup ( m.CPOPMENU ) SHORTCUT Relative From NROW, NCOL + + For m.X = 1 To m.NITEMCOUNT + + Define Bar m.X Of ( m.CPOPMENU ) Prompt AITEMS[ m.x ] + Next + + m.CANS = "" + m.NSELECT = 0 + Clear Type + + On Selection Popup ( m.CPOPMENU ) Do GETCHOICE + + Activate Popup ( m.CPOPMENU ) Bar TNBAR + + Pop Key + Release Popup ( m.CPOPMENU ) + + Return Iif( Lastkey()=27, 0, m.NSELECT ) + +Endproc && XMENU + +*-------------------- +Procedure GETCHOICE + + m.NSELECT = Bar() + + Deactivate Popup ( m.CPOPMENU ) + + Return + &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MENIU &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& + + *** COPIERE SHALLOW - proprietatile care contin referinte la alte obiecte pastreaza aceleasi referinte + *** EX1: loDestinationObject = CopyObject(loSourceObject) -> creeaza un obiect nou si copie proprietatile din loSourceObject + *** EX2: CopyObject(loSourceObject, @loDestinationObject) -> adauga/copiaza proprietatile din loSourceObject in loDestinationObject (obiect nou sau existent) +Function CopyObject + Lparameters toObject, toNewObject + Local laProps[1], lnI, lcPropName, loEx As Exception + * For Empty class only + If Type("toObject") <> "O" + toNewObject = Null + Return Null + Endif + + If Type('toNewObject') <> 'O' + If Type('toObject.Class')='C' And Type('toObject.ClassLibrary')='C' + toNewObject = Newobject(toObject.Class,toObject.ClassLibrary) + Else + toNewObject = Createobject("Empty") + Endif + Endif + + + For lnI=1 To Amembers(laProps, toObject, 0) + lcPropName = Lower(laProps[lnI]) + * Pre VFP9 + *IF TYPE([ALEN( toObject.&lcPropName)]) = "N" + If Type([toObject.] + lcPropName,1) = "A" + * Array + If !Pemstatus(toNewObject, lcPropName, 5) && If the property does not exist + AddProperty(toNewObject, lcPropName + "[1]", Null ) + Endif + = Acopy(toObject.&lcPropName, toNewObject.&lcPropName) + Else + If !Pemstatus(toNewObject, lcPropName, 5) && If the property does not exist + AddProperty(toNewObject, lcPropName, Evaluate("toObject." + lcPropName) ) + Else + Try + toNewObject.&lcPropName = Evaluate("toObject." + lcPropName) + Catch && TO loEx WHEN loEx.ErrorNo = 1743 && PROPERTY IS READONLY - NU FAC NIMIC + * + Endtry + Endif + Endif + Endfor + + Return toNewObject +Endfunc && CopyObject + + +Procedure MakeDirectoryStructure + Lparameters tcDirector + + Local lnDirectoare, lcSubDirector, lcSubdirectorLocal, i + + lnDirectoare = Getwordcount(Justpath(m.tcDirector), "\") + lcSubdirectorLocal = "" + For i = 1 To lnDirectoare + lcSubDirector = Getwordnum(Justpath(m.tcDirector), i, "\") + lcSubdirectorLocal = m.lcSubdirectorLocal + m.lcSubDirector + "\" + If !Directory(m.lcSubdirectorLocal) + Md(m.lcSubdirectorLocal) + Endif + Endfor + +Endproc && MakeDirectoryStructure +* +FUNCTION cValidCNP + LPARAMETERS lpcnp + + IF TYPE('lpCNP') ='N' + lpCNP = ALLTRIM(STR(m.lpcnp)) + ENDIF + + IF LEN(ALLTRIM(lpcnp)) <> 13 + RETURN .F. + ENDIF + n1 = VAL(SUBSTR(lpcnp, 1, 1)) + n2 = VAL(SUBSTR(lpcnp, 2, 1)) + n3 = VAL(SUBSTR(lpcnp, 3, 1)) + n4 = VAL(SUBSTR(lpcnp, 4, 1)) + n5 = VAL(SUBSTR(lpcnp, 5, 1)) + n6 = VAL(SUBSTR(lpcnp, 6, 1)) + n7 = VAL(SUBSTR(lpcnp, 7, 1)) + n8 = VAL(SUBSTR(lpcnp, 8, 1)) + n9 = VAL(SUBSTR(lpcnp, 9, 1)) + n10 = VAL(SUBSTR(lpcnp, 10, 1)) + n11 = VAL(SUBSTR(lpcnp, 11, 1)) + n12 = VAL(SUBSTR(lpcnp, 12, 1)) + n13 = VAL(SUBSTR(lpcnp, 13, 1)) + c = MOD((n1 * 2 + n2 * 7 + n3 * 9 + ; + n4 * 1 + n5 * 4 + n6 * 6 + n7 * ; + 3 + n8 * 5 + n9 * 8 + n10 * 2 + ; + n11 * 7 + n12 * 9), 11) + IF c = 10 + c = 1 + ENDIF + IF c = n13 + RETURN .T. + ELSE + RETURN .F. + ENDIF +ENDFUNC + +* +FUNCTION GetDataCNP + LPARAMETERS plcnp + LOCAL mlan + mlan = SUBSTR(plcnp, 2, 2) + IF VAL(mlan) > 20 AND !INLIST(LEFT(plcnp, 1), "5", "6") + mlan = "19" + mlan + ELSE + mlan = "20" + mlan + ENDIF + RETURN CTOD(SUBSTR(plcnp, 6, 2) + "." + SUBSTR(plcnp, 4, 2) + "." + mlan) +ENDFUNC +* +FUNCTION VerifCF + LPARAMETERS plcfisc + LOCAL mlsuma, mlrest + plcfisc = getnrfromstring(plcfisc) + IF LEN(ALLTRIM(plcfisc)) = 13 + IF .NOT. cvalidcnp(plcfisc) + RETURN .F. + ELSE + RETURN .T. + ENDIF + ELSE + IF LEN(ALLTRIM(plcfisc)) < 2 OR LEN(ALLTRIM(plcfisc)) > 10 OR plcfisc = "0" + RETURN .F. + ENDIF + ENDIF + plcfisc = PADL(ALLTRIM(plcfisc), 10, "0") + mlsuma = 0 + FOR i = 1 TO 10 + mlsuma = mlsuma + VAL(SUBSTR(plcfisc, i, 1)) * VAL(SUBSTR("753217532", i, 1)) + ENDFOR + mlrest = MOD((mlsuma * 10), 11) + IF mlrest = 10 + mlrest = 0 + ENDIF + IF VAL(SUBSTR(plcfisc, 10, 1)) <> mlrest + RETURN .F. + ELSE + RETURN .T. + ENDIF +ENDFUNC +* +* Intoarce un cod fiscal fara atributul de tara. sterge literele si alte caractere nonnumerice +* RO 1879855 -> 1879855 +FUNCTION GetCodFiscalFRO + LPARAMETERS tcCF + + lcCodFiscalFRO = ALLTRIM(CHRTRAN(ALLTRIM(UPPER(TRANSFORM(m.tcCF))), "ABCDEFGHIJKLMNOPQRSTUVWXYZ -./()", "")) + + RETURN m.lcCodFiscalFRO +ENDFUNC +* \ No newline at end of file diff --git a/security.h b/security.h new file mode 100644 index 0000000..84dfa74 --- /dev/null +++ b/security.h @@ -0,0 +1 @@ +#DEFINE ENCRYPTKEY "233!do*32Di3-o23\409" \ No newline at end of file diff --git a/settings.flora.ini b/settings.flora.ini new file mode 100644 index 0000000..01ba01f --- /dev/null +++ b/settings.flora.ini @@ -0,0 +1,72 @@ +[general] +host = ROA +user = XENOTI +password = +vIcfGb3NCfLCZXaqOM19Q== +cale_import_fidelio = \\10.0.0.37\Biz\ +cale_import_biz = C:\BIZ\ +cale_import = C:\roa\flora2roa\IMPORT\ +last_data1 = 30/04/2025 +last_data2 = 30/04/2025 + +tva_incasare = 0 + +id_part_casa_restaurant = 251 +id_part_card_restaurant = 230 +id_part_tichete_restaurant = 230 +id_part_clienti_restaurant = 234 + +id_part_casa_hotel = 251 +id_part_card_hotel = 230 +id_part_clienti_hotel = 233 + +cont_casa_restaurant = 5311 +acont_casa_restaurant = + +cont_card_restaurant = 5125 +acont_card_restaurant = 01 + +cont_tichete_restaurant = 472 +acont_tichete_restaurant = 03 + +cont_casa_hotel = 5311 +acont_casa_hotel = + +cont_card_hotel = 5125 +acont_card_hotel = 01 + +cont_tichete_hotel = 5125 +acont_tichete_hotel = 01 + +cont_viramentint_hotel = 418 +acont_viramentint_hotel = 01 + +cont_clienti_restaurant = 418 +acont_clienti_restaurant = 02 + +cont_clienti_hotel = 4111 +acont_clienti_hotel = 01 + +cont_factura_casa_hotel = 4111 +cont_factura_card_hotel = 4111 +cont_factura_tichete_hotel = 4111 +cont_factura_viramentint_hotel = 4111 +acont_fatura_casa_hotel = 01 +acont_factura_card_hotel = 02 +acont_factura_tichete_hotel = 02 +acont_factura_viramentint_hotel = 01 + +acont_marfa_bar = 01 +acont_marfa_bucatarie = 08 + +acont_venituri_bar = 0201 +acont_venituri_bucatarie = 0202 + +acont_ach_4428 = TP +acont_ach_4426 = +acont_vz_4428 = TI +acont_vz_4427 = +acont_mf_4428 = M + +[connection] +connection_timeout = 60 +response_timeout = 60 diff --git a/settings.ini b/settings.ini new file mode 100644 index 0000000..229f34b --- /dev/null +++ b/settings.ini @@ -0,0 +1,72 @@ +[general] +host = CONPRESS +user = XENOTI +password = +vIcfGb3NCfLCZXaqOM19Q== +cale_import_fidelio = D:\PROIECTE\FLORA\FLORA2ROA\EXEMPLE\hotel\ +cale_import_biz = D:\PROIECTE\FLORA\FLORA2ROA\EXEMPLE\restaurant\ +cale_import = D:\PROIECTE\FLORA\FLORA2ROA\EXEMPLE\ +last_data1 = 01/08/2025 +last_data2 = 01/08/2025 + +tva_incasare = 0 + +id_part_casa_restaurant = 251 +id_part_card_restaurant = 230 +id_part_tichete_restaurant = 230 +id_part_clienti_restaurant = 234 + +id_part_casa_hotel = 251 +id_part_card_hotel = 230 +id_part_clienti_hotel = 233 + +cont_casa_restaurant = 5311 +acont_casa_restaurant = + +cont_card_restaurant = 5125 +acont_card_restaurant = 01 + +cont_tichete_restaurant = 472 +acont_tichete_restaurant = 03 + +cont_casa_hotel = 5311 +acont_casa_hotel = + +cont_card_hotel = 5125 +acont_card_hotel = 01 + +cont_tichete_hotel = 5125 +acont_tichete_hotel = 01 + +cont_viramentint_hotel = 418 +acont_viramentint_hotel = 01 + +cont_clienti_restaurant = 418 +acont_clienti_restaurant = 02 + +cont_clienti_hotel = 4111 +acont_clienti_hotel = 01 + +cont_factura_casa_hotel = 4111 +cont_factura_card_hotel = 4111 +cont_factura_tichete_hotel = 4111 +cont_factura_viramentint_hotel = 4111 +acont_fatura_casa_hotel = 01 +acont_factura_card_hotel = 02 +acont_factura_tichete_hotel = 02 +acont_factura_viramentint_hotel = 01 + +acont_marfa_bar = 01 +acont_marfa_bucatarie = 08 + +acont_venituri_bar = 0201 +acont_venituri_bucatarie = 0202 + +acont_ach_4428 = TP +acont_ach_4426 = +acont_vz_4428 = TI +acont_vz_4427 = +acont_mf_4428 = M + +[connection] +connection_timeout = 60 +response_timeout = 60 diff --git a/update.bat b/update.bat new file mode 100644 index 0000000..90d9ab7 --- /dev/null +++ b/update.bat @@ -0,0 +1,109 @@ +setlocal enabledelayedexpansion + +:: Set the variables +set DOWNLOAD_URL=https://roa.romfast.ro/contafinupdate/default.aspx/update/download/1/ + +set APP_NAME=flora2roa +set APP_DIR=%~dp0 +set CURRENT_VERSION_FILE=%APP_NAME%.txt +set SERVER_VERSION_FILE=%APP_NAME%.txt +set NEW_VERSION_FILE=%APP_NAME%_server.txt +set UPDATE_FILE=%APP_NAME%.zip + +set UNZIP_DIR=%APP_DIR%\unzip +set APP_EXE=%APP_NAME%.exe +set APP_EXE_OLD=%APP_NAME%_old.exe +set LOG_FILE=%APP_DIR%update_log.txt + +:: Log the variables for debugging +echo [%date% %time%] APP_DIR=%APP_DIR% >> %LOG_FILE% +echo [%date% %time%] LOG_FILE=%LOG_FILE% >> %LOG_FILE% +echo [%date% %time%] UNZIP_DIR=%UNZIP_DIR% >> %LOG_FILE% + +echo [%date% %time%] Start actualizare >> %LOG_FILE% + +CD %APP_DIR% + +:: Check the current version +if not exist "%CURRENT_VERSION_FILE%" ( + echo [%date% %time%] Current version file not found. >> %LOG_FILE% + echo 0.0.0 >> %APP_DIR%\%CURRENT_VERSION_FILE% +) + +set /p CURRENT_VERSION=<"%CURRENT_VERSION_FILE%" + +echo [%date% %time%] current version %CURRENT_VERSION_FILE%: %CURRENT_VERSION% >> %LOG_FILE% + +:: Get the new version from the server +powershell -Command "(New-Object System.Net.WebClient).DownloadFile('%DOWNLOAD_URL%%SERVER_VERSION_FILE%', '%APP_DIR%\%NEW_VERSION_FILE%')" || ( + echo [%date% %time%] Error: Failed to download new version file: %DOWNLOAD_URL%%SERVER_VERSION_FILE% >> %LOG_FILE% + goto END +) + +set /p NEW_VERSION=<"%APP_DIR%\%NEW_VERSION_FILE%" + +echo [%date% %time%] server version: %NEW_VERSION% >> %LOG_FILE% + +:: Check if an update is available +if "%CURRENT_VERSION%" geq "%NEW_VERSION%" ( + echo [%date% %time%] No update available. >> %LOG_FILE% + goto END +) + +:: Download the update +powershell -Command "(New-Object System.Net.WebClient).DownloadFile('%DOWNLOAD_URL%%UPDATE_FILE%', '%APP_DIR%\%UPDATE_FILE%')" || ( + echo [%date% %time%] Error: Failed to download update file. >> %LOG_FILE% + goto END +) + +:: Check if the application is running +tasklist /fi "imagename eq %APP_EXE%" | find /i "%APP_EXE%" > nul +if %errorlevel% equ 0 ( + echo [%date% %time%] Error: %APP_NAME% is currently running. Please close it before updating. >> %LOG_FILE% + goto END +) + +:: Unzip the update +powershell -Command "Expand-Archive -Path '%APP_DIR%\%UPDATE_FILE%' -DestinationPath '%UNZIP_DIR%' -Force" || ( + echo [%date% %time%] Error: Failed to unzip update file. >> %LOG_FILE% + goto END +) + +:: Update the application +if exist "%APP_DIR%\%APP_EXE_OLD%" ( + del "%APP_DIR%\%APP_EXE_OLD%" + echo [%date% %time%] Fișierul %APP_DIR%\%APP_EXE_OLD% a fost șters >> %LOG_FILE% +) + +if not exist "%UNZIP_DIR%\%APP_EXE%" ( + echo [%date% %time%] Nu exista fișierul %UNZIP_DIR%\%APP_EXE% >> %LOG_FILE% + goto END +) + +if exist "%APP_DIR%\%APP_EXE%" ( + rename "%APP_DIR%\%APP_EXE%" "%APP_EXE_OLD%" + echo [%date% %time%] Fișierul %APP_DIR%\%APP_EXE% a fost redenumit în %APP_DIR%\%APP_EXE_OLD% >> %LOG_FILE% +) + +move /y "%UNZIP_DIR%\%APP_EXE%" "%APP_DIR%\%APP_EXE%" + +echo [%date% %time%] Updating %APP_DIR%\%APP_NAME% to version %NEW_VERSION%... >> %LOG_FILE% + +:: Update the local version file +if exist "%APP_DIR%\%CURRENT_VERSION_FILE%" ( + del "%APP_DIR%\%CURRENT_VERSION_FILE%" + echo Fișierul %CURRENT_VERSION_FILE% a fost șters. >> %LOG_FILE% +) + +if exist "%APP_DIR%\%NEW_VERSION_FILE%" ( + rename "%APP_DIR%\%NEW_VERSION_FILE%" "%CURRENT_VERSION_FILE%" + echo Fișierul %APP_DIR%\%NEW_VERSION_FILE% a fost redenumit în %CURRENT_VERSION_FILE%. >> %LOG_FILE% +) else ( + echo Fișierul %APP_DIR%\%NEW_VERSION_FILE% nu a fost găsit. >> %LOG_FILE% +) + +echo [%date% %time%] Update successful. >> %LOG_FILE% + +:END +start "" "%APP_DIR%\%APP_EXE%" +exit /b diff --git a/vfpconnection.fll b/vfpconnection.fll new file mode 100644 index 0000000000000000000000000000000000000000..d913abeca1da785a8b936fcc517b90003baad7db GIT binary patch literal 827392 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
    Ac=>UjCU2ra;qey5<-}j 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

    6)GpJ&SPDttta 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

    oq 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 BSEND HEADER: ", ; + m.nTraceDataType = TYPE_DATA_IN, "SEND DATA: ", ; + m.nTraceDataType = TYPE_SSL_DATA_IN, "SEND SSL DATA: ", ; + m.nTraceDataType = TYPE_END, "END: ", "UNKNOWN: ") + ??m.cTraceData +ENDFUNC + diff --git a/vfpconnection_utils.prg b/vfpconnection_utils.prg new file mode 100644 index 0000000..2a856fb --- /dev/null +++ b/vfpconnection_utils.prg @@ -0,0 +1,44 @@ +*!* vfpconnection_utils + +*********************** +Function MyProgress && Callback from the FLL - can be used to track operation progress + Lparameters tcFile + Local lnProgress, lcFile + lnProgress = 0 + lcFile = Iif(Empty(m.tcFile) Or Type('tcFile') <> 'C', '', m.tcFile) + If m.nConnectTotalBytes > 0 + m.lnProgress = Int(m.nConnectBytesSoFar / m.nConnectTotalBytes * 100) + Endif + + Wait Window m.lcFile + ' ' + Transform(m.lnProgress) + '% ...' Nowait +Endfunc + + + +*********************** +Function MyTrace() && Callback from the FLL - used to provide a detailed trace of the operation + *********************** + *!* You can create your own function, procedure or method to handle this and name it whatever you want. + *!* The nTraceDataType and cTraceData are private variables created on-the-fly by the FLL + #Define TYPE_TEXT 0 + #Define TYPE_HEADER_IN 1 + #Define TYPE_HEADER_OUT 2 + #Define TYPE_DATA_IN 3 + #Define TYPE_DATA_OUT 4 + #Define TYPE_SSL_DATA_IN 5 + #Define TYPE_SSL_DATA_OUT 6 + #Define TYPE_END 7 + lcDataType = Icase(m.nTraceDataType = TYPE_TEXT, "STATUS:", ; + m.nTraceDataType = TYPE_HEADER_IN, "SEND HEADER: ", ; + m.nTraceDataType = TYPE_DATA_IN, "SEND DATA: ", ; + m.nTraceDataType = TYPE_SSL_DATA_IN, "SEND SSL DATA: ", ; + m.nTraceDataType = TYPE_END, "END: ", "UNKNOWN: ") + lcData = m.cTraceData + If Inlist(m.nTraceDataType, TYPE_TEXT) + lcMesaj = lcDataType + " " + lcData + goApp.Log(m.lcMesaj) + Endif +Endfunc diff --git a/vfpencryption.fll b/vfpencryption.fll new file mode 100644 index 0000000000000000000000000000000000000000..1bc92a4ad77e5609636244071d76019d823b9a57 GIT binary patch literal 151552 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 GDDZE6COPK- literal 0 HcmV?d00001