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
*.sln.iml
#special file
build/fastrip.exe
build/patchdef.exe
#exe folder
exe/

Binary file not shown.

View File

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

View File

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

Binary file not shown.

View File

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

View File

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

View File

@ -45,7 +45,7 @@
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\$(ProjectName)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<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>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
@ -110,7 +110,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<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>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -130,7 +130,7 @@
</ResourceCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>..\exe\tp0.exe</OutputFile>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>.\..\release/tp0.pdb</ProgramDatabaseFile>
@ -146,7 +146,8 @@
<OutputFile>.\..\release/tp0.bsc</OutputFile>
</Bscmake>
<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>
</ItemDefinitionGroup>
<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);
const TString & iban = cf.get_iban();
if (iban.full())
// if (iban.full())
set(F_IBAN, iban, 0x3);
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;
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:
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);
TString numdoc = mov.get(MOV_NUMDOCEXT);
if (numdoc.empty())
if (numdoc.blank())
numdoc = mov.get(MOV_NUMDOC);
// 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" <<
"(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n";
if (statopiva.full())
query << "' AND \n" << "P2_FISCIVAPAESE = '" << statopiva;
query << "' AND \n" << "P2_FISCIVACOD = '" << forn.get(CLI_PAIV);
query << " AND \n" << "P2_FISCIVAPAESE = '" << statopiva << "'";
query << " AND \n" << "P2_FISCIVACOD = '" << forn.get(CLI_PAIV) << "'";
if (forn.gruppo_IVA())
query << "' AND \n" "P2_COCAZZO = '" << forn.get(CLI_COFI); // cazzo;
query << "PQ_IMPTOTDOC = " << tot;
query << " AND \n" "P2_COCAZZO = '" << forn.get(CLI_COFI) << "'"; // cazzo;
query << " AND \n" "PQ_IMPTOTDOC = " << tot;
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");
}
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)
{
set_keys(keys);
@ -188,7 +199,7 @@ bool TFppro::associa_mov(const long numreg)
if (ok) // Scrivo sul movimento il riferimento al fppro
{
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());
ok = mov.rewrite() == NOERR;
}

View File

