Merge remote-tracking branch 'origin/R_10_00' into R_10_00

This commit is contained in:
Mattia Tollari 2019-07-04 17:31:32 +02:00
commit f7ec6614b7
31 changed files with 645 additions and 340 deletions

View File

@ -70,7 +70,6 @@
<AssemblerListingLocation>.\..\debug/</AssemblerListingLocation> <AssemblerListingLocation>.\..\debug/</AssemblerListingLocation>
<ObjectFileName>.\..\debug/</ObjectFileName> <ObjectFileName>.\..\debug/</ObjectFileName>
<ProgramDataBaseFileName>.\..\debug/</ProgramDataBaseFileName> <ProgramDataBaseFileName>.\..\debug/</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
@ -123,7 +122,7 @@
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0410</Culture> <Culture>0x0410</Culture>
<AdditionalIncludeDirectories>..\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\libraries\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>

View File

@ -74,7 +74,7 @@
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0410</Culture> <Culture>0x0410</Culture>
<AdditionalIncludeDirectories>..\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\libraries\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
@ -113,7 +113,6 @@
<AssemblerListingLocation>.\..\debug/</AssemblerListingLocation> <AssemblerListingLocation>.\..\debug/</AssemblerListingLocation>
<ObjectFileName>.\..\debug/</ObjectFileName> <ObjectFileName>.\..\debug/</ObjectFileName>
<ProgramDataBaseFileName>.\..\debug/</ProgramDataBaseFileName> <ProgramDataBaseFileName>.\..\debug/</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

View File

@ -74,7 +74,7 @@
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0410</Culture> <Culture>0x0410</Culture>
<AdditionalIncludeDirectories>..\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\libraries\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
@ -113,7 +113,6 @@
<AssemblerListingLocation>.\..\debug/</AssemblerListingLocation> <AssemblerListingLocation>.\..\debug/</AssemblerListingLocation>
<ObjectFileName>.\..\debug/</ObjectFileName> <ObjectFileName>.\..\debug/</ObjectFileName>
<ProgramDataBaseFileName>.\..\debug/</ProgramDataBaseFileName> <ProgramDataBaseFileName>.\..\debug/</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

View File

@ -74,7 +74,7 @@
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0410</Culture> <Culture>0x0410</Culture>
<AdditionalIncludeDirectories>..\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\libraries\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
@ -113,7 +113,6 @@
<AssemblerListingLocation>.\..\debug/</AssemblerListingLocation> <AssemblerListingLocation>.\..\debug/</AssemblerListingLocation>
<ObjectFileName>.\..\debug/</ObjectFileName> <ObjectFileName>.\..\debug/</ObjectFileName>
<ProgramDataBaseFileName>.\..\debug/</ProgramDataBaseFileName> <ProgramDataBaseFileName>.\..\debug/</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

View File

@ -68,7 +68,6 @@
<PreprocessorDefinitions>_DEBUG;WIN32;__LONGDOUBLE__;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;WIN32;__LONGDOUBLE__;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
@ -107,7 +106,7 @@
</Midl> </Midl>
<ClCompile> <ClCompile>
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>..\src\include;..\src\xvaga;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\src\include;..\src\xvaga;..\src\xvtdb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -119,7 +118,7 @@
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0410</Culture> <Culture>0x0410</Culture>
<AdditionalIncludeDirectories>..\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\libraries\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>

View File

@ -76,7 +76,7 @@
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0410</Culture> <Culture>0x0410</Culture>
<AdditionalIncludeDirectories>..\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\libraries\wx28X\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
@ -111,7 +111,6 @@
<PreprocessorDefinitions>_DEBUG;WIN32;__LONGDOUBLE__;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;WIN32;__LONGDOUBLE__;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

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

@ -0,0 +1,6 @@
cg2.exe
cg2100c.msk
Issue #15
Aggiunto tipo provvisorio "B" Bilancio costi/ricavi (Prima nota, Stampa Bilancio, Apertura Chiusura conti)
Reso sempre attivo il campo provvisorio

96
cd/test/cg0850a.ini Normal file
View File

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

BIN
cd/test/cg0850a1.zip Normal file

Binary file not shown.

8
cd/test/cg0852.txt Normal file
View File

@ -0,0 +1,8 @@
cg2.exe
cg2100t.msk
Modificati bottoni maschera fatture SDI
Corretto riporta codice fornitore se non e' valorizzato
Aggiunto scollegamento movimento da FPPRO
Riporta dati numdoc e datadoc anche col collega (per quelli che non hanno f1)
Corretto salvataggio quando si riregistra lo stesso movimento

96
cd/test/cg0852a.ini Normal file
View File

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

BIN
cd/test/cg0852a1.zip Normal file

Binary file not shown.

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

@ -0,0 +1,5 @@
fp0.exe
fp0400a.msk
Corretto controllo righe vuote IVA
Aggiunto filtro sul fornitore

20
cd/test/fp0852a.ini Normal file
View File

@ -0,0 +1,20 @@
[Main]
Demo=0
[fp1]
File(0) = fp0.exe|X
File(4) = fp0400a.msk|X
Patch = 0852
Versione = 21511200
[fp]
Data = 04-07-2019
Descrizione = Fattura Elettronica
Dischi = 1
Moduli = cg,ve
OEM =
Patch = 852
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/fp0852a1.zip Normal file

Binary file not shown.

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

@ -0,0 +1,3 @@
tc8.exe
In Esportazione PayLine aggiunta scrittura ultimi due campi a vuoto sotto richiesta

26
cd/test/tc0848a.ini Normal file
View File

@ -0,0 +1,26 @@
[Main]
Demo=0
[tc8]
File(59) = tc8.exe|X
Patch = 0848
Versione = 21511200
[tc99]
Kill(0) = tctstabm.txt|x
Kill(1) = tsricl.txt|x
Kill(2) = tstab.txt|x
[tc]
Data = 03-07-2019
Descrizione = Trasferimento ad altre Contabilità
Dischi = 1
Moduli = cg
OEM =
Patch = 848
PostProcess =
PreProcess =
Prezzo(1) =
Prezzo(2) =
Versione = 21511200

