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,6 +1,7 @@
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 '';
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9MOVESTR')
CREATE TABLE F9MOVESTR( CREATE TABLE F9MOVESTR(
IDSOC CHAR(10) NOT NULL, IDSOC CHAR(10) NOT NULL,
IDESTR CHAR(18) NOT NULL, IDESTR CHAR(18) NOT NULL,
@ -8,10 +9,18 @@ CREATE TABLE F9MOVESTR(
DATAREG DATE, DATAREG DATE,
ESTRATTO BIT DEFAULT '0' NOT NULL, ESTRATTO BIT DEFAULT '0' NOT NULL,
DESCR_ERR VARCHAR(1024) DESCR_ERR VARCHAR(1024)
); )
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); 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;
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); 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");