Merge branch 'R12.00.1136' of http://10.65.20.33/sirio/CAMPO/campo into R12.00.1136

This commit is contained in:
Alessandro Bonazzi 2022-10-07 14:29:19 +02:00
commit a657231b2e
56 changed files with 817 additions and 91 deletions

4
.gitignore vendored
View File

@ -397,6 +397,10 @@ FodyWeavers.xsd
# JetBrains Rider # JetBrains Rider
*.sln.iml *.sln.iml
#special file
build/fastrip.exe
build/patchdef.exe
#exe folder #exe folder
exe/ exe/

Binary file not shown.

View File

@ -207,6 +207,7 @@
<ClCompile Include="..\src\f9\f90300.cpp" /> <ClCompile Include="..\src\f9\f90300.cpp" />
<ClCompile Include="..\src\f9\f90400.cpp" /> <ClCompile Include="..\src\f9\f90400.cpp" />
<ClCompile Include="..\src\f9\f90200.cpp" /> <ClCompile Include="..\src\f9\f90200.cpp" />
<ClCompile Include="..\src\f9\f90500.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\src\f9\f90.h" /> <ClInclude Include="..\src\f9\f90.h" />
@ -219,6 +220,7 @@
<ClInclude Include="..\src\f9\f90300b.h" /> <ClInclude Include="..\src\f9\f90300b.h" />
<ClInclude Include="..\src\f9\f901tab.h" /> <ClInclude Include="..\src\f9\f901tab.h" />
<ClInclude Include="..\src\f9\f90200a.h" /> <ClInclude Include="..\src\f9\f90200a.h" />
<ClInclude Include="..\src\f9\f90500.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<MskCompiler Include="..\src\f9\f90100a.uml" /> <MskCompiler Include="..\src\f9\f90100a.uml" />
@ -228,6 +230,7 @@
<MskCompiler Include="..\src\f9\f90200a.uml" /> <MskCompiler Include="..\src\f9\f90200a.uml" />
<MskCompiler Include="..\src\f9\f90300a.uml" /> <MskCompiler Include="..\src\f9\f90300a.uml" />
<MskCompiler Include="..\src\f9\f90300b.uml" /> <MskCompiler Include="..\src\f9\f90300b.uml" />
<MskCompiler Include="..\src\f9\f90500a.uml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<SqlCompiler Include="..\src\f9\sql\f90100.sql"> <SqlCompiler Include="..\src\f9\sql\f90100.sql">

View File

@ -54,6 +54,9 @@
<ClInclude Include="..\src\f9\f90300b.h"> <ClInclude Include="..\src\f9\f90300b.h">
<Filter>Headers</Filter> <Filter>Headers</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\f9\f90500.h">
<Filter>Headers</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\src\f9\f90.cpp"> <ClCompile Include="..\src\f9\f90.cpp">
@ -71,6 +74,9 @@
<ClCompile Include="..\src\f9\f90400.cpp"> <ClCompile Include="..\src\f9\f90400.cpp">
<Filter>Sources</Filter> <Filter>Sources</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\f9\f90500.cpp">
<Filter>Sources</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<MskCompiler Include="..\src\f9\f90100a.uml"> <MskCompiler Include="..\src\f9\f90100a.uml">
@ -94,6 +100,9 @@
<MskCompiler Include="..\src\f9\f90300b.uml"> <MskCompiler Include="..\src\f9\f90300b.uml">
<Filter>Masks</Filter> <Filter>Masks</Filter>
</MskCompiler> </MskCompiler>
<MskCompiler Include="..\src\f9\f90500a.uml">
<Filter>Masks</Filter>
</MskCompiler>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<SqlCompiler Include="..\src\f9\sql\f90100.sql"> <SqlCompiler Include="..\src\f9\sql\f90100.sql">

Binary file not shown.

View File

@ -310,6 +310,7 @@
<RepCompiler Include="..\src\fp\fp0700a.rep"> <RepCompiler Include="..\src\fp\fp0700a.rep">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</RepCompiler> </RepCompiler>
<RepCompiler Include="..\src\fp\fp0700b.rep" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">

View File

@ -190,5 +190,8 @@
<RepCompiler Include="..\src\fp\fp0700a.rep"> <RepCompiler Include="..\src\fp\fp0700a.rep">
<Filter>Reports</Filter> <Filter>Reports</Filter>
</RepCompiler> </RepCompiler>
<RepCompiler Include="..\src\fp\fp0700b.rep">
<Filter>Reports</Filter>
</RepCompiler>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -45,7 +45,7 @@
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\$(ProjectName)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\$(ProjectName)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\exe\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\exe\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\$(ProjectName)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\obj\$(SolutionName)\$(ProjectName)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
@ -110,7 +110,7 @@
<ClCompile> <ClCompile>
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\src\xvaga;..\src\include;..\src\xvtdb%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\src\xvtdb\;..\src\cg;..\src\include;..\src\xvaga;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;XVT;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;XVT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -130,7 +130,7 @@
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>..\exe\tp0.exe</OutputFile> <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>.\..\release/tp0.pdb</ProgramDatabaseFile> <ProgramDatabaseFile>.\..\release/tp0.pdb</ProgramDatabaseFile>
@ -146,7 +146,8 @@
<OutputFile>.\..\release/tp0.bsc</OutputFile> <OutputFile>.\..\release/tp0.bsc</OutputFile>
</Bscmake> </Bscmake>
<PostBuildEvent> <PostBuildEvent>
<Command>"C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\signtool.exe" sign /a /s MY /n "Sirio Informatica e Sistemi SPA" /t http://timestamp.verisign.com/scripts/timstamp.dll /v "$(TargetPath)"</Command> <Command>
</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>

3
cd/test/cg1196.txt Normal file
View File

@ -0,0 +1,3 @@
cg4.exe
Le fatture e del note di credito reverse charge sbgliavano la stamps del totale documento

98
cd/test/cg1196a.ini Normal file
View File

@ -0,0 +1,98 @@
[Main]
Demo=0
[cg4]
File(84) = cg4.exe|X
Patch = 1196
Versione = 21511200
[cg99]
Kill(0) = bastdpn.rep|x
Kill(1) = batbpdb.msk|x
Kill(2) = bastpdb.rep|x
Kill(3) = batblbu.msk|x
Kill(4) = bastmsp.msk|x
Kill(5) = bastvet.msk|x
Kill(6) = batbpor.msk|x
Kill(7) = batblia.msk|x
Kill(8) = batblia.msk|x
Kill(9) = bastzon.msk|x
Kill(10) = bastreg.rep|x
Kill(11) = bastarb.msk|x
Kill(12) = bastreg.msk|x
Kill(13) = bastcco.msk|x
Kill(14) = bastvet.rep|x
Kill(15) = batbzon.msk|x
Kill(16) = batbleg.msk|x
Kill(17) = batbnot.msk|x
Kill(18) = bastcfi.msk|x
Kill(19) = batbdel.msk|x
Kill(20) = batbind.msk|x
Kill(21) = batbinl.msk|x
Kill(22) = batbver.msk|x
Kill(23) = bastnot.rep|x
Kill(24) = bastpor.msk|x
Kill(25) = bastdpn.msk|x
Kill(26) = batbntb.msk|x
Kill(27) = batbvet.msk|x
Kill(28) = bastmsp.rep|x
Kill(29) = bastarb.rep|x
Kill(30) = batbesc.msk|x
Kill(31) = cgtbcon.msk|x
Kill(32) = bastleg.msk|x
Kill(33) = bastleg.rep|x
Kill(34) = batbarb.msk|x
Kill(35) = bastver.msk|x
Kill(36) = batbins.msk|x
Kill(37) = bastntb.rep|x
Kill(38) = bastnot.msk|x
Kill(39) = bastver.rep|x
Kill(40) = batbscc.msk|x
Kill(41) = bastntb.msk|x
Kill(42) = bastcco.rep|x
Kill(43) = batbivd.msk|x
Kill(44) = bastscc.msk|x
Kill(45) = bastivd.rep|x
Kill(46) = batbcfi.msk|x
Kill(47) = batbreg.msk|x
Kill(48) = cg2fppro.msk|x
Kill(49) = bastndo.msk|x
Kill(50) = bastpor.rep|x
Kill(51) = batbmsp.msk|x
Kill(52) = bastesc.msk|x
Kill(53) = batbndo.msk|x
Kill(54) = bastcve.rep|x
Kill(55) = bastcfi.rep|x
Kill(56) = batbcam.msk|x
Kill(57) = bastndo.rep|x
Kill(58) = batbtit.msk|x
Kill(59) = bastcam.rep|x
Kill(60) = bastcve.msk|x
Kill(61) = bastzon.rep|x
Kill(62) = batbcco.msk|x
Kill(63) = bastcam.msk|x
Kill(64) = bastesc.rep|x
Kill(65) = batbcve.msk|x
Kill(66) = batbtra.msk|x
Kill(67) = bastivd.msk|x
Kill(68) = bastscc.rep|x
Kill(69) = bastpdb.msk|x
Kill(70) = batbdpn.msk|x
[cg]
Data = 14-09-2022
Descrizione = Contabilita' Generale
Dischi = 1
Edit_19 = cg0 -0
Edit_20 = cg0 -1
Edit_26 = cg0 -4
Edit_5 = cg0 -5
Moduli = ba
OEM =
Patch = 1196
PostProcess = bainst -0 CG
PreProcess =
Prezzo(1) =
Prezzo(2) =
Versione = 21511200