BIN
cd/test/tc0848a1.zip Normal file

Binary file not shown.

View File

@ -131,11 +131,17 @@ TMask* TPrimanota_application::load_mask(int n)
if (m->find_by_id(F_COLFPPRO) != NULL) if (m->find_by_id(F_COLFPPRO) != NULL)
m->hide(F_COLFPPRO); m->hide(F_COLFPPRO);
if (m->find_by_id(DLG_LINK) != NULL) if (m->find_by_id(DLG_LINK) != NULL)
{
m->disable(DLG_LINK); m->disable(DLG_LINK);
m->disable(DLG_EDIT);
}
} }
else else
if (m->find_by_id(DLG_LINK) != NULL) if (m->find_by_id(DLG_LINK) != NULL)
{
m->set_handler(DLG_LINK, fppro_mask); m->set_handler(DLG_LINK, fppro_mask);
m->set_handler(DLG_EDIT, scollega_handler);
}
if (_quadratura) if (_quadratura)
m->set_handler(F_ADJUST_IVA, quadratura_handler); m->set_handler(F_ADJUST_IVA, quadratura_handler);
@ -363,7 +369,7 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
cgm.enable(DLG_USER, show_games); cgm.enable(DLG_USER, show_games);
if (iva == nessuna_iva) if (iva == nessuna_iva)
{ {
m->enable(F_PROVVISORIO, !_is_saldaconto); // Il saldaconto vieta i movimenti provvisori // m->enable(F_PROVVISORIO, !_is_saldaconto); // Il saldaconto vieta i movimenti provvisori
m->show(SK_TIPORIGA, is_pagamento()); // Abilita scelta tipo riga m->show(SK_TIPORIGA, is_pagamento()); // Abilita scelta tipo riga
m->enable(SK_TIPORIGA); m->enable(SK_TIPORIGA);
activate_numrif(*m, false); activate_numrif(*m, false);
@ -1261,7 +1267,7 @@ int TPrimanota_application::read(TMask& m)
TBill c; c.get(r); TBill c; c.get(r);
c.add_to(riga, 4, 0x7); // Conto 105-110 c.add_to(riga, 4, 0x7); // Conto 105-110
riga.add(r.get(RMI_NAVP)); riga.add(r.get(RMI_NAVP), cid2index(IVA_NOTAVARECF));
} }
calcola_imp(); // Calcola totale imponibile ed imposte calcola_imp(); // Calcola totale imponibile ed imposte
@ -1540,7 +1546,7 @@ int TPrimanota_application::controlli_f1(const TMask& m){
if (data_operazione < dataoraric) if (data_operazione < dataoraric)
return pro_dataric_err; return pro_dataric_err;
const int numreg = fppro_db().set_keys(keys).get_numregcont(); const int numreg = fppro_db().set_keys(keys).get_numregcont();
if (numreg != 0) if (numreg != 0 && numreg != m.get_int(F_NUMREG))
{ {
const TDate data_documento(m.get(F_DATADOC)); const TDate data_documento(m.get(F_DATADOC));
TString msg; msg << "Attenzione il documento " << data_documento.year() << " / " << m.get(F_NUMDOCEXT) << TString msg; msg << "Attenzione il documento " << data_documento.year() << " / " << m.get(F_NUMDOCEXT) <<
@ -1750,7 +1756,7 @@ void TPrimanota_application::clean_fppro()
// Controlli: solo in mod modifica; che abbia fp-f1 (no F8); che non sono in salvataggio // Controlli: solo in mod modifica; che abbia fp-f1 (no F8); che non sono in salvataggio
if (_mode != MODE_MOD if (_mode != MODE_MOD
|| !has_f1_db(&msk) || !has_f1_db(&msk)
|| last_key != K_DEL && last_key != K_SAVE && last_key != K_ELIMMAS && last_key != K_QUIT) || last_key != K_DEL && last_key != K_SAVE && last_key != K_ELIMMAS && last_key != K_QUIT && !scollega())
return; return;
const TString& numreg = msk.get(F_NUMREG); const TString& numreg = msk.get(F_NUMREG);
@ -2582,7 +2588,7 @@ int TPrimanota_application::save_fppro()
{ {
message_box(TString("Attenzione!") << " E' stato modificato un movimento già collegato a un documento in ingresso."); message_box(TString("Attenzione!") << " E' stato modificato un movimento già collegato a un documento in ingresso.");
clean_fppro(); // Pulisco db clean_fppro(); // Pulisco db
save_dbmov(true); // Svuoto riferimento doc ingresso sul mov save_dbmov(true); // Svuoto riferimento doc ingresso sul mov e proseguo col regolare salvataggio
} }
} }
else return pro_notsaved; // In altre modalita' esco senza fare nulla sul db else return pro_notsaved; // In altre modalita' esco senza fare nulla sul db

View File

@ -10,6 +10,13 @@ BEGIN
MODULE FP MODULE FP
END END
BUTTON DLG_EDIT 2 2
BEGIN
PROMPT 3 1 "Scollega F.E."
PICTURE TOOL_CANCEL
MODULE FP
END
BUTTON DLG_NULL 2 2 BUTTON DLG_NULL 2 2
BEGIN BEGIN
PROMPT 1 1 "" PROMPT 1 1 ""
@ -177,7 +184,6 @@ BEGIN
ITEM "N|Si (Non cancellabile)" ITEM "N|Si (Non cancellabile)"
ITEM "B|Si (Bilancio costi/ricavi)" ITEM "B|Si (Bilancio costi/ricavi)"
ITEM "C|Si (Cespiti)" ITEM "C|Si (Cespiti)"
FLAGS "DG"
END END
STRING F_DESCAGG 5 6 STRING F_DESCAGG 5 6

View File

@ -10,13 +10,14 @@ END
BUTTON DLG_OK 2 2 BUTTON DLG_OK 2 2
BEGIN BEGIN
PROMPT 2 1 "Riporta Documento" PROMPT 2 1 "Contabilizzaz."
PICTURE TOOL_EXPORT
MODULE F1 MODULE F1
END END
BUTTON DLG_LINK 2 2 BUTTON DLG_LINK 2 2
BEGIN BEGIN
PROMPT 3 1 "Collega Documento" PROMPT 3 1 "Collega in Prima nota"
PICTURE TOOL_LINK PICTURE TOOL_LINK
END END
@ -33,31 +34,81 @@ PAGE "Fatture Ricevute SDI" -1 -1 77 20
NUMBER F_CODCLIFORS 6 NUMBER F_CODCLIFORS 6
BEGIN BEGIN
PROMPT 1 1 "Codice fornitore" PROMPT 0 1 "Fornitore"
FIELD CODCF
GROUP 1
USE LF_CLIFO
INPUT TIPOCF "F"
INPUT CODCF F_CODCLIFORS
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Codice Fiscale@16" COFI
OUTPUT F_CODCLIFORS CODCF
OUTPUT F_STATOPAIVS STATOPAIV
OUTPUT F_PIVAS PAIV
OUTPUT F_COFIS COFI
OUTPUT F_RAGSOCS RAGSOC
CHECKTYPE REQUIRED
ADD RUN cg0 -1
FLAGS "D" FLAGS "D"
END END
STRING F_COFIS 16 STRING F_RAGSOCS 50
BEGIN BEGIN
PROMPT 35 1 "Cod. Fiscale " PROMPT 20 1 ""
INPUT TIPOCF "F"
INPUT RAGSOC F_RAGSOCCF
FLAGS "D" FLAGS "D"
END END
STRING F_STATOPAIVS 2 STRING F_STATOPAIVS 2
BEGIN BEGIN
PROMPT 1 2 "P. IVA" PROMPT 0 2 "P. IVA"
USE %SCE
INPUT CODTAB F_STATOPAIVS
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATOPAIVS CODTAB
CHECKTYPE NORMAL
FLAGS "D" FLAGS "D"
END END
STRING F_PIVAS 12 STRING F_PIVAS 12
BEGIN BEGIN
PROMPT 15 2 "" PROMPT 15 2 ""
GROUP 1
USE LF_CLIFO KEY 5
INPUT TIPOCF "F"
INPUT STATOPAIV F_STATOPAIVS
INPUT PAIV F_PIVAS
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Codice" CODCF
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Codice Fiscale@16" COFI
COPY OUTPUT F_CODCLIFORS
CHECKTYPE NORMAL
ADD RUN cg0 -1
FLAGS "D" FLAGS "D"
END END
STRING F_RAGSOCS 50 STRING F_COFIS 16
BEGIN BEGIN
PROMPT 0 3 "Rag. Soc." PROMPT 35 2 "Cod. Fiscale "
GROUP 1
USE LF_CLIFO KEY 4
INPUT TIPOCF "F"
INPUT COFI F_COFIS
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Codice" CODCF
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Partita IVA@12" PAIV
COPY OUTPUT F_CODCLIFORS
CHECKTYPE NORMAL
ADD RUN cg0 -1
FLAGS "D" FLAGS "D"
END END

View File

@ -3917,12 +3917,38 @@ bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const shared_ptr
void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk) void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
{ {
bool ok = false;
TLocalisamfile clifo(LF_CLIFO); TLocalisamfile clifo(LF_CLIFO);
clifo.setkey(5); TToken_string keys(msk->get_fpprokeys(), ';');
clifo.put(CLI_TIPOCF, "F"); TString codforn = TFppro(keys).get_codforn();
clifo.put(CLI_PAIV, msk->get_piva()); if (codforn.empty())
clifo.read(); codforn = msk->get_codforn();
if (clifo.get(CLI_PAIV) == msk->get_piva()) if (codforn.empty())
{
clifo.setkey(5);
clifo.put(CLI_TIPOCF, "F");
clifo.put(CLI_PAIV, msk->get_piva());
clifo.read();
ok = clifo.get(CLI_PAIV) == msk->get_piva();
if(!ok)
{
clifo.zero();
clifo.setkey(5);
clifo.put(CLI_TIPOCF, "F");
clifo.put(CLI_PAIV, msk->get_piva());
clifo.put(CLI_STATOPAIV, "IT");
clifo.read();
}
}
else
{
clifo.setkey(1);
clifo.put(CLI_TIPOCF, "F");
clifo.put(CLI_CODCF, codforn);
clifo.read();
}
ok = clifo.get(CLI_PAIV) == msk->get_piva();
if (ok && (cg_msk.get(F_CODCLIFOR).empty() || cg_msk.get(F_CODCLIFOR) != codforn))
{ {
cg_msk.set(F_CODCLIFOR, clifo.get(CLI_CODCF)); cg_msk.set(F_CODCLIFOR, clifo.get(CLI_CODCF));
cg_msk.set(F_RAGSOCCF, clifo.get(CLI_RAGSOC)); cg_msk.set(F_RAGSOCCF, clifo.get(CLI_RAGSOC));
@ -3953,16 +3979,26 @@ void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptr<TPro_msk
void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk) void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
{ {
cg_msk.set(F_NUMDOCEXT, msk->get_numdoc()); const bool bring = msk->should_bring_back();
cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7)); if (bring)
cg_msk.set(F_DATADOC, msk->get_datadoc()); {
if (!cg_msk.get(F_CODCLIFOR).full() && msk->get_numdoc().full()) if (msk->get_numdoc().full() && cg_msk.get(F_CODCLIFOR).empty())
write_clifo(cg_msk, msk); write_clifo(cg_msk, msk);
write_righe_iva_f1(cg_msk, msk); write_righe_iva_f1(cg_msk, msk);
set_totale(cg_msk, msk); set_totale(cg_msk, msk);
cg_msk.set(FS_RECALC, ""); cg_msk.disable(FS_RDIFFER); cg_msk.disable(FS_MCOMM); cg_msk.disable(FS_NRATE); cg_msk.set(FS_RECALC, ""); cg_msk.disable(FS_RDIFFER); cg_msk.disable(FS_MCOMM); cg_msk.disable(FS_NRATE);
if(write_scad_f1(cg_msk, msk)) if (write_scad_f1(cg_msk, msk))
app().set_scad_f1(cg_msk); app().set_scad_f1(cg_msk);
}
// Li riporto anche con il collega in prima nota, e in quel caso solo se i campi non sono gia valorizzati
if (bring || cg_msk.get(F_NUMDOC).empty())
{
cg_msk.set(F_NUMDOCEXT, msk->get_numdoc());
cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7));
}
if (bring || cg_msk.get(F_DATADOC).empty())
cg_msk.set(F_DATADOC, msk->get_datadoc());
} }
bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key) bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
@ -3984,12 +4020,7 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
msk->run(); msk->run();
// Riporto dati FPPRO su maschera Prima Nota (solo se hai F1) // Riporto dati FPPRO su maschera Prima Nota (solo se hai F1)
// Se non hai F1 collego senza riportarti i dati (solo le chiavi db) // Se non hai F1 collego senza riportarti i dati (solo le chiavi db)
if (msk->should_bring_back()) riporta_dati_f1(cg_msk, msk);
{
riporta_dati_f1(cg_msk, msk);
//TConfig ini("cg2CONTAB0001.ini");
//app().ini2mask(ini, cg_msk, false);
}
cg_msk.set(F_PROKEY, msk->get_fpprokeys()); cg_msk.set(F_PROKEY, msk->get_fpprokeys());
is_collegato(cg_msk.field(F_COLFPPRO)); is_collegato(cg_msk.field(F_COLFPPRO));
cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA)); cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA));
@ -3998,6 +4029,35 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
return true; return true;
} }
bool TPrimanota_application::scollega(const bool set)
{
static bool scollega = false;
if (set)
return scollega = true;
const bool last = scollega;
scollega = false;
return last;
}
bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key)
{
TMask& cg_msk = f.mask();
if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS)))
return true;
if (cg_msk.get_bool(F_COLFPPRO))
{
scollega(true);
app().clean_fppro();
const bool ok = app().save_dbmov(true);
if (ok)
{
app().curr_mask().set(F_PROKEY, "");
app().curr_mask().set(F_COLFPPRO, "");
}
message_box("Il movimento e' stato scollegato dalla fattura elettronica\nin ingresso, precedentemente associata.");
}
}
bool TPrimanota_application::is_collegato(TMask_field& f) bool TPrimanota_application::is_collegato(TMask_field& f)
{ {
TMask& cg_msk = f.mask(); TMask& cg_msk = f.mask();
@ -4099,7 +4159,7 @@ bool TPro_msk::riporta_handler(TMask_field& f, KEY k)
//TProtocollo protocollo(TDate(row->get(2)).year(), row->get(9), row->get(10)); //TProtocollo protocollo(TDate(row->get(2)).year(), row->get(9), row->get(10));
app()._pro_mask->set_doc(row->get(cid2index(F_NUMEROS)), row->get(cid2index(F_DATAS)), app()._pro_mask->set_doc(row->get(cid2index(F_NUMEROS)), row->get(cid2index(F_DATAS)),
row->get(cid2index(F_IMPTOTDOCS)), row->get(cid2index(F_RITENUTE)), "", row->get(cid2index(F_KEYFPPROS)), row->get(cid2index(F_IMPTOTDOCS)), row->get(cid2index(F_RITENUTE)), "", row->get(cid2index(F_KEYFPPROS)),
row->get(cid2index(F_FISCIVACODS))); msk.get(F_CODCLIFORS), row->get(cid2index(F_FISCIVACODS)));
if (f.dlg() == DLG_OK) if (f.dlg() == DLG_OK)
app()._pro_mask->_riporta = true; app()._pro_mask->_riporta = true;
else else
@ -4219,7 +4279,7 @@ void TPro_msk::set_scadenze(const char* fpprokeys)
} }
} }
void TPro_msk::set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* piva) void TPro_msk::set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* codforn, const char* piva)
{ {
_numero = numero; _numero = numero;
_datadoc = datadoc; _datadoc = datadoc;
@ -4227,6 +4287,7 @@ void TPro_msk::set_doc(const char* numero, const char* datadoc, const char* totd
_ritenute = ritenute; _ritenute = ritenute;
_protfppro.sset(protfppro); _protfppro.sset(protfppro);
_fpprokeys = fpprokeys; _fpprokeys = fpprokeys;
_codforn = codforn;
_piva = piva; _piva = piva;
set_righeiva(fpprokeys); set_righeiva(fpprokeys);
set_scadenze(fpprokeys); set_scadenze(fpprokeys);
@ -4336,7 +4397,7 @@ void TPro_msk::abilita_piva(TMask* msk)
} }
} }
TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false) TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false), _codforn("")
{ {
TMask::set_handler(DLG_CONFIG, fppro_handler); TMask::set_handler(DLG_CONFIG, fppro_handler);
TMask::set_handler(DLG_OK, riporta_handler); TMask::set_handler(DLG_OK, riporta_handler);

View File

@ -194,6 +194,7 @@ class TPrimanota_application : public TRelation_application
// Handlers per aggancio FPPRO // Handlers per aggancio FPPRO
// Bottone per maschera FPPRO // Bottone per maschera FPPRO
static bool fppro_mask(TMask_field& f, KEY key); static bool fppro_mask(TMask_field& f, KEY key);
static bool scollega_handler(TMask_field& f, KEY key);
static bool is_collegato(TMask_field& f); static bool is_collegato(TMask_field& f);
static void fppromask_set_handl(TMask* msk); static void fppromask_set_handl(TMask* msk);
static void load_list(TMask* msk, KEY k); static void load_list(TMask* msk, KEY k);
@ -224,6 +225,7 @@ protected: // TApplication
int save_fppro(); int save_fppro();
// Salva sul movimento il riferimento al documento in FPPRO (keys) // Salva sul movimento il riferimento al documento in FPPRO (keys)
bool save_dbmov(bool clean = false) const; bool save_dbmov(bool clean = false) const;
static bool scollega(bool set = false);
// Pulisce il mov e db dai firerimenti FPPRO (in MODE_MOD per edit/delete) // Pulisce il mov e db dai firerimenti FPPRO (in MODE_MOD per edit/delete)
void clean_fppro(); void clean_fppro();
// setta variabili prima del controllo has_f1_db // setta variabili prima del controllo has_f1_db
@ -418,6 +420,7 @@ private:
TProtocollo _protfppro; TProtocollo _protfppro;
TString _fpprokeys; TString _fpprokeys;
TString _piva; TString _piva;
TString _codforn;
vector<riga_iva_s> _righe_iva; vector<riga_iva_s> _righe_iva;
vector<scadenza_s> _scadenze; vector<scadenza_s> _scadenze;
bool _riporta; bool _riporta;
@ -449,7 +452,7 @@ public:
void set_righeiva(const char* fpprokeys); void set_righeiva(const char* fpprokeys);
void set_scadenze(const char* fpprokeys); void set_scadenze(const char* fpprokeys);
void set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* piva); void set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* codforn, const char* piva);
TString get_numdoc() const { return _numero; } TString get_numdoc() const { return _numero; }
TDate get_datadoc() const { return _datadoc; } TDate get_datadoc() const { return _datadoc; }
@ -457,6 +460,7 @@ public:
real get_ritenute() { return _ritenute; } real get_ritenute() { return _ritenute; }
TProtocollo& get_protocollo() { return _protfppro; } TProtocollo& get_protocollo() { return _protfppro; }
TString get_fpprokeys() const { return _fpprokeys; } TString get_fpprokeys() const { return _fpprokeys; }
TString get_codforn() const { return _codforn; }
TString get_piva() const { return _piva; } TString get_piva() const { return _piva; }
const vector<riga_iva_s>& get_righeiva() { return _righe_iva; } const vector<riga_iva_s>& get_righeiva() { return _righe_iva; }
@ -464,6 +468,7 @@ public:
void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura); void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura);
void add_scad(const TDate& date, const real& importo); void add_scad(const TDate& date, const real& importo);
bool should_bring_back() const { return _riporta; } bool should_bring_back() const { return _riporta; }
static TString& query_fppro(const TString& codforn, const TString& date); static TString& query_fppro(const TString& codforn, const TString& date);
static TString& query_fppro(const TString& stato_piva, const TString& piva, const TString& date); static TString& query_fppro(const TString& stato_piva, const TString& piva, const TString& date);

