Patch level : 12.0 no-patch

Files correlati     : f182.dir f182.trr
Commento            :

Aggiunto file per il log
This commit is contained in:
Alessandro Bonazzi 2020-05-15 21:09:00 +02:00
parent 10f1d6d195
commit 5d27e76d9e
129 changed files with 1954 additions and 1080 deletions

View File

@ -229,7 +229,6 @@
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ClCompile Include="..\src\ba\prova.uml" />
<ClCompile Include="..\src\cg\cg2103.cpp" />
<ClCompile Include="..\src\cg\cglib01.cpp" />
<ClCompile Include="..\src\cg\cglib03.cpp">

View File

@ -63,9 +63,6 @@
<ClCompile Include="..\src\cg\cgpagame.cpp">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="..\src\ba\prova.uml">
<Filter>Masks</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<MskCompiler Include="..\src\ba\ba3200a.uml">

View File

@ -31,6 +31,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fplib", "fplib.vcxproj", "{
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "f1lib", "f1lib.vcxproj", "{41F4C25F-6BD2-4FC9-A0D3-A68CD1C9E4FC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vedoc", "vedoc.vcxproj", "{A1CE9743-A597-4F92-B55A-345A366C9E55}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@ -85,6 +87,10 @@ Global
{41F4C25F-6BD2-4FC9-A0D3-A68CD1C9E4FC}.Debug|Win32.Build.0 = Debug|Win32
{41F4C25F-6BD2-4FC9-A0D3-A68CD1C9E4FC}.Release|Win32.ActiveCfg = Release|Win32
{41F4C25F-6BD2-4FC9-A0D3-A68CD1C9E4FC}.Release|Win32.Build.0 = Release|Win32
{A1CE9743-A597-4F92-B55A-345A366C9E55}.Debug|Win32.ActiveCfg = Debug|Win32
{A1CE9743-A597-4F92-B55A-345A366C9E55}.Debug|Win32.Build.0 = Debug|Win32
{A1CE9743-A597-4F92-B55A-345A366C9E55}.Release|Win32.ActiveCfg = Release|Win32
{A1CE9743-A597-4F92-B55A-345A366C9E55}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -8,10 +8,12 @@ type ..\src\include\uml.h >%TMP%\%~n1.tmp
type %1 >>%TMP%\%~n1.tmp
cl /nologo /EP %TMP%\%~n1.tmp >%TMP%\%~n1.tm2
patchdef %TMP%\%~n1.tm2 %TMP%\%~n1.tm3
type ..\src\include\uml.h >%TMP%\%~n1.uml
type %TMP%\%~n1.tm3 >>%TMP%\%~n1.uml
cl /nologo /EP %TMP%\%~n1.uml >%TMP%\%~n1.msk
fastrip %TMP%\%~n1.msk %2

View File

@ -316,6 +316,9 @@
<IniCompiler Include="..\src\ve\verig15.ini" />
<IniCompiler Include="..\src\ve\verig23.ini" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\ve\verigdef.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="CampoRules.targets" />

View File

@ -11,6 +11,9 @@
<Filter Include="Ini">
<UniqueIdentifier>{14bb585e-0c0d-42da-a077-cb102cf4ebfa}</UniqueIdentifier>
</Filter>
<Filter Include="Headers">
<UniqueIdentifier>{7ca7db75-37c6-46b8-a014-e713bdc435d6}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<IniCompiler Include="..\src\ve\verig23.ini">
@ -114,4 +117,9 @@
<Filter>Mask</Filter>
</MskCompiler>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\ve\verigdef.h">
<Filter>Headers</Filter>
</ClInclude>
</ItemGroup>
</Project>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -7,9 +7,10 @@ Item_01 = "Anagrafiche di base", [MENU_001], "", 10214
Item_02 = "Amministrazione", <cgarea.men>, "", 10212
Item_03 = "Acquisti e vendite", <vearea.men>, "", 10211
Item_04 = "Magazzino e Produzione", <mgarea.men>, "", 10215
Item_05 = "Gestione Lavanderie", <lvmenu.men>, "", 10220
Item_06 = "Manutenzione", [MENU_015], "", 10210
Item_07 = "Preferiti", [MENU_PREFERITI], "", 10216
Item_05 = "Fatturazione Elettronica", <fpmenu.men>, "", 10239
Item_06 = "Gestione Lavanderie", <lvmenu.men>, "", 10220
Item_07 = "Manutenzione", [MENU_015], "", 10210
Item_08 = "Preferiti", [MENU_PREFERITI], "", 10216
[MENU_001]
Caption = "Gestione Anagrafiche"
@ -130,7 +131,7 @@ Flags = ""
Item_01 = "Riattribuzione codice allegato", "bacnv 21", ""
Item_02 = "Aggiornamento IV direttiva CEE", "bacnv 22", ""
Item_03 = "Aggiornamento profili documento personalizzati", "bacnv 23", ""
Item_04 = "Riattribuzione campi CONAI", "bacnv 24", ""
Item_04 = "Conversione documenti CONAI", "bacnv 24", ""
Item_05 = "Gestione attivazione licenze", "ba2 -7", ""
Item_06 = "Aggiornamento Nazioni ISO 2017" "ba7 -4", ""

View File

@ -2,8 +2,10 @@
Donglehw =4
Firm =00001a
MaxHandles = 32
Study =h:\e\dati\crpa\
Study =c:\dati\d2000\
Type = 1
User = ADMIN
MaxDim = MAX
SkipFPPRO=X
Temp=c:\temp

Binary file not shown.

View File

@ -502,77 +502,77 @@ Kill(6) = bastuue.rep|x
Kill(7) = bastuue.msk|x
[cg99]
Kill(0) = batbpdb.msk|x
Kill(1) = bastndo.rep|x
Kill(2) = batbpor.msk|x
Kill(3) = batbarb.msk|x
Kill(4) = batbnot.msk|x
Kill(5) = batbzon.msk|x
Kill(6) = batbreg.msk|x
Kill(7) = bastmsp.rep|x
Kill(8) = bastcve.rep|x
Kill(9) = batblbu.msk|x
Kill(10) = bastesc.rep|x
Kill(11) = bastscc.rep|x
Kill(12) = cgtbcon.msk|x
Kill(13) = bastcco.msk|x
Kill(14) = bastzon.rep|x
Kill(15) = bastdpn.rep|x
Kill(0) = bastdpn.msk|x
Kill(1) = batbins.msk|x
Kill(2) = batbvet.msk|x
Kill(3) = bastcve.msk|x
Kill(4) = batbver.msk|x
Kill(5) = bastnot.rep|x
Kill(6) = batbcfi.msk|x
Kill(7) = batbtra.msk|x
Kill(8) = batbscc.msk|x
Kill(9) = bastcfi.msk|x
Kill(10) = bastdpn.rep|x
Kill(11) = bastpdb.rep|x
Kill(12) = bastzon.rep|x
Kill(13) = batbind.msk|x
Kill(14) = bastzon.msk|x
Kill(15) = batbdel.msk|x
Kill(16) = batbleg.msk|x
Kill(17) = bastzon.msk|x
Kill(18) = bastcve.msk|x
Kill(19) = bastdpn.msk|x
Kill(20) = batbind.msk|x
Kill(21) = bastpdb.rep|x
Kill(22) = bastleg.msk|x
Kill(23) = batbdel.msk|x
Kill(24) = batbver.msk|x
Kill(25) = batbins.msk|x
Kill(26) = batbscc.msk|x
Kill(27) = batbcfi.msk|x
Kill(28) = bastreg.msk|x
Kill(29) = bastarb.rep|x
Kill(30) = bastnot.rep|x
Kill(31) = batbvet.msk|x
Kill(32) = bastcfi.msk|x
Kill(33) = batbtra.msk|x
Kill(34) = batblia.msk|x
Kill(35) = batbivd.msk|x
Kill(36) = bastpor.rep|x
Kill(37) = bastvet.msk|x
Kill(38) = batblia.msk|x
Kill(17) = bastleg.msk|x
Kill(18) = bastscc.rep|x
Kill(19) = bastesc.rep|x
Kill(20) = bastcco.msk|x
Kill(21) = cgtbcon.msk|x
Kill(22) = cg2fppro.msk|x
Kill(23) = bastreg.rep|x
Kill(24) = bastcam.rep|x
Kill(25) = bastcam.msk|x
Kill(26) = bastivd.rep|x
Kill(27) = batbndo.msk|x
Kill(28) = bastvet.rep|x
Kill(29) = bastndo.msk|x
Kill(30) = batbcve.msk|x
Kill(31) = bastivd.msk|x
Kill(32) = bastarb.msk|x
Kill(33) = bastmsp.msk|x
Kill(34) = batbntb.msk|x
Kill(35) = bastscc.msk|x
Kill(36) = bastver.msk|x
Kill(37) = batbesc.msk|x
Kill(38) = bastleg.rep|x
Kill(39) = bastver.rep|x
Kill(40) = bastpor.msk|x
Kill(41) = bastntb.msk|x
Kill(42) = bastpdb.msk|x
Kill(43) = bastcfi.rep|x
Kill(44) = bastntb.rep|x
Kill(45) = batbtit.msk|x
Kill(46) = bastnot.msk|x
Kill(47) = bastcco.rep|x
Kill(48) = bastarb.msk|x
Kill(49) = bastndo.msk|x
Kill(50) = batbcam.msk|x
Kill(51) = batbmsp.msk|x
Kill(52) = batbinl.msk|x
Kill(53) = batbcco.msk|x
Kill(54) = bastmsp.msk|x
Kill(55) = batbcve.msk|x
Kill(56) = batbesc.msk|x
Kill(57) = bastscc.msk|x
Kill(58) = bastcam.rep|x
Kill(59) = cg2fppro.msk|x
Kill(60) = batbntb.msk|x
Kill(61) = bastivd.msk|x
Kill(62) = bastleg.rep|x
Kill(63) = bastver.msk|x
Kill(64) = bastcam.msk|x
Kill(65) = bastreg.rep|x
Kill(66) = bastvet.rep|x
Kill(67) = batbndo.msk|x
Kill(68) = batbdpn.msk|x
Kill(69) = bastesc.msk|x
Kill(70) = bastivd.rep|x
Kill(40) = batbtit.msk|x
Kill(41) = batbmsp.msk|x
Kill(42) = batblia.msk|x
Kill(43) = bastntb.rep|x
Kill(44) = batbcam.msk|x
Kill(45) = bastcco.rep|x
Kill(46) = batbcco.msk|x
Kill(47) = bastnot.msk|x
Kill(48) = batbinl.msk|x
Kill(49) = bastarb.rep|x
Kill(50) = batbivd.msk|x
Kill(51) = bastntb.msk|x
Kill(52) = bastreg.msk|x
Kill(53) = batblia.msk|x
Kill(54) = bastpor.msk|x
Kill(55) = bastvet.msk|x
Kill(56) = bastcfi.rep|x
Kill(57) = bastpor.rep|x
Kill(58) = bastpdb.msk|x
Kill(59) = bastesc.msk|x
Kill(60) = batbdpn.msk|x
Kill(61) = batblbu.msk|x
Kill(62) = bastcve.rep|x
Kill(63) = bastndo.rep|x
Kill(64) = batbpdb.msk|x
Kill(65) = batbzon.msk|x
Kill(66) = batbnot.msk|x
Kill(67) = batbarb.msk|x
Kill(68) = batbpor.msk|x
Kill(69) = bastmsp.rep|x
Kill(70) = batbreg.msk|x
[7799]
Kill(0) = batbca7.msk|x
@ -1866,308 +1866,6 @@ File(155) = lvtblva.msk
Patch = 0870
Versione = 21511200
[cg0]
File(0) = cg0100a.msk
File(1) = cg0200a.msk
File(2) = cg0300a.msk
File(3) = cg0400b.msk
File(4) = cg0500a.msk
File(5) = cg0700a.msk
File(6) = cg0800a.msk
File(7) = cg0800a.rep|X
File(8) = cg0.exe|X
Patch = 0888
Versione = 21511200
[cg1]
File(9) = cg1.exe
File(10) = cg1100a.msk
File(11) = cg1200a.msk
File(12) = cg1200b.msk
File(13) = cg1300a.msk
File(14) = cg1300b.msk
File(15) = cg1300c.msk
File(16) = cg1300d.msk
File(17) = cg1300e.msk
File(18) = cg1300l.msk
File(19) = cg1300m.msk
File(20) = cg1300n.msk
File(21) = cg1310.msk
File(22) = cg1400a.msk
File(23) = cg1500a.msk
File(24) = cg1600a.msk
File(25) = cg1700a.msk
File(26) = cg7.exe
File(27) = cg7100i.msk
File(28) = cg7100i.rep
File(29) = cg7100p.msk
File(30) = cg7100p.rep
File(31) = cg7100r.msk
File(32) = cg7100r.rep
File(33) = cg7200a.msk
File(34) = cg7200a.rep
File(35) = cg7400a.msk
File(36) = cg7400a.png
File(37) = cg7400a.rep
File(38) = cg7600a.msk
File(39) = cg7600a.png
File(40) = cg7600a.rep
File(41) = cg7600b.rep
File(42) = cg7600c.rep
File(43) = cg7600d.rep
File(44) = cg7600e.rep
File(45) = cg7600f.rep
File(46) = cg7600g.rep
File(47) = cg7600h.rep
File(48) = cg7600i.rep
File(49) = cg7600l.rep
File(50) = cg7600m.rep
File(51) = cg7600n.rep
File(52) = cg7700a.msk
File(53) = cg7700a.png
File(54) = cg7700a.rep
File(55) = cg7700b.png
File(56) = cg7700b.rep
File(57) = cg7700c.rep
File(58) = cg7700d.rep
File(59) = cg7700e.rep
File(60) = cg7700f.rep
File(61) = cg7700g.rep
File(62) = cg7800a.msk
File(63) = cg7800a.png
File(64) = cg7800a.rep
File(65) = cg7800b.rep
File(66) = cg7900a.png
File(67) = cg7a00a.png
File(68) = cg7b00a.png
File(69) = cg7c00a.png
File(70) = cg7d00a.png
File(71) = cg7d00b.png
File(72) = cg7e00a.png
File(73) = cg7f00a.png
File(74) = cgarea.men
File(75) = cgstcfi.msk
File(76) = cgstcfi.rep
File(77) = cgstdpn.msk
File(78) = cgstdpn.rep
File(79) = cgstinv.msk
File(80) = cgstinv.rep
File(81) = cgstivd.msk
File(82) = cgstivd.rep
File(83) = cgstsplit.msk
File(84) = cgstsplit.rep
File(85) = cgstver.msk
File(86) = cgstver.rep
File(87) = cgtbcfi.msk
File(88) = cgtbdel.msk
File(89) = cgtbdpn.msk
File(90) = cgtbenp.msk
File(91) = cgtbinl.msk
File(92) = cgtbinv.msk
File(93) = cgtbivd.msk
File(94) = cgtblbu.msk
File(95) = cgtblia.msk
File(96) = cgtbpim.msk
File(97) = cgtbpimc.msk
File(98) = cgtbver.msk
Patch = 0888
Versione = 21511200
[cg2]
File(99) = cg2.exe|X
File(100) = cg2100a.msk
File(101) = cg2100b.msk
File(102) = cg2100c.msk
File(103) = cg2100e.msk
File(104) = cg2100i.msk
File(105) = cg2100k.msk
File(106) = cg2100n.msk
File(107) = cg2100o.msk
File(108) = cg2100p.msk
File(109) = cg2100s.msk
File(110) = cg2100t.msk
File(111) = cg2104a.msk
File(112) = cg2200a.msk
File(113) = cg2300a.msk
File(114) = cg2fppro.msk
Patch = 0888
Versione = 21511200
[cg3]
File(115) = cg3.exe
File(116) = cg3100a.msk
File(117) = cg3100b.msk
File(118) = cg3200a.msk
File(119) = cg3300.frm
File(120) = cg3300a.msk
File(121) = cg3300b.msk
File(122) = cg3300c.msk
File(123) = cg3400a.msk
File(124) = cg3400b.msk
File(125) = cg3500a.msk
File(126) = cg3600a.msk
File(127) = cg3600b.msk
File(128) = cg3700a.msk
File(129) = cg3800a.frm
File(130) = cg3800a.msk
File(131) = cg3900a.msk
File(132) = cg3900a.rep
Patch = 0888
Versione = 21511200
[cg4]
File(133) = cg4.exe
File(134) = cg4100b.msk
File(135) = cg4200a.msk
File(136) = cg4300a.msk
File(137) = cg4300b.msk
File(138) = cg4300c.msk
File(139) = cg4400a.msk
File(140) = cg4400b.msk
File(141) = cg4500a.msk
File(142) = cg4500b.msk
File(143) = cg4600a.msk
File(144) = cg4700a.msk
File(145) = cg4800a.msk
File(146) = cg4800b.msk
File(147) = cg4900a.msk
File(148) = cg4900b.msk
File(149) = cg4900c.msk
File(150) = cg4900d.msk
File(151) = cg4900e.msk
File(152) = cg4900f.msk
File(153) = cg4a00a.msk
File(154) = cg4b00a.msk
File(155) = cg4b00a.rep|X
Patch = 0888
Versione = 21511200
[cg5]
File(156) = cg5.exe
File(157) = cg5000a.msk
File(158) = cg5100a.msk
File(159) = cg5200a.msk
File(160) = cg5300a.msk
File(161) = cg5400a.msk
File(162) = cg5400b.msk
File(163) = cg5500a.msk
File(164) = cg5500a.rep
File(165) = cg5500b.msk
File(166) = cg5500b.rep
File(167) = cg5500c.msk
File(168) = cg5500d.msk
File(169) = cg5600a.msk
File(170) = cg5700a.frm
File(171) = cg5700a.msk
File(172) = cg5700b.msk
File(173) = cg5800a.frm
File(174) = cg5800a.msk
File(175) = cg5800a.rep
File(176) = cg5800b.msk
File(177) = cg5800b.rep
File(178) = cg5900a.msk
File(179) = cg5900a.rep
Patch = 0888
Versione = 21511200
[cg8]
File(180) = ab0.exe
File(181) = ab0200a.msk
File(182) = ab0400a.msk
File(183) = abstarb.msk
File(184) = abstarb.rep
File(185) = abstntb.msk
File(186) = abstntb.rep
File(187) = abstpdb.msk
File(188) = abstpdb.rep
File(189) = abtbarb.msk
File(190) = abtbntb.msk
File(191) = abtbpdb.msk
Patch = 0888
Versione = 21511200
[cg9]
File(192) = cg6.exe
File(193) = cg6400a.msk
File(194) = cg6400b.msk
File(195) = cg6400c.msk
File(196) = cg6600a.msk
File(197) = cg6700a.msk
File(198) = cg6800a.msk
File(199) = cg6800b.msk
File(200) = cg6800c.msk
File(201) = cg6801a.msk
File(202) = cg6802a.msk
File(203) = cg6802b.msk
File(204) = cg6803a.msk
File(205) = cg6804a.msk
File(206) = cg6804b.msk
File(207) = cg6804c.msk
File(208) = cg6804d.msk
File(209) = cg6804e.msk
File(210) = cg6804f.msk
File(211) = cg6804g.msk
File(212) = cg6900a.msk
File(213) = cg6900b.msk
File(214) = cg6903a.msk
File(215) = cgmenu.men
File(216) = cgstbnp.msk
File(217) = cgstbnp.rep
File(218) = cgstcam.msk
File(219) = cgstcam.rep
File(220) = cgstcco.msk
File(221) = cgstcco.rep
File(222) = cgstcve.msk
File(223) = cgstcve.rep
File(224) = cgstesc.msk
File(225) = cgstesc.rep
File(226) = cgstleg.msk
File(227) = cgstleg.rep
File(228) = cgstmsp.msk
File(229) = cgstmsp.rep
File(230) = cgstndo.msk
File(231) = cgstndo.rep
File(232) = cgstnot.msk
File(233) = cgstnot.rep
File(234) = cgstpor.msk
File(235) = cgstpor.rep
File(236) = cgstreg.msk
File(237) = cgstreg.rep
File(238) = cgstscc.msk
File(239) = cgstscc.rep
File(240) = cgsttit.msk
File(241) = cgsttit.rep
File(242) = cgsttpd.msk
File(243) = cgsttpd.rep
File(244) = cgstvet.msk
File(245) = cgstvet.rep
File(246) = cgstzon.msk
File(247) = cgstzon.rep
File(248) = cgtbbnp.msk
File(249) = cgtbcam.msk
File(250) = cgtbcbp.msk
File(251) = cgtbcco.msk
File(252) = cgtbcve.msk
File(253) = cgtbesc.msk
File(254) = cgtbind.msk
File(255) = cgtbins.msk
File(256) = cgtbleg.msk
File(257) = cgtbmsp.msk
File(258) = cgtbndo.msk
File(259) = cgtbnot.msk
File(260) = cgtbpor.msk
File(261) = cgtbreg.msk
File(262) = cgtbscc.msk
File(263) = cgtbtit.msk
File(264) = cgtbtpd.msk
File(265) = cgtbtra.msk
File(266) = cgtbvet.msk
File(267) = cgtbzon.msk
File(268) = cgtrc.ini
File(269) = cgtrcpc.ini
Patch = 0888
Versione = 21511200
[f90]
File(0) = f90.exe|X
File(1) = f90100a.msk|X
@ -3204,3 +2902,306 @@ File(536) = recdesc\f99.trr
Patch = 0902
Versione = 21511200
[cg0]
File(0) = cg0.exe|X
File(1) = cg0100a.msk
File(2) = cg0200a.msk
File(3) = cg0300a.msk
File(4) = cg0400b.msk
File(5) = cg0500a.msk
File(6) = cg0700a.msk
File(7) = cg0800a.msk
File(8) = cg0800a.rep|X
Patch = 888
Versione = 21511200
[cg1]
File(9) = cg1.exe
File(10) = cg1100a.msk
File(11) = cg1200a.msk
File(12) = cg1200b.msk
File(13) = cg1300a.msk
File(14) = cg1300b.msk
File(15) = cg1300c.msk
File(16) = cg1300d.msk
File(17) = cg1300e.msk
File(18) = cg1300l.msk
File(19) = cg1300m.msk
File(20) = cg1300n.msk
File(21) = cg1310.msk
File(22) = cg1400a.msk
File(23) = cg1500a.msk
File(24) = cg1600a.msk
File(25) = cg1700a.msk
File(26) = cg7.exe
File(27) = cg7100i.msk
File(28) = cg7100i.rep
File(29) = cg7100p.msk
File(30) = cg7100p.rep
File(31) = cg7100r.msk
File(32) = cg7100r.rep
File(33) = cg7200a.msk
File(34) = cg7200a.rep
File(35) = cg7400a.msk
File(36) = cg7400a.png
File(37) = cg7400a.rep
File(38) = cg7600a.msk
File(39) = cg7600a.png
File(40) = cg7600a.rep
File(41) = cg7600b.rep
File(42) = cg7600c.rep
File(43) = cg7600d.rep
File(44) = cg7600e.rep
File(45) = cg7600f.rep
File(46) = cg7600g.rep
File(47) = cg7600h.rep
File(48) = cg7600i.rep
File(49) = cg7600l.rep
File(50) = cg7600m.rep
File(51) = cg7600n.rep
File(52) = cg7700a.msk
File(53) = cg7700a.png
File(54) = cg7700a.rep
File(55) = cg7700b.png
File(56) = cg7700b.rep
File(57) = cg7700c.rep
File(58) = cg7700d.rep
File(59) = cg7700e.rep
File(60) = cg7700f.rep
File(61) = cg7700g.rep
File(62) = cg7800a.msk
File(63) = cg7800a.png
File(64) = cg7800a.rep
File(65) = cg7800b.rep
File(66) = cg7900a.png
File(67) = cg7a00a.png
File(68) = cg7b00a.png
File(69) = cg7c00a.png
File(70) = cg7d00a.png
File(71) = cg7d00b.png
File(72) = cg7e00a.png
File(73) = cg7f00a.png
File(74) = cgarea.men
File(75) = cgstcfi.msk
File(76) = cgstcfi.rep
File(77) = cgstdpn.msk
File(78) = cgstdpn.rep
File(79) = cgstinv.msk
File(80) = cgstinv.rep
File(81) = cgstivd.msk
File(82) = cgstivd.rep
File(83) = cgstsplit.msk
File(84) = cgstsplit.rep
File(85) = cgstver.msk
File(86) = cgstver.rep
File(87) = cgtbcfi.msk
File(88) = cgtbdel.msk
File(89) = cgtbdpn.msk
File(90) = cgtbenp.msk
File(91) = cgtbinl.msk
File(92) = cgtbinv.msk
File(93) = cgtbivd.msk
File(94) = cgtblbu.msk
File(95) = cgtblia.msk
File(96) = cgtbpim.msk
File(97) = cgtbpimc.msk
File(98) = cgtbver.msk
Patch = 888
Versione = 21511200
[cg2]
Edit_23 = cg2 -0
File(99) = cg2.exe|X
File(100) = cg2100a.msk
File(101) = cg2100b.msk
File(102) = cg2100c.msk
File(103) = cg2100e.msk
File(104) = cg2100i.msk
File(105) = cg2100k.msk
File(106) = cg2100n.msk
File(107) = cg2100o.msk
File(108) = cg2100p.msk
File(109) = cg2100s.msk
File(110) = cg2100t.msk
File(111) = cg2104a.msk
File(112) = cg2200a.msk
File(113) = cg2300a.msk
File(114) = cg2fppro.msk
Patch = 888
Versione = 21511200
[cg3]
File(115) = cg3.exe
File(116) = cg3100a.msk
File(117) = cg3100b.msk
File(118) = cg3200a.msk
File(119) = cg3300.frm
File(120) = cg3300a.msk
File(121) = cg3300b.msk
File(122) = cg3300c.msk
File(123) = cg3400a.msk
File(124) = cg3400b.msk
File(125) = cg3500a.msk
File(126) = cg3600a.msk
File(127) = cg3600b.msk
File(128) = cg3700a.msk
File(129) = cg3800a.frm
File(130) = cg3800a.msk
File(131) = cg3900a.msk
File(132) = cg3900a.rep
Patch = 888
Versione = 21511200
[cg4]
File(133) = cg4.exe
File(134) = cg4100b.msk
File(135) = cg4200a.msk
File(136) = cg4300a.msk
File(137) = cg4300b.msk
File(138) = cg4300c.msk
File(139) = cg4400a.msk
File(140) = cg4400b.msk
File(141) = cg4500a.msk
File(142) = cg4500b.msk
File(143) = cg4600a.msk
File(144) = cg4700a.msk
File(145) = cg4800a.msk
File(146) = cg4800b.msk
File(147) = cg4900a.msk
File(148) = cg4900b.msk
File(149) = cg4900c.msk
File(150) = cg4900d.msk
File(151) = cg4900e.msk
File(152) = cg4900f.msk
File(153) = cg4a00a.msk
File(154) = cg4b00a.msk
File(155) = cg4b00a.rep|X
Patch = 888
Versione = 21511200
[cg5]
File(156) = cg5.exe
File(157) = cg5000a.msk
File(158) = cg5100a.msk
File(159) = cg5200a.msk
File(160) = cg5300a.msk
File(161) = cg5400a.msk
File(162) = cg5400b.msk
File(163) = cg5500a.msk
File(164) = cg5500a.rep
File(165) = cg5500b.msk
File(166) = cg5500b.rep
File(167) = cg5500c.msk
File(168) = cg5500d.msk
File(169) = cg5600a.msk
File(170) = cg5700a.frm
File(171) = cg5700a.msk
File(172) = cg5700b.msk
File(173) = cg5800a.frm
File(174) = cg5800a.msk
File(175) = cg5800a.rep
File(176) = cg5800b.msk
File(177) = cg5800b.rep
File(178) = cg5900a.msk
File(179) = cg5900a.rep
Patch = 888
Versione = 21511200
[cg8]
File(180) = ab0.exe
File(181) = ab0200a.msk
File(182) = ab0400a.msk
File(183) = abstarb.msk
File(184) = abstarb.rep
File(185) = abstntb.msk
File(186) = abstntb.rep
File(187) = abstpdb.msk
File(188) = abstpdb.rep
File(189) = abtbarb.msk
File(190) = abtbntb.msk
File(191) = abtbpdb.msk
Patch = 888
Versione = 21511200
[cg9]
File(192) = cg6.exe
File(193) = cg6400a.msk
File(194) = cg6400b.msk
File(195) = cg6400c.msk
File(196) = cg6600a.msk
File(197) = cg6700a.msk
File(198) = cg6800a.msk
File(199) = cg6800b.msk
File(200) = cg6800c.msk
File(201) = cg6801a.msk
File(202) = cg6802a.msk
File(203) = cg6802b.msk
File(204) = cg6803a.msk
File(205) = cg6804a.msk
File(206) = cg6804b.msk
File(207) = cg6804c.msk
File(208) = cg6804d.msk
File(209) = cg6804e.msk
File(210) = cg6804f.msk
File(211) = cg6804g.msk
File(212) = cg6900a.msk
File(213) = cg6900b.msk
File(214) = cg6903a.msk
File(215) = cgmenu.men
File(216) = cgstbnp.msk
File(217) = cgstbnp.rep
File(218) = cgstcam.msk
File(219) = cgstcam.rep
File(220) = cgstcco.msk
File(221) = cgstcco.rep
File(222) = cgstcve.msk
File(223) = cgstcve.rep
File(224) = cgstesc.msk
File(225) = cgstesc.rep
File(226) = cgstleg.msk
File(227) = cgstleg.rep
File(228) = cgstmsp.msk
File(229) = cgstmsp.rep
File(230) = cgstndo.msk
File(231) = cgstndo.rep
File(232) = cgstnot.msk
File(233) = cgstnot.rep
File(234) = cgstpor.msk
File(235) = cgstpor.rep
File(236) = cgstreg.msk
File(237) = cgstreg.rep
File(238) = cgstscc.msk
File(239) = cgstscc.rep
File(240) = cgsttit.msk
File(241) = cgsttit.rep
File(242) = cgsttpd.msk
File(243) = cgsttpd.rep
File(244) = cgstvet.msk
File(245) = cgstvet.rep
File(246) = cgstzon.msk
File(247) = cgstzon.rep
File(248) = cgtbbnp.msk
File(249) = cgtbcam.msk
File(250) = cgtbcbp.msk
File(251) = cgtbcco.msk
File(252) = cgtbcve.msk
File(253) = cgtbesc.msk
File(254) = cgtbind.msk
File(255) = cgtbins.msk
File(256) = cgtbleg.msk
File(257) = cgtbmsp.msk
File(258) = cgtbndo.msk
File(259) = cgtbnot.msk
File(260) = cgtbpor.msk
File(261) = cgtbreg.msk
File(262) = cgtbscc.msk
File(263) = cgtbtit.msk
File(264) = cgtbtpd.msk
File(265) = cgtbtra.msk
File(266) = cgtbvet.msk
File(267) = cgtbzon.msk
File(268) = cgtrc.ini
File(269) = cgtrcpc.ini
Patch = 888
Versione = 21511200

Binary file not shown.

View File

@ -0,0 +1,102 @@
[FieldDescr]
ANTICORPI = Anticorpi
BENEM = Vuole le benemerenze S/N
CATDON = Categoria donatori
CATNOND1 = Categoria non donatori 1
CATNOND2 = Categoria non donatori 2
CF = Codice fiscale
CMV = CMV
CODCL = Codice cartella clinica
CODCT = Codice centro trasfusionale
CODICE = Codice
CODMED = Codice regionale medico di base
CODSEZ = Codice sezione di appartenenza
CODSOT = Codice sottogruppo di appartenenza
COGNOME = Cognome
COGNOME_SP = Cognome del marito
COMNASC = Codice comune o stato estero di nascita
CONDOCC = Condizione occupazionale (da cambiare)
CONSENSO = Consenso informato (legge privacy)
DATAAF = Data stato AF
DATACONV = Data ultima convocazione spedita
DATADIM = Data dimissione
DATAISC = Data iscrizione
DATANASC = Data di nascita
DATAPRIAF = Data prima donazione AF
DATAPRISI = Data prima donazione SI
DATAPROSAF = Data prossima AF
DATAPROSSI = Data prossima SI
DATASI = Data stato SI
DATASTATO = Data in cui è stato attribuito lo stato
DATAULTAF = Data ultima donazione AF
DATAULTAGG = Data ultimo aggiornamento
DATAULTDON = Data ultima donazione
DATAULTID = Data ultima idoneità
DATAULTSI = Data ultima donazione SI
DATAULTSOL = Data ultimo sollecito
DATA_PROS = Data prossimo stato (per fine sospensione)
DISP_AF_1 = Disponibilita AF 1
DISP_AF_2 = Disponibilita AF 2
DOCID = Documento di identità
DOM_CAP = Domicilio - CAP
DOM_CODCOM = Domicilio - codice comune
DOM_CODLOC = Domicilio - codice localita' postale
DOM_DISTRI = Domicilio - presso/località - ex distribuzione
DOM_INDIR = Domicilio - indirizzo
DOM_STRADA = Domicilio - codice stradario
DONPRECAF = Numero donazioni AF non dettagliate
DONPRECSI = Numero donazioni SI non dettagliate
DU = Du
EMAIL = Indirizzo di posta elettronica
ESCLUSO = Esclusione non sanitaria
FENOTIPORH = Fenotipo Rh
FINESOSAF = Data fine sospensione AF
FINESOSSI = Data fine sospensione per SI
GIOPRECON = Giorni preferiti per controlli
GIOPREDON = Giorni preferiti per donazioni
GRUPPOAB0 = Gruppo AB0
GRUPPOAZIE = Codice gruppo aziendale
IDON1 = Idoneità 1
IDON2 = Idoneità 2
IDON3 = Idoneità 3
IDON4 = Idoneità 4
INTAF = Intervallo aferesi
INTSI = Intervallo sangue intero
KELL = Kell
LUOGOLAV = Luogo di lavoro (codice)
MODCONV = Modalita' di convocazione
MOTESCL = Motivo esclusione
NOME = Nome
NOTE = Note
NOTIZIARIO = Vuole il notiziario S/N
NUMCONV = Numero convocazioni spedite
POSPROF = Posizione professionale (da cambiare)
PROFESS = Professione (codice)
PROS_STATO = Stato prossimo
PUNTORACC = Punto di raccolta per convocazione
RAMOATT = Ramo di attività (da cambiare)
RES_CAP = Residenza - CAP
RES_CODCOM = Residenza - codice comune
RES_CODLOC = Residenza - codice localita' postale
RES_INDIR = Residenza - indirizzo
RHANTID = Rh/AntiD
SESSO = Sesso
STATO = Stato attuale
STATOAF = Stato sanitario AF
STATOSI = Stato sanitario per SI
TELABI = Telefono abitazione
TELALT = Telefono altro
TELLAV = Telefono lavoro
TERMESCL = Data termine esclusione
TESSAVIS = Tessera AVIS
TESSSSN = Tessera SSN
TIPOULTDON = Tipo ultima donazione
TIPOULTID = Tipo ultima idoneità
TITINDIR = Titolo in indirizzo
TITSTUD = Titolo di studio (da cambiare)
TOTDON = Totale donazioni
TOTDONAF = Numero donazioni AF
TOTDONSI = Numero donazioni SI
T_STAMPATA = Tessera stampata (S/N)
UTENULTAGG = Utente ultimo aggiornamento

View File

@ -1,3 +1,18 @@
[FieldDescr]
XX =
CC = CC
CODICE = Codice soggetto
CODSEZ = Sezione di app. al momento della donazione
CODSOT = Sottogruppo di app.
DATADON = Data donazione
ETICHETTA = Etichetta sacca
HB = Hb
LUOGODON = Luogo donazione
PA = P.A.
PRIMADON = Prima donazione
PROGDON = Progressivo donazione per soggetto
PROGINS = Progressivo inserimento
PROTIDEMIA = Protidemia
SGPT = SGPT
TIPODON = Tipo donazione
XX =

View File

@ -0,0 +1,17 @@
[FieldDescr]
CODICE = Codice soggetto
DATACON = Data controllo
IDON1 = Idoneità 1
IDON2 = Idoneità 2
IDON3 = Idoneità 3
IDON4 = Idoneità 4
INTAF = Intervallo per aferesi
INTSI = Intervallo per sangue intero
MOTIVO = Motivo (per controlli che modificano lo stato)
PROGCON = Progressivo controllo
PROSSDATA = Data prossimo tipo
PROSSTIPO = Prossimo tipo di controllo (programmato e/o presunto)
RESPONSAB = Responsabile (per controlli che modificano lo stato)
SINGOLI = Singoli controlli
TIPOCON = Tipo o esito controllo

View File

@ -0,0 +1,6 @@
[FieldDescr]
CODFAM = Codice soggetto familiare
FAMIGLIA = Codice famiglia (progressivo automatico)
GRADOPAR = Grado di parentela
PROGFAM = Progressivo familiare

View File

@ -0,0 +1,40 @@
[FieldDescr]
CATCANC = Categoria cancellati
CATEMER = Categoria emeriti
CATESTI = Categoria estinti
CODSEZ = Codice sezione
CODSOT = Codice sottogruppo
COM = Codice comune residenza
CONVNOTE = Note
CONVORA = Orario per stampa cartolina
CONVSEDE1 = Sede: 1° riga
CONVSEDE2 = Sede: 2° riga
CONVSEDE3 = Sede: 3° riga
CONVSEDE4 = Sede: 4° riga
DATAULTCON = Data ultima convocazione
DENOMINAZ = Denominazione completa della sezione
DENSEZ = Denominazione sezione
DENSOT = Denominazione sottogruppo
DONEMER = Numero donazioni per passaggio a emeriti
FAX = Fax sezione
GIOCARSOL = Giorni tra cartolina e primo sollecito
GIOPERRIT = Giorni tra le chiamate per ritardatari
GIOSOLSOL = Giorni tra sollecito e sollecito
GIOULTSOL = Giorni tra penultimo e ultimo sollecito
INDIRIZZO = Indirizzo
INTESTAZ1 = 1° Riga di intestazione per tessere e cartoline
INTESTAZ2 = 2° Riga di intestazione per tessere e cartoline
INTESTAZ3 = 3° Riga di intestazione per tessere e cartoline
INTESTAZ4 = 4° Riga di intestazione per tessere e cartoline
INTESTI = Intervallo di estinzione in anni
INTMAX = Intervallo max per cartolina
INTMIN = Intervallo min. per cartolina
INTMINCONV = Intervallo minimo di convocazione in gg.
LOCALITA = Località postale
NUMMAXSOL = Numero massimo di solleciti
PUNTORACC = Codice punto di raccolta per convocazione
REFERCED = Cognome e nome referente CED
STATO = Stato sezione
TELEFONO = Telefono sezione
TIPOCONV = Tipo convocazione

View File

@ -0,0 +1,10 @@
[FieldDescr]
CODMED = Codice regionale del medico
COGNOME = Cognome medico
COM = Codice comune di residenza
INDIRIZZO = Indirizzo medico
LOCALITA = Località postale
NOME = Nome medico
TELABI = Telefono abitazione
TELAMB = Telefono ambulatorio

View File

@ -1,6 +1,7 @@
[FieldDescr]
AL = Data fine periodo
ANNO = Anno
CHIUSA = Indica se una lettera di intento è chiusa
CODCLI = Codice cliente
DAL = Data inizio periodo
DATAREG = Data di registrazione
@ -8,6 +9,8 @@ IMPORTO = Importo
INVIATO = Inviato
NOTE = Note
NUMPROT = Numero protocollo
PROTINTF = Numero di protocollo passato dall agenzia delle entrate (prima parte)
PROTINTS = Numero di protocollo passato dall agenzia delle entrate (seconda parte)
STAMPATO = Stampato
TIPOOP = Tipo operazione (1=singola,2=fino a,3=nel periodo dal/al)
UFFIVA = Codice ufficio IVA

View File

@ -46,7 +46,7 @@ RIFBOL = Riferimenti bolle in fattura
RIFBOLFAT = Riferimenti bolle in fattura
RIPCONS = Stampa riepilogo consegne
RITAUDTTMP = Ritiro automatico dotazione temporanea
SSCONS = Spese di spedizione alla consegna
SSCONS = Spese da addebitare alla consegna
STATUS = Stato del contratto, <CH>chiuso, <CO>confermato, <DC>da confermare
STDDTPTS = Stampa DDT da pulito con Touch Screen
STDICITURA = Stampa dicitura

View File

@ -38,8 +38,9 @@ CODVETT2 = Vettore 2
CODVETT3 = Vettore 3
CODZONA = Codice zona
CONAIASS = Stampa contributo CONAI assolto
DATAECONAI = Data di fine esnzion CONAI
DATAECONAI = Data fine esenzione CONAI
DATAESC = Data estratto conto
DATAICONAI = Data inizio esenzione CONAI
DATASOLL = Data sollecito
EMEFFRICH = Emissione effetti a richiesta
ESACC = Percentuale di esenzione CONAI acciaio

View File

@ -7,6 +7,7 @@ DATAREGP = Data pagamento
IMPONIBILE = Imponibile
IMPORTO = Importo
IMPOSTA = Imposta
INDETR = Riga di IVA indetraibile
MESELIQ = Mese liquidazione
NUMPRO = Numero progressivo PAG o NC
NUMREG = Numero operazione Fattura

View File

@ -10,9 +10,10 @@ CODCAB = Codice CAB banca
CODCF = Codice
CODCFASS = Codice cliente (fornitori) o fornitore (clienti) associato
CODCFFATT = Codice cliente (fornitore) cui fatturare
CODFPCUST = Codice personalizzazione FP
CODLIN = Codice lingua
CODPAG = Codice pagamento
CODRFSO = Missing description
CODRFSO = Codice Rappresentante Fiscale/Stabile Organizzazione
CODSTAT = Codice statistico
CODVAL = Codice valuta
COFI = Codice fiscale
@ -22,9 +23,10 @@ CONTO = Conto prevalente (se presente)
CONTORIC = Conto prevalente di ricavo (se presente)
DATAAGG = Data ultima modifica
DATANASC = Data di nascita
DATARFSO = Missing description
DATARFSO = Data immissione valore
DIPPUBB = Dipendente Pubblico
DIRTY = Anagrafica modificata (NON UTILIZZATO)
DISCUSTFP = Disabilita le personalizzazioni FP sul cliente
DOCMAIL = Indirizzo di posta elettronica per i documenti
ENTE = Codice ente pubblico di appartenenza (Dipendente Pubblico)
FAX = Numero di FAX
@ -34,15 +36,15 @@ GRUPPORIC = Gruppo prevalente di ricavo (se presente)
IBAN = Codice IBAN
INDCF = Indirizzo
INDENTE = Indirizzo ente (Dipendente Pubblico)
INIFATTEL = Missing description
INIREVCHG = Missing description
INIFATTEL = Data inizio fatturazione elettronica
INIREVCHG = Data inizio rev. charge
LOCALITACF = Loacalita'
MAIL = Indirizzo di posta elettronica generico
NUMCC = Numero di conto corrente
OCCAS = Cliente / fornitore occasionale
OGGETTI = Link ad oggetti esterni
PAIV = Partita IVA
PEC = Missing description
PEC = Indirizzo di posta elettronica certificato
PFAX = Prefisso del numero di FAX
PTEL = Prefisso del numero di telefono
PTEL2 = Prefisso del 2 numero di telefono

View File

@ -9,8 +9,12 @@ GRUPPO = Gruppo
NUMULTMOV = Numero operazione dell'ultimo movimento
PAVERE = Progressivo avere
PAVEREPRO = Progressivo avere movimenti provvisori
PAVEREPROB = Progressivo avere movimenti provvisori bilancio costi ricavi
PAVEREPROC = Progressivo avere movimenti provvisori cespiti
PDARE = Progressivo dare
PDAREPRO = Progressivo dare movimenti provvisori
PDAREPROB = Progressivo dare movimenti provvisori bilancio costi ricavi
PDAREPROC = Progressivo dare movimenti provvisori cespiti
SALDO = Saldo iniziale
SALDOFIN = Saldo di chiusura
SOTTOCONTO = Sottoconto

View File

@ -4,6 +4,7 @@ ANNOFE = Anno invio definitivo dati rilevanti
ANNOIVA = Anno IVA
CAMBIO = Cambio della valuta
CAMBIOI = Cambio della valuta intra-comunitaria
CFBOLLADOG = Codice fornitore a cui è riferita la bolla doganale
CODCAUS = Codice causale
CODCF = Codice
CODPAG = Codice pagamento
@ -17,6 +18,7 @@ DANNO = Documento originale ANNO
DATA74TER = Data per art. 74 ter
DATACAM = Data del cambio
DATACOMP = Data competenza
DATACOMPCR = Data competenza costi/ricavi
DATACOMPI = Data di competenza intra-comunitaria
DATADOC = Data documento
DATAINC = Data di incasso per liquidazione differita
@ -26,13 +28,17 @@ DCODNUM = Documento originale CODNUM
DESCR = Descrizione
DNDOC = Documento originale NDOC
DPROVV = Documento originale PROVV
ELABF9 = archiviato , data , esclusione
INVIATO = Inviato ad altra contabilità
INVIOFE = Data invio definitivo dati rilevanti
INVIVA = Inviata la parte IVA ad altra contabilita'
IVALIQ = Iva per cassa liquidata completamente
IVAXCASSA = Flag di movimento IVA per cassa
KEYFPPRO = Chiavi dell'FPPRO [KEYPRGINVIO;KEYHEADERFATT;KEYBODYFATT]
LIQDIFF = Flag di movimento a liquidazione differita
MESELIQ = Mese per liquidazione differita
MODPAG = Modalità di pagamento 1=Non frazionato; 2=Frazionato; 3=Periodico
MOVCOLL = Movimento collegato
NOLEGGIO = Tipo veicolo Auto, Camper, Altro, Diporto, aEreo
NUMDOC = Numero documento
NUMDOCEXT = Numero documento esteso
@ -41,15 +47,18 @@ NUMREG = Numero di operazione
NUMRETT = Numero documento rettificato
OCFPI = Codice cliente / fornitore occasionale
PROTIVA = Numero di protocollo IVA
PROVVIS = Tipo movimento (" " Normale, "P" Provvisorio cancellabile, "C" Provvisorio cespiti)
PROVVIS = Tipo movimento (< > Normale, Provvisorio <P> cancellabile, <C> cespiti, <B> bilancio costi/ricavi
REG = Codice registro IVA
REGST = Stampato su registro IVA
REVCHARGE = Reverse charge
RITFATT = Fattura in ritardo
RITFIS = Ritenute fiscali
RITSOC = Ritenute sociali
SCARCON = Scaricata la contabilitá
SPLITPAY = Flag di scissione pagamenti [_=Auto,S=Split,N=Normale]
STAMPATO = Stampato su giornale
TFDATA = Data ultimo invio Trasferimento Fatture
TFINVIO = Flag Invio Trasferimento Fatture
TIPO = Tipo <C>liente o <F>ornitore
TIPODOC = Tipo documento
TIPOMOV = Tipo movimento

View File

@ -11,6 +11,7 @@ INTRA = Riga intra-comunitaria
NAVP = Nota di variazione anni precedenti x Elenco CF
NUMREG = Numero operazione
NUMRIG = Numero riga
REVCHARGE = Riga IVA reverse charge
RIGAIMP = Numero riga contabile dell' imponibile
RIGAIVA = Numero riga contabile dell'IVA
SOTTOCONTO = Sottoconto o codice cliente/fornitore

View File

@ -7,6 +7,7 @@ CODCAUSIM = Codice causale incasso immediato
COLLCESP = Collegamnto ai cespiti
CONTIND = Causale per contabilità industriale
DATADOC = Data documento
DATAREGPR = Data di registrazion nell'ereserciozio precedente per il caso del campo precedente
DESCR = Descrizione causale
INTRACOM = Movimento intra-comunitario
LIQDIFF = Fatture a liquidazione differita
@ -20,7 +21,8 @@ NUMDOC = Numero documento
PROVV = Tipo movimento (" " Normale, "P" Provvisorio cancellabile, "C" Provvisorio da cepiti)
REG = Codice registro
REGSPIVA = Regimi speciali IVA
RITFATT =
RILFTEMRI = Causale di rilevazione fatture de emettere o ricevere
RITFATT = Fattura in ritardo
SOLOIVA = Movimento di sola IVA
SOSPESO = Causale sospesa
TIPODOC = Tipo documento

View File

@ -22,6 +22,7 @@ D1 =
D2 =
D3 =
D4 =
DATAAGG =
FPC =
I0 =
I1 =
@ -66,6 +67,7 @@ R30 =
R31 =
R32 =
R33 =
R34 =
R4 =
R5 =
R6 =
@ -76,6 +78,9 @@ S0 =
S1 =
S10 =
S11 =
S12 =
S13 =
S14 =
S2 =
S3 =
S4 =
@ -84,4 +89,5 @@ S6 =
S7 =
S8 =
S9 =
UTENTE =

View File

@ -93,6 +93,7 @@ TARA = Tara
TIPOCF = Tipo <C>liente <F>ornitore
TIPOCFFATT = Tipo <C>liente <F>ornitore cui fatturare
TIPODOC = Tipo documento
TIPODOCSDI = Tido documento secondo Agenzia delle Entrate
UMPNETTO = Unità di misura per il peso netto
UMTARA = Unità di misura per la tara
UTENTE = Utente ultimo aggiornamento

View File

@ -78,6 +78,9 @@ S0 =
S1 =
S10 =
S11 =
S12 =
S13 =
S14 =
S2 =
S3 =
S4 =

View File

@ -78,6 +78,9 @@ S0 =
S1 =
S10 =
S11 =
S12 =
S13 =
S14 =
S2 =
S3 =
S4 =

View File

@ -45,6 +45,7 @@ STATOPAIV =
STATORES =
TELRF =
TIPOA =
TIPORFSO = Definisce se la persona è un <R>appr. Fiscale, <S>tabile Organizzazione o nessuno dei due
TIPOSTDEL =
TITCF =
TLEXRFX =
@ -52,6 +53,7 @@ UFFCONC =
UFFIIDD =
UFFIVA =
UFFUUE =
UTENTE =
VARDF =
VARSLORES =

View File

@ -10,6 +10,7 @@ CESSIVA = Cessata attivita' o variata partita IVA
CODANAGR =
CODATTPREV =
CODDITTA =
CODRFSO = Codice Rappresentante Fiscale/Stabile Organizzazione
CODSOGDEL = Codice del soggetto delegato
CODSTAT1 =
CODSTAT2 =
@ -18,6 +19,7 @@ COMAA =
CONDFAM =
CONTORD =
DATAISCRAA =
DATARFSO = Data immissione valore
DATLAV =
DECCARINT =
DEDART13 =
@ -51,6 +53,7 @@ RAPPR =
REGMAG =
REGSTATSP =
RICSUP20% =
SOCIOUNICO = N Se la ditta ha un socio unico o +
TEL =
TIPOA =
TIPOSOGDEL = Tipo anagrafico del soggetto delegato

View File

@ -1,3 +1,3 @@
154
0
$letint|91|91|114|0|Lettere d'intento|||
$letint|0|0|90|0|Lettere d'intento|||

View File

@ -1,5 +1,5 @@
154
17
14
ANNO|2|4|0|Anno
NUMPROT|3|6|0|Numero protocollo
DATAREG|5|8|0|Data di registrazione
@ -14,9 +14,6 @@ DAL|5|8|0|Data inizio periodo
AL|5|8|0|Data fine periodo
STAMPATO|8|1|0|Stampato
INVIATO|8|1|0|Inviato
PROTINTF|1|17|0|Numero di protocollo passato dall agenzia delle entrate (prima parte)
PROTINTS|1|6|0|Numero di protocollo passato dall agenzia delle entrate (seconda parte)
CHIUSA|8|1|0|Indica se una lettera di intento è chiusa
2
ANNO+NUMPROT|
CODCLI+ANNO+NUMPROT|X

View File

@ -53,7 +53,8 @@ USER5|4|15|5|campo definito dall'utente
USERVAL5|4|18|3|valore
USER6|4|15|5|campo definito dall'utente
USERVAL6|4|18|3|valore
3
4
ANNOES+TIPOCF+CODCF+INDSPED+CODART+NRIGA|
ANNOES+TIPOCF+CODCF+INDSPED+CODART+LIVELLO|X
ANNOES+CODART+LIVELLO+TIPOCF+CODCF+INDSPED|X
ANNOES+CODART+TIPOCF+CODCF+INDSPED|X

View File

@ -1,3 +1,3 @@
17
0
$cfven|4612|4613|511|0|Clienti/Fornitori per vendite|||
$cfven|||519|0|Clienti/Fornitori per vendite|||

View File

@ -1,5 +1,5 @@
17
82
83
TIPOCF|1|1|0|Tipo <C>liente, <F>ornitore
CODCF|3|6|0|Codice
CODINDDOC|2|3|0|Codice indirizzo documenti
@ -71,7 +71,8 @@ ESCAR|4|6|2|Percentuale di esenzione CONAI carta
ESPLA|4|6|2|Percentuale di esenzione CONAI plastica
ESLEG|4|6|2|Percentuale di esenzione CONAI legno
ESVET|4|6|2|Percentuale di esenzione CONAI vetro
DATAECONAI|5|8|0|Data di fine esnzion CONAI
DATAICONAI|5|8|0|Data inizio esenzione CONAI
DATAECONAI|5|8|0|Data fine esenzione CONAI
CONAIASS|8|1|0|Stampa contributo CONAI assolto
TIPODOCFAT|1|4|0|Tipo documento
CODCAUS|1|3|0|Causale Contabile

View File

@ -1,3 +1,3 @@
20
0
$clifo|774|774|875|0|Clienti/Fornitori|||
$clifo|4338|4338|916|0|Clienti/Fornitori|||

View File

@ -1,5 +1,5 @@
20
68
70
TIPOCF|1|1|0|Tipo <C>liente <F>ornitore
CODCF|3|6|0|Codice
RAGSOC|1|50|0|Ragione sociale
@ -34,7 +34,7 @@ PTELEX|1|10|0|Prefisso del numero di TELEX
TELEX|1|30|0|Prefisso del numero di TELEX
MAIL|1|50|0|Indirizzo di posta elettronica generico
BYMAIL|8|1|0|Consenso all' invio dei documenti per posta elettronica
PEC|1|50|0|Indirizzo di posta elettronica certificato
PEC|1|80|0|Indirizzo di posta elettronica certificato
DOCMAIL|1|50|0|Indirizzo di posta elettronica per i documenti
DATANASC|5|8|0|Data di nascita
STATONASC|2|3|0|Codice stato di nascita
@ -64,10 +64,12 @@ ENTE|1|4|0|Codice ente pubblico di appartenenza (Dipendente Pubblico)
SPLITPAY|8|1|0|Ente pubblico soggetto a split payment
UTENTE|1|32|0|Utente dell'ultima modifica
DATAAGG|5|8|0|Data ultima modifica
CODRFSO|1|6|0|Codice Rappresentate Fisc/Stabile Org
DATARFSO|5|8|0|Data Rappresentate Fisc/Stabile Org
CODRFSO|1|6|0|Codice Rappresentante Fiscale/Stabile Organizzazione
DATARFSO|5|8|0|Data immissione valore
INIFATTEL|5|8|0|Data inizio fatturazione elettronica
INIREVCHG|5|8|0|Data inizio reverse charge
INIREVCHG|5|8|0|Data inizio rev. charge
CODFPCUST|1|10|0|Codice personalizzazione FP
DISCUSTFP|8|1|0|Disabilita le personalizzazioni FP sul cliente
6
TIPOCF+CODCF|
TIPOCF+UPPER(RAGSOC)|X

View File

@ -1,3 +1,3 @@
21
0
$saldi|||143|0|Saldi|||
$saldi|||215|0|Saldi|||

View File

@ -1,5 +1,5 @@
21
15
19
ANNOES|9|4|0|Codice esercizio
GRUPPO|2|3|0|Gruppo
CONTO|2|3|0|Conto
@ -13,6 +13,10 @@ PDARE|4|18|3|Progressivo dare
PAVERE|4|18|3|Progressivo avere
PDAREPRO|4|18|3|Progressivo dare movimenti provvisori
PAVEREPRO|4|18|3|Progressivo avere movimenti provvisori
PDAREPROB|4|18|3|Progressivo dare movimenti provvisori bilancio costi ricavi
PAVEREPROB|4|18|3|Progressivo avere movimenti provvisori bilancio costi ricavi
PDAREPROC|4|18|3|Progressivo dare movimenti provvisori cespiti
PAVEREPROC|4|18|3|Progressivo avere movimenti provvisori cespiti
DATAULMOV|5|8|0|Data ultimo movimento
NUMULTMOV|3|7|0|Numero operazione dell'ultimo movimento
3

View File

@ -1,3 +1,3 @@
25
0
$rmoviva|0|0|110|0|Righe movimento IVA|NMOV*2||
$rmoviva|0|0|111|0|Righe movimento IVA|NMOV*2||

View File

@ -1,5 +1,5 @@
25
19
20
ANNOES|2|4|0|Codice esercizio
NUMREG|3|7|0|Numero operazione
NUMRIG|2|3|0|Numero riga
@ -19,5 +19,6 @@ SOTTOCONTO|3|6|0|Sottoconto o codice cliente/fornitore
CODCMS|1|20|0|Codice Commessa
FASCMS|1|10|0|Fase Commessa
NAVP|8|1|0|Nota di variazione anni precedenti x Elenco CF
REVCHARGE|8|1|0|Riga IVA reverse charge
1
NUMREG+NUMRIG|

View File

@ -1,3 +1,3 @@
3
1
%tabgen|0|0|1181|0|Tabelle di studio|50||
%tabgen|0|0|1285|0|Tabelle di studio|||

View File

@ -1,5 +1,5 @@
3
86
91
COD|1|3|0|
CODTAB|1|25|0|
S0|1|70|0|
@ -14,6 +14,9 @@ S8|1|5|0|
S9|1|5|0|
S10|1|5|0|
S11|1|5|0|
S12|1|5|0|
S13|1|70|0|
S14|1|5|0|
I0|3|7|0|
I1|3|7|0|
I2|3|7|0|
@ -59,11 +62,11 @@ R26|4|18|5|
R27|4|18|5|
R28|4|18|5|
R29|4|18|5|
R29|4|18|5|
R30|4|18|5|
R31|4|18|5|
R32|4|18|5|
R33|4|18|5|
R34|4|18|5|
D0|5|8|0|
D1|5|8|0|
D2|5|8|0|
@ -85,6 +88,8 @@ B12|8|1|0|
B13|8|1|0|
B14|8|1|0|
B15|8|1|0|
DATAAGG|5|8|0|
UTENTE|1|16|0|
FPC|8|1|0|
2
COD+CODTAB|

View File

@ -1,3 +1,3 @@
4
1
%tabcom|0|0|1210|0|Tabelle comuni|1500||
%tabcom|0|0|1285|0|Tabelle comuni|||

View File

@ -1,5 +1,5 @@
4
89
91
COD|1|3|0|
CODTAB|1|25|0|
S0|1|70|0|
@ -15,6 +15,8 @@ S9|1|5|0|
S10|1|5|0|
S11|1|5|0|
S12|1|5|0|
S13|1|70|0|
S14|1|5|0|
I0|3|7|0|
I1|3|7|0|
I2|3|7|0|

View File

@ -1,3 +1,3 @@
5
0
$tab|0|0|1197|0|Tabelle ditta|400||
$tab|||1285|0|Tabelle ditta|||

View File

@ -1,5 +1,5 @@
5
88
91
COD|1|3|0|
CODTAB|1|25|0|
S0|1|70|0|
@ -14,6 +14,9 @@ S8|1|5|0|
S9|1|5|0|
S10|1|5|0|
S11|1|5|0|
S12|1|5|0|
S13|1|70|0|
S14|1|5|0|
I0|3|7|0|
I1|3|7|0|
I2|3|7|0|

View File

@ -1,3 +1,3 @@
9
1
%nditte|0|0|635|0|Ditte|#6||
%nditte|0|0|636|0|Ditte|#6||

View File

@ -1,5 +1,5 @@
9
58
59
CODDITTA|3|5|0|
TIPOA|1|1|0|
CODANAGR|3|5|0|
@ -58,6 +58,7 @@ INTCAF|1|10|0|N.ro Iscrizione al CAF dell'intemediario (firmatario)
DICHP|1|1|0|Dichiarazione predisposta da <C>ontribuente, <I>ntermediario
CODRFSO|1|6|0|Codice Rappresentante Fiscale/Stabile Organizzazione
DATARFSO|5|8|0|Data immissione valore
SOCIOUNICO|7|1|0|N Se la ditta ha un socio unico o +
4
CODDITTA|
UPPER(RAGSOC)|X

Binary file not shown.

View File

@ -24,6 +24,6 @@ LogVerbose=
PingFreq=
[Spotlite]
Data(0) = f:\clienti\Bellegotti\spotlite
Data(0) = c:\u\dati\straccia\spotlite
Study(0) =

Binary file not shown.

View File

@ -1,5 +1,5 @@
[MAIN]
OEM = 1
OEM = 2
[OEM_0]
Administrator = Œ<EFBFBD>

Binary file not shown.

Binary file not shown.

View File

@ -4,6 +4,7 @@
#include <modaut.h>
#include <tree.h>
#include <treectrl.h>
#include <utility.h>
#include <urldefid.h>
#include <mov.h>
@ -35,7 +36,7 @@ class TConfig_anal : public TConfig
int _level;
public:
virtual const TString& get(const char* var, const char* section = NULL, int index = -1, const char* def = "");
virtual const TString& get(const char* var, const char* section = nullptr, int index = -1, const char* def = "");
TConfig_anal();
};
@ -46,7 +47,7 @@ TConfig_anal::TConfig_anal() : TConfig(CONFIG_DITTA, "ca"), _level(0)
if (a.active(CIAUT)) _level |= 2;
// Controllo se è veramente configurato il primo livello a CMS o CDC
if (_level > 1 && TConfig::get("Level", NULL, 1).blank())
if (_level > 1 && TConfig::get("Level", nullptr, 1).blank())
_level = 0;
}
@ -88,11 +89,10 @@ const TString& TConfig_anal::get(const char* varname, const char* section, int i
TConfig& ca_config(bool force_reload)
{
static TConfig_anal* cfg = NULL;
if (cfg == NULL || force_reload)
static TConfig_anal* cfg = nullptr;
if (cfg == nullptr || force_reload)
{
if (cfg != NULL)
delete cfg;
SAFE_DELETE(cfg);
cfg = new TConfig_anal;
}
return *cfg;
@ -275,12 +275,12 @@ TMultilevel_code_info::TMultilevel_code_info(int logicnum) : _logicnum(logicnum)
int from = 1, to = 1;
for (int level = 1; ; level++)
{
const TString& prompt = cfg.get(desvar, NULL, level);
const TString& prompt = cfg.get(desvar, nullptr, level);
if (prompt.blank())
break;
_prompt.add(prompt);
const TString& picture = cfg.get(keyvar, NULL, level);
const TString& picture = cfg.get(keyvar, nullptr, level);
_picture.add(picture);
const int keylen = picture.len();
@ -297,11 +297,14 @@ TMultilevel_code_info::TMultilevel_code_info(int logicnum) : _logicnum(logicnum)
const TMultilevel_code_info& ca_multilevel_code_info(int logicnum)
{
static TArray* cache = NULL;
if (cache == NULL)
static TArray* cache = nullptr;
if (cache == nullptr)
cache = new TArray;
TMultilevel_code_info* info = (TMultilevel_code_info*)cache->objptr(logicnum);
if (info == NULL)
if (info == nullptr)
{
info = new TMultilevel_code_info(logicnum);
cache->add(info, logicnum);
@ -321,7 +324,8 @@ const TMultilevel_code_info* ca_multilevel_code_info_by_index(int level)
if (_logicnum[0] < 0)
{
TConfig& cfg = ca_config();
const TString& lev1 = cfg.get("Level", NULL, 1);
const TString& lev1 = cfg.get("Level", nullptr, 1);
if (lev1.full())
{
const TMultilevel_code_info& fasi = ca_multilevel_code_info(LF_FASI);
@ -330,7 +334,7 @@ const TMultilevel_code_info* ca_multilevel_code_info_by_index(int level)
if (fasi.parent() == _logicnum[k])
_logicnum[++k] = LF_FASI;
const TString& lev2 = cfg.get("Level", NULL, 2);
const TString& lev2 = cfg.get("Level", nullptr, 2);
if (lev2.full())
{
_logicnum[++k] = _logicnum[0] == LF_COMMESSE ? LF_CDC : LF_COMMESSE;
@ -344,7 +348,7 @@ const TMultilevel_code_info* ca_multilevel_code_info_by_index(int level)
logic = _logicnum[level];
}
return logic > 0 ? &ca_multilevel_code_info(logic) : NULL;
return logic > 0 ? &ca_multilevel_code_info(logic) : nullptr;
}
bool ca_test_multilevel_field(TEdit_field& fld, int level)
@ -420,7 +424,7 @@ const char* ca_dollar2fieldname(int logic, const char* dollar)
default : return FASI_CODFASE;
}
}
return NULL;
return nullptr;
}
void ca_append_and(TString& query, const TString& clause)
@ -452,7 +456,8 @@ static const TString& ca_get_user_permissions(const TString& utente, const int l
if (ini_permessi.set_paragraph(utente))
{
const char* fieldname = NULL;
const char* fieldname = nullptr;
switch (logic)
{
case LF_COMMESSE: fieldname = "Cms"; break;
@ -460,7 +465,7 @@ static const TString& ca_get_user_permissions(const TString& utente, const int l
case LF_FASI: fieldname = "Fas"; break;
default: break;
}
if (fieldname != NULL)
if (fieldname != nullptr)
{
const TString& expr = ini_permessi.get(fieldname);
ca_append_and(select, expr);
@ -473,7 +478,7 @@ static const TString& ca_get_user_permissions(const TString& utente, const int l
TToken_string row(80, SAFE_PIPE_CHR);
for (int r = 0;; r++)
{
row = ini_permessi.get("Prog", NULL, r);
row = ini_permessi.get("Prog", nullptr, r);
if (row.blank())
break;
if (key == row.get(0))
@ -524,7 +529,8 @@ const TString& ca_create_user_select_clause(int logic)
{
static TArray clauses;
TString* clause = (TString*)clauses.objptr(logic);
if (clause == NULL)
if (clause == nullptr)
{
clause = new TString;
switch (logic)
@ -579,7 +585,7 @@ bool ca_filter_record(const TRectype& rec)
bool ca_filter_function(const TRelation* rel)
{
return rel != NULL && ca_filter_record(rel->curr());
return rel != nullptr && ca_filter_record(rel->curr());
}
@ -837,13 +843,14 @@ int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y,
prompt.left_just(maxdeslen);
const char* flags = picture[0] == '0' || picture[0] == '9' ? "BUZ" : "BU";
TEdit_field* kfld = NULL;
TEdit_field* kfld = nullptr;
if (mci.is_numeric_picture(i)) // Numeric
kfld = &msk.add_number(kid, page, prompt, tab0, y+i, picture.len(), flags);
else
kfld = &msk.add_string(kid, page, prompt, tab0, y+i, picture.len(), flags);
ca_create_browse1(*kfld, i, logicnum, key_id, desc_in_sh && (i == mci.levels() - 1) ? key_id + mci.levels() - i : des_id);
if ((mode & 0x1) != 0 && fieldname == NULL)
if ((mode & 0x1) != 0 && fieldname == nullptr)
kfld->set_key(1);
// Ho specificato un nome di campo speciale
@ -872,7 +879,7 @@ int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y,
const short did = desc_in_sh && (i == mci.levels() - 1) ? key_id+mci.levels() : des_id+i;
TEdit_field& dfld = msk.add_string(did, page, "", tab1, y+i, 50, "B", 72+tab0-tab1);
ca_create_browse2(dfld, i, logicnum, key_id);
if ((mode & 0x2) != 0 && fieldname == NULL)
if ((mode & 0x2) != 0 && fieldname == nullptr)
dfld.set_key(2);
else
dfld.set_field("");
@ -964,14 +971,14 @@ int ca_create_fields_compact(TMask& msk, int page, int logicnum, int x, int y,
const char* flags = picture[0] == '0' || picture[0] == '9' ? "BUZG" : "BUG";
TEdit_field* kfld = NULL;
TEdit_field* kfld = nullptr;
if (mci.is_numeric_picture(i)) // Numeric
kfld = &msk.add_number(kid, page, prompt, tab0 + offset, y + row_offset, picture.len(), flags);
else
kfld = &msk.add_string(kid, page, prompt, tab0 + offset, y + row_offset, picture.len(), flags);
ca_create_browse1(*kfld, i, logicnum, key_id, des_id);
if ((mode & 0x1) != 0 && fieldname == NULL)
if ((mode & 0x1) != 0 && fieldname == nullptr)
kfld->set_key(1);
// Ho specificato un nome di campo speciale
@ -995,7 +1002,7 @@ int ca_create_fields_compact(TMask& msk, int page, int logicnum, int x, int y,
}
// Copio il checktype nel campo fantasma per colorare correttamente la colonna
if (msk.get_sheet() != NULL && kfld->required())
if (msk.get_sheet() != nullptr && kfld->required())
msk.efield(kid-100).check_type(kfld->check_type());
}
@ -1010,7 +1017,7 @@ int ca_create_fields_compact(TMask& msk, int page, int logicnum, int x, int y,
TEdit_field& dfld = (i < mci.levels() - 1) && (i != par_items -1) ? msk.add_string(did, page, "", 50, 50, 50, "B")
: msk.add_string(did, page, "", tab1, y + row_offset, 50, "B", 72+tab0-tab1);
ca_create_browse2(dfld, i, logicnum, key_id);
if ((mode & 0x2) != 0 && fieldname == NULL)
if ((mode & 0x2) != 0 && fieldname == nullptr)
dfld.set_key(2);
else
dfld.set_field("");
@ -1034,7 +1041,7 @@ int ca_create_fields_ext(TMask& m, int page, int x, int y, short first_id,
for (int i = 0; i < 2; i++)
{
const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
const TString& level = ini.get("Level", nullptr, i+1); // Legge il livello 1 o 2
if (level == "CDC" && cdc_fld && *cdc_fld) // Crea centro di costo
{
@ -1117,7 +1124,7 @@ int ca_create_fields_ext(TMask& m, int page, int x, int y, short first_id,
numero_campi += nfields;
}
if (m.get_sheet() != NULL) //Se è una maschera di riga, sistemo le colonne delle sheet
if (m.get_sheet() != nullptr) //Se è una maschera di riga, sistemo le colonne delle sheet
{
TSheet_field& s = *m.get_sheet();
for (short id = first_id + 116; id >= first_id + 100; id--)
@ -1472,8 +1479,9 @@ bool TSimple_anal_msk::on_field_event(TOperable_field& o, TField_event e, long j
const TTree_field& fld = (const TTree_field&)o;
const TTree& tree = *fld.tree();
TToken_string curr; tree.curr_id(curr);
TEdit_field* last = NULL;
for (int i = 0; ; i++)
TEdit_field* last = nullptr;
for (int i = 0; ; i++)
{
const short id = get_field_id(i);
if (id <= 0)
@ -1488,7 +1496,7 @@ bool TSimple_anal_msk::on_field_event(TOperable_field& o, TField_event e, long j
if (tok && *tok)
last = &e;
}
if (last != NULL)
if (last != nullptr)
{
if (last->check())
stop_run(K_AUTO_ENTER);
@ -1658,7 +1666,8 @@ const TToken_string& TSimple_anal_msk::get_key_value(const TRectype& rec, int c)
const TToken_string& TSimple_anal_msk::get_key_value(int c) const
{
TToken_string& val = get_tmp_string();
for (TEditable_field* f = get_key_field(c, true); f != NULL; f = get_key_field(c, false))
for (TEditable_field* f = get_key_field(c, true); f != nullptr; f = get_key_field(c, false))
{
val.add(f->get());
}
@ -1780,8 +1789,9 @@ void TAnal_tree::node2id(const TObject* node, TString& id) const
bool TAnal_tree::goto_root()
{
bool ok = false;
//gestione speciale per le fasi con babbo
if (_father_curs != NULL)
if (_father_curs != nullptr)
{
if (_father_curs->items() > 0)
{
@ -2013,7 +2023,7 @@ TImage* TAnal_tree::image(bool selected) const
return get_res_image(bmp_id);
}
TAnal_tree::TAnal_tree(int logicnum) : _curs(NULL), _father_curs(NULL), _is_father(false)
TAnal_tree::TAnal_tree(int logicnum) : _curs(nullptr), _father_curs(nullptr), _is_father(false)
{
TString select;
_curs = new TCursor(new TRelation(logicnum), ca_create_user_select_clause(logicnum));
@ -2170,10 +2180,8 @@ bool TAnal_app::remove()
bool TAnal_app::user_destroy()
{
if (_msk != NULL)
delete _msk;
if (_rel != NULL)
delete _rel;
SAFE_DELETE(_msk);
SAFE_DELETE(_rel);
return true;
}
@ -2219,7 +2227,7 @@ const char * TAnal_mov::row_code(int row) const
for (int i = 0; i < 2; i++)
{
const TString& level = cfg.get("Level", NULL, i+1); // Legge il livello 1 o 2
const TString& level = cfg.get("Level", nullptr, i+1); // Legge il livello 1 o 2
if (level == "CDC") // Crea centro di costo
{
@ -2344,7 +2352,7 @@ void TAnal_mov::saldo_set_reset(const TRectype& row, bool reset)
TImporto curr_imp(imp_row.sezione(), texaco.get());
key.add(es, 1); //sistema l'anno di esercizio nella chiave
TImporto* imp = (TImporto*)_saldi.objptr(key);
if (imp == NULL)
if (imp == nullptr)
{
imp = new TImporto;
_saldi.add(key, imp);
@ -2356,7 +2364,8 @@ void TAnal_mov::saldo_set_reset(const TRectype& row, bool reset)
if (ca_ori_present(row))
{
TImporto* impind = (TImporto*)_saldind.objptr(key);
if (impind == NULL)
if (impind == nullptr)
{
impind = new TImporto;
_saldind.add(key, impind);
@ -2371,7 +2380,8 @@ void TAnal_mov::saldo_set_reset(const TRectype& row, bool reset)
else //saldo in un solo anno (caso standard)
{
TImporto* imp = (TImporto*)_saldi.objptr(key);
if (imp == NULL)
if (imp == nullptr)
{
imp = new TImporto;
_saldi.add(key, imp);
@ -2383,7 +2393,8 @@ void TAnal_mov::saldo_set_reset(const TRectype& row, bool reset)
if (ca_ori_present(row))
{
TImporto* impind = (TImporto*)_saldind.objptr(key);
if (impind == NULL)
if (impind == nullptr)
{
impind = new TImporto;
_saldind.add(key, impind);
@ -2483,8 +2494,9 @@ bool TAnal_mov::save_saldi(const int annoes)
if (err == NOERR)
{
const char* fld_sez = NULL;
const char* fld_val = NULL;
const char* fld_sez = nullptr;
const char* fld_val = nullptr;
switch (tipo)
{
case 'P': fld_sez = SALDANA_SEZIONEP; fld_val = SALDANA_SALDOP; break;
@ -2500,7 +2512,7 @@ bool TAnal_mov::save_saldi(const int annoes)
const TImporto * ind = (const TImporto*) _saldind.objptr(key);
if (ind != NULL)
if (ind != nullptr)
{
const TImporto& impind = *(const TImporto*)ind;
switch (tipo)
@ -2671,7 +2683,8 @@ int TAnal_mov::save_rmov_comp() const
{
const TRectype* rmov_old = (TRectype*)itm;
const TRectype* rmov_new = (TRectype*)new_rows.objptr(key);
if (rmov_new == NULL)
if (rmov_new == nullptr)
rmov_old->remove(file);
}
}
@ -3296,10 +3309,12 @@ bool ca_extract_sheet_field(const TSheet_field& sheet, const int row, const int
FOR_EACH_MASK_FIELD(mask_sheet, i, f) //giro sui campi della maschera di riga
{
const TFieldref* fr = f->field(); //campo corrente della maschera
if (fr != NULL && f->is_edit()) //deve essere un campo di tipo edit
if (fr != nullptr && f->is_edit()) //deve essere un campo di tipo edit
{
TEdit_field& e = *(TEdit_field*)f; //visto che è di tipo edit può creare l'edit_field per farne la browse
if (e.browse() != NULL)
if (e.browse() != nullptr)
{
const TCursor& cur = *e.browse()->cursor();
const int ln = cur.file().num(); //Allah! dal campo ricava il cursore sul file di numero ln

View File

@ -4,6 +4,7 @@
#include <rdoc.h>
#include <pconti.h>
#include <utility.h>
#include "movana.h"
#include "pconana.h"
@ -263,7 +264,7 @@ bool TPconana_recordset::valid_record(const TRelation& rel) const
return true;
}
static const TPconana_recordset* _current_recset = NULL;
static const TPconana_recordset* _current_recset = nullptr;
bool TPconana_recordset::pianoconti_filter(const TRelation* rel)
{ return _current_recset->valid_record(*rel); }
@ -365,12 +366,13 @@ size_t TAnal_report::get_usr_words(TString_array& words) const
"CA_FORMAT_CONTO",
"CA_FORMAT_CMSCDC",
"CA_FORMAT_CONTO_DESCR",
NULL
nullptr
};
((TAnal_report*)this)->_first_msg = words.items(); // Calcola il primo numero disponibile
size_t i;
for (i = 0; name[i] != NULL; i++)
for (i = 0; name[i] != nullptr; i++)
words.add(name[i]);
return words.items();
@ -1125,13 +1127,11 @@ TSaldi_cache::TSaldi_cache() : TCache(3881) // Numero primo
const TSaldanal& ca_saldo(const TAnal_bill& bill, const TDate& dal, const TDate& al, word tipi)
{
static TSaldi_cache* cache = NULL;
if (tipi == 0 && cache != NULL)
{
delete cache;
cache = NULL;
}
if (cache == NULL)
static TSaldi_cache* cache = nullptr;
if (tipi == 0)
SAFE_DELETE(cache);
if (cache == nullptr)
cache = new TSaldi_cache;
return cache->saldo(bill, dal, al, tipi);
}
@ -1168,7 +1168,8 @@ int TAnal_report_mask::create_sheet_fields(short sheet_id, int lf, int& y, short
}
}
const char* fieldname = NULL;
const char* fieldname = nullptr;
switch(logic)
{
case LF_CDC : fieldname = RMOVANA_CODCCOSTO; break;
@ -1207,7 +1208,8 @@ void TAnal_report_mask::create_sheet(short sheet_id)
for (int i = 0; i < 2; i++)
{
const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
const TString& level = ini.get("Level", nullptr, i+1); // Legge il livello 1 o 2
if (level == "CDC") // Crea centro di costo
{
if (fasinfo.parent() == LF_CDC)
@ -1255,7 +1257,8 @@ int TAnal_report_mask::get_row_bill(TSheet_field& sf, int r, TAnal_bill& bill)
for (int level = 0; level <= 2; level++)
{
const TMultilevel_code_info* info = ca_multilevel_code_info_by_index(level);
if (info == NULL)
if (info == nullptr)
break;
TString20 code;
for (int i = 0; i < info->levels(); i++)
@ -1280,7 +1283,8 @@ int TAnal_report_mask::set_row_bill(TSheet_field& sf, int r, const TAnal_bill& b
for (int level = 0; level <= 2; level++)
{
const TMultilevel_code_info* info = ca_multilevel_code_info_by_index(level);
if (info == NULL)
if (info == nullptr)
break;
TToken_string code;
switch (info->logic())

View File

@ -1343,8 +1343,8 @@ void TStampa_IVdirettiva::crea_sort_piano_conti_verifica()
sld_prg_avere_conto = ZERO;
mov_dare_conto = ZERO;
mov_avere_conto = ZERO;
_nuovo_tot_saldo_d = ZERO;
_nuovo_tot_saldo_a = ZERO;
// _nuovo_tot_saldo_d = ZERO;
// _nuovo_tot_saldo_a = ZERO;
indbil = 0;
gruppo_prec = -1;

View File

@ -1487,12 +1487,19 @@ void TPrimanota_application::check_saldi()
void TPrimanota_application::write_fppro()
{
#ifdef DBG
if (!ini_get_bool(CONFIG_INSTALL, "Main", "SkipFPPRO"))
{
#endif
// Controllo se la registrazione ha avuto effetto anche su FPPRO allora salvo riferimento sul mov
if (save_fppro() > 0 && !save_dbmov())
message_box(
"ATTENZIONE: non e' stato possibile salvare i riferimenti del documento in ingresso per questo movimento.\n"
"Movimento registrato senza collegamento ai documenti in ingresso.");
#ifdef DBG
}
#endif
}
bool TPrimanota_application::has_tot_doc(TToken_string& fppro_keys)
{

View File

@ -1163,8 +1163,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
#ifdef DBG
long nr = _mov->get_long(MOV_NUMREG);
if (nr == 18489 || nr == 27710)
int i = 1;
if (nr == 181975)
int i = 1;
#endif
const int liqmonth = _mov->get_int(MOV_MESELIQ);
@ -1242,6 +1242,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
TPointer_array pagscatt; // Righe di pagsca interessate
#ifdef DBG
if (nr == 181975)
int i = 1;
#endif
@ -1557,7 +1558,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
#ifdef DBG
long nr = _mov->get_long(MOV_NUMREG);
int i = 1;
if (nr == 181975)
int i = 1;
#endif
if ((soloiva &&

View File

@ -15,6 +15,7 @@
#include "../ca/movana.h"
#include "../ca/rmovana.h"
#include "../cg/cglib03.h"
// Fine del comando sql con separatore magico per crpa.exe
#define SQL_EOL "æ"

View File

@ -44,6 +44,7 @@
#define F_DESCONTSEP 239
#define F_MANDATO 240
#define F_IBAN 250
#define F_IBAN_STATO 251
#define F_IBAN_CHECK 252

View File

@ -26,7 +26,8 @@ BEGIN
PROMPT 30 1 "Numero "
FIELD NPROGTR
KEY 1
USE LF_EFFETTI SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF,#F_CODCF,#F_CODCF))
USE LF_EFFETTI
// SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF,#F_CODCF,#F_CODCF))
JOIN LF_CLIFO INTO CODCF=CODCF TIPOCF=TIPOCF
INPUT NPROGTR F_NPROGTR
DISPLAY "Nr.progr." NPROGTR

View File

@ -98,8 +98,10 @@ int TEffetto::leggi(TLocalisamfile &f, const TRectype& r, word lockop)
if (err == NOERR)
{ // leggo dai record array
_righe.read(k_reff);
_righe.pack();
_cess.read(k_cess);
}
_cess.pack();
}
else // se ho trovato un errore
{
head() = r;

View File

@ -54,20 +54,20 @@ int TDistinta::read(const char tipo, const long numero, word lockop)
{
TISAM_recordset reff(query(tipo, numero));
TLocalisamfile& f = reff.cursor()->file();
int i = 0;
for (bool ok = reff.move_first(); ok; ok = reff.move_next())
int i = 0;
for (bool ok = reff.move_first(); ok; ok = reff.move_next(), i++)
{
const word lock = (i == 0 && lockop == _lock) ? _lock : _nolock; // Lock solo sulla prima riga
const int n = reff.get(EFF_NRIGADIST).as_int();
TEffetto* effetto = new TEffetto;
err = effetto->read(f, tipo, numero, n, lock);//legge un effetto per chiave 4
TEffetto effetto;
err = effetto.read(f, tipo, numero, n, lock);//legge un effetto per chiave 4
if (err == NOERR)
{
i = _righe_dist.add(effetto) + 1;
effetto->put(EFF_NRIGADIST, i);
_righe_dist.add(effetto, i);
effetto.put(EFF_NRIGADIST, i + 1);
}
else
delete effetto;
}
}
// se ho letto degli effetti della distinta ed ho

View File

@ -617,7 +617,9 @@ void TContabilizzazione_effetti_app::join_rows(TArray& customers, TAssoc_array&
{
TBill zio;
TRectype riga(_movimento->cg(0));
if (!abbuoni_pas.is_zero())
riga.zero(RMV_DESCR);
if (!abbuoni_pas.is_zero())
{
_caus->bill(9, zio); zio.put(riga);
if (!zio.ok()) _error = cau_abb_error;

View File

@ -24,43 +24,6 @@
static XVT_SQLDB _db = NULL; // SEPA sqlite db
/////////////////////////////////////////////////////////////////////////////////////
// Utilities
/////////////////////////////////////////////////////////////////////////////////////
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str)
{
SLIST_ELT e = NULL;
for (e = xvt_slist_get_first(list); e; e = xvt_slist_get_next(list, e))
{
const char* val = xvt_slist_get(list, e, NULL);
if (xvt_str_compare_ignoring_case(str, val) == 0)
break;
}
return e;
}
// Aggiorna il file dst se più vecchio di src (Potrebbe diventare una funzione di XVT.h)
bool xvt_fsys_fupdate(const char* src, const char* dst)
{
bool ok = false;
if (xvt_fsys_file_exists(src))
{
const long tsrc = xvt_fsys_file_attr(src, XVT_FILE_ATTR_MTIME);
if (tsrc > 0)
{
long tdst = 0;
if (xvt_fsys_file_exists(dst))
tdst = xvt_fsys_file_attr(dst, XVT_FILE_ATTR_MTIME);
if (tsrc > tdst)
ok = xvt_fsys_fcopy(src, dst) != 0;
}
}
return ok;
}
/////////////////////////////////////////////////////////////////////////////////////
// TJava_profile
/////////////////////////////////////////////////////////////////////////////////////

View File

@ -62,7 +62,7 @@ BEGIN
OUTPUT F_CAB CODTAB[6,10]
OUTPUT F_PRO CODTAB[11,12]
OUTPUT F_BANCA 4->S0
CHECTYPE NORMAL
END
STRING F_BANCA 50 47

View File

@ -244,10 +244,6 @@ TExclusion_mode TSpesometro_msk::validate_mov(const TRectype& mov)
if (anno < 2012)
return segnala_movimento(mov, em_data_limite);
#ifdef DBG
if (mov.get_long(MOV_NUMREG) ==14224)
int sn = 1;
#endif
const char tipocf = mov.get_char(MOV_TIPO);
const real impmin = get_real(F_IMPMIN);

View File

@ -552,7 +552,7 @@ protected:
//void set_rec_clifo(char tipocf, long codcf);
public:
static void fill_buoni(map<TString20, TFPBuono_di_consegna>& buoni, const TString& memo, bool last = false);
static void fill_buoni(map<TString20, TFPBuono_di_consegna>& buoni, const TString& memo, bool last);
bool doc_to_paf(TDocumentoEsteso& doc);
bool doc_to_paf(const TRectype& rec);
bool doc_to_paf(const TDoc_key& key);

View File

@ -73,7 +73,7 @@ int n;
tmpa[i] = pSrc[i];
/* sort pointers */
qsort((void *)tmpa,n,sizeof(DEC *), _SortInc);
qsort((void *)tmpa,n,sizeof(DEC *), (int (__cdecl *)(void)) _SortInc);
if (n%2)
_MacDCopy(pDst, tmpa[(n-1)/2]);

View File

@ -395,7 +395,9 @@ THEN
#F1.203 +!</postscript>
</field>
</section>
<sql>USE IVADIFF SELECT (BETWEEN(DATAREG,#DAL,#AL))&#26;&#26;(TIPOIVA==#TIPOIVA)&#26;&#26;(TIPODIFF==#TIPODIFF)&#26;&#26;((CHIUSA=#CHIUSA)||(#CHIUSA="T"))
<sql>USE IVADIFF KEY 4 SELECT (BETWEEN(DATAREGP;#DAL;#AL))&#26;&#26;(TIPOIVA==#TIPOIVA)&#26;&#26;(TIPODIFF==#TIPODIFF)&#26;&#26;((CHIUSA=#CHIUSA)||(#CHIUSA="T"))
FROM DATAREG=#DAL
TO DATAREG=#AL
JOIN MOV INTO NUMREG==NUMREG
JOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF</sql>
</report>

View File

@ -321,7 +321,8 @@ void TRiepiloghi::add(const TRectype& row, const TRectype& head, const TRectype&
key.add(row.get("PROV"));
TDati_riepilogo* data = (TDati_riepilogo*)_ass.objptr(key);
if (data == NULL)
if (data == nullptr)
{
data = new TDati_riepilogo(key, row, codval);
_ass.add(key, data);
@ -357,7 +358,7 @@ long TRettifiche::nc2ft(long numreg_nc) const
TPartite_array games;
games.add_numreg(numreg_nc); // Carica le partite in cui è coinvolta questa nota di credito (sempre e solo una!)
for (TPartita* p = games.first(); p != NULL && numreg_ft<=0; p = games.next())
for (TPartita* p = games.first(); p != nullptr && numreg_ft<=0; p = games.next())
{
#ifdef DBG
if (p->conto().codclifo() == 13201)

View File

@ -1170,7 +1170,12 @@ bool TAlex_virtual_machine::execute(const TBytecode& bc)
bool TAlex_virtual_machine::compile(const char* cmd, TBytecode& bc)
{
#ifdef LINUX
string s(cmd);
istringstream instr(s);
#else
istrstream instr((const char*)cmd, strlen(cmd));
#endif
return compile(instr, bc);
}

View File

@ -296,12 +296,11 @@ void TApplication::stop_run()
{
if (_savefirm)
prefix().set_codditta(_savefirm);
terminate();
terminate();
xvt_app_destroy();
}
bool TApplication::add_menu(TString_array& menu, MENU_TAG id)
{
TTemp_window tw(TASK_WIN);
@ -316,19 +315,77 @@ bool TApplication::remove_menu(MENU_TAG id)
TApplication::TApplication()
: _god_vars(NULL),_savefirm(0), _running(FALSE), _create_ok(FALSE)
: _god_vars(nullptr),_savefirm(0), _running(false), _create_ok(false), _force(false)
{
}
TApplication::~TApplication()
{
if (_god_vars != NULL)
delete _god_vars;
SAFE_DELETE(_god_vars);
}
const TString & logdir()
{
TString & name = get_tmp_string(1024);
name << firm2dir(prefix().get_codditta()) << "/log";
return name;
}
const TString & logname()
{
TString & name = (TString &) logdir();
name << "/dblog.xml";
return name;
}
const TString & rollname(const TDate & day)
{
TString & name = (TString &)logdir();
name << "/dblog" << day.date2ansi() << ".txt";
return name;
}
bool TApplication::create()
{ return true; }
{
if (use_files())
{
TConfig c(CONFIG_STUDIO, "Main");
db_log(c.get("DBLog", "Main", -1, "off") == "on");
if (db_log())
{
TFilename logd = logdir();
int roll_days = c.get_int("RollingDays", "Main", -1, 10);
TDate oggi(TODAY);
TDate lastroll(c.get("LastDate", "Main", -1, oggi.stringa()));
TDate limit(lastroll);
if (!logd.exist())
make_dir(logd);
limit += roll_days;
if (!lastroll.ok() || (limit <= oggi))
{
TSystemisamfile dblog(LF_DBLOG);
TFilename roll = rollname(lastroll);
TFilename logn = logname();
dblog.dump(roll);
dblog.zap();
if (logn.exist())
{
roll.ext("xml");
rename(logn, roll);
}
c.set("LastDate", oggi.date2ansi());
}
}
}
return true;
}
bool TApplication::destroy()
@ -341,7 +398,8 @@ void TApplication::terminate()
if (_create_ok)
destroy(); // Distruzione files e maschere
do_events();
if(!_force)
do_events();
if (use_files())
{
@ -371,7 +429,8 @@ const char* TApplication::get_module_name() const
const TDongle& d = dongle();
const TString4 modname = _name.left(2);
word aut = d.module_name2code(modname);
if (aut == 0xFFFF && modname == "ps")
if (aut == 0xFFFF && modname == "ps")
{
aut = 0;
module = TR("Personalizzazioni");
@ -404,19 +463,12 @@ const char* TApplication::get_module_name() const
}
}
}
if (!ok)
{
if(is_power_station())
{
warning_box("Attenzione! Non sei abilitato per l'utilizzo del modulo %s", static_cast<const char*>(module));
}
else
{
cantaccess_box(module);
module.cut(0);
}
}
}
if (!ok && !is_power_station())
{
cantaccess_box(module);
module.cut(0);
}
}
}
return module;
}
@ -769,7 +821,7 @@ void TApplication::open_files(int logicnum, ...)
va_start(marker, logicnum);
while (logicnum >= LF_USER && logicnum < LF_EXTERNAL)
{
if (_used_files.objptr(logicnum) == NULL)
if (_used_files.objptr(logicnum) == nullptr)
_used_files.add(new TLocalisamfile(logicnum), logicnum);
logicnum = va_arg(marker, int);
}

View File

@ -51,6 +51,9 @@ class TApplication
// @cmember:(INTERNAL) Codice della ditta
long _savefirm;
// @cmember:(INTERNAL) Chiusura forzata per programmi senza interfaccia
bool _force;
// @cmember:(INTERNAL) Indica se l'applicazione e' partita
bool _running;
@ -59,7 +62,7 @@ class TApplication
// @cmember:(INTERNAL) Termine dell'applicazione
void terminate();
// @access Protected Member
protected:
// @cmember Ritorna il nome del modulo dell'applicazione
@ -135,6 +138,8 @@ public:
// @cmember Forza la chiusura dell'applicazione
void stop_run();
void TApplication::force_stop() {_force = true;}
// @cmember Mette il segno Check a fianco di una voce di menu
void check_menu_item(MENU_TAG item, bool on = true);
@ -195,6 +200,10 @@ public:
virtual ~TApplication();
};
const TString & logdir();
const TString & logname();
const TString & rollname(const TDate & day);
class TSkeleton_application : public TApplication
{
protected:

View File

@ -1634,8 +1634,10 @@ void TButton_control::create(WINDOW win, short cid,
mnemonic = txt[underscore+1];
txt.strip("&~");
}
const char* t = parse_caption(txt, bold, big, color);
if (width <= 0) width = strlen(t)+3;
const char* t = parse_caption(txt, bold, big, color);
if (width <= 0) width = (short) strlen(t)+3;
XI_RCT rct = coord2rct(get_interface(win), left, top, width, height);

View File

@ -17,7 +17,7 @@
#include <strings.h>
#endif
enum TDongleHardware { _dongle_unknown=0, _dongle_network=3, _dongle_ssa=4, _dongle_ssanet=5 };
enum TDongleHardware { _dongle_unknown, _dongle_hardlock, _dongle_eutron, _dongle_network, _dongle_ssa, _dongle_ssanet,_dongle_software };
enum TDongleType { _no_dongle, _user_dongle, _developer_dongle };
class TDongle : public TObject

View File

@ -1,3 +1,3 @@
181
182
0
$dblog|||319|0|Log Transazioni|||

View File

@ -1,4 +1,4 @@
181
182
15
TIMESTAMP|3|10|0|Data e Ora
FILE|2|4|0|File

View File

@ -27,6 +27,12 @@ class TDir : public TObject
// @author:(INTERNAL) Alessandro
// @access:(INTERNAL) Private Member
{
TString _name;
RecNoType _eod;
RecNoType _eox;
int _len;
int _flags;
TString _des;
// @cmember:(INTERNAL) Descrittore del file
FileDes _dir;
@ -61,10 +67,9 @@ public:
void set (const char * name, const RecNoType eod, const RecNoType flag, const char * des, const char * calc);
// @cmember Stampa la descrizione del direttorio sull'output selezionato
virtual void print_on(ostream& out) const;
// @cmember Legge la descrizione del direttorio dall' input selezionato
virtual void read_from(istream& in);
virtual void print_on(ostream& out) const;
// @cmember Legge la descrizione del direttorio dall' input selezionato
virtual void read_from(istream& in);
// @cmember Ritorna il nome del file selezionato
const char* name() const;
// @cmember Ritorna il nome dei file dati selezionato
@ -120,6 +125,42 @@ public:
// @doc EXTERNAL
class TFieldDes : public TSortable
{
TString16 _name;
word _len;
word _dec;
word _offset;
public:
inline TString & name() { return _name; }
inline word & len() { return _len; }
inline word & dec() { return _dec; }
inline word & offset() { return _offset; }
TFieldDes() : _name(""), _len(0), _dec(0), _offset(0) {}
TFieldDes(const char * name, word len, word dec, word offset) : _name(name), _len(len), _dec(dec), _offset(offset) {}
TFieldDes(const TFieldDes & fd) : _name(fd._name), _len(fd._len), _dec(fd._dec), _offset(fd._offset) {}
~TFieldDes() {}
};
class TKeyDes : public TSortable
{
bool _dupkeys;
TArray _fields;
public:
inline bool & dupkeys() { return _dupkeys; }
void set_field(const TToken_string & field) { _fields.insert(field); }
inline TString fieldname(int i) { return _fields.objptr(i) != NULL ? ((TToken_string &)_fields[i]).get(0) : EMPTY_STRING; }
inline byte from(int i) { return _fields.objptr(i) != NULL ? ((TToken_string &)_fields[i]).get_int(1) : 0; }
inline byte to(int i) { return _fields.objptr(i) != NULL ? ((TToken_string &)_fields[i]).get_int(2) : 0; }
TKeyDes(bool dupkeys = false) : _dupkeys(dupkeys) {}
TKeyDes(const TKeyDes & kd) : _dupkeys(kd._dupkeys), _fields(kd._fields) {}
~TKeyDes() {}
};
// @class TTrec | Classe per le gestione dei tracciati record dei file
//
// @base public | TSortable
@ -128,6 +169,9 @@ class TTrec : public TSortable
// @author:(INTERNAL) Alessandro
// @access:(INTERNAL) Private Member
{
TArray _fields;
TPointer_array _sorted_fields;
TArray _keys;
// @cmember:(INTERNAL) Descrittore del tracciato record
RecDes _rec;

View File

@ -122,7 +122,11 @@ void fraction::build_fraction (const char *s)
}
}
n.strip(",.-+/[]");
#ifdef WIN32
sscanf_s(n, "%I64d", &_num);
#else
sscanf_s(n, "%Ld", &_num);
#endif
if (len_periodo > 0)
{
_den = 9;

View File

@ -1,7 +1,9 @@
#define __ISAM_CPP
#define _CRT_SECURE_NO_WARNINGS 1
#include <applicat.h>
#include <config.h>
#include <dblog.h>
#include <execp.h>
#include <expr.h>
#include <extcdecl.h>
@ -17,6 +19,7 @@
#include <utility.h>
#include <tabutil.h>
#include <varrec.h>
#include <xml.h>
#ifdef WIN32
#include <io.h>
@ -867,6 +870,7 @@ int TBaseisamfile::_read(TRectype& rec, word op, word lockop)
prefix().lock_record(_isam_handle, _recno); else
if (lockop == _unlock)
prefix().unlock_record(_isam_handle, _recno);
_current->clear_modified_fields();
}
return _lasterr;
@ -901,19 +905,204 @@ int TBaseisamfile::_readat(TRectype& rec, TRecnotype nrec, word lockop)
if (_lasterr != NOERR)
_lasterr = get_error(_lasterr);
else
{
rec = (const char*)DB_getrecord(fhnd);
_current->clear_modified_fields();
}
_recno = DB_recno(fhnd);
if (rec.has_memo())
rec.init_memo(_recno, _isam_handle);
return _lasterr;
}
bool __db_log = false;
void db_log(const bool on)
{
__db_log = on;
}
bool db_log() { return is_debug_station() && __db_log; }
bool to_db_log(int logic) { return db_log() && logic != LF_DBLOG && logic != LF_USER; }
void db_log_on() { db_log(true); }
void db_log_off() { db_log(false); }
TLocalisamfile * __dblog = NULL;
TXmlItem * __root = NULL;
bool TBaseisamfile::writelog(const db_op op, TRectype & rec, TRectype * act_rec, int fhnd)
{
bool changed = false;
const struct tm * timeloc = xvt_time_now();
time_t timestamp = time(NULL);
TString trans("DBtrans");
TString80 user = ::user();
int year;
int release;
int tag;
int patch;
TDate date(timeloc->tm_mday, timeloc->tm_mon, timeloc->tm_year + 1900);
TString time;
TFilename cmdline(main_app().argv(0));
TApplication::get_version_info(year, release, tag, patch);
if (__dblog == NULL)
__dblog = new TLocalisamfile(LF_DBLOG);
__dblog->zero();
if (__root == NULL)
__root = new TXmlItem;
__root->Destroy();
cmdline = cmdline.name_only();
for (int i = 1; i < main_app().argc(); i++)
cmdline << ' ' << main_app().argv(i);
time << timeloc->tm_hour << ":" << timeloc->tm_min << ":" << timeloc->tm_sec;
__root->SetTag(trans);
__dblog->put(DBL_CMDLINE, cmdline);
__dblog->put(DBL_YEAR, year);
__dblog->put(DBL_RELEASE, release);
__dblog->put(DBL_TAG, tag);
__dblog->put(DBL_PATCH, patch);
__root->SetAttr("cmdline", cmdline);
__root->SetAttr("year", year);
__root->SetAttr("release", release);
__root->SetAttr("tag", tag);
__root->SetAttr("patch", patch);
TXmlItem & head = __root->AddChild("Head");
__dblog->put(DBL_CMD, op);
__dblog->put(DBL_FILE, _logicnum);
__dblog->put(DBL_RECNO, _recno);
__dblog->put(DBL_USER, user);
__dblog->put(DBL_SESSION, xvt_sys_get_session_id());
__dblog->put(DBL_DATA, date);
__dblog->put(DBL_ORA, time);
__dblog->put(DBL_TIMESTAMP, (long)timestamp);
head.SetAttr("cmd", op);
head.SetAttr("file", _logicnum);
head.SetAttr("recno", _recno);
head.SetAttr("user", user);
head.SetAttr("session", xvt_sys_get_session_id());
head.SetAttr("data", date.date2ansi());
head.SetAttr("ora", time);
head.SetAttr("timestamp", (long) timestamp);
TXmlItem & key = __root->AddChild("key");
for (byte i = 0; i < rec.rec_des().Ky[0].NkFields; i++)
{
const char * keyfieldname = rec.rec_des().Fd[rec.rec_des().Ky[0].FieldSeq[i]].Name;
const TString & value = rec.get(keyfieldname);
TXmlItem & field = key.AddChild("field");
field.SetAttr(keyfieldname, value);
}
__dblog->put(DBL_KEY, rec.key());
TXmlItem & data = __root->AddChild("data");
if (op != db_remove)
{
for (byte i = 0; i < rec.rec_des().NFields; i++)
{
const TString16 fieldname(rec.rec_des().Fd[i].Name);
TString value = rec.get_modified_field(i);
if (op == db_add)
{
TXmlItem & field = data.AddChild("field");
field.SetAttr(fieldname, value);
changed = true;
}
else
if (rec.field_modified(i))
{
bool fchanged = false;
switch (TFieldtypes(rec.rec_des().Fd[i].TypeF))
{
case _nullfld: // @emem Campo non definito
break;
case _alfafld: // @emem Campo di tipo alfanumerico
fchanged = act_rec->get(fieldname) != value.trim();
break;
case _intfld: // @emem Campo di tipo intero
fchanged = act_rec->get_int(fieldname) != atoi(value);
break;
case _longfld: // @emem Campo di tipo intero lungo
fchanged = act_rec->get_long(fieldname) != atol(value);
break;
case _realfld: // @emem Campo di tipo reale (vedi <c real>)
fchanged = act_rec->get_real(fieldname) != real(value);
break;
case _datefld: // @emem Campo di tipo data (vedi <c TDate>)
fchanged = act_rec->get_date(fieldname) != TDate(value);
break;
case _wordfld: // @emem Campo di tipo intero senza segno
fchanged = act_rec->get_long(fieldname) != atol(value);
break;
case _charfld: // @emem Campo di tipo carattere
fchanged = act_rec->get_char(fieldname) != value[0];
break;
case _boolfld: // @emem Campo di tipo booleano
{
const bool b = (value.full() && strchr("1STXY", toupper(value[0])) != NULL) ? true : false;
const bool b1 = act_rec->get_bool(fieldname);
fchanged = b ^ b1;
}
break;
case _intzerofld: // @emem Campo ditipo intero zero filled
fchanged = act_rec->get_int(fieldname) != atoi(value);
break;
case _longzerofld: // @emem Campo di tipo intero lungo zero filled
fchanged = act_rec->get_long(fieldname) != atol(value);
break;
case _memofld:
fchanged = true;
default:
break;
}; // @emem Campo di tipo memo
if (fchanged)
{
TXmlItem & field = data.AddChild("field");
changed = true;
field.SetAttr(fieldname, value);
if (rec.preserve_values() && act_rec != NULL)
act_rec->put(fieldname, value);
}
}
}
}
else
changed = true;
if (changed)
{
TString trans;
__root->AsString(trans);
__dblog->put(DBL_TRANS, trans);
// __dblog->write();
// __root->Append(logname);
if (rec.preserve_values() &&(op == db_update) && (act_rec != NULL))
rec.TRectype::operator =(*act_rec);
}
rec.clear_modified_fields();
return changed;
}
int TBaseisamfile::_write(const TRectype& rec)
{
CHECK(!rec.empty(), "Can't write an empty record");
// Controlla che la chiave sia piena
TString256 key;
TString & key = get_tmp_string(384);
__build_key(rec.rec_des(), 1, rec.string(), key.get_buffer(), true);
if (key.blank())
@ -932,11 +1121,20 @@ int TBaseisamfile::_write(const TRectype& rec)
browse_null(rec.string(), dst_len);
memcpy(DB_getrecord(fhnd), rec.string(), dst_len);
bool changed = false;
if (to_db_log(_logicnum))
changed = writelog(db_add, (TRectype&)rec, NULL, fhnd);
_lasterr = DB_add(fhnd);
_recno = DB_recno(fhnd);
if (_lasterr == NOERR)
{
if (changed && to_db_log(_logicnum))
{
__dblog->write();
__root->Append(logname());
}
if (rec.has_memo())
((TRectype&)rec).write_memo(_isam_handle, _recno );
rec_cache(_logicnum).notify_change();
@ -981,28 +1179,40 @@ int TBaseisamfile::rewrite_write()
int TBaseisamfile::_rewrite(const TRectype& rec)
{
CHECK(!rec.empty(), "Can't write an empty record");
TAuto_variable_rectype act_rec(rec);
bool changed = false;
TRectype save_rec(rec);
// Forza l'uso della chiave principale (per chiavi duplicate?)
// Forza l'uso della chiave principale (per chiavi duplicate?)
const int fhnd = handle(1);
_lasterr = cisread(fhnd, 1, save_rec, _isequal + _nolock, _recno); // Si Posiziona per sicurezza...
while ((_lasterr = cisread(fhnd, 1, act_rec, _isequal + _testandlock, _recno)) == _islocked) ;// Si Posiziona e locca per sicurezza...
if (_lasterr == NOERR)
{
const int len = DB_reclen(fhnd);
if (len != save_rec.len())
if (len != act_rec.len())
NFCHECK("Record size mismatch on file %d: RecDes=%d, DB_reclen=%d",
_logicnum, save_rec.len(), len);
_logicnum, act_rec.len(), len);
browse_null(rec.string(), len);
if (memcmp(rec.string(), save_rec.string(), len) != 0)
if (to_db_log(_logicnum))
changed = writelog(db_update, (TRectype &)rec, &act_rec, fhnd);
else
changed = memcmp(rec.string(), act_rec.string(), len) != 0;
if (changed)
{
memcpy(DB_getrecord(fhnd), rec.string(), len);
_lasterr = DB_rewrite(fhnd);
if (_lasterr == NOERR)
rec_cache(_logicnum).notify_change();
{
if (to_db_log(_logicnum))
{
__dblog->write();
__root->Append(logname());
}
}
else
_lasterr = get_error(_lasterr);
}
@ -1043,10 +1253,30 @@ int TBaseisamfile::rewriteat(const TRectype& rec, TRecnotype nrec)
if ((_lasterr=DB_go(fhnd,nrec))== NOERR)
{
TRectype save_rec(rec);
const int len = DB_reclen(fhnd);
memcpy(DB_getrecord(fhnd), save_rec.string(), len);
browse_null(rec.string(),DB_reclen(fhnd));
memcpy(DB_getrecord(fhnd),rec.string(),DB_reclen(fhnd));
_lasterr=DB_rewrite(fhnd);
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
if (to_db_log(_logicnum))
changed = writelog(db_update, (TRectype &)rec, &save_rec, fhnd);
else
changed = memcmp(rec.string(), save_rec.string(), len) != 0 ;
if (changed)
{
memcpy(DB_getrecord(fhnd), rec.string(), DB_reclen(fhnd));
_lasterr = DB_rewrite(fhnd);
if (_lasterr == NOERR)
{
if (to_db_log(_logicnum))
{
__dblog->write();
__root->Append(logname());
}
}
else
_lasterr = get_error(_lasterr);
}
}
else
_lasterr = get_error(_lasterr);
@ -1083,9 +1313,18 @@ int TBaseisamfile::_remove(const TRectype& rec)
if (_lasterr == NOERR)
{
bool changed = false;
if (to_db_log(_logicnum))
writelog(db_remove, (TRectype &) rec, NULL, fhnd);
_lasterr = DB_delete(fhnd); // Put only deletion flag on record, must remove keys too!
if (_lasterr == NOERR)
{
if (changed && to_db_log(_logicnum))
{
__dblog->write();
__root->Append(logname());
}
if (curr().has_memo( ))
curr().init_memo();
rec_cache(_logicnum).notify_change();
@ -1474,6 +1713,19 @@ TIsamtempfile::TIsamtempfile(int logicnum, const char* radix, bool create, bool
n.insert("%", 0);
open(n, create, eod, eox);
TCodeb_handle cb_handle = prefix().get_handle(_isam_handle, _curr_key);
const int dbfreclen = DB_reclen(cb_handle);
const int trcreclen = prefix().get_reclen(logicnum);
if (dbfreclen != trcreclen)
{
TString msg;
msg.format("Lunghezza record incoerente sul file %d (%s): file=%d trc=%d",
num(), (const char*)description(), dbfreclen, trcreclen);
fatal_box(msg);
}
}
TIsamtempfile::~TIsamtempfile()
@ -2457,6 +2709,15 @@ int TSystemisamfile::load(
const int l = fldlen.get_int(j);
s1 = s.mid(pos, l);
s1.rtrim();
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
TString s2 = s1;
s1 = esc(s2);
}
put(fld.row(j), s1);
pos += l;
}
@ -2469,10 +2730,11 @@ int TSystemisamfile::load(
s1 = s.get();
if (fd)
{
s1.rtrim(1);
s1.ltrim(1);
}
if (curr().type((const TString&) fld[j]) == _memofld)
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
TString s2 = s1;
@ -2670,6 +2932,15 @@ int TSystemisamfile::overwrite(
s1 = s.mid(pos,len[j]);
s1.rtrim();
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
TString s2 = s1;
s1 = esc(s2);
}
vals.add(fldname, s1);
pos += len[j];
}
@ -2687,9 +2958,13 @@ int TSystemisamfile::overwrite(
s1.rtrim(1);
s1.ltrim(1);
}
if (curr().type(fldname) == _memofld)
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
TString s2 = s1;
s1 = esc(s2);
}
vals.add(fldname, s1);
@ -2834,6 +3109,15 @@ int TSystemisamfile::dump(
if (fixedlen)
{
s1 = get(fname);
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
TString s2 = s1;
s1 = unesc(s2);
}
if (rjust[j]) s1.right_just(len[j]);
else s1.left_just(len[j]);
}
@ -2853,20 +3137,15 @@ int TSystemisamfile::dump(
if (real::is_null(sfld))
sfld.cut(0);
break;
case _memofld:
if (sfld.full())
case _alfafld:
{
int p = 0;
while ((p = sfld.find('\n', 0)) >= 0)
{
sfld.overwrite("\\", p);
sfld.insert("n", p+1);
TString s2 = sfld;
sfld = unesc(s2);
}
}
else
sfld.cut(0);
break;
default: // strfld, charfld, boolfld
default: // charfld, boolfld
if (sfld.blank())
sfld.cut(0);
break;
@ -2916,6 +3195,15 @@ int TSystemisamfile::dump(
if (fixedlen)
{
s1 = get((const TString&)fld[j]);
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
TString s2 = s1;
s1 = unesc(s2);
}
if (rjust[j]) s1.right_just(len[j]);
else s1.left_just(len[j]);
}
@ -2925,14 +3213,14 @@ int TSystemisamfile::dump(
if (j && fs) s1 << fs;
if (fd) s1 << fd;
sfld = get((const TString&)fld[j]);
if (curr().type((const TString&) fld[j]) == _memofld)
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
int p = 0;
while ((p = sfld.find('\n', 0)) >= 0)
{
sfld.overwrite("\\", p);
sfld.insert("n", p+1);
}
TString s2 = sfld;
sfld = unesc(s2);
}
s1 << sfld;
if (fd) s1 << fd;
@ -3047,6 +3335,15 @@ int TSystemisamfile::dump(
if (fixedlen)
{
s1 = get(fldname);
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
TString s2 = s1;
s1 = unesc(s2);
}
if (rjust[j]) s1.right_just(len[j]);
else s1.left_just(len[j]);
}
@ -3056,14 +3353,14 @@ int TSystemisamfile::dump(
if (j && fs) s1 << fs;
if (fd) s1 << fd;
sfld = get(fldname);
if (curr().type(fldname) == _memofld)
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
int p = 0;
while ((p = sfld.find('\n', 0)) >= 0)
{
sfld.overwrite("\\", p);
sfld.insert("n", p+1);
}
TString s2 = sfld;
sfld = unesc(s2);
}
s1 << sfld;
if (fd) s1 << fd;
@ -3106,6 +3403,15 @@ int TSystemisamfile::dump(
if (fixedlen)
{
s1 = get(fldname);
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
TString s2 = s1;
s1 = unesc(s2);
}
if (rjust[j]) s1.right_just(len[j]);
else s1.left_just(len[j]);
}
@ -3115,14 +3421,14 @@ int TSystemisamfile::dump(
if (j && fs) s1 << fs;
if (fd) s1 << fd;
sfld = get(fldname);
if (curr().type(fldname) == _memofld)
const TFieldtypes t = curr().type((const TString&)fld[j]);
if (t == _alfafld || t == _memofld)
{
int p = 0;
while ((p = sfld.find('\n', 0)) >= 0)
{
sfld.overwrite("\\", p);
sfld.insert("n", p+1);
}
TString s2 = sfld;
sfld = unesc(s2);
}
s1 << sfld;
if (fd) s1 << fd;
@ -3194,6 +3500,8 @@ void TRectype::init(int logicnum)
if (_length > 0 && lf_has_memo(logicnum))
init_memo(RECORD_NON_FISICO);
clear_modified_fields();
set_preserve_values();
}
TRectype::TRectype(int logicnum)
@ -3218,6 +3526,7 @@ TRectype::TRectype(const TRectype& r)
init_memo(r._memo_data->recno(), r._memo_data->file());
*_memo_data = *r._memo_data;
}
_modified_fields = r._modified_fields;
memcpy(_rec, r._rec, _length);
memcpy(_tab, r._tab, sizeof(_tab));
setempty(r.empty());
@ -3519,6 +3828,11 @@ bool TRectype::exist(const char* fieldname) const
return findfld(&rec_des(), fieldname) != FIELDERR;
}
int TRectype::find(const char* fieldname) const
{
return findfld(&rec_des(), fieldname);
}
const char* TRectype::fieldname(int i) const
{
const RecDes& recd = rec_des();
@ -3658,7 +3972,6 @@ void TRectype::put(const char* fieldname, bool val)
put(fieldname, val ? 'X' : ' ');
}
void TRectype::put_str(const char* fieldname, const char* val)
{
const RecDes& recd = rec_des();
@ -3677,6 +3990,7 @@ void TRectype::put_str(const char* fieldname, const char* val)
if (ft == _boolfld)
val = (*val && strchr("1STXY", toupper(*val)) != NULL) ? "T" : "F";
set_modified_field(nf, val);
if (*val == '\0')
{
TRecfield f(*this, fieldname);
@ -3722,6 +4036,8 @@ void TRectype::zero(const char* fieldname)
const byte len = recd.Fd[nf].Len;
const byte dec = recd.Fd[nf].Dec;
const TFieldtypes type = (TFieldtypes) recd.Fd[nf].TypeF;
set_modified_field(nf, "");
switch (type)
{
case _datefld:
@ -3753,6 +4069,24 @@ void TRectype::zero(const char* fieldname)
}
}
void TRectype::set_modified_field(int i, const char *val)
{
const RecFieldDes& fd = rec_des().Fd[i];
TString * v = (TString *)_modified_fields.objptr(i);
if (v == NULL)
{
TString old_val = get(fd.Name);
if (old_val != val)
_modified_fields.add(val, i);
}
else
*v = val;
}
void TRectype::zero(char c)
{
memset(_rec, c, len());
@ -3764,6 +4098,7 @@ void TRectype::zero(char c)
if(has_memo())
init_memo( RECORD_NON_FISICO );
setempty(true);
clear_modified_fields();
}
// Certified 99%
@ -3779,6 +4114,7 @@ TRectype& TRectype::operator =(const TRectype& rec)
}
memcpy(_tab, rec._tab, sizeof(_tab));
setempty(rec.empty()); // Copy emptiness status
_modified_fields = rec._modified_fields;
return *this;
}
@ -4041,6 +4377,7 @@ bool TRectype::set_edit_info(const char* ut, const char* dt, const char* or)
if (dt && *dt && type(dt) == _datefld)
{
const TDate oggi(TODAY);
put(dt, oggi); // Scrivi data odierna
// Se esisnte un campo long OR*
@ -4100,6 +4437,7 @@ TRecfield::TRecfield(TRectype& rec, const char* name, int from, int to)
_len = 0;
_dec = 0;
_type = _alfafld;
_nf = 0;
}
else
{
@ -4108,6 +4446,7 @@ TRecfield::TRecfield(TRectype& rec, const char* name, int from, int to)
NFCHECK("Invalid Start %d", from);
from = 0;
}
_nf = nf;
_p = _rec->string() + rd.Fd[nf].RecOff;
_dec = rd.Fd[nf].Dec;
_type = (TFieldtypes)rd.Fd[nf].TypeF;
@ -4162,18 +4501,31 @@ void TRecfield::put_subfield(const char* s)
val.left(e - p + 1);
val.rpad(e - p + 1);
}
TString out = str.left(p);
out << val << str.mid(e); // ? e + 1
_rec->put(_name, out);
}
}
else
if ((p < 0) && (s && *s))
{
TString out = str;
out << '\n' << _sub_field << s;
_rec->put(_name, out);
}
}
int TRecfield::operator =(int i)
{
TString16 buff; buff << i;
if (_sub_field.empty())
__putfieldbuff( _len, _dec, _type, buff, _p);
{
_rec->set_modified_field(_nf, buff);
__putfieldbuff(_len, _dec, _type, buff, _p);
}
else
put_subfield(buff);
_rec->setempty(FALSE);
@ -4185,7 +4537,10 @@ long TRecfield::operator =(long l)
{
TString16 buff; buff << l;
if (_sub_field.empty())
{
_rec->set_modified_field(_nf, buff);
__putfieldbuff( _len, _dec, _type, buff, _p);
}
else
put_subfield(buff);
_rec->setempty(false);
@ -4194,9 +4549,13 @@ long TRecfield::operator =(long l)
const real& TRecfield::operator =(const real& r)
{
const char* buff = r.string();
const char * buff = r.string();
if (_sub_field.empty())
{
_rec->set_modified_field(_nf, buff);
__putfieldbuff( _len, _dec, _type, buff, _p);
}
else
put_subfield(buff);
_rec->setempty(FALSE);
@ -4207,7 +4566,10 @@ const TDate& TRecfield::operator =(const TDate& d)
{
const TString16 buff = d.stringa();
if (_sub_field.empty())
{
_rec->set_modified_field(_nf, buff);
__putfieldbuff( _len, _dec, _type, buff, _p);
}
else
put_subfield(buff);
_rec->setempty(FALSE);
@ -4221,7 +4583,10 @@ const char* TRecfield::operator =(const char* s)
if (_type == _memofld)
_rec->put(_name, s);
else
__putfieldbuff( _len, _dec, _type, s, _p);
{
_rec->set_modified_field(_nf, s);
__putfieldbuff(_len, _dec, _type, s, _p);
}
}
else
put_subfield(s);

View File

@ -19,6 +19,10 @@
#ifndef __PREFIX_H
#include <prefix.h>
#endif
#ifndef __UTILITY_H
#include <utility.h>
#endif
#define FIELDERR -1
@ -27,6 +31,15 @@
const int MAX_KEYS = 8;
enum db_op {db_add = 1, db_remove, db_update};
extern void db_log(bool on);
extern bool db_log();
extern bool to_db_log(int logic);
extern void db_log_on();
extern void db_log_off();
class TBaseisamfile;
class TLocalisamfile;
class TRecfield;
@ -82,6 +95,9 @@ protected:
// @cmember:(INTERNAL) Campo "COD" della tabella
TMemo_data* _memo_data;
TString_array _modified_fields;
bool _preserve_values;
// @access Protected Member
protected:
// @cmember Segnalazione di un campo inesistente
@ -100,6 +116,7 @@ protected:
virtual void put_str(const char* fieldname, const char* val);
bool set_edit_info(const char* ut, const char* dt, const char* or);
void set_modified_field(int i, const char * val);
// @access Public Member
public:
@ -161,6 +178,8 @@ public:
virtual int ndec(const char* fieldname) const;
// @cmember Indica se esiste il campo <p fieldname>
virtual bool exist(const char* fieldname) const;
// @cmember Indica se esiste il campo <p fieldname> e ritorna la ppsizionr
virtual int find(const char* fieldname) const;
// @cmember Ritorna il nome del campo <p i>-esimo
const char* fieldname(int i) const;
@ -259,6 +278,12 @@ public:
// @cmember Ritorna true se sono uguali
bool is_equal(const TRectype& r) const;
bool field_modified(int i) const { return _modified_fields.objptr(i) != NULL; }
const TString & get_modified_field(int i) const { return field_modified(i) ? _modified_fields.row(i) : EMPTY_STRING; }
void clear_modified_fields(int i = -1) { _modified_fields.destroy(i); }
bool preserve_values() { return _preserve_values; }
void set_preserve_values(bool on = true) { _preserve_values = on; }
virtual void init_memo(const TRecnotype recno = RECORD_NON_FISICO, TIsam_handle file = 0);
virtual void reset_memo() { _memo_data->init(RECORD_NON_FISICO, 0); }
virtual void update_memo() {}
@ -331,6 +356,7 @@ protected:
// @access Protected Member
protected:
// @cmember:(INTERNAL) IO su file:
virtual bool writelog(const db_op op, TRectype & rec, TRectype * new_rec, int fhnd);
virtual int _read(TRectype& rec, word op = _isequal, word lockop = _nolock);
virtual int _readat(TRectype& rec, TRecnotype nrec, word lockop = _nolock);
virtual int _write(const TRectype& rec);
@ -798,6 +824,7 @@ class TRecfield : public TObject
TString16 _name, _sub_field;
// @cmember:(INTERNAL) Puntatore a inizio record
TRectype* _rec;
int _nf;
// @cmember:(INTERNAL) Puntatore a inizio campo
char* _p;
// @cmember:(INTERNAL) Lunghezza del campo

View File

@ -199,6 +199,7 @@
#define LF_FPCADG 179
#define LF_CONART 180
#define LF_F9CART 181
#define LF_DBLOG 182
#define LF_EXTERNAL 1000 // Files with id >= are considered to be externals

View File

@ -241,7 +241,7 @@ void TMultiple_rectype::renum_key()
TRectype & TMultiple_rectype::operator =(const TRectype & r)
{
TRectype::operator=(r);
TAuto_variable_rectype::operator=(r);
reset_fields(*this);
set_fields(*this);
return *this;
@ -249,7 +249,7 @@ TRectype & TMultiple_rectype::operator =(const TRectype & r)
TRectype & TMultiple_rectype::operator =(const char * r)
{
TRectype::operator=(r);
TAuto_variable_rectype::operator=(r);
reset_fields(*this);
set_fields(*this);
return *this;

View File

@ -368,7 +368,12 @@ bool TPostman::dispatch_transaction(const TRectype& rec,
TSocketClient socket;
char * buf = new char[1024 * 256];
#ifdef WIN32
ostrstream stream(buf, 1024 * 256);
#else
ostringstream stream(buf);
#endif
bool ok = true;
item.SetTag("m:CampoTransaction");

View File

@ -495,7 +495,7 @@ const TFilename& TFile_info::load_filedes()
{
_dir = _filedes.SysName[0] != '$' ? _comdir : _nordir;
_name = CAddPref(_filedes.SysName);
strncpy(_filedes.Des, dictionary_translate(_filedes.Des), sizeof(_filedes.Des)-1);
strncpy_s(_filedes.Des, dictionary_translate(_filedes.Des), sizeof(_filedes.Des)-1);
}
else
_name.cut(0);
@ -534,7 +534,7 @@ TFile_info::TFile_info(int logicnum, TFilename& name)
int err = DB_recinfo(_name, &_filedes, (RecDes*)&rec.rec(), keys.get_buffer());
if (err == NOERR && prefix().add_recdes(logicnum, rec, keys))
{
strncpy(_filedes.SysName, _name, sizeof(_filedes.SysName));
strncpy_s(_filedes.SysName, _name, sizeof(_filedes.SysName));
_filedes.SysName[41] = '\0';
}
else
@ -1036,7 +1036,7 @@ void TPrefix::set(
{
const TString saved_prf = __ptprf; // Salvo __ptprf che viene cambiato da CGetPref
char* prfx = (char*)CGetPref(); // Safe non const cast for StPath cprefix
strcpy(__ptprf, saved_prf);
strcpy_s(__ptprf, saved_prf);
xvt_fsys_build_pathname(prfx, NULL, __ptprf, _prefix, NULL, NULL);
}
else
@ -1168,7 +1168,7 @@ bool TPrefix::set_studio(const char* study, long ditta)
const TString old_firm(_prefix);
strcpy_s(__ptprf, sizeof(__ptprf), study);
const word len = strlen(__ptprf);
const word len = (word) strlen(__ptprf);
if (len > 0 && __ptprf[len-1] != '\\' && __ptprf[len-1] != '/')
{
__ptprf[len] = SLASH;

View File

@ -19,7 +19,7 @@ word TIndwin::measure_text(TToken_string& s, word& maxlen) const
word lines = 0;
FOR_EACH_TOKEN(s, t)
{
const word l = strlen(t);
const word l = (word) strlen(t);
if (l > maxlen) maxlen = l;
lines++;
}

View File

@ -205,6 +205,21 @@ void TRecord_array::sort(COMPARE_FUNCTION sort_func)
}
}
int TRecord_array::find(const TRectype & rec, int nkey) const
{
const int last = last_row();
const TString80 key2find = rec.key(nkey);
TString80 key;
for (int nrow = first_row(); nrow <= last; nrow = succ_row(nrow))
{
key = row(nrow).key(nkey);
if (key2find == key)
return nrow;
}
return -1;
}
int TRecord_array::rec2row(const TRectype& r) const
{
CHECK(r.num() == _file, "Incompatible record");
@ -447,34 +462,36 @@ int TRecord_array::write(bool re) const
const int u = _data.last();
CHECK(u<1 || !key().empty(), "Can't write rows using an empty key");
CHECK(u < 1 || !key().empty(), "Can't write rows using an empty key");
int i;
for (i = 1; i <= u; i++)
{
const TRectype* r = (TRectype*)_data.objptr(i);
TRectype* r = (TRectype*)_data.objptr(i);
if (r != NULL)
{
if (re)
{
err = r->rewrite(f);
if (err == _iskeynotfound || err == _iseof || err == _isemptyfile)
err = r->write(f);
if (err != NOERR)
break;
}
else
{
err = r->write(f);
if (err == _isreinsert)
{
err = r->rewrite(f);
re = true;
}
if (err != NOERR)
break;
}
}
if (r != NULL)
{
if (re)
{
if (db_log() && _file != LF_DBLOG)
r->set_preserve_values(false);
err = r->rewrite(f);
if (err == _iskeynotfound || err == _iseof || err == _isemptyfile)
err = r->write(f);
if (err != NOERR)
break;
}
else
{
err = r->write(f);
if (err == _isreinsert)
{
err = r->rewrite(f);
re = true;
}
if (err != NOERR)
break;
}
}
else
{
const int pos = i+_offset;
@ -507,7 +524,7 @@ int TRecord_array::write(bool re) const
last_on_file = EOR; // Sul file non ci sono piu' righe da cancellare
delete rec;
}
}
}
}
// Cancella eventuali residui successivi

View File

@ -123,6 +123,8 @@ public:
bool renum_key(const char* field, long num);
// @cmember Ordina il Record Array secondo il criterio definito in <t COMPARE_FUNCTION>
void sort(COMPARE_FUNCTION sort_func);
// @cmember Cerca un record nel Record Array secondo la chiave nkey
int find(const TRectype & rec, int nkey = 1) const ;
// @cmember Legge tutto l'array dal file
virtual int read(const TRectype& r);

Some files were not shown because too many files have changed in this diff Show More