BIN
cd/test/cg1196a1.zip Normal file

Binary file not shown.

3
cd/test/ef1202.txt Normal file
View File

@ -0,0 +1,3 @@
ef0.exe
Negli effetti i campi ABI e CAB non venivano visualizzati se il campo IBAN veniva lasciato vuoto

28
cd/test/ef1202a.ini Normal file
View File

@ -0,0 +1,28 @@
[Main]
Demo=0
[ef0]
Edit_163 = ef0 -1
Edit_5 = ef0 -6
File(0) = ef0.exe|X
Patch = 1202
Versione = 21511200
[ef99]
Kill(0) = eftbbnp.msk|x
Kill(1) = efstbnp.msk|x
Kill(2) = efstbnp.rep|x
[ef]
Data = 06-10-2022
Descrizione = Effetti
Dischi = 1
Moduli = ve
OEM =
Patch = 1202
PostProcess = bainst -0 EF
PreProcess =
Prezzo(1) =
Prezzo(2) =
Versione = 21511200

BIN
cd/test/ef1202a1.zip Normal file

Binary file not shown.

11
cd/test/f91200.txt Normal file
View File

@ -0,0 +1,11 @@
f90.exe
f90100d.msk
sql\f90\f90100.sql
sql\f90\f90102.sql
sql\f90\f90104.sql
Modifiche sostanziali al programma di Archiviazione. Il funzionamento del programma è rimasto lo stesso ma
i processi di abbinamento e i relativi monitor sono stati rivisti e migliorati.
Per le vendite il tipo_documento_sdi (es. TD01) viene recuperato dal PAFW300 come prima scelta, se non viene trovato veine utilizzato quello scritto
nelle categorie documentali.

23
cd/test/f91200a.ini Normal file
View File

@ -0,0 +1,23 @@
[Main]
Demo=0
[f90]
File(0) = f90.exe|X
File(4) = f90100d.msk|X
File(11) = sql\f90\f90100.sql|X
File(12) = sql\f90\f90102.sql|X
File(13) = sql\f90\f90104.sql|X
Patch = 1200
Versione = 21511200
[f9]
Data = 04-10-2022
Descrizione = Archiviazione Sostitutiva
Dischi = 1
Moduli = fp
OEM =
Patch = 1200
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/f91200a1.zip Normal file

Binary file not shown.

3
cd/test/f91201.txt Normal file
View File

@ -0,0 +1,3 @@
sql\f90\f90104.sql
Mancava un IF NOT EXISTS che mandava in errore l'aggiornamento delle tabelle F9

19
cd/test/f91201a.ini Normal file
View File

@ -0,0 +1,19 @@
[Main]
Demo=0
[f90]
File(13) = sql\f90\f90104.sql|X
Patch = 1201
Versione = 21511200
[f9]
Data = 04-10-2022
Descrizione = Archiviazione Sostitutiva
Dischi = 1
Moduli = fp
OEM =
Patch = 1201
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/f91201a1.zip Normal file

Binary file not shown.

3
cd/test/f91202.txt Normal file
View File

@ -0,0 +1,3 @@
sql\f90\f90102.sql
migliorati gli IF NOT EXISTS dello script f90102.sql

19
cd/test/f91202a.ini Normal file
View File

@ -0,0 +1,19 @@
[Main]
Demo=0
[f90]
File(12) = sql\f90\f90102.sql|X
Patch = 1202
Versione = 21511200
[f9]
Data = 06-10-2022
Descrizione = Archiviazione Sostitutiva
Dischi = 1
Moduli = fp
OEM =
Patch = 1202
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/f91202a1.zip Normal file

Binary file not shown.

6
cd/test/fp1196.txt Normal file
View File

@ -0,0 +1,6 @@
fp0.exe
Sistemato il campo P2_FISCIVACOD per i clienti extra CEE.
Prima l'identificativo fiscale per gli extra CEE veniva riportato nel campo P2_CODFISCALE e la fattura veniva scartata.
Ora invece viene scritto nel campo P2_FISCIVACOD.

22
cd/test/fp1196a.ini Normal file
View File

@ -0,0 +1,22 @@
[Main]
Demo=0
[fp0]
File(0) = fp0.exe|X
Patch = 1196
Versione = 21511200
[fp99]
Kill(0) = fppro.msk|x
[fp]
Data = 26-09-2022
Descrizione = Fattura Elettronica
Dischi = 1
Moduli = cg,ve
OEM =
Patch = 1196
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/fp1196a1.zip Normal file

Binary file not shown.

5
cd/test/fp1198.txt Normal file
View File

@ -0,0 +1,5 @@
fp0.exe
fp0700b.rep
fp0700a.msk
Aggiunta la stampa del prospetto d'integrazione per i documenti cartacei da SanMarino (TD28)

24
cd/test/fp1198a.ini Normal file
View File

@ -0,0 +1,24 @@
[Main]
Demo=0
[fp0]
File(0) = fp0.exe|X
File(7) = fp0700a.msk|X
File(19) = fp0700b.rep|X
Patch = 1198
Versione = 21511200
[fp99]
Kill(0) = fppro.msk|x
[fp]
Data = 26-09-2022
Descrizione = Fattura Elettronica
Dischi = 1
Moduli = cg,ve
OEM =
Patch = 1198
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/fp1198a1.zip Normal file

Binary file not shown.

4
cd/test/fp1200.txt Normal file
View File

@ -0,0 +1,4 @@
fp0.exe
Nell'invio di integrazioni multiple il riepliogo iva non veniva cancellato e quindi veniva sommato nelle integrazioni successive.

22
cd/test/fp1200a.ini Normal file
View File

@ -0,0 +1,22 @@
[Main]
Demo=0
[fp0]
File(0) = fp0.exe|X
Patch = 1200
Versione = 21511200
[fp99]
Kill(0) = fppro.msk|x
[fp]
Data = 29-09-2022
Descrizione = Fattura Elettronica
Dischi = 1
Moduli = cg,ve
OEM =
Patch = 1200
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/fp1200a1.zip Normal file

Binary file not shown.

3
cd/test/fp1202.txt Normal file
View File

@ -0,0 +1,3 @@
fp0.exe
Nell'invio fatture è stato corretto il riferimento del nome di una colonna del PAF1100 (PA_DATADOCU). Veniva erroneamente chiamato PA_DATADOC

22
cd/test/fp1202a.ini Normal file
View File

@ -0,0 +1,22 @@
[Main]
Demo=0
[fp0]
File(0) = fp0.exe|X
Patch = 1202
Versione = 21511200
[fp99]
Kill(0) = fppro.msk|x
[fp]
Data = 05-10-2022
Descrizione = Fattura Elettronica
Dischi = 1
Moduli = cg,ve
OEM =
Patch = 1202
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/fp1202a1.zip Normal file

Binary file not shown.

3
cd/test/tp1198.txt Normal file
View File

@ -0,0 +1,3 @@
tp0.exe
Aggiunto log di errori per le query di trasferimento pack. (Errore trasferimento ddt segnalato da VillaBrianBox)

21
cd/test/tp1198a.ini Normal file
View File

@ -0,0 +1,21 @@
[Main]
Demo=0
[tp0]
File(0) = tp0.exe|X
Patch = 1198
Versione = 21511200
[tp]
Data = 27-09-2022
Descrizione = Trasferimento PACK
Dischi = 1
Moduli = ve
OEM =
Patch = 1198
PostProcess =
PreProcess =
Prezzo(1) =
Prezzo(2) =
Versione = 21511200

BIN
cd/test/tp1198a1.zip Normal file

Binary file not shown.

View File