View File

@ -395,9 +395,9 @@ const TCausale & TCache_causale::caus(const char* key, const int anno)
return (const TCausale &) *objptr(k); return (const TCausale &) *objptr(k);
} }
const TCausale & cached_causale(const char * codcaus, int anno) const TCausale & cached_causale(const char * codcaus, int year)
{ {
HIDDEN TCache_causale __cache_causale; HIDDEN TCache_causale __cache_causale;
return __cache_causale.caus(codcaus, anno); return __cache_causale.caus(codcaus, year);
} }

View File

@ -82,7 +82,7 @@ public:
virtual ~TCausale() {} virtual ~TCausale() {}
}; };
const TCausale & cached_causale(const char * codcaus, const int year); const TCausale & cached_causale(const char * codcaus, const int year = 0);
// Fatture // Fatture
#define RIGA_IVA_DETRAIBILE 3 #define RIGA_IVA_DETRAIBILE 3

View File

@ -1,251 +0,0 @@
#include "cg2100.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_CONFIG 2 2
BEGIN
PROMPT 1 1 "Ricarica Fatture"
PICTURE TOOL_CONVERT
END
BUTTON DLG_OK 2 2
BEGIN
PROMPT 2 1 "Riporta Documento"
MODULE F1
END
BUTTON DLG_LINK 2 2
BEGIN
PROMPT 3 1 "Collega Documento"
PICTURE TOOL_LINK
END
BUTTON DLG_QUIT 2 2
BEGIN
PROMPT 4 1 "Fine"
PICTURE TOOL_QUIT
END
ENDPAGE
PAGE "Fatture Ricevute SDI" -1 -1 77 20
NUMBER F_CODCLIFORS 6
BEGIN
PROMPT 1 1 "Codice fornitore"
FLAGS "D"
END
STRING F_COFIS 16
BEGIN
PROMPT 35 1 "Cod. Fiscale "
FLAGS "D"
END
STRING F_STATOPAIVS 2
BEGIN
PROMPT 1 2 "P. IVA"
FLAGS "D"
END
STRING F_PIVAS 12
BEGIN
PROMPT 15 2 ""
FLAGS "D"
END
STRING F_RAGSOCS 50
BEGIN
PROMPT 0 3 "Rag. Soc."
FLAGS "D"
END
BOOLEAN F_ENABSEARCH
BEGIN
PROMPT 0 4 "Effettua ricerca per P.IVA/Disabilita ricerca per cod. Fornitore"
END
BOOLEAN F_ENABDATE
BEGIN
PROMPT 0 5 "Abilita filtro per data"
END
DATE F_DATESEARCH
BEGIN
PROMPT 35 5 "Data documento"
FLAGS "H"
END
TEXT F_SHEET_TEXT
BEGIN
PROMPT 0 6 "@BSelezionare la fattura, quindi premere 'Collega Documento'"
END
BOOLEAN F_SHOWALL
BEGIN
PROMPT 0 7 "Mostra anche fatture già registrate"
END
SPREADSHEET F_SHEETFPPROS 0 15
BEGIN
PROMPT 0 8 ""
ITEM " "
ITEM "Tipo Doc@5"
ITEM "Data\nRicezione@8"
ITEM "Data\nDoc.@8"
ITEM "Totale\nDocumento@7"
ITEM "Ritenute\nfiscali@6"
ITEM "Numero@14"
ITEM "Ragione sociale@40"
ITEM "Paese@4"
ITEM "P. IVA@10"
ITEM "Cod. Fiscale@14"
ITEM "Tipo Protocollo\nin ingresso@10"
ITEM "Progressivo\ndi ingresso@10"
ITEM "Chiave FPPRO@40"
END
STRING F_NUMEROI 20
BEGIN
PROMPT 1 20 "NUMERO"
FLAGS "H"
END
DATE F_DATAI
BEGIN
PROMPT 1 21 "DATA"
FLAGS "H"
END
NUMBER F_TOTDOCI 10 3
BEGIN
PROMPT 1 22 "IMPTOTDOC"
FLAGS "H"
END
STRING F_PROTFPPROI 18
BEGIN
PROMPT 1 23 "Tipo Protocollo"
FLAGS "H"
END
STRING F_FPPROKEYSI 80
BEGIN
PROMPT 1 19 "db key"
HELP "Chiave database"
FLAGS "H"
END
ENDPAGE
ENDMASK
PAGE "ELEMENTI SPREADSHEET" -1 -1 77 20
BOOLEAN F_SELFPPROS
BEGIN
PROMPT 1 0 "Selected"
FLAGS ""
END
STRING F_TIPODOCS 4
BEGIN
PROMPT 10 0 "TIPODOC"
FLAGS "D"
END
DATE F_DATAS
BEGIN
PROMPT 1 1 "DATA"
FLAGS "D"
END
DATE F_DATAORARICS
BEGIN
PROMPT 1 2 "DATAORARIC"
FLAGS "D"
END
NUMBER F_IMPTOTDOCS 10 3
BEGIN
PROMPT 1 3 "IMPTOTDOC"
FLAGS "D"
END
NUMBER F_RITENUTE 10 3
BEGIN
PROMPT 1 4 "Ritenute d'acconto"
FLAGS "D"
END
STRING F_NUMEROS 20
BEGIN
PROMPT 1 5 "NUMERO"
FLAGS "D"
END
STRING F_RAGXML 50
BEGIN
PROMPT 1 8 ""
FLAGS "D"
HELP "Ragione sociale scritta nell'xml"
END
STRING F_FISCIVAPAESES 2
BEGIN
PROMPT 1 6 "FISCIVAPAESE"
FLAGS "D"
END
STRING F_FISCIVACODS 16
BEGIN
PROMPT 1 7 "FISCIVACOD"
FLAGS "D"
END
STRING F_CODFISCALES 16
BEGIN
PROMPT 1 8 "CODFISCALE"
FLAGS "D"
END
STRING F_TIPOPROTS 2
BEGIN
PROMPT 1 9 "TIPOPROT"
FLAGS "D"
END
NUMBER F_PROGRESSS 10 0
BEGIN
PROMPT 1 10 "PROGRESS"
FLAGS "D"
END
STRING F_KEYFPPROS 80
BEGIN
PROMPT 1 11 "CHIAVE FPPRO"
FLAGS "D"
END
ENDPAGE
TOOLBAR "Documento" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT 1 1 ""
END
BUTTON DLG_USER 2 2
BEGIN
PROMPT 1 1 "Collega"
PICTURE TOOL_LINK
END
BUTTON DLG_CANCEL 2 2
BEGIN
PROMPT 1 1 ""
END
ENDPAGE
ENDMASK

