diff --git a/build/Cg010.vcxproj b/build/Cg010.vcxproj
index 854952c49..8af32dd34 100644
--- a/build/Cg010.vcxproj
+++ b/build/Cg010.vcxproj
@@ -13,7 +13,7 @@
{6F2EAB30-4FD7-41DE-BCE3-8CD5D4C880B4}
cg010
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/Cg011.vcxproj b/build/Cg011.vcxproj
index 94c3439c8..f316a13c1 100644
--- a/build/Cg011.vcxproj
+++ b/build/Cg011.vcxproj
@@ -13,7 +13,7 @@
{9B42C6FD-9B50-42E6-A215-B641B44A931E}
cg1
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/Cg012.vcxproj b/build/Cg012.vcxproj
index 6ca4845fb..ffa2b035d 100644
--- a/build/Cg012.vcxproj
+++ b/build/Cg012.vcxproj
@@ -13,7 +13,7 @@
{9304E774-E631-495D-A29D-774222BBF8C9}
cg2
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/Cg013.vcxproj b/build/Cg013.vcxproj
index 3db36e603..ea737acb2 100644
--- a/build/Cg013.vcxproj
+++ b/build/Cg013.vcxproj
@@ -13,7 +13,7 @@
{8F1FD835-004E-4BFA-A754-42A87AFA5343}
cg013
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/Cg014.vcxproj b/build/Cg014.vcxproj
index 6663d9e1d..8e4f5ab12 100644
--- a/build/Cg014.vcxproj
+++ b/build/Cg014.vcxproj
@@ -13,7 +13,7 @@
{F1589A59-C3AC-430E-88EC-925461405E57}
cg4
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/Cg015.vcxproj b/build/Cg015.vcxproj
index 9c3de604c..2b8b11607 100644
--- a/build/Cg015.vcxproj
+++ b/build/Cg015.vcxproj
@@ -13,7 +13,7 @@
{4661E972-5AAC-4B3E-92C7-C267D5070793}
cg5
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/Cg016.vcxproj b/build/Cg016.vcxproj
index 44999be87..92ee6e184 100644
--- a/build/Cg016.vcxproj
+++ b/build/Cg016.vcxproj
@@ -13,7 +13,7 @@
{4FD17D56-D966-4F85-A04A-28EC6E0824CF}
cg016
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/Cg017.vcxproj b/build/Cg017.vcxproj
index db7864815..b95dc97c4 100644
--- a/build/Cg017.vcxproj
+++ b/build/Cg017.vcxproj
@@ -13,7 +13,7 @@
{95FED395-F24E-4E5B-95B5-227A99CA255F}
cg7
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/cg01_masktab.vcxproj b/build/cg01_masktab.vcxproj
index 5bb2bd6b4..1e4c799c3 100644
--- a/build/cg01_masktab.vcxproj
+++ b/build/cg01_masktab.vcxproj
@@ -13,7 +13,7 @@
{97368DC9-8B0D-4F75-A89F-9A58701226B6}
cg01_masktab
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/fp010.vcxproj b/build/fp010.vcxproj
index 4cc4756c3..2412cffca 100644
--- a/build/fp010.vcxproj
+++ b/build/fp010.vcxproj
@@ -13,7 +13,7 @@
{9C91BACF-9A70-4973-B8CC-FA3D2AF9867C}
fp
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/build/fp011.vcxproj b/build/fp011.vcxproj
index 7df323db1..159caf430 100644
--- a/build/fp011.vcxproj
+++ b/build/fp011.vcxproj
@@ -13,7 +13,7 @@
{A539BCC1-D08F-4D78-A8EA-65560F4A60CD}
fp
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/cd/test/cg1402.txt b/cd/test/cg1402.txt
new file mode 100644
index 000000000..56690e148
--- /dev/null
+++ b/cd/test/cg1402.txt
@@ -0,0 +1 @@
+cg012.exe
diff --git a/cd/test/cg1402a.ini b/cd/test/cg1402a.ini
new file mode 100644
index 000000000..3641590df
--- /dev/null
+++ b/cd/test/cg1402a.ini
@@ -0,0 +1,98 @@
+[Main]
+Demo=0
+[cg1]
+File(12) = cg012.exe|X
+Patch = 1402
+Versione = 21511200
+
+[cg99]
+Kill(0) = bastscc.msk|x
+Kill(1) = bastntb.rep|x
+Kill(2) = bastcco.rep|x
+Kill(3) = bastcve.rep|x
+Kill(4) = batblbu.msk|x
+Kill(5) = batbpdb.msk|x
+Kill(6) = bastpdb.msk|x
+Kill(7) = cgtbcon.msk|x
+Kill(8) = batbnot.msk|x
+Kill(9) = batblia.msk|x
+Kill(10) = bastver.msk|x
+Kill(11) = bastivd.rep|x
+Kill(12) = batbcfi.msk|x
+Kill(13) = bastcco.msk|x
+Kill(14) = batbndo.msk|x
+Kill(15) = bastndo.rep|x
+Kill(16) = batbleg.msk|x
+Kill(17) = batbarb.msk|x
+Kill(18) = batbscc.msk|x
+Kill(19) = bastpor.rep|x
+Kill(20) = batbind.msk|x
+Kill(21) = batbreg.msk|x
+Kill(22) = bastcve.msk|x
+Kill(23) = batbins.msk|x
+Kill(24) = bastcfi.msk|x
+Kill(25) = batbcam.msk|x
+Kill(26) = batbver.msk|x
+Kill(27) = batblia.msk|x
+Kill(28) = batbvet.msk|x
+Kill(29) = bastarb.rep|x
+Kill(30) = bastdpn.msk|x
+Kill(31) = bastnot.msk|x
+Kill(32) = batbntb.msk|x
+Kill(33) = bastzon.rep|x
+Kill(34) = bastmsp.msk|x
+Kill(35) = batbcve.msk|x
+Kill(36) = batbesc.msk|x
+Kill(37) = bastdpn.rep|x
+Kill(38) = bastreg.msk|x
+Kill(39) = bastver.rep|x
+Kill(40) = bastleg.msk|x
+Kill(41) = bastntb.msk|x
+Kill(42) = batbinl.msk|x
+Kill(43) = bastreg.rep|x
+Kill(44) = batbzon.msk|x
+Kill(45) = cg2fppro.msk|x
+Kill(46) = bastmsp.rep|x
+Kill(47) = bastesc.msk|x
+Kill(48) = batbdpn.msk|x
+Kill(49) = bastndo.msk|x
+Kill(50) = bastnot.rep|x
+Kill(51) = batbmsp.msk|x
+Kill(52) = batbpor.msk|x
+Kill(53) = batbtra.msk|x
+Kill(54) = bastzon.msk|x
+Kill(55) = bastesc.rep|x
+Kill(56) = batbdel.msk|x
+Kill(57) = bastvet.msk|x
+Kill(58) = bastarb.msk|x
+Kill(59) = bastscc.rep|x
+Kill(60) = bastpor.msk|x
+Kill(61) = batbcco.msk|x
+Kill(62) = bastvet.rep|x
+Kill(63) = bastcfi.rep|x
+Kill(64) = batbivd.msk|x
+Kill(65) = bastcam.msk|x
+Kill(66) = bastivd.msk|x
+Kill(67) = bastleg.rep|x
+Kill(68) = batbtit.msk|x
+Kill(69) = bastpdb.rep|x
+Kill(70) = bastcam.rep|x
+
+[cg]
+Data = 15-01-2026
+Descrizione = Contabilita' Generale
+Dischi = 1
+Edit_19 = cg0 -0
+Edit_20 = cg0 -1
+Edit_26 = cg0 -4
+Edit_5 = cg0 -5
+Moduli = ba
+OE333M =
+OEM =
+Patch = 1402
+PostProcess = bainst -0 CG
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 21511200
+
diff --git a/cd/test/cg1402a1.zip b/cd/test/cg1402a1.zip
new file mode 100644
index 000000000..eca3b9976
Binary files /dev/null and b/cd/test/cg1402a1.zip differ
diff --git a/cd/test/fp1402.txt b/cd/test/fp1402.txt
new file mode 100644
index 000000000..6904ea069
--- /dev/null
+++ b/cd/test/fp1402.txt
@@ -0,0 +1,6 @@
+fp0200a01.msk
+fp0300a01.msk
+fp0700a01.msk
+fp0400a01.msk
+fp010.exe
+fpmenuf.men
diff --git a/cd/test/fp1402a.ini b/cd/test/fp1402a.ini
new file mode 100644
index 000000000..9c7fce9d2
--- /dev/null
+++ b/cd/test/fp1402a.ini
@@ -0,0 +1,23 @@
+[Main]
+Demo=0
+[fp1]
+File(10) = fp010.exe|X
+File(14) = fp0200a01.msk|X
+File(15) = fp0300a01.msk|X
+File(16) = fp0400a01.msk|X
+File(21) = fp0700a01.msk|X
+File(29) = fpmenuf.men|X
+Patch = 1402
+Versione = 21511200
+
+[fp]
+Data = 27-07-2025
+Descrizione = Fattura Elettronica
+Dischi = 1
+Moduli = cg,ve
+OEM =
+Patch = 1402
+PostProcess =
+PreProcess =
+Versione = 21511200
+
diff --git a/cd/test/fp1402a1.zip b/cd/test/fp1402a1.zip
new file mode 100644
index 000000000..1cd770981
Binary files /dev/null and b/cd/test/fp1402a1.zip differ
diff --git a/cd/test/sy1402.txt b/cd/test/sy1402.txt
new file mode 100644
index 000000000..3eab6ae87
--- /dev/null
+++ b/cd/test/sy1402.txt
@@ -0,0 +1 @@
+xvaga01.dll
diff --git a/cd/test/sy1402a.ini b/cd/test/sy1402a.ini
new file mode 100644
index 000000000..e6e34dd39
--- /dev/null
+++ b/cd/test/sy1402a.ini
@@ -0,0 +1,23 @@
+[Main]
+Demo=0
+[sy1]
+File(65) = xvaga01.dll|X
+Patch = 1402
+Versione = 21511200
+
+[sy99]
+Kill(0) = setup\teamviewerqs_it.exe|x
+
+[sy]
+Data = 09-06-2025
+Descrizione = Sistema
+Dischi = 1
+Moduli =
+OEM =
+Patch = 1402
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 21511200
+
diff --git a/cd/test/sy1402a1.zip b/cd/test/sy1402a1.zip
new file mode 100644
index 000000000..9fa085a8e
Binary files /dev/null and b/cd/test/sy1402a1.zip differ
diff --git a/cd/test/ve1402.txt b/cd/test/ve1402.txt
new file mode 100644
index 000000000..6c39e75a5
--- /dev/null
+++ b/cd/test/ve1402.txt
@@ -0,0 +1,2 @@
+ve010.exe
+cg1300l.msk
diff --git a/cd/test/ve1402a.ini b/cd/test/ve1402a.ini
new file mode 100644
index 000000000..69142091c
--- /dev/null
+++ b/cd/test/ve1402a.ini
@@ -0,0 +1,133 @@
+[Main]
+Demo=0
+[ve1]
+File(38) = ve010.exe|X
+Patch = 1402
+Versione = 21511200
+
+[ve99]
+Kill(0) = batbcld.msk|x
+Kill(1) = bastspp.rep|x
+Kill(2) = bastgmc.msk|x
+Kill(3) = bastbnp.rep|x
+Kill(4) = bastasf.msk|x
+Kill(5) = basttag.msk|x
+Kill(6) = batbbnp.msk|x
+Kill(7) = batbcra.msk|x
+Kill(8) = bastprs.msk|x
+Kill(9) = bastcra.rep|x
+Kill(10) = batbgsa.msk|x
+Kill(11) = efstbnp.rep|x
+Kill(12) = bastgca.msk|x
+Kill(13) = ve7600a.msk|x
+Kill(14) = batbfsa.msk|x
+Kill(15) = ve7100a.msk|x
+Kill(16) = batbrfc.msk|x
+Kill(17) = bastgcg.msk|x
+Kill(18) = basttag.rep|x
+Kill(19) = bastcaa.rep|x
+Kill(20) = bastfrd.rep|x
+Kill(21) = batbcaa.msk|x
+Kill(22) = bastfrm.rep|x
+Kill(23) = baststd.msk|x
+Kill(24) = basteld.rep|x
+Kill(25) = bastums.msk|x
+Kill(26) = batbfca.msk|x
+Kill(27) = batbfrm.msk|x
+Kill(28) = batbabe.msk|x
+Kill(29) = basttip.rep|x
+Kill(30) = batbspp.msk|x
+Kill(31) = bastrfc.msk|x
+Kill(32) = bastcau.rep|x
+Kill(33) = bastprs.rep|x
+Kill(34) = bastcau.msk|x
+Kill(35) = bastfca.msk|x
+Kill(36) = ve7400a.ini|x
+Kill(37) = bastspp.msk|x
+Kill(38) = batbgca.msk|x
+Kill(39) = bastcra.msk|x
+Kill(40) = bastfrr.rep|x
+Kill(41) = bastfca.rep|x
+Kill(42) = batbasf.msk|x
+Kill(43) = batbmre.msk|x
+Kill(44) = bastfrd.msk|x
+Kill(45) = bastgca.rep|x
+Kill(46) = basttri.rep|x
+Kill(47) = basteld.msk|x
+Kill(48) = batbspt.msk|x
+Kill(49) = baststd.rep|x
+Kill(50) = bastfrm.msk|x
+Kill(51) = bastrfc.rep|x
+Kill(52) = batbums.msk|x
+Kill(53) = bastabe.msk|x
+Kill(54) = bastasf.rep|x
+Kill(55) = batbfrd.msk|x
+Kill(56) = batbtri.msk|x
+Kill(57) = batbrfa.msk|x
+Kill(58) = bastctr.msk|x
+Kill(59) = bastfrr.msk|x
+Kill(60) = bastums.rep|x
+Kill(61) = batbprv.msk|x
+Kill(62) = ve7700a.msk|x
+Kill(63) = batbcau.msk|x
+Kill(64) = batbtag.msk|x
+Kill(65) = ve7200a.msk|x
+Kill(66) = basttri.msk|x
+Kill(67) = batbgmc.msk|x
+Kill(68) = bastnum.rep|x
+Kill(69) = ve7400a.msk|x
+Kill(70) = batbgcg.msk|x
+Kill(71) = bastbnp.msk|x
+Kill(72) = bastcaa.msk|x
+Kill(73) = eftbbnp.msk|x
+Kill(74) = ve7200a.frm|x
+Kill(75) = ve7300a.msk|x
+Kill(76) = bastubi.msk|x
+Kill(77) = ve7300a.frm|x
+Kill(78) = bastimb.msk|x
+Kill(79) = batbfrr.msk|x
+Kill(80) = bastimb.rep|x
+Kill(81) = ve7.exe|x
+Kill(82) = ve7701a.ini|x
+Kill(83) = ve7400conf.ini|x
+Kill(84) = bastnum.msk|x
+Kill(85) = bastrfa.rep|x
+Kill(86) = batbubi.msk|x
+Kill(87) = batbnum.msk|x
+Kill(88) = bastabe.rep|x
+Kill(89) = batbtip.msk|x
+Kill(90) = ve7500a.msk|x
+Kill(91) = efstbnp.msk|x
+Kill(92) = batbctr.msk|x
+Kill(93) = batbprs.msk|x
+Kill(94) = bastrfa.msk|x
+Kill(95) = bastgmc.rep|x
+Kill(96) = basttip.msk|x
+Kill(97) = batbpro.msk|x
+Kill(98) = batbacr.msk|x
+Kill(99) = batbimb.msk|x
+Kill(100) = batbstd.msk|x
+Kill(101) = batbfid.msk|x
+Kill(102) = batbeld.msk|x
+Kill(103) = bastubi.rep|x
+Kill(104) = bastgcg.rep|x
+Kill(105) = bastctr.rep|x
+
+[cg9]
+File(223) = cg1300l.msk|X
+Patch = 1400
+Versione = 21511200
+
+[ve]
+Data = 27-07-2025
+Descrizione = Vendite
+Dischi = 1
+Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9
+OEM =
+Patch = 1402
+PostProcess = bainst -0 VE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 21511200
+
diff --git a/cd/test/ve1402a1.zip b/cd/test/ve1402a1.zip
new file mode 100644
index 000000000..d4140aa6f
Binary files /dev/null and b/cd/test/ve1402a1.zip differ
diff --git a/libraries/libb64/base64/VisualStudioProject/base64.vcxproj b/libraries/libb64/base64/VisualStudioProject/base64.vcxproj
index 09c0653b7..19fc261de 100644
--- a/libraries/libb64/base64/VisualStudioProject/base64.vcxproj
+++ b/libraries/libb64/base64/VisualStudioProject/base64.vcxproj
@@ -14,7 +14,7 @@
{0B094121-DC64-4D74-AFA0-750B83F800D0}
Win32Proj
base64
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/src/ba/ba8300.cpp b/src/ba/ba8300.cpp
index af5bab76a..ab63c4ca6 100755
--- a/src/ba/ba8300.cpp
+++ b/src/ba/ba8300.cpp
@@ -501,13 +501,13 @@ TMask_field* TReport_mask::parse_field(TScanner& scanner)
bool TReport_mask::get_rep_path(TFilename& path) const
{
const TString& name = get(DLG_REPORT);
- const bool ok = name.full();
+ bool found = false;
- if (ok)
+ if (path.blank())
+ path = name;
+ if (path.full())
{
- if (path.blank())
- path = name;
- if (!path.is_absolute_path())
+ if (!path.is_absolute_path())
{
path = firm2dir(-1);
path.add("custom");
@@ -516,7 +516,9 @@ bool TReport_mask::get_rep_path(TFilename& path) const
path.add(name);
path.ext("rep");
bool found = path.exist();
- if (!found)
+
+ message_box("file %s - %s", (const char *)path, found ? "trovato" : "non trovato");
+ if (!found)
{
TString80 fname = path.name_only(); fname.lower();
TFilename star = path.path(); star.add("*.rep");
@@ -532,20 +534,21 @@ bool TReport_mask::get_rep_path(TFilename& path) const
{
path = *row;
best = s;
- found = true;
- }
+ found = true;
+ }
}
}
- if (!found && is_power_station())
- {
- path = name;
- path.ext("rep");
- found = path.custom_path();
- }
+ message_box("file %s - %s", (const char *)path, found ? "trovato" : "non trovato");
}
- path.ext("rep");
- }
- return ok;
+ else
+ {
+ path.ext("rep");
+ found = path.exist();
+ message_box("file %s - %s", (const char *)path, found ? "trovato" : "non trovato");
+ }
+ message_box("file %s - %s", (const char *)path, found ? "trovato" : "non trovato");
+ }
+ return found;
}
bool TReport_mask::save_report()
diff --git a/src/cg01/cg2102.cpp b/src/cg01/cg2102.cpp
index a5b0f997d..c5d8cf9dc 100644
--- a/src/cg01/cg2102.cpp
+++ b/src/cg01/cg2102.cpp
@@ -4320,113 +4320,11 @@ bool TPrimanota_application::check_sdi_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
- TDocumento_mask& mask = (TDocumento_mask &)f.mask();
- TString4 tipo = get_fp_string_var(FP_TIPO_CHECK);
+ TMask& mask = (TMask &)f.mask();
+ TMovimento_contabile mov(mask.get_long(F_NUMREG));
- if (tipo == "F")
- {
- const char * server = "fex-app.com";
- TFilename xml_name = get_xml_filename(true, mask.get_int(F_ANNOES), mask.get(F_XML_NAME));
- TString content;
-
- content << '{' << '\n' << "\"call\" : \"fexApi.errorsCount\"," << '\n' << "\"apiPars\" : {" << '\n';
- content << "\"sessid\" : \"" << get_fp_string_var(FP_SESSION_ID) << "\",\n";
- content << "\"xml\" : \"";
-
- ifstream i(xml_name);
- TXmlItem xml;
- char buf[MAX_SIZE + 1];
- TString line;
-
- while (!i.eof())
- {
- i.read(buf, MAX_SIZE);
- buf[i.gcount()] = '\0';
-
- TString line = buf;
-
- line.strip("\n");
- content << unquote(line);
- }
- content << "\"" << "\n}\n}\n";
-
- size_t length;
- char * answer;
-
- if (http_post(server, "/api/def", content, answer, length, 2, 443, true, CONTENT_JSON))
- {
- TString result;
-
- for (int i = 0; i < (int)length; i++)
- result << answer[i];
- TString val;
- int pos = get_resp_prop("block", val, result);
-
- int block_errors = atoi(val);
-
- pos = get_resp_prop("reservedSessid", val, result, pos);
-
- TString sess_id = val;
-
- pos = get_resp_prop("reqWas", val, result, pos);
- if (val == "fexApi.errorsCount")
- {
- if (block_errors == 0)
- {
- mask.doc().put(DOC_STATO_SDI, "D");
+ if (mov.check())
mask.set(F_STATO_SDI, "D");
- }
- TString res_page = "https://";
- TFilename http;
-
- http.temp();
- res_page << "/fex-app.com/servizi/inizia?sessid=" << sess_id << "&auth=" << get_fp_string_var(FP_SESSION_ID);
-
- if (http_get(server, res_page, http))
- {
- TFilename out = get_check_dest(mask.doc().get_int(DOC_ANNO));
-
- out.add(xml_name.name_only());
- out.ext("pdf");
- html2pdf(http, out);
- goto_url(out);
- }
- }
- }
- }
- else
- {
- TString str = get_fp_string_var(FP_CHECK_APP);
- TString command = str;
- int p = str.find("");
-
- if (p > 0)
- {
- int anno = mask.get_int(F_ANNOES);
- TFilename file = get_xml_dest(anno);
-
- file.add(mask.get(F_XML_NAME));
- file.ext("xml");
- command = str.sleft(p);
- if (command[command.len() - 1] != ' ')
- command << " ";
- command << file;
- if (p + 6 < str.len())
- {
- if (command[command.len() - 1] != ' ')
- command << " ";
- command << str.smid(p + 7);
- }
- }
- if (command.starts_with("http"))
- goto_url(command);
- else
- {
- TExternal_app check(command);
-
- int res = check.run();
- }
- }
}
return true;
}