diff --git a/build/Cb6.vcxproj b/build/Cb6.vcxproj
index f8f9f6eac..022827ffd 100644
--- a/build/Cb6.vcxproj
+++ b/build/Cb6.vcxproj
@@ -94,7 +94,8 @@
$(IntDir)$(TargetName).bsc
- signtool.exe sign /a /s MY /n "Sirio Informatica e Sistemi SPA" /fd sha256 /tr http://timestamp.digicert.com /v $(TargetPath)
+
+
diff --git a/build/ba0.vcxproj b/build/ba0.vcxproj
index 2160f64a3..2105378d6 100644
--- a/build/ba0.vcxproj
+++ b/build/ba0.vcxproj
@@ -191,6 +191,7 @@
+
diff --git a/build/ba0.vcxproj.filters b/build/ba0.vcxproj.filters
index adcd4b7c7..fa68696e1 100644
--- a/build/ba0.vcxproj.filters
+++ b/build/ba0.vcxproj.filters
@@ -58,6 +58,9 @@
Masks
+
+ Masks
+
diff --git a/build/gfm.vcxproj b/build/gfm.vcxproj
index 400db6005..65148f30b 100644
--- a/build/gfm.vcxproj
+++ b/build/gfm.vcxproj
@@ -140,7 +140,8 @@
$(IntDir)$(TargetName).bsc
- "C:\CampoRepo\campo\build\signtool.exe" sign /a /s MY /n "Sirio Informatica e Sistemi SPA" /fd sha256 /tr http://timestamp.digicert.com /v "$(TargetPath)"
+
+
diff --git a/build/xvtdb.vcxproj b/build/xvtdb.vcxproj
index e0c1fc521..b4da2f3a2 100644
--- a/build/xvtdb.vcxproj
+++ b/build/xvtdb.vcxproj
@@ -96,7 +96,8 @@
$(IntDir)$(TargetName).bsc
- "C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\signtool.exe" sign /a /s MY /n "Sirio Informatica e Sistemi SPA" /fd sha256 /tr http://timestamp.digicert.com /v "$(TargetPath)"
+
+
diff --git a/cd/test/ba0140.ini b/cd/test/ba0140.ini
new file mode 100644
index 000000000..055bfb0ca
--- /dev/null
+++ b/cd/test/ba0140.ini
@@ -0,0 +1,37 @@
+[Main]
+Demo=0
+
+[ba1]
+Edit_4 = ba3 -0
+Edit_5 = ba3 -0
+Edit_6 = ba4 -1
+File(203) = batbval.msk|X
+File(320) = recdesc\dir29.xml|X
+File(502) = recdesc\trc29.xml|X
+Patch = 140
+Versione = 20230100
+
+[ba99]
+Kill(0) = wxmsw240.dll|x
+Kill(1) = batbsce.txt|x
+Kill(2) = bastfsc.rep|x
+Kill(3) = bastfsc.msk|x
+Kill(4) = bastcms.msk|x
+Kill(5) = bastcms.rep|x
+Kill(6) = bastuue.rep|x
+Kill(7) = bastuue.msk|x
+
+[ba]
+Data = 09-04-2024
+DescrPatch = Tabella valute
+Descrizione = Base
+Dischi = 1
+Moduli = sy
+OEM =
+Patch = 140
+PostProcess = bainst -0 BA
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ba0140.txt b/cd/test/ba0140.txt
new file mode 100644
index 000000000..46e336f5b
--- /dev/null
+++ b/cd/test/ba0140.txt
@@ -0,0 +1,8 @@
+recdesc\trc29.xml
+batbval.msk
+recdesc\dir29.xml
+
+ Patch 0140
+ __________
+
+Aggiunto IBAN alle scadenze
diff --git a/cd/test/ba0140.zip b/cd/test/ba0140.zip
new file mode 100644
index 000000000..5b449df6c
Binary files /dev/null and b/cd/test/ba0140.zip differ
diff --git a/cd/test/ba0144.ini b/cd/test/ba0144.ini
new file mode 100644
index 000000000..67301e651
--- /dev/null
+++ b/cd/test/ba0144.ini
@@ -0,0 +1,39 @@
+[Main]
+Demo=0
+
+[ba1]
+Edit_4 = ba3 -0
+Edit_5 = ba3 -0
+Edit_6 = ba4 -1
+File(4) = ba2.exe|X
+File(39) = ba3.exe|X
+File(40) = ba3200a.msk|X
+File(49) = ba4.exe|X
+File(53) = ba4300a.msk|X
+Patch =
+Versione = 20230100
+
+[ba99]
+Kill(0) = wxmsw240.dll|x
+Kill(1) = batbsce.txt|x
+Kill(2) = bastfsc.rep|x
+Kill(3) = bastfsc.msk|x
+Kill(4) = bastcms.msk|x
+Kill(5) = bastcms.rep|x
+Kill(6) = bastuue.rep|x
+Kill(7) = bastuue.msk|x
+
+[ba]
+Data = 27-05-2024
+DescrPatch = Aggiunti pił sergenti ODBC\nTabella sorgenti ODBC\ncorretta ricerca persone fisiche\nSupporto licenze web server
+Descrizione = Base
+Dischi = 1
+Moduli = sy
+OEM =
+Patch = 0144
+PostProcess = bainst -0 BA
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ba0144.txt b/cd/test/ba0144.txt
new file mode 100644
index 000000000..b10390cc4
--- /dev/null
+++ b/cd/test/ba0144.txt
@@ -0,0 +1,13 @@
+ba2.exe
+ba4.exe
+ba3200a.msk
+ba3.exe
+ba4300a.msk
+
+ Patch 0144
+ __________
+
+Aggiunti pił sergenti ODBC
+Tabella sorgenti ODBC
+corretta ricerca persone fisiche
+Supporto licenze web server
diff --git a/cd/test/ba0144.zip b/cd/test/ba0144.zip
new file mode 100644
index 000000000..a6cde5662
Binary files /dev/null and b/cd/test/ba0144.zip differ
diff --git a/cd/test/ba0145.ini b/cd/test/ba0145.ini
new file mode 100644
index 000000000..92ef3ec66
--- /dev/null
+++ b/cd/test/ba0145.ini
@@ -0,0 +1,42 @@
+[Main]
+Demo=0
+
+[ba1]
+Edit_4 = ba3 -0
+Edit_5 = ba3 -0
+Edit_6 = ba4 -1
+File(4) = ba2.exe|X
+File(39) = ba3.exe|X
+File(40) = ba3200a.msk|X
+File(49) = ba4.exe|X
+File(53) = ba4300a.msk|X
+File(615) = ba2900a.msk|X
+File(616) = batbdsn.msk|X
+File(617) = ba3400a.msk|X
+Patch =
+Versione = 20230100
+
+[ba99]
+Kill(0) = batbsce.txt|x
+Kill(1) = wxmsw240.dll|x
+Kill(2) = bastcms.rep|x
+Kill(3) = bastcms.msk|x
+Kill(4) = bastfsc.msk|x
+Kill(5) = bastfsc.rep|x
+Kill(6) = bastuue.msk|x
+Kill(7) = bastuue.rep|x
+
+[ba]
+Data = 28-05-2024
+DescrPatch = Aggiunti pił sergenti ODBC\nTabella sorgenti ODBC\ncorretta ricerca persone fisiche\nSupporto licenze web server
+Descrizione = Base
+Dischi = 1
+Moduli = sy
+OEM =
+Patch = 0145
+PostProcess = bainst -0 BA
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ba0145.txt b/cd/test/ba0145.txt
new file mode 100644
index 000000000..ee76869ba
--- /dev/null
+++ b/cd/test/ba0145.txt
@@ -0,0 +1,16 @@
+ba2900a.msk
+ba3400a.msk
+batbdsn.msk
+ba2.exe
+ba4.exe
+ba3200a.msk
+ba3.exe
+ba4300a.msk
+
+ Patch 0145
+ __________
+
+Aggiunti pił sergenti ODBC
+Tabella sorgenti ODBC
+corretta ricerca persone fisiche
+Supporto licenze web server
diff --git a/cd/test/ba0145.zip b/cd/test/ba0145.zip
new file mode 100644
index 000000000..b49987be4
Binary files /dev/null and b/cd/test/ba0145.zip differ
diff --git a/cd/test/ca0144.ini b/cd/test/ca0144.ini
new file mode 100644
index 000000000..9bdddd5d9
--- /dev/null
+++ b/cd/test/ca0144.ini
@@ -0,0 +1,37 @@
+[Main]
+Demo=0
+
+[ca1]
+Edit_106 = ca0 -3
+Edit_107 = ca2 -0
+Edit_146 = ca0 -4
+Edit_147 = ca0 -5
+Edit_148 = ca0 -6
+Edit_149 = ca0 -7
+File(0) = ca0.exe|X
+File(22) = ca2.exe|X
+File(28) = ca3.exe|X
+File(29) = ca3100.msk|X
+File(32) = ca3200.msk|X
+File(35) = ca3300.msk|X
+File(40) = ca3600.msk|X
+File(42) = ca3700.msk|X
+File(45) = ca3800.msk|X
+File(52) = ca3900.msk|X
+Patch = 144
+Versione = 20230100
+
+[ca]
+Data = 15-01-2024
+DescrPatch = Corretto salvataggio dir e trc
+Descrizione = Contabilita' Analitica
+Dischi = 1
+Moduli = ba,cg
+OEM =
+Patch = 144
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ca0144.txt b/cd/test/ca0144.txt
new file mode 100644
index 000000000..a56a42360
--- /dev/null
+++ b/cd/test/ca0144.txt
@@ -0,0 +1,15 @@
+ca2.exe
+ca0.exe
+ca3200.msk
+ca3.exe
+ca3600.msk
+ca3100.msk
+ca3300.msk
+ca3700.msk
+ca3800.msk
+ca3900.msk
+
+ Patch 0144
+ __________
+
+Corretta esportazione excel della stima ricavi per competenza
diff --git a/cd/test/ca0144.zip b/cd/test/ca0144.zip
new file mode 100644
index 000000000..594d750fe
Binary files /dev/null and b/cd/test/ca0144.zip differ
diff --git a/cd/test/ca0146.ini b/cd/test/ca0146.ini
new file mode 100644
index 000000000..cd7b48d2c
--- /dev/null
+++ b/cd/test/ca0146.ini
@@ -0,0 +1,34 @@
+[Main]
+Demo=0
+
+[ca1]
+Edit_106 = ca0 -3
+Edit_107 = ca2 -0
+Edit_146 = ca0 -4
+Edit_147 = ca0 -5
+Edit_148 = ca0 -6
+Edit_149 = ca0 -7
+File(0) = ca0.exe|X
+File(22) = ca2.exe|X
+File(35) = ca3300.msk|X
+File(40) = ca3600.msk|X
+File(42) = ca3700.msk|X
+File(45) = ca3800.msk|X
+File(52) = ca3900.msk|X
+Patch = 146
+Versione = 20230100
+
+[ca]
+Data = 15-01-2024
+DescrPatch = Corretto salvataggio dir e trc
+Descrizione = Contabilita' Analitica
+Dischi = 1
+Moduli = ba,cg
+OEM =
+Patch = 146
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ca0146.txt b/cd/test/ca0146.txt
new file mode 100644
index 000000000..166da8641
--- /dev/null
+++ b/cd/test/ca0146.txt
@@ -0,0 +1,12 @@
+ca2.exe
+ca0.exe
+ca3600.msk
+ca3300.msk
+ca3700.msk
+ca3800.msk
+ca3900.msk
+
+ Patch 0146
+ __________
+
+Aggiunti pił sergenti ODBC
diff --git a/cd/test/ca0146.zip b/cd/test/ca0146.zip
new file mode 100644
index 000000000..b49259583
Binary files /dev/null and b/cd/test/ca0146.zip differ
diff --git a/cd/test/ca0148.ini b/cd/test/ca0148.ini
new file mode 100644
index 000000000..3b4db8bb3
--- /dev/null
+++ b/cd/test/ca0148.ini
@@ -0,0 +1,33 @@
+[Main]
+Demo=0
+
+[ca1]
+Edit_106 = ca0 -3
+Edit_107 = ca2 -0
+Edit_146 = ca0 -4
+Edit_147 = ca0 -5
+Edit_148 = ca0 -6
+Edit_149 = ca0 -7
+File(8) = ca1.exe|X
+File(12) = ca1400a.msk|X
+File(14) = ca1500a.msk|X
+File(16) = ca1600a.msk|X
+File(18) = ca1700a.msk|X
+File(20) = ca1800a.msk|X
+Patch =
+Versione = 20230100
+
+[ca]
+Data = 29-05-2024
+DescrPatch = Aggiunti pił sergenti ODBC
+Descrizione = Contabilita' Analitica
+Dischi = 1
+Moduli = ba,cg
+OEM =
+Patch = 0148
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ca0148.txt b/cd/test/ca0148.txt
new file mode 100644
index 000000000..aa3dc8b07
--- /dev/null
+++ b/cd/test/ca0148.txt
@@ -0,0 +1,11 @@
+ca1.exe
+ca1500a.msk
+ca1800a.msk
+ca1600a.msk
+ca1700a.msk
+ca1400a.msk
+
+ Patch 0148
+ __________
+
+Aggiunti pił sergenti ODBC
diff --git a/cd/test/ca0148.zip b/cd/test/ca0148.zip
new file mode 100644
index 000000000..1b7dd66d2
Binary files /dev/null and b/cd/test/ca0148.zip differ
diff --git a/cd/test/ce0146.ini b/cd/test/ce0146.ini
new file mode 100644
index 000000000..b86209572
--- /dev/null
+++ b/cd/test/ce0146.ini
@@ -0,0 +1,27 @@
+[Main]
+Demo=0
+
+[ce1]
+Edit_4 = ce0 -0
+Edit_5 = ce0 -0
+File(2) = ce0.exe|X
+File(10) = ce1.exe|X
+File(25) = ce2.exe|X
+File(32) = ce3.exe|X
+Patch = 146
+Versione = 20230100
+
+[ce]
+Data = 15-01-2024
+DescrPatch = Corretto salvataggio dir e trc
+Descrizione = Cespiti
+Dischi = 1
+Moduli = ba,cg
+OEM =
+Patch = 146
+PostProcess = bainst -0 CE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ce0146.txt b/cd/test/ce0146.txt
new file mode 100644
index 000000000..51a5f101f
--- /dev/null
+++ b/cd/test/ce0146.txt
@@ -0,0 +1,9 @@
+ce2.exe
+ce3.exe
+ce0.exe
+ce1.exe
+
+ Patch 0146
+ __________
+
+Aggiunti pił sergenti ODBC
diff --git a/cd/test/ce0146.zip b/cd/test/ce0146.zip
new file mode 100644
index 000000000..4906ac867
Binary files /dev/null and b/cd/test/ce0146.zip differ
diff --git a/cd/test/cg0138.ini b/cd/test/cg0138.ini
new file mode 100644
index 000000000..1e898cfac
--- /dev/null
+++ b/cd/test/cg0138.ini
@@ -0,0 +1,98 @@
+[Main]
+Demo=0
+
+[cg1]
+Edit_23 = cg2 -0
+File(91) = cg7.exe|X
+File(120) = cg7600o.rep|X
+File(125) = cg7700b.rep|X
+File(130) = cg7700g.rep|X
+Patch = 138
+Versione = 20230100
+
+[cg99]
+Kill(0) = bastntb.rep|x
+Kill(1) = bastvet.msk|x
+Kill(2) = bastpdb.msk|x
+Kill(3) = bastmsp.msk|x
+Kill(4) = batbarb.msk|x
+Kill(5) = bastndo.rep|x
+Kill(6) = bastesc.msk|x
+Kill(7) = batbvet.msk|x
+Kill(8) = bastzon.msk|x
+Kill(9) = bastcve.rep|x
+Kill(10) = batbivd.msk|x
+Kill(11) = batbtit.msk|x
+Kill(12) = bastnot.msk|x
+Kill(13) = bastcco.msk|x
+Kill(14) = batbcco.msk|x
+Kill(15) = bastscc.msk|x
+Kill(16) = batbleg.msk|x
+Kill(17) = batblia.msk|x
+Kill(18) = bastpor.msk|x
+Kill(19) = batbcam.msk|x
+Kill(20) = batbind.msk|x
+Kill(21) = bastcco.rep|x
+Kill(22) = batbntb.msk|x
+Kill(23) = bastpor.rep|x
+Kill(24) = bastcve.msk|x
+Kill(25) = batbesc.msk|x
+Kill(26) = bastleg.msk|x
+Kill(27) = bastmsp.rep|x
+Kill(28) = batbcfi.msk|x
+Kill(29) = bastarb.rep|x
+Kill(30) = batbins.msk|x
+Kill(31) = batblia.msk|x
+Kill(32) = batbscc.msk|x
+Kill(33) = bastivd.msk|x
+Kill(34) = batbnot.msk|x
+Kill(35) = bastreg.rep|x
+Kill(36) = bastnot.rep|x
+Kill(37) = batbpdb.msk|x
+Kill(38) = cgtbcon.msk|x
+Kill(39) = bastver.rep|x
+Kill(40) = bastcfi.msk|x
+Kill(41) = bastntb.msk|x
+Kill(42) = bastpdb.rep|x
+Kill(43) = bastesc.rep|x
+Kill(44) = bastdpn.rep|x
+Kill(45) = bastarb.msk|x
+Kill(46) = bastreg.msk|x
+Kill(47) = batbinl.msk|x
+Kill(48) = bastivd.rep|x
+Kill(49) = bastndo.msk|x
+Kill(50) = batbdel.msk|x
+Kill(51) = batbmsp.msk|x
+Kill(52) = batbreg.msk|x
+Kill(53) = bastvet.rep|x
+Kill(54) = batblbu.msk|x
+Kill(55) = bastcam.msk|x
+Kill(56) = bastdpn.msk|x
+Kill(57) = batbzon.msk|x
+Kill(58) = bastscc.rep|x
+Kill(59) = batbdpn.msk|x
+Kill(60) = batbver.msk|x
+Kill(61) = bastleg.rep|x
+Kill(62) = bastzon.rep|x
+Kill(63) = batbcve.msk|x
+Kill(64) = bastcfi.rep|x
+Kill(65) = bastver.msk|x
+Kill(66) = batbndo.msk|x
+Kill(67) = batbtra.msk|x
+Kill(68) = bastcam.rep|x
+Kill(69) = batbpor.msk|x
+
+[cg]
+Data = 11-04-2024
+DescrPatch = Corretta stampa mese di liquidazione\r\nCorretta abilitazione quadratura libro giornale
+Descrizione = Contabilita' Generale
+Dischi = 1
+Moduli = ba
+OEM =
+Patch = 138
+PostProcess = bainst -0 CG
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/cg0138.txt b/cd/test/cg0138.txt
new file mode 100644
index 000000000..a92a71551
--- /dev/null
+++ b/cd/test/cg0138.txt
@@ -0,0 +1,10 @@
+cg7600o.rep
+cg7700b.rep
+cg7700g.rep
+cg7.exe
+
+ Patch 0138
+ __________
+
+Corretta stampa mese di liquidazione
+Corretta abilitazione quadratura libro giornale
diff --git a/cd/test/cg0138.zip b/cd/test/cg0138.zip
new file mode 100644
index 000000000..595e25651
Binary files /dev/null and b/cd/test/cg0138.zip differ
diff --git a/cd/test/cg0140.ini b/cd/test/cg0140.ini
new file mode 100644
index 000000000..0ce429f10
--- /dev/null
+++ b/cd/test/cg0140.ini
@@ -0,0 +1,96 @@
+[Main]
+Demo=0
+
+[cg1]
+Edit_23 = cg2 -0
+File(11) = cg2.exe|X
+File(14) = cg2100c.msk|X
+Patch = 140
+Versione = 20230100
+
+[cg99]
+Kill(0) = batbcam.msk|x
+Kill(1) = batbesc.msk|x
+Kill(2) = batblia.msk|x
+Kill(3) = bastpor.msk|x
+Kill(4) = bastcve.msk|x
+Kill(5) = batbins.msk|x
+Kill(6) = bastmsp.rep|x
+Kill(7) = bastivd.msk|x
+Kill(8) = bastleg.msk|x
+Kill(9) = batbscc.msk|x
+Kill(10) = bastscc.msk|x
+Kill(11) = bastcco.rep|x
+Kill(12) = batbcco.msk|x
+Kill(13) = batbind.msk|x
+Kill(14) = batblia.msk|x
+Kill(15) = bastpor.rep|x
+Kill(16) = batbleg.msk|x
+Kill(17) = batbntb.msk|x
+Kill(18) = batbtit.msk|x
+Kill(19) = batbivd.msk|x
+Kill(20) = bastcco.msk|x
+Kill(21) = bastnot.msk|x
+Kill(22) = batbdpn.msk|x
+Kill(23) = bastver.msk|x
+Kill(24) = bastscc.rep|x
+Kill(25) = bastcfi.rep|x
+Kill(26) = batbtra.msk|x
+Kill(27) = batbndo.msk|x
+Kill(28) = bastndo.msk|x
+Kill(29) = bastcam.msk|x
+Kill(30) = bastleg.rep|x
+Kill(31) = bastivd.rep|x
+Kill(32) = batblbu.msk|x
+Kill(33) = batbver.msk|x
+Kill(34) = batbzon.msk|x
+Kill(35) = batbcve.msk|x
+Kill(36) = bastdpn.msk|x
+Kill(37) = bastzon.rep|x
+Kill(38) = bastver.rep|x
+Kill(39) = bastarb.msk|x
+Kill(40) = batbmsp.msk|x
+Kill(41) = cgtbcon.msk|x
+Kill(42) = bastdpn.rep|x
+Kill(43) = batbdel.msk|x
+Kill(44) = batbinl.msk|x
+Kill(45) = bastvet.rep|x
+Kill(46) = bastreg.msk|x
+Kill(47) = batbreg.msk|x
+Kill(48) = bastarb.rep|x
+Kill(49) = bastreg.rep|x
+Kill(50) = bastntb.msk|x
+Kill(51) = batbcfi.msk|x
+Kill(52) = batbnot.msk|x
+Kill(53) = bastcfi.msk|x
+Kill(54) = batbpdb.msk|x
+Kill(55) = bastesc.rep|x
+Kill(56) = bastnot.rep|x
+Kill(57) = bastpdb.rep|x
+Kill(58) = batbpor.msk|x
+Kill(59) = bastcam.rep|x
+Kill(60) = bastcve.rep|x
+Kill(61) = bastzon.msk|x
+Kill(62) = bastvet.msk|x
+Kill(63) = bastntb.rep|x
+Kill(64) = bastndo.rep|x
+Kill(65) = batbarb.msk|x
+Kill(66) = bastmsp.msk|x
+Kill(67) = bastpdb.msk|x
+Kill(68) = batbvet.msk|x
+Kill(69) = bastesc.msk|x
+
+[cg]
+Data = 20-04-2024
+DescrPatch = Corretta stampa mese di liquidazione\r\nCorretta abilitazione quadratura libro giornale
+Descrizione = Contabilita' Generale
+Dischi = 1
+Moduli = ba
+OEM =
+Patch = 140
+PostProcess = bainst -0 CG
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/cg0140.txt b/cd/test/cg0140.txt
new file mode 100644
index 000000000..73c54e28c
--- /dev/null
+++ b/cd/test/cg0140.txt
@@ -0,0 +1,7 @@
+cg2100c.msk
+cg2.exe
+
+ Patch 0140
+ __________
+
+Aggiunto IBAN alle scadenze
diff --git a/cd/test/cg0140.zip b/cd/test/cg0140.zip
new file mode 100644
index 000000000..23ddbc8d3
Binary files /dev/null and b/cd/test/cg0140.zip differ
diff --git a/cd/test/cg0142.ini b/cd/test/cg0142.ini
new file mode 100644
index 000000000..f72c82caa
--- /dev/null
+++ b/cd/test/cg0142.ini
@@ -0,0 +1,95 @@
+[Main]
+Demo=0
+
+[cg1]
+Edit_23 = cg2 -0
+File(43) = cg4.exe|X
+Patch = 0142
+Versione = 20230100
+
+[cg99]
+Kill(0) = batbivd.msk|x
+Kill(1) = bastcfi.rep|x
+Kill(2) = bastivd.rep|x
+Kill(3) = batbtit.msk|x
+Kill(4) = bastscc.rep|x
+Kill(5) = bastleg.rep|x
+Kill(6) = batbndo.msk|x
+Kill(7) = batbver.msk|x
+Kill(8) = batbtra.msk|x
+Kill(9) = batblbu.msk|x
+Kill(10) = bastpor.rep|x
+Kill(11) = bastnot.msk|x
+Kill(12) = batblia.msk|x
+Kill(13) = bastcco.msk|x
+Kill(14) = batbntb.msk|x
+Kill(15) = bastver.msk|x
+Kill(16) = batbleg.msk|x
+Kill(17) = batbdpn.msk|x
+Kill(18) = bastcco.rep|x
+Kill(19) = bastscc.msk|x
+Kill(20) = batbind.msk|x
+Kill(21) = batbcco.msk|x
+Kill(22) = bastcam.rep|x
+Kill(23) = batbarb.msk|x
+Kill(24) = batbpor.msk|x
+Kill(25) = bastndo.rep|x
+Kill(26) = bastpdb.msk|x
+Kill(27) = bastmsp.msk|x
+Kill(28) = bastreg.rep|x
+Kill(29) = bastesc.rep|x
+Kill(30) = bastzon.msk|x
+Kill(31) = bastarb.rep|x
+Kill(32) = batbpdb.msk|x
+Kill(33) = bastcve.rep|x
+Kill(34) = bastpdb.rep|x
+Kill(35) = bastntb.rep|x
+Kill(36) = bastnot.rep|x
+Kill(37) = bastvet.msk|x
+Kill(38) = bastarb.msk|x
+Kill(39) = bastvet.rep|x
+Kill(40) = batbcfi.msk|x
+Kill(41) = bastver.rep|x
+Kill(42) = batbinl.msk|x
+Kill(43) = bastntb.msk|x
+Kill(44) = batbreg.msk|x
+Kill(45) = bastcfi.msk|x
+Kill(46) = bastreg.msk|x
+Kill(47) = batbnot.msk|x
+Kill(48) = bastcam.msk|x
+Kill(49) = batbcve.msk|x
+Kill(50) = cgtbcon.msk|x
+Kill(51) = bastndo.msk|x
+Kill(52) = batbzon.msk|x
+Kill(53) = batbmsp.msk|x
+Kill(54) = bastzon.rep|x
+Kill(55) = batbdel.msk|x
+Kill(56) = bastdpn.msk|x
+Kill(57) = bastdpn.rep|x
+Kill(58) = bastesc.msk|x
+Kill(59) = batbvet.msk|x
+Kill(60) = batbscc.msk|x
+Kill(61) = bastleg.msk|x
+Kill(62) = batbesc.msk|x
+Kill(63) = batbcam.msk|x
+Kill(64) = batbins.msk|x
+Kill(65) = bastcve.msk|x
+Kill(66) = bastpor.msk|x
+Kill(67) = batblia.msk|x
+Kill(68) = bastivd.msk|x
+Kill(69) = bastmsp.rep|x
+
+[cg]
+Data = 16-05-2024
+DescrPatch = Corretto prospetto precedente sui registri
+Descrizione = Contabilita' Generale
+Dischi = 1
+Moduli = ba
+OEM =
+Patch = 142
+PostProcess = bainst -0 CG
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/cg0142.txt b/cd/test/cg0142.txt
new file mode 100644
index 000000000..b9020b66d
--- /dev/null
+++ b/cd/test/cg0142.txt
@@ -0,0 +1,6 @@
+cg4.exe
+
+ Patch 0142
+ __________
+
+Corretto prospetto precedente sui registri
diff --git a/cd/test/cg0142.zip b/cd/test/cg0142.zip
new file mode 100644
index 000000000..debdb6022
Binary files /dev/null and b/cd/test/cg0142.zip differ
diff --git a/cd/test/cg0143.ini b/cd/test/cg0143.ini
new file mode 100644
index 000000000..68f7f0634
--- /dev/null
+++ b/cd/test/cg0143.ini
@@ -0,0 +1,95 @@
+[Main]
+Demo=0
+
+[cg1]
+Edit_23 = cg2 -0
+File(43) = cg4.exe|X
+Patch = 0143
+Versione = 20230100
+
+[cg99]
+Kill(0) = batbivd.msk|x
+Kill(1) = bastcfi.rep|x
+Kill(2) = bastivd.rep|x
+Kill(3) = batbtit.msk|x
+Kill(4) = bastscc.rep|x
+Kill(5) = bastleg.rep|x
+Kill(6) = batbndo.msk|x
+Kill(7) = batbver.msk|x
+Kill(8) = batbtra.msk|x
+Kill(9) = batblbu.msk|x
+Kill(10) = bastpor.rep|x
+Kill(11) = bastnot.msk|x
+Kill(12) = batblia.msk|x
+Kill(13) = bastcco.msk|x
+Kill(14) = batbntb.msk|x
+Kill(15) = bastver.msk|x
+Kill(16) = batbleg.msk|x
+Kill(17) = batbdpn.msk|x
+Kill(18) = bastcco.rep|x
+Kill(19) = bastscc.msk|x
+Kill(20) = batbind.msk|x
+Kill(21) = batbcco.msk|x
+Kill(22) = bastcam.rep|x
+Kill(23) = batbarb.msk|x
+Kill(24) = batbpor.msk|x
+Kill(25) = bastndo.rep|x
+Kill(26) = bastpdb.msk|x
+Kill(27) = bastmsp.msk|x
+Kill(28) = bastreg.rep|x
+Kill(29) = bastesc.rep|x
+Kill(30) = bastzon.msk|x
+Kill(31) = bastarb.rep|x
+Kill(32) = batbpdb.msk|x
+Kill(33) = bastcve.rep|x
+Kill(34) = bastpdb.rep|x
+Kill(35) = bastntb.rep|x
+Kill(36) = bastnot.rep|x
+Kill(37) = bastvet.msk|x
+Kill(38) = bastarb.msk|x
+Kill(39) = bastvet.rep|x
+Kill(40) = batbcfi.msk|x
+Kill(41) = bastver.rep|x
+Kill(42) = batbinl.msk|x
+Kill(43) = bastntb.msk|x
+Kill(44) = batbreg.msk|x
+Kill(45) = bastcfi.msk|x
+Kill(46) = bastreg.msk|x
+Kill(47) = batbnot.msk|x
+Kill(48) = bastcam.msk|x
+Kill(49) = batbcve.msk|x
+Kill(50) = cgtbcon.msk|x
+Kill(51) = bastndo.msk|x
+Kill(52) = batbzon.msk|x
+Kill(53) = batbmsp.msk|x
+Kill(54) = bastzon.rep|x
+Kill(55) = batbdel.msk|x
+Kill(56) = bastdpn.msk|x
+Kill(57) = bastdpn.rep|x
+Kill(58) = bastesc.msk|x
+Kill(59) = batbvet.msk|x
+Kill(60) = batbscc.msk|x
+Kill(61) = bastleg.msk|x
+Kill(62) = batbesc.msk|x
+Kill(63) = batbcam.msk|x
+Kill(64) = batbins.msk|x
+Kill(65) = bastcve.msk|x
+Kill(66) = bastpor.msk|x
+Kill(67) = batblia.msk|x
+Kill(68) = bastivd.msk|x
+Kill(69) = bastmsp.rep|x
+
+[cg]
+Data = 16-05-2024
+DescrPatch = Corretto prospetto precedente sui registri
+Descrizione = Contabilita' Generale
+Dischi = 1
+Moduli = ba
+OEM =
+Patch = 143
+PostProcess = bainst -0 CG
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/cg0143.txt b/cd/test/cg0143.txt
new file mode 100644
index 000000000..14cf830f6
--- /dev/null
+++ b/cd/test/cg0143.txt
@@ -0,0 +1,7 @@
+cg4.exe
+
+ Patch 0143
+ __________
+
+Corretto prospetto successivi sulla liquiidazione
+Corretta stampa mivimenti in definitivo se non ci sono movimenti da stamapare
diff --git a/cd/test/cg0143.zip b/cd/test/cg0143.zip
new file mode 100644
index 000000000..184c13104
Binary files /dev/null and b/cd/test/cg0143.zip differ
diff --git a/cd/test/cg0144.ini b/cd/test/cg0144.ini
new file mode 100644
index 000000000..93ccfb72e
--- /dev/null
+++ b/cd/test/cg0144.ini
@@ -0,0 +1,95 @@
+[Main]
+Demo=0
+
+[cg1]
+Edit_23 = cg2 -0
+File(43) = cg4.exe|X
+Patch = 0144
+Versione = 20230100
+
+[cg99]
+Kill(0) = bastscc.msk|x
+Kill(1) = bastndo.rep|x
+Kill(2) = bastarb.rep|x
+Kill(3) = bastcco.rep|x
+Kill(4) = batbpor.msk|x
+Kill(5) = bastzon.msk|x
+Kill(6) = bastmsp.msk|x
+Kill(7) = bastcve.rep|x
+Kill(8) = bastpdb.msk|x
+Kill(9) = batbpdb.msk|x
+Kill(10) = bastver.msk|x
+Kill(11) = batbcco.msk|x
+Kill(12) = batbntb.msk|x
+Kill(13) = batbind.msk|x
+Kill(14) = batbdpn.msk|x
+Kill(15) = batbarb.msk|x
+Kill(16) = batbleg.msk|x
+Kill(17) = bastcam.rep|x
+Kill(18) = bastnot.msk|x
+Kill(19) = bastpor.rep|x
+Kill(20) = bastcco.msk|x
+Kill(21) = batblia.msk|x
+Kill(22) = batbvet.msk|x
+Kill(23) = bastcve.msk|x
+Kill(24) = bastesc.msk|x
+Kill(25) = batbins.msk|x
+Kill(26) = batblia.msk|x
+Kill(27) = bastpor.msk|x
+Kill(28) = batbcve.msk|x
+Kill(29) = batbdel.msk|x
+Kill(30) = bastleg.msk|x
+Kill(31) = bastcam.msk|x
+Kill(32) = bastzon.rep|x
+Kill(33) = batbscc.msk|x
+Kill(34) = bastdpn.rep|x
+Kill(35) = batbcam.msk|x
+Kill(36) = bastdpn.msk|x
+Kill(37) = batbesc.msk|x
+Kill(38) = bastvet.rep|x
+Kill(39) = bastcfi.msk|x
+Kill(40) = bastndo.msk|x
+Kill(41) = bastarb.msk|x
+Kill(42) = batbreg.msk|x
+Kill(43) = cgtbcon.msk|x
+Kill(44) = batbnot.msk|x
+Kill(45) = batbmsp.msk|x
+Kill(46) = bastreg.msk|x
+Kill(47) = batbzon.msk|x
+Kill(48) = bastesc.rep|x
+Kill(49) = bastntb.rep|x
+Kill(50) = bastver.rep|x
+Kill(51) = bastreg.rep|x
+Kill(52) = bastpdb.rep|x
+Kill(53) = batbcfi.msk|x
+Kill(54) = bastvet.msk|x
+Kill(55) = bastntb.msk|x
+Kill(56) = bastnot.rep|x
+Kill(57) = batbinl.msk|x
+Kill(58) = bastmsp.rep|x
+Kill(59) = bastivd.msk|x
+Kill(60) = batblbu.msk|x
+Kill(61) = batbtra.msk|x
+Kill(62) = bastcfi.rep|x
+Kill(63) = batbivd.msk|x
+Kill(64) = bastleg.rep|x
+Kill(65) = bastscc.rep|x
+Kill(66) = batbtit.msk|x
+Kill(67) = bastivd.rep|x
+Kill(68) = batbver.msk|x
+Kill(69) = batbndo.msk|x
+
+[cg]
+Data = 19-05-2024
+DescrPatch = Corretto prospetto successivi sulla liquiidazione
+Descrizione = Contabilita' Generale
+Dischi = 1
+Moduli = ba
+OEM =
+Patch = 144
+PostProcess = bainst -0 CG
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/cg0144.txt b/cd/test/cg0144.txt
new file mode 100644
index 000000000..f3bbc687b
--- /dev/null
+++ b/cd/test/cg0144.txt
@@ -0,0 +1,7 @@
+cg4.exe
+
+ Patch 0144
+ __________
+
+Corretto prospetto successivi sulla liquiidazione
+Corretta stampa mivimenti in definitivo se non ci sono movimenti da stamapare
diff --git a/cd/test/cg0144.zip b/cd/test/cg0144.zip
new file mode 100644
index 000000000..5f89523ec
Binary files /dev/null and b/cd/test/cg0144.zip differ
diff --git a/cd/test/cg0146.ini b/cd/test/cg0146.ini
new file mode 100644
index 000000000..f5e2d875e
--- /dev/null
+++ b/cd/test/cg0146.ini
@@ -0,0 +1,104 @@
+[Main]
+Demo=0
+
+[cg1]
+Edit_23 = cg2 -0
+File(11) = cg2.exe|X
+Patch = 146
+Versione = 20230100
+
+[cg9]
+Edit_19 = cg0 -0
+Edit_20 = cg0 -1
+Edit_26 = cg0 -4
+Edit_5 = cg0 -5
+File(175) = cg0.exe|X
+Patch = 146
+Versione = 20230100
+
+[cg99]
+Kill(0) = bastpor.rep|x
+Kill(1) = batbins.msk|x
+Kill(2) = bastcam.msk|x
+Kill(3) = bastnot.msk|x
+Kill(4) = bastesc.msk|x
+Kill(5) = bastleg.msk|x
+Kill(6) = bastpor.msk|x
+Kill(7) = batbscc.msk|x
+Kill(8) = batblia.msk|x
+Kill(9) = bastzon.rep|x
+Kill(10) = batbarb.msk|x
+Kill(11) = batblia.msk|x
+Kill(12) = batbdpn.msk|x
+Kill(13) = bastcco.msk|x
+Kill(14) = bastcam.rep|x
+Kill(15) = bastcve.msk|x
+Kill(16) = batbleg.msk|x
+Kill(17) = batbvet.msk|x
+Kill(18) = batbcco.msk|x
+Kill(19) = bastver.msk|x
+Kill(20) = batbind.msk|x
+Kill(21) = batbntb.msk|x
+Kill(22) = bastivd.msk|x
+Kill(23) = bastscc.rep|x
+Kill(24) = bastmsp.rep|x
+Kill(25) = bastleg.rep|x
+Kill(26) = bastivd.rep|x
+Kill(27) = batbtit.msk|x
+Kill(28) = bastntb.rep|x
+Kill(29) = bastntb.msk|x
+Kill(30) = batbtra.msk|x
+Kill(31) = bastesc.rep|x
+Kill(32) = bastvet.msk|x
+Kill(33) = batblbu.msk|x
+Kill(34) = batbinl.msk|x
+Kill(35) = batbivd.msk|x
+Kill(36) = bastnot.rep|x
+Kill(37) = bastcfi.rep|x
+Kill(38) = bastcfi.msk|x
+Kill(39) = batbmsp.msk|x
+Kill(40) = bastreg.rep|x
+Kill(41) = bastvet.rep|x
+Kill(42) = batbnot.msk|x
+Kill(43) = bastver.rep|x
+Kill(44) = batbzon.msk|x
+Kill(45) = batbcfi.msk|x
+Kill(46) = bastreg.msk|x
+Kill(47) = bastpdb.rep|x
+Kill(48) = batbdel.msk|x
+Kill(49) = batbcam.msk|x
+Kill(50) = bastarb.msk|x
+Kill(51) = batbcve.msk|x
+Kill(52) = bastdpn.rep|x
+Kill(53) = bastndo.msk|x
+Kill(54) = batbesc.msk|x
+Kill(55) = cgtbcon.msk|x
+Kill(56) = bastdpn.msk|x
+Kill(57) = batbreg.msk|x
+Kill(58) = batbndo.msk|x
+Kill(59) = batbver.msk|x
+Kill(60) = batbpdb.msk|x
+Kill(61) = bastpdb.msk|x
+Kill(62) = bastndo.rep|x
+Kill(63) = bastscc.msk|x
+Kill(64) = bastzon.msk|x
+Kill(65) = batbpor.msk|x
+Kill(66) = bastcco.rep|x
+Kill(67) = bastarb.rep|x
+Kill(68) = bastcve.rep|x
+Kill(69) = bastmsp.msk|x
+
+[cg]
+Data = 19-05-2024
+DescrPatch = Corretto prospetto successivi sulla liquiidazione\r\nCorretta stampa mivimenti in definitivo se non ci sono movimenti da stamapare
+Descrizione = Contabilita' Generale
+Dischi = 1
+Moduli = ba
+OEM =
+Patch = 146
+PostProcess = bainst -0 CG
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/cg0146.txt b/cd/test/cg0146.txt
new file mode 100644
index 000000000..a08674315
--- /dev/null
+++ b/cd/test/cg0146.txt
@@ -0,0 +1,7 @@
+cg2.exe
+cg0.exe
+
+ Patch 0146
+ __________
+
+Aggiunte pił sergenti ODBC
diff --git a/cd/test/cg0146.zip b/cd/test/cg0146.zip
new file mode 100644
index 000000000..98b6c270f
Binary files /dev/null and b/cd/test/cg0146.zip differ
diff --git a/cd/test/ci0152.ini b/cd/test/ci0152.ini
new file mode 100644
index 000000000..75e30cd13
--- /dev/null
+++ b/cd/test/ci0152.ini
@@ -0,0 +1,23 @@
+[Main]
+Demo=0
+
+[ci2]
+File(21) = ci2.exe|X
+File(23) = ci2200a.msk|X
+Patch = 152
+Versione = 20230100
+
+[ci]
+Data = 05-03-2024
+DescrPatch = MascheraM
+Descrizione = Contabilita' Industriale
+Dischi = 1
+Moduli = ve
+OEM =
+Patch = 152
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ci0152.txt b/cd/test/ci0152.txt
new file mode 100644
index 000000000..0c43cafc1
--- /dev/null
+++ b/cd/test/ci0152.txt
@@ -0,0 +1,7 @@
+ci2.exe
+ci2200a.msk
+
+ Patch 0152
+ __________
+
+Evidenziato il periodo corrente
diff --git a/cd/test/ci0152.zip b/cd/test/ci0152.zip
new file mode 100644
index 000000000..3626a2aee
Binary files /dev/null and b/cd/test/ci0152.zip differ
diff --git a/cd/test/db0146.ini b/cd/test/db0146.ini
new file mode 100644
index 000000000..fd4174053
--- /dev/null
+++ b/cd/test/db0146.ini
@@ -0,0 +1,24 @@
+[Main]
+Demo=0
+
+[db1]
+Edit_4 = db0 -0
+Edit_5 = db0 -0
+File(1) = db0.exe|X
+Patch = 146
+Versione = 20230100
+
+[db]
+Data = 15-01-2024
+DescrPatch = Corretto salvataggio dir e trc
+Descrizione = Distinta Base
+Dischi = 1
+Moduli = mg
+OEM =
+Patch = 146
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/db0146.txt b/cd/test/db0146.txt
new file mode 100644
index 000000000..c9a17ac71
--- /dev/null
+++ b/cd/test/db0146.txt
@@ -0,0 +1,6 @@
+db0.exe
+
+ Patch 0146
+ __________
+
+Aggiunti pił sergenti ODBC
diff --git a/cd/test/db0146.zip b/cd/test/db0146.zip
new file mode 100644
index 000000000..05c90ce74
Binary files /dev/null and b/cd/test/db0146.zip differ
diff --git a/cd/test/ef0140.ini b/cd/test/ef0140.ini
new file mode 100644
index 000000000..6fbf5bd61
--- /dev/null
+++ b/cd/test/ef0140.ini
@@ -0,0 +1,29 @@
+[Main]
+Demo=0
+
+[ef1]
+Edit_163 = ef0 -1
+Edit_5 = ef0 -6
+File(5) = ef0.exe|X
+Patch = 140
+Versione = 20230100
+
+[ef99]
+Kill(0) = efstbnp.msk|x
+Kill(1) = eftbbnp.msk|x
+Kill(2) = efstbnp.rep|x
+
+[ef]
+Data = 19-03-2024
+DescrPatch = Corretta registrazione buoni di prelievo
+Descrizione = Effetti
+Dischi = 1
+Moduli = ve
+OEM =
+Patch = 140
+PostProcess = bainst -0 EF
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ef0140.txt b/cd/test/ef0140.txt
new file mode 100644
index 000000000..1635419fb
--- /dev/null
+++ b/cd/test/ef0140.txt
@@ -0,0 +1,7 @@
+ef0.exe
+
+ Patch 0140
+ __________
+
+Aggiunto IBAN alle scadenze
+Modificato il caricamento dell'IBAN nelle disposizioni di pagamento
diff --git a/cd/test/ef0140.zip b/cd/test/ef0140.zip
new file mode 100644
index 000000000..74480a35e
Binary files /dev/null and b/cd/test/ef0140.zip differ
diff --git a/cd/test/ef0144.ini b/cd/test/ef0144.ini
new file mode 100644
index 000000000..29c4e0811
--- /dev/null
+++ b/cd/test/ef0144.ini
@@ -0,0 +1,31 @@
+[Main]
+Demo=0
+
+[ef1]
+Edit_163 = ef0 -1
+Edit_5 = ef0 -6
+File(5) = ef0.exe|X
+File(13) = ef0500a.msk|X
+Patch = 0144
+Versione = 20230100
+
+[ef99]
+Kill(0) = eftbbnp.msk|x
+Kill(1) = efstbnp.msk|x
+Kill(2) = efstbnp.rep|x
+
+[ef]
+Data = 19-05-2024
+DescrPatch = Il nome del file e la cartella di output nell' emissione sono modificabili e la cartella viene salvata
+DescrPatch = Aggiunto IBAN alle scadenze\r\nModificato il caricamento dell'IBAN nelle disposizioni di pagamento
+Descrizione = Effetti
+Dischi = 1
+Moduli = ve
+OEM =
+Patch = 0144
+PostProcess = bainst -0 EF
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ef0144.txt b/cd/test/ef0144.txt
new file mode 100644
index 000000000..746e18bbc
--- /dev/null
+++ b/cd/test/ef0144.txt
@@ -0,0 +1,7 @@
+ef0.exe
+ef0500a.msk
+
+ Patch 0144
+ __________
+
+Il nome del file e la cartella di output nell' emissione sono modificabili e la cartella viene salvata
diff --git a/cd/test/ef0144.zip b/cd/test/ef0144.zip
new file mode 100644
index 000000000..71c415c89
Binary files /dev/null and b/cd/test/ef0144.zip differ
diff --git a/cd/test/ef0145.ini b/cd/test/ef0145.ini
new file mode 100644
index 000000000..99899661b
--- /dev/null
+++ b/cd/test/ef0145.ini
@@ -0,0 +1,30 @@
+[Main]
+Demo=0
+
+[ef1]
+Edit_163 = ef0 -1
+Edit_5 = ef0 -6
+File(5) = ef0.exe|X
+File(13) = ef0500a.msk|X
+Patch =
+Versione = 20230100
+
+[ef99]
+Kill(0) = eftbbnp.msk|x
+Kill(1) = efstbnp.msk|x
+Kill(2) = efstbnp.rep|x
+
+[ef]
+Data = 28-05-2024
+DescrPatch = Il nome del file e la cartella di output nell' emissione sono modificabili e la cartella viene salvata
+Descrizione = Effetti
+Dischi = 1
+Moduli = ve
+OEM =
+Patch = 0145
+PostProcess = bainst -0 EF
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ef0145.txt b/cd/test/ef0145.txt
new file mode 100644
index 000000000..7ba97d341
--- /dev/null
+++ b/cd/test/ef0145.txt
@@ -0,0 +1,7 @@
+ef0.exe
+ef0500a.msk
+
+ Patch 0145
+ __________
+
+Il nome del file e la cartella di output nell' emissione sono modificabili e la cartella viene salvata
diff --git a/cd/test/ef0145.zip b/cd/test/ef0145.zip
new file mode 100644
index 000000000..40a542920
Binary files /dev/null and b/cd/test/ef0145.zip differ
diff --git a/cd/test/fp0138.ini b/cd/test/fp0138.ini
new file mode 100644
index 000000000..4db51ccee
--- /dev/null
+++ b/cd/test/fp0138.ini
@@ -0,0 +1,21 @@
+[Main]
+Demo=0
+
+[fp0]
+File(0) = fp0.exe|X
+File(1) = fp0100a.msk|X
+Patch = 138
+Versione = 20231200
+
+[fp]
+Data = 09-04-2024
+DescrPatch = Aggiuto supporto reverse charge\nCorretta contabilizzazione
+Descrizione = Fattura Elettronica
+Dischi = 1
+Moduli = cg,ve
+OEM =
+Patch = 138
+PostProcess =
+PreProcess =
+Versione = 20231200
+
diff --git a/cd/test/fp0138.txt b/cd/test/fp0138.txt
new file mode 100644
index 000000000..258d3d351
--- /dev/null
+++ b/cd/test/fp0138.txt
@@ -0,0 +1,8 @@
+fp0.exe
+fp0100a.msk
+
+ Patch 0138
+ __________
+
+Aggiuto supporto reverse charge
+Corretta contabilizzazione
diff --git a/cd/test/fp0138.zip b/cd/test/fp0138.zip
new file mode 100644
index 000000000..0fcac0022
Binary files /dev/null and b/cd/test/fp0138.zip differ
diff --git a/cd/test/fp0140.ini b/cd/test/fp0140.ini
new file mode 100644
index 000000000..c36869ebe
--- /dev/null
+++ b/cd/test/fp0140.ini
@@ -0,0 +1,21 @@
+[Main]
+Demo=0
+
+[fp0]
+File(0) = fp0.exe|X
+File(1) = fp0100a.msk|X
+Patch = 140
+Versione = 20231200
+
+[fp]
+Data = 09-04-2024
+DescrPatch = Aggiuto supporto reverse charge\nCorretta contabilizzazione
+Descrizione = Fattura Elettronica
+Dischi = 1
+Moduli = cg,ve
+OEM =
+Patch = 140
+PostProcess =
+PreProcess =
+Versione = 20231200
+
diff --git a/cd/test/fp0140.txt b/cd/test/fp0140.txt
new file mode 100644
index 000000000..c6cd34a5c
--- /dev/null
+++ b/cd/test/fp0140.txt
@@ -0,0 +1,8 @@
+fp0.exe
+fp0100a.msk
+
+ Patch 0140
+ __________
+
+Aggiunto IBAN alle scadenze
+Aggiornamento IBAN sui fornitori
diff --git a/cd/test/fp0140.zip b/cd/test/fp0140.zip
new file mode 100644
index 000000000..912e76b2f
Binary files /dev/null and b/cd/test/fp0140.zip differ
diff --git a/cd/test/fp0142.ini b/cd/test/fp0142.ini
new file mode 100644
index 000000000..2e635677e
--- /dev/null
+++ b/cd/test/fp0142.ini
@@ -0,0 +1,20 @@
+[Main]
+Demo=0
+
+[fp0]
+File(0) = fp0.exe|X
+Patch = 142
+Versione = 20231200
+
+[fp]
+Data = 28-04-2024
+DescrPatch = Aggiunto IBAN alle scadenze\nAggiornamento IBAN sui fornitori
+Descrizione = Fattura Elettronica
+Dischi = 1
+Moduli = cg,ve
+OEM =
+Patch = 142
+PostProcess =
+PreProcess =
+Versione = 20231200
+
diff --git a/cd/test/fp0142.txt b/cd/test/fp0142.txt
new file mode 100644
index 000000000..24ecdd9af
--- /dev/null
+++ b/cd/test/fp0142.txt
@@ -0,0 +1,6 @@
+fp0.exe
+
+ Patch 0142
+ __________
+
+Scambiato nome e cognome negli xml
diff --git a/cd/test/fp0142.zip b/cd/test/fp0142.zip
new file mode 100644
index 000000000..83a90b403
Binary files /dev/null and b/cd/test/fp0142.zip differ
diff --git a/cd/test/fp0148.ini b/cd/test/fp0148.ini
new file mode 100644
index 000000000..c27ec84bb
--- /dev/null
+++ b/cd/test/fp0148.ini
@@ -0,0 +1,20 @@
+[Main]
+Demo=0
+
+[fp0]
+File(0) = fp0.exe|X
+Patch = 148
+Versione = 20231200
+
+[fp]
+Data = 04-06-2024
+DescrPatch = Scambiato nome e cognome negli xml
+Descrizione = Fattura Elettronica
+Dischi = 1
+Moduli = cg,ve
+OEM =
+Patch = 148
+PostProcess =
+PreProcess =
+Versione = 20231200
+
diff --git a/cd/test/fp0148.txt b/cd/test/fp0148.txt
new file mode 100644
index 000000000..32478366a
--- /dev/null
+++ b/cd/test/fp0148.txt
@@ -0,0 +1,6 @@
+fp0.exe
+
+ Patch 0148
+ __________
+
+Scambiato nome e cognome negli xml
diff --git a/cd/test/fp0148.zip b/cd/test/fp0148.zip
new file mode 100644
index 000000000..0da5cd857
Binary files /dev/null and b/cd/test/fp0148.zip differ
diff --git a/cd/test/fp0149.ini b/cd/test/fp0149.ini
new file mode 100644
index 000000000..ff26d2a7e
--- /dev/null
+++ b/cd/test/fp0149.ini
@@ -0,0 +1,20 @@
+[Main]
+Demo=0
+
+[fp0]
+File(0) = fp0.exe|X
+Patch =
+Versione = 20231200
+
+[fp]
+Data = 07-06-2024
+DescrPatch = Possibilitą di contabilizzate non per data competenza ma per data registrazione\r\nGestiti sconti all'interno delle righe\r\nModificata la generazione dei blocchi ddt e lettera d'intenti
+Descrizione = Fattura Elettronica
+Dischi = 1
+Moduli = cg,ve
+OEM =
+Patch = 0149
+PostProcess =
+PreProcess =
+Versione = 20231200
+
diff --git a/cd/test/fp0149.txt b/cd/test/fp0149.txt
new file mode 100644
index 000000000..43f149ace
--- /dev/null
+++ b/cd/test/fp0149.txt
@@ -0,0 +1,8 @@
+fp0.exe
+
+ Patch 0149
+ __________
+
+Possibilitą di contabilizzate non per data competenza ma per data registrazione
+Gestiti sconti all'interno delle righe
+Modificata la generazione dei blocchi ddt e lettera d'intenti
diff --git a/cd/test/fp0149.zip b/cd/test/fp0149.zip
new file mode 100644
index 000000000..fdf17d045
Binary files /dev/null and b/cd/test/fp0149.zip differ
diff --git a/cd/test/ic0138.ini b/cd/test/ic0138.ini
new file mode 100644
index 000000000..3501ac549
--- /dev/null
+++ b/cd/test/ic0138.ini
@@ -0,0 +1,25 @@
+[Main]
+Demo=0
+
+[ic0]
+File(0) = ic0.exe|X
+File(1) = ic0100a.msk|X
+File(2) = ic0100f.rep|X
+File(3) = icmenu.men|X
+File(4) = ic0200p.rep|X
+File(5) = ic0200a.msk|X
+Patch = 138
+Versione = 20230100
+
+[ic]
+Data = 18-09-2023
+DescrPatch =
+Descrizione = IVA per cassa
+Dischi = 1
+Moduli = sc
+OEM =
+Patch = 138
+PostProcess =
+PreProcess =
+Versione = 20230100
+
diff --git a/cd/test/ic0138.txt b/cd/test/ic0138.txt
new file mode 100644
index 000000000..782c1d95f
--- /dev/null
+++ b/cd/test/ic0138.txt
@@ -0,0 +1,12 @@
+ic0.exe
+ic0100a.msk
+ic0200p.rep
+ic0200a.msk
+ic0100f.rep
+icmenu.men
+ic0200a.msk
+
+ Patch 0138
+ __________
+
+Aggiunto report pagamenti sintetico
diff --git a/cd/test/ic0138.zip b/cd/test/ic0138.zip
new file mode 100644
index 000000000..b58b4096a
Binary files /dev/null and b/cd/test/ic0138.zip differ
diff --git a/cd/test/lv0145.ini b/cd/test/lv0145.ini
new file mode 100644
index 000000000..43b7c8e52
--- /dev/null
+++ b/cd/test/lv0145.ini
@@ -0,0 +1,23 @@
+[Main]
+Demo=0
+
+[lv1]
+Edit_168 = lv0 -3
+File(46) = lv2.exe|X
+Patch = 0145
+Versione = 20230100
+
+[lv]
+Data = 27-05-2024
+DescrPatch = Corretta creazione buoni
+Descrizione = Gestione lavanderie
+Dischi = 1
+Moduli = ve,mg
+OEM =
+Patch = 145
+PostProcess = bainst -0 LV
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/lv0145.txt b/cd/test/lv0145.txt
new file mode 100644
index 000000000..3fcde5450
--- /dev/null
+++ b/cd/test/lv0145.txt
@@ -0,0 +1,6 @@
+lv2.exe
+
+ Patch 0145
+ __________
+
+Corretta creazione buoni
diff --git a/cd/test/lv0145.zip b/cd/test/lv0145.zip
new file mode 100644
index 000000000..1c0a87beb
Binary files /dev/null and b/cd/test/lv0145.zip differ
diff --git a/cd/test/lv0150.ini b/cd/test/lv0150.ini
new file mode 100644
index 000000000..6b2921d4c
--- /dev/null
+++ b/cd/test/lv0150.ini
@@ -0,0 +1,25 @@
+[Main]
+Demo=0
+
+[lv1]
+Edit_168 = lv0 -3
+File(0) = lv0.exe|X
+File(78) = lvmenu.men|X
+File(156) = lv0a00a.msk|X
+Patch = 150
+Versione = 20230100
+
+[lv]
+Data = 27-05-2024
+DescrPatch = Corretta creazione buoni
+Descrizione = Gestione lavanderie
+Dischi = 1
+Moduli = ve,mg
+OEM =
+Patch = 150
+PostProcess = bainst -0 LV
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/lv0150.txt b/cd/test/lv0150.txt
new file mode 100644
index 000000000..65ec5fbbe
--- /dev/null
+++ b/cd/test/lv0150.txt
@@ -0,0 +1,8 @@
+lv0.exe
+lvmenu.men
+lv0a00a.msk
+
+ Patch 0150
+ __________
+
+Programma di gestione pacchi
diff --git a/cd/test/lv0150.zip b/cd/test/lv0150.zip
new file mode 100644
index 000000000..ec3af8a21
Binary files /dev/null and b/cd/test/lv0150.zip differ
diff --git a/cd/test/mg0122.ini b/cd/test/mg0122.ini
new file mode 100644
index 000000000..54cbd2747
--- /dev/null
+++ b/cd/test/mg0122.ini
@@ -0,0 +1,65 @@
+[Main]
+Demo=0
+
+[mg1]
+Edit_110 = mg1 -0
+File(5) = mg1.exe|X
+Patch = 122
+Versione = 20230100
+
+[mg9]
+Edit_4 = mg0 -0
+Edit_5 = mg0 -0
+File(47) = mg0.exe|X
+Patch = 122
+Versione = 20230100
+
+[mg99]
+Kill(0) = batbfcg.msk|x
+Kill(1) = batbubi.msk|x
+Kill(2) = efstbnp.rep|x
+Kill(3) = efstbnp.msk|x
+Kill(4) = eftbbnp.msk|x
+Kill(5) = bastfcg.msk|x
+
+[cg9]
+Edit_19 = cg0 -0
+Edit_20 = cg0 -1
+Edit_26 = cg0 -4
+Edit_5 = cg0 -5
+File(175) = cg0.exe|X
+Patch =
+Versione = 20230100
+
+[ve9]
+Edit_163 = ve0 -4
+Edit_33 = ve0 -0
+Edit_4 = ve0 -4
+Edit_47 = ve2 -3
+Edit_5 = ve0 -4
+File(160) = ve0.exe|X
+File(179) = ve2.exe|X
+Patch =
+Versione = 20230100
+
+[pr9]
+Edit_4 = pr0 -0
+Edit_5 = pr0 -0
+File(16) = pr0.exe|X
+Patch = 146
+Versione = 20230100
+
+[mg]
+Data = 10-03-2024
+DescrPatch = Corretto replay db
+Descrizione = Magazzino
+Dischi = 1
+Moduli = ba,cg9,ve9,pr9,ef9
+OEM =
+Patch = 0122
+PostProcess = bainst -0 MG
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/mg0122.txt b/cd/test/mg0122.txt
new file mode 100644
index 000000000..bf0ca5f73
--- /dev/null
+++ b/cd/test/mg0122.txt
@@ -0,0 +1,11 @@
+mg1.exe
+mg0.exe
+cg0.exe
+ve0.exe
+ve2.exe
+pr0.exe
+
+ Patch 0122
+ __________
+
+Aggiunti pił sergenti ODBC
diff --git a/cd/test/mg0122.zip b/cd/test/mg0122.zip
new file mode 100644
index 000000000..c64dfcc26
Binary files /dev/null and b/cd/test/mg0122.zip differ
diff --git a/cd/test/pe0146.ini b/cd/test/pe0146.ini
new file mode 100644
index 000000000..bd9850e06
--- /dev/null
+++ b/cd/test/pe0146.ini
@@ -0,0 +1,23 @@
+[Main]
+Demo=0
+
+[pe1]
+File(0) = pe0.exe|X
+File(3) = pe1.exe|X
+Patch = 146
+Versione = 20230100
+
+[pe]
+Data = 08-11-2023
+DescrPatch = pulsanti di copia e spostamento
+Descrizione = Preventivazione
+Dischi = 1
+Moduli = ve
+OEM = 3
+Patch = 146
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/pe0146.txt b/cd/test/pe0146.txt
new file mode 100644
index 000000000..c69bd18b3
--- /dev/null
+++ b/cd/test/pe0146.txt
@@ -0,0 +1,7 @@
+pe0.exe
+pe1.exe
+
+ Patch 0146
+ __________
+
+Aggiunti pił sergenti ODBC
diff --git a/cd/test/pe0146.zip b/cd/test/pe0146.zip
new file mode 100644
index 000000000..8b2b7b492
Binary files /dev/null and b/cd/test/pe0146.zip differ
diff --git a/cd/test/pe0147.ini b/cd/test/pe0147.ini
new file mode 100644
index 000000000..833be19a9
--- /dev/null
+++ b/cd/test/pe0147.ini
@@ -0,0 +1,23 @@
+[Main]
+Demo=0
+
+[pe1]
+File(0) = pe0.exe|X
+File(9) = pe0700a.msk|X
+Patch = 147
+Versione = 20230100
+
+[pe]
+Data = 08-11-2023
+DescrPatch = pulsanti di copia e spostamento
+Descrizione = Preventivazione
+Dischi = 1
+Moduli = ve
+OEM = 3
+Patch = 147
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/pe0147.txt b/cd/test/pe0147.txt
new file mode 100644
index 000000000..dc1417a52
--- /dev/null
+++ b/cd/test/pe0147.txt
@@ -0,0 +1,7 @@
+pe0700a.msk
+pe0.exe
+
+ Patch 0147
+ __________
+
+Scheletro programma importazione XPWE
diff --git a/cd/test/pe0147.zip b/cd/test/pe0147.zip
new file mode 100644
index 000000000..f61becc99
Binary files /dev/null and b/cd/test/pe0147.zip differ
diff --git a/cd/test/pr0146.ini b/cd/test/pr0146.ini
new file mode 100644
index 000000000..881b514f0
--- /dev/null
+++ b/cd/test/pr0146.ini
@@ -0,0 +1,22 @@
+[Main]
+Demo=0
+
+[pr9]
+Edit_4 = pr0 -0
+Edit_5 = pr0 -0
+File(16) = pr0.exe|X
+Patch = 146
+Versione = 20230100
+
+[pr]
+Data = 12-03-2024
+DescrPatch = Corretto replay db
+Descrizione = Provvigioni Agenti
+Dischi = 1
+Moduli = ve
+OEM =
+Patch = 146
+PostProcess =
+PreProcess =
+Versione = 20230100
+
diff --git a/cd/test/pr0146.txt b/cd/test/pr0146.txt
new file mode 100644
index 000000000..62157a4f0
--- /dev/null
+++ b/cd/test/pr0146.txt
@@ -0,0 +1,6 @@
+pr0.exe
+
+ Patch 0146
+ __________
+
+Aggiunti pił sergenti ODBC
diff --git a/cd/test/pr0146.zip b/cd/test/pr0146.zip
new file mode 100644
index 000000000..c5c085f34
Binary files /dev/null and b/cd/test/pr0146.zip differ
diff --git a/cd/test/res.zip b/cd/test/res.zip
new file mode 100644
index 000000000..642801452
Binary files /dev/null and b/cd/test/res.zip differ
diff --git a/cd/test/sc0146.ini b/cd/test/sc0146.ini
new file mode 100644
index 000000000..e954068f6
--- /dev/null
+++ b/cd/test/sc0146.ini
@@ -0,0 +1,22 @@
+[Main]
+Demo=0
+
+[sc1]
+File(3) = sc0.exe|X
+Patch = 146
+Versione = 20230100
+
+[sc]
+Data = 13-03-2024
+DescrPatch = Ripristinata archiviazione partite
+Descrizione = Saldaconto
+Dischi = 1
+Moduli = ba,cg
+OEM =
+Patch = 146
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/sc0146.txt b/cd/test/sc0146.txt
new file mode 100644
index 000000000..9592fbd41
--- /dev/null
+++ b/cd/test/sc0146.txt
@@ -0,0 +1,6 @@
+sc0.exe
+
+ Patch 0146
+ __________
+
+Aggiunti pił sergenti ODBC
diff --git a/cd/test/sc0146.zip b/cd/test/sc0146.zip
new file mode 100644
index 000000000..d2fddcf3f
Binary files /dev/null and b/cd/test/sc0146.zip differ
diff --git a/cd/test/sv0150.ini b/cd/test/sv0150.ini
new file mode 100644
index 000000000..9c7428c43
--- /dev/null
+++ b/cd/test/sv0150.ini
@@ -0,0 +1,25 @@
+[Main]
+Demo=0
+
+[sv1]
+Edit_4 = sv0 -0
+Edit_5 = sv0 -0
+File(5) = sv1.exe|X
+File(10) = sv1200a.msk|X
+Patch = 150
+Versione = 20230100
+
+[sv]
+Data = 08-11-2023
+DescrPatch =
+Descrizione = Statistiche di Vendita
+Dischi = 1
+Moduli = ve
+OEM =
+Patch = 150
+PostProcess = bainst -0 SV
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/sv0150.txt b/cd/test/sv0150.txt
new file mode 100644
index 000000000..54e227117
--- /dev/null
+++ b/cd/test/sv0150.txt
@@ -0,0 +1,7 @@
+sv1.exe
+sv1200a.msk
+
+ Patch 0150
+ __________
+
+Possibilitą di separare gli omaggi dalla merce
diff --git a/cd/test/sv0150.zip b/cd/test/sv0150.zip
new file mode 100644
index 000000000..07407e2ed
Binary files /dev/null and b/cd/test/sv0150.zip differ
diff --git a/cd/test/sv0152.ini b/cd/test/sv0152.ini
new file mode 100644
index 000000000..529add7d7
--- /dev/null
+++ b/cd/test/sv0152.ini
@@ -0,0 +1,25 @@
+[Main]
+Demo=0
+
+[sv1]
+Edit_4 = sv0 -0
+Edit_5 = sv0 -0
+File(5) = sv1.exe|X
+File(10) = sv1200a.msk|X
+Patch = 0152
+Versione = 20230100
+
+[sv]
+Data = 08-11-2023
+DescrPatch =
+Descrizione = Statistiche di Vendita
+Dischi = 1
+Moduli = ve
+OEM =
+Patch = 152
+PostProcess = bainst -0 SV
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/sv0152.txt b/cd/test/sv0152.txt
new file mode 100644
index 000000000..9626cfb26
--- /dev/null
+++ b/cd/test/sv0152.txt
@@ -0,0 +1,8 @@
+sv1.exe
+sv1200a.msk
+
+ Patch 0152
+ __________
+
+Possibilitą di separare gli omaggi dalla merce
+Segnalazione 0000023: statistiche di vendita con omaggi e senza
diff --git a/cd/test/sv0152.zip b/cd/test/sv0152.zip
new file mode 100644
index 000000000..95d948a3f
Binary files /dev/null and b/cd/test/sv0152.zip differ
diff --git a/cd/test/sy0144.ini b/cd/test/sy0144.ini
new file mode 100644
index 000000000..275d5bcc0
--- /dev/null
+++ b/cd/test/sy0144.ini
@@ -0,0 +1,27 @@
+[Main]
+Demo=0
+
+[sy1]
+File(1) = ba0.exe|X
+File(5) = ba0100l.msk|X
+File(6) = ba0100m.msk|X
+File(14) = ba1.exe|X
+File(42) = bamenu.men|X
+File(67) = xvaga.dll|X
+Patch =
+Versione = 20230100
+
+[sy]
+Data = 27-05-2024
+DescrPatch = Aggiunti pił sergenti ODBC\nTabella sorgenti ODBC\ncorretta ricerca persone fisiche\nSupporto licenze web server
+Descrizione = Sistema
+Dischi = 1
+Moduli =
+OEM =
+Patch = 0144
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/sy0144.txt b/cd/test/sy0144.txt
new file mode 100644
index 000000000..6ea3e4a66
--- /dev/null
+++ b/cd/test/sy0144.txt
@@ -0,0 +1,14 @@
+ba1.exe
+ba0.exe
+ba0100l.msk
+ba0100m.msk
+xvaga.dll
+bamenu.men
+
+ Patch 0144
+ __________
+
+Aggiunti pił sergenti ODBC
+Tabella sorgenti ODBC
+corretta ricerca persone fisiche
+Supporto licenze web server
diff --git a/cd/test/sy0144.zip b/cd/test/sy0144.zip
new file mode 100644
index 000000000..898b7645a
Binary files /dev/null and b/cd/test/sy0144.zip differ
diff --git a/cd/test/sy0145.ini b/cd/test/sy0145.ini
new file mode 100644
index 000000000..2730460b3
--- /dev/null
+++ b/cd/test/sy0145.ini
@@ -0,0 +1,29 @@
+[Main]
+Demo=0
+
+[sy1]
+File(1) = ba0.exe|X
+File(5) = ba0100l.msk|X
+File(6) = ba0100m.msk|X
+File(7) = ba0100n.msk|X
+File(15) = ba1.exe|X
+File(43) = bamenu.men|X
+File(54) = res\res.zip|X
+File(67) = xvaga.dll|X
+Patch = 145
+Versione = 20230100
+
+[sy]
+Data = 28-05-2024
+DescrPatch = Aggiunti pił sergenti ODBC\nTabella sorgenti ODBC\ncorretta ricerca persone fisiche\nSupporto licenze web server
+Descrizione = Sistema
+Dischi = 1
+Moduli =
+OEM =
+Patch = 0145
+PostProcess =
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/sy0145.txt b/cd/test/sy0145.txt
new file mode 100644
index 000000000..fb1653f5d
--- /dev/null
+++ b/cd/test/sy0145.txt
@@ -0,0 +1,16 @@
+ba1.exe
+ba0.exe
+ba0100l.msk
+ba0100m.msk
+ba0100n.msk
+res\res.zip
+xvaga.dll
+bamenu.men
+
+ Patch 0145
+ __________
+
+Aggiunti pił sergenti ODBC
+Tabella sorgenti ODBC
+corretta ricerca persone fisiche
+Supporto licenze web server
diff --git a/cd/test/sy0145.zip b/cd/test/sy0145.zip
new file mode 100644
index 000000000..404b930aa
Binary files /dev/null and b/cd/test/sy0145.zip differ
diff --git a/cd/test/tf0144.ini b/cd/test/tf0144.ini
new file mode 100644
index 000000000..4ee604dc7
--- /dev/null
+++ b/cd/test/tf0144.ini
@@ -0,0 +1,20 @@
+[Main]
+Demo=0
+
+[tf1]
+File(0) = tf0.exe|X
+Patch =
+Versione = 20230100
+
+[tf]
+Data = 24-05-2024
+DescrPatch = Aggunta prima pagina alla stampa liquidazioni periodiche
+Descrizione = Trasferimento fatture
+Dischi = 1
+Moduli = cg
+OEM =
+Patch = 0144
+PostProcess =
+PreProcess =
+Versione = 20230100
+
diff --git a/cd/test/tf0144.txt b/cd/test/tf0144.txt
new file mode 100644
index 000000000..ae1b1e1b1
--- /dev/null
+++ b/cd/test/tf0144.txt
@@ -0,0 +1,6 @@
+tf0.exe
+
+ Patch 0144
+ __________
+
+Aggunta prima pagina alla stampa liquidazioni periodiche
diff --git a/cd/test/tf0144.zip b/cd/test/tf0144.zip
new file mode 100644
index 000000000..210eb9660
Binary files /dev/null and b/cd/test/tf0144.zip differ
diff --git a/cd/test/ve0138.ini b/cd/test/ve0138.ini
new file mode 100644
index 000000000..bf8286d72
--- /dev/null
+++ b/cd/test/ve0138.ini
@@ -0,0 +1,151 @@
+[Main]
+Demo=0
+
+[ve1]
+File(51) = ve6.exe|X
+Patch = 138
+Versione = 20230100
+
+[ve9]
+Edit_163 = ve0 -4
+Edit_33 = ve0 -0
+Edit_4 = ve0 -4
+Edit_47 = ve2 -3
+Edit_5 = ve0 -4
+File(160) = ve0.exe|X
+Patch = 138
+Versione = 20230100
+
+[ve99]
+Kill(0) = batbcld.msk|x
+Kill(1) = bastspp.rep|x
+Kill(2) = bastcra.msk|x
+Kill(3) = bastgmc.rep|x
+Kill(4) = bastfrr.msk|x
+Kill(5) = bastasf.rep|x
+Kill(6) = efstbnp.rep|x
+Kill(7) = bastcra.rep|x
+Kill(8) = bastctr.rep|x
+Kill(9) = bastgcg.rep|x
+Kill(10) = bastfrm.rep|x
+Kill(11) = batbmre.msk|x
+Kill(12) = ve7200a.frm|x
+Kill(13) = batbrfa.msk|x
+Kill(14) = batbubi.msk|x
+Kill(15) = batbrfc.msk|x
+Kill(16) = batbgmc.msk|x
+Kill(17) = bastabe.msk|x
+Kill(18) = bastrfa.msk|x
+Kill(19) = batbfrm.msk|x
+Kill(20) = batbfca.msk|x
+Kill(21) = bastgcg.msk|x
+Kill(22) = bastubi.msk|x
+Kill(23) = basttag.msk|x
+Kill(24) = basteld.rep|x
+Kill(25) = bastimb.rep|x
+Kill(26) = bastrfa.rep|x
+Kill(27) = ve7300a.msk|x
+Kill(28) = bastprs.msk|x
+Kill(29) = bastcau.rep|x
+Kill(30) = ve7400a.ini|x
+Kill(31) = bastcau.msk|x
+Kill(32) = batbfsa.msk|x
+Kill(33) = batbabe.msk|x
+Kill(34) = ve7400a.msk|x
+Kill(35) = batbstd.msk|x
+Kill(36) = batbspt.msk|x
+Kill(37) = batbtip.msk|x
+Kill(38) = batbfrr.msk|x
+Kill(39) = bastspp.msk|x
+Kill(40) = bastctr.msk|x
+Kill(41) = batbnum.msk|x
+Kill(42) = basttri.msk|x
+Kill(43) = bastcaa.rep|x
+Kill(44) = bastabe.rep|x
+Kill(45) = batbums.msk|x
+Kill(46) = batbtag.msk|x
+Kill(47) = batbgcg.msk|x
+Kill(48) = ve7100a.msk|x
+Kill(49) = ve7600a.msk|x
+Kill(50) = batbfid.msk|x
+Kill(51) = bastcaa.msk|x
+Kill(52) = bastfrr.rep|x
+Kill(53) = bastums.msk|x
+Kill(54) = basttag.rep|x
+Kill(55) = batbspp.msk|x
+Kill(56) = baststd.msk|x
+Kill(57) = eftbbnp.msk|x
+Kill(58) = baststd.rep|x
+Kill(59) = bastfrd.msk|x
+Kill(60) = bastfca.msk|x
+Kill(61) = ve7400conf.ini|x
+Kill(62) = bastimb.msk|x
+Kill(63) = bastbnp.msk|x
+Kill(64) = bastrfc.rep|x
+Kill(65) = ve7701a.ini|x
+Kill(66) = bastasf.msk|x
+Kill(67) = batbctr.msk|x
+Kill(68) = basteld.msk|x
+Kill(69) = batbcaa.msk|x
+Kill(70) = basttri.rep|x
+Kill(71) = ve7300a.frm|x
+Kill(72) = basttip.rep|x
+Kill(73) = batbprs.msk|x
+Kill(74) = bastgca.msk|x
+Kill(75) = batbpro.msk|x
+Kill(76) = bastnum.msk|x
+Kill(77) = bastgca.rep|x
+Kill(78) = bastgmc.msk|x
+Kill(79) = bastfrd.rep|x
+Kill(80) = batbfrd.msk|x
+Kill(81) = bastfrm.msk|x
+Kill(82) = bastprs.rep|x
+Kill(83) = bastubi.rep|x
+Kill(84) = bastrfc.msk|x
+Kill(85) = batbbnp.msk|x
+Kill(86) = bastnum.rep|x
+Kill(87) = bastfca.rep|x
+Kill(88) = batbcau.msk|x
+Kill(89) = batbgsa.msk|x
+Kill(90) = ve7200a.msk|x
+Kill(91) = batbcra.msk|x
+Kill(92) = ve7.exe|x
+Kill(93) = bastums.rep|x
+Kill(94) = batbprv.msk|x
+Kill(95) = batbeld.msk|x
+Kill(96) = efstbnp.msk|x
+Kill(97) = ve7500a.msk|x
+Kill(98) = batbacr.msk|x
+Kill(99) = batbimb.msk|x
+Kill(100) = batbtri.msk|x
+Kill(101) = batbasf.msk|x
+Kill(102) = bastbnp.rep|x
+Kill(103) = ve7700a.msk|x
+Kill(104) = basttip.msk|x
+Kill(105) = batbgca.msk|x
+
+[cg9]
+Edit_19 = cg0 -0
+Edit_20 = cg0 -1
+Edit_26 = cg0 -4
+Edit_5 = cg0 -5
+File(15) = cg1500ax.msk|X
+File(190) = cg1.exe|X
+File(202) = cg1500a.msk|X
+Patch =
+Versione = 20230100
+
+[ve]
+Data = 09-04-2024
+DescrPatch = verig01
+Descrizione = Vendite
+Dischi = 1
+Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9, ci9
+OEM =
+Patch = 138
+PostProcess = bainst -0 VE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ve0138.txt b/cd/test/ve0138.txt
new file mode 100644
index 000000000..fef6ab1f2
--- /dev/null
+++ b/cd/test/ve0138.txt
@@ -0,0 +1,11 @@
+ve6.exe
+ve0.exe
+cg1500ax.msk
+cg1500a.msk
+cg1.exe
+
+ Patch 0138
+ __________
+
+Aggiuto supporto reverse charge
+Corretta contabilizzazione
diff --git a/cd/test/ve0138.zip b/cd/test/ve0138.zip
new file mode 100644
index 000000000..420039a21
Binary files /dev/null and b/cd/test/ve0138.zip differ
diff --git a/cd/test/ve0140.ini b/cd/test/ve0140.ini
new file mode 100644
index 000000000..b13b6ca84
--- /dev/null
+++ b/cd/test/ve0140.ini
@@ -0,0 +1,160 @@
+[Main]
+Demo=0
+
+[ve3]
+File(98) = bolacq.ini|X
+File(99) = bolacq.msk|X
+File(100) = bolla.bmp|X
+File(101) = bollac.ini|X
+File(102) = bollac.msk|X
+File(103) = bollaf.ini|X
+File(104) = bollaf.msk|X
+File(105) = fatacq.ini|X
+File(106) = fatacq.msk|X
+File(107) = fattacc.bmp|X
+File(108) = fattura.bmp|X
+File(109) = fatturaa.ini|X
+File(110) = fatturaa.msk|X
+File(111) = fatturac.ini|X
+File(112) = fatturac.msk|X
+File(113) = ordbon.ini|X
+File(114) = ordbon.msk|X
+File(115) = ordinec.ini|X
+File(116) = ordinec.msk|X
+File(117) = ordinef.ini|X
+File(118) = ordinef.msk|X
+Patch = 140
+Versione = 20230100
+
+[ve9]
+Edit_163 = ve0 -4
+Edit_33 = ve0 -0
+Edit_4 = ve0 -4
+Edit_47 = ve2 -3
+Edit_5 = ve0 -4
+File(160) = ve0.exe|X
+Patch = 140
+Versione = 20230100
+
+[ve99]
+Kill(0) = batbimb.msk|x
+Kill(1) = batbacr.msk|x
+Kill(2) = batbgsa.msk|x
+Kill(3) = batbeld.msk|x
+Kill(4) = batbcau.msk|x
+Kill(5) = batbprv.msk|x
+Kill(6) = ve7500a.msk|x
+Kill(7) = efstbnp.msk|x
+Kill(8) = batbbnp.msk|x
+Kill(9) = batbcra.msk|x
+Kill(10) = bastrfc.msk|x
+Kill(11) = ve7200a.msk|x
+Kill(12) = bastfca.rep|x
+Kill(13) = bastums.rep|x
+Kill(14) = bastnum.rep|x
+Kill(15) = ve7.exe|x
+Kill(16) = bastfrm.msk|x
+Kill(17) = batbfrd.msk|x
+Kill(18) = bastubi.rep|x
+Kill(19) = bastprs.rep|x
+Kill(20) = batbfrm.msk|x
+Kill(21) = bastimb.rep|x
+Kill(22) = bastcau.msk|x
+Kill(23) = bastrfa.msk|x
+Kill(24) = basteld.rep|x
+Kill(25) = ve7400a.ini|x
+Kill(26) = ve7300a.msk|x
+Kill(27) = batbabe.msk|x
+Kill(28) = bastrfa.rep|x
+Kill(29) = batbfsa.msk|x
+Kill(30) = batbrfc.msk|x
+Kill(31) = bastgcg.msk|x
+Kill(32) = batbubi.msk|x
+Kill(33) = batbfca.msk|x
+Kill(34) = bastabe.msk|x
+Kill(35) = basttag.msk|x
+Kill(36) = batbgmc.msk|x
+Kill(37) = bastubi.msk|x
+Kill(38) = batbmre.msk|x
+Kill(39) = bastfrm.rep|x
+Kill(40) = batbrfa.msk|x
+Kill(41) = ve7200a.frm|x
+Kill(42) = bastfrd.msk|x
+Kill(43) = ve7701a.ini|x
+Kill(44) = ve7300a.frm|x
+Kill(45) = baststd.rep|x
+Kill(46) = bastrfc.rep|x
+Kill(47) = basttri.rep|x
+Kill(48) = batbctr.msk|x
+Kill(49) = batbprs.msk|x
+Kill(50) = bastasf.msk|x
+Kill(51) = basttip.rep|x
+Kill(52) = ve7600a.msk|x
+Kill(53) = batbspp.msk|x
+Kill(54) = ve7400conf.ini|x
+Kill(55) = ve7100a.msk|x
+Kill(56) = basttag.rep|x
+Kill(57) = bastfca.msk|x
+Kill(58) = eftbbnp.msk|x
+Kill(59) = bastbnp.msk|x
+Kill(60) = baststd.msk|x
+Kill(61) = bastimb.msk|x
+Kill(62) = bastspp.msk|x
+Kill(63) = batbums.msk|x
+Kill(64) = bastcaa.msk|x
+Kill(65) = batbfrr.msk|x
+Kill(66) = bastabe.rep|x
+Kill(67) = batbfid.msk|x
+Kill(68) = batbgcg.msk|x
+Kill(69) = bastums.msk|x
+Kill(70) = batbtag.msk|x
+Kill(71) = bastfrr.rep|x
+Kill(72) = bastcau.rep|x
+Kill(73) = batbstd.msk|x
+Kill(74) = batbnum.msk|x
+Kill(75) = bastprs.msk|x
+Kill(76) = ve7400a.msk|x
+Kill(77) = bastctr.msk|x
+Kill(78) = batbtip.msk|x
+Kill(79) = bastcaa.rep|x
+Kill(80) = batbspt.msk|x
+Kill(81) = basttri.msk|x
+Kill(82) = bastfrd.rep|x
+Kill(83) = bastgmc.msk|x
+Kill(84) = batbcaa.msk|x
+Kill(85) = batbpro.msk|x
+Kill(86) = basteld.msk|x
+Kill(87) = bastgca.msk|x
+Kill(88) = bastgca.rep|x
+Kill(89) = bastnum.msk|x
+Kill(90) = batbgca.msk|x
+Kill(91) = basttip.msk|x
+Kill(92) = batbasf.msk|x
+Kill(93) = batbtri.msk|x
+Kill(94) = ve7700a.msk|x
+Kill(95) = bastbnp.rep|x
+Kill(96) = bastgcg.rep|x
+Kill(97) = bastctr.rep|x
+Kill(98) = bastspp.rep|x
+Kill(99) = batbcld.msk|x
+Kill(100) = bastasf.rep|x
+Kill(101) = bastfrr.msk|x
+Kill(102) = bastgmc.rep|x
+Kill(103) = bastcra.msk|x
+Kill(104) = bastcra.rep|x
+Kill(105) = efstbnp.rep|x
+
+[ve]
+Data = 20-04-2024
+DescrPatch = Aggiuto supporto reverse charge\r\nCorretta contabilizzazione
+Descrizione = Vendite
+Dischi = 1
+Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9, ci9
+OEM =
+Patch = 140
+PostProcess = bainst -0 VE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ve0140.txt b/cd/test/ve0140.txt
new file mode 100644
index 000000000..cf370d60d
--- /dev/null
+++ b/cd/test/ve0140.txt
@@ -0,0 +1,28 @@
+bollac.ini
+bolla.bmp
+fatacq.ini
+fatturac.ini
+bollaf.msk
+fatturaa.msk
+bollaf.ini
+bollac.msk
+fatturaa.ini
+ordinec.ini
+fattura.bmp
+ordbon.msk
+fattacc.bmp
+ordbon.ini
+fatacq.msk
+fatturac.msk
+ordinef.msk
+ordinef.ini
+ordinec.msk
+bolacq.ini
+bolacq.msk
+ve0.exe
+
+ Patch 0140
+ __________
+
+Aggiunto IBAN alle scadenze
+Aggiornamento IBAN sui fornitori
diff --git a/cd/test/ve0140.zip b/cd/test/ve0140.zip
new file mode 100644
index 000000000..5d03ae385
Binary files /dev/null and b/cd/test/ve0140.zip differ
diff --git a/cd/test/ve0142.ini b/cd/test/ve0142.ini
new file mode 100644
index 000000000..7c1ff8542
--- /dev/null
+++ b/cd/test/ve0142.ini
@@ -0,0 +1,140 @@
+[Main]
+Demo=0
+
+[ve1]
+File(51) = ve6.exe|X
+Patch = 142
+Versione = 20230100
+
+[ve9]
+Edit_163 = ve0 -4
+Edit_33 = ve0 -0
+Edit_4 = ve0 -4
+Edit_47 = ve2 -3
+Edit_5 = ve0 -4
+File(160) = ve0.exe|X
+Patch = 142
+Versione = 20230100
+
+[ve99]
+Kill(0) = batbimb.msk|x
+Kill(1) = batbacr.msk|x
+Kill(2) = ve7400a.msk|x
+Kill(3) = bastgmc.rep|x
+Kill(4) = bastctr.msk|x
+Kill(5) = bastcra.msk|x
+Kill(6) = batbbnp.msk|x
+Kill(7) = batbcra.msk|x
+Kill(8) = bastprs.msk|x
+Kill(9) = bastcra.rep|x
+Kill(10) = bastums.msk|x
+Kill(11) = efstbnp.rep|x
+Kill(12) = batbnum.msk|x
+Kill(13) = bastasf.rep|x
+Kill(14) = batbgcg.msk|x
+Kill(15) = bastfrr.msk|x
+Kill(16) = bastfrd.msk|x
+Kill(17) = batbgmc.msk|x
+Kill(18) = batbtip.msk|x
+Kill(19) = bastcaa.rep|x
+Kill(20) = bastfrd.rep|x
+Kill(21) = batbrfc.msk|x
+Kill(22) = bastimb.rep|x
+Kill(23) = bastgmc.msk|x
+Kill(24) = basteld.rep|x
+Kill(25) = ve7.exe|x
+Kill(26) = batbfca.msk|x
+Kill(27) = batbfrm.msk|x
+Kill(28) = batbabe.msk|x
+Kill(29) = bastnum.rep|x
+Kill(30) = batbasf.msk|x
+Kill(31) = ve7400a.ini|x
+Kill(32) = basteld.msk|x
+Kill(33) = bastprs.rep|x
+Kill(34) = batbspt.msk|x
+Kill(35) = bastubi.rep|x
+Kill(36) = basttri.msk|x
+Kill(37) = bastgcg.msk|x
+Kill(38) = batbgca.msk|x
+Kill(39) = batbcaa.msk|x
+Kill(40) = batbtri.msk|x
+Kill(41) = bastgca.msk|x
+Kill(42) = batbums.msk|x
+Kill(43) = batbmre.msk|x
+Kill(44) = ve7600a.msk|x
+Kill(45) = bastfca.msk|x
+Kill(46) = basttip.rep|x
+Kill(47) = bastrfc.rep|x
+Kill(48) = bastasf.msk|x
+Kill(49) = basttag.msk|x
+Kill(50) = ve7300a.frm|x
+Kill(51) = batbfsa.msk|x
+Kill(52) = batbstd.msk|x
+Kill(53) = batbctr.msk|x
+Kill(54) = bastspp.msk|x
+Kill(55) = batbfid.msk|x
+Kill(56) = bastimb.msk|x
+Kill(57) = basttag.rep|x
+Kill(58) = baststd.msk|x
+Kill(59) = baststd.rep|x
+Kill(60) = ve7400conf.ini|x
+Kill(61) = bastfrm.rep|x
+Kill(62) = bastrfc.msk|x
+Kill(63) = eftbbnp.msk|x
+Kill(64) = bastcau.rep|x
+Kill(65) = ve7200a.msk|x
+Kill(66) = bastfrr.rep|x
+Kill(67) = bastabe.rep|x
+Kill(68) = batbtag.msk|x
+Kill(69) = ve7100a.msk|x
+Kill(70) = bastcaa.msk|x
+Kill(71) = batbprs.msk|x
+Kill(72) = batbubi.msk|x
+Kill(73) = bastrfa.msk|x
+Kill(74) = bastfca.rep|x
+Kill(75) = ve7300a.msk|x
+Kill(76) = batbfrd.msk|x
+Kill(77) = bastums.rep|x
+Kill(78) = bastcau.msk|x
+Kill(79) = batbfrr.msk|x
+Kill(80) = bastfrm.msk|x
+Kill(81) = bastbnp.msk|x
+Kill(82) = ve7701a.ini|x
+Kill(83) = bastubi.msk|x
+Kill(84) = batbspp.msk|x
+Kill(85) = bastrfa.rep|x
+Kill(86) = basttri.rep|x
+Kill(87) = ve7200a.frm|x
+Kill(88) = batbrfa.msk|x
+Kill(89) = bastabe.msk|x
+Kill(90) = ve7500a.msk|x
+Kill(91) = efstbnp.msk|x
+Kill(92) = batbcau.msk|x
+Kill(93) = batbprv.msk|x
+Kill(94) = batbgsa.msk|x
+Kill(95) = batbeld.msk|x
+Kill(96) = basttip.msk|x
+Kill(97) = batbpro.msk|x
+Kill(98) = bastspp.rep|x
+Kill(99) = batbcld.msk|x
+Kill(100) = ve7700a.msk|x
+Kill(101) = bastgca.rep|x
+Kill(102) = bastbnp.rep|x
+Kill(103) = bastnum.msk|x
+Kill(104) = bastgcg.rep|x
+Kill(105) = bastctr.rep|x
+
+[ve]
+Data = 09-05-2024
+DescrPatch = Scambiato nome e cognome negli xml\nModificata la selezione numerazioni nella contabilzzaioni, contabilizzazioni analitiche e generazione effetti
+Descrizione = Vendite
+Dischi = 1
+Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9, ci9
+OEM =
+Patch = 0142
+PostProcess = bainst -0 VE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ve0142.txt b/cd/test/ve0142.txt
new file mode 100644
index 000000000..63e8c2790
--- /dev/null
+++ b/cd/test/ve0142.txt
@@ -0,0 +1,8 @@
+ve6.exe
+ve0.exe
+
+ Patch 0142
+ __________
+
+Scambiato nome e cognome negli xml
+Modificata la selezione numerazioni nella contabilzzaioni, contabilizzazioni analitiche e generazione effetti
diff --git a/cd/test/ve0142.zip b/cd/test/ve0142.zip
new file mode 100644
index 000000000..af694e8cd
Binary files /dev/null and b/cd/test/ve0142.zip differ
diff --git a/cd/test/ve0143.ini b/cd/test/ve0143.ini
new file mode 100644
index 000000000..925977df9
--- /dev/null
+++ b/cd/test/ve0143.ini
@@ -0,0 +1,141 @@
+[Main]
+Demo=0
+
+[ve1]
+File(44) = ve5200.msk|X
+File(51) = ve6.exe|X
+Patch = 143
+Versione = 20230100
+
+[ve9]
+Edit_163 = ve0 -4
+Edit_33 = ve0 -0
+Edit_4 = ve0 -4
+Edit_47 = ve2 -3
+Edit_5 = ve0 -4
+File(160) = ve0.exe|X
+Patch = 143
+Versione = 20230100
+
+[ve99]
+Kill(0) = batbcld.msk|x
+Kill(1) = bastspp.rep|x
+Kill(2) = bastabe.msk|x
+Kill(3) = batbeld.msk|x
+Kill(4) = batbrfa.msk|x
+Kill(5) = batbgsa.msk|x
+Kill(6) = batbpro.msk|x
+Kill(7) = basttip.msk|x
+Kill(8) = bastrfa.rep|x
+Kill(9) = efstbnp.msk|x
+Kill(10) = batbspp.msk|x
+Kill(11) = ve7500a.msk|x
+Kill(12) = ve7200a.frm|x
+Kill(13) = batbprv.msk|x
+Kill(14) = basttri.rep|x
+Kill(15) = batbcau.msk|x
+Kill(16) = bastbnp.msk|x
+Kill(17) = bastfrm.msk|x
+Kill(18) = bastubi.msk|x
+Kill(19) = ve7701a.ini|x
+Kill(20) = bastcaa.rep|x
+Kill(21) = ve7.exe|x
+Kill(22) = ve7400a.ini|x
+Kill(23) = batbtip.msk|x
+Kill(24) = basteld.rep|x
+Kill(25) = batbasf.msk|x
+Kill(26) = batbfrm.msk|x
+Kill(27) = bastprs.rep|x
+Kill(28) = batbfca.msk|x
+Kill(29) = basteld.msk|x
+Kill(30) = bastfrr.msk|x
+Kill(31) = batbrfc.msk|x
+Kill(32) = batbgcg.msk|x
+Kill(33) = bastfrd.rep|x
+Kill(34) = batbgmc.msk|x
+Kill(35) = bastgmc.msk|x
+Kill(36) = bastfrd.msk|x
+Kill(37) = bastimb.rep|x
+Kill(38) = efstbnp.rep|x
+Kill(39) = bastums.msk|x
+Kill(40) = bastasf.rep|x
+Kill(41) = batbnum.msk|x
+Kill(42) = baststd.rep|x
+Kill(43) = ve7200a.msk|x
+Kill(44) = batbprs.msk|x
+Kill(45) = baststd.msk|x
+Kill(46) = bastcau.rep|x
+Kill(47) = bastcaa.msk|x
+Kill(48) = bastabe.rep|x
+Kill(49) = bastrfa.msk|x
+Kill(50) = bastfrr.rep|x
+Kill(51) = batbubi.msk|x
+Kill(52) = basttag.msk|x
+Kill(53) = batbfid.msk|x
+Kill(54) = bastfrm.rep|x
+Kill(55) = bastasf.msk|x
+Kill(56) = bastspp.msk|x
+Kill(57) = ve7400conf.ini|x
+Kill(58) = basttag.rep|x
+Kill(59) = eftbbnp.msk|x
+Kill(60) = bastimb.msk|x
+Kill(61) = bastrfc.msk|x
+Kill(62) = batbcaa.msk|x
+Kill(63) = bastfca.msk|x
+Kill(64) = batbfsa.msk|x
+Kill(65) = batbgca.msk|x
+Kill(66) = ve7600a.msk|x
+Kill(67) = ve7300a.frm|x
+Kill(68) = bastrfc.rep|x
+Kill(69) = batbctr.msk|x
+Kill(70) = basttip.rep|x
+Kill(71) = batbstd.msk|x
+Kill(72) = bastnum.rep|x
+Kill(73) = bastubi.rep|x
+Kill(74) = bastgca.msk|x
+Kill(75) = batbabe.msk|x
+Kill(76) = batbspt.msk|x
+Kill(77) = batbtri.msk|x
+Kill(78) = bastgcg.msk|x
+Kill(79) = batbmre.msk|x
+Kill(80) = basttri.msk|x
+Kill(81) = batbums.msk|x
+Kill(82) = batbfrr.msk|x
+Kill(83) = bastcau.msk|x
+Kill(84) = ve7100a.msk|x
+Kill(85) = ve7300a.msk|x
+Kill(86) = batbtag.msk|x
+Kill(87) = bastfca.rep|x
+Kill(88) = bastums.rep|x
+Kill(89) = batbfrd.msk|x
+Kill(90) = bastctr.rep|x
+Kill(91) = bastgcg.rep|x
+Kill(92) = bastgca.rep|x
+Kill(93) = ve7700a.msk|x
+Kill(94) = bastnum.msk|x
+Kill(95) = bastbnp.rep|x
+Kill(96) = bastcra.rep|x
+Kill(97) = bastprs.msk|x
+Kill(98) = batbacr.msk|x
+Kill(99) = batbimb.msk|x
+Kill(100) = bastcra.msk|x
+Kill(101) = bastctr.msk|x
+Kill(102) = bastgmc.rep|x
+Kill(103) = ve7400a.msk|x
+Kill(104) = batbcra.msk|x
+Kill(105) = batbbnp.msk|x
+
+[ve]
+Data = 09-05-2024
+DescrPatch = Scambiato nome e cognome negli xml\nModificata la selezione numerazioni nella contabilzzaioni, contabilizzazioni analitiche e generazione effetti
+Descrizione = Vendite
+Dischi = 1
+Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9, ci9
+OEM =
+Patch = 143
+PostProcess = bainst -0 VE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ve0143.txt b/cd/test/ve0143.txt
new file mode 100644
index 000000000..0b27e6877
--- /dev/null
+++ b/cd/test/ve0143.txt
@@ -0,0 +1,9 @@
+ve5200.msk
+ve6.exe
+ve0.exe
+
+ Patch 0143
+ __________
+
+Scambiato nome e cognome negli xml
+Modificata la selezione numerazioni nella contabilzzaioni, contabilizzazioni analitiche e generazione effetti
diff --git a/cd/test/ve0143.zip b/cd/test/ve0143.zip
new file mode 100644
index 000000000..ae147c978
Binary files /dev/null and b/cd/test/ve0143.zip differ
diff --git a/cd/test/ve0144.ini b/cd/test/ve0144.ini
new file mode 100644
index 000000000..001c3cd31
--- /dev/null
+++ b/cd/test/ve0144.ini
@@ -0,0 +1,140 @@
+[Main]
+Demo=0
+
+[ve1]
+File(51) = ve6.exe|X
+Patch = 144
+Versione = 20230100
+
+[ve9]
+Edit_163 = ve0 -4
+Edit_33 = ve0 -0
+Edit_4 = ve0 -4
+Edit_47 = ve2 -3
+Edit_5 = ve0 -4
+File(160) = ve0.exe|X
+Patch = 144
+Versione = 20230100
+
+[ve99]
+Kill(0) = batbimb.msk|x
+Kill(1) = batbacr.msk|x
+Kill(2) = batbfrd.msk|x
+Kill(3) = bastbnp.rep|x
+Kill(4) = bastums.rep|x
+Kill(5) = bastnum.msk|x
+Kill(6) = bastprs.msk|x
+Kill(7) = bastcra.rep|x
+Kill(8) = ve7300a.msk|x
+Kill(9) = bastgcg.rep|x
+Kill(10) = ve7100a.msk|x
+Kill(11) = bastctr.rep|x
+Kill(12) = bastfca.rep|x
+Kill(13) = ve7700a.msk|x
+Kill(14) = batbtag.msk|x
+Kill(15) = bastgca.rep|x
+Kill(16) = batbums.msk|x
+Kill(17) = basttri.msk|x
+Kill(18) = bastcau.msk|x
+Kill(19) = batbfrr.msk|x
+Kill(20) = ve7701a.ini|x
+Kill(21) = batbasf.msk|x
+Kill(22) = batbrfc.msk|x
+Kill(23) = bastubi.msk|x
+Kill(24) = basteld.rep|x
+Kill(25) = bastfrr.msk|x
+Kill(26) = bastprs.rep|x
+Kill(27) = bastfrd.rep|x
+Kill(28) = batbfrm.msk|x
+Kill(29) = batbgcg.msk|x
+Kill(30) = batbcau.msk|x
+Kill(31) = ve7.exe|x
+Kill(32) = basttri.rep|x
+Kill(33) = bastcaa.rep|x
+Kill(34) = bastfrm.msk|x
+Kill(35) = batbtip.msk|x
+Kill(36) = bastbnp.msk|x
+Kill(37) = ve7400a.ini|x
+Kill(38) = ve7500a.msk|x
+Kill(39) = batbspp.msk|x
+Kill(40) = batbprv.msk|x
+Kill(41) = ve7200a.frm|x
+Kill(42) = eftbbnp.msk|x
+Kill(43) = batbgca.msk|x
+Kill(44) = batbstd.msk|x
+Kill(45) = basttag.rep|x
+Kill(46) = batbfsa.msk|x
+Kill(47) = basttip.rep|x
+Kill(48) = ve7300a.frm|x
+Kill(49) = bastubi.rep|x
+Kill(50) = ve7600a.msk|x
+Kill(51) = bastnum.rep|x
+Kill(52) = bastrfa.msk|x
+Kill(53) = bastasf.msk|x
+Kill(54) = bastrfc.msk|x
+Kill(55) = bastabe.rep|x
+Kill(56) = bastfrm.rep|x
+Kill(57) = bastimb.msk|x
+Kill(58) = ve7400conf.ini|x
+Kill(59) = bastfca.msk|x
+Kill(60) = bastspp.msk|x
+Kill(61) = batbcaa.msk|x
+Kill(62) = bastums.msk|x
+Kill(63) = baststd.msk|x
+Kill(64) = batbubi.msk|x
+Kill(65) = efstbnp.rep|x
+Kill(66) = batbprs.msk|x
+Kill(67) = bastfrr.rep|x
+Kill(68) = bastcaa.msk|x
+Kill(69) = batbfid.msk|x
+Kill(70) = bastcau.rep|x
+Kill(71) = basttag.msk|x
+Kill(72) = basteld.msk|x
+Kill(73) = bastgmc.msk|x
+Kill(74) = batbnum.msk|x
+Kill(75) = batbfca.msk|x
+Kill(76) = batbgmc.msk|x
+Kill(77) = bastasf.rep|x
+Kill(78) = bastimb.rep|x
+Kill(79) = ve7200a.msk|x
+Kill(80) = bastfrd.msk|x
+Kill(81) = baststd.rep|x
+Kill(82) = batbmre.msk|x
+Kill(83) = bastgcg.msk|x
+Kill(84) = batbctr.msk|x
+Kill(85) = batbabe.msk|x
+Kill(86) = bastrfc.rep|x
+Kill(87) = bastgca.msk|x
+Kill(88) = batbtri.msk|x
+Kill(89) = batbspt.msk|x
+Kill(90) = batbbnp.msk|x
+Kill(91) = batbcra.msk|x
+Kill(92) = bastctr.msk|x
+Kill(93) = bastcra.msk|x
+Kill(94) = ve7400a.msk|x
+Kill(95) = bastgmc.rep|x
+Kill(96) = efstbnp.msk|x
+Kill(97) = bastrfa.rep|x
+Kill(98) = bastspp.rep|x
+Kill(99) = batbcld.msk|x
+Kill(100) = batbgsa.msk|x
+Kill(101) = batbrfa.msk|x
+Kill(102) = batbeld.msk|x
+Kill(103) = bastabe.msk|x
+Kill(104) = basttip.msk|x
+Kill(105) = batbpro.msk|x
+
+[ve]
+Data = 09-05-2024
+DescrPatch = Scambiato nome e cognome negli xml\nModificata la selezione numerazioni nella contabilzzaioni, contabilizzazioni analitiche e generazione effetti
+Descrizione = Vendite
+Dischi = 1
+Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9, ci9
+OEM =
+Patch = 144
+PostProcess = bainst -0 VE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ve0144.txt b/cd/test/ve0144.txt
new file mode 100644
index 000000000..3b8eda133
--- /dev/null
+++ b/cd/test/ve0144.txt
@@ -0,0 +1,8 @@
+ve6.exe
+ve0.exe
+
+ Patch 0144
+ __________
+
+Corretto calcolo data documento e ricerca codice note
+aggiornato replay
diff --git a/cd/test/ve0144.zip b/cd/test/ve0144.zip
new file mode 100644
index 000000000..5dc3cc84d
Binary files /dev/null and b/cd/test/ve0144.zip differ
diff --git a/cd/test/ve0146.ini b/cd/test/ve0146.ini
new file mode 100644
index 000000000..1d08836f3
--- /dev/null
+++ b/cd/test/ve0146.ini
@@ -0,0 +1,150 @@
+[Main]
+Demo=0
+
+[ve1]
+File(51) = ve6.exe|X
+Patch = 146
+Versione = 20230100
+
+[ve9]
+Edit_163 = ve0 -4
+Edit_33 = ve0 -0
+Edit_4 = ve0 -4
+Edit_47 = ve2 -3
+Edit_5 = ve0 -4
+File(160) = ve0.exe|X
+File(179) = ve2.exe|X
+Patch = 146
+Versione = 20230100
+
+[ve99]
+Kill(0) = batbcld.msk|x
+Kill(1) = bastspp.rep|x
+Kill(2) = batbspt.msk|x
+Kill(3) = bastgmc.rep|x
+Kill(4) = batbtri.msk|x
+Kill(5) = ve7400a.msk|x
+Kill(6) = bastrfa.rep|x
+Kill(7) = efstbnp.msk|x
+Kill(8) = batbabe.msk|x
+Kill(9) = batbcra.msk|x
+Kill(10) = batbctr.msk|x
+Kill(11) = batbbnp.msk|x
+Kill(12) = bastgca.msk|x
+Kill(13) = bastcra.msk|x
+Kill(14) = bastrfc.rep|x
+Kill(15) = bastctr.msk|x
+Kill(16) = baststd.rep|x
+Kill(17) = bastfrd.msk|x
+Kill(18) = bastgcg.msk|x
+Kill(19) = batbmre.msk|x
+Kill(20) = batbfrr.msk|x
+Kill(21) = bastfrr.msk|x
+Kill(22) = ve7.exe|x
+Kill(23) = bastcau.msk|x
+Kill(24) = basteld.rep|x
+Kill(25) = batbcau.msk|x
+Kill(26) = bastfrd.rep|x
+Kill(27) = bastcaa.rep|x
+Kill(28) = bastprs.rep|x
+Kill(29) = basttri.rep|x
+Kill(30) = bastgca.rep|x
+Kill(31) = batbasf.msk|x
+Kill(32) = batbtag.msk|x
+Kill(33) = ve7701a.ini|x
+Kill(34) = basttri.msk|x
+Kill(35) = bastubi.msk|x
+Kill(36) = batbums.msk|x
+Kill(37) = batbrfc.msk|x
+Kill(38) = bastctr.rep|x
+Kill(39) = ve7100a.msk|x
+Kill(40) = ve7700a.msk|x
+Kill(41) = bastfca.rep|x
+Kill(42) = bastfca.msk|x
+Kill(43) = efstbnp.rep|x
+Kill(44) = basttag.msk|x
+Kill(45) = ve7400conf.ini|x
+Kill(46) = batbubi.msk|x
+Kill(47) = bastcau.rep|x
+Kill(48) = bastfrr.rep|x
+Kill(49) = bastgmc.msk|x
+Kill(50) = batbprs.msk|x
+Kill(51) = basteld.msk|x
+Kill(52) = bastubi.rep|x
+Kill(53) = bastabe.rep|x
+Kill(54) = batbcaa.msk|x
+Kill(55) = ve7300a.frm|x
+Kill(56) = bastrfc.msk|x
+Kill(57) = bastspp.msk|x
+Kill(58) = bastimb.msk|x
+Kill(59) = baststd.msk|x
+Kill(60) = bastfrm.rep|x
+Kill(61) = bastums.msk|x
+Kill(62) = batbspp.msk|x
+Kill(63) = basttag.rep|x
+Kill(64) = bastnum.rep|x
+Kill(65) = ve7500a.msk|x
+Kill(66) = batbstd.msk|x
+Kill(67) = ve7600a.msk|x
+Kill(68) = basttip.rep|x
+Kill(69) = bastasf.msk|x
+Kill(70) = batbfsa.msk|x
+Kill(71) = bastrfa.msk|x
+Kill(72) = batbgcg.msk|x
+Kill(73) = batbtip.msk|x
+Kill(74) = ve7200a.frm|x
+Kill(75) = batbfrm.msk|x
+Kill(76) = bastfrm.msk|x
+Kill(77) = batbprv.msk|x
+Kill(78) = ve7400a.ini|x
+Kill(79) = batbgca.msk|x
+Kill(80) = bastbnp.msk|x
+Kill(81) = eftbbnp.msk|x
+Kill(82) = ve7200a.msk|x
+Kill(83) = bastimb.rep|x
+Kill(84) = batbfid.msk|x
+Kill(85) = batbfca.msk|x
+Kill(86) = bastcaa.msk|x
+Kill(87) = batbnum.msk|x
+Kill(88) = bastasf.rep|x
+Kill(89) = batbgmc.msk|x
+Kill(90) = batbpro.msk|x
+Kill(91) = basttip.msk|x
+Kill(92) = batbrfa.msk|x
+Kill(93) = batbgsa.msk|x
+Kill(94) = bastabe.msk|x
+Kill(95) = batbeld.msk|x
+Kill(96) = bastgcg.rep|x
+Kill(97) = ve7300a.msk|x
+Kill(98) = batbacr.msk|x
+Kill(99) = batbimb.msk|x
+Kill(100) = bastnum.msk|x
+Kill(101) = bastums.rep|x
+Kill(102) = bastbnp.rep|x
+Kill(103) = batbfrd.msk|x
+Kill(104) = bastcra.rep|x
+Kill(105) = bastprs.msk|x
+
+[cg9]
+Edit_19 = cg0 -0
+Edit_20 = cg0 -1
+Edit_26 = cg0 -4
+Edit_5 = cg0 -5
+File(175) = cg0.exe|X
+Patch = 146
+Versione = 20230100
+
+[ve]
+Data = 14-05-2024
+DescrPatch = Corretto calcolo data documento e ricerca codice note\r\naggiornato replay
+Descrizione = Vendite
+Dischi = 1
+Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9, ci9
+OEM =
+Patch = 146
+PostProcess = bainst -0 VE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ve0146.txt b/cd/test/ve0146.txt
new file mode 100644
index 000000000..106897caa
--- /dev/null
+++ b/cd/test/ve0146.txt
@@ -0,0 +1,9 @@
+ve6.exe
+ve0.exe
+ve2.exe
+cg0.exe
+
+ Patch 0146
+ __________
+
+Aggiunte pił sergenti ODBC
diff --git a/cd/test/ve0146.zip b/cd/test/ve0146.zip
new file mode 100644
index 000000000..556010feb
Binary files /dev/null and b/cd/test/ve0146.zip differ
diff --git a/cd/test/ve0148.ini b/cd/test/ve0148.ini
new file mode 100644
index 000000000..34defeb60
--- /dev/null
+++ b/cd/test/ve0148.ini
@@ -0,0 +1,168 @@
+[Main]
+Demo=0
+
+[ve1]
+File(51) = ve6.exe|X
+Patch =
+Versione = 20230100
+
+[ve2]
+File(89) = vetbeld.msk|X
+Patch =
+Versione = 20230100
+
+[ve9]
+Edit_163 = ve0 -4
+Edit_33 = ve0 -0
+Edit_4 = ve0 -4
+Edit_47 = ve2 -3
+Edit_5 = ve0 -4
+File(160) = ve0.exe|X
+Patch =
+Versione = 20230100
+
+[ve99]
+Kill(0) = batbimb.msk|x
+Kill(1) = batbacr.msk|x
+Kill(2) = batbgmc.msk|x
+Kill(3) = batbeld.msk|x
+Kill(4) = bastasf.rep|x
+Kill(5) = bastabe.msk|x
+Kill(6) = ve7300a.msk|x
+Kill(7) = bastgcg.rep|x
+Kill(8) = batbfca.msk|x
+Kill(9) = basttip.msk|x
+Kill(10) = batbfid.msk|x
+Kill(11) = batbpro.msk|x
+Kill(12) = batbnum.msk|x
+Kill(13) = batbgsa.msk|x
+Kill(14) = bastcaa.msk|x
+Kill(15) = batbrfa.msk|x
+Kill(16) = eftbbnp.msk|x
+Kill(17) = bastbnp.msk|x
+Kill(18) = bastimb.rep|x
+Kill(19) = ve7200a.msk|x
+Kill(20) = batbmre.msk|x
+Kill(21) = batbcau.msk|x
+Kill(22) = batbasf.msk|x
+Kill(23) = bastgcg.msk|x
+Kill(24) = basteld.rep|x
+Kill(25) = bastgca.rep|x
+Kill(26) = bastcaa.rep|x
+Kill(27) = ve7701a.ini|x
+Kill(28) = bastfrd.rep|x
+Kill(29) = batbtag.msk|x
+Kill(30) = bastctr.msk|x
+Kill(31) = bastfrr.msk|x
+Kill(32) = bastrfc.rep|x
+Kill(33) = batbfrr.msk|x
+Kill(34) = bastfrd.msk|x
+Kill(35) = bastcau.msk|x
+Kill(36) = baststd.rep|x
+Kill(37) = ve7.exe|x
+Kill(38) = batbbnp.msk|x
+Kill(39) = batbctr.msk|x
+Kill(40) = bastcra.msk|x
+Kill(41) = bastgca.msk|x
+Kill(42) = baststd.msk|x
+Kill(43) = ve7500a.msk|x
+Kill(44) = bastrfa.msk|x
+Kill(45) = bastimb.msk|x
+Kill(46) = bastnum.rep|x
+Kill(47) = batbfsa.msk|x
+Kill(48) = ve7600a.msk|x
+Kill(49) = batbtip.msk|x
+Kill(50) = batbstd.msk|x
+Kill(51) = batbgcg.msk|x
+Kill(52) = bastgmc.msk|x
+Kill(53) = ve7300a.frm|x
+Kill(54) = bastums.msk|x
+Kill(55) = bastfrr.rep|x
+Kill(56) = batbcaa.msk|x
+Kill(57) = bastfrm.rep|x
+Kill(58) = bastspp.msk|x
+Kill(59) = basttag.rep|x
+Kill(60) = bastrfc.msk|x
+Kill(61) = batbspp.msk|x
+Kill(62) = ve7100a.msk|x
+Kill(63) = ve7400conf.ini|x
+Kill(64) = basteld.msk|x
+Kill(65) = bastctr.rep|x
+Kill(66) = basttag.msk|x
+Kill(67) = batbprs.msk|x
+Kill(68) = bastcau.rep|x
+Kill(69) = bastabe.rep|x
+Kill(70) = batbubi.msk|x
+Kill(71) = bastubi.rep|x
+Kill(72) = basttri.rep|x
+Kill(73) = bastubi.msk|x
+Kill(74) = bastfca.rep|x
+Kill(75) = bastprs.rep|x
+Kill(76) = basttri.msk|x
+Kill(77) = ve7700a.msk|x
+Kill(78) = batbrfc.msk|x
+Kill(79) = efstbnp.rep|x
+Kill(80) = batbums.msk|x
+Kill(81) = bastfca.msk|x
+Kill(82) = batbgca.msk|x
+Kill(83) = ve7400a.ini|x
+Kill(84) = bastasf.msk|x
+Kill(85) = batbfrm.msk|x
+Kill(86) = basttip.rep|x
+Kill(87) = ve7200a.frm|x
+Kill(88) = batbprv.msk|x
+Kill(89) = bastfrm.msk|x
+Kill(90) = bastprs.msk|x
+Kill(91) = bastcra.rep|x
+Kill(92) = bastums.rep|x
+Kill(93) = bastnum.msk|x
+Kill(94) = batbfrd.msk|x
+Kill(95) = bastbnp.rep|x
+Kill(96) = batbcra.msk|x
+Kill(97) = batbabe.msk|x
+Kill(98) = bastspp.rep|x
+Kill(99) = batbcld.msk|x
+Kill(100) = ve7400a.msk|x
+Kill(101) = batbtri.msk|x
+Kill(102) = bastgmc.rep|x
+Kill(103) = batbspt.msk|x
+Kill(104) = efstbnp.msk|x
+Kill(105) = bastrfa.rep|x
+
+[cg9]
+Edit_19 = cg0 -0
+Edit_20 = cg0 -1
+Edit_26 = cg0 -4
+Edit_5 = cg0 -5
+File(175) = cg0.exe|X
+Patch =
+Versione = 20230100
+
+[pr9]
+Edit_4 = pr0 -0
+Edit_5 = pr0 -0
+File(16) = pr0.exe|X
+Patch =
+Versione = 20230100
+
+[mg9]
+Edit_4 = mg0 -0
+Edit_5 = mg0 -0
+File(47) = mg0.exe|X
+Patch =
+Versione = 20230100
+
+[ve]
+Data = 04-06-2024
+DescrPatch = Corretto calcolo data documento e ricerca codice note\r\naggiornato replay
+Descrizione = Vendite
+Dischi = 1
+Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9, ci9
+OEM =
+Patch = 0148
+PostProcess = bainst -0 VE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ve0148.txt b/cd/test/ve0148.txt
new file mode 100644
index 000000000..b1cff5302
--- /dev/null
+++ b/cd/test/ve0148.txt
@@ -0,0 +1,12 @@
+ve6.exe
+vetbeld.msk
+ve0.exe
+cg0.exe
+pr0.exe
+mg0.exe
+
+ Patch 0148
+ __________
+
+Corretto calcolo data documento e ricerca codice note
+aggiornato replay
diff --git a/cd/test/ve0148.zip b/cd/test/ve0148.zip
new file mode 100644
index 000000000..2658da009
Binary files /dev/null and b/cd/test/ve0148.zip differ
diff --git a/cd/test/ve0149.ini b/cd/test/ve0149.ini
new file mode 100644
index 000000000..ba3816779
--- /dev/null
+++ b/cd/test/ve0149.ini
@@ -0,0 +1,168 @@
+[Main]
+Demo=0
+
+[ve1]
+File(51) = ve6.exe|X
+Patch = 0149
+Versione = 20230100
+
+[ve2]
+File(89) = vetbeld.msk|X
+Patch = 0149
+Versione = 20230100
+
+[ve9]
+Edit_163 = ve0 -4
+Edit_33 = ve0 -0
+Edit_4 = ve0 -4
+Edit_47 = ve2 -3
+Edit_5 = ve0 -4
+File(160) = ve0.exe|X
+Patch = 0149
+Versione = 20230100
+
+[ve99]
+Kill(0) = batbcld.msk|x
+Kill(1) = bastspp.rep|x
+Kill(2) = bastfrm.msk|x
+Kill(3) = bastbnp.rep|x
+Kill(4) = batbprv.msk|x
+Kill(5) = batbfrd.msk|x
+Kill(6) = batbabe.msk|x
+Kill(7) = batbcra.msk|x
+Kill(8) = batbfrm.msk|x
+Kill(9) = bastcra.rep|x
+Kill(10) = bastasf.msk|x
+Kill(11) = bastprs.msk|x
+Kill(12) = ve7200a.frm|x
+Kill(13) = bastnum.msk|x
+Kill(14) = basttip.rep|x
+Kill(15) = bastums.rep|x
+Kill(16) = bastfca.msk|x
+Kill(17) = batbums.msk|x
+Kill(18) = ve7400a.ini|x
+Kill(19) = batbgca.msk|x
+Kill(20) = ve7200a.msk|x
+Kill(21) = bastgca.rep|x
+Kill(22) = bastfrr.msk|x
+Kill(23) = bastimb.rep|x
+Kill(24) = basteld.rep|x
+Kill(25) = bastctr.msk|x
+Kill(26) = ve7701a.ini|x
+Kill(27) = batbfrr.msk|x
+Kill(28) = bastcaa.rep|x
+Kill(29) = bastrfc.rep|x
+Kill(30) = batbrfa.msk|x
+Kill(31) = batbcau.msk|x
+Kill(32) = bastcaa.msk|x
+Kill(33) = batbmre.msk|x
+Kill(34) = bastbnp.msk|x
+Kill(35) = bastgcg.msk|x
+Kill(36) = eftbbnp.msk|x
+Kill(37) = batbasf.msk|x
+Kill(38) = batbpro.msk|x
+Kill(39) = batbfid.msk|x
+Kill(40) = batbgsa.msk|x
+Kill(41) = batbnum.msk|x
+Kill(42) = basttag.rep|x
+Kill(43) = bastctr.rep|x
+Kill(44) = bastubi.rep|x
+Kill(45) = bastspp.msk|x
+Kill(46) = basteld.msk|x
+Kill(47) = batbubi.msk|x
+Kill(48) = batbprs.msk|x
+Kill(49) = bastubi.msk|x
+Kill(50) = basttag.msk|x
+Kill(51) = basttri.rep|x
+Kill(52) = batbtip.msk|x
+Kill(53) = bastfrr.rep|x
+Kill(54) = batbspp.msk|x
+Kill(55) = ve7600a.msk|x
+Kill(56) = bastums.msk|x
+Kill(57) = bastrfc.msk|x
+Kill(58) = bastfrm.rep|x
+Kill(59) = ve7400conf.ini|x
+Kill(60) = batbcaa.msk|x
+Kill(61) = ve7100a.msk|x
+Kill(62) = batbctr.msk|x
+Kill(63) = bastimb.msk|x
+Kill(64) = batbgcg.msk|x
+Kill(65) = batbbnp.msk|x
+Kill(66) = bastrfa.msk|x
+Kill(67) = batbstd.msk|x
+Kill(68) = batbfsa.msk|x
+Kill(69) = ve7300a.frm|x
+Kill(70) = bastnum.rep|x
+Kill(71) = bastgmc.msk|x
+Kill(72) = batbtag.msk|x
+Kill(73) = bastcau.msk|x
+Kill(74) = bastgca.msk|x
+Kill(75) = bastfrd.rep|x
+Kill(76) = bastfrd.msk|x
+Kill(77) = bastcra.msk|x
+Kill(78) = ve7.exe|x
+Kill(79) = ve7500a.msk|x
+Kill(80) = baststd.rep|x
+Kill(81) = baststd.msk|x
+Kill(82) = efstbnp.rep|x
+Kill(83) = batbrfc.msk|x
+Kill(84) = bastabe.rep|x
+Kill(85) = bastprs.rep|x
+Kill(86) = bastcau.rep|x
+Kill(87) = bastfca.rep|x
+Kill(88) = ve7700a.msk|x
+Kill(89) = basttri.msk|x
+Kill(90) = bastrfa.rep|x
+Kill(91) = efstbnp.msk|x
+Kill(92) = batbtri.msk|x
+Kill(93) = ve7400a.msk|x
+Kill(94) = batbspt.msk|x
+Kill(95) = bastgmc.rep|x
+Kill(96) = basttip.msk|x
+Kill(97) = batbfca.msk|x
+Kill(98) = batbacr.msk|x
+Kill(99) = batbimb.msk|x
+Kill(100) = bastabe.msk|x
+Kill(101) = bastasf.rep|x
+Kill(102) = batbeld.msk|x
+Kill(103) = batbgmc.msk|x
+Kill(104) = bastgcg.rep|x
+Kill(105) = ve7300a.msk|x
+
+[cg9]
+Edit_19 = cg0 -0
+Edit_20 = cg0 -1
+Edit_26 = cg0 -4
+Edit_5 = cg0 -5
+File(175) = cg0.exe|X
+Patch =
+Versione = 20230100
+
+[pr9]
+Edit_4 = pr0 -0
+Edit_5 = pr0 -0
+File(16) = pr0.exe|X
+Patch =
+Versione = 20230100
+
+[mg9]
+Edit_4 = mg0 -0
+Edit_5 = mg0 -0
+File(47) = mg0.exe|X
+Patch =
+Versione = 20230100
+
+[ve]
+Data = 04-06-2024
+DescrPatch = Possibilitą di contabilizzate non per data competenza ma per data registrazione
+Descrizione = Vendite
+Dischi = 1
+Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9, ci9
+OEM =
+Patch = 149
+PostProcess = bainst -0 VE
+PreProcess =
+Prezzo(1) =
+Prezzo(2) =
+Versione = 20230100
+
diff --git a/cd/test/ve0149.txt b/cd/test/ve0149.txt
new file mode 100644
index 000000000..55819cb8a
--- /dev/null
+++ b/cd/test/ve0149.txt
@@ -0,0 +1,13 @@
+ve6.exe
+vetbeld.msk
+ve0.exe
+cg0.exe
+pr0.exe
+mg0.exe
+
+ Patch 0149
+ __________
+
+Possibilitą di contabilizzate non per data competenza ma per data registrazione
+Gestiti sconti all'interno delle righe
+Modificata la generazione dei blocchi ddt e lettera d'intenti
diff --git a/cd/test/ve0149.zip b/cd/test/ve0149.zip
new file mode 100644
index 000000000..c79850220
Binary files /dev/null and b/cd/test/ve0149.zip differ
diff --git a/src/dt/dt0400.cpp b/src/dt/dt0400.cpp
index bf305d2de..7cf4a9ff6 100755
--- a/src/dt/dt0400.cpp
+++ b/src/dt/dt0400.cpp
@@ -1209,6 +1209,7 @@ bool TDT2Doc::import_clifor(const TFilename& percorso, const char tipocf)
int dt0400(int argc, char* argv[])
{
TDT2Doc main_app;
+
main_app.run(argc, argv, TR("Importazione documenti"));
return TRUE;
}
diff --git a/src/ef/SiaggSE/classes/CreaXMLSEPA.class b/src/ef/SiaggSE/classes/CreaXMLSEPA.class
index 0a495be56..625b00e78 100644
Binary files a/src/ef/SiaggSE/classes/CreaXMLSEPA.class and b/src/ef/SiaggSE/classes/CreaXMLSEPA.class differ
diff --git a/src/fp/Rappresentazione_tabellare_del_tracciato_FatturaPA_versione_1.2.1.xls b/src/fp/Rappresentazione_tabellare_del_tracciato_FatturaPA_versione_1.2.1.xls
index 990e3f18b..bdda5b917 100644
Binary files a/src/fp/Rappresentazione_tabellare_del_tracciato_FatturaPA_versione_1.2.1.xls and b/src/fp/Rappresentazione_tabellare_del_tracciato_FatturaPA_versione_1.2.1.xls differ
diff --git a/src/fp/fp0400.cpp b/src/fp/fp0400.cpp
index bdf7c2861..04d2a3cd2 100644
--- a/src/fp/fp0400.cpp
+++ b/src/fp/fp0400.cpp
@@ -637,7 +637,7 @@ int TPassive_mask::find_fornitore(TLocalisamfile& clifo)
if (found_clifo == found_piva && clifo.get(CLI_ALLEG) == "4")
found_clifo = tipo_forn_4;
else
- found_clifo == found_clifo;
+ found_clifo = found_clifo;
return found_clifo;
}
diff --git a/src/fp/fp0600.cpp b/src/fp/fp0600.cpp
index 99eb573da..80dfa366d 100644
--- a/src/fp/fp0600.cpp
+++ b/src/fp/fp0600.cpp
@@ -26,7 +26,7 @@ bool TPop::create()
TRecord_array& record_array = fp_custom.body(LF_FPCCAUS);
int nrow;
- while((nrow = record_array.succ_row(1)) != record_array.rows())
+ while((nrow = record_array.succ_row(1)) < record_array.rows())
{
const TRectype& rec = record_array.row(nrow);
TString app = rec.get(FPCCAUS_NRIGA);
diff --git a/src/fp/fplib01.cpp b/src/fp/fplib01.cpp
index 65d805b0c..1b124fd8d 100644
--- a/src/fp/fplib01.cpp
+++ b/src/fp/fplib01.cpp
@@ -1808,8 +1808,138 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
if (!initialize(doc))
return false;
+
bool ok = true;
+ //IL GIRO DI ESPORTAZIONE DEGLI ALLEGATI PER COM'ERA FATTO PRECEDENTEMENTE NON FUNZIONAVA
+
+ if (_gestioneallegati)
+ {
+ TFilename golem_path = firm2dir(prefix().get_codditta());
+ golem_path.add("golem");
+
+ TPaf_record& paf2600f = _paf_container.get_paf("PAF2600F");
+ long nprogr = 0; // Numero di file allegati
+ // Se abilitato stampo il documento e lo allego
+ TFilename rep;
+
+ if (_allegafattura)
+ {
+ if (!dongle().active(RSAUT))
+ {
+ _log.log(1, "Impossibile generare la fattura, il modulo RS non abilitato!");
+ }
+ else if (!doc.tipo().main_print_profile(rep, 2))
+ {
+ _log.log(1, "Impossibile generare la fattura, non disponibile un profilo di stampa per questo tipo documento!");
+ }
+ else
+ {
+ //ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA} {NUM_COPIE} {ARCHIVIAZIONE}
+ // Costruisco la chiamata
+ static TString commandline;
+ commandline.cut(0) << "ve1 -2 " << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO)
+ << ' ' << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << " X P 1 D"; // X: stampa su disco, P: provvisorio, 1: 1 copia, D: disabilita archiviazione
+ TExternal_app interattivo(commandline);
+ if (interattivo.run() != NOERR)
+ {
+ TString msgerr = "Fallita generazione PDF documento ";
+ msgerr << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO)
+ << ' ' << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC);
+ error_box(msgerr);
+ }
+ else
+ {
+ TFilename pdf; pdf.tempdir();
+ pdf << SLASH << doc.get(DOC_ANNO) << '_' << doc.get(DOC_CODNUM) << '_' << doc.get(DOC_NDOC) << ".pdf";
+ if (!pdf.exist() && !yesno_box("Attenzione! Non stato possibile creare il pdf, continuare?"))
+ {
+ return false;
+ }
+ if (!add_row_alleg(pdf, nprogr, paf2600f))
+ return false;
+ }
+ }
+ }
+
+ TToken_string allegati(doc.get(DOC_COLL_GOLEM), '\n');
+
+ bool load_allegati = true;
+ if (allegati.full())
+ {
+ if (_def_fld.empty())
+ {
+ TString msgerr; msgerr << "Errore: il documento " << _bfatt << " ha degli allegati ma nella configurazione non stato impostato come trametterli\nCaricare il documento senza allegati?";
+ load_allegati = false;
+ if (!yesno_box(msgerr))
+ return false;
+ }
+ else
+ {
+ TFilename fname;
+ FOR_EACH_TOKEN(allegati, row)
+ {
+ TToken_string entry(row);
+ const bool external = entry.get_bool(2);
+
+ if (entry.get(0, fname))
+ {
+ TFilename file_path = fname;
+
+ if (!external)
+ {
+ file_path = golem_path;
+ file_path.add(fname.name());
+ }
+ if (file_path.exist())
+ {
+ if (!add_row_alleg(file_path, nprogr, paf2600f))
+ return false;
+ }
+ }
+ }
+ }
+ }
+
+ allegati = doc.get(DOC_CARTACEI);
+
+ if (allegati.full())
+ {
+ if (_def_fld.empty())
+ {
+ TString msgerr; msgerr << "Errore: il documento " << _bfatt << " ha degli allegati ma nella configurazione non stato impostato come trametterli\nCaricare il documento senza allegati?";
+ load_allegati = false;
+ if (!yesno_box(msgerr))
+ return false;
+ }
+ else
+ {
+ TFilename fname;
+ FOR_EACH_TOKEN(allegati, row)
+ {
+ TToken_string entry(row);
+ const bool external = entry.get_bool(2);
+
+ if (entry.get(0, fname))
+ {
+ TFilename file_path = fname;
+
+ if (!external)
+ {
+ file_path = golem_path;
+ file_path.add(fname.name());
+ }
+ if (file_path.exist())
+ {
+ if (!add_row_alleg(file_path, nprogr, paf2600f))
+ return false;
+ }
+ }
+ }
+ }
+ }
+ }
+
ok &= export_paf0100f();
ok &= export_paf3200f();
@@ -2934,135 +3064,6 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
ok &= insert(paf2500f);
}
- //IL GIRO DI ESPORTAZIONE DEGLI ALLEGATI PER COM'ERA FATTO PRECEDENTEMENTE NON FUNZIONAVA
-
- if (_gestioneallegati)
- {
- TFilename golem_path = firm2dir(prefix().get_codditta());
- golem_path.add("golem");
-
- TPaf_record& paf2600f = _paf_container.get_paf("PAF2600F");
- long nprogr = 0; // Numero di file allegati
- // Se abilitato stampo il documento e lo allego
- TFilename rep;
-
- if (_allegafattura)
- {
- if (!dongle().active(RSAUT))
- {
- _log.log(1, "Impossibile generare la fattura, il modulo RS non abilitato!");
- }
- else if (!doc.tipo().main_print_profile(rep, 2))
- {
- _log.log(1, "Impossibile generare la fattura, non disponibile un profilo di stampa per questo tipo documento!");
- }
- else
- {
- //ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA} {NUM_COPIE} {ARCHIVIAZIONE}
- // Costruisco la chiamata
- static TString commandline;
- commandline.cut(0) << "ve1 -2 " << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO)
- << ' ' << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << " X P 1 D"; // X: stampa su disco, P: provvisorio, 1: 1 copia, D: disabilita archiviazione
- TExternal_app interattivo(commandline);
- if (interattivo.run() != NOERR)
- {
- TString msgerr = "Fallita generazione PDF documento ";
- msgerr << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO)
- << ' ' << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC);
- error_box(msgerr);
- }
- else
- {
- TFilename pdf; pdf.tempdir();
- pdf << SLASH << doc.get(DOC_ANNO) << '_' << doc.get(DOC_CODNUM) << '_' << doc.get(DOC_NDOC) << ".pdf";
- if (!pdf.exist() && !yesno_box("Attenzione! Non stato possibile creare il pdf, continuare?"))
- {
- return false;
- }
- if (!add_row_alleg(pdf, nprogr, paf2600f))
- return false;
- }
- }
- }
-
- TToken_string allegati(doc.get(DOC_COLL_GOLEM), '\n');
-
- bool load_allegati = true;
- if (allegati.full())
- {
- if (_def_fld.empty())
- {
- TString msgerr; msgerr << "Errore: il documento " << _bfatt << " ha degli allegati ma nella configurazione non stato impostato come trametterli\nCaricare il documento senza allegati?";
- load_allegati = false;
- if (!yesno_box(msgerr))
- return false;
- }
- else
- {
- TFilename fname;
- FOR_EACH_TOKEN(allegati, row)
- {
- TToken_string entry(row);
- const bool external = entry.get_bool(2);
-
- if (entry.get(0, fname))
- {
- TFilename file_path = fname;
-
- if (!external)
- {
- file_path = golem_path;
- file_path.add(fname.name());
- }
- if (file_path.exist())
- {
- if (!add_row_alleg(file_path, nprogr, paf2600f))
- return false;
- }
- }
- }
- }
- }
-
- allegati = doc.get(DOC_CARTACEI);
-
- if (allegati.full())
- {
- if (_def_fld.empty())
- {
- TString msgerr; msgerr << "Errore: il documento " << _bfatt << " ha degli allegati ma nella configurazione non stato impostato come trametterli\nCaricare il documento senza allegati?";
- load_allegati = false;
- if (!yesno_box(msgerr))
- return false;
- }
- else
- {
- TFilename fname;
- FOR_EACH_TOKEN(allegati, row)
- {
- TToken_string entry(row);
- const bool external = entry.get_bool(2);
-
- if (entry.get(0, fname))
- {
- TFilename file_path = fname;
-
- if (!external)
- {
- file_path = golem_path;
- file_path.add(fname.name());
- }
- if (file_path.exist())
- {
- if (!add_row_alleg(file_path, nprogr, paf2600f))
- return false;
- }
- }
- }
- }
- }
- }
-
// Tabella di non invio XML
TPaf_record& pafw300f = _paf_container.get_paf("PAFW300F");
pafw300f.set("PW_TIPODOC", tipo_doc_sdi(doc));
diff --git a/src/lv/lv2900.cpp b/src/lv/lv2900.cpp
index 99daee447..c7274c0f6 100755
--- a/src/lv/lv2900.cpp
+++ b/src/lv/lv2900.cpp
@@ -160,13 +160,13 @@ TObject* TBuoni_cache::key2obj(const char* key)
if (cont.get(LVCONDV_CODNUM).empty())
{
//doc = new TDocumento('D', datadoc.year(), _codnum, ++_ndoc);
- doc = new TDocumento('D', datadausare.year(), _codnum, ++_ndoc);
+ doc = new TDocumento('D', datadausare.year(), _codnum, 0L); //++_ndoc);
doc->put(DOC_TIPODOC, _tipodoc);
}
else
{
//doc = new TDocumento('D', datadoc.year(), cont.get(LVCONDV_CODNUM), ++_ndoc);
- doc = new TDocumento('D', datadausare.year(), cont.get(LVCONDV_CODNUM), ++_ndoc);
+ doc = new TDocumento('D', datadausare.year(), cont.get(LVCONDV_CODNUM), 0L); // ++_ndoc);
doc->put(DOC_TIPODOC, cont.get(LVCONDV_TPDOC));
}
diff --git a/src/mg/mg0400.cpp b/src/mg/mg0400.cpp
index 6634c2a6b..9169b7dcd 100755
--- a/src/mg/mg0400.cpp
+++ b/src/mg/mg0400.cpp
@@ -254,7 +254,7 @@ class TClifo_giac : public TRelation_application
protected:
virtual bool user_create();
virtual bool user_destroy();
- virtual TMask *get_mask(int) { return _msk; }
+ virtual TMask *_get_mask(int) { return _msk; }
TString query_giacenze(const TMask& m);
diff --git a/src/mg/mg1100.cpp b/src/mg/mg1100.cpp
index d4cbb25fe..7fb4cc809 100755
--- a/src/mg/mg1100.cpp
+++ b/src/mg/mg1100.cpp
@@ -900,7 +900,7 @@ class TApp_movmag: public TRelation_application
protected:
virtual bool user_create();
virtual bool user_destroy();
- virtual TMask *get_mask(int) { return _msk; }
+ virtual TMask *_get_mask(int) { return _msk; }
virtual void init_query_mode(TMask&) ;
virtual void init_insert_mode(TMask&) ;
virtual void init_modify_mode(TMask&) ;
diff --git a/src/pe/pe1400.cpp b/src/pe/pe1400.cpp
index b0d4335bf..f72ca62b4 100644
--- a/src/pe/pe1400.cpp
+++ b/src/pe/pe1400.cpp
@@ -119,7 +119,7 @@ public:
virtual bool user_create();
virtual bool user_destroy();
virtual bool changing_mask(int mode) { return !(_revisioning && mode == MODE_INS); }
- virtual TMask* get_mask(int mode) { return mode == MODE_QUERY ? _qmsk : _emsk; }
+ virtual TMask* _get_mask(int mode) { return mode == MODE_QUERY ? _qmsk : _emsk; }
virtual TRelation* get_relation() const { return _rel; }
virtual bool get_next_key(TToken_string& key);
virtual bool has_filtered_cursor() const { return true; }
@@ -409,7 +409,7 @@ private:
bool set_dist(const TString& idd);
bool set_dist(int row);
- void update_dist(const real& val, int column);
+ void update_dist(const real& val, int column, bool update_sheet = true);
void update_dist_qta();
void update_dist_costo();
@@ -845,6 +845,18 @@ bool TPreventivo_emsk::on_dist_event(TOperable_field& o, TField_event e, long jo
m.set(D_COSTO, costo, 0x3);
}
break;
+ case D_QTA:
+ if (e == fe_modify && !o.empty())
+ {
+ TMask& m = o.mask();
+
+ const real costi = o.get_real() * m.get_real(D_COSTO);
+ m.set(D_COSTI, costi);
+ const real ricavo = o.get_real() * m.get_real(D_PREZZO);
+ m.set(D_RICAVI, ricavo);
+
+
+ }
case D_COSTO:
if (e == fe_modify && !o.empty())
{
@@ -853,7 +865,7 @@ bool TPreventivo_emsk::on_dist_event(TOperable_field& o, TField_event e, long jo
{
TMask& m = o.mask();
const real k = ricarico2perc(ric);
- const real prezzo = real(o.get()) * k;
+ const real prezzo = o.get_real() * k;
m.set(o.dlg()+1, prezzo);
}
}
@@ -1022,16 +1034,16 @@ bool TPreventivo_emsk::on_misu_event(TOperable_field& o, TField_event e, long jo
{
switch (o.dlg())
{
- case 102:
- case 103:
- case 104:
- case 105:
+ case M_NUM:
+ case M_LUN:
+ case M_LAR:
+ case M_ALT:
if (e == fe_modify && _curr_misu >= 0 && _curr_dist >= 0)
{
TSheet_field& misure = *o.mask().get_sheet();
- TEdit_field& tot = o.mask().efield(106);
+ TEdit_field& tot = o.mask().efield(M_TOT);
tot.validate(K_TAB);
- misure.row(_curr_misu).add(tot.get(), 5);
+ misure.set_row_cell(M_TOT, tot.get_real(), _curr_misu);
update_dist_qta();
}
break;
@@ -1086,17 +1098,25 @@ bool TPreventivo_emsk::on_misu_event(TOperable_field& o, TField_event e, long jo
return true;
}
-void TPreventivo_emsk::update_dist(const real& val, int column)
+void TPreventivo_emsk::update_dist(const real& val, int id, bool update_sheet)
{
TSheet_field& dist = sfield(F_DISTINTE);
- dist.row(_curr_dist).add(val.string(), column);
- dist.update_mask(_curr_dist);
- TOperable_field& o = dist.sheet_row_mask(_curr_dist).efield(105);
- on_dist_event(o, fe_modify, 1);
- dist.force_update(_curr_dist);
- TRectype* rec = tree().dist(_idfase, _curr_dist);
- if (rec)
- msk2rec(dist.sheet_row_mask(_curr_dist), *rec);
+
+ dist.set_row_cell(id, val, _curr_dist);
+ dist.update_mask(_curr_dist);
+ if (update_sheet)
+ {
+ TOperable_field& o = dist.sheet_row_mask(_curr_dist).efield(D_QTA);
+
+ on_dist_event(o, fe_modify, 1);
+ dist.update_row(_curr_dist);
+ dist.force_update(_curr_dist);
+
+ TRectype* rec = tree().dist(_idfase, _curr_dist);
+
+ if (rec)
+ msk2rec(dist.sheet_row_mask(_curr_dist), *rec);
+ }
}
void TPreventivo_emsk::update_dist_costo()
@@ -1107,16 +1127,16 @@ void TPreventivo_emsk::update_dist_costo()
real costo, prezzo;
FOR_EACH_SHEET_ROW(sheet, i, row)
{
- const real q = row->get(3);
- const real c = row->get();
- const real p = row->get();
+ const real q = sheet.get_real_row_cell(i, S_QTA);
+ const real c = sheet.get_real_row_cell(i, S_COSTO);
+ const real p = sheet.get_real_row_cell(i, S_PREZZO);
costo += q*c;
prezzo += q*p;
}
if (!costo.is_zero())
- update_dist(costo, 4);
+ update_dist(costo, D_COSTO);
if (!prezzo.is_zero())
- update_dist(prezzo, 5);
+ update_dist(prezzo, D_PREZZO);
}
}
@@ -1127,8 +1147,8 @@ void TPreventivo_emsk::update_dist_qta()
TSheet_field& sheet = sfield(F_MISURE);
real tot;
FOR_EACH_SHEET_ROW(sheet, i, row)
- tot += real(row->get(5));
- update_dist(tot, 3);
+ tot += sheet.get_real_row_cell(i, M_TOT);
+ update_dist(tot, D_QTA);
}
}
diff --git a/src/pe/pe1400.h b/src/pe/pe1400.h
index 0ad3f8ed5..b5c1e25a0 100644
--- a/src/pe/pe1400.h
+++ b/src/pe/pe1400.h
@@ -52,6 +52,7 @@
#define S_CODART 101
#define S_DESCR 102
#define S_UMART 103
+#define S_QTA 104
#define S_COSTO 105
#define S_PREZZO 106
#define S_CODIVA 107
@@ -74,5 +75,12 @@
#define D_RICAVI 114
#define D_COSTI 115
+#define M_DESC 101
+#define M_NUM 102
+#define M_LUN 103
+#define M_LAR 104
+#define M_ALT 105
+#define M_TOT 106
+
#define RPRV_COSTO "QTAGG5"
#define RPRV_LEVEL "PRIORITY"
diff --git a/src/pe/pe1400b.uml b/src/pe/pe1400b.uml
index e8cc82126..f7d133965 100644
--- a/src/pe/pe1400b.uml
+++ b/src/pe/pe1400b.uml
@@ -773,77 +773,77 @@ ENDMASK
PAGE "Riga" -1 -1 65 6
-STRING 101 20
+STRING S_CODART 20
BEGIN
PROMPT 1 1 "Articolo "
USE LF_ANAMAG
JOIN LF_UMART INTO CODART==CODART
- INPUT CODART 101
+ INPUT CODART S_CODART
DISPLAY "Codice@20" CODART
DISPLAY "Descrizione@50" DESCR
DISPLAY "U.M." LF_UMART->UM
- OUTPUT 101 CODART
- OUTPUT 102 DESCR
+ OUTPUT S_CODART CODART
+ OUTPUT S_DESCR DESCR
CHEKTYPE NORMAL
FIELD CODART
ADD RUN ve2 -3
END
-STRING 102 50
+STRING S_DESCR 50
BEGIN
PROMPT 1 2 "Descriz. "
USE LF_ANAMAG KEY 2
JOIN LF_UMART INTO CODART==CODART
- INPUT DESCR 102
+ INPUT DESCR S_DESCR
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice@20" CODART
DISPLAY "U.M." LF_UMART->UM
- COPY OUTPUT 101
+ COPY OUTPUT S_CODART
CHECKTYPE SEARCH
FIELD DESCR
ADD RUN ve2 -3
END
-STRING 103 2
+STRING S_UMART 2
BEGIN
PROMPT 1 3 "U.M. "
USE LF_UMART KEY 2
JOIN %UMS INTO CODTAB=UM
- INPUT CODART 101 SELECT
- INPUT UM 103
+ INPUT CODART S_CODART SELECT
+ INPUT UM S_UMART
DISPLAY "Codice" UM
DISPLAY "Descrizione@50" LF_TABCOM->S0
- OUTPUT 103 UM
+ OUTPUT S_UMART UM
CHECKTYPE NORMAL
FIELD UMQTA
END
-NUMBER 104 9 2
+NUMBER S_QTA 9 2
BEGIN
PROMPT 13 3 "Quantitą "
FIELD QTA
END
-CURRENCY 105 16
+CURRENCY S_COSTO 16
BEGIN
PROMPT 34 3 "Costo "
FIELD QTAGG5
END
-CURRENCY 106 16
+CURRENCY S_PREZZO 16
BEGIN
PROMPT 34 4 "Prezzo "
FIELD PREZZO
END
-STRING 107 4
+STRING S_CODIVA 4
BEGIN
PROMPT 45 5 "IVA "
USE %IVA
- INPUT CODTAB 107
+ INPUT CODTAB S_CODIVA
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
- OUTPUT 107 CODTAB
+ OUTPUT S_CODIVA CODTAB
CHECKTYPE NORMAL
FIELD CODIVA
END
@@ -872,43 +872,43 @@ ENDMASK
PAGE "Misura" -1 -1 60 8
-STRING 101 50 45
+STRING M_DESC 50 45
BEGIN
PROMPT 1 1 "Descriz. "
FIELD DESCR
END
-NUMBER 102 9
+NUMBER M_NUM 9
BEGIN
PROMPT 1 2 "Numero "
FIELD QTA
END
-NUMBER 103 9 2
+NUMBER M_LUN 9 2
BEGIN
PROMPT 1 3 "Lunghezza "
FIELD QTAGG1
END
-NUMBER 104 9 2
+NUMBER M_LAR 9 2
BEGIN
PROMPT 1 4 "Larghezza "
FIELD QTAGG2
END
-NUMBER 105 9 2
+NUMBER M_ALT 9 2
BEGIN
PROMPT 1 5 "Altezza "
FIELD QTAGG3
END
-NUMBER 106 9 2
+NUMBER M_TOT 9 2
BEGIN
PROMPT 1 6 "Totale "
FIELD QTA
FLAGS "DG"
- DRIVENBY 102 103 104 105
- NUM_CALC #102*IF(#103,#103,1)*IF(#104,#104,1)*IF(#105,#105,1)
+ DRIVENBY M_NUM M_LUN M_LAR M_ALT
+ NUM_CALC #M_NUM*IF(#M_LUN,#M_LUN,1)*IF(#M_LAR,#M_LAR,1)*IF(#M_ALT,#M_ALT,1)
END
ENDPAGE
diff --git a/src/xvaga/oslinux.cpp b/src/xvaga/oslinux.cpp
index a46c8ca71..5494ea07e 100644
--- a/src/xvaga/oslinux.cpp
+++ b/src/xvaga/oslinux.cpp
@@ -345,4 +345,42 @@ int OsLinux_GetSessionId()
bool OsLinux_IsdTaskbarVisible()
{
return true;
-}
\ No newline at end of file
+}
+
+unsigned long OsLinux_GetDriveSerialNumber(char * path)
+{
+ unsigned long SerialNumber = 0L;
+ char buf[256];
+ char dev[256];
+ char dir[256];
+ char type[256];
+
+ OsLinux_GetFileSys(path, dev, dir, type);
+ if (*dev)
+ {
+ len = readlink(dev, buf, 256);
+ buf[len] = 0;
+ sprintf(buf2, "%s/%s", "/sys/block/", buf);
+ for (i = 0; i < 6; i++) {
+ p = strrchr(buf2, '/');
+ *p = 0;
+ }
+ strcat(buf2, "/serial");
+
+ int f = open(buf2, 0);
+ len = read(f, buf, 256);
+ if (len <= 0) {
+ perror("read()");
+ }
+ buf[len] = 0;
+ len = 0;
+ for (const char * s = buf; *s, ; s++)
+ {
+ if (isdigit(s))
+ dev[i++] = *s;
+ }
+ dev[i] = '\0';
+ SerialNumber = atol(dev);
+ }
+ return (long)SerialNumber;
+}
diff --git a/src/xvaga/oslinux.h b/src/xvaga/oslinux.h
index 797b6e36c..9851ea0a7 100644
--- a/src/xvaga/oslinux.h
+++ b/src/xvaga/oslinux.h
@@ -27,3 +27,4 @@ int OsLinux_GetSessionId();
bool OsLinux_IsdTaskbarVisible();
+unsigned long OsLinux_GetDriveSerialNumber(char * path);
\ No newline at end of file
diff --git a/src/xvaga/xvt.h b/src/xvaga/xvt.h
index 04be5f225..1da0dc43b 100755
--- a/src/xvaga/xvt.h
+++ b/src/xvaga/xvt.h
@@ -377,6 +377,7 @@ XVTDLL void xvt_str_make_lower(char* str);
XVTDLL BOOLEAN xvt_str_md5(const char* instr, char* outstr32);
XVTDLL char* xvt_str_number_format(char* str, int size);
XVTDLL BOOLEAN xvt_str_same(const char* s1, const char* s2);
+XVTDLL char * xvt_str_exec_dir();
XVTDLL XVT_TREEVIEW_NODE xvt_treeview_add_child_node(WINDOW win,
XVT_TREEVIEW_NODE parent, XVT_TREEVIEW_NODE_TYPE type,
diff --git a/src/xvaga/xvtodbc.cpp b/src/xvaga/xvtodbc.cpp
index 11401173b..12cf22ba6 100755
--- a/src/xvaga/xvtodbc.cpp
+++ b/src/xvaga/xvtodbc.cpp
@@ -57,14 +57,20 @@ TwxConnectionDlg::TwxConnectionDlg() : wxDialog(NULL, wxID_ANY, "ODBC",
XVT_ODBC xvt_odbc_get_connection(const char* dsn, const char* usr, const char* pwd, const char* dir)
{
- static wxDbConnectInf* ci = NULL;
- if (ci == NULL)
- {
- ci = new wxDbConnectInf;
- ci->AllocHenv();
- }
+ static wxDbConnectInf* ci = nullptr;
+ static wxString strDsn, strUsr, strPwd, strDir;
+
+ if (strDsn != dsn && ci != nullptr)
+ {
+ delete ci;
+ ci = nullptr;
+ }
+
+ strDsn = dsn;
+ strUsr = usr;
+ strPwd = pwd;
+ strDir = dir;
- wxString strDsn(dsn), strUsr(usr), strPwd(pwd), strDir(dir);
if (strDsn.IsEmpty())
{
TwxConnectionDlg* dlg = new TwxConnectionDlg;
@@ -76,9 +82,16 @@ XVT_ODBC xvt_odbc_get_connection(const char* dsn, const char* usr, const char* p
strDir = dlg->_strDir;
}
dlg->Destroy();
- if (strDsn.IsEmpty())
- return NULL;
+ if (strDsn.IsEmpty())
+ return (XVT_ODBC)nullptr;
}
+ if (ci == nullptr)
+ {
+ ci = new wxDbConnectInf(NULL, strDsn, strUsr, strPwd, strDir);
+
+ // Set the ODBC version environment
+ SQLSetEnvAttr(ci->GetHenv(), SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
+ }
bool bSuccess = false;
wxDb* db = new wxDb(ci->GetHenv(), true);
@@ -86,12 +99,15 @@ XVT_ODBC xvt_odbc_get_connection(const char* dsn, const char* usr, const char* p
if (strDsn.Find(';') > 0)
bSuccess = db->Open(strDsn); // Use connection string
else
- bSuccess = db->Open(strDsn, strUsr, strPwd, true); // Use DSN, user and password
+ bSuccess = db->Open(ci); // Use DSN, user and password
if (!bSuccess)
{
- delete db;
- db = NULL;
+ int err = db->DB_STATUS;
+
+ db->DispNextError();
+ delete db;
+ db = nullptr;
}
return (XVT_ODBC)db;
@@ -226,14 +242,24 @@ ULONG xvt_odbc_execute(XVT_ODBC handle, const char* sql, ODBC_CALLBACK cb, void*
if (cmd.StartsWith("SELECT"))
{
// Senza callback mi limito a contare i records
- if (db->ExecSql(sql))
- for (nCount = 0; db->GetNext(); nCount++);
+ if (db->ExecSql(sql))
+ for (nCount = 0; db->GetNext(); nCount++);
+ else
+ nCount = -db->nativeError;
}
+ else
+ if (cmd.StartsWith("SHOW"))
+ {
+ if (db->ExecSql(sql))
+ for (nCount = 0; db->GetNext(); nCount++);
+ else
+ nCount = -db->nativeError;
+ }
else
{
db->SetDebugErrorMessages(true);
- if (db->ExecSql(sql))
- nCount = 1;
+ if (db->ExecSql(sql))
+ nCount = 1;
else
nCount = -db->nativeError;
db->SetDebugErrorMessages(false);
diff --git a/src/xvtdb/xvtdb.h b/src/xvtdb/xvtdb.h
index 427862f8e..825c6c379 100644
--- a/src/xvtdb/xvtdb.h
+++ b/src/xvtdb/xvtdb.h
@@ -235,7 +235,7 @@ public:
/**< Scongela il cursore */
void unfreeze() { defrost(); }
/**< Ritornano se č congelato o meno, attenzione: i valori di ritorno non sono const!*/
- bool frozen() const { return is_freezed(); }
+ bool frozen() const { return is_freezed(); }
bool not_frozen() const { return !is_freezed(); }
/**< Imposta l'errore di record congelato */
const bool set_error_freezed();