View File

@ -88,6 +88,14 @@ int TFppro::get_numreg(TToken_string& keys)
return get_numreg(); return get_numreg();
} }
TString TFppro::get_codforn() const
{
TString query;
query << "SELECT PZ_CLIFOR FROM FPPRO00F\n" << where_str();
_db->sq_set_exec(query);
return _db->sq_get("PZ_CLIFOR");
}
TDate TFppro::get_datareg() TDate TFppro::get_datareg()
{ {
if (!_is_set) if (!_is_set)
@ -312,18 +320,18 @@ void set_periodprec(bool flag)
bool check_causale(const TString& cod_caus, bool acq) bool check_causale(const TString& cod_caus, bool acq)
{ {
return return cod_caus.full() && (
check_causale(cod_caus, "FA", acq) || check_causale(cod_caus, "FA", acq) ||
check_causale(cod_caus, "BD", acq) || check_causale(cod_caus, "BD", acq) ||
check_causale(cod_caus, "AF", acq) || check_causale(cod_caus, "AF", acq) ||
check_causale(cod_caus, "FF", acq) || check_causale(cod_caus, "FF", acq) ||
check_causale(cod_caus, "NC", acq) || check_causale(cod_caus, "NC", acq) ||
check_causale(cod_caus, "ND", acq); check_causale(cod_caus, "ND", acq));
} }
bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq) bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq)
{ {
const TCausale caus(cod_caus); const TCausale& caus = cached_causale(cod_caus);
if(tipo_doc == "FA" || tipo_doc == "BD" || tipo_doc == "AF" || tipo_doc == "FF") if(tipo_doc == "FA" || tipo_doc == "BD" || tipo_doc == "AF" || tipo_doc == "FF")
return caus.tipo_doc() == tipo_doc; return caus.tipo_doc() == tipo_doc;

View File

@ -50,6 +50,7 @@ public:
void get_keys_fppro(); void get_keys_fppro();
int get_numreg(); int get_numreg();
int get_numreg(TToken_string& keys); int get_numreg(TToken_string& keys);
TString get_codforn() const;
TDate get_datareg(); TDate get_datareg();
TDate get_datareg(TToken_string& keys); TDate get_datareg(TToken_string& keys);
real get_ritenute() const; real get_ritenute() const;

View File

@ -57,6 +57,7 @@ protected:
std::map<TString, TForn_err> _list_fatt_err; std::map<TString, TForn_err> _list_fatt_err;
static bool clifo_handler(TMask_field& f, KEY key);
void set_filter_changed(); void set_filter_changed();
void select_all(int sheet_field); void select_all(int sheet_field);
@ -100,6 +101,45 @@ public:
TPassive_mask(bool f1); TPassive_mask(bool f1);
}; };
bool TPassive_mask::clifo_handler(TMask_field& f, KEY key)
{
if (key == K_TAB && f.active())
{
TMask& m = f.mask();
const TString4 cf = "F";
const long codice = atol(f.get());
if (codice == 0)
{
m.show(F_STATOPAIV); // Stato partita IVA
m.show(F_PARIVA); // Partita IVA
m.show(F_CODFISC); // Codice Fiscale
return true;
}
TRelation cliforel(LF_CLIFO); cliforel.add(LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF");
TRectype& clifo = cliforel.curr();
clifo.put(CLI_TIPOCF, cf);
clifo.put(CLI_CODCF, codice);
cliforel.read();
const bool occas = clifo.get_bool(CLI_OCCAS);
m.show(F_STATOPAIV, !occas); // Stato partita IVA
if (!occas) {
m.set(F_RAGSOC, clifo.get(CLI_RAGSOC));
m.set(F_STATOPAIV, clifo.get(CLI_STATOPAIV));
m.set(F_PARIVA, clifo.get(CLI_PAIV));
m.set(F_CODFISC, clifo.get(CLI_COFI));
}
m.show(F_PARIVA, !occas); // Partita IVA
m.show(F_CODFISC, !occas); // Codice Fiscale
}
return true;
}
void TPassive_mask::set_filter_changed() void TPassive_mask::set_filter_changed()
{ {
_filter_changed = true; _filter_changed = true;
@ -220,7 +260,7 @@ vector<TPassive_mask::iva>& TPassive_mask::get_righe_iva(TToken_string& keys)
{ {
TString imponibile = fp_db().sq_get("IMPONIBILE"); TString imponibile = fp_db().sq_get("IMPONIBILE");
TString imposta = fp_db().sq_get("IMPOSTA"); TString imposta = fp_db().sq_get("IMPOSTA");
if (imponibile.full() || imposta.full()) if (imponibile != "0" || imposta != "0")
riva.insert(riva.end(), { real(imponibile), real(imposta), real(fp_db().sq_get("ALIQUOTA")), fp_db().sq_get("NATURA") }); riva.insert(riva.end(), { real(imponibile), real(imposta), real(fp_db().sq_get("ALIQUOTA")), fp_db().sq_get("NATURA") });
} }
return riva; return riva;
@ -243,7 +283,6 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
const TString& paa_codfisc = fp_db().sq_get("COD_FISC"); const TString& paa_codfisc = fp_db().sq_get("COD_FISC");
const TString& paa_piva = fp_db().sq_get("P_IVA"); const TString& paa_piva = fp_db().sq_get("P_IVA");
const TString& paa_codpaese = fp_db().sq_get("COD_PAESE"); const TString& paa_codpaese = fp_db().sq_get("COD_PAESE");
const TString& paa_codsdi = fp_db().sq_get("COD_SDI");
const TDate& dataregcont = fp_db().sq_get_date("DATAREGCONT"); const TDate& dataregcont = fp_db().sq_get_date("DATAREGCONT");
const TString& filter_elab = get_fattsel(); const TString& filter_elab = get_fattsel();
const bool is_contab = dataregcont != TDate("20010101"); const bool is_contab = dataregcont != TDate("20010101");
@ -254,6 +293,10 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
clifo.put(CLI_TIPOCF, 'F'); clifo.put(CLI_TIPOCF, 'F');
const int forn_code = find_fornitore(clifo); const int forn_code = find_fornitore(clifo);
// Se abilitato il flag di ricerca per fornitore controllo che il codice sia giusto
if (get_bool(F_ENABLEFORN) && (forn_code < 0 || clifo.get_int(CLI_CODCF) != get_int(F_FORNITORE)))
return;
const bool data_range = dataregcont >= TDate(get(F_DATAINIREG)) && dataregcont <= TDate(get(F_DATAENDREG)); const bool data_range = dataregcont >= TDate(get(F_DATAINIREG)) && dataregcont <= TDate(get(F_DATAENDREG));
if( filter_elab.blank() && forn_code != 0 // Filtro sui non associati if( filter_elab.blank() && forn_code != 0 // Filtro sui non associati
|| filter_elab == FILTER_ASS && forn_code == 0 && !is_contab // Filtro sui associati e non contab. || filter_elab == FILTER_ASS && forn_code == 0 && !is_contab // Filtro sui associati e non contab.
@ -1023,6 +1066,15 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll
if (e == fe_init) if (e == fe_init)
o.set(get_periodprec()? "X" : ""); o.set(get_periodprec()? "X" : "");
break; break;
case F_ENABLEFORN:
if(e == fe_modify)
{
bool en = o.get() == "X";
field(F_FORNITORE).enable(en);
field(F_RAGSOC).enable(en);
field(F_PARIVA).enable(en);
field(F_CODFISC).enable(en);
}
default: break; default: break;
} }
if (o.dlg() >= F_ASSOC && o.dlg() <= F_CONTABIL) if (o.dlg() >= F_ASSOC && o.dlg() <= F_CONTABIL)
@ -1061,6 +1113,7 @@ TPassive_mask::TPassive_mask(bool f1) : TAutomask("fp0400a"), _f1(f1), _filter_c
{ {
_tmp_dir = _tmp_dir.tempdir(); _tmp_dir = _tmp_dir.tempdir();
TMask::set_handler(F_CAUSFA, causfa_handler); TMask::set_handler(F_CAUSFA, causfa_handler);
TMask::set_handler(F_FORNITORE, clifo_handler);
} }

View File

@ -13,6 +13,13 @@
#define F_GROUPCON2 512 #define F_GROUPCON2 512
#define F_PERIODPREC 513 #define F_PERIODPREC 513
#define F_GROUPCAU 514 #define F_GROUPCAU 514
#define F_ENABLEFORN 515
#define F_FORNITORE 516
#define F_RAGSOC 517
#define F_STATOPAIV 518
#define F_PARIVA 519
#define F_CODFISC 520
#define END_MASK 599 #define END_MASK 599
#define F_PROT 401 #define F_PROT 401

View File

@ -65,20 +65,147 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
RADIOBUTTON F_FATTORD 20 20
BEGIN
PROMPT 56 1 "Ordinamento fatture per "
ITEM "|Data Ricezione"
ITEM "D|Data Documento"
FLAGS ""
END
RADIOBUTTON F_VERSOORD 20 20
BEGIN
PROMPT 56 5 "Ordinamento:"
ITEM "|Decrescente"
ITEM "C|Crescente"
FLAGS ""
END
GROUPBOX DLG_NULL 55 6
BEGIN
PROMPT 0 5 "@BFiltro fornitore"
END
BOOLEAN F_ENABLEFORN
BEGIN
PROMPT 1 6 "Abilita"
END
NUMBER F_FORNITORE 6
BEGIN
PROMPT 17 6 "Codice fornitore "
FIELD CODCF
FLAGS "GRD"
KEY 1
USE LF_CLIFO
INPUT TIPOCF "F" SELECT
INPUT CODCF F_FORNITORE
DISPLAY "Codice@6R" CODCF
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Partita IVA@11" PAIV
OUTPUT F_FORNITORE CODCF
OUTPUT F_RAGSOC RAGSOC
OUTPUT F_STATOPAIV STATOPAIV
OUTPUT F_PARIVA PAIV
OUTPUT F_CODFISC COFI
ADD RUN cg0 -1 F F_FORNITORE
HELP "Codice relativo al cliente o fornitore"
MESSAGE COPY,2@
END
STRING F_RAGSOC 50
BEGIN
PROMPT 1 7 ""
KEY 2
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
INPUT RAGSOC F_RAGSOC
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Codice@R" CODCF
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Partita IVA@11" PAIV
COPY OUTPUT F_FORNITORE
HELP "Prima parte della ragione sociale o cognome"
MESSAGE COPY,3@
WARNING "Manca la ragione sociale"
FLAGS "D"
END
STRING F_STATOPAIV 2
BEGIN
PROMPT 1 8 ""
HELP "Codice ISO dello stato"
FLAGS "U"
USE %SCE
INPUT CODTAB F_STATOPAIV
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATOPAIV CODTAB
CHECKTYPE NORMAL
FLAGS "D"
END
STRING F_PARIVA 50 20
BEGIN
PROMPT 10 8 "P. IVA"
KEY 5
USE LF_CLIFO KEY 5
INPUT TIPOCF "F"
INPUT STATOPAIV F_STATOPAIV
INPUT PAIV F_PARIVA
DISPLAY "ISO@3" STATOPAIV
DISPLAY "Partita IVA@11" PAIV
DISPLAY "Sospeso" SOSPESO
DISPLAY "Codice@R" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
COPY OUTPUT F_FORNITORE
HELP "Partita IVA del cliente/fornitore"
FLAGS "D"
END
STRING F_CODFISC 50 20
BEGIN
PROMPT 1 9 "Cod. Fisc."
FLAGS "U"
KEY 4
USE LF_CLIFO KEY 4
INPUT TIPOCF "F"
INPUT COFI F_CODFISC
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Sospeso" SOSPESO
DISPLAY "Codice@R" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Partita IVA@11" PAIV
COPY OUTPUT F_FORNITORE
HELP "Codice fiscale del cliente/fornitore"
FLAGS "D"
END
SPREADSHEET F_PROT 25 4
BEGIN
PROMPT 0 11 "Selezionare o aggiungere un filtro sul Tipo Progressivo"
ITEM "@1"
ITEM "Codice\nProtocol.@12"
END
GROUPBOX F_GROUPCON 32 5 GROUPBOX F_GROUPCON 32 5
BEGIN BEGIN
PROMPT 0 10 "@BContabilita'" PROMPT 0 16 "@BContabilita'"
END END
BOOLEAN F_CONTABIL BOOLEAN F_CONTABIL
BEGIN BEGIN
PROMPT 1 11 "Mostra solo doc. registrati" PROMPT 1 17 "Mostra solo doc. registrati"
MODULE F1 MODULE F1
END END
DATE F_DATAINIREG DATE F_DATAINIREG
BEGIN BEGIN
PROMPT 1 12 "Data iniziale" PROMPT 1 18 "Data iniziale"
VALIDATE DATE_CMP_FUNC <= F_DATAENDREG VALIDATE DATE_CMP_FUNC <= F_DATAENDREG
WARNING "La data iniziale non puo' essere superiore della data iniziale" WARNING "La data iniziale non puo' essere superiore della data iniziale"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
@ -87,44 +214,21 @@ END
DATE F_DATAENDREG DATE F_DATAENDREG
BEGIN BEGIN
PROMPT 1 13 "Data finale " PROMPT 1 19 "Data finale "
VALIDATE DATE_CMP_FUNC >= F_DATAINIREG VALIDATE DATE_CMP_FUNC >= F_DATAINIREG
WARNING "La data finale non puo' essere minore della data iniziale" WARNING "La data finale non puo' essere minore della data iniziale"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MODULE F1 MODULE F1
END END
RADIOBUTTON F_FATTORD 20 20
BEGIN
PROMPT 52 1 "Ordinamento fatture per "
ITEM "|Data Ricezione"
ITEM "D|Data Documento"
FLAGS ""
END
RADIOBUTTON F_VERSOORD 20 20
BEGIN
PROMPT 52 5 "Ordinamento:"
ITEM "|Decrescente"
ITEM "C|Crescente"
FLAGS ""
END
SPREADSHEET F_PROT 25 4
BEGIN
PROMPT 0 5 "Selezionare o aggiungere un filtro sul Tipo Progressivo"
ITEM "@1"
ITEM "Codice\nProtocol.@12"
END
GROUPBOX F_GROUPCON2 59 3 GROUPBOX F_GROUPCON2 59 3
BEGIN BEGIN
PROMPT 33 10 "@BContabilizzazione automatica:" PROMPT 33 16 "@BContabilizzazione automatica:"
END END
BOOLEAN F_PERIODPREC BOOLEAN F_PERIODPREC
BEGIN BEGIN
PROMPT 34 11 "Selezione automatica liquid. periodo precedente" PROMPT 34 17 "Selezione automatica liquid. periodo precedente"
MODULE F1 MODULE F1
END END