Patch level : 12.0 no-patch
Files correlati : f182.dir f182.trr Commento : Aggiunto file per il log
This commit is contained in:
parent
10f1d6d195
commit
5d27e76d9e
@ -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">
|
||||
|
@ -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">
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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" />
|
||||
|
@ -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>
|
BIN
cd/Setup.exe
BIN
cd/Setup.exe
Binary file not shown.
BIN
exe/Ba1.exe
BIN
exe/Ba1.exe
Binary file not shown.
BIN
exe/Cb6.dll
BIN
exe/Cb6.dll
Binary file not shown.
BIN
exe/DIR.GEN
BIN
exe/DIR.GEN
Binary file not shown.
BIN
exe/TRC.GEN
BIN
exe/TRC.GEN
Binary file not shown.
BIN
exe/ba0.exe
BIN
exe/ba0.exe
Binary file not shown.
BIN
exe/bainst.exe
BIN
exe/bainst.exe
Binary file not shown.
@ -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", ""
|
||||
|
||||
|
@ -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
|
||||
|
BIN
exe/gfm.dll
BIN
exe/gfm.dll
Binary file not shown.
743
exe/install.ini
743
exe/install.ini
@ -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
|
||||
|
||||
|
BIN
exe/pdflib.dll
BIN
exe/pdflib.dll
Binary file not shown.
@ -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
|
||||
|
@ -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 =
|
||||
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,6 @@
|
||||
[FieldDescr]
|
||||
CODFAM = Codice soggetto familiare
|
||||
FAMIGLIA = Codice famiglia (progressivo automatico)
|
||||
GRADOPAR = Grado di parentela
|
||||
PROGFAM = Progressivo familiare
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 =
|
||||
|
||||
|
@ -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
|
||||
|
@ -78,6 +78,9 @@ S0 =
|
||||
S1 =
|
||||
S10 =
|
||||
S11 =
|
||||
S12 =
|
||||
S13 =
|
||||
S14 =
|
||||
S2 =
|
||||
S3 =
|
||||
S4 =
|
||||
|
@ -78,6 +78,9 @@ S0 =
|
||||
S1 =
|
||||
S10 =
|
||||
S11 =
|
||||
S12 =
|
||||
S13 =
|
||||
S14 =
|
||||
S2 =
|
||||
S3 =
|
||||
S4 =
|
||||
|
@ -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 =
|
||||
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,3 @@
|
||||
154
|
||||
0
|
||||
$letint|91|91|114|0|Lettere d'intento|||
|
||||
$letint|0|0|90|0|Lettere d'intento|||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,3 @@
|
||||
17
|
||||
0
|
||||
$cfven|4612|4613|511|0|Clienti/Fornitori per vendite|||
|
||||
$cfven|||519|0|Clienti/Fornitori per vendite|||
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,3 @@
|
||||
20
|
||||
0
|
||||
$clifo|774|774|875|0|Clienti/Fornitori|||
|
||||
$clifo|4338|4338|916|0|Clienti/Fornitori|||
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,3 @@
|
||||
21
|
||||
0
|
||||
$saldi|||143|0|Saldi|||
|
||||
$saldi|||215|0|Saldi|||
|
||||
|
@ -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
|
||||
|
@ -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||
|
||||
|
@ -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|
|
||||
|
@ -1,3 +1,3 @@
|
||||
3
|
||||
1
|
||||
%tabgen|0|0|1181|0|Tabelle di studio|50||
|
||||
%tabgen|0|0|1285|0|Tabelle di studio|||
|
||||
|
@ -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|
|
||||
|
@ -1,3 +1,3 @@
|
||||
4
|
||||
1
|
||||
%tabcom|0|0|1210|0|Tabelle comuni|1500||
|
||||
%tabcom|0|0|1285|0|Tabelle comuni|||
|
||||
|
@ -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|
|
||||
|
@ -1,3 +1,3 @@
|
||||
5
|
||||
0
|
||||
$tab|0|0|1197|0|Tabelle ditta|400||
|
||||
$tab|||1285|0|Tabelle ditta|||
|
||||
|
@ -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|
|
||||
|
@ -1,3 +1,3 @@
|
||||
9
|
||||
1
|
||||
%nditte|0|0|635|0|Ditte|#6||
|
||||
%nditte|0|0|636|0|Ditte|#6||
|
||||
|
@ -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.
@ -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.
@ -1,5 +1,5 @@
|
||||
[MAIN]
|
||||
OEM = 1
|
||||
OEM = 2
|
||||
|
||||
[OEM_0]
|
||||
Administrator = ’—’Œ<EFBFBD>
|
||||
|
BIN
exe/xi.dll
BIN
exe/xi.dll
Binary file not shown.
BIN
exe/xvaga.dll
BIN
exe/xvaga.dll
Binary file not shown.
@ -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
|
||||
|
@ -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())
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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 &&
|
||||
|
@ -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 "æ"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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]);
|
||||
|
@ -395,7 +395,9 @@ THEN
|
||||
#F1.203 +!</postscript>
|
||||
</field>
|
||||
</section>
|
||||
<sql>USE IVADIFF SELECT (BETWEEN(DATAREG,#DAL,#AL))(TIPOIVA==#TIPOIVA)(TIPODIFF==#TIPODIFF)((CHIUSA=#CHIUSA)||(#CHIUSA="T"))
|
||||
<sql>USE IVADIFF KEY 4 SELECT (BETWEEN(DATAREGP;#DAL;#AL))(TIPOIVA==#TIPOIVA)(TIPODIFF==#TIPODIFF)((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>
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,3 @@
|
||||
181
|
||||
182
|
||||
0
|
||||
$dblog|||319|0|Log Transazioni|||
|
@ -1,4 +1,4 @@
|
||||
181
|
||||
182
|
||||
15
|
||||
TIMESTAMP|3|10|0|Data e Ora
|
||||
FILE|2|4|0|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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
|
@ -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;
|
||||
|
@ -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++;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user