@ -415,7 +415,7 @@ bool TEffetti_mask::on_field_event(TOperable_field& o, TField_event e, long joll
TCli_for & cf = (TCli_for &)cached_clifor(tipocf, codcf); TCli_for & cf = (TCli_for &)cached_clifor(tipocf, codcf);
const TString & iban = cf.get_iban(); const TString & iban = cf.get_iban();
if (iban.full()) // if (iban.full())
set(F_IBAN, iban, 0x3); set(F_IBAN, iban, 0x3);
TToken_string& banp = cf.get_ban_pres(); TToken_string& banp = cf.get_ban_pres();
@ -457,6 +457,23 @@ bool TEffetti_mask::on_field_event(TOperable_field& o, TField_event e, long joll
} }
return true; return true;
break; break;
case F_IBAN_STATO:
if (mode() == MODE_MOD && e == fe_init)
{
TRelation * rel = app().get_relation();
if (rel != nullptr)
{
TRectype & rec = rel->lfile().curr();
if (rec.get(EFF_IBAN).empty())
{
set(F_CODABI, rec.get(EFF_CODABI));
set(F_CODCAB, rec.get(EFF_CODCAB));
return true;
}
}
}
case F_DATASCAD: case F_DATASCAD:
if (e == fe_close) if (e == fe_close)
{ {

View File

@ -45,7 +45,7 @@ bool TFppro::guess_the_doc(const TLocalisamfile& mov)
const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC); const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC);
TString numdoc = mov.get(MOV_NUMDOCEXT); TString numdoc = mov.get(MOV_NUMDOCEXT);
if (numdoc.empty()) if (numdoc.blank())
numdoc = mov.get(MOV_NUMDOC); numdoc = mov.get(MOV_NUMDOC);
// Controllo datadoc - numdoc - totdoc - p.iva // Controllo datadoc - numdoc - totdoc - p.iva
@ -58,11 +58,11 @@ bool TFppro::guess_the_doc(const TLocalisamfile& mov)
"WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" << "WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" <<
"(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n"; "(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n";
if (statopiva.full()) if (statopiva.full())
query << "' AND \n" << "P2_FISCIVAPAESE = '" << statopiva; query << " AND \n" << "P2_FISCIVAPAESE = '" << statopiva << "'";
query << "' AND \n" << "P2_FISCIVACOD = '" << forn.get(CLI_PAIV); query << " AND \n" << "P2_FISCIVACOD = '" << forn.get(CLI_PAIV) << "'";
if (forn.gruppo_IVA()) if (forn.gruppo_IVA())
query << "' AND \n" "P2_COCAZZO = '" << forn.get(CLI_COFI); // cazzo; query << " AND \n" "P2_COCAZZO = '" << forn.get(CLI_COFI) << "'"; // cazzo;
query << "PQ_IMPTOTDOC = " << tot; query << " AND \n" "PQ_IMPTOTDOC = " << tot;
if (_db->sq_set_exec(query) && _db->sq_items() == 1) if (_db->sq_set_exec(query) && _db->sq_items() == 1)
{ {
@ -119,6 +119,17 @@ TDate TFppro::get_datareg()
return _db->sq_get_date("PZ_DATAREGCONT"); return _db->sq_get_date("PZ_DATAREGCONT");
} }
TDate TFppro::get_datadoc()
{
if (!_is_set)
{
if (set_query())
return _db->sq_get_date("PZ_DATA");
return TDate();
}
return _db->sq_get_date("PZ_DATA");
}
TDate TFppro::get_datareg(TToken_string& keys) TDate TFppro::get_datareg(TToken_string& keys)
{ {
set_keys(keys); set_keys(keys);
@ -188,7 +199,7 @@ bool TFppro::associa_mov(const long numreg)
if (ok) // Scrivo sul movimento il riferimento al fppro if (ok) // Scrivo sul movimento il riferimento al fppro
{ {
mov.put(MOV_IDDOCSDI, fppro_db().get_numdoc()); mov.put(MOV_IDDOCSDI, fppro_db().get_numdoc());
mov.put(MOV_DATADOCSDI, fppro_db().get_numdoc()); mov.put(MOV_DATADOCSDI, fppro_db().get_datadoc());
mov.put(MOV_KEYFPPRO, get_keys_fppro()); mov.put(MOV_KEYFPPRO, get_keys_fppro());
ok = mov.rewrite() == NOERR; ok = mov.rewrite() == NOERR;
} }

View File

@ -59,6 +59,7 @@ public:
long get_numreg(TToken_string& keys); long get_numreg(TToken_string& keys);
long get_codforn(); long get_codforn();
TDate get_datareg(); TDate get_datareg();
TDate get_datadoc();
TDate get_datareg(TToken_string& keys); TDate get_datareg(TToken_string& keys);
real get_ritenute(); real get_ritenute();
TDate get_data_first_doc() const; TDate get_data_first_doc() const;

View File

@ -73,13 +73,16 @@ int TEstrai_mask::estrai()
for (bool ok = mov.move_first(); progr->add_status() && ok; ok = mov.move_next()) for (bool ok = mov.move_first(); progr->add_status() && ok; ok = mov.move_next())
{ {
TToken_string elab_f9(mov.get_string(MOV_ELABF9), ';'); // Stringa del campo elaborazione f9 nel file mov TToken_string elab_f9(mov.get_string(MOV_ELABF9), ';'); // Stringa del campo elaborazione f9 nel file mov
const bool escluso = !(elab_f9.items() == 3 && elab_f9.get_bool(2) || elab_f9.empty()); const bool escluso = (elab_f9.items() == 3 && elab_f9.get_bool(2));
const TCausale & caus = cached_causale(mov.get_string(MOV_CODCAUS), mov.get_date(MOV_DATAREG).year()); const TCausale & caus = cached_causale(mov.get_string(MOV_CODCAUS), mov.get_date(MOV_DATAREG).year());
const bool stampato = mov.get_bool(MOV_REGST); const bool stampato = mov.get_bool(MOV_REGST);
const TRegistro& reg = caus.reg(); const TRegistro& reg = caus.reg();
const TipoIVA& iva = reg.iva(); const TipoIVA& iva = reg.iva();
TString numdoc = mov.get_string(MOV_NUMDOCEXT); TString numdoc = mov.get_string(MOV_NUMDOCEXT);
if (escluso)
int here = 0;
if (numdoc.empty()) if (numdoc.empty())
numdoc = mov.get_string(MOV_NUMDOC); numdoc = mov.get_string(MOV_NUMDOC);
// Se definitivo controllo il flag di stampato REGST // Se definitivo controllo il flag di stampato REGST
@ -222,10 +225,13 @@ TEstrai_mask::TEstrai_mask() : TMask("Estrazione", 1, 60, 16), _estrazione(nullp
// TMonitor_mask // TMonitor_mask
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
bool TMonitor_mask::save_conf_handler(TMask_field& f, KEY key) bool TMonitor_mask::save_conf(TMask& config_mask)
{ {
TMask& config_mask = f.mask();
TString old_codsoc = F9CONF.get_ambiente(); TString old_codsoc = F9CONF.get_ambiente();
TString new_lvl = config_mask.get(CF_LVLNEW);
TString old_lvl = config_mask.get(CF_LVLOLD);
if(config_mask.get(CF_CODSOC).empty()) if(config_mask.get(CF_CODSOC).empty())
warning_box("Codice Ambiente vuoto. Impossibile salvare i dati."); warning_box("Codice Ambiente vuoto. Impossibile salvare i dati.");
F9CONF.set_ambiente (config_mask.get(CF_CODSOC)); F9CONF.set_ambiente (config_mask.get(CF_CODSOC));
@ -235,6 +241,20 @@ bool TMonitor_mask::save_conf_handler(TMask_field& f, KEY key)
config_mask.close(); config_mask.close();
f9_app().edit_wa(old_codsoc); f9_app().edit_wa(old_codsoc);
TLocalisamfile tabmod(LF_TABMOD);
tabmod.put("MOD", "F9");
tabmod.put("COD", "SQL");
tabmod.put("CODTAB", "VERSION");
tabmod.put("S0", real(new_lvl));
if (tabmod.write_rewrite() == NOERR)
{
config_mask.set(CF_LVLOLD, new_lvl);
config_mask.set(CF_LVLNEW, "");
message_box("Versione impostata!");
}
else
return error_box("Impossibile aggiornare il livello degli archivi");
return true; return true;
} }
@ -368,6 +388,42 @@ void TMonitor_mask::fill() const
} }
bool TConfig_f9_mask::on_key(const KEY key)
{
if (key == K_SHIFT + K_F12)
{
if (run_fp_psw_mask())
{
enable(CF_LVLNEW);
}
}
return true;
}
bool TConfig_f9_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case CF_LVLNEW:
if (e == fe_close)
{
TMask& config_mask = o.mask();
TString new_lvl = config_mask.get(CF_LVLNEW);
TString old_lvl = config_mask.get(CF_LVLOLD);
if (new_lvl.empty())
return o.error_box("Livello Patch non conforme. Impossibile aggiornare");
if (new_lvl > old_lvl)
return o.error_box("Per impostare un livello patch superiore dell'attuale\nè sufficente riavviare il programma.");
}
break;
default: break;
}
return true;
}
bool TMonitor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TMonitor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
switch (o.dlg()) switch (o.dlg())
@ -452,7 +508,14 @@ void TMonitor_mask::open_win_estr()
void TMonitor_mask::open_win_conf() void TMonitor_mask::open_win_conf()
{ {
TMask m("Configurazione Archiviazione Sostitutiva", 1, 70, 20); TConfig_f9_mask m("Configurazione Archiviazione Sostitutiva", 1, 70, 30, 55, 5);
TLocalisamfile tabmod(LF_TABMOD);
tabmod.put("MOD", "F9");
tabmod.put("COD", "SQL");
tabmod.put("CODTAB", "VERSION");
const bool exists = tabmod.read() == NOERR;
int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2;
m.add_button_tool(DLG_OK, "Conferma", TOOL_OK); m.add_button_tool(DLG_OK, "Conferma", TOOL_OK);
m.add_button_tool(DLG_NULL, "", 0); m.add_button_tool(DLG_NULL, "", 0);
@ -465,14 +528,22 @@ void TMonitor_mask::open_win_conf()
m.add_string (CF_ADDRDOCLOC, 0, "Locale ", 2, 5, 256, "", 40); m.add_string (CF_ADDRDOCLOC, 0, "Locale ", 2, 5, 256, "", 40);
m.add_groupbox (CF_ESTRGROUP, 0, "Opzioni estrazione", 1, 7, 69, 4, ""); m.add_groupbox (CF_ESTRGROUP, 0, "Opzioni estrazione", 1, 7, 69, 4, "");
m.add_boolean (CF_CARTEXP, 0, "Estrai anche documenti cartacei", 2, 8); m.add_boolean (CF_CARTEXP, 0, "Estrai anche documenti cartacei", 2, 8);
m.add_groupbox (CF_LVLGROUP, 0, "Livello Patch Tabelle F9", 1, 11, 69, 4, "");
m.set_handler(DLG_OK, save_conf_handler); m.add_string (CF_LVLOLD, 0, "Livello Attuale", 35, 12, 10, "D", 10);
m.add_string (CF_LVLNEW, 0, "Nuovo Livello ", 2, 12, 10, "D", 10);
m.set_handlers();
m.set(CF_CODSOC, F9CONF.get_ambiente()); m.set(CF_CODSOC, F9CONF.get_ambiente());
m.set(CF_ADDRDOC, F9CONF.get_addr_doc()); m.set(CF_ADDRDOC, F9CONF.get_addr_doc());
m.set(CF_ADDRDOCLOC, F9CONF.get_addr_doc_loc()); m.set(CF_ADDRDOCLOC, F9CONF.get_addr_doc_loc());
m.set(CF_CARTEXP, F9CONF.get_has_cartexp()); m.set(CF_CARTEXP, F9CONF.get_has_cartexp());
m.run(); m.set(CF_LVLOLD, version);
m.disable(CF_LVLOLD);
if(m.run()==K_ENTER)
save_conf(m);
} }
void TMonitor_mask::sel() const void TMonitor_mask::sel() const
@ -558,6 +629,7 @@ void TControllo_mask::conferma_esclusi() const
query << "UPDATE " F9_ERR " SET ESCLUSO = 'Si' WHERE " ERR_CODSOC " = '" << _cod_soc << "' AND IDESTR = '" << query << "UPDATE " F9_ERR " SET ESCLUSO = 'Si' WHERE " ERR_CODSOC " = '" << _cod_soc << "' AND IDESTR = '" <<
_id_estr << "' AND NUMREG = '" << nreg << "';"; _id_estr << "' AND NUMREG = '" << nreg << "';";
fp_db().sq_set_exec(query); fp_db().sq_set_exec(query);
fp_db().sq_commit();
} }
else else
{ {
@ -571,6 +643,7 @@ void TControllo_mask::conferma_esclusi() const
query << "UPDATE " F9_ERR " SET ESCLUSO = NULL WHERE " ERR_CODSOC " = '" << _cod_soc << "' AND IDESTR = '" << query << "UPDATE " F9_ERR " SET ESCLUSO = NULL WHERE " ERR_CODSOC " = '" << _cod_soc << "' AND IDESTR = '" <<
_id_estr << "' AND NUMREG = '" << nreg << "';"; _id_estr << "' AND NUMREG = '" << nreg << "';";
fp_db().sq_set_exec(query); fp_db().sq_set_exec(query);
fp_db().sq_commit();
} }
} }
} }
@ -628,10 +701,7 @@ void TControllo_mask::fill_fppro_sheet() const
TString query; TString query;
query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT,\n" << query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT,\n" <<
"PZ_TIPODOC AS TIPODOC, P7_DATA AS DATA, P7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC,\n" << "PZ_TIPODOC AS TIPODOC, P7_DATA AS DATA, P7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC,\n" <<
"CASE\n" << "PZ_CLIFOR AS FORNITORE, " <<
"WHEN PZ_CLIFOR <> '' THEN CAST(PZ_CLIFOR AS NUMERIC(10, 0))\n" <<
"WHEN PZ_CLIFOR = '' THEN 0\n" <<
"END AS FORNITORE, " <<
"P2_ANADENOMIN AS RAGSOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" << "P2_ANADENOMIN AS RAGSOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" <<
"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" << "JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" << "JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" <<
@ -1017,6 +1087,7 @@ void TApri_estr_msk::fill_res() const
{ {
TString query; TString query;
query << "SELECT * FROM " F9_MOVESTR "\n" query << "SELECT * FROM " F9_MOVESTR "\n"
"INNER JOIN " F9_IVA " ON " IVA_IDLAN " = " MES_IDESTR " AND " IVA_NUMOR " = " MES_NUMREG "\n"
"WHERE " MES_CODSOC " = '" << F9CONF.get_ambiente() << "' AND " MES_IDESTR " = '" << _idestr << "'"; "WHERE " MES_CODSOC " = '" << F9CONF.get_ambiente() << "' AND " MES_IDESTR " = '" << _idestr << "'";
fp_db().sq_set_exec(query, false); fp_db().sq_set_exec(query, false);
@ -1026,12 +1097,15 @@ void TApri_estr_msk::fill_res() const
sf.reset(); sf.reset();
for (bool ok = fp_db().sq_next(); prog.add_status() && ok; ok = fp_db().sq_next()) for (bool ok = fp_db().sq_next(); prog.add_status() && ok; ok = fp_db().sq_next())
{ {
TString td = fp_db().sq_get(IVA_CAUSSOS);
const TRectype & mov = cache().get(LF_MOV, fp_db().sq_get(MES_NUMREG)); const TRectype & mov = cache().get(LF_MOV, fp_db().sq_get(MES_NUMREG));
const int row = sf.set_row_cell(F_RSEL, fp_db().sq_get_int(MES_ESTR) ? "X" : " "); // Estratto const int row = sf.set_row_cell(F_RSEL, fp_db().sq_get_int(MES_ESTR) ? "X" : " "); // Estratto
sf.set_row_cell(F_RNUMREG, mov.get(MOV_NUMREG), row); // Numreg sf.set_row_cell(F_RNUMREG, mov.get(MOV_NUMREG), row); // Numreg
sf.set_row_cell(F_RDATAREG, mov.get_date(MOV_DATAREG), row); // Data reg sf.set_row_cell(F_RDATAREG, mov.get_date(MOV_DATAREG), row); // Data reg
sf.set_row_cell(F_RDATADOC, mov.get_date(MOV_DATADOC), row); // Data doc sf.set_row_cell(F_RDATADOC, mov.get_date(MOV_DATADOC), row); // Data doc
sf.set_row_cell(F_RTIPODOCSDI, td, row); // Tipo Doc SDI
sf.set_row_cell(F_RCODCAUS, mov.get(MOV_CODCAUS), row); // Cod caus sf.set_row_cell(F_RCODCAUS, mov.get(MOV_CODCAUS), row); // Cod caus
sf.set_row_cell(F_RTIPOMOV, mov.get(MOV_TIPODOC), row); // Tipo doc sf.set_row_cell(F_RTIPOMOV, mov.get(MOV_TIPODOC), row); // Tipo doc
sf.set_row_cell(F_RMESELIQ, mov.get_int(MOV_MESELIQ), row); // Mese liq sf.set_row_cell(F_RMESELIQ, mov.get_int(MOV_MESELIQ), row); // Mese liq
@ -1462,6 +1536,9 @@ bool TF9_app::check_tab_version() const
int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2; int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2;
if (version < SQL_VERSION) // Controllo la versione if (version < SQL_VERSION) // Controllo la versione
{ {
if(version<TAB_BASE_VERSION)
version = TAB_BASE_VERSION;
for (; version < SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione for (; version < SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione
{ {
if (ok &= aggiorna_tab_f9(version + 2)) if (ok &= aggiorna_tab_f9(version + 2))

View File

@ -74,7 +74,10 @@ class TMonitor_mask : public TAutomask
TApri_estr_msk _inclusi_mask; TApri_estr_msk _inclusi_mask;
// Configurazione mask // Configurazione mask
static bool save_conf_handler(TMask_field& f, KEY key); bool save_conf(TMask& m);
// Forza Aggiornamento LVL Patch delle tabelle F9
static bool update_table_level(TMask_field& f, KEY key);
// Metodi per la maschera 'Apri Estr.' // Metodi per la maschera 'Apri Estr.'
@ -87,7 +90,7 @@ class TMonitor_mask : public TAutomask
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
static void open_win_estr(); static void open_win_estr();
static void open_win_conf(); void open_win_conf();
void sel() const; void sel() const;
public: public:
@ -98,6 +101,19 @@ public:
~TMonitor_mask() {} ~TMonitor_mask() {}
}; };
class TConfig_f9_mask: public TAutomask
{
protected:
bool on_key(const KEY key);
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
// @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
TConfig_f9_mask(const char* filename, int num = 0) : TAutomask(filename, num) {};
// @cmember Costruttore (crea una maschera vuota con i parametri dati)
TConfig_f9_mask(const char* title, int pages, int cols, int rows, int xpos = -1, int ypos = -1) : TAutomask(title, pages, cols, rows, xpos, ypos) {};
};
class TControllo_mask : public TAutomask class TControllo_mask : public TAutomask
{ {
TArray _controllo_mov; // Usare import_error_list(). TArray _controllo_mov; // Usare import_error_list().

View File

@ -52,6 +52,11 @@
#define CF_ADDRDOCLOC 505 #define CF_ADDRDOCLOC 505
#define CF_ESTRGROUP 506 #define CF_ESTRGROUP 506
#define CF_CARTEXP 507 #define CF_CARTEXP 507
#define CF_LVLGROUP 508
#define CF_LVLOLD 509
#define CF_LVLNEW 510
#define CF_TABLEVEL 511
// Campi maschera descrizione estrazione // Campi maschera descrizione estrazione
#define DES_TEXT 501 #define DES_TEXT 501

View File

@ -35,13 +35,14 @@
#define F_RNUMREG 102 #define F_RNUMREG 102
#define F_RDATAREG 103 #define F_RDATAREG 103
#define F_RDATADOC 104 #define F_RDATADOC 104
#define F_RCODCAUS 105 #define F_RTIPODOCSDI 105
#define F_RTIPOMOV 106 #define F_RCODCAUS 106
#define F_RMESELIQ 107 #define F_RTIPOMOV 107
#define F_RNUMDOC 108 #define F_RMESELIQ 108
#define F_RIMPTOTDOC 109 #define F_RNUMDOC 109
#define F_RFORN 110 #define F_RIMPTOTDOC 110
#define F_RRAGSOC 111 #define F_RFORN 111
#define F_RPROTIVA 112 #define F_RRAGSOC 112
#define F_RDESCR 113 #define F_RPROTIVA 113
#define F_RDESCRERR 114 #define F_RDESCR 114
#define F_RDESCRERR 115

View File

@ -138,8 +138,9 @@ BEGIN
ITEM "Numero\nReg.@8" ITEM "Numero\nReg.@8"
ITEM "Data\nReg.@8" ITEM "Data\nReg.@8"
ITEM "Data\nDoc.@8" ITEM "Data\nDoc.@8"
ITEM "Tipo Doc\nSDI@9"
ITEM "Codice\nCaus.@8" ITEM "Codice\nCaus.@8"
ITEM "Tipo Doc.@5" ITEM "Tipo Mov.@5"
ITEM "Mese\nliquidazione@8" ITEM "Mese\nliquidazione@8"
ITEM "Numero\nDocumento@8" ITEM "Numero\nDocumento@8"
ITEM "Totale\nDocumento@8" ITEM "Totale\nDocumento@8"
@ -305,63 +306,69 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING F_RCODCAUS 3 STRING F_RTIPODOCSDI 4
BEGIN BEGIN
PROMPT 1 5 "" PROMPT 1 5 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RTIPOMOV 3 STRING F_RCODCAUS 3
BEGIN BEGIN
PROMPT 1 6 "" PROMPT 1 6 ""
FLAGS "D" FLAGS "D"
END END
NUMERIC F_RMESELIQ 2 STRING F_RTIPOMOV 3
BEGIN BEGIN
PROMPT 1 7 "" PROMPT 1 7 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RNUMDOC 50 NUMERIC F_RMESELIQ 2
BEGIN BEGIN
PROMPT 1 8 "" PROMPT 1 8 ""
FLAGS "D" FLAGS "D"
END END
NUMERIC F_RIMPTOTDOC 15 2 STRING F_RNUMDOC 50
BEGIN BEGIN
PROMPT 1 9 "" PROMPT 1 9 ""
FLAGS "D" FLAGS "D"
END END
NUMERIC F_RFORN 6 NUMERIC F_RIMPTOTDOC 15 2
BEGIN BEGIN
PROMPT 1 10 "" PROMPT 1 10 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RRAGSOC 80 NUMERIC F_RFORN 6
BEGIN BEGIN
PROMPT 1 11 "" PROMPT 1 11 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RPROTIVA 10 STRING F_RRAGSOC 80
BEGIN BEGIN
PROMPT 1 12 "" PROMPT 1 12 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RDESCR 50 STRING F_RPROTIVA 10
BEGIN BEGIN
PROMPT 1 13 "" PROMPT 1 13 ""
FLAGS "D" FLAGS "D"
END END
STRING F_RDESCR 50
BEGIN
PROMPT 1 14 ""
FLAGS "D"
END
STRING F_RDESCRERR 92 STRING F_RDESCRERR 92
BEGIN BEGIN
PROMPT 1 13 "" PROMPT 1 15 ""
FLAGS "D" FLAGS "D"
END END

View File

@ -638,6 +638,8 @@ bool TEstrazione::insert_into_f9movestr() const
TProgress_monitor prog(_movs.size(), "Salvataggio informazioni estrazione", false); TProgress_monitor prog(_movs.size(), "Salvataggio informazioni estrazione", false);
//QUI ANDRA' CONTROLLATO IL PAFW300
FOR_EACH_ARRAY_ITEM(_movs, r, obj) FOR_EACH_ARRAY_ITEM(_movs, r, obj)
{ {
if(prog.add_status()) if(prog.add_status())
@ -798,6 +800,7 @@ const char* TEstrazione::diagnostica_mov()
TMovimento_estr & mov_i = (TMovimento_estr &)*obj; TMovimento_estr & mov_i = (TMovimento_estr &)*obj;
// Se gia' escluso passo avanti // Se gia' escluso passo avanti
if (!mov_i.estratto() && mov_i.descr_estr() == mov_escluso) if (!mov_i.estratto() && mov_i.descr_estr() == mov_escluso)
continue; continue;
@ -1115,6 +1118,7 @@ bool TEstrazione::estrazione_iva(bool escluso)
iva_query.add(IVA_DOCXML, mov_i.cartaceo() ? 'N' : 'S'); iva_query.add(IVA_DOCXML, mov_i.cartaceo() ? 'N' : 'S');
iva_query.add(IVA_TIPOCF, mov.get_char(MOV_TIPO)); iva_query.add(IVA_TIPOCF, mov.get_char(MOV_TIPO));
iva_query.add(IVA_CODCF, mov.get_long(MOV_CODCF)); iva_query.add(IVA_CODCF, mov.get_long(MOV_CODCF));
iva_query.add(IVA_NUMOR, mov.get_long(MOV_NUMREG));
iva_query.add(IVA_RAGSOC, cli.get(CLI_RAGSOC), 60); iva_query.add(IVA_RAGSOC, cli.get(CLI_RAGSOC), 60);
iva_query.add(IVA_IDFISC, idfisc, 30); iva_query.add(IVA_IDFISC, idfisc, 30);
@ -1125,7 +1129,22 @@ bool TEstrazione::estrazione_iva(bool escluso)
const TRegistro& reg = cached_registro(mov.get(MOV_REG), mov.get_int(MOV_ANNOIVA)); const TRegistro& reg = cached_registro(mov.get(MOV_REG), mov.get_int(MOV_ANNOIVA));
if (reg.iva() == iva_vendite) if (reg.iva() == iva_vendite)
iva_query.add(IVA_CAUSSOS, mov_i.catdoc(categorie_doc())->caus_sost(), 6); // {
int anno = mov.get_int(MOV_DANNO);
if (anno > 0)
{
const char provv = mov.get(MOV_DPROVV)[0];
const TString& codnum = mov.get(MOV_DCODNUM);
const long ndoc = mov.get_long(MOV_DNDOC);
TDocumento doc(provv, anno, codnum, ndoc);
iva_query.add(IVA_CAUSSOS, tipo_doc_sdi(doc) , 6);
}
else
iva_query.add(IVA_CAUSSOS, mov_i.catdoc(categorie_doc())->caus_sost(), 6);
}
//
else else
{ {
TToken_string key(mov.get((MOV_KEYFPPRO)), ';'); TToken_string key(mov.get((MOV_KEYFPPRO)), ';');

View File

@ -1,10 +1,28 @@
IF NOT EXISTS(SELECT 1 FROM sys.columns IF NOT EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'F9IDDES' AND Object_ID = Object_ID(N'F9IVA00K'))
WHERE Name = N'F9IURIC' ALTER TABLE F9IVA00K ADD F9IDDES CHAR(30) NOT NULL DEFAULT ''
AND Object_ID = Object_ID(N'F9IVA00K')) ELSE
BEGIN SELECT 1 AS EXIST;
ALTER TABLE F9IVA00K ADD F9IDDES CHAR(30) NOT NULL DEFAULT '',
F9ITPRT CHAR(2) NOT NULL DEFAULT '',
F9IAPRT NUMERIC(4,0) NOT NULL DEFAULT 0, IF NOT EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'F9ITPRT' AND Object_ID = Object_ID(N'F9IVA00K'))
F9INPRT NUMERIC(10,0) NOT NULL DEFAULT 0, ALTER TABLE F9IVA00K ADD F9ITPRT CHAR(2) NOT NULL DEFAULT ''
F9IURIC DATETIME NOT NULL DEFAULT getdate() ELSE
END; SELECT 1 AS EXIST;
IF NOT EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'F9IAPRT' AND Object_ID = Object_ID(N'F9IVA00K'))
ALTER TABLE F9IVA00K ADD F9IAPRT NUMERIC(4,0) NOT NULL DEFAULT 0
ELSE
SELECT 1 AS EXIST;
IF NOT EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'F9INPRT' AND Object_ID = Object_ID(N'F9IVA00K'))
ALTER TABLE F9IVA00K ADD F9INPRT NUMERIC(10,0) NOT NULL DEFAULT 0
ELSE
SELECT 1 AS EXIST;
IF NOT EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'F9IURIC' AND Object_ID = Object_ID(N'F9IVA00K'))
ALTER TABLE F9IVA00K ADD F9IURIC DATETIME NOT NULL DEFAULT getdate()
ELSE
SELECT 1 AS EXIST;

View File

@ -1,17 +1,26 @@
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'F9DRT00K' and COLUMN_NAME = 'F9TFCEE') IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'F9DRT00K' and COLUMN_NAME = 'F9TFCEE')
ALTER TABLE F9DRT00K ADD F9TFCEE CHAR(6) NOT NULL DEFAULT ''; ALTER TABLE F9DRT00K ADD F9TFCEE CHAR(6) NOT NULL DEFAULT '';
CREATE TABLE F9MOVESTR( IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9MOVESTR')
CREATE TABLE F9MOVESTR(
IDSOC CHAR(10) NOT NULL, IDSOC CHAR(10) NOT NULL,
IDESTR CHAR(18) NOT NULL, IDESTR CHAR(18) NOT NULL,
NUMREG NUMERIC(7,0) NOT NULL, NUMREG NUMERIC(7,0) NOT NULL,
DATAREG DATE, DATAREG DATE,
ESTRATTO BIT DEFAULT '0' NOT NULL, ESTRATTO BIT DEFAULT '0' NOT NULL,
DESCR_ERR VARCHAR(1024) DESCR_ERR VARCHAR(1024)
); )
ALTER TABLE F9MOVESTR ADD CONSTRAINT F9MOVESTR_PK PRIMARY KEY(IDSOC, IDESTR, NUMREG); ELSE
SELECT 1 AS EXIST;
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE TABLE_NAME = 'F9MOVESTR' AND CONSTRAINT_NAME = 'F9MOVESTR_PK' )
ALTER TABLE F9MOVESTR ADD CONSTRAINT F9MOVESTR_PK PRIMARY KEY(IDSOC, IDESTR, NUMREG);
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'F9ERROR' AND COLUMN_NAME = 'IDSOC')
ALTER TABLE F9ERROR ADD IDSOC CHAR(10) NOT NULL DEFAULT '';
ALTER TABLE F9ERROR ADD IDSOC CHAR(10) NOT NULL DEFAULT '';
DECLARE @name nvarchar(128), @sql NVARCHAR(MAX) DECLARE @name nvarchar(128), @sql NVARCHAR(MAX)
SELECT @name = name SELECT @name = name
FROM sys.key_constraints FROM sys.key_constraints
@ -21,4 +30,5 @@ SELECT @sql = 'ALTER TABLE F9ERROR DROP CONSTRAINT ' + @name
EXEC sp_executeSQL @sql; EXEC sp_executeSQL @sql;
ALTER TABLE F9ERROR ADD CONSTRAINT F9ERROR_PK PRIMARY KEY(IDSOC, IDESTR, NUMREG); IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'F9ERROR' AND CONSTRAINT_NAME = 'F9ERROR_PK')
ALTER TABLE F9ERROR ADD CONSTRAINT F9ERROR_PK PRIMARY KEY(IDSOC, IDESTR, NUMREG);

View File

@ -497,7 +497,7 @@ void TPAR_mask::export_paf()
void TPAR_mask::print_reg() void TPAR_mask::print_reg()
{ {
TSheet_field& sht = sfield(F_REGS); TSheet_field& sht = sfield(F_REGS);
const TString &tipo_doc_sdi = get(F_TIPO_SDI); //const TString &tipo_doc_sdi = get(F_TIPO_SDI);
TReport_book book; TReport_book book;
//elab.set_cache_insert(true); //elab.set_cache_insert(true);
@ -513,12 +513,20 @@ void TPAR_mask::print_reg()
if (sht.get_bool_row_cell(r, S_SELECTED)) if (sht.get_bool_row_cell(r, S_SELECTED))
{ {
const long nreg = sht.get_long_row_cell(r, S_NUMREG); const long nreg = sht.get_long_row_cell(r, S_NUMREG);
TProgram_report mov_rep("fp0700a");
TProgram_report mov_rep;
const TString &td = sht.get_str_row_cell(r, S_TIPODOC);
if (td != "TD28")
mov_rep.load("fp0700a");
else
mov_rep.load("fp0700b");
TISAM_recordset * recset = (TISAM_recordset *)mov_rep.recordset(); TISAM_recordset * recset = (TISAM_recordset *)mov_rep.recordset();
const TRectype & mov = cache().get(LF_MOV, nreg); const TRectype & mov = cache().get(LF_MOV, nreg);
recset->set_var("#NUM", nreg, true); recset->set_var("#NUM", nreg, true);
recset->set_var("#TIPODOCSDI", tipo_doc_sdi, true); recset->set_var("#TIPODOCSDI", td, true);
const TCausale & caus = cached_causale(mov.get(MOV_CODCAUS), mov.get_int(MOV_ANNOES)); const TCausale & caus = cached_causale(mov.get(MOV_CODCAUS), mov.get_int(MOV_ANNOES));

147
src/fp/fp0700b.rep Normal file
View File

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="" page_merge="" save_printer="" name="fp0700b" use_printer_font="" orientation="" page_split="" lpi="6" command="" class="">
<font face="Arial" size="8" />
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="" hidden="" page_break="" can_break="" pattern="1">
<field x="3" y="2" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="16" codval="" id="" pattern="1" hide_zero="" text="">
<font face="Arial" bold="1" size="8" />
<source>"Codice fornitore: "</source>
</field>
<field x="19" y="2" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="30" codval="" id="" pattern="1" hide_zero="" text="">
<source>23.TIPO + 23.CODCF</source>
</field>
<field x="60" y="2" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="30" codval="" id="" pattern="1" hide_zero="" text="">
<source>"Partita IVA " + 20.STATOPAIV + 20.PAIV</source>
</field>
<field x="3" y="3" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="25" codval="" id="" pattern="1" hide_zero="" text="">
<font face="Arial" bold="1" size="8" />
<source>"Doc. originale fornitore: "</source>
</field>
<field x="24" y="3" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="44" codval="" id="" pattern="1" hide_zero="" text="">
<source>23.NUMDOC + " del " + 23.DATADOC</source>
</field>
<field x="60" y="3" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="50" codval="" id="" pattern="1" hide_zero="" text="">
<source>20.RAGSOC</source>
</field>
<field x="60" y="4" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="50" codval="" id="" pattern="1" hide_zero="" text="">
<source>20.INDCF + " n. " + 20.CIVCF</source>
</field>
<field x="3" y="5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="1" hide_zero="" text="">
<font face="Arial" bold="1" size="8" />
<source>"Tipo Documento "</source>
<alt_source>#TIPODOCSDI</alt_source>
</field>
<field x="18" y="5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="25" codval="" id="" pattern="1" hide_zero="" text="">
<source>CAUS.TIPODOCSDI</source>
<alt_source>#TIPODOCSDI</alt_source>
</field>
<field x="60" y="5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="1" hide_zero="" text="">
<source>20.CAPCF</source>
</field>
<field x="67" y="5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="40" codval="" id="" pattern="1" hide_zero="" text="">
<source>13.DENCOM + " " + 13.PROVCOM</source>
</field>
<field x="3" y="9" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="21" codval="" id="" pattern="1" hide_zero="" text="">
<font face="Arial" bold="1" size="8" />
<source>"Protocollo IVA credito: "</source>
</field>
<field x="23" y="9" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="40" codval="" id="" pattern="1" hide_zero="" text="">
<source>23.PROTIVA + " del " + 23.DATAREG + " Registro " + 23.REG</source>
</field>
<field x="60" y="9" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="19" codval="" id="" pattern="1" hide_zero="" text="">
<font face="Arial" bold="1" size="8" />
<source>"Documento fornitore:" </source>
</field>
<field x="79.5" y="9" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="41" codval="" id="" pattern="1" hide_zero="" text="">
<source>#NUMPREFIX + 23.NUMDOC + " del " + 23.DATADOC</source>
</field>
<field x="3" y="12" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="16" codval="" id="" pattern="1" hide_zero="" text="Totale Documento">
<font face="Arial" bold="1" size="8" />
</field>
<field x="16" y="12" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="16" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>23.TOTDOC</source>
</field>
<field x="17" y="14" deactivated="" type="Testo" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="1" hide_zero="" text="Totale">
<font face="Arial" bold="1" size="8" />
</field>
<field x="33" y="14" deactivated="" type="Testo" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="1" hide_zero="" text="Imponibile">
<font face="Arial" bold="1" size="8" />
</field>
<field x="49" y="14" deactivated="" type="Testo" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="1" hide_zero="" text="Imposta">
<font face="Arial" bold="1" size="8" />
</field>
<field x="68" y="14" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="Cod.">
<font face="Arial" bold="1" size="8" />
</field>
<field x="73" y="14" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="Nat.">
<font face="Arial" bold="1" size="8" />
</field>
<field x="79" y="14" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="1" hide_zero="" text="Conto">
<font face="Arial" bold="1" size="8" />
</field>
<field border="2" y="15" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="125" codval="" height="0" id="" pattern="1" hide_zero="" text="" />
</section>
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="1" hidden="" height="4" page_break="" can_break="" pattern="1">
<field x="11" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="90" codval="" height="3" id="" pattern="1" hide_zero="" text="PROSPETTO INTEGRAZIONE">
<font face="Arial" bold="1" size="20" />
</field>
<field x="11" y="2" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="90" codval="" height="3" id="" pattern="1" hide_zero="" text="ACQUISTO SANMARINO">
<font face="Arial" bold="1" size="20" />
</field>
</section>
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="" hidden="" page_break="" can_break="" pattern="1" />
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="1" hidden="" page_break="" can_break="" pattern="1">
<field x="68" y="0.5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="">
<source>CODIVA</source>
</field>
<field x="73" y="0.5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="">
<source>201@-&#3E;S12</source>
</field>
<field x="94.5" y="0.5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="1" shade_offset="" width="30" codval="" height="2" id="" pattern="1" hide_zero="" text="">
<source>19-&#3E;DESCR</source>
</field>
<field x="33" y="0.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="15" codval="" id="100" pattern="1" hide_zero="" text="###.###.###,@@">
<source>IMPONIBILE</source>
<postscript description="B1.100 POSTSCRIPT">#THIS @
#F1.100 +!</postscript>
</field>
<field x="49" y="0.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="15" codval="" id="101" pattern="1" hide_zero="" text="###.###.###,@@">
<source>IMPOSTA</source>
<postscript description="B1.101 POSTSCRIPT">#THIS @
#F1.101 +!</postscript>
</field>
<field x="17" y="0.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="15" codval="" id="102" pattern="1" hide_zero="" text="###.###.###,@@">
<source>#100+#101</source>
</field>
<field x="79.5" y="0.5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="3" codval="" id="103" pattern="1" hide_zero="" text="">
<source>GRUPPO</source>
</field>
<field x="83.5" y="0.5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="3" codval="" id="104" pattern="1" hide_zero="" text="">
<source>CONTO</source>
</field>
<field x="87.5" y="0.5" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="6" codval="" id="105" pattern="1" hide_zero="" text="">
<source>SOTTOCONTO</source>
</field>
</section>
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="" hidden="" page_break="" can_break="" pattern="1" />
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="1" hidden="" height="3" page_break="" can_break="" pattern="1">
<field border="1" y="0.25" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="125" codval="" height="0" id="" pattern="1" hide_zero="" text="" />
<field x="1" y="0.5" deactivated="" type="Testo" hidden="" link="" txt_color="#0000FF" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="1" hide_zero="" text="Totale Movimento">
<font face="Arial" bold="1" size="8" />
</field>
<field x="33" y="0.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="15" codval="" id="100" pattern="1" hide_zero="" text="###.###.###,@@" />
<field x="49" y="0.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="15" codval="" id="101" pattern="1" hide_zero="" text="###.###.###,@@" />
<field x="17" y="0.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="15" codval="" id="102" pattern="1" hide_zero="" text="###.###.###,@@">
<source>#100+#101</source>
</field>
</section>
<sql>USE RMOVIVA
JOIN MOV INTO NUMREG==NUMREG
JOIN MOV TO MOV ALIAS 100 INTO NUMREG==MOVCOLL
JOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF
JOIN COMUNI TO CLIFO INTO STATO==STATOCF COM==COMCF
JOIN PCON INTO GRUPPO==GRUPPO CONTO==CONTO SOTTOCONTO==SOTTOCONTO
JOIN %IVA ALIAS 201 INTO CODTAB==CODIVA
JOIN CAUS TO MOV INTO CODCAUS==CODCAUS
FROM NUMREG=#NUM
TO NUMREG=#NUM</sql>
</report>

View File

@ -24,6 +24,7 @@
#include <mov.h> #include <mov.h>
#include "../cg/cgsaldac.h" #include "../cg/cgsaldac.h"
#include <scadenze.h> #include <scadenze.h>
#include <utility.h>
bool set_connection(SSimple_query& s) bool set_connection(SSimple_query& s)
{ {
@ -64,7 +65,7 @@ bool run_fp_psw_mask()
m.field(101).check_type(CHECK_REQUIRED); m.field(101).check_type(CHECK_REQUIRED);
while (m.run() == K_ENTER) while (m.run() == K_ENTER)
{ {
if (m.get(101) == "sirioFATT99") // Hardcoded password are the best! if (m.get(101) == "sirioFATT99"||(is_power_station())) // Hardcoded password are the best!
return true; return true;
else else
return error_box("Password errata"); return error_box("Password errata");
@ -2098,7 +2099,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
{ {
paf1100f.set("PA_RIFNUMLINEA", 0L); paf1100f.set("PA_RIFNUMLINEA", 0L);
paf1100f.set("PA_IDDOC", con); paf1100f.set("PA_IDDOC", con);
paf1100f.set("PA_DATADOC", datadoc); paf1100f.set("PA_DATADOCU", datadoc);
paf1100f.set("PA_COMMCONVENZ", com); paf1100f.set("PA_COMMCONVENZ", com);
paf1100f.set("PA_CODCUP", cup); paf1100f.set("PA_CODCUP", cup);
paf1100f.set("PA_CODCIG", cig); paf1100f.set("PA_CODCIG", cig);
@ -3315,6 +3316,9 @@ bool TReg_fp::add_riepilogo_iva(const TMovimento_contabile & mov, int n_riga)
riepilogo_agg.imponibile += imponibile; riepilogo_agg.imponibile += imponibile;
riepilogo_agg.imposta += imposta; riepilogo_agg.imposta += imposta;
// Elimino l'oggetto
_riepilogo_agg.erase(cod_aliquota);
// Inserisco // Inserisco
return insert(paf2200f); return insert(paf2200f);
} }
@ -3329,7 +3333,7 @@ bool TReg_fp::export_paf0100f()
paf0100f.set("P1_TRASMITTCOD", _cofi); paf0100f.set("P1_TRASMITTCOD", _cofi);
paf0100f.set("P1_FMTTRASMISS", _privato ? "FPR12" : "FPA12"); paf0100f.set("P1_FMTTRASMISS", _privato ? "FPR12" : "FPA12");
if(_tipo_doc_sdi != "TD28") //if(_tipo_doc_sdi != "TD28")
paf0100f.set("P1_CODDEST", _coddest); paf0100f.set("P1_CODDEST", _coddest);
TString80 tel; TString80 tel;
@ -3418,7 +3422,17 @@ bool TReg_fp::reg_to_paf(const TMovimento_contabile& mov)
paf0200f.set("P2_FISCIVAPAESE", fornitore.stato_partita_IVA()); paf0200f.set("P2_FISCIVAPAESE", fornitore.stato_partita_IVA());
paf0200f.set("P2_FISCIVACOD", fornitore.partita_IVA()); paf0200f.set("P2_FISCIVACOD", fornitore.partita_IVA());
} }
if (fornitore.estero_non_CEE() && fornitore.stato_residenza_ISO() != "SM")
{
paf0200f.set("P2_FISCIVAPAESE", fornitore.stato_partita_IVA());
paf0200f.set("P2_FISCIVACOD", fornitore.codice_fiscale());
paf0200f.set("P2_CODFISCALE", "");
}
else
{
paf0200f.set("P2_CODFISCALE", fornitore.codice_fiscale()); paf0200f.set("P2_CODFISCALE", fornitore.codice_fiscale());
}
const bool df = _ditta.fisica(); const bool df = _ditta.fisica();
@ -3446,7 +3460,8 @@ bool TReg_fp::reg_to_paf(const TMovimento_contabile& mov)
// I clienti esteri possono avere CAP alfanumerici, li tolgo // I clienti esteri possono avere CAP alfanumerici, li tolgo
if (fornitore.stato_residenza_ISO() != "IT") if (fornitore.stato_residenza_ISO() != "IT")
{ {
paf0200f.set("P2_SEDECAP", "00000"); int i = 0;
//paf0200f.set("P2_SEDECAP", "0000");
} }
else else
{ {
@ -3659,7 +3674,7 @@ bool TReg_fp::reg_to_paf(const TMovimento_contabile& mov)
pafw300f.set("PW_TIPONUM", caus.reg().name()); //TODO COSA CI METTIAMO NEL TIPO NUM ava pafw300f.set("PW_TIPONUM", caus.reg().name()); //TODO COSA CI METTIAMO NEL TIPO NUM ava
pafw300f.set("PW_NUMERO", mov.get(MOV_NUMDOC)); pafw300f.set("PW_NUMERO", mov.get(MOV_NUMDOC));
pafw300f.set("PW_DATA", mov.get_date(MOV_DATADOC)); pafw300f.set("PW_DATA", mov.get_date(MOV_DATADOC));
pafw300f.set("PW_CDEST", _coddest); pafw300f.set("PW_CDEST", _coddest); //CHECKARE
pafw300f.set("PW_RAGSOC", fornitore.ragione_sociale().left(35)); pafw300f.set("PW_RAGSOC", fornitore.ragione_sociale().left(35));
pafw300f.set("PW_PAESE", fornitore.stato_residenza_ISO()); pafw300f.set("PW_PAESE", fornitore.stato_residenza_ISO());
pafw300f.set("PW_CODICE", fornitore.codice_fiscale_estero()); pafw300f.set("PW_CODICE", fornitore.codice_fiscale_estero());

View File

@ -30,10 +30,10 @@ private:
static bool universal_notifier(TSheet_field& f, int row, KEY k); static bool universal_notifier(TSheet_field& f, int row, KEY k);
protected: protected:
void set_handlers();
TField_event key2event(TMask_field& f, KEY key) const; TField_event key2event(TMask_field& f, KEY key) const;
public: public:
void set_handlers();
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) pure; virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) pure;
bool error_box(const char* fmt, ...); // No more f.error_box bool error_box(const char* fmt, ...); // No more f.error_box
void set_universal_handler(const short id) { set_handler(id, universal_handler);} void set_universal_handler(const short id) { set_handler(id, universal_handler);}

View File

@ -1675,6 +1675,8 @@ void TMask::set(
// @syntax set(short fld_id, long n, bool hit); // @syntax set(short fld_id, long n, bool hit);
{ {
TMask_field& f = field(fld_id); TMask_field& f = field(fld_id);
if (fld_id == 214)
int i = 0;
f.set(s); f.set(s);
if ((f.active() || f.ghost())) if ((f.active() || f.ghost()))
@ -3023,12 +3025,18 @@ void set_iban_fields(const char * iban, TMask & mask,
const bool italy = iso.blank() || (iso == "IT"); const bool italy = iso.blank() || (iso == "IT");
enable_iban_fields(mask, fldbban, fldbcin, fldabi, fldcab, fldcc, flddes, italy, pres); enable_iban_fields(mask, fldbban, fldbcin, fldabi, fldcab, fldcc, flddes, italy, pres);
if (iso.full() || mask.get(fldiso).blank())
mask.set(fldiso, iso); mask.set(fldiso, iso);
if (cin.full() || mask.get(fldcin).blank())
mask.set(fldcin, cin); mask.set(fldcin, cin);
if (fldbban > 0) if (fldbban > 0)
mask.set(fldbban, italy ? wiban.mid(4) : cc); mask.set(fldbban, italy ? wiban.mid(4) : cc);
if(bcin.full() || mask.get(fldbban).blank())
mask.set(fldbcin, bcin); mask.set(fldbcin, bcin);
if(abi.full() || mask.get(fldabi).blank())
mask.set(fldabi, abi); mask.set(fldabi, abi);
if(cab.full() || mask.get(fldcab).blank())
mask.set(fldcab, cab); mask.set(fldcab, cab);
if (cc.full() || mask.get(fldcc).blank())
mask.set(fldcc, italy ? cc : EMPTY_STRING); mask.set(fldcc, italy ? cc : EMPTY_STRING);
} }

View File

@ -198,7 +198,10 @@ long TPack_transfer::odbc_exec(const char* cmd)
TParagraph_string msg(cmd, 100); TParagraph_string msg(cmd, 100);
FOR_EACH_TOKEN(msg, str) FOR_EACH_TOKEN(msg, str)
log(str, 0); // Riporto tutta la query log(str, 0); // Riporto tutta la query
log_error(TR("ERRORE in esecuzione della query."));
msg.cut(0);
msg << TR("Errore n: ") << abs(err) << TR(" in esecuzione della query.");
log_error(msg);
} }
} }
else else

View File

@ -249,7 +249,7 @@ TObject* TCache_art::key2obj(const char* key)
conart.put(CONART_CATEGORIA, sotcat.left(2)); conart.put(CONART_CATEGORIA, sotcat.left(2));
conart.put(CONART_SOTTOCAT, sotcat.mid(2)); conart.put(CONART_SOTTOCAT, sotcat.mid(2));
conart.put(CONART_PESO, get_real_str("WeightETUnit")); conart.put(CONART_PESO, get_real_str("WeightETUnit"));
conart.write_rewrite(true); conart.write_rewrite();
} }
const long gruconto = get_long("AccountCode"); const long gruconto = get_long("AccountCode");
const long sottoconto = get_long("AccountSubCode"); const long sottoconto = get_long("AccountSubCode");