Merge branch 'R12.00.1136' of http://10.65.20.33/sirio/CAMPO/campo into R12.00.1136
This commit is contained in:
commit
890394ea0a
3
cd/test/ba1140.txt
Normal file
3
cd/test/ba1140.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
ba8.exe
|
||||||
|
|
||||||
|
L'esecuzione delle query non mostrava più la maschera di selezione
|
31
cd/test/ba1140a.ini
Normal file
31
cd/test/ba1140a.ini
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
[Main]
|
||||||
|
Demo=0
|
||||||
|
|
||||||
|
[ba8]
|
||||||
|
File(510) = ba8.exe|X
|
||||||
|
Patch = 1140
|
||||||
|
Versione = 21511200
|
||||||
|
|
||||||
|
[ba99]
|
||||||
|
Kill(0) = batbsce.txt|x
|
||||||
|
Kill(1) = wxmsw240.dll|x
|
||||||
|
Kill(2) = bastcms.rep|x
|
||||||
|
Kill(3) = bastcms.msk|x
|
||||||
|
Kill(4) = bastfsc.msk|x
|
||||||
|
Kill(5) = bastfsc.rep|x
|
||||||
|
Kill(6) = bastuue.msk|x
|
||||||
|
Kill(7) = bastuue.rep|x
|
||||||
|
|
||||||
|
[ba]
|
||||||
|
Data = 11-04-2022
|
||||||
|
Descrizione = Base
|
||||||
|
Dischi = 1
|
||||||
|
Moduli = sy
|
||||||
|
OEM =
|
||||||
|
Patch = 1140
|
||||||
|
PostProcess = bainst -0 BA
|
||||||
|
PreProcess =
|
||||||
|
Prezzo(1) =
|
||||||
|
Prezzo(2) =
|
||||||
|
Versione = 21511200
|
||||||
|
|
BIN
cd/test/ba1140a1.zip
Normal file
BIN
cd/test/ba1140a1.zip
Normal file
Binary file not shown.
5
cd/test/cg1140.txt
Normal file
5
cd/test/cg1140.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
cg2100c.msk
|
||||||
|
cg2100t.msk
|
||||||
|
cg2.exe
|
||||||
|
|
||||||
|
Nelle fatture intra l'identificativo SDI viene recuperato da FPPRO e scritto sulla fattura di acquisto e sulla regolarizzazione
|
100
cd/test/cg1140a.ini
Normal file
100
cd/test/cg1140a.ini
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
[Main]
|
||||||
|
Demo=0
|
||||||
|
|
||||||
|
[cg2]
|
||||||
|
File(51) = cg2.exe|X
|
||||||
|
File(54) = cg2100c.msk|X
|
||||||
|
File(62) = cg2100t.msk|X
|
||||||
|
Patch = 1140
|
||||||
|
Versione = 21511200
|
||||||
|
|
||||||
|
[cg99]
|
||||||
|
Kill(0) = bastesc.rep|x
|
||||||
|
Kill(1) = bastcam.msk|x
|
||||||
|
Kill(2) = bastivd.msk|x
|
||||||
|
Kill(3) = bastscc.rep|x
|
||||||
|
Kill(4) = bastcam.rep|x
|
||||||
|
Kill(5) = batbcve.msk|x
|
||||||
|
Kill(6) = batbndo.msk|x
|
||||||
|
Kill(7) = bastmsp.msk|x
|
||||||
|
Kill(8) = bastivd.rep|x
|
||||||
|
Kill(9) = bastarb.msk|x
|
||||||
|
Kill(10) = batbdel.msk|x
|
||||||
|
Kill(11) = cgtbcon.msk|x
|
||||||
|
Kill(12) = bastzon.msk|x
|
||||||
|
Kill(13) = bastcco.msk|x
|
||||||
|
Kill(14) = bastleg.msk|x
|
||||||
|
Kill(15) = bastreg.rep|x
|
||||||
|
Kill(16) = batbleg.msk|x
|
||||||
|
Kill(17) = cg2fppro.msk|x
|
||||||
|
Kill(18) = bastpdb.rep|x
|
||||||
|
Kill(19) = bastdpn.rep|x
|
||||||
|
Kill(20) = batbind.msk|x
|
||||||
|
Kill(21) = bastzon.rep|x
|
||||||
|
Kill(22) = bastesc.msk|x
|
||||||
|
Kill(23) = batbzon.msk|x
|
||||||
|
Kill(24) = bastpdb.msk|x
|
||||||
|
Kill(25) = batbpdb.msk|x
|
||||||
|
Kill(26) = batbreg.msk|x
|
||||||
|
Kill(27) = batbarb.msk|x
|
||||||
|
Kill(28) = batbnot.msk|x
|
||||||
|
Kill(29) = bastarb.rep|x
|
||||||
|
Kill(30) = bastvet.msk|x
|
||||||
|
Kill(31) = batblbu.msk|x
|
||||||
|
Kill(32) = batbinl.msk|x
|
||||||
|
Kill(33) = bastpor.msk|x
|
||||||
|
Kill(34) = batbdpn.msk|x
|
||||||
|
Kill(35) = bastpor.rep|x
|
||||||
|
Kill(36) = bastndo.rep|x
|
||||||
|
Kill(37) = bastcfi.rep|x
|
||||||
|
Kill(38) = bastcve.rep|x
|
||||||
|
Kill(39) = bastver.rep|x
|
||||||
|
Kill(40) = bastcco.rep|x
|
||||||
|
Kill(41) = bastntb.msk|x
|
||||||
|
Kill(42) = bastleg.rep|x
|
||||||
|
Kill(43) = batbcam.msk|x
|
||||||
|
Kill(44) = batbivd.msk|x
|
||||||
|
Kill(45) = bastnot.msk|x
|
||||||
|
Kill(46) = batblia.msk|x
|
||||||
|
Kill(47) = batbcco.msk|x
|
||||||
|
Kill(48) = bastreg.msk|x
|
||||||
|
Kill(49) = bastndo.msk|x
|
||||||
|
Kill(50) = bastscc.msk|x
|
||||||
|
Kill(51) = batbmsp.msk|x
|
||||||
|
Kill(52) = bastvet.rep|x
|
||||||
|
Kill(53) = batbntb.msk|x
|
||||||
|
Kill(54) = batbtit.msk|x
|
||||||
|
Kill(55) = batbesc.msk|x
|
||||||
|
Kill(56) = bastntb.rep|x
|
||||||
|
Kill(57) = bastver.msk|x
|
||||||
|
Kill(58) = batblia.msk|x
|
||||||
|
Kill(59) = bastmsp.rep|x
|
||||||
|
Kill(60) = batbpor.msk|x
|
||||||
|
Kill(61) = bastcfi.msk|x
|
||||||
|
Kill(62) = batbscc.msk|x
|
||||||
|
Kill(63) = batbins.msk|x
|
||||||
|
Kill(64) = bastdpn.msk|x
|
||||||
|
Kill(65) = bastnot.rep|x
|
||||||
|
Kill(66) = batbver.msk|x
|
||||||
|
Kill(67) = bastcve.msk|x
|
||||||
|
Kill(68) = batbvet.msk|x
|
||||||
|
Kill(69) = batbtra.msk|x
|
||||||
|
Kill(70) = batbcfi.msk|x
|
||||||
|
|
||||||
|
[cg]
|
||||||
|
Data = 21-04-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 = 1140
|
||||||
|
PostProcess = bainst -0 CG
|
||||||
|
PreProcess =
|
||||||
|
Prezzo(1) =
|
||||||
|
Prezzo(2) =
|
||||||
|
Versione = 21511200
|
||||||
|
|
BIN
cd/test/cg1140a1.zip
Normal file
BIN
cd/test/cg1140a1.zip
Normal file
Binary file not shown.
3
cd/test/ci1140.txt
Normal file
3
cd/test/ci1140.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
ci1.exe
|
||||||
|
|
||||||
|
Corretta indicazione ore di assenza
|
21
cd/test/ci1140a.ini
Normal file
21
cd/test/ci1140a.ini
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
[Main]
|
||||||
|
Demo=0
|
||||||
|
|
||||||
|
[ci1]
|
||||||
|
File(7) = ci1.exe|X
|
||||||
|
Patch = 1140
|
||||||
|
Versione = 21511200
|
||||||
|
|
||||||
|
[ci]
|
||||||
|
Data = 03-05-2022
|
||||||
|
Descrizione = Contabilita' Industriale
|
||||||
|
Dischi = 1
|
||||||
|
Moduli = ve
|
||||||
|
OEM =
|
||||||
|
Patch = 1140
|
||||||
|
PostProcess =
|
||||||
|
PreProcess =
|
||||||
|
Prezzo(1) =
|
||||||
|
Prezzo(2) =
|
||||||
|
Versione = 21511200
|
||||||
|
|
BIN
cd/test/ci1140a1.zip
Normal file
BIN
cd/test/ci1140a1.zip
Normal file
Binary file not shown.
@ -1,6 +1,9 @@
|
|||||||
lv0600a.rep
|
lv0600a.rep
|
||||||
lv3.exe
|
lv3.exe
|
||||||
lv0.exe
|
lv0.exe
|
||||||
|
verig21.ini
|
||||||
|
verig23.ini
|
||||||
|
verig24.ini
|
||||||
|
|
||||||
Rifatta patch lv3 a seguito di una segnalazione del cliente "Servizi&Lavoro" sul mal funzionamento del programma "Buoni di Consegna" (lv3 - 0).
|
Rifatta patch lv3 a seguito di una segnalazione del cliente "Servizi&Lavoro" sul mal funzionamento del programma "Buoni di Consegna" (lv3 - 0).
|
||||||
In pratica i valori di "Ritiro" "Consegna" "Dotazione" restitiuivano risultati sballati.
|
In pratica i valori di "Ritiro" "Consegna" "Dotazione" restitiuivano risultati sballati.
|
||||||
|
@ -5,6 +5,9 @@ Demo=0
|
|||||||
Edit_168 = lv0 -3
|
Edit_168 = lv0 -3
|
||||||
File(0) = lv0.exe|X
|
File(0) = lv0.exe|X
|
||||||
File(29) = lv0600a.rep|X
|
File(29) = lv0600a.rep|X
|
||||||
|
File(104) = verig21.ini|X
|
||||||
|
File(106) = verig22.ini|X
|
||||||
|
File(108) = verig24.ini|X
|
||||||
Patch = 1138
|
Patch = 1138
|
||||||
Versione = 21511200
|
Versione = 21511200
|
||||||
|
|
||||||
|
Binary file not shown.
@ -1486,7 +1486,7 @@ bool TSQL_recordset_app::create()
|
|||||||
{
|
{
|
||||||
if (!has_module(RSAUT))
|
if (!has_module(RSAUT))
|
||||||
return error_box(TR("Modulo non autorizzato"));
|
return error_box(TR("Modulo non autorizzato"));
|
||||||
|
xvt_vobj_show(TASK_WIN);
|
||||||
_msk = new TQuery_mask;
|
_msk = new TQuery_mask;
|
||||||
xvt_sys_sleep(500); // Lasciamo il tempo di leggere il titolo
|
xvt_sys_sleep(500); // Lasciamo il tempo di leggere il titolo
|
||||||
|
|
||||||
|
@ -50,6 +50,8 @@ public:
|
|||||||
TString4 _causale_originale;
|
TString4 _causale_originale;
|
||||||
TipoIVA _iva_originale;
|
TipoIVA _iva_originale;
|
||||||
TString_array _iva;
|
TString_array _iva;
|
||||||
|
TString _idsdi;
|
||||||
|
TDate _datasdi;
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -59,7 +61,7 @@ public:
|
|||||||
TPrimanota_application::TPrimanota_application()
|
TPrimanota_application::TPrimanota_application()
|
||||||
: _rel(nullptr), _mode(0), _iva(nessuna_iva), _causale(nullptr), _giornale(nullptr),
|
: _rel(nullptr), _mode(0), _iva(nessuna_iva), _causale(nullptr), _giornale(nullptr),
|
||||||
_lastreg(0), _last_dreg(TODAY), _last_dcom(TODAY), _automatico(nullptr), _swap_mask(false), _is_set_fpcheck(false), _f1_ini(false), _f1_liq(false),
|
_lastreg(0), _last_dreg(TODAY), _last_dcom(TODAY), _automatico(nullptr), _swap_mask(false), _is_set_fpcheck(false), _f1_ini(false), _f1_liq(false),
|
||||||
_skip_giornale_check(false), _skip_bollato_check(false)
|
_skip_giornale_check(false), _skip_bollato_check(false), _pro_mask(nullptr)
|
||||||
{
|
{
|
||||||
memset(_msk, 0, sizeof(_msk));
|
memset(_msk, 0, sizeof(_msk));
|
||||||
}
|
}
|
||||||
@ -439,7 +441,7 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const char sezione = rcaus->get_char(RCA_SEZIONE);
|
const char sezione = rcaus->get_char(RCA_SEZIONE);
|
||||||
const TImporto zero('D', ZERO);
|
TImporto zero('D', ZERO);
|
||||||
const TString80 desc(causale().desc_agg(i));
|
const TString80 desc(causale().desc_agg(i));
|
||||||
|
|
||||||
if (nriga == 1) m->set(F_DESCR, desc);
|
if (nriga == 1) m->set(F_DESCR, desc);
|
||||||
@ -697,7 +699,7 @@ void TPrimanota_application::init_mask(TMask& m)
|
|||||||
_sal_dirty = false; // Azzero il flag di modifica del saldaconto
|
_sal_dirty = false; // Azzero il flag di modifica del saldaconto
|
||||||
fill_sheet(m); // Riempe righe contabili coi conti della causale
|
fill_sheet(m); // Riempe righe contabili coi conti della causale
|
||||||
m.hide(F_LINKDOC);
|
m.hide(F_LINKDOC);
|
||||||
set_has_f1_db(&m);
|
has_f1_db(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::init_query_mode(TMask& m)
|
void TPrimanota_application::init_query_mode(TMask& m)
|
||||||
@ -736,7 +738,7 @@ void TPrimanota_application::init_query_mode(TMask& m)
|
|||||||
m.set(F_CODCAUS, ini.get(MOV_CODCAUS));
|
m.set(F_CODCAUS, ini.get(MOV_CODCAUS));
|
||||||
m.send_key(K_SPACE, DLG_NEWREC);
|
m.send_key(K_SPACE, DLG_NEWREC);
|
||||||
}
|
}
|
||||||
set_has_f1_db(&m);
|
has_f1_db(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -995,17 +997,19 @@ void TPrimanota_application::init_insert_mode(TMask& m)
|
|||||||
m.enable(F_BOLLACODCLI, causale().tipo_doc() == "BD");
|
m.enable(F_BOLLACODCLI, causale().tipo_doc() == "BD");
|
||||||
m.enable(F_BOLLARAGCLI, causale().tipo_doc() == "BD");
|
m.enable(F_BOLLARAGCLI, causale().tipo_doc() == "BD");
|
||||||
}
|
}
|
||||||
|
if (iva() != nessuna_iva)
|
||||||
|
f1_init(m, m.get_date(F_DATAREG) >= get_data_start_fatt());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::f1_init_modify(TMask& m, const TRectype& mov)
|
void TPrimanota_application::f1_init(TMask& m, const bool fe_enabled, const bool f1_linked)
|
||||||
{
|
{
|
||||||
const bool after_data_inizio_fe = mov.get_date(MOV_DATADOC) >= get_data_start_fatt();
|
const bool reverse_charge = app().causale().reverse_charge_pubb();
|
||||||
|
|
||||||
m.field(F_IDDOCSDI).show(after_data_inizio_fe);
|
m.field(F_IDDOCSDI).show(fe_enabled && reverse_charge);
|
||||||
m.field(F_DATADOCSDI).show(after_data_inizio_fe);
|
m.field(F_DATADOCSDI).show(fe_enabled && reverse_charge);
|
||||||
m.field(F_COLFPPRO).show(after_data_inizio_fe);
|
m.field(F_COLFPPRO).show(fe_enabled);
|
||||||
m.field(DLG_LINK).enable(after_data_inizio_fe);
|
m.field(DLG_LINK).enable(fe_enabled);
|
||||||
m.set(F_COLFPPRO, !after_data_inizio_fe || mov.get(MOV_KEYFPPRO).empty() ? " " : "X");
|
m.set(F_COLFPPRO, fe_enabled && f1_linked, 0x3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::init_modify_mode(TMask& m)
|
void TPrimanota_application::init_modify_mode(TMask& m)
|
||||||
@ -1116,7 +1120,7 @@ void TPrimanota_application::init_modify_mode(TMask& m)
|
|||||||
m.enable(F_BOLLARAGCLI, causale().tipo_doc() == "BD");
|
m.enable(F_BOLLARAGCLI, causale().tipo_doc() == "BD");
|
||||||
}
|
}
|
||||||
if (iva() != nessuna_iva)
|
if (iva() != nessuna_iva)
|
||||||
f1_init_modify(m, mov);
|
f1_init(m, mov.get_date(MOV_DATADOC) >= get_data_start_fatt(), mov.get(MOV_KEYFPPRO).full());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Controlla sulla causale se il segno del totale documento (ritsoc=false)
|
// Controlla sulla causale se il segno del totale documento (ritsoc=false)
|
||||||
@ -1488,18 +1492,14 @@ void TPrimanota_application::check_saldi()
|
|||||||
|
|
||||||
void TPrimanota_application::write_fppro()
|
void TPrimanota_application::write_fppro()
|
||||||
{
|
{
|
||||||
#ifdef DBG
|
if (main_app().has_module(FPAUT) && !ini_get_bool(CONFIG_INSTALL, "Main", "SkipFPPRO"))
|
||||||
if (!ini_get_bool(CONFIG_INSTALL, "Main", "SkipFPPRO"))
|
|
||||||
{
|
{
|
||||||
#endif
|
|
||||||
// Controllo se la registrazione ha avuto effetto anche su FPPRO allora salvo riferimento sul mov
|
// Controllo se la registrazione ha avuto effetto anche su FPPRO allora salvo riferimento sul mov
|
||||||
if (save_fppro() > 0 && !save_dbmov())
|
if (save_fppro() > 0 && !save_dbmov())
|
||||||
message_box(
|
message_box(
|
||||||
"ATTENZIONE: non e' stato possibile salvare i riferimenti del documento in ingresso per questo movimento.\n"
|
"ATTENZIONE: non e' stato possibile salvare i riferimenti del documento in ingresso per questo movimento.\n"
|
||||||
"Movimento registrato senza collegamento ai documenti in ingresso.");
|
"Movimento registrato senza collegamento ai documenti in ingresso.");
|
||||||
#ifdef DBG
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPrimanota_application::has_tot_doc(TToken_string& fppro_keys)
|
bool TPrimanota_application::has_tot_doc(TToken_string& fppro_keys)
|
||||||
@ -1556,7 +1556,7 @@ void TPrimanota_application::set_movcoll(const long movcoll, const long numreg)
|
|||||||
}
|
}
|
||||||
int TPrimanota_application::controlli_f1(const TMask& m)
|
int TPrimanota_application::controlli_f1(const TMask& m)
|
||||||
{
|
{
|
||||||
if (m.find_by_id(F_PROKEY) != nullptr && m.get(F_PROKEY).full() && has_f1_db((TMask*)&m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS)))
|
if (iva_mask(m) && m.get(F_PROKEY).full() && has_f1_db(m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS)))
|
||||||
{
|
{
|
||||||
TToken_string keys(m.get(F_PROKEY), ';');
|
TToken_string keys(m.get(F_PROKEY), ';');
|
||||||
const TDate dataoraric = fppro_db().set_keys(keys).get_dataorarioric();
|
const TDate dataoraric = fppro_db().set_keys(keys).get_dataorarioric();
|
||||||
@ -1717,10 +1717,19 @@ int TPrimanota_application::rewrite(const TMask& m)
|
|||||||
|
|
||||||
if (caus.reverse_charge_pubb())
|
if (caus.reverse_charge_pubb())
|
||||||
{
|
{
|
||||||
const long movcoll = m.get_long(F_MOVCOLL);
|
long movcoll = m.get_long(F_MOVCOLL);
|
||||||
|
|
||||||
if (movcoll == 0L)
|
if (movcoll == 0L)
|
||||||
find_movcoll(_rel->file().get_long(MOV_NUMREG));
|
find_movcoll(_rel->file().get_long(MOV_NUMREG));
|
||||||
|
movcoll = m.get_long(F_MOVCOLL);
|
||||||
|
if (movcoll > 0L)
|
||||||
|
{
|
||||||
|
TRectype & reccoll = (TRectype &) cache().get(LF_MOV, movcoll);
|
||||||
|
|
||||||
|
reccoll.put(MOV_IDDOCSDI, m.get(F_IDDOCSDI));
|
||||||
|
reccoll.put(MOV_DATADOCSDI, m.get(F_DATADOCSDI));
|
||||||
|
reccoll.rewrite();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mask2rel(m);
|
mask2rel(m);
|
||||||
|
|
||||||
@ -1788,7 +1797,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 && !scollega())
|
|| last_key != K_DEL && last_key != K_SAVE && last_key != K_ELIMMAS && last_key != K_QUIT && !scollega())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1803,27 +1812,17 @@ void TPrimanota_application::clean_fppro()
|
|||||||
fp_db().sq_commit();
|
fp_db().sq_commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::set_has_f1_db(TMask* m)
|
bool TPrimanota_application::has_f1() const
|
||||||
{
|
{
|
||||||
if (m->find_by_id(F_DATAREG) != nullptr && !m->get(F_DATAREG).empty())
|
return has_module(F1AUT) && get_db_indirizzo().full();
|
||||||
{
|
|
||||||
if (TDate(m->get(F_DATAREG)) >= TDate(get_data_start_fatt()))
|
|
||||||
_isf1 = has_module(F1AUT) && !get_db_indirizzo().empty();
|
|
||||||
else
|
|
||||||
_isf1 = false;
|
|
||||||
_is_set_fpcheck = true;
|
|
||||||
}
|
|
||||||
else if (!_is_set_fpcheck)
|
|
||||||
{
|
|
||||||
_isf1 = false;
|
|
||||||
_is_set_fpcheck = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPrimanota_application::has_f1_db(TMask* m)
|
bool TPrimanota_application::has_f1_db(const TMask & m)
|
||||||
{
|
{
|
||||||
set_has_f1_db(m);
|
const TDate datareg = m.get_date(F_DATAREG);
|
||||||
return _isf1;
|
|
||||||
|
_is_set_fpcheck = true;
|
||||||
|
return datareg.ok() && (datareg >= get_data_start_fatt()) && has_f1();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPrimanota_application::remove()
|
bool TPrimanota_application::remove()
|
||||||
@ -1892,6 +1891,8 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm)
|
|||||||
_automatico->_movcoll = m.get_long(F_NUMREG);
|
_automatico->_movcoll = m.get_long(F_NUMREG);
|
||||||
_automatico->_iva.destroy();
|
_automatico->_iva.destroy();
|
||||||
_automatico->_totale = ZERO;
|
_automatico->_totale = ZERO;
|
||||||
|
_automatico->_idsdi = m.get(F_IDDOCSDI);
|
||||||
|
_automatico->_datasdi = m.get(F_DATADOCSDI);
|
||||||
for (int i = 0; i < items; i++)
|
for (int i = 0; i < items; i++)
|
||||||
{
|
{
|
||||||
TToken_string row = iva.row(i);
|
TToken_string row = iva.row(i);
|
||||||
@ -1979,6 +1980,9 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm)
|
|||||||
const TString& clnt = cache().get(LF_CLIFO, forn, CLI_CODCFASS);
|
const TString& clnt = cache().get(LF_CLIFO, forn, CLI_CODCFASS);
|
||||||
m.set(F_CODCLIFOR, clnt);
|
m.set(F_CODCLIFOR, clnt);
|
||||||
}
|
}
|
||||||
|
m.set(F_IDDOCSDI, _automatico->_idsdi);
|
||||||
|
m.set(F_DATADOCSDI, _automatico->_datasdi);
|
||||||
|
|
||||||
TSheet_field & iva = m.sfield(F_SHEETIVA);
|
TSheet_field & iva = m.sfield(F_SHEETIVA);
|
||||||
const int items = _automatico->_iva.items();
|
const int items = _automatico->_iva.items();
|
||||||
|
|
||||||
@ -2672,7 +2676,7 @@ int TPrimanota_application::save_fppro()
|
|||||||
TMask& msk = curr_mask();
|
TMask& msk = curr_mask();
|
||||||
|
|
||||||
// Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP
|
// Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP
|
||||||
if (!has_f1_db(&msk))
|
if (!has_f1_db(msk))
|
||||||
return pro_nofp;
|
return pro_nofp;
|
||||||
|
|
||||||
// Anzitutto guardo la modalita' in cui sono
|
// Anzitutto guardo la modalita' in cui sono
|
||||||
@ -2737,7 +2741,7 @@ int TPrimanota_application::save_fppro()
|
|||||||
items = fp_db().sq_items();
|
items = fp_db().sq_items();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(has_f1_db(&msk) && items != 1)
|
if(has_f1_db(msk) && items != 1)
|
||||||
{
|
{
|
||||||
const bool forza = noyes_box("Attenzione, al movimento non e' stato abbinato nessun documento elettronico.\n"
|
const bool forza = noyes_box("Attenzione, al movimento non e' stato abbinato nessun documento elettronico.\n"
|
||||||
"Per consentire una corretta archiviazione sostitutiva si consiglia di provvedere al controllo della registrazione e di procedere\n"
|
"Per consentire una corretta archiviazione sostitutiva si consiglia di provvedere al controllo della registrazione e di procedere\n"
|
||||||
@ -2851,6 +2855,7 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
|
|||||||
|
|
||||||
const BOOLEAN bModify = xvt_str_same(action, "Modify");
|
const BOOLEAN bModify = xvt_str_same(action, "Modify");
|
||||||
|
|
||||||
|
|
||||||
TFilename intrini;
|
TFilename intrini;
|
||||||
intrini.tempdir();
|
intrini.tempdir();
|
||||||
intrini.add("ActIntra.ini");
|
intrini.add("ActIntra.ini");
|
||||||
|
@ -569,7 +569,7 @@ END
|
|||||||
|
|
||||||
STRING F_PROKEY 80
|
STRING F_PROKEY 80
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 19 "db key"
|
PROMPT 1 26 "DB key"
|
||||||
HELP "Chiave database"
|
HELP "Chiave database"
|
||||||
FIELD KEYFPPRO
|
FIELD KEYFPPRO
|
||||||
FLAGS "H"
|
FLAGS "H"
|
||||||
|
@ -13,12 +13,14 @@ BEGIN
|
|||||||
PROMPT 2 1 "Contabilizzaz."
|
PROMPT 2 1 "Contabilizzaz."
|
||||||
PICTURE TOOL_EXPORT
|
PICTURE TOOL_EXPORT
|
||||||
MODULE F1
|
MODULE F1
|
||||||
|
MESSAGE EXIT,K_ENTER
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_LINK 2 2
|
BUTTON DLG_LINK 2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 1 "Collega in Prima nota"
|
PROMPT 3 1 "Collega in Prima nota"
|
||||||
PICTURE TOOL_LINK
|
PICTURE TOOL_LINK
|
||||||
|
MESSAGE EXIT,K_ENTER
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_QUIT 2 2
|
BUTTON DLG_QUIT 2 2
|
||||||
|
@ -219,7 +219,10 @@ TSheet_field& TPrimanota_application::cgs() const
|
|||||||
void TPrimanota_application::set_cgs_imp(int n, const TImporto& imp)
|
void TPrimanota_application::set_cgs_imp(int n, const TImporto& imp)
|
||||||
{
|
{
|
||||||
TSheet_field& s = cgs();
|
TSheet_field& s = cgs();
|
||||||
imp.add_to(s.row(n), 0);
|
TImporto i(imp);
|
||||||
|
|
||||||
|
i.normalize();
|
||||||
|
i.add_to(s.row(n), 0);
|
||||||
s.force_update(n);
|
s.force_update(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,7 +374,7 @@ void TPrimanota_application::reset_sheet_row(TSheet_field& s, int n)
|
|||||||
s.destroy(n); // Remove line n
|
s.destroy(n); // Remove line n
|
||||||
}
|
}
|
||||||
|
|
||||||
int TPrimanota_application::set_cgs_row(int n, const TImporto& imp,
|
int TPrimanota_application::set_cgs_row(int n, TImporto& importo,
|
||||||
const TBill& conto, const char* desc,
|
const TBill& conto, const char* desc,
|
||||||
char tipo, const char* cms, const char* fas)
|
char tipo, const char* cms, const char* fas)
|
||||||
{
|
{
|
||||||
@ -380,7 +383,8 @@ int TPrimanota_application::set_cgs_row(int n, const TImporto& imp,
|
|||||||
TToken_string& row = cg.row(n);
|
TToken_string& row = cg.row(n);
|
||||||
|
|
||||||
row.cut(0);
|
row.cut(0);
|
||||||
imp.add_to(row, 0);
|
importo.normalize();
|
||||||
|
importo.add_to(row, 0);
|
||||||
row.add(conto.string(0x3));
|
row.add(conto.string(0x3));
|
||||||
row.add(""); // Codice decrizione
|
row.add(""); // Codice decrizione
|
||||||
row.add(desc); // Descrizione aggiuntiva
|
row.add(desc); // Descrizione aggiuntiva
|
||||||
@ -1536,7 +1540,7 @@ void TPrimanota_application::add2cg_row(TSheet_field& s, TToken_string & row, TS
|
|||||||
{
|
{
|
||||||
const TBill conto(row, cid2index(IVA_TIPO), 0x1);
|
const TBill conto(row, cid2index(IVA_TIPO), 0x1);
|
||||||
const int pos = bill2pos(conto, cgrowtype_imponibile); // Riga in cui andra' l'imponibile
|
const int pos = bill2pos(conto, cgrowtype_imponibile); // Riga in cui andra' l'imponibile
|
||||||
const TImporto imp = a.real2imp(d > 0 ? imp_det : imp_ind, tipod); // Imponibile
|
TImporto imp = a.real2imp(d > 0 ? imp_det : imp_ind, tipod); // Imponibile
|
||||||
|
|
||||||
if (pos >= 0) // Se il conto esisteva anche prima ...
|
if (pos >= 0) // Se il conto esisteva anche prima ...
|
||||||
{
|
{
|
||||||
@ -1761,7 +1765,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& s, int r, KEY k)
|
|||||||
real pimponibile(pag.imponibile(inv));
|
real pimponibile(pag.imponibile(inv));
|
||||||
|
|
||||||
pimponibile.round(pag.round(inv));
|
pimponibile.round(pag.round(inv));
|
||||||
if ((pimposta != imposta || pimponibile != imponibile) && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back())))
|
if ((pimposta != imposta || pimponibile != imponibile) && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare())))
|
||||||
a.set_scadenze(m); // Ricalcola rate
|
a.set_scadenze(m); // Ricalcola rate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2842,7 +2846,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
|
|||||||
|
|
||||||
TImporto imp = real2imp(m.get_real(F_TOTALE), cgrowtype_totale);
|
TImporto imp = real2imp(m.get_real(F_TOTALE), cgrowtype_totale);
|
||||||
|
|
||||||
set_cgs_row(riga_totale, imp.normalize(), nuovo, descr, cgrowtype_totale);
|
set_cgs_row(riga_totale, imp, nuovo, descr, cgrowtype_totale);
|
||||||
}
|
}
|
||||||
calcola_imp(); // Ricalcola totale IVA
|
calcola_imp(); // Ricalcola totale IVA
|
||||||
calcola_saldo(); // Ricalcola sbilanci
|
calcola_saldo(); // Ricalcola sbilanci
|
||||||
@ -3018,7 +3022,7 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
|||||||
ixc->set(ic ? "X" : "");
|
ixc->set(ic ? "X" : "");
|
||||||
}
|
}
|
||||||
if(m.get(F_PROKEY).empty() && app().has_module(F1AUT))
|
if(m.get(F_PROKEY).empty() && app().has_module(F1AUT))
|
||||||
fppro_mask(f, key);
|
a.fppro_mask(f, key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -3562,21 +3566,11 @@ HIDDEN void inventa_cambio_intra(TMask& m)
|
|||||||
{
|
{
|
||||||
const TString& codval = m.get(F_VALUTAINTRA);
|
const TString& codval = m.get(F_VALUTAINTRA);
|
||||||
|
|
||||||
if (codval.not_empty() && TCurrency::get_firm_val() != codval)
|
if (codval.full() && TCurrency::get_firm_val() != codval)
|
||||||
{
|
{
|
||||||
TTable cam("CAM");
|
const TRectype & cam =cache().get("CAM", codval);
|
||||||
|
|
||||||
cam.put("CODTAB", codval);
|
if (cam.full())
|
||||||
const int err = cam.read(_isgteq);
|
|
||||||
bool yes = err != NOERR;
|
|
||||||
if (!yes)
|
|
||||||
{
|
|
||||||
TString16 v = cam.get("CODTAB");
|
|
||||||
|
|
||||||
v.cut(3).rtrim();
|
|
||||||
yes = v != codval;
|
|
||||||
}
|
|
||||||
if (yes)
|
|
||||||
m.set(F_CAMBIOINTRA, cache().get("%VAL", codval, "S4"));
|
m.set(F_CAMBIOINTRA, cache().get("%VAL", codval, "S4"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3903,71 +3897,74 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
|
||||||
|
void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const TPro_msk & msk)
|
||||||
{
|
{
|
||||||
TSheet_field& sf = cg_msk.sfield(F_SHEETIVA);
|
TSheet_field& sf = cg_msk.sfield(F_SHEETIVA);
|
||||||
const vector<TPro_msk::riga_iva_s>& righe = msk->get_righeiva();
|
const TString_array& righe = msk.get_righeiva();
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
for (auto it = righe.begin(); it != righe.end(); ++it)
|
FOR_EACH_ARRAY_ITEM( righe, r, obj)
|
||||||
{
|
{
|
||||||
if(it->imponibile != 0 || it->imposta != 0)
|
TToken_string & riga = STRING_TOKEN(obj);
|
||||||
{
|
const real imponibile = riga.get_real(FPRI_IMPONIBILE);
|
||||||
TToken_string& row = sf.row(i);
|
const real imposta = riga.get_real(FPRI_IMPOSTA);
|
||||||
|
|
||||||
sf.notify(i, K_SPACE);
|
if (imponibile != ZERO || imposta != ZERO)
|
||||||
row.add(it->imponibile, cid2index(IVA_IMPONIBILE));
|
{
|
||||||
row.add(it->imposta, cid2index(IVA_IMPOSTA));
|
TToken_string& row = sf.row(r);
|
||||||
row.add(it->aliquota, cid2index(IVA_PERCIVA));
|
|
||||||
row.add(it->natura, cid2index(IVA_NATURIVA));
|
sf.notify(r, K_SPACE);
|
||||||
sf.notify(i, K_ENTER);
|
sf.set_row_cell(IVA_IMPONIBILE, imponibile, r);
|
||||||
i++;
|
sf.set_row_cell(IVA_IMPOSTA, imposta, r);
|
||||||
|
sf.set_row_cell(IVA_PERCIVA, riga.get(FPRI_ALIQUOTA), r);
|
||||||
|
sf.set_row_cell(IVA_NATURIVA, riga.get(FPRI_NATURA), r);
|
||||||
|
sf.notify(r, K_ENTER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const TPro_msk & msk)
|
||||||
{
|
{
|
||||||
TSheet_field& sf = cg_msk.sfield(FS_RATESHEET);
|
TSheet_field& sf = cg_msk.sfield(FS_RATESHEET);
|
||||||
const int items = sf.items();
|
const int items = sf.items();
|
||||||
const vector<TPro_msk::scadenza_s>& righe = msk->get_scadenze();
|
const TString_array & righe = msk.get_scadenze();
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
for (auto it = righe.begin(); it != righe.end(); ++it, ++i)
|
FOR_EACH_ARRAY_ITEM(righe, r, obj)
|
||||||
{
|
{
|
||||||
TToken_string& row = app().pags().row(i);
|
TToken_string& row = app().pags().row(r);
|
||||||
|
TToken_string & riga = STRING_TOKEN(obj);
|
||||||
|
|
||||||
if(i >= items)
|
if (r >= items)
|
||||||
pag_notify(sf, i, K_CTRL+K_INS);
|
pag_notify(sf, r, K_CTRL+K_INS);
|
||||||
pag_notify(sf, i, K_SPACE);
|
pag_notify(sf, r, K_SPACE);
|
||||||
row.add(it->data, cid2index(101));
|
sf.set_row_cell(101, riga.get_date(FPSC_DATA), r);
|
||||||
row.add(it->importo, cid2index(102));
|
sf.set_row_cell(102, riga.get_real(FPSC_IMPORTO), r);
|
||||||
pag_notify(sf, i, K_ENTER);
|
pag_notify(sf, r, K_ENTER);
|
||||||
}
|
}
|
||||||
return !righe.empty();
|
return righe.items() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
void TPrimanota_application::write_clifo(TMask& cg_msk, const TPro_msk & msk)
|
||||||
{
|
{
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
TLocalisamfile clifo(LF_CLIFO);
|
TLocalisamfile clifo(LF_CLIFO);
|
||||||
TToken_string keys(msk->get_fpprokeys(), ';');
|
TToken_string keys(msk.get_fpprokeys(), ';');
|
||||||
TString codforn = TFppro(keys).get_codforn();
|
long codforn = TFppro(keys).get_codforn();
|
||||||
|
|
||||||
if (codforn.empty())
|
if (codforn == 0L)
|
||||||
codforn = msk->get_codforn();
|
codforn = msk.get_codforn();
|
||||||
if (codforn.empty())
|
if (codforn == 0L)
|
||||||
{
|
{
|
||||||
clifo.setkey(5);
|
clifo.setkey(5);
|
||||||
clifo.put(CLI_TIPOCF, "F");
|
clifo.put(CLI_TIPOCF, "F");
|
||||||
clifo.put(CLI_PAIV, msk->get_piva());
|
clifo.put(CLI_PAIV, msk.get_piva());
|
||||||
clifo.read();
|
clifo.read();
|
||||||
ok = clifo.get(CLI_PAIV) == msk->get_piva();
|
ok = clifo.get(CLI_PAIV) == msk.get_piva();
|
||||||
if(!ok)
|
if(!ok)
|
||||||
{
|
{
|
||||||
clifo.zero();
|
clifo.zero();
|
||||||
clifo.setkey(5);
|
clifo.setkey(5);
|
||||||
clifo.put(CLI_TIPOCF, "F");
|
clifo.put(CLI_TIPOCF, "F");
|
||||||
clifo.put(CLI_PAIV, msk->get_piva());
|
clifo.put(CLI_PAIV, msk.get_piva());
|
||||||
clifo.put(CLI_STATOPAIV, "IT");
|
clifo.put(CLI_STATOPAIV, "IT");
|
||||||
clifo.read();
|
clifo.read();
|
||||||
}
|
}
|
||||||
@ -3979,8 +3976,8 @@ void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr<TPro_ms
|
|||||||
clifo.put(CLI_CODCF, codforn);
|
clifo.put(CLI_CODCF, codforn);
|
||||||
clifo.read();
|
clifo.read();
|
||||||
}
|
}
|
||||||
ok = clifo.get(CLI_PAIV) == msk->get_piva();
|
ok = clifo.get(CLI_PAIV) == msk.get_piva();
|
||||||
if (ok && (cg_msk.get(F_CODCLIFOR).empty() || cg_msk.get(F_CODCLIFOR) != codforn))
|
if (ok && (cg_msk.get_long(F_CODCLIFOR) == 0 || cg_msk.get_long(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));
|
||||||
@ -3988,20 +3985,21 @@ void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr<TPro_ms
|
|||||||
cg_msk.set(F_PIVA, clifo.get(CLI_PAIV));
|
cg_msk.set(F_PIVA, clifo.get(CLI_PAIV));
|
||||||
cg_msk.set(F_COFI, clifo.get(CLI_COFI));
|
cg_msk.set(F_COFI, clifo.get(CLI_COFI));
|
||||||
cg_msk.set(F_CODPAG, clifo.get(CLI_CODPAG));
|
cg_msk.set(F_CODPAG, clifo.get(CLI_CODPAG));
|
||||||
TTable tab("%CPG"); tab.put("CODTAB", clifo.get(CLI_CODPAG));
|
|
||||||
tab.read();
|
const TRectype & tab = cache().get("%CPG", clifo.get(CLI_CODPAG));
|
||||||
|
|
||||||
cg_msk.set(F_DESPAG, tab.get("S0"));
|
cg_msk.set(F_DESPAG, tab.get("S0"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
void TPrimanota_application::set_totale(TMask& cg_msk, TPro_msk & msk)
|
||||||
{
|
{
|
||||||
real totale = msk->get_totdoc();
|
real totale = msk.get_totdoc();
|
||||||
|
|
||||||
if (totale == ZERO)
|
if (totale == ZERO)
|
||||||
totale = app().calcola_imp();
|
totale = app().calcola_imp();
|
||||||
|
|
||||||
const real rit = msk->get_ritenute();
|
const real rit = msk.get_ritenute();
|
||||||
|
|
||||||
if (rit != ZERO)
|
if (rit != ZERO)
|
||||||
{
|
{
|
||||||
@ -4009,78 +4007,83 @@ void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptr<TPro_msk
|
|||||||
cg_msk.set(F_RITFIS, rit);
|
cg_msk.set(F_RITFIS, rit);
|
||||||
app().add_cgs_ritenute(cgrowtype_ritfis);
|
app().add_cgs_ritenute(cgrowtype_ritfis);
|
||||||
}
|
}
|
||||||
else if (msk->is_doc_split())
|
else
|
||||||
totale = msk->get_tot_imp_riva();
|
if (msk.is_doc_split())
|
||||||
|
totale = msk.get_tot_imp_riva();
|
||||||
cg_msk.set(F_TOTALE, totale);
|
cg_msk.set(F_TOTALE, totale);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, TPro_msk & msk)
|
||||||
{
|
{
|
||||||
const bool bring = msk->should_bring_back();
|
const bool bring = msk.da_riportare();
|
||||||
|
|
||||||
if (bring)
|
if (bring)
|
||||||
{
|
{
|
||||||
if (msk->get_numdoc().full() && cg_msk.get(F_CODCLIFOR).empty())
|
TPrimanota_application & a = app();
|
||||||
write_clifo(cg_msk, msk);
|
|
||||||
write_righe_iva_f1(cg_msk, msk);
|
if (msk.get_numdoc() != 0L && cg_msk.get(F_CODCLIFOR).empty())
|
||||||
set_totale(cg_msk, msk);
|
a.write_clifo(cg_msk, msk);
|
||||||
|
a.write_righe_iva_f1(cg_msk, msk);
|
||||||
|
a.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 (a.write_scad_f1(cg_msk, msk))
|
||||||
app().set_scad_f1(cg_msk);
|
a.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
|
// 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())
|
if (bring || cg_msk.get(F_NUMDOCEXT) != msk.get_str_numdoc())
|
||||||
{
|
{
|
||||||
cg_msk.set(F_NUMDOCEXT, msk->get_numdoc());
|
|
||||||
cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7));
|
cg_msk.set(F_NUMDOCEXT, msk.get_str_numdoc());
|
||||||
|
cg_msk.set(F_NUMDOC, format("%-7ld", msk.get_numdoc()));
|
||||||
|
cg_msk.set(F_DATADOC, msk.get_datadoc());
|
||||||
|
cg_msk.set(F_IDDOCSDI, msk.get_str_numdoc());
|
||||||
|
cg_msk.set(F_DATADOCSDI, msk.get_datadoc());
|
||||||
|
cg_msk.disable(F_IDDOCSDI);
|
||||||
|
cg_msk.disable(F_DATADOCSDI);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bring || cg_msk.get(F_DATADOC).empty())
|
void TPrimanota_application::insert_part_scad(TConfig& ini) // che cazzo significa la partita 73/001
|
||||||
cg_msk.set(F_DATADOC, msk->get_datadoc());
|
|
||||||
}
|
|
||||||
|
|
||||||
void TPrimanota_application::insert_part_scad(TConfig& ini)
|
|
||||||
{
|
{
|
||||||
vector<TToken_string> rif_doc;
|
TArray rif_doc;
|
||||||
int i = 0;
|
TString str = ini.get("NUMLINEA", "23", 0);
|
||||||
ini.set_paragraph("23");
|
|
||||||
|
|
||||||
// Carico nel vettore
|
// Carico nel vettore
|
||||||
while(true)
|
for (int i = 0; str.full(); str = ini.get("NUMLINEA", "23", ++i))
|
||||||
{
|
{
|
||||||
TToken_string doc("", '|');
|
TToken_string doc("", '|');
|
||||||
TString str; str << ini.get("NUMLINEA", nullptr, i, "NULL");
|
|
||||||
if (str != "NULL")
|
|
||||||
{
|
|
||||||
doc.add(str);
|
|
||||||
doc.add(ini.get("DOCRIF", nullptr, i, "NULL"));
|
|
||||||
doc.add(ini.get("DATADOCRIF", nullptr, i, "NULL"));
|
|
||||||
|
|
||||||
rif_doc.insert(rif_doc.end(), doc);
|
doc.add(str);
|
||||||
i++;
|
doc.add(ini.get("DOCRIF", "23", i));
|
||||||
}
|
doc.add(ini.get("DATADOCRIF", "23", i));
|
||||||
else
|
rif_doc.add(doc);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Agganciare alla partita del documento di riferimento
|
// Agganciare alla partita del documento di riferimento
|
||||||
if(!rif_doc.empty())
|
if(rif_doc.items() > 0)
|
||||||
{
|
{
|
||||||
is_f1() = true;
|
is_f1() = true;
|
||||||
|
|
||||||
TString query; query << "USE MOV\nSELECT (DATADOC==#DATADOC)";
|
TString query; query << "USE MOV\nSELECT (DATADOC==#DATADOC)";
|
||||||
TISAM_recordset rec(query);
|
TISAM_recordset rec(query);
|
||||||
rec.set_var("#DATADOC", TVariant(TDate(rif_doc[0].get(2))));
|
|
||||||
TString part;
|
TString part;
|
||||||
do
|
|
||||||
|
FOR_EACH_ARRAY_ITEM(rif_doc, r, _obj)
|
||||||
{
|
{
|
||||||
if (rec.get(MOV_NUMDOC).as_string() == "73/001")
|
if (part.blank())
|
||||||
{
|
{
|
||||||
part = rec.get(MOV_PROTIVA).as_string();
|
rec.set_var("#DATADOC", ((TToken_string&)rif_doc[0]).get_date(2));
|
||||||
|
|
||||||
|
for (bool ok = rec.move_first(); ok; ok = rec.move_next())
|
||||||
|
{
|
||||||
|
if (rec.get_string(MOV_NUMDOC) == "73/001")
|
||||||
|
{
|
||||||
|
part = rec.get_string(MOV_PROTIVA);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while (rec.move_next());
|
} while (rec.move_next());
|
||||||
|
}
|
||||||
|
}
|
||||||
_num_doc_rif_partite = part;
|
_num_doc_rif_partite = part;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4092,9 +4095,10 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
|
|||||||
if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS)))
|
if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
auto msk = std::make_shared<TPro_msk>(cg_msk);
|
TPro_msk * msk = app()._pro_mask;
|
||||||
|
|
||||||
app()._pro_mask = msk;
|
if (msk == nullptr)
|
||||||
|
app()._pro_mask = msk = new TPro_msk(cg_msk);
|
||||||
|
|
||||||
const TString datadoc = cg_msk.get(F_DATADOC);
|
const TString datadoc = cg_msk.get(F_DATADOC);
|
||||||
|
|
||||||
@ -4104,16 +4108,13 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
|
|||||||
msk->field(F_DATESEARCH).show();
|
msk->field(F_DATESEARCH).show();
|
||||||
msk->set(F_DATESEARCH, datadoc);
|
msk->set(F_DATESEARCH, datadoc);
|
||||||
}
|
}
|
||||||
if (msk->load_fppro_mask(msk.get()))
|
|
||||||
{
|
|
||||||
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)
|
||||||
riporta_dati_f1(cg_msk, msk);
|
riporta_dati_f1(cg_msk, *msk);
|
||||||
cg_msk.set(F_PROKEY, msk->get_fpprokeys());
|
cg_msk.set(F_PROKEY, msk->get_fpprokeys());
|
||||||
is_collegato(cg_msk.field(F_COLFPPRO));
|
cg_msk.set(F_COLFPPRO, cg_msk.get(F_PROKEY).full());
|
||||||
cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA));
|
cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA));
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4131,12 +4132,12 @@ bool TPrimanota_application::scollega(const bool set)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key)
|
bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key)
|
||||||
|
{
|
||||||
|
if (app().has_module(FPAUT) && f.running_check(key))
|
||||||
{
|
{
|
||||||
TMask& cg_msk = f.mask();
|
TMask& cg_msk = f.mask();
|
||||||
|
|
||||||
if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS)))
|
if (check_causale(cg_msk.get(F_CODCAUS)) && cg_msk.get_bool(F_COLFPPRO))
|
||||||
return true;
|
|
||||||
if (cg_msk.get_bool(F_COLFPPRO))
|
|
||||||
{
|
{
|
||||||
scollega(true);
|
scollega(true);
|
||||||
app().clean_fppro();
|
app().clean_fppro();
|
||||||
@ -4150,103 +4151,81 @@ bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key)
|
|||||||
}
|
}
|
||||||
message_box("Il movimento e' stato scollegato dalla fattura elettronica\nin ingresso, precedentemente associata.");
|
message_box("Il movimento e' stato scollegato dalla fattura elettronica\nin ingresso, precedentemente associata.");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPrimanota_application::is_collegato(TMask_field& f)
|
bool TPro_msk::load_fppro_mask(TMask & msk)
|
||||||
{
|
|
||||||
TMask& cg_msk = f.mask();
|
|
||||||
const bool has_prokey = !cg_msk.get(F_PROKEY).empty();
|
|
||||||
|
|
||||||
f.set(has_prokey ? "X" : " ");
|
|
||||||
return has_prokey;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TPro_msk::load_fppro_mask(TMask* msk, KEY k)
|
|
||||||
{
|
{
|
||||||
// Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP
|
// Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP
|
||||||
if (k != 32)
|
|
||||||
return false;
|
|
||||||
if (!fp_db().sq_is_connect())
|
if (!fp_db().sq_is_connect())
|
||||||
{
|
{
|
||||||
message_box("Attenzione connessione al database non riuscita.\nImpossibile collegarsi ai documenti in entrata.");
|
message_box("Attenzione connessione al database non riuscita.\nImpossibile collegarsi ai documenti in entrata.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int forn = msk->get_int(F_CODCLIFORS);
|
const int forn = msk.get_int(F_CODCLIFORS);
|
||||||
|
|
||||||
if (forn == 0)
|
if (forn == 0)
|
||||||
{
|
{
|
||||||
msk->set(F_ENABSEARCH, "X");
|
msk.set(F_ENABSEARCH, "X");
|
||||||
abilita_piva(msk);
|
abilita_piva();
|
||||||
//message_box("Inserire prima il fornitore");
|
//message_box("Inserire prima il fornitore");
|
||||||
//return false;
|
//return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString& codfisc = msk->get(F_COFIS);
|
const TString& codfisc = msk.get(F_COFIS);
|
||||||
const TString& stato_piva = msk->get(F_STATOPAIVS);
|
const TString& stato_piva = msk.get(F_STATOPAIVS);
|
||||||
const TString& piva = msk->get(F_PIVAS);
|
const TString& piva = msk.get(F_PIVAS);
|
||||||
TString query;
|
TString query;
|
||||||
TString date = "";
|
TDate date;
|
||||||
|
|
||||||
if (msk->get_bool(F_ENABDATE))
|
if (msk.get_bool(F_ENABDATE))
|
||||||
date = msk->get_date(F_DATESEARCH);
|
date = msk.get_date(F_DATESEARCH);
|
||||||
if(!msk->get_bool(F_ENABSEARCH))
|
if(!msk.get_bool(F_ENABSEARCH))
|
||||||
query = query_fppro(msk->get(F_CODCLIFORS), date);
|
query = query_fppro(msk.get(F_CODCLIFORS), date);
|
||||||
else
|
else
|
||||||
query = query_fppro(stato_piva, piva, date);
|
query = query_fppro(stato_piva, piva, date);
|
||||||
fp_db().sq_set_exec(query, false);
|
fp_db().sq_set_exec(query, false);
|
||||||
|
|
||||||
TSheet_field& sf = msk->sfield(F_SHEETFPPROS);
|
TSheet_field& sf = msk.sfield(F_SHEETFPPROS);
|
||||||
|
const bool show_all = msk.get_bool(F_SHOWALL);
|
||||||
|
|
||||||
sf.hide();
|
sf.reset();
|
||||||
if (sf.items() > 0)
|
|
||||||
sf.destroy();
|
|
||||||
while (fp_db().sq_next())
|
while (fp_db().sq_next())
|
||||||
{
|
{
|
||||||
TString numreg = fp_db().sq_get("PZ_NUMREGCONT");
|
const long numreg = fp_db().sq_get_long("PZ_NUMREGCONT");
|
||||||
const bool show_all = msk->get_bool(F_SHOWALL);
|
|
||||||
|
|
||||||
if (numreg != "0" && !show_all)
|
if (show_all || numreg == 0L)
|
||||||
continue;
|
{
|
||||||
|
|
||||||
TToken_string& row = sf.row(-1);
|
|
||||||
TToken_string keys(fp_db().sq_get("PZ_KEYPRGINVIO"), ';');
|
TToken_string keys(fp_db().sq_get("PZ_KEYPRGINVIO"), ';');
|
||||||
|
|
||||||
keys.add(fp_db().sq_get("PZ_KEYHEADERFATT")); keys.add(fp_db().sq_get("PZ_KEYBODYFATT"));
|
keys.add(fp_db().sq_get("PZ_KEYHEADERFATT")); keys.add(fp_db().sq_get("PZ_KEYBODYFATT"));
|
||||||
row.add("", 0);
|
|
||||||
row.add(fp_db().sq_get("P7_TIPODOC"));
|
const int r = sf.set_row_cell(F_SELFPPROS, "");
|
||||||
row.add(TDate(fp_db().sq_get_date("P1_DATAORARIC")));
|
|
||||||
row.add(TDate(fp_db().sq_get_date("PZ_DATA")));
|
sf.set_row_cell(F_TIPODOCS, fp_db().sq_get("P7_TIPODOC"), r);
|
||||||
row.add(fp_db().sq_get("PQ_IMPTOTDOC"));
|
sf.set_row_cell(F_DATAORARICS, fp_db().sq_get_date("P1_DATAORARIC"), r);
|
||||||
row.add(fppro_db().set_keys(keys).get_ritenute());
|
sf.set_row_cell(F_DATAS, fp_db().sq_get_date("PZ_DATA"), r);
|
||||||
row.add(fp_db().sq_get("PZ_NUMERO"));
|
sf.set_row_cell(F_IMPTOTDOCS, fp_db().sq_get("PQ_IMPTOTDOC"), r);
|
||||||
row.add(fp_db().sq_get("P2_ANADENOMIN"));
|
sf.set_row_cell(F_RITENUTE, fppro_db().set_keys(keys).get_ritenute(), r);
|
||||||
row.add(fp_db().sq_get("P2_FISCIVAPAESE"));
|
sf.set_row_cell(F_NUMEROS, fp_db().sq_get("PZ_NUMERO"), r);
|
||||||
row.add(fp_db().sq_get("P2_FISCIVACOD"));
|
sf.set_row_cell(F_RAGXML, fp_db().sq_get("P2_ANADENOMIN"), r);
|
||||||
row.add(fp_db().sq_get("P2_CODFISCALE"));
|
sf.set_row_cell(F_FISCIVAPAESES, fp_db().sq_get("P2_FISCIVAPAESE"), r);
|
||||||
row.add(fp_db().sq_get("PZ_TIPOPROT"));
|
sf.set_row_cell(F_FISCIVACODS, fp_db().sq_get("P2_FISCIVACOD"), r);
|
||||||
row.add(fp_db().sq_get("PZ_NUMPROT"));
|
sf.set_row_cell(F_CODFISCALES, fp_db().sq_get("P2_CODFISCALE"), r);
|
||||||
row.add(keys);
|
sf.set_row_cell(F_TIPOPROTS, fp_db().sq_get("PZ_TIPOPROT"), r);
|
||||||
|
sf.set_row_cell(F_PROGRESSS, fp_db().sq_get("PZ_NUMPROT"), r);
|
||||||
|
sf.set_row_cell(F_KEYFPPROS, keys, r);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sf.force_update();
|
sf.force_update();
|
||||||
sf.show();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPro_msk::fppro_handler(TMask_field& f, KEY k)
|
bool TPro_msk::riporta(TMask_field& f)
|
||||||
{
|
{
|
||||||
TMask& msk = f.mask();
|
TMask& msk = f.mask();
|
||||||
|
|
||||||
const bool load = load_fppro_mask(&msk, k);
|
|
||||||
return load;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TPro_msk::riporta_handler(TMask_field& f, KEY k)
|
|
||||||
{
|
|
||||||
if (k != 32)
|
|
||||||
return true;
|
|
||||||
TMask& msk = f.mask();
|
|
||||||
//if (msk.curr_page() != 3)
|
//if (msk.curr_page() != 3)
|
||||||
//return true;
|
//return true;
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
@ -4254,16 +4233,10 @@ bool TPro_msk::riporta_handler(TMask_field& f, KEY k)
|
|||||||
|
|
||||||
FOR_EACH_SHEET_ROW(sf, nr, row)
|
FOR_EACH_SHEET_ROW(sf, nr, row)
|
||||||
{
|
{
|
||||||
if(*row->get(0) == 'X')
|
if(row->get_bool(0))
|
||||||
{
|
{
|
||||||
//TProtocollo protocollo(TDate(row->get(2)).year(), row->get(9), row->get(10));
|
app().pro_mask()->set_doc(sf, nr);
|
||||||
app()._pro_mask->set_doc(row->get(cid2index(F_NUMEROS)), row->get(cid2index(F_DATAS)),
|
_riporta = f.dlg() == DLG_OK;
|
||||||
row->get(cid2index(F_IMPTOTDOCS)), row->get(cid2index(F_RITENUTE)), "", row->get(cid2index(F_KEYFPPROS)),
|
|
||||||
msk.get(F_CODCLIFORS), row->get(cid2index(F_FISCIVACODS)));
|
|
||||||
if (f.dlg() == DLG_OK)
|
|
||||||
app()._pro_mask->_riporta = true;
|
|
||||||
else
|
|
||||||
app()._pro_mask->_riporta = false;
|
|
||||||
ok = true;
|
ok = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -4277,67 +4250,56 @@ bool TPro_msk::riporta_handler(TMask_field& f, KEY k)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPro_msk::collega_handler(TMask_field& f, KEY k)
|
|
||||||
{
|
|
||||||
return riporta_handler(f, k);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TPro_msk::piva_handler(TMask_field& f, KEY k)
|
|
||||||
{
|
|
||||||
TMask& msk = f.mask();
|
|
||||||
bool ok = true;
|
|
||||||
|
|
||||||
if(k == K_TAB && f.active() && f.focusdirty())
|
|
||||||
{
|
|
||||||
ok = load_fppro_mask(&msk, K_SPACE);
|
|
||||||
}
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TPro_msk::date_handler(TMask_field& f, KEY k)
|
|
||||||
{
|
|
||||||
TMask& msk = f.mask();
|
|
||||||
bool ok = true;
|
|
||||||
|
|
||||||
if (k == K_TAB && f.active() && f.focusdirty())
|
|
||||||
{
|
|
||||||
ok = load_fppro_mask(&msk, K_SPACE);
|
|
||||||
}
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TPro_msk::fppro_selfatt() const
|
void TPro_msk::fppro_selfatt() const
|
||||||
{
|
{
|
||||||
const TMask& mask = *this;
|
const TMask& mask = *this;
|
||||||
TSheet_field& sf = mask.sfield(F_SHEETFPPROS);
|
TSheet_field& sf = mask.sfield(F_SHEETFPPROS);
|
||||||
|
|
||||||
sf.hide();
|
|
||||||
FOR_EACH_SHEET_ROW(sf, nr, row)
|
FOR_EACH_SHEET_ROW(sf, nr, row)
|
||||||
{
|
if (sf.get_bool_row_cell(nr, F_SELFPPROS))
|
||||||
if (*row->get(0) == 'X')
|
sf.set_row_cell(F_SELFPPROS, false, nr);
|
||||||
row->add("", 0);
|
|
||||||
}
|
|
||||||
sf.force_update();
|
sf.force_update();
|
||||||
sf.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
|
TMask & m = o.mask();
|
||||||
|
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
|
case DLG_CONFIG:
|
||||||
|
if (e == fe_button)
|
||||||
|
load_fppro_mask(m);
|
||||||
|
break;
|
||||||
|
case DLG_OK:
|
||||||
|
if (e == fe_button)
|
||||||
|
riporta(o);
|
||||||
|
break;
|
||||||
|
case DLG_LINK:
|
||||||
|
if (e == fe_button)
|
||||||
|
riporta(o);
|
||||||
|
break;
|
||||||
|
case F_PIVAS:
|
||||||
|
if (e == fe_modify)
|
||||||
|
load_fppro_mask(m);
|
||||||
|
break;
|
||||||
|
case F_DATESEARCH:
|
||||||
|
if (e == fe_modify)
|
||||||
|
load_fppro_mask(m);
|
||||||
|
break;
|
||||||
case F_SELFPPROS:
|
case F_SELFPPROS:
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
fppro_selfatt();
|
fppro_selfatt();
|
||||||
break;
|
break;
|
||||||
case F_SHOWALL:
|
case F_SHOWALL:
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
load_fppro_mask(this, K_SPACE);
|
load_fppro_mask(m);
|
||||||
break;
|
break;
|
||||||
case F_ENABSEARCH:
|
case F_ENABSEARCH:
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
{
|
||||||
abilita_piva(this);
|
abilita_piva();
|
||||||
load_fppro_mask(this);
|
load_fppro_mask(m);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_ENABDATE:
|
case F_ENABDATE:
|
||||||
@ -4345,7 +4307,7 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
{
|
{
|
||||||
field(F_DATESEARCH).show(o.mask().get_bool(F_ENABDATE));
|
field(F_DATESEARCH).show(o.mask().get_bool(F_ENABDATE));
|
||||||
if (!o.mask().get_bool(F_ENABDATE))
|
if (!o.mask().get_bool(F_ENABDATE))
|
||||||
load_fppro_mask(this);
|
load_fppro_mask(m);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -4356,9 +4318,11 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
|
|
||||||
bool TPro_msk::is_doc_split()
|
bool TPro_msk::is_doc_split()
|
||||||
{
|
{
|
||||||
for(riga_iva_s const& riga : _righe_iva)
|
FOR_EACH_ARRAY_ITEM(_righe_iva, r, obj)
|
||||||
{
|
{
|
||||||
if (riga.esigibilita == 'S')
|
TToken_string & riga = STRING_TOKEN(obj);
|
||||||
|
|
||||||
|
if (riga.get(FPRI_ESIGIBILITA) == "S")
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -4395,53 +4359,71 @@ 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* codforn, const char* piva)
|
void TPro_msk::set_doc(TSheet_field & s, int nrow)
|
||||||
|
//long numero, TDate datadoc, real totdoc, real ritenute, const char* protfppro, const char* fpprokeys, long codforn, const char* piva)
|
||||||
{
|
{
|
||||||
_numero = numero;
|
_numero = s.get_long_row_cell(nrow, F_NUMEROS);
|
||||||
_datadoc = datadoc;
|
_str_numero = s.get_str_row_cell(nrow, F_NUMEROS);
|
||||||
_totdoc = abs(totdoc);
|
_datadoc = s.get_date_row_cell(nrow, F_DATAS);
|
||||||
_ritenute = ritenute;
|
_totdoc = abs(s.get_real_row_cell(nrow, F_IMPTOTDOCS));
|
||||||
_protfppro.sset(protfppro);
|
_ritenute = s.get_real_row_cell(nrow, F_RITENUTE);
|
||||||
|
_protfppro.sset("");
|
||||||
|
|
||||||
|
const TString & fpprokeys = s.get_str_row_cell(nrow, F_KEYFPPROS);
|
||||||
|
|
||||||
_fpprokeys = fpprokeys;
|
_fpprokeys = fpprokeys;
|
||||||
_codforn = codforn;
|
|
||||||
_piva = piva;
|
|
||||||
set_righeiva(fpprokeys);
|
set_righeiva(fpprokeys);
|
||||||
set_scadenze(fpprokeys);
|
set_scadenze(fpprokeys);
|
||||||
|
_codforn = s.get_long_row_cell(nrow, F_CODCLIFORS);
|
||||||
|
_piva = s.get_str_row_cell(nrow, F_FISCIVACODS);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
real TPro_msk::get_tot_imp_riva()
|
real TPro_msk::get_tot_imp_riva()
|
||||||
{
|
{
|
||||||
real tot = ZERO;
|
real tot;
|
||||||
|
|
||||||
for(riga_iva_s const& riga : _righe_iva)
|
FOR_EACH_ARRAY_ITEM(_righe_iva, r, obj)
|
||||||
{
|
{
|
||||||
if (riga.imposta > ZERO)
|
TToken_string & riga = STRING_TOKEN(obj);
|
||||||
tot += riga.imponibile;
|
|
||||||
|
tot += riga.get_real(FPRI_IMPONIBILE);
|
||||||
}
|
}
|
||||||
return tot;
|
return tot;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPro_msk::add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib)
|
void TPro_msk::add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib)
|
||||||
{
|
{
|
||||||
_righe_iva.insert(_righe_iva.end(), { imponibile, imposta, aliquota, natura, esigib });
|
TToken_string riga;
|
||||||
|
|
||||||
|
riga.add(imponibile, FPRI_IMPONIBILE);
|
||||||
|
riga.add(imposta, FPRI_IMPOSTA);
|
||||||
|
riga.add(aliquota, FPRI_ALIQUOTA);
|
||||||
|
riga.add(natura, FPRI_NATURA);
|
||||||
|
riga.add(esigib, FPRI_ESIGIBILITA);
|
||||||
|
_righe_iva.add(riga);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPro_msk::add_scad(const TDate& date, const real& importo)
|
void TPro_msk::add_scad(const TDate& date, const real& importo)
|
||||||
{
|
{
|
||||||
_scadenze.insert(_scadenze.end(), { date, importo });
|
TToken_string riga;
|
||||||
|
|
||||||
|
riga.add(date, FPSC_DATA);
|
||||||
|
riga.add(importo, FPSC_IMPORTO);
|
||||||
|
_scadenze.add(riga);
|
||||||
}
|
}
|
||||||
|
|
||||||
TString& TPro_msk::query_fppro(const TString& codforn, const TString& date)
|
TString& TPro_msk::query_fppro(const TString& codforn, const TDate& date)
|
||||||
{
|
{
|
||||||
return query_fppro(codforn, "", "", "", date, "", "", "", true, false);
|
return query_fppro(codforn, "", "", "", date, "", "", "", true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TString& date)
|
TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TDate& date)
|
||||||
{
|
{
|
||||||
return query_fppro("", stato_piva, piva, "", date, "", "", "", true, true);
|
return query_fppro("", stato_piva, piva, "", date, "", "", "", true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research)
|
TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TDate& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research)
|
||||||
{
|
{
|
||||||
TString id_fornitore;
|
TString id_fornitore;
|
||||||
TString keys;
|
TString keys;
|
||||||
@ -4465,14 +4447,15 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva
|
|||||||
id_fornitore << " (PZ_CLIFOR = '" << codforn << "') ";
|
id_fornitore << " (PZ_CLIFOR = '" << codforn << "') ";
|
||||||
}
|
}
|
||||||
|
|
||||||
static TString query;
|
TString & query = query_string();
|
||||||
query.cut(0) << query_string() << "WHERE ";
|
|
||||||
|
query << "WHERE ";
|
||||||
|
|
||||||
if (!id_fornitore.empty())
|
if (!id_fornitore.empty())
|
||||||
{
|
{
|
||||||
query << id_fornitore << " ";
|
query << id_fornitore << " ";
|
||||||
if (!date.empty())
|
if (date.ok())
|
||||||
query << " AND PZ_DATA = '" << TDate(date).date2ansi() << "' ";
|
query << " AND PZ_DATA = '" << date.date2ansi() << "' ";
|
||||||
if (order)
|
if (order)
|
||||||
query << "\nORDER BY P1_DATAORARIC ASC";
|
query << "\nORDER BY P1_DATAORARIC ASC";
|
||||||
query << ";";
|
query << ";";
|
||||||
@ -4484,9 +4467,9 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva
|
|||||||
query << " AND " << where_str;
|
query << " AND " << where_str;
|
||||||
query << ";";
|
query << ";";
|
||||||
}
|
}
|
||||||
else if (!date.empty())
|
else if (date.ok())
|
||||||
{
|
{
|
||||||
query << " PZ_DATA = '" << TDate(date).date2ansi() << "' ";
|
query << " PZ_DATA = '" << date.date2ansi() << "' ";
|
||||||
if (order)
|
if (order)
|
||||||
query << "\nORDER BY P1_DATAORARIC ASC, PZ_TIPOPROT ASC, PZ_NUMPROT ASC";
|
query << "\nORDER BY P1_DATAORARIC ASC, PZ_TIPOPROT ASC, PZ_NUMPROT ASC";
|
||||||
query << ";";
|
query << ";";
|
||||||
@ -4501,9 +4484,9 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva
|
|||||||
|
|
||||||
TString& TPro_msk::query_string()
|
TString& TPro_msk::query_string()
|
||||||
{
|
{
|
||||||
static TString query;
|
TString & query = get_tmp_string(512);
|
||||||
|
|
||||||
query.cut(0) << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, " <<
|
query << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, " <<
|
||||||
"PZ_NUMPROT, P2_ANADENOMIN, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" <<
|
"PZ_NUMPROT, P2_ANADENOMIN, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" <<
|
||||||
"FROM PAA0200F \nJOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" <<
|
"FROM PAA0200F \nJOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" <<
|
||||||
"JOIN PAA0100F \nON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" <<
|
"JOIN PAA0100F \nON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" <<
|
||||||
@ -4512,36 +4495,26 @@ TString& TPro_msk::query_string()
|
|||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPro_msk::abilita_piva(TMask* msk)
|
void TPro_msk::abilita_piva()
|
||||||
{
|
{
|
||||||
if (msk->get_bool(F_ENABSEARCH))
|
const bool on = get_bool(F_ENABSEARCH);
|
||||||
{
|
|
||||||
msk->enable(F_PIVAS);
|
enable(F_PIVAS, on);
|
||||||
msk->enable(F_STATOPAIVS);
|
enable(F_STATOPAIVS, on);
|
||||||
}
|
enable(F_COFIS, on);
|
||||||
else
|
|
||||||
{
|
|
||||||
msk->enable(F_PIVAS, false);
|
|
||||||
msk->enable(F_STATOPAIVS, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false), _codforn("")
|
TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false), _codforn(0L), _numero(0L)
|
||||||
{
|
{
|
||||||
TMask::set_handler(DLG_CONFIG, fppro_handler);
|
enable(DLG_OK, app().has_module(F1AUT));
|
||||||
TMask::set_handler(DLG_OK, riporta_handler);
|
set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR));
|
||||||
if (!app().has_module(F1AUT))
|
set(F_COFIS, cg_msk.get(F_COFI));
|
||||||
field(DLG_OK).disable();
|
set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV));
|
||||||
TMask::set_handler(DLG_LINK, collega_handler);
|
set(F_PIVAS, cg_msk.get(F_PIVA));
|
||||||
TMask::set_handler(F_PIVAS, piva_handler);
|
set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF));
|
||||||
TMask::set_handler(F_DATESEARCH, date_handler);
|
|
||||||
TMask::set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR));
|
|
||||||
TMask::set(F_COFIS, cg_msk.get(F_COFI));
|
|
||||||
TMask::set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV));
|
|
||||||
TMask::set(F_PIVAS, cg_msk.get(F_PIVA));
|
|
||||||
TMask::set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF));
|
|
||||||
set(F_DATESEARCH, TDate(TODAY));
|
set(F_DATESEARCH, TDate(TODAY));
|
||||||
_righe_iva.clear();
|
_righe_iva.destroy();
|
||||||
|
_scadenze.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool& is_f1()
|
bool& is_f1()
|
||||||
@ -4549,3 +4522,4 @@ bool& is_f1()
|
|||||||
static bool is_f1 = false;
|
static bool is_f1 = false;
|
||||||
return is_f1;
|
return is_f1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
181
src/cg/cg2102.h
181
src/cg/cg2102.h
@ -27,15 +27,78 @@
|
|||||||
|
|
||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include "../f1/f1lib.h"
|
#include "../f1/f1lib.h"
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#define K_ELIMMAS 0 // Key per eliminazione massima
|
#define K_ELIMMAS 0 // Key per eliminazione massima
|
||||||
|
|
||||||
class TPro_msk;
|
#define FPRI_IMPONIBILE 0
|
||||||
|
#define FPRI_IMPOSTA 1
|
||||||
|
#define FPRI_ALIQUOTA 2
|
||||||
|
#define FPRI_NATURA 3
|
||||||
|
#define FPRI_ESIGIBILITA 4
|
||||||
|
|
||||||
|
#define FPSC_DATA 0
|
||||||
|
#define FPSC_IMPORTO 1
|
||||||
|
|
||||||
class TDati_mov_auto;
|
class TDati_mov_auto;
|
||||||
|
|
||||||
enum CGMaskType { _query = 0, _no_iva = 1, _iva = 2, _occas = 3};
|
enum CGMaskType { _query = 0, _no_iva = 1, _iva = 2, _occas = 3};
|
||||||
|
|
||||||
|
class TPro_msk : public TAutomask
|
||||||
|
{
|
||||||
|
long _numero;
|
||||||
|
TDate _datadoc;
|
||||||
|
real _totdoc;
|
||||||
|
real _ritenute;
|
||||||
|
TProtocollo _protfppro;
|
||||||
|
TString _fpprokeys;
|
||||||
|
TString _piva;
|
||||||
|
long _codforn;
|
||||||
|
TString_array _righe_iva;
|
||||||
|
TString_array _scadenze;
|
||||||
|
bool _riporta;
|
||||||
|
TString _str_numero;
|
||||||
|
|
||||||
|
// Non permette la selezione multipla
|
||||||
|
void fppro_selfatt() const;
|
||||||
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
||||||
|
public:
|
||||||
|
bool da_riportare() const { return _riporta; }
|
||||||
|
bool is_doc_split() ;
|
||||||
|
|
||||||
|
void set_righeiva(const char* fpprokeys);
|
||||||
|
void set_scadenze(const char* fpprokeys);
|
||||||
|
void set_doc(TSheet_field & s, int nrow);
|
||||||
|
|
||||||
|
const long get_numdoc() const { return _numero; }
|
||||||
|
const TString & get_str_numdoc() const { return _str_numero; }
|
||||||
|
const TDate & get_datadoc() const { return _datadoc; }
|
||||||
|
const real & get_totdoc() const { return _totdoc; }
|
||||||
|
const real & get_ritenute() const { return _ritenute; }
|
||||||
|
const TString & get_fpprokeys() const { return _fpprokeys; }
|
||||||
|
const long get_codforn() const { return _codforn; }
|
||||||
|
const TString & get_piva() const { return _piva; }
|
||||||
|
const TString_array& get_righeiva() const { return _righe_iva; }
|
||||||
|
const TProtocollo& get_protocollo() const { return _protfppro; }
|
||||||
|
const TString_array& get_scadenze() const { return _scadenze; }
|
||||||
|
real get_tot_imp_riva() ;
|
||||||
|
|
||||||
|
void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib);
|
||||||
|
void add_scad(const TDate& date, const real& importo);
|
||||||
|
|
||||||
|
static TString& query_fppro(const TString& codforn, const TDate& date);
|
||||||
|
static TString& query_fppro(const TString& stato_piva, const TString& piva, const TDate& date);
|
||||||
|
static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TDate& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false);
|
||||||
|
static TString& query_string();
|
||||||
|
|
||||||
|
void abilita_piva();
|
||||||
|
|
||||||
|
// Carica documenti FPPRO sulla maschera
|
||||||
|
bool riporta(TMask_field& f);
|
||||||
|
bool load_fppro_mask(TMask & msk);
|
||||||
|
|
||||||
|
TPro_msk(TMask& cg_msk);
|
||||||
|
};
|
||||||
|
|
||||||
class TPrimanota_application : public TRelation_application
|
class TPrimanota_application : public TRelation_application
|
||||||
{
|
{
|
||||||
TMovimentoPN* _rel; // Relazione principale
|
TMovimentoPN* _rel; // Relazione principale
|
||||||
@ -90,7 +153,7 @@ class TPrimanota_application : public TRelation_application
|
|||||||
|
|
||||||
TAssoc_array _colori; // Colori delle righe
|
TAssoc_array _colori; // Colori delle righe
|
||||||
bool _isf1;
|
bool _isf1;
|
||||||
shared_ptr<TPro_msk> _pro_mask;
|
TPro_msk * _pro_mask;
|
||||||
bool _is_set_fpcheck;
|
bool _is_set_fpcheck;
|
||||||
int _last_date;
|
int _last_date;
|
||||||
bool _f1_ini;
|
bool _f1_ini;
|
||||||
@ -181,20 +244,19 @@ class TPrimanota_application : public TRelation_application
|
|||||||
|
|
||||||
// Gestione F1
|
// Gestione F1
|
||||||
|
|
||||||
static void write_righe_iva_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
void write_righe_iva_f1(TMask& cg_msk, const TPro_msk & msk);
|
||||||
static bool write_scad_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
bool write_scad_f1(const TMask& cg_msk, const TPro_msk & msk);
|
||||||
static void write_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
void write_clifo(TMask& cg_msk, const TPro_msk & msk);
|
||||||
static void set_totale(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
void set_totale(TMask& cg_msk, TPro_msk & msk);
|
||||||
static void riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
static void riporta_dati_f1(TMask& cg_msk, TPro_msk & msk);
|
||||||
void insert_part_scad(TConfig& ini);
|
void insert_part_scad(TConfig& ini);
|
||||||
// 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 scollega_handler(TMask_field& f, KEY key);
|
||||||
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);
|
void load_list(TMask* msk, KEY k);
|
||||||
static void f1_init_modify(TMask& m, const TRectype& mov);
|
void f1_init(TMask& m, const bool fe_enabled, const bool f1_linked = false);
|
||||||
|
|
||||||
void reset_sheet_row(TSheet_field& s, int n);
|
void reset_sheet_row(TSheet_field& s, int n);
|
||||||
int crea_somma_spese(TImporto& imp);
|
int crea_somma_spese(TImporto& imp);
|
||||||
@ -223,9 +285,10 @@ protected: // TApplication
|
|||||||
static bool scollega(bool set = false);
|
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
|
// Ha f1 ?
|
||||||
void set_has_f1_db(TMask* m);
|
bool has_f1() const;
|
||||||
bool has_f1_db(TMask* m);
|
// controlla il db
|
||||||
|
bool has_f1_db(const TMask & m);
|
||||||
// Controlli prima di write e rewrite
|
// Controlli prima di write e rewrite
|
||||||
int controlli_f1(const TMask& m);
|
int controlli_f1(const TMask& m);
|
||||||
|
|
||||||
@ -321,7 +384,7 @@ protected:
|
|||||||
real calcola_imp() const;
|
real calcola_imp() const;
|
||||||
|
|
||||||
void add_cgs_tot(TMask& m);
|
void add_cgs_tot(TMask& m);
|
||||||
int set_cgs_row(int n, const TImporto& importo, const TBill& conto, const char* desc, char tipo,
|
int set_cgs_row(int n, TImporto& importo, const TBill& conto, const char* desc, char tipo,
|
||||||
const char* cms = nullptr, const char* fas = nullptr);
|
const char* cms = nullptr, const char* fas = nullptr);
|
||||||
void set_cgs_imp(int n, const TImporto& importo);
|
void set_cgs_imp(int n, const TImporto& importo);
|
||||||
bool add_cgs_imp(int n, const TImporto& importo);
|
bool add_cgs_imp(int n, const TImporto& importo);
|
||||||
@ -400,98 +463,18 @@ public:
|
|||||||
TString_array& pag_rows() { return _pag_rows; }
|
TString_array& pag_rows() { return _pag_rows; }
|
||||||
TImporto get_cgs_imp(int n) const;
|
TImporto get_cgs_imp(int n) const;
|
||||||
|
|
||||||
|
TPro_msk * pro_mask() const { return _pro_mask; }
|
||||||
|
|
||||||
TImporto imposte_split_pay() const;
|
TImporto imposte_split_pay() const;
|
||||||
const TString& num_doc_rif() const { return _num_doc_rif_partite; }
|
const TString& num_doc_rif() const { return _num_doc_rif_partite; }
|
||||||
|
|
||||||
TPrimanota_application();
|
TPrimanota_application();
|
||||||
virtual ~TPrimanota_application() { }
|
virtual ~TPrimanota_application() { safe_delete(_pro_mask); }
|
||||||
};
|
|
||||||
|
|
||||||
class TPro_msk : public TAutomask
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
struct riga_iva_s;
|
|
||||||
struct scadenza_s;
|
|
||||||
private:
|
|
||||||
TString _numero;
|
|
||||||
TDate _datadoc;
|
|
||||||
real _totdoc;
|
|
||||||
real _ritenute;
|
|
||||||
TProtocollo _protfppro;
|
|
||||||
TString _fpprokeys;
|
|
||||||
TString _piva;
|
|
||||||
TString _codforn;
|
|
||||||
vector<riga_iva_s> _righe_iva;
|
|
||||||
vector<scadenza_s> _scadenze;
|
|
||||||
bool _riporta;
|
|
||||||
|
|
||||||
// Handlers per aggancio FPPRO
|
|
||||||
// Bottone carica documenti in maschera FPPRO
|
|
||||||
static bool fppro_handler(TMask_field& f, KEY k);
|
|
||||||
// Bottone riporta doc FPPRO in testata Prima Nota
|
|
||||||
static bool riporta_handler(TMask_field& f, KEY k);
|
|
||||||
static bool collega_handler(TMask_field& f, KEY k);
|
|
||||||
static bool piva_handler(TMask_field& f, KEY k);
|
|
||||||
static bool date_handler(TMask_field& f, KEY k);
|
|
||||||
// Non permette la selezione multipla
|
|
||||||
void fppro_selfatt() const;
|
|
||||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
|
||||||
public:
|
|
||||||
struct riga_iva_s
|
|
||||||
{
|
|
||||||
real imponibile;
|
|
||||||
real imposta;
|
|
||||||
real aliquota;
|
|
||||||
TString4 natura;
|
|
||||||
char esigibilita;
|
|
||||||
};
|
|
||||||
struct scadenza_s
|
|
||||||
{
|
|
||||||
TDate data;
|
|
||||||
real importo;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool should_bring_back() const { return _riporta; }
|
|
||||||
bool is_doc_split();
|
|
||||||
|
|
||||||
void set_righeiva(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* codforn, const char* piva);
|
|
||||||
|
|
||||||
TString get_numdoc() const { return _numero; }
|
|
||||||
TDate get_datadoc() const { return _datadoc; }
|
|
||||||
real get_totdoc() const { return _totdoc; }
|
|
||||||
real get_ritenute() const { return _ritenute; }
|
|
||||||
TString get_fpprokeys() const { return _fpprokeys; }
|
|
||||||
TString get_codforn() const { return _codforn; }
|
|
||||||
TString get_piva() const { return _piva; }
|
|
||||||
const vector<riga_iva_s>& get_righeiva() const { return _righe_iva; }
|
|
||||||
TProtocollo& get_protocollo() { return _protfppro; }
|
|
||||||
vector<scadenza_s>& get_scadenze() { return _scadenze; }
|
|
||||||
real get_tot_imp_riva();
|
|
||||||
|
|
||||||
|
|
||||||
void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib);
|
|
||||||
void add_scad(const TDate& date, const real& importo);
|
|
||||||
|
|
||||||
|
|
||||||
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& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false);
|
|
||||||
static TString& query_string();
|
|
||||||
|
|
||||||
static void abilita_piva(TMask* msk);
|
|
||||||
|
|
||||||
// Carica documenti FPPRO sulla maschera
|
|
||||||
static bool load_fppro_mask(TMask* msk, KEY k = 32);
|
|
||||||
|
|
||||||
TPro_msk() = delete;
|
|
||||||
TPro_msk(TMask& cg_msk);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bool& is_f1();
|
bool& is_f1();
|
||||||
TString& num_doc_rif();
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __EXTRA__
|
#ifndef __EXTRA__
|
||||||
inline TPrimanota_application& app()
|
inline TPrimanota_application& app()
|
||||||
|
@ -329,7 +329,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
|||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
TPrimanota_application& a = app();
|
TPrimanota_application& a = app();
|
||||||
const bool set_scad = a.is_fattura() && m.page_enabled(2); // E' attiva pagina 3
|
const bool set_scad = a.is_fattura() && m.page_enabled(2); // E' attiva pagina 3
|
||||||
if (key == K_ENTER && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back())))
|
if (key == K_ENTER && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare())))
|
||||||
{
|
{
|
||||||
if (set_scad && f.empty())
|
if (set_scad && f.empty())
|
||||||
{
|
{
|
||||||
@ -356,7 +356,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back())))
|
if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare())))
|
||||||
a.set_scadenze(m);
|
a.set_scadenze(m);
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
@ -1227,8 +1227,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
|
|||||||
// Aggiornamento contopartita
|
// Aggiornamento contopartita
|
||||||
const TImporto old_importo(controsez, old_pag.get_real(PAGSCA_IMPORTO));
|
const TImporto old_importo(controsez, old_pag.get_real(PAGSCA_IMPORTO));
|
||||||
TBill old_conto; old_conto.get(old_pag, true);
|
TBill old_conto; old_conto.get(old_pag, true);
|
||||||
|
TImporto new_importo(controsez, new_pag.get_real(PAGSCA_IMPORTO));
|
||||||
const TImporto new_importo(controsez, new_pag.get_real(PAGSCA_IMPORTO));
|
|
||||||
|
|
||||||
if (old_importo != new_importo || old_conto != new_conto)
|
if (old_importo != new_importo || old_conto != new_conto)
|
||||||
{
|
{
|
||||||
@ -1298,7 +1297,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
|
|||||||
const real new_ritenute(new_pag.get(PAGSCA_RITENUTE));
|
const real new_ritenute(new_pag.get(PAGSCA_RITENUTE));
|
||||||
if (old_ritenute != new_ritenute)
|
if (old_ritenute != new_ritenute)
|
||||||
{
|
{
|
||||||
const TImporto grow_ritenute(causale().sezione_ritfis(), new_ritenute - old_ritenute);
|
TImporto grow_ritenute(causale().sezione_ritfis(), new_ritenute - old_ritenute);
|
||||||
const int riga = type2pos(cgrowtype_ritfis);
|
const int riga = type2pos(cgrowtype_ritfis);
|
||||||
|
|
||||||
if (riga < 0)
|
if (riga < 0)
|
||||||
@ -1319,7 +1318,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
|
|||||||
const real new_ritsoc(new_pag.get(PAGSCA_RITSOC));
|
const real new_ritsoc(new_pag.get(PAGSCA_RITSOC));
|
||||||
if (old_ritsoc != new_ritsoc)
|
if (old_ritsoc != new_ritsoc)
|
||||||
{
|
{
|
||||||
const TImporto grow_ritenute(causale().sezione_ritsoc(), new_ritsoc-old_ritsoc);
|
TImporto grow_ritenute(causale().sezione_ritsoc(), new_ritsoc-old_ritsoc);
|
||||||
const int riga = type2pos(cgrowtype_ritsoc);
|
const int riga = type2pos(cgrowtype_ritsoc);
|
||||||
|
|
||||||
if (riga < 0)
|
if (riga < 0)
|
||||||
|
@ -220,12 +220,13 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int c
|
|||||||
rilore_recset.set_var("#TPRA", tiporisorsa);
|
rilore_recset.set_var("#TPRA", tiporisorsa);
|
||||||
rilore_recset.set_var("#CODICE", curr_risorsa);
|
rilore_recset.set_var("#CODICE", curr_risorsa);
|
||||||
|
|
||||||
if (!ignore && calc_ore_lav && rep.field("F1.201") != nullptr)
|
if (!ignore && calc_ore_lav)// && rep.field("F1.201") != nullptr)
|
||||||
{
|
{
|
||||||
for (int d = 1; d <= 31; ++d)
|
for (int d = 1; d <= 31; ++d)
|
||||||
{
|
{
|
||||||
TString8 fld = "H0."; fld << 200 + d;
|
TString8 fld = "H0."; fld << 200 + d;
|
||||||
|
|
||||||
|
if (rep.exist(fld))
|
||||||
rep.field(fld)->set("");
|
rep.field(fld)->set("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -282,9 +283,6 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int c
|
|||||||
const TString8 tpora = rilore_recset.get_string(RILORE_TPORA);
|
const TString8 tpora = rilore_recset.get_string(RILORE_TPORA);
|
||||||
const TString8 tpassenza = cache().get("&ORE", tpora, "S2");
|
const TString8 tpassenza = cache().get("&ORE", tpora, "S2");
|
||||||
|
|
||||||
if (tpassenza == "OA")
|
|
||||||
int i = 1;
|
|
||||||
|
|
||||||
//crea la chiave per l'assoc_array
|
//crea la chiave per l'assoc_array
|
||||||
TToken_string key;
|
TToken_string key;
|
||||||
|
|
||||||
|
293
src/f1/f1lib.cpp
293
src/f1/f1lib.cpp
@ -20,20 +20,14 @@ TFppro& fppro_db()
|
|||||||
return *fppro;
|
return *fppro;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TFppro::sql_inj(const TString& str)
|
bool TFppro::sql_inj(TToken_string& keys)
|
||||||
{
|
|
||||||
TString appo; appo << str;
|
|
||||||
appo.upper();
|
|
||||||
return appo.contains("--") || appo.contains("SELECT") || appo.contains("DELETE") || appo.contains("DROP");
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TFppro::sql_inj(const keys_s& keys)
|
|
||||||
{
|
{
|
||||||
TToken_string str("", ';');
|
TToken_string str("", ';');
|
||||||
str.add(keys.prginvio);
|
|
||||||
str.add(keys.headerfatt);
|
str.add(keys.get(0));
|
||||||
str.add(keys.bodyfatt);
|
str.add(keys.get(1));
|
||||||
return sql_inj(str);
|
str.add(keys.get(2));
|
||||||
|
return str.contains("--") || str.contains("SELECT") || str.contains("DELETE") || str.contains("DROP");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TFppro::check_reg(TToken_string& keys, int numreg)
|
bool TFppro::check_reg(TToken_string& keys, int numreg)
|
||||||
@ -44,68 +38,74 @@ bool TFppro::check_reg(TToken_string& keys, int numreg)
|
|||||||
bool TFppro::guess_the_doc(const TLocalisamfile& mov)
|
bool TFppro::guess_the_doc(const TLocalisamfile& mov)
|
||||||
{
|
{
|
||||||
// Prendo il fornitore del mov per controllare la p.iva
|
// Prendo il fornitore del mov per controllare la p.iva
|
||||||
TLocalisamfile clifo(LF_CLIFO);
|
TCli_for forn = cached_clifor('F', mov.get_long(MOV_CODCF));
|
||||||
clifo.put(CLI_TIPOCF, "F");
|
|
||||||
const TString& codforn = mov.get(MOV_CODCF);
|
const TString4 statopiva(forn.get(CLI_STATOPAIV));
|
||||||
clifo.put(CLI_CODCF, codforn);
|
|
||||||
clifo.read();
|
|
||||||
TString cli_statopiva, cli_piva;
|
|
||||||
cli_statopiva << clifo.get(CLI_STATOPAIV);
|
|
||||||
cli_piva << clifo.get(CLI_PAIV);
|
|
||||||
const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC);
|
const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC);
|
||||||
TString numdoc = mov.get(MOV_NUMDOCEXT);
|
TString numdoc = mov.get(MOV_NUMDOCEXT);
|
||||||
|
|
||||||
if (numdoc.empty())
|
if (numdoc.empty())
|
||||||
numdoc = mov.get(MOV_NUMDOC);
|
numdoc = mov.get(MOV_NUMDOC);
|
||||||
// Controllo datadoc - numdoc - totdoc - p.iva
|
// Controllo datadoc - numdoc - totdoc - p.iva
|
||||||
|
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" <<
|
query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" <<
|
||||||
"\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" <<
|
"\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" <<
|
||||||
"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
|
"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
|
||||||
"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" <<
|
"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" <<
|
||||||
"WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" <<
|
"WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" <<
|
||||||
"(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') AND \n" <<
|
"(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n";
|
||||||
(cli_statopiva.full() ? TString("P2_FISCIVAPAESE = '") << cli_statopiva << "' AND " : "") <<
|
if (statopiva.full())
|
||||||
"P2_FISCIVACOD = '" << cli_piva << "' AND \n" << "PQ_IMPTOTDOC = " << tot;
|
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;
|
||||||
|
|
||||||
if (_db->sq_set_exec(query) && _db->sq_items() == 1)
|
if (_db->sq_set_exec(query) && _db->sq_items() == 1)
|
||||||
{
|
{
|
||||||
_keys = { _db->sq_get("KEYPRGINVIO"), _db->sq_get("KEYHEADERFATT"), _db->sq_get("KEYBODYFATT") };
|
_keys = _db->sq_get("KEYPRGINVIO");
|
||||||
|
_keys.add(_db->sq_get("KEYHEADERFATT"));
|
||||||
|
_keys.add(_db->sq_get("KEYBODYFATT"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TFppro::get_keys_fppro() const
|
const char* TFppro::get_keys_fppro()
|
||||||
{
|
{
|
||||||
static TString keys;
|
TString& keys = get_tmp_string(64);
|
||||||
keys.cut(0) << _keys.prginvio << ";" << _keys.headerfatt << ";" << _keys.bodyfatt;
|
|
||||||
return (const char*)keys;
|
keys.cut(0) << _keys.get(0) << ";" << _keys.get(1) << ";" << _keys.get(2);
|
||||||
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TFppro::get_numreg()
|
long TFppro::get_numreg()
|
||||||
{
|
{
|
||||||
if (!_is_set)
|
if (!_is_set)
|
||||||
{
|
{
|
||||||
if (set_query())
|
if (set_query())
|
||||||
return _db->sq_get_int("PZ_NUMREGCONT");
|
return _db->sq_get_long("PZ_NUMREGCONT");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return _db->sq_get_int("PZ_NUMREGCONT");
|
return _db->sq_get_long("PZ_NUMREGCONT");
|
||||||
}
|
}
|
||||||
|
|
||||||
int TFppro::get_numreg(TToken_string& keys)
|
long TFppro::get_numreg(TToken_string& keys)
|
||||||
{
|
{
|
||||||
set_keys(keys);
|
set_keys(keys);
|
||||||
return get_numreg();
|
return get_numreg();
|
||||||
}
|
}
|
||||||
|
|
||||||
TString TFppro::get_codforn() const
|
long TFppro::get_codforn()
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
query << "SELECT PZ_CLIFOR FROM FPPRO00F\n" << where_str();
|
query << "SELECT PZ_CLIFOR FROM FPPRO00F\n" << where_str();
|
||||||
_db->sq_set_exec(query);
|
_db->sq_set_exec(query);
|
||||||
return _db->sq_get("PZ_CLIFOR");
|
return _db->sq_get_long("PZ_CLIFOR");
|
||||||
}
|
}
|
||||||
|
|
||||||
TDate TFppro::get_datareg()
|
TDate TFppro::get_datareg()
|
||||||
@ -127,12 +127,13 @@ TDate TFppro::get_datareg(TToken_string& keys)
|
|||||||
return TDate();
|
return TDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
real TFppro::get_ritenute() const
|
real TFppro::get_ritenute()
|
||||||
{
|
{
|
||||||
real imp = ZERO;
|
real imp;
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
query << "SELECT P7_IMPORTORIT AS IMPORTO FROM PAA0700F\n" <<
|
query << "SELECT P7_IMPORTORIT AS IMPORTO FROM PAA0700F\n" <<
|
||||||
"WHERE P7_KEYPRGINVIO = '" << _keys.prginvio << "' AND P7_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P7_KEYBODYFATT = '" << _keys.bodyfatt << "'";
|
"WHERE P7_KEYPRGINVIO = '" << _keys.get(0) << "' AND P7_KEYHEADERFATT = '" << _keys.get(1) << "' AND P7_KEYBODYFATT = '" << _keys.get(2) << "'";
|
||||||
_db->sq_set_exec(query, false);
|
_db->sq_set_exec(query, false);
|
||||||
for(bool ok = _db->sq_next(); ok; ok = _db->sq_next())
|
for(bool ok = _db->sq_next(); ok; ok = _db->sq_next())
|
||||||
imp += _db->sq_get_real("IMPORTO");
|
imp += _db->sq_get_real("IMPORTO");
|
||||||
@ -140,66 +141,69 @@ real TFppro::get_ritenute() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
TFppro& TFppro::set_keys(TToken_string& keys)
|
TFppro& TFppro::set_keys(TToken_string& keys)
|
||||||
{
|
|
||||||
if (keys.items() == 3)
|
|
||||||
{
|
|
||||||
const keys_s k = { keys.get(0), keys.get(1), keys.get(2) };
|
|
||||||
return set_keys(k);
|
|
||||||
}
|
|
||||||
_is_set = false;
|
|
||||||
_keys_setted = false;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
TFppro& TFppro::set_keys(const keys_s& keys)
|
|
||||||
{
|
{
|
||||||
if (sql_inj(keys))
|
if (sql_inj(keys))
|
||||||
{
|
{
|
||||||
TString msg; msg << "Database error: Possibile SQL INJECTION:\n" << keys;
|
TString msg; msg << "Database error: Possibile SQL INJECTION:\n" << keys;
|
||||||
//throw std::exception(msg);
|
;
|
||||||
error_box(msg);
|
error_box(msg);
|
||||||
_last_error.cut(0) << msg;
|
_last_error.cut(0) << msg;
|
||||||
}
|
}
|
||||||
else if (!keys.prginvio.empty() && !keys.headerfatt.empty() && !keys.bodyfatt.empty())
|
else
|
||||||
|
{
|
||||||
|
TString prginvio = keys.get(0);
|
||||||
|
TString headerfatt = keys.get(1);
|
||||||
|
TString bodyfatt = keys.get(2);
|
||||||
|
|
||||||
|
if (prginvio.full() && headerfatt.full() && bodyfatt.full())
|
||||||
{
|
{
|
||||||
_keys = keys;
|
_keys = keys;
|
||||||
_keys_setted = true;
|
_keys_setted = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_last_error.cut(0) << "Chiavi settate non valide:\n" << keys;
|
_last_error = "Chiavi settate non valide:\n";
|
||||||
|
_last_error << keys;
|
||||||
_keys_setted = false;
|
_keys_setted = false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
_is_set = false;
|
_is_set = false;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TFppro::associa_mov(const int numreg) const
|
bool TFppro::associa_mov(const long numreg)
|
||||||
{
|
{
|
||||||
bool ok;
|
TRectype & mov = (TRectype &) cache().get(LF_MOV, numreg);
|
||||||
TLocalisamfile mov(LF_MOV);
|
bool ok = mov.full();
|
||||||
mov.put(MOV_NUMREG, numreg);
|
|
||||||
if ((ok = mov.read() == NOERR))
|
if (ok)
|
||||||
{
|
|
||||||
mov.put(MOV_KEYFPPRO, get_keys_fppro());
|
|
||||||
if ((ok = mov.rewrite() == NOERR)) // Scrivo sul movimento il riferimento al fppro
|
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
query << "UPDATE FPPRO00F \nSET " <<
|
query << "UPDATE FPPRO00F \nSET " <<
|
||||||
"PZ_TIPOCF = 'F', PZ_CLIFOR = '" << mov.get(MOV_CODCF) << "', PZ_NUMREGCONT = '" <<
|
"PZ_TIPOCF = 'F', PZ_CLIFOR = '" << mov.get(MOV_CODCF) << "', PZ_NUMREGCONT = '" <<
|
||||||
mov.get(MOV_NUMREG) << "', PZ_DATAREGCONT = '" << mov.get_date(MOV_DATAREG).date2ansi() << "'\n" <<
|
mov.get(MOV_NUMREG) << "', PZ_DATAREGCONT = '" << mov.get_date(MOV_DATAREG).date2ansi() << "'\n" <<
|
||||||
fppro_db().where_str() << ";";
|
fppro_db().where_str() << ";";
|
||||||
if (!((ok = _db->sq_set_exec(query) && _db->sq_commit()))) // Se la scrittura sul db fallisce levo sul movimento il riferimento all'fppro
|
ok = _db->sq_set_exec(query) && _db->sq_commit();
|
||||||
|
|
||||||
|
if (ok) // Scrivo sul movimento il riferimento al fppro
|
||||||
{
|
{
|
||||||
mov.put(MOV_KEYFPPRO, "");
|
mov.put(MOV_IDDOCSDI, fppro_db().get_numdoc());
|
||||||
mov.rewrite();
|
mov.put(MOV_DATADOCSDI, fppro_db().get_numdoc());
|
||||||
|
mov.put(MOV_KEYFPPRO, get_keys_fppro());
|
||||||
|
ok = mov.rewrite() == NOERR;
|
||||||
}
|
}
|
||||||
|
else // Se la scrittura sul db fallisce levo sul movimento il riferimento all'fppro
|
||||||
|
{
|
||||||
|
mov.zero(MOV_IDDOCSDI);
|
||||||
|
mov.zero(MOV_DATADOCSDI);
|
||||||
|
mov.zero(MOV_KEYFPPRO);
|
||||||
|
mov.rewrite();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TFppro::get_tipoprot() const
|
const TString & TFppro::get_tipoprot()
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
@ -208,80 +212,98 @@ const char* TFppro::get_tipoprot() const
|
|||||||
return _db->sq_get("TIPOPROT");
|
return _db->sq_get("TIPOPROT");
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TFppro::get_numprot() const
|
const TString & TFppro::get_numprot()
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
static TString num;
|
|
||||||
query << "SELECT PZ_NUMPROT AS NUMPROT FROM FPPRO00F\r\n" << where_str();
|
query << "SELECT PZ_NUMPROT AS NUMPROT FROM FPPRO00F\r\n" << where_str();
|
||||||
_db->sq_set_exec(query);
|
_db->sq_set_exec(query);
|
||||||
return num.cut(0) = _db->sq_get("NUMPROT");
|
|
||||||
|
return _db->sq_get("NUMPROT");
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TFppro::get_annoprot() const
|
const TString & TFppro::get_annoprot()
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
static TString anno;
|
|
||||||
query << "SELECT PZ_ANNOPROT AS ANNOPROT FROM FPPRO00F\r\n" << where_str();
|
query << "SELECT PZ_ANNOPROT AS ANNOPROT FROM FPPRO00F\r\n" << where_str();
|
||||||
_db->sq_set_exec(query);
|
_db->sq_set_exec(query);
|
||||||
return anno.cut(0) = _db->sq_get("ANNOPROT");
|
return _db->sq_get("ANNOPROT");
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TFppro::get_dataoraric() const
|
const TString & TFppro::get_dataoraric()
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
static TString data;
|
TString & data = get_tmp_string(16);
|
||||||
|
|
||||||
query << "SELECT PZ_DATAORARIC AS DATAORARIC FROM FPPRO00F\r\n" << where_str();
|
query << "SELECT PZ_DATAORARIC AS DATAORARIC FROM FPPRO00F\r\n" << where_str();
|
||||||
_db->sq_set_exec(query);
|
_db->sq_set_exec(query);
|
||||||
return data.cut(0) << _db->sq_get_date("DATAORARIC").date2ansi();
|
data << _db->sq_get_date("DATAORARIC").date2ansi();
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TFppro::get_tipodoc() const
|
const TString & TFppro::get_tipodoc()
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
static TString tipodoc;
|
|
||||||
query << "SELECT PZ_TIPODOC AS TIPODOC FROM FPPRO00F\r\n" << where_str();
|
query << "SELECT PZ_TIPODOC AS TIPODOC FROM FPPRO00F\r\n" << where_str();
|
||||||
_db->sq_set_exec(query);
|
_db->sq_set_exec(query);
|
||||||
return tipodoc.cut(0) << _db->sq_get("TIPODOC");
|
return _db->sq_get("TIPODOC");
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TFppro::get_numdoc() const
|
const TString & TFppro::get_numdoc()
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
static TString numdoc;
|
|
||||||
query << "SELECT PZ_NUMERO AS NUMDOC FROM FPPRO00F\r\n" << where_str();
|
query << "SELECT PZ_NUMERO AS NUMDOC FROM FPPRO00F\r\n" << where_str();
|
||||||
_db->sq_set_exec(query);
|
_db->sq_set_exec(query);
|
||||||
return numdoc.cut(0) << _db->sq_get("NUMDOC");
|
return _db->sq_get("NUMDOC");
|
||||||
}
|
}
|
||||||
|
|
||||||
TDate TFppro::get_data_first_doc() const
|
TDate TFppro::get_data_first_doc() const
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
query << "SELECT min(a.DATA) AS DATA \nFROM( \n\tSELECT P7_DATA as DATA \n" <<
|
query << "SELECT min(a.DATA) AS DATA \nFROM( \n\tSELECT P7_DATA as DATA \n" <<
|
||||||
"\tFROM PAA0700F \n\tUNION \n\tSELECT P7_DATA as DATA \n\tFROM PAF0700F \n) a";
|
"\tFROM PAA0700F \n\tUNION \n\tSELECT P7_DATA as DATA \n\tFROM PAF0700F \n) a";
|
||||||
_db->sq_set_exec(query);
|
_db->sq_set_exec(query);
|
||||||
return _db->sq_get_date("DATA");
|
return _db->sq_get_date("DATA");
|
||||||
}
|
}
|
||||||
|
|
||||||
TDate TFppro::get_dataorarioric() const
|
TDate TFppro::get_data_doc()
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
|
query << "SELECT PZ_DATA FROM FPPRO00F\r\n" << where_str();
|
||||||
|
_db->sq_set_exec(query);
|
||||||
|
return _db->sq_get_date("PZ_DATA");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TDate TFppro::get_dataorarioric()
|
||||||
|
{
|
||||||
|
TString query;
|
||||||
|
|
||||||
query << "SELECT P1_DATAORARIC \nFROM PAA0100F \n" <<
|
query << "SELECT P1_DATAORARIC \nFROM PAA0100F \n" <<
|
||||||
"WHERE P1_KEYPRGINVIO = '" << _keys.prginvio << "' AND P1_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P1_KEYBODYFATT = '" << _keys.bodyfatt << "'";
|
"WHERE P1_KEYPRGINVIO = '" << _keys.get(0) << "' AND P1_KEYHEADERFATT = '" << _keys.get(1) << "' AND P1_KEYBODYFATT = '" << _keys.get(2) << "'";
|
||||||
_db->sq_set_exec(query);
|
_db->sq_set_exec(query);
|
||||||
return _db->sq_get_date("P1_DATAORARIC");
|
return _db->sq_get_date("P1_DATAORARIC");
|
||||||
}
|
}
|
||||||
|
|
||||||
int TFppro::get_numregcont() const
|
long TFppro::get_numregcont()
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
query << "SELECT PZ_NUMREGCONT FROM FPPRO00F\n" << where_str();
|
query << "SELECT PZ_NUMREGCONT FROM FPPRO00F\n" << where_str();
|
||||||
_db->sq_set_exec(query);
|
_db->sq_set_exec(query);
|
||||||
return _db->sq_get_int("PZ_NUMREGCONT");
|
return _db->sq_get_long("PZ_NUMREGCONT");
|
||||||
}
|
}
|
||||||
|
|
||||||
TString TFppro::get_last_error(bool clear)
|
TString TFppro::get_last_error(bool clear)
|
||||||
{
|
{
|
||||||
TString l(_last_error);
|
TString & l = get_tmp_string(128);
|
||||||
|
|
||||||
|
l = _last_error;
|
||||||
if(clear)
|
if(clear)
|
||||||
_last_error.cut(0);
|
_last_error.cut(0);
|
||||||
return l;
|
return l;
|
||||||
@ -297,14 +319,14 @@ bool TFppro::set_query()
|
|||||||
return _is_set = false;
|
return _is_set = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TFppro::where_str() const
|
const char* TFppro::where_str()
|
||||||
{
|
{
|
||||||
static TString str;
|
static TString str;
|
||||||
str.cut(0) << " WHERE PZ_KEYPRGINVIO = '" << _keys.prginvio << "' AND PZ_KEYHEADERFATT = '" << _keys.headerfatt << "' AND PZ_KEYBODYFATT = '" << _keys.bodyfatt << "'";
|
str.cut(0) << " WHERE PZ_KEYPRGINVIO = '" << _keys.get(0) << "' AND PZ_KEYHEADERFATT = '" << _keys.get(1) << "' AND PZ_KEYBODYFATT = '" << _keys.get(2) << "'";
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
TFppro::TFppro() : _keys({ "\0", "\0", "\0" }), _keys_setted(false), _is_set(false)
|
TFppro::TFppro() : _keys("", ';'), _keys_setted(false), _is_set(false)
|
||||||
{
|
{
|
||||||
_db = new SSimple_query();
|
_db = new SSimple_query();
|
||||||
const bool ok = set_connection(*_db);
|
const bool ok = set_connection(*_db);
|
||||||
@ -322,13 +344,14 @@ prot_s TProtocollo::get_prot()
|
|||||||
return prot;
|
return prot;
|
||||||
}
|
}
|
||||||
|
|
||||||
TString& TProtocollo::prot_in(const int year, const char* tipoprot, const char* progres)
|
const TString& TProtocollo::prot_in(const int year, const char* tipoprot, const char* progres) const
|
||||||
{
|
{
|
||||||
static TString protocollo;
|
TString & protocollo = get_tmp_string(128);
|
||||||
TString tipo(tipoprot);
|
TString tipo(tipoprot);
|
||||||
|
|
||||||
if (tipo.empty())
|
if (tipo.empty())
|
||||||
tipo << "no_prot";
|
tipo << "no_prot";
|
||||||
protocollo.cut(0) << year << "-" << tipo << "/" << progres;
|
protocollo << year << "-" << tipo << "/" << progres;
|
||||||
return protocollo;
|
return protocollo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -348,7 +371,7 @@ void TProtocollo::sset(const char* prot)
|
|||||||
_progres = p.get();
|
_progres = p.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
TString& TProtocollo::get_prot() const
|
const TString& TProtocollo::get_prot() const
|
||||||
{
|
{
|
||||||
return prot_in(_year, _tipoprot, _progres);
|
return prot_in(_year, _tipoprot, _progres);
|
||||||
}
|
}
|
||||||
@ -363,29 +386,21 @@ const char* get_ini_codcaus()
|
|||||||
return ini_get_string(FILE_CONFIG, FILE_SECTION, F1_CAUS);
|
return ini_get_string(FILE_CONFIG, FILE_SECTION, F1_CAUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* get_codcaus(const char * tipodoc, const long codcf)
|
const char* get_codcaus(const char * tipodoc, long codcf)
|
||||||
{
|
{
|
||||||
TLocalisamfile cfven(LF_CFVEN);
|
TCli_for f = cached_clifor('F', codcf);
|
||||||
cfven.put(CFV_TIPOCF, "F");
|
|
||||||
cfven.put(CFV_CODCF, codcf);
|
|
||||||
const char* codcaus = "";
|
|
||||||
const char* codcausnc = "";
|
|
||||||
const bool nc = TString(tipodoc) == "TD04";
|
const bool nc = TString(tipodoc) == "TD04";
|
||||||
|
|
||||||
if (cfven.read() == NOERR)
|
|
||||||
{
|
|
||||||
codcaus = cfven.get(CFV_CODCAUS);
|
|
||||||
codcausnc = cfven.get(CFV_CODCAUSNC);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nc)
|
if (nc)
|
||||||
{
|
{
|
||||||
if (!TString(codcausnc).empty())
|
const TString & codcaus = f.vendite().get(CFV_CODCAUSNC);
|
||||||
return codcausnc;
|
if (codcaus.full())
|
||||||
|
return codcaus;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!TString(codcaus).empty())
|
const TString & codcaus = f.vendite().get(CFV_CODCAUS);
|
||||||
|
if (codcaus.full())
|
||||||
return codcaus;
|
return codcaus;
|
||||||
}
|
}
|
||||||
return get_ini_codcaus();
|
return get_ini_codcaus();
|
||||||
@ -396,12 +411,12 @@ bool get_endatareg()
|
|||||||
return ini_get_bool(FILE_CONFIG, FILE_SECTION, "endatareg");
|
return ini_get_bool(FILE_CONFIG, FILE_SECTION, "endatareg");
|
||||||
}
|
}
|
||||||
|
|
||||||
TString get_datainireg()
|
const TString & get_datainireg()
|
||||||
{
|
{
|
||||||
return ini_get_string(FILE_CONFIG, FILE_SECTION, "datainireg");
|
return ini_get_string(FILE_CONFIG, FILE_SECTION, "datainireg");
|
||||||
}
|
}
|
||||||
|
|
||||||
TString get_dataendreg()
|
const TString & get_dataendreg()
|
||||||
{
|
{
|
||||||
return ini_get_string(FILE_CONFIG, FILE_SECTION, "dataendreg");
|
return ini_get_string(FILE_CONFIG, FILE_SECTION, "dataendreg");
|
||||||
}
|
}
|
||||||
@ -444,74 +459,42 @@ bool check_causale(const TString& cod_caus, bool 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 = cached_causale(cod_caus);
|
const TCausale& c = 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 c.tipo_doc() == tipo_doc;
|
||||||
|
|
||||||
if (tipo_doc == "NC" || tipo_doc == "ND")
|
if (tipo_doc == "NC" || tipo_doc == "ND")
|
||||||
{
|
{
|
||||||
bool nota;
|
bool nota;
|
||||||
bool nota_iva = false;
|
bool nota_iva = false;
|
||||||
if ((nota = caus.tipo_doc() == tipo_doc))
|
|
||||||
|
if ((nota = c.tipo_doc() == tipo_doc))
|
||||||
{
|
{
|
||||||
if (acq)
|
if (acq)
|
||||||
nota_iva = caus.reg().tipo() == iva_acquisti;
|
nota_iva = c.reg().tipo() == iva_acquisti;
|
||||||
else
|
else
|
||||||
nota_iva = caus.reg().tipo() == iva_vendite;
|
nota_iva = c.reg().tipo() == iva_vendite;
|
||||||
}
|
}
|
||||||
return nota && nota_iva;
|
return nota && nota_iva;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool check_caus_has_rit(const TString& cod_caus, bool rit)
|
bool check_caus_has_rit(const TString& cod_caus, int year)
|
||||||
{
|
{
|
||||||
TLocalisamfile causali(LF_CAUSALI);
|
const TCausale & c = cached_causale(cod_caus, year);
|
||||||
causali.put(CAU_CODCAUS, cod_caus);
|
|
||||||
causali.read();
|
return c.causale_770().full();
|
||||||
return *causali.get(CAU_M770) != '\0';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void run_cont_ini(bool liq)
|
void run_cont_ini(bool liq)
|
||||||
{
|
{
|
||||||
static TString run_string;
|
TString cmd;
|
||||||
#ifdef DBG
|
|
||||||
run_string.cut(0) << "cg2 -0 -i" << F1_INIREGCONT << "*" << ".ini" << " -f1" << (liq? " -liq" : " ") << " /u" << user();
|
|
||||||
#else
|
|
||||||
run_string.cut(0) << "cg2 -0 -i" << TFilename().tempdir() << "\\" << F1_INIREGCONT << "*" << ".ini" << " -f1" << (liq ? " -liq" : " ") << " /u" << user();
|
|
||||||
#endif
|
|
||||||
TExternal_app(run_string).run();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TF1_log::log(int severity, const char* msg)
|
cmd.cut(0) << "cg2 -0 -i" << TFilename().temp("cg2CONTAB", "ini") << " -f1" << (liq ? " -liq" : " ") << " /u" << user();
|
||||||
{
|
|
||||||
if (_log == nullptr)
|
|
||||||
{
|
|
||||||
_log = new TLog_report("Stato contabilizzazione:");
|
|
||||||
// Tento l'eliminazione del file
|
|
||||||
std::remove("f1_cg.log");
|
|
||||||
}
|
|
||||||
|
|
||||||
static TString txt;
|
TExternal_app app(cmd);
|
||||||
txt.cut(0) << msg;
|
|
||||||
_log->log(severity, txt);
|
|
||||||
// Scrivo anche su file
|
|
||||||
std::filebuf fb;
|
|
||||||
fb.open("f1_cg.log", std::ios::out | std::ios::app);
|
|
||||||
std::ostream os(&fb);
|
|
||||||
os << txt << std::endl;
|
|
||||||
fb.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TF1_log::show_log()
|
app.run();
|
||||||
{
|
|
||||||
if (_log)
|
|
||||||
{
|
|
||||||
_log->preview();
|
|
||||||
delete _log;
|
|
||||||
_log = nullptr;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
@ -7,8 +7,8 @@
|
|||||||
|
|
||||||
#define FILE_CONFIG CONFIG_DITTA
|
#define FILE_CONFIG CONFIG_DITTA
|
||||||
#define FILE_SECTION "f1"
|
#define FILE_SECTION "f1"
|
||||||
|
#define F1_INIREGCONT "cgreg"
|
||||||
#define F1_CAUS "caus"
|
#define F1_CAUS "caus"
|
||||||
#define F1_INIREGCONT "cg2CONTAB"
|
|
||||||
#define LOG_MSG 0
|
#define LOG_MSG 0
|
||||||
#define LOG_WARN 1
|
#define LOG_WARN 1
|
||||||
#define LOG_ERR 2
|
#define LOG_ERR 2
|
||||||
@ -39,61 +39,46 @@ typedef struct _prot_s
|
|||||||
*/
|
*/
|
||||||
class TFppro : public TObject
|
class TFppro : public TObject
|
||||||
{
|
{
|
||||||
struct keys_s
|
TToken_string _keys;
|
||||||
{
|
|
||||||
TString prginvio;
|
|
||||||
TString headerfatt;
|
|
||||||
TString bodyfatt;
|
|
||||||
|
|
||||||
operator const char*() const
|
|
||||||
{
|
|
||||||
static TToken_string a("", ';');
|
|
||||||
a.add(prginvio);
|
|
||||||
a.add(headerfatt);
|
|
||||||
a.add(bodyfatt);
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
} _keys;
|
|
||||||
|
|
||||||
SSimple_query* _db;
|
SSimple_query* _db;
|
||||||
bool _keys_setted;
|
bool _keys_setted;
|
||||||
bool _is_set; // Query is setted
|
bool _is_set; // Query is setted
|
||||||
TString _fppro_query;
|
TString _fppro_query;
|
||||||
TString _last_error;
|
TString _last_error;
|
||||||
|
|
||||||
static bool sql_inj(const TString& str);
|
bool sql_inj(TToken_string& keys);
|
||||||
static bool sql_inj(const keys_s& keys);
|
|
||||||
public:
|
public:
|
||||||
const char* where_str() const;
|
const char* where_str();
|
||||||
|
|
||||||
bool check_reg(TToken_string& keys, int numreg);
|
bool check_reg(TToken_string& keys, int numreg);
|
||||||
// Se un mov. registrato non e' collegato all'FPPRO cerco di capire qual'e`
|
// Se un mov. registrato non e' collegato all'FPPRO cerco di capire qual'e`
|
||||||
bool guess_the_doc(const TLocalisamfile& mov);
|
bool guess_the_doc(const TLocalisamfile& mov);
|
||||||
// Getters
|
// Getters
|
||||||
const char* get_keys_fppro() const;
|
const char* get_keys_fppro();
|
||||||
int get_numreg();
|
long get_numreg();
|
||||||
int get_numreg(TToken_string& keys);
|
long get_numreg(TToken_string& keys);
|
||||||
TString get_codforn() const;
|
long get_codforn();
|
||||||
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();
|
||||||
TDate get_data_first_doc() const;
|
TDate get_data_first_doc() const;
|
||||||
TDate get_dataorarioric() const;
|
TDate get_dataorarioric();
|
||||||
int get_numregcont() const;
|
long get_numregcont();
|
||||||
|
|
||||||
|
|
||||||
TString get_last_error(bool clear = true);
|
TString get_last_error(bool clear = true);
|
||||||
// Setters
|
// Setters
|
||||||
bool set_query();
|
bool set_query();
|
||||||
TFppro& set_keys(TToken_string& keys);
|
TFppro& set_keys(TToken_string& keys);
|
||||||
TFppro& set_keys(const keys_s& keys);
|
|
||||||
|
|
||||||
bool associa_mov(int numreg) const;
|
bool associa_mov(long numreg);
|
||||||
const char* get_tipoprot() const;
|
const TString & get_tipoprot();
|
||||||
const char* get_numprot() const;
|
const TString & get_numprot();
|
||||||
const char* get_annoprot() const;
|
const TString & get_annoprot();
|
||||||
const char* get_dataoraric() const;
|
const TString & get_dataoraric();
|
||||||
const char* get_tipodoc() const;
|
const TString & get_tipodoc();
|
||||||
const char* get_numdoc() const;
|
const TString & get_numdoc();
|
||||||
|
TDate get_data_doc();
|
||||||
|
|
||||||
TFppro();
|
TFppro();
|
||||||
TFppro(TToken_string& keys) : TFppro() { set_keys(keys); }
|
TFppro(TToken_string& keys) : TFppro() { set_keys(keys); }
|
||||||
@ -111,36 +96,29 @@ public:
|
|||||||
|
|
||||||
void set(const TProtocollo& prot);
|
void set(const TProtocollo& prot);
|
||||||
void sset(const char* prot);
|
void sset(const char* prot);
|
||||||
TString& get_prot() const;
|
const TString& get_prot() const;
|
||||||
prot_s get_prot();
|
prot_s get_prot();
|
||||||
|
|
||||||
int get_year() const { return _year; }
|
int get_year() const { return _year; }
|
||||||
TString& get_tipoprot() { return _tipoprot; }
|
const TString& get_tipoprot() const { return _tipoprot; }
|
||||||
TString& get_progres() { return _progres; }
|
const TString& get_progres() const { return _progres; }
|
||||||
|
const TString& prot_in(int year, const char* tipoprot, const char* progres) const;
|
||||||
|
|
||||||
static TString& prot_in(int year, const char* tipoprot, const char* progres);
|
|
||||||
|
|
||||||
operator const char*() const { return static_cast<const char*>(get_prot()); }
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class TF1_log : TObject
|
class TF1_log : public TLog_report
|
||||||
{
|
{
|
||||||
TLog_report* _log;
|
|
||||||
public:
|
public:
|
||||||
TF1_log() : _log(nullptr){}
|
TF1_log() : TLog_report("Stato contabilizzazione:") {}
|
||||||
void log(int severity, const char* msg);
|
bool show_log() { export_text("f1_cg.log", 0, false); return preview(); }
|
||||||
bool show_log();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TFppro& fppro_db();
|
TFppro& fppro_db();
|
||||||
|
|
||||||
const char* get_ini_codcaus();
|
const char* get_ini_codcaus();
|
||||||
const char* get_codcaus(const char * tipodoc, const long codcf);
|
const char* get_codcaus(const char * tipodoc, long codcf);
|
||||||
bool get_endatareg();
|
bool get_endatareg();
|
||||||
TString get_datainireg();
|
const TString & get_datainireg();
|
||||||
TString get_dataendreg();
|
const TString & get_dataendreg();
|
||||||
bool get_periodprec();
|
bool get_periodprec();
|
||||||
|
|
||||||
void set_ini_codcaus(const TString& codcaus);
|
void set_ini_codcaus(const TString& codcaus);
|
||||||
@ -153,7 +131,7 @@ void set_periodprec(bool flag);
|
|||||||
bool check_causale(const TString& cod_caus, bool acq = true);
|
bool check_causale(const TString& cod_caus, bool acq = true);
|
||||||
// Controlla se il "cod_caus" ha come "tipo_doc" FA o NC (di acquisto)
|
// Controlla se il "cod_caus" ha come "tipo_doc" FA o NC (di acquisto)
|
||||||
bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq = true);
|
bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq = true);
|
||||||
bool check_caus_has_rit(const TString& cod_caus, bool rit);
|
bool check_caus_has_rit(const TString& cod_caus, int year = 0);
|
||||||
void run_cont_ini(bool liq);
|
void run_cont_ini(bool liq);
|
||||||
|
|
||||||
#endif // _F1LIB_H_
|
#endif // _F1LIB_H_
|
||||||
|
@ -691,6 +691,7 @@ public:
|
|||||||
|
|
||||||
int parse_field(const char* code, char& type, int& level, int& id) const;
|
int parse_field(const char* code, char& type, int& level, int& id) const;
|
||||||
TReport_field* field(const char* code);
|
TReport_field* field(const char* code);
|
||||||
|
bool exist(const char* code) { return field(code) != nullptr; };
|
||||||
|
|
||||||
virtual bool set_var(const TString& name, const TVariant& var) { return set_usr_val(name, var); }
|
virtual bool set_var(const TString& name, const TVariant& var) { return set_usr_val(name, var); }
|
||||||
|
|
||||||
|
15
src/ps/cast/aa.qry
Normal file
15
src/ps/cast/aa.qry
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<query Name="aa">
|
||||||
|
<description>
|
||||||
|
</description>
|
||||||
|
<tables>
|
||||||
|
<table Name="CLIFO" Num="20" />
|
||||||
|
</tables>
|
||||||
|
<fields>
|
||||||
|
<field Name="TIPOCF" ExprTo="F" Table="CLIFO" ExprFrom="F" />
|
||||||
|
<field Name="CODCF" Table="CLIFO" />
|
||||||
|
<field Name="RAGSOC" Table="CLIFO" />
|
||||||
|
</fields>
|
||||||
|
<sql>
|
||||||
|
</sql>
|
||||||
|
</query>
|
8
src/ps/cast/cgaddon.men
Normal file
8
src/ps/cast/cgaddon.men
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[CGADDON]
|
||||||
|
Caption = "Personalizzazioni"
|
||||||
|
Module = 0
|
||||||
|
Flags = ""
|
||||||
|
Item_01 = "Importazione Clienti", "cg0.exe -1 -iC:\TEMPprassi\CLIENTE*.ini /uADMIN"
|
||||||
|
Item_02 = "Importazione Fatture", "cg2.exe -0 -iC:\TEMPprassiFatt\FATTUR*.ini /uADMIN"
|
||||||
|
Item_03 = "Esp. Saldi per Contr. Cast", "ba8.exe -1 saldi_c X"
|
||||||
|
Item_03 = "Esp. Saldi per Contr. Magazzino", "ba8.exe -1 saldi_m X"
|
258
src/ps/cast/saldi_c.msk
Normal file
258
src/ps/cast/saldi_c.msk
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
BU 24 2 2
|
||||||
|
BE
|
||||||
|
PR 1 1 "Elabora"
|
||||||
|
PI 120
|
||||||
|
EN
|
||||||
|
BU 25 2 2
|
||||||
|
BE
|
||||||
|
PR 2 1 "Imposta"
|
||||||
|
PI 165
|
||||||
|
EN
|
||||||
|
BU -1 2 2
|
||||||
|
BE
|
||||||
|
PR -1 1 ""
|
||||||
|
PI 0
|
||||||
|
EN
|
||||||
|
BU 33 2 2
|
||||||
|
BE
|
||||||
|
PR 1 1 "Info"
|
||||||
|
ME EXIT,332
|
||||||
|
PI 162
|
||||||
|
EN
|
||||||
|
BU 34 2 2
|
||||||
|
BE
|
||||||
|
PR 2 1 "Help"
|
||||||
|
ME EXIT,331
|
||||||
|
PI 163
|
||||||
|
EN
|
||||||
|
BU -1 2 2
|
||||||
|
BE
|
||||||
|
PR -1 0 ""
|
||||||
|
PI 0
|
||||||
|
EN
|
||||||
|
BU 9 2 2
|
||||||
|
BE
|
||||||
|
PR 3 1 "Fine"
|
||||||
|
ME EXIT,20334
|
||||||
|
PI 114
|
||||||
|
EN
|
||||||
|
EN
|
||||||
|
PA "Stampa Saldi con Contropartita" -1 -1 76 16
|
||||||
|
NU 101 5
|
||||||
|
BE
|
||||||
|
PR 2 1 "Ditta "
|
||||||
|
FL "FRD"
|
||||||
|
US 9 KE 1
|
||||||
|
CH REQUIRED
|
||||||
|
IN CODDITTA 101
|
||||||
|
DI "Codice" CODDITTA
|
||||||
|
DI "Ragione sociale @50" RAGSOC
|
||||||
|
OU 101 CODDITTA
|
||||||
|
OU 104 RAGSOC
|
||||||
|
EN
|
||||||
|
ST 104 50
|
||||||
|
BE
|
||||||
|
PR 2 2 "Ragione sociale "
|
||||||
|
FL "D"
|
||||||
|
EN
|
||||||
|
|
||||||
|
NU 106 4
|
||||||
|
BE
|
||||||
|
PR 2 3 "Codice esercizio "
|
||||||
|
HE "Esercizio di cui si vuole ottenere il bilancio"
|
||||||
|
US ESC
|
||||||
|
IN CODTAB 106
|
||||||
|
DI "Codice" CODTAB
|
||||||
|
DI "Data inizio esercizio" D0
|
||||||
|
DI "Data fine esercizio" D1
|
||||||
|
OU 106 CODTAB
|
||||||
|
FL "Z"
|
||||||
|
CH NORMAL
|
||||||
|
WA "L'esercizio non esiste"
|
||||||
|
FI ANNOSEL
|
||||||
|
ME 0 CLEAR,4@
|
||||||
|
ME ENABLE,4@
|
||||||
|
EN
|
||||||
|
DA 109
|
||||||
|
BE
|
||||||
|
PR 2 4 "Periodo da Data "
|
||||||
|
HE "Data dalla quale si vuole la stampa"
|
||||||
|
FI DADATA
|
||||||
|
EN
|
||||||
|
NU 112 2
|
||||||
|
BE
|
||||||
|
PR 2 5 ""
|
||||||
|
FL "DH"
|
||||||
|
VA 14 1 #109[7,8]
|
||||||
|
FI DAG
|
||||||
|
DR 109
|
||||||
|
EN
|
||||||
|
NU 113 2
|
||||||
|
BE
|
||||||
|
PR 6 5 ""
|
||||||
|
FL "DH"
|
||||||
|
VA 14 1 #109[5,6]
|
||||||
|
FI DAM
|
||||||
|
DR 109
|
||||||
|
EN
|
||||||
|
|
||||||
|
DA 110
|
||||||
|
BE
|
||||||
|
PR 35 4 "A Data "
|
||||||
|
HE "Data fino alla quale si vuole la stampa"
|
||||||
|
FI ADATA
|
||||||
|
EN
|
||||||
|
NU 114 2
|
||||||
|
BE
|
||||||
|
PR 42 5 ""
|
||||||
|
FL "DH"
|
||||||
|
VA 14 1 #110[7,8]
|
||||||
|
FI AGIO
|
||||||
|
DR 110
|
||||||
|
EN
|
||||||
|
NU 115 2
|
||||||
|
BE
|
||||||
|
PR 46 5 ""
|
||||||
|
FL "DH"
|
||||||
|
VA 14 1 #110[5,6]
|
||||||
|
FI AM
|
||||||
|
DR 110
|
||||||
|
EN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GR -1 55 6
|
||||||
|
BE
|
||||||
|
PR 2 6 "@bSelezione sui conti"
|
||||||
|
EN
|
||||||
|
NU 132 3
|
||||||
|
BE
|
||||||
|
PR 3 7 "Da: Gruppo "
|
||||||
|
US 19 KE 1 SE (CONTO="")
|
||||||
|
IN GRUPPO 132
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI DGR
|
||||||
|
EN
|
||||||
|
NU 133 3
|
||||||
|
BE
|
||||||
|
PR 23 7 "Conto "
|
||||||
|
US 19 KE 1 SE (SOTTOCONTO="")
|
||||||
|
IN GRUPPO 132
|
||||||
|
IN CONTO 133
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 133 CONTO
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI DCNT
|
||||||
|
EN
|
||||||
|
NU 134 6
|
||||||
|
BE
|
||||||
|
PR 36 7 "Sottoconto "
|
||||||
|
US 19
|
||||||
|
IN GRUPPO 132
|
||||||
|
IN CONTO 133
|
||||||
|
IN SOTTOCONTO 134
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 134 SOTTOCONTO
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 133 CONTO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI DSTCNT
|
||||||
|
FL "H"
|
||||||
|
EN
|
||||||
|
ST 135 50
|
||||||
|
BE
|
||||||
|
PR 3 8 ""
|
||||||
|
US 19 KE 2
|
||||||
|
IN DESCR 135
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
OU 134 SOTTOCONTO
|
||||||
|
OU 133 CONTO
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
EN
|
||||||
|
NU 136 3
|
||||||
|
BE
|
||||||
|
PR 3 9 "A: Gruppo "
|
||||||
|
US 19 KE 1 SE (CONTO="")
|
||||||
|
IN GRUPPO 136
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI AGR
|
||||||
|
EN
|
||||||
|
NU 137 3
|
||||||
|
BE
|
||||||
|
PR 23 9 "Conto "
|
||||||
|
US 19 KE 1 SE (SOTTOCONTO="")
|
||||||
|
IN GRUPPO 136
|
||||||
|
IN CONTO 137
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 137 CONTO
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI ACNT
|
||||||
|
EN
|
||||||
|
NU 138 6
|
||||||
|
BE
|
||||||
|
PR 36 9 "Sottoconto "
|
||||||
|
US 19
|
||||||
|
IN GRUPPO 136
|
||||||
|
IN CONTO 137
|
||||||
|
IN SOTTOCONTO 138
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 138 SOTTOCONTO
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 137 CONTO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI ASTCNT
|
||||||
|
FL "H"
|
||||||
|
EN
|
||||||
|
ST 139 50
|
||||||
|
BE
|
||||||
|
PR 3 10 ""
|
||||||
|
US 19 KE 2
|
||||||
|
IN DESCR 139
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
OU 138 SOTTOCONTO
|
||||||
|
OU 137 CONTO
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
EN
|
||||||
|
BO 401
|
||||||
|
BE
|
||||||
|
PR 3 12 "Stampa i Totali"
|
||||||
|
FI SHOW_TOT
|
||||||
|
FL "H"
|
||||||
|
EN
|
||||||
|
EN
|
||||||
|
ENDMASK
|
10
src/ps/cast/saldi_c.qry
Normal file
10
src/ps/cast/saldi_c.qry
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<query Name="saldi_c">
|
||||||
|
<description>Saldi per contropartita cast</description>
|
||||||
|
<sql>ODBC(cast)
|
||||||
|
SELECT rmov.datareg,mov.codcaus,caus.descr,mov.descr, rmov.GRUPPO,rmov.CONTO,rmov.SOTTOCONTO,rmov.sezione,iif(rmov.sezione='A',-rmov.IMPORTO,rmov.IMPORTO),mov.numdoc,mov.datadoc,mov.protiva,rmov.TIPOCC,rmov.GRUPPOC,rmov.CONTOC,rmov.SOTTOCONTC,iif(rmov.tipocc='',pcon.descr,clifo.ragsoc),rmov.gruppo*100+rmov.conto as mastro
|
||||||
|
FROM RMOV join mov on (rmov.numreg=mov.numreg) left join clifo on (rmov.tipocc=clifo.tipocf and rmov.sottocontc=clifo.codcf) left join pcon on (rmov.gruppoc=pcon.gruppo and rmov.contoc=pcon.conto and rmov.sottocontc=pcon.sottoconto) left join caus on (caus.codcaus=mov.codcaus)
|
||||||
|
where rmov.annoes=#ANNOSEL and (rmov.dataregE;=datetime(#ANNOSEL,#DAM,#DAG)) and (rmov.dataregC;=datetime(#ANNOSEL,#AM,#AGIO))
|
||||||
|
ORDER BY rmov.GRUPPO,rmov.CONTO,rmov.SOTTOCONTO,rmov.TIPOCC,rmov.GRUPPOC,rmov.CONTOC,rmov.SOTTOCONTC
|
||||||
|
HAVING mastroE;=(#DGR*100+#DCNT) and mastroC;=(#AGR*100+#ACNT)</sql>
|
||||||
|
</query>
|
219
src/ps/cast/saldi_controp.msk
Normal file
219
src/ps/cast/saldi_controp.msk
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
BU 24 2 2
|
||||||
|
BE
|
||||||
|
PR 1 1 "Stampa"
|
||||||
|
PI 118
|
||||||
|
EN
|
||||||
|
BU 25 2 2
|
||||||
|
BE
|
||||||
|
PR 2 1 "Imposta"
|
||||||
|
PI 165
|
||||||
|
EN
|
||||||
|
BU -1 2 2
|
||||||
|
BE
|
||||||
|
PR -1 1 ""
|
||||||
|
PI 0
|
||||||
|
EN
|
||||||
|
BU 33 2 2
|
||||||
|
BE
|
||||||
|
PR 1 1 "Info"
|
||||||
|
ME EXIT,332
|
||||||
|
PI 162
|
||||||
|
EN
|
||||||
|
BU 34 2 2
|
||||||
|
BE
|
||||||
|
PR 2 1 "Help"
|
||||||
|
ME EXIT,331
|
||||||
|
PI 163
|
||||||
|
EN
|
||||||
|
BU -1 2 2
|
||||||
|
BE
|
||||||
|
PR -1 0 ""
|
||||||
|
PI 0
|
||||||
|
EN
|
||||||
|
BU 9 2 2
|
||||||
|
BE
|
||||||
|
PR 3 1 "Fine"
|
||||||
|
ME EXIT,20334
|
||||||
|
PI 114
|
||||||
|
EN
|
||||||
|
EN
|
||||||
|
PA "Stampa Saldi con Contropartita" -1 -1 76 16
|
||||||
|
NU 101 5
|
||||||
|
BE
|
||||||
|
PR 2 1 "Ditta "
|
||||||
|
FL "FRD"
|
||||||
|
US 9 KE 1
|
||||||
|
CH REQUIRED
|
||||||
|
IN CODDITTA 101
|
||||||
|
DI "Codice" CODDITTA
|
||||||
|
DI "Ragione sociale @50" RAGSOC
|
||||||
|
OU 101 CODDITTA
|
||||||
|
OU 104 RAGSOC
|
||||||
|
EN
|
||||||
|
ST 104 50
|
||||||
|
BE
|
||||||
|
PR 2 2 "Ragione sociale "
|
||||||
|
FL "D"
|
||||||
|
EN
|
||||||
|
|
||||||
|
NU 106 4
|
||||||
|
BE
|
||||||
|
PR 2 3 "Codice esercizio "
|
||||||
|
HE "Esercizio di cui si vuole ottenere il bilancio"
|
||||||
|
US ESC
|
||||||
|
IN CODTAB 106
|
||||||
|
DI "Codice" CODTAB
|
||||||
|
DI "Data inizio esercizio" D0
|
||||||
|
DI "Data fine esercizio" D1
|
||||||
|
OU 106 CODTAB
|
||||||
|
FL "Z"
|
||||||
|
CH NORMAL
|
||||||
|
WA "L'esercizio non esiste"
|
||||||
|
FI ANNOSEL
|
||||||
|
ME 0 CLEAR,4@
|
||||||
|
ME ENABLE,4@
|
||||||
|
EN
|
||||||
|
DA 109
|
||||||
|
BE
|
||||||
|
PR 2 4 "Periodo da Data "
|
||||||
|
HE "Data dalla quale si vuole la stampa"
|
||||||
|
FI DADATA
|
||||||
|
EN
|
||||||
|
DA 110
|
||||||
|
BE
|
||||||
|
PR 35 4 "A Data "
|
||||||
|
HE "Data fino alla quale si vuole la stampa"
|
||||||
|
FI ADATA
|
||||||
|
EN
|
||||||
|
GR -1 55 6
|
||||||
|
BE
|
||||||
|
PR 2 6 "@bSelezione sui conti"
|
||||||
|
EN
|
||||||
|
NU 132 3
|
||||||
|
BE
|
||||||
|
PR 3 7 "Da: Gruppo "
|
||||||
|
US 19 KE 1 SE (CONTO="")
|
||||||
|
IN GRUPPO 132
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI DGR
|
||||||
|
EN
|
||||||
|
NU 133 3
|
||||||
|
BE
|
||||||
|
PR 23 7 "Conto "
|
||||||
|
US 19 KE 1 SE (SOTTOCONTO="")
|
||||||
|
IN GRUPPO 132
|
||||||
|
IN CONTO 133
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 133 CONTO
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI DCNT
|
||||||
|
EN
|
||||||
|
NU 134 6
|
||||||
|
BE
|
||||||
|
PR 36 7 "Sottoconto "
|
||||||
|
US 19
|
||||||
|
IN GRUPPO 132
|
||||||
|
IN CONTO 133
|
||||||
|
IN SOTTOCONTO 134
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 134 SOTTOCONTO
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 133 CONTO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI DSTCNT
|
||||||
|
EN
|
||||||
|
ST 135 50
|
||||||
|
BE
|
||||||
|
PR 3 8 ""
|
||||||
|
US 19 KE 2
|
||||||
|
IN DESCR 135
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
OU 134 SOTTOCONTO
|
||||||
|
OU 133 CONTO
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
EN
|
||||||
|
NU 136 3
|
||||||
|
BE
|
||||||
|
PR 3 9 "A: Gruppo "
|
||||||
|
US 19 KE 1 SE (CONTO="")
|
||||||
|
IN GRUPPO 136
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI AGR
|
||||||
|
EN
|
||||||
|
NU 137 3
|
||||||
|
BE
|
||||||
|
PR 23 9 "Conto "
|
||||||
|
US 19 KE 1 SE (SOTTOCONTO="")
|
||||||
|
IN GRUPPO 136
|
||||||
|
IN CONTO 137
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 137 CONTO
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI ACNT
|
||||||
|
EN
|
||||||
|
NU 138 6
|
||||||
|
BE
|
||||||
|
PR 36 9 "Sottoconto "
|
||||||
|
US 19
|
||||||
|
IN GRUPPO 136
|
||||||
|
IN CONTO 137
|
||||||
|
IN SOTTOCONTO 138
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 138 SOTTOCONTO
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 137 CONTO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI ASTCNT
|
||||||
|
EN
|
||||||
|
ST 139 50
|
||||||
|
BE
|
||||||
|
PR 3 10 ""
|
||||||
|
US 19 KE 2
|
||||||
|
IN DESCR 139
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
OU 138 SOTTOCONTO
|
||||||
|
OU 137 CONTO
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
EN
|
||||||
|
BO 401
|
||||||
|
BE
|
||||||
|
PR 3 12 "Stampa i Totali"
|
||||||
|
FI SHOW_TOT
|
||||||
|
EN
|
||||||
|
EN
|
||||||
|
ENDMASK
|
206
src/ps/cast/saldi_controp.rep
Normal file
206
src/ps/cast/saldi_controp.rep
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<report name="saldi_controp" orientation="2" lpi="6">
|
||||||
|
<description>query saldi per contropartita</description>
|
||||||
|
<font face="Courier New" size="10" />
|
||||||
|
<section type="Head" pattern="1">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<field x="9" type="Testo" align="right" width="6" pattern="1" text="STCN" />
|
||||||
|
<field x="69" type="Testo" width="1" id="5" pattern="1" text="T" />
|
||||||
|
<field x="1" type="Testo" align="right" width="3" id="10" pattern="1" text="GR" />
|
||||||
|
<field x="70.5" type="Testo" align="right" width="3" id="10" pattern="1" text="GRC" />
|
||||||
|
<field x="5" type="Testo" align="right" width="3" id="20" pattern="1" text="CN" />
|
||||||
|
<field x="74.5" type="Testo" align="right" width="3" id="20" pattern="1" text="CNC" />
|
||||||
|
<field x="78.5" type="Testo" align="right" width="6" id="30" pattern="1" text="STCNC" />
|
||||||
|
<field x="16" type="Testo" width="40" id="40" pattern="1" text="DESCRIZIONE" />
|
||||||
|
<field x="85" type="Testo" width="25" id="80" pattern="1" text="DESCRIZIONE CONTROPARTITA" />
|
||||||
|
<field x="35" y="2" type="Stringa" hidden="1" align="right" bg_color="#80FF80" width="11" id="100" pattern="2">
|
||||||
|
<source>"SALDO-" +(#ANNOSEL-1)</source>
|
||||||
|
</field>
|
||||||
|
<field x="57" type="Stringa" align="right" bg_color="#FF80C0" width="11" height="2" id="200" pattern="1">
|
||||||
|
<source>"SALDO al " +#ADATA</source>
|
||||||
|
</field>
|
||||||
|
<field x="46" y="2" type="Testo" hidden="1" align="right" bg_color="#E8E8E8" width="11" id="300" pattern="2" text="TOTALE" />
|
||||||
|
<field border="1" x="1" type="Rettangolo" width="132" height="2" id="1000" pattern="1" />
|
||||||
|
</section>
|
||||||
|
<section type="Head" level="1" pattern="1" />
|
||||||
|
<section type="Head" level="2" hidden="1" pattern="1">
|
||||||
|
<groupby>GRUPPO+CONTO+SOTTOCONTO</groupby>
|
||||||
|
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2</prescript>
|
||||||
|
<field type="Stringa" width="1" id="5" pattern="1">
|
||||||
|
<source>RMOV.TIPOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="1" type="Numero" align="right" width="3" id="10" pattern="1">
|
||||||
|
<source>RMOV.GRUPPO</source>
|
||||||
|
</field>
|
||||||
|
<field x="5" type="Numero" align="right" width="3" id="20" pattern="1">
|
||||||
|
<source>RMOV.CONTO</source>
|
||||||
|
</field>
|
||||||
|
<field x="9" type="Numero" align="right" width="6" id="30" pattern="1">
|
||||||
|
<source>RMOV.SOTTOCONTO</source>
|
||||||
|
</field>
|
||||||
|
<field x="16" type="Stringa" width="50" id="40" pattern="1">
|
||||||
|
<source>PCON.DESCR</source>
|
||||||
|
</field>
|
||||||
|
<field x="67" type="Stringa" width="50" id="50" pattern="1">
|
||||||
|
<prescript description="H2.50 PRESCRIPT">MESSAGE ISAMREAD,20,TIPOCF=#5!CODCF=#30,RAGSOC</prescript>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section type="Head" level="3" hidden="1" pattern="1">
|
||||||
|
<groupby>GRUPPOC+CONTOC+SOTTOCONTC</groupby>
|
||||||
|
<prescript description="H3 PRESCRIPT">MESSAGE RESET,F3</prescript>
|
||||||
|
<field x="4" type="Stringa" width="1" id="5" pattern="1">
|
||||||
|
<source>RMOV.TIPOCC</source>
|
||||||
|
</field>
|
||||||
|
<field x="6" type="Numero" align="right" width="3" id="10" pattern="1">
|
||||||
|
<source>RMOV.GRUPPOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="10" type="Numero" align="right" width="3" id="20" pattern="1">
|
||||||
|
<source>RMOV.CONTOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="14" type="Numero" align="right" width="6" id="30" pattern="1">
|
||||||
|
<source>RMOV.SOTTOCONTC</source>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section type="Body" pattern="1" />
|
||||||
|
<section type="Body" level="1" hidden="1" pattern="1">
|
||||||
|
<condition>ANNOES=(#ANNOSEL-1)</condition>
|
||||||
|
<font face="Arial" size="8" />
|
||||||
|
<field x="10" type="Data" width="10" pattern="1">
|
||||||
|
<source>RMOV.DATAREG</source>
|
||||||
|
</field>
|
||||||
|
<field x="21" type="Numero" align="right" link="23.NUMREG" width="7" pattern="1">
|
||||||
|
<source>RMOV.NUMREG</source>
|
||||||
|
</field>
|
||||||
|
<field x="30" type="Stringa" width="3" pattern="1">
|
||||||
|
<source>MOV.CODCAUS</source>
|
||||||
|
</field>
|
||||||
|
<field x="93" type="Stringa" align="right" width="1" pattern="1">
|
||||||
|
<source>RMOV.TIPOCC</source>
|
||||||
|
</field>
|
||||||
|
<field x="94.5" type="Numero" align="right" width="3" pattern="1">
|
||||||
|
<source>RMOV.GRUPPOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="98.5" type="Numero" align="right" width="3" pattern="1">
|
||||||
|
<source>RMOV.CONTOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="102.5" type="Numero" align="right" width="6" pattern="1">
|
||||||
|
<source>RMOV.SOTTOCONTC</source>
|
||||||
|
</field>
|
||||||
|
<field x="55" type="Stringa" width="1" id="10" pattern="1">
|
||||||
|
<source>RMOV.SEZIONE</source>
|
||||||
|
</field>
|
||||||
|
<field x="57" type="Valuta" align="right" bg_color="#80FF80" width="11" id="100" pattern="2" text="###.###.###,@@">
|
||||||
|
<source>IF(NUM(RMOV.SEZIONE="A"),RMOV.IMPORTO,-RMOV.IMPORTO)</source>
|
||||||
|
<prescript description="B1.100 PRESCRIPT">MESSAGE ADD,F3.100</prescript>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section type="Body" level="2" hidden="1" pattern="1">
|
||||||
|
<condition>ANNOES=#ANNOSEL</condition>
|
||||||
|
<font face="Arial" size="8" />
|
||||||
|
<field x="10" type="Data" width="10" pattern="1">
|
||||||
|
<source>RMOV.DATAREG</source>
|
||||||
|
</field>
|
||||||
|
<field x="21" type="Numero" align="right" link="23.NUMREG" width="7" pattern="1">
|
||||||
|
<source>RMOV.NUMREG</source>
|
||||||
|
</field>
|
||||||
|
<field x="30" type="Stringa" width="3" pattern="1">
|
||||||
|
<source>MOV.CODCAUS</source>
|
||||||
|
</field>
|
||||||
|
<field x="67" type="Stringa" width="1" pattern="1">
|
||||||
|
<source>RMOV.SEZIONE</source>
|
||||||
|
</field>
|
||||||
|
<field x="93" type="Stringa" align="right" width="1" pattern="1">
|
||||||
|
<source>RMOV.TIPOCC</source>
|
||||||
|
</field>
|
||||||
|
<field x="94.5" type="Numero" align="right" width="3" pattern="1">
|
||||||
|
<source>RMOV.GRUPPOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="98.5" type="Numero" align="right" width="3" pattern="1">
|
||||||
|
<source>RMOV.CONTOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="102.5" type="Numero" align="right" width="6" pattern="1">
|
||||||
|
<source>RMOV.SOTTOCONTC</source>
|
||||||
|
</field>
|
||||||
|
<field x="69" type="Valuta" align="right" bg_color="#FF80C0" width="11" id="200" pattern="1" text="###.###.###,@@">
|
||||||
|
<source>IF(NUM(RMOV.SEZIONE="A"),RMOV.IMPORTO,-RMOV.IMPORTO)</source>
|
||||||
|
<prescript description="B2.200 PRESCRIPT">MESSAGE ADD,F3.200</prescript>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section type="Foot" pattern="1" />
|
||||||
|
<section type="Foot" level="1" pattern="1" />
|
||||||
|
<section type="Foot" level="2" hidden="1" bg_color="#C0C0C0" pattern="1">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<field type="Stringa" hidden="1" width="1" pattern="1">
|
||||||
|
<source>#SHOW_TOT</source>
|
||||||
|
<prescript description="F2.0 PRESCRIPT">MESSAGE EMPTY HIDE,F2
|
||||||
|
MESSAGE SHOW,F2</prescript>
|
||||||
|
</field>
|
||||||
|
<field x="1" type="Numero" align="right" width="3" id="10" pattern="1">
|
||||||
|
<source>#H2.10</source>
|
||||||
|
</field>
|
||||||
|
<field x="5" type="Numero" align="right" width="3" id="20" pattern="1">
|
||||||
|
<source>#H2.20</source>
|
||||||
|
</field>
|
||||||
|
<field x="9" type="Numero" align="right" width="6" id="30" pattern="1">
|
||||||
|
<source>#H2.30</source>
|
||||||
|
</field>
|
||||||
|
<field x="16" type="Stringa" width="40" id="40" pattern="1">
|
||||||
|
<source>#H2.40</source>
|
||||||
|
</field>
|
||||||
|
<field x="45" y="1" type="Valuta" hidden="1" align="right" bg_color="#80FF80" width="11" id="100" pattern="2" hide_zero="1" text="###.###.###,@@" />
|
||||||
|
<field x="57" type="Valuta" align="right" bg_color="#FF80C0" width="11" id="200" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||||
|
<field x="81" type="Valuta" hidden="1" align="right" bg_color="#E8E8E8" width="11" id="300" pattern="2" text="###.###.###,@@">
|
||||||
|
<source>#100+#200</source>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section type="Foot" level="3" pattern="1">
|
||||||
|
<field x="69" type="Stringa" width="1" id="5" pattern="1">
|
||||||
|
<source>#H3.5</source>
|
||||||
|
</field>
|
||||||
|
<field x="1" type="Numero" align="right" width="3" id="10" pattern="1">
|
||||||
|
<source>#H2.10</source>
|
||||||
|
</field>
|
||||||
|
<field x="70.5" type="Numero" align="right" width="3" id="10" pattern="1">
|
||||||
|
<source>#H3.10</source>
|
||||||
|
</field>
|
||||||
|
<field x="5" type="Numero" align="right" width="3" id="20" pattern="1">
|
||||||
|
<source>#H2.20</source>
|
||||||
|
</field>
|
||||||
|
<field x="74.5" type="Numero" align="right" width="3" id="20" pattern="1">
|
||||||
|
<source>#H3.20</source>
|
||||||
|
</field>
|
||||||
|
<field x="9" type="Numero" align="right" width="6" id="30" pattern="1">
|
||||||
|
<source>#H2.30</source>
|
||||||
|
</field>
|
||||||
|
<field x="78.5" type="Numero" align="right" width="6" id="30" pattern="1">
|
||||||
|
<source>#H3.30</source>
|
||||||
|
</field>
|
||||||
|
<field x="16" type="Stringa" width="40" id="40" pattern="1">
|
||||||
|
<source>#H2.40</source>
|
||||||
|
<alt_source>#H2.50</alt_source>
|
||||||
|
</field>
|
||||||
|
<field x="85" type="Stringa" width="25" id="80" pattern="1">
|
||||||
|
<prescript description="F3.80 PRESCRIPT">MESSAGE ISAMREAD,19,GRUPPO=#10!CONTO=#20!SOTTOCONTO=#30,DESCR</prescript>
|
||||||
|
</field>
|
||||||
|
<field x="85" type="Stringa" width="25" id="90" pattern="1">
|
||||||
|
<prescript description="F3.90 PRESCRIPT">MESSAGE ISAMREAD,20,TIPOCF=#5!CODCF=#30,RAGSOC</prescript>
|
||||||
|
</field>
|
||||||
|
<field x="45" y="1" type="Valuta" hidden="1" align="right" bg_color="#80FF80" width="11" id="100" pattern="2" hide_zero="1" text="###.###.###,@@">
|
||||||
|
<prescript description="F3.100 PRESCRIPT">MESSAGE ADD,F2.100</prescript>
|
||||||
|
</field>
|
||||||
|
<field x="57" type="Valuta" align="right" bg_color="#FF80C0" width="11" id="200" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||||
|
<prescript description="F3.200 PRESCRIPT">MESSAGE ADD,F2.200</prescript>
|
||||||
|
</field>
|
||||||
|
<field x="57" y="1" type="Valuta" hidden="1" align="right" bg_color="#E8E8E8" width="11" id="300" pattern="2" text="###.###.###,@@">
|
||||||
|
<source>#100+#200</source>
|
||||||
|
<prescript description="F3.300 PRESCRIPT">MESSAGE EMPTY HIDE,F3
|
||||||
|
MESSAGE SHOW,F3</prescript>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<sql>USE RMOV KEY 2 SELECT (MOV.ANNOES=#ANNOSEL)||(#SHOW_TOT="M")
|
||||||
|
BY GRUPPO CONTO SOTTOCONTO GRUPPOC CONTOC SOTTOCONTC
|
||||||
|
JOIN MOV INTO NUMREG==NUMREG
|
||||||
|
JOIN PCON INTO GRUPPO==GRUPPO CONTO==CONTO SOTTOCONTO==SOTTOCONTO
|
||||||
|
FROM GRUPPO=#DGR CONTO=#DCNT SOTTOCONTO=#DSTCNT
|
||||||
|
TO GRUPPO=#AGR CONTO=#ACNT SOTTOCONTO=#ASTCNT</sql>
|
||||||
|
</report>
|
258
src/ps/cast/saldi_m.msk
Normal file
258
src/ps/cast/saldi_m.msk
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
BU 24 2 2
|
||||||
|
BE
|
||||||
|
PR 1 1 "Elabora"
|
||||||
|
PI 120
|
||||||
|
EN
|
||||||
|
BU 25 2 2
|
||||||
|
BE
|
||||||
|
PR 2 1 "Imposta"
|
||||||
|
PI 165
|
||||||
|
EN
|
||||||
|
BU -1 2 2
|
||||||
|
BE
|
||||||
|
PR -1 1 ""
|
||||||
|
PI 0
|
||||||
|
EN
|
||||||
|
BU 33 2 2
|
||||||
|
BE
|
||||||
|
PR 1 1 "Info"
|
||||||
|
ME EXIT,332
|
||||||
|
PI 162
|
||||||
|
EN
|
||||||
|
BU 34 2 2
|
||||||
|
BE
|
||||||
|
PR 2 1 "Help"
|
||||||
|
ME EXIT,331
|
||||||
|
PI 163
|
||||||
|
EN
|
||||||
|
BU -1 2 2
|
||||||
|
BE
|
||||||
|
PR -1 0 ""
|
||||||
|
PI 0
|
||||||
|
EN
|
||||||
|
BU 9 2 2
|
||||||
|
BE
|
||||||
|
PR 3 1 "Fine"
|
||||||
|
ME EXIT,20334
|
||||||
|
PI 114
|
||||||
|
EN
|
||||||
|
EN
|
||||||
|
PA "Stampa Saldi con Contropartita" -1 -1 76 16
|
||||||
|
NU 101 5
|
||||||
|
BE
|
||||||
|
PR 2 1 "Ditta "
|
||||||
|
FL "FRD"
|
||||||
|
US 9 KE 1
|
||||||
|
CH REQUIRED
|
||||||
|
IN CODDITTA 101
|
||||||
|
DI "Codice" CODDITTA
|
||||||
|
DI "Ragione sociale @50" RAGSOC
|
||||||
|
OU 101 CODDITTA
|
||||||
|
OU 104 RAGSOC
|
||||||
|
EN
|
||||||
|
ST 104 50
|
||||||
|
BE
|
||||||
|
PR 2 2 "Ragione sociale "
|
||||||
|
FL "D"
|
||||||
|
EN
|
||||||
|
|
||||||
|
NU 106 4
|
||||||
|
BE
|
||||||
|
PR 2 3 "Codice esercizio "
|
||||||
|
HE "Esercizio di cui si vuole ottenere il bilancio"
|
||||||
|
US ESC
|
||||||
|
IN CODTAB 106
|
||||||
|
DI "Codice" CODTAB
|
||||||
|
DI "Data inizio esercizio" D0
|
||||||
|
DI "Data fine esercizio" D1
|
||||||
|
OU 106 CODTAB
|
||||||
|
FL "Z"
|
||||||
|
CH NORMAL
|
||||||
|
WA "L'esercizio non esiste"
|
||||||
|
FI ANNOSEL
|
||||||
|
ME 0 CLEAR,4@
|
||||||
|
ME ENABLE,4@
|
||||||
|
EN
|
||||||
|
DA 109
|
||||||
|
BE
|
||||||
|
PR 2 4 "Periodo da Data "
|
||||||
|
HE "Data dalla quale si vuole la stampa"
|
||||||
|
FI DADATA
|
||||||
|
EN
|
||||||
|
NU 112 2
|
||||||
|
BE
|
||||||
|
PR 2 5 ""
|
||||||
|
FL "DH"
|
||||||
|
VA 14 1 #109[7,8]
|
||||||
|
FI DAG
|
||||||
|
DR 109
|
||||||
|
EN
|
||||||
|
NU 113 2
|
||||||
|
BE
|
||||||
|
PR 6 5 ""
|
||||||
|
FL "DH"
|
||||||
|
VA 14 1 #109[5,6]
|
||||||
|
FI DAM
|
||||||
|
DR 109
|
||||||
|
EN
|
||||||
|
|
||||||
|
DA 110
|
||||||
|
BE
|
||||||
|
PR 35 4 "A Data "
|
||||||
|
HE "Data fino alla quale si vuole la stampa"
|
||||||
|
FI ADATA
|
||||||
|
EN
|
||||||
|
NU 114 2
|
||||||
|
BE
|
||||||
|
PR 42 5 ""
|
||||||
|
FL "DH"
|
||||||
|
VA 14 1 #110[7,8]
|
||||||
|
FI AGIO
|
||||||
|
DR 110
|
||||||
|
EN
|
||||||
|
NU 115 2
|
||||||
|
BE
|
||||||
|
PR 46 5 ""
|
||||||
|
FL "DH"
|
||||||
|
VA 14 1 #110[5,6]
|
||||||
|
FI AM
|
||||||
|
DR 110
|
||||||
|
EN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GR -1 55 6
|
||||||
|
BE
|
||||||
|
PR 2 6 "@bSelezione sui conti"
|
||||||
|
EN
|
||||||
|
NU 132 3
|
||||||
|
BE
|
||||||
|
PR 3 7 "Da: Gruppo "
|
||||||
|
US 19 KE 1 SE (CONTO="")
|
||||||
|
IN GRUPPO 132
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI DGR
|
||||||
|
EN
|
||||||
|
NU 133 3
|
||||||
|
BE
|
||||||
|
PR 23 7 "Conto "
|
||||||
|
US 19 KE 1 SE (SOTTOCONTO="")
|
||||||
|
IN GRUPPO 132
|
||||||
|
IN CONTO 133
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 133 CONTO
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI DCNT
|
||||||
|
EN
|
||||||
|
NU 134 6
|
||||||
|
BE
|
||||||
|
PR 36 7 "Sottoconto "
|
||||||
|
US 19
|
||||||
|
IN GRUPPO 132
|
||||||
|
IN CONTO 133
|
||||||
|
IN SOTTOCONTO 134
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 134 SOTTOCONTO
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 133 CONTO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI DSTCNT
|
||||||
|
FL "H"
|
||||||
|
EN
|
||||||
|
ST 135 50
|
||||||
|
BE
|
||||||
|
PR 3 8 ""
|
||||||
|
US 19 KE 2
|
||||||
|
IN DESCR 135
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
OU 134 SOTTOCONTO
|
||||||
|
OU 133 CONTO
|
||||||
|
OU 132 GRUPPO
|
||||||
|
OU 135 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
EN
|
||||||
|
NU 136 3
|
||||||
|
BE
|
||||||
|
PR 3 9 "A: Gruppo "
|
||||||
|
US 19 KE 1 SE (CONTO="")
|
||||||
|
IN GRUPPO 136
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI AGR
|
||||||
|
EN
|
||||||
|
NU 137 3
|
||||||
|
BE
|
||||||
|
PR 23 9 "Conto "
|
||||||
|
US 19 KE 1 SE (SOTTOCONTO="")
|
||||||
|
IN GRUPPO 136
|
||||||
|
IN CONTO 137
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 137 CONTO
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI ACNT
|
||||||
|
EN
|
||||||
|
NU 138 6
|
||||||
|
BE
|
||||||
|
PR 36 9 "Sottoconto "
|
||||||
|
US 19
|
||||||
|
IN GRUPPO 136
|
||||||
|
IN CONTO 137
|
||||||
|
IN SOTTOCONTO 138
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
OU 138 SOTTOCONTO
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 137 CONTO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
FI ASTCNT
|
||||||
|
FL "H"
|
||||||
|
EN
|
||||||
|
ST 139 50
|
||||||
|
BE
|
||||||
|
PR 3 10 ""
|
||||||
|
US 19 KE 2
|
||||||
|
IN DESCR 139
|
||||||
|
DI "Descrizione@50" DESCR
|
||||||
|
DI "Gruppo" GRUPPO
|
||||||
|
DI "Conto" CONTO
|
||||||
|
DI "Sottoconto" SOTTOCONTO
|
||||||
|
OU 138 SOTTOCONTO
|
||||||
|
OU 137 CONTO
|
||||||
|
OU 136 GRUPPO
|
||||||
|
OU 139 DESCR
|
||||||
|
CH NORMAL
|
||||||
|
EN
|
||||||
|
BO 401
|
||||||
|
BE
|
||||||
|
PR 3 12 "Stampa i Totali"
|
||||||
|
FI SHOW_TOT
|
||||||
|
FL "H"
|
||||||
|
EN
|
||||||
|
EN
|
||||||
|
ENDMASK
|
10
src/ps/cast/saldi_m.qry
Normal file
10
src/ps/cast/saldi_m.qry
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<query Name="saldi_m">
|
||||||
|
<description>Saldi per contropartita magaz</description>
|
||||||
|
<sql>ODBC(magazzino)
|
||||||
|
SELECT rmov.datareg,mov.codcaus,caus.descr,mov.descr, rmov.GRUPPO,rmov.CONTO,rmov.SOTTOCONTO,rmov.sezione,iif(rmov.sezione='A',-rmov.IMPORTO,rmov.IMPORTO),mov.numdoc,mov.datadoc,mov.protiva,rmov.TIPOCC,rmov.GRUPPOC,rmov.CONTOC,rmov.SOTTOCONTC,iif(rmov.tipocc='',pcon.descr,clifo.ragsoc),rmov.gruppo*100+rmov.conto as mastro
|
||||||
|
FROM RMOV join mov on (rmov.numreg=mov.numreg) left join clifo on (rmov.tipocc=clifo.tipocf and rmov.sottocontc=clifo.codcf) left join pcon on (rmov.gruppoc=pcon.gruppo and rmov.contoc=pcon.conto and rmov.sottocontc=pcon.sottoconto) left join caus on (caus.codcaus=mov.codcaus)
|
||||||
|
where rmov.annoes=#ANNOSEL and (rmov.dataregE;=datetime(#ANNOSEL,#DAM,#DAG)) and (rmov.dataregC;=datetime(#ANNOSEL,#AM,#AGIO))
|
||||||
|
ORDER BY rmov.GRUPPO,rmov.CONTO,rmov.SOTTOCONTO,rmov.TIPOCC,rmov.GRUPPOC,rmov.CONTOC,rmov.SOTTOCONTC
|
||||||
|
HAVING mastroE;=(#DGR*100+#DCNT) and mastroC;=(#AGR*100+#ACNT)</sql>
|
||||||
|
</query>
|
Loading…
x
Reference in New Issue
Block a user