@ -59,6 +59,7 @@ public:
long get_numreg(TToken_string& keys);
long get_codforn();
TDate get_datareg();
TDate get_datadoc();
TDate get_datareg(TToken_string& keys);
real get_ritenute();
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())
{
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 bool stampato = mov.get_bool(MOV_REGST);
const TRegistro& reg = caus.reg();
const TipoIVA& iva = reg.iva();
TString numdoc = mov.get_string(MOV_NUMDOCEXT);
if (escluso)
int here = 0;
if (numdoc.empty())
numdoc = mov.get_string(MOV_NUMDOC);
// 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
////////////////////////////////////////////////////////
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 new_lvl = config_mask.get(CF_LVLNEW);
TString old_lvl = config_mask.get(CF_LVLOLD);
if(config_mask.get(CF_CODSOC).empty())
warning_box("Codice Ambiente vuoto. Impossibile salvare i dati.");
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();
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;
}
@ -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)
{
switch (o.dlg())
@ -452,7 +508,14 @@ void TMonitor_mask::open_win_estr()
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_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_groupbox (CF_ESTRGROUP, 0, "Opzioni estrazione", 1, 7, 69, 4, "");
m.add_boolean (CF_CARTEXP, 0, "Estrai anche documenti cartacei", 2, 8);
m.set_handler(DLG_OK, save_conf_handler);
m.add_groupbox (CF_LVLGROUP, 0, "Livello Patch Tabelle F9", 1, 11, 69, 4, "");
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_ADDRDOC, F9CONF.get_addr_doc());
m.set(CF_ADDRDOCLOC, F9CONF.get_addr_doc_loc());
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
@ -558,6 +629,7 @@ void TControllo_mask::conferma_esclusi() const
query << "UPDATE " F9_ERR " SET ESCLUSO = 'Si' WHERE " ERR_CODSOC " = '" << _cod_soc << "' AND IDESTR = '" <<
_id_estr << "' AND NUMREG = '" << nreg << "';";
fp_db().sq_set_exec(query);
fp_db().sq_commit();
}
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 = '" <<
_id_estr << "' AND NUMREG = '" << nreg << "';";
fp_db().sq_set_exec(query);
fp_db().sq_commit();
}
}
}
@ -628,10 +701,7 @@ void TControllo_mask::fill_fppro_sheet() const
TString query;
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" <<
"CASE\n" <<
"WHEN PZ_CLIFOR <> '' THEN CAST(PZ_CLIFOR AS NUMERIC(10, 0))\n" <<
"WHEN PZ_CLIFOR = '' THEN 0\n" <<
"END AS FORNITORE, " <<
"PZ_CLIFOR AS FORNITORE, " <<
"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 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;
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 << "'";
fp_db().sq_set_exec(query, false);
@ -1026,18 +1097,21 @@ void TApri_estr_msk::fill_res() const
sf.reset();
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 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_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_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_RNUMDOC, mov.get(MOV_NUMDOC), row); // Num doc
sf.set_row_cell(F_RIMPTOTDOC, mov.get_real(MOV_TOTDOC), row); // Tot doc
sf.set_row_cell(F_RFORN, mov.get_int(MOV_CODCF), row); // Clifo
sf.set_row_cell(F_RNUMDOC, mov.get(MOV_NUMDOC), row); // Num doc
sf.set_row_cell(F_RIMPTOTDOC, mov.get_real(MOV_TOTDOC), row); // Tot doc
sf.set_row_cell(F_RFORN, mov.get_int(MOV_CODCF), row); // Clifo
TToken_string key(mov.get(MOV_TIPO));
@ -1462,6 +1536,9 @@ bool TF9_app::check_tab_version() const
int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2;
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
{
if (ok &= aggiorna_tab_f9(version + 2))

View File

@ -74,7 +74,10 @@ class TMonitor_mask : public TAutomask
TApri_estr_msk _inclusi_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.'
@ -84,10 +87,10 @@ class TMonitor_mask : public TAutomask
void controllo_errori() const;
static void delete_estr_fld(const TString& idestr);
void delete_pack(bool all = false) const;
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
static void open_win_estr();
static void open_win_conf();
void open_win_conf();
void sel() const;
public:
@ -98,6 +101,19 @@ public:
~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
{
TArray _controllo_mov; // Usare import_error_list().

View File

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

View File

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

View File

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

View File

@ -638,6 +638,8 @@ bool TEstrazione::insert_into_f9movestr() const
TProgress_monitor prog(_movs.size(), "Salvataggio informazioni estrazione", false);
//QUI ANDRA' CONTROLLATO IL PAFW300
FOR_EACH_ARRAY_ITEM(_movs, r, obj)
{
if(prog.add_status())
@ -798,6 +800,7 @@ const char* TEstrazione::diagnostica_mov()
TMovimento_estr & mov_i = (TMovimento_estr &)*obj;
// Se gia' escluso passo avanti
if (!mov_i.estratto() && mov_i.descr_estr() == mov_escluso)
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_TIPOCF, mov.get_char(MOV_TIPO));
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_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));
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
{
TToken_string key(mov.get((MOV_KEYFPPRO)), ';');

View File

@ -1,10 +1,28 @@
IF NOT EXISTS(SELECT 1 FROM sys.columns
WHERE Name = N'F9IURIC'
AND Object_ID = Object_ID(N'F9IVA00K'))
BEGIN
ALTER TABLE F9IVA00K ADD F9IDDES CHAR(30) NOT NULL DEFAULT '',
F9ITPRT CHAR(2) NOT NULL DEFAULT '',
F9IAPRT NUMERIC(4,0) NOT NULL DEFAULT 0,
F9INPRT NUMERIC(10,0) NOT NULL DEFAULT 0,
F9IURIC DATETIME NOT NULL DEFAULT getdate()
END;
IF NOT EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'F9IDDES' AND Object_ID = Object_ID(N'F9IVA00K'))
ALTER TABLE F9IVA00K ADD F9IDDES CHAR(30) NOT NULL DEFAULT ''
ELSE
SELECT 1 AS EXIST;
IF NOT EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'F9ITPRT' AND Object_ID = Object_ID(N'F9IVA00K'))
ALTER TABLE F9IVA00K ADD F9ITPRT CHAR(2) NOT NULL DEFAULT ''
ELSE
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')
ALTER TABLE F9DRT00K ADD F9TFCEE CHAR(6) NOT NULL DEFAULT '';
CREATE TABLE F9MOVESTR(
IDSOC CHAR(10) NOT NULL,
IDESTR CHAR(18) NOT NULL,
NUMREG NUMERIC(7,0) NOT NULL,
DATAREG DATE,
ESTRATTO BIT DEFAULT '0' NOT NULL,
DESCR_ERR VARCHAR(1024)
);
ALTER TABLE F9MOVESTR ADD CONSTRAINT F9MOVESTR_PK PRIMARY KEY(IDSOC, IDESTR, NUMREG);
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9MOVESTR')
CREATE TABLE F9MOVESTR(
IDSOC CHAR(10) NOT NULL,
IDESTR CHAR(18) NOT NULL,
NUMREG NUMERIC(7,0) NOT NULL,
DATAREG DATE,
ESTRATTO BIT DEFAULT '0' NOT NULL,
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);
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)
SELECT @name = name
FROM sys.key_constraints
@ -21,4 +30,5 @@ SELECT @sql = 'ALTER TABLE F9ERROR DROP CONSTRAINT ' + @name
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()
{
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;
//elab.set_cache_insert(true);
@ -513,12 +513,20 @@ void TPAR_mask::print_reg()
if (sht.get_bool_row_cell(r, S_SELECTED))
{
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();
const TRectype & mov = cache().get(LF_MOV, nreg);
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));

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 "../cg/cgsaldac.h"
#include <scadenze.h>
#include <utility.h>
bool set_connection(SSimple_query& s)
{
@ -64,7 +65,7 @@ bool run_fp_psw_mask()
m.field(101).check_type(CHECK_REQUIRED);
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;
else
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_IDDOC", con);
paf1100f.set("PA_DATADOC", datadoc);
paf1100f.set("PA_DATADOCU", datadoc);
paf1100f.set("PA_COMMCONVENZ", com);
paf1100f.set("PA_CODCUP", cup);
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.imposta += imposta;
// Elimino l'oggetto
_riepilogo_agg.erase(cod_aliquota);
// Inserisco
return insert(paf2200f);
}
@ -3329,8 +3333,8 @@ bool TReg_fp::export_paf0100f()
paf0100f.set("P1_TRASMITTCOD", _cofi);
paf0100f.set("P1_FMTTRASMISS", _privato ? "FPR12" : "FPA12");
if(_tipo_doc_sdi != "TD28")
paf0100f.set("P1_CODDEST", _coddest);
//if(_tipo_doc_sdi != "TD28")
paf0100f.set("P1_CODDEST", _coddest);
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_FISCIVACOD", fornitore.partita_IVA());
}
paf0200f.set("P2_CODFISCALE", fornitore.codice_fiscale());
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());
}
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
if (fornitore.stato_residenza_ISO() != "IT")
{
paf0200f.set("P2_SEDECAP", "00000");
int i = 0;
//paf0200f.set("P2_SEDECAP", "0000");
}
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_NUMERO", mov.get(MOV_NUMDOC));
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_PAESE", fornitore.stato_residenza_ISO());
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);
protected:
void set_handlers();
TField_event key2event(TMask_field& f, KEY key) const;
public:
void set_handlers();
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
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);
{
TMask_field& f = field(fld_id);
if (fld_id == 214)
int i = 0;
f.set(s);
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");
enable_iban_fields(mask, fldbban, fldbcin, fldabi, fldcab, fldcc, flddes, italy, pres);
mask.set(fldiso, iso);
mask.set(fldcin, cin);
if (iso.full() || mask.get(fldiso).blank())
mask.set(fldiso, iso);
if (cin.full() || mask.get(fldcin).blank())
mask.set(fldcin, cin);
if (fldbban > 0)
mask.set(fldbban, italy ? wiban.mid(4) : cc);
mask.set(fldbcin, bcin);
mask.set(fldabi, abi);
mask.set(fldcab, cab);
mask.set(fldcc, italy ? cc : EMPTY_STRING);
if(bcin.full() || mask.get(fldbban).blank())
mask.set(fldbcin, bcin);
if(abi.full() || mask.get(fldabi).blank())
mask.set(fldabi, abi);
if(cab.full() || mask.get(fldcab).blank())
mask.set(fldcab, cab);
if (cc.full() || mask.get(fldcc).blank())
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);
FOR_EACH_TOKEN(msg, str)
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

View File

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