Correzioni per liquidazione iba differita e gestione nuovo saldaconto in prima nota

git-svn-id: svn://10.65.10.50/branches/R_10_00@22881 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-07-26 15:35:51 +00:00
parent 3c7305dd2e
commit fae432278f
34 changed files with 1326 additions and 619 deletions

View File

@ -35,6 +35,7 @@
#define F_PROVV 232 #define F_PROVV 232
#define F_CODCAUREG 233 #define F_CODCAUREG 233
#define F_REGSPIVA 234 #define F_REGSPIVA 234
#define F_CONTIND 235
#define SS_TIPO 101 #define SS_TIPO 101
#define SS_SEZIONE 102 #define SS_SEZIONE 102

View File

@ -329,6 +329,7 @@ BEGIN
ITEM "4|Versamento contributi dipendente" ITEM "4|Versamento contributi dipendente"
ITEM "5|Compensi non soggetti" ITEM "5|Compensi non soggetti"
ITEM "6|Ritenute per prestazioni occasionali" ITEM "6|Ritenute per prestazioni occasionali"
MODULE 77
END END
LIST F_COLL_CESP 1 40 LIST F_COLL_CESP 1 40
@ -346,12 +347,23 @@ BEGIN
ITEM "T|Trasferimento" ITEM "T|Trasferimento"
ITEM "V|Vendita cespite" ITEM "V|Vendita cespite"
ITEM "Z|Rettifica vendita" ITEM "Z|Rettifica vendita"
MODULE ce
END END
BOOLEAN F_MOVIND BOOLEAN F_MOVIND
BEGIN BEGIN
PROMPT 2 18 "Contabilita' analitica" PROMPT 2 18 "Contabilità analitica"
FIELD MOVIND FIELD MOVIND
MODULE ca,cm
MESSAGE FALSE CLEAR,F_CONTIND
MESSAGE TRUE ENABLE,F_CONTIND
END
BOOLEAN F_CONTIND
BEGIN
PROMPT 34 18 "Contabilità industriale"
FIELD MOVCGIND
MODULE ci
END END
NUMBER F_REGSPIVA 2 NUMBER F_REGSPIVA 2

View File

@ -700,6 +700,7 @@ void TPrimanota_application::fill_sheet(TMask& m) const
bool TPrimanota_application::can_I_write(const TRelation* rel) const bool TPrimanota_application::can_I_write(const TRelation* rel) const
{ {
/*
static int err = -1; static int err = -1;
if (err < 0) if (err < 0)
{ {
@ -729,6 +730,8 @@ bool TPrimanota_application::can_I_write(const TRelation* rel) const
} }
return yes; return yes;
*/
return TRelation_application::can_I_write(rel);
} }
// Ritorna il prossimo numero di registrazione libero // Ritorna il prossimo numero di registrazione libero
@ -1383,7 +1386,7 @@ int TPrimanota_application::write(const TMask& m)
{ {
TCausale c(causauto); TCausale c(causauto);
if ((!gestione_saldaconto() || c.tipomov() == 0) && c.iva() == nessuna_iva) if ((!gestione_saldaconto() || c.tipomov() == 0) && c.iva() == nessuna_iva)
tipauto = causauto.full() ? 1 : 0; tipauto = 1;
} }
} }
} }
@ -1409,9 +1412,9 @@ int TPrimanota_application::write(const TMask& m)
} }
link_m770(); link_m770();
link_cesp(m, "Insert"); link_cesp (m, "Insert");
link_intra(m, "Insert"); link_intra(m, "Insert");
link_anal(m, "Insert"); link_anal (m, "Insert");
} }
lasterr = err; lasterr = err;
@ -1456,9 +1459,9 @@ int TPrimanota_application::rewrite(const TMask& m)
} }
link_m770(); link_m770();
link_cesp(m, "Modify"); link_cesp (m, "Modify");
link_intra(m, "Modify"); link_intra(m, "Modify");
link_anal(m, "Modify"); link_anal (m, "Modify");
} }
return err; return err;
@ -1488,9 +1491,9 @@ bool TPrimanota_application::remove()
partite().rewrite(); partite().rewrite();
} }
} }
link_cesp(m, "Remove"); link_cesp (m, "Remove");
link_intra(m, "Remove"); link_intra(m, "Remove");
link_anal(m, "Remove"); link_anal (m, "Remove");
} }
return ok; return ok;
} }
@ -1715,6 +1718,7 @@ bool TPrimanota_application::link_m770()
if (!has_module(M77AUT) || iva() == iva_vendite || m770 == 0) if (!has_module(M77AUT) || iva() == iva_vendite || m770 == 0)
return false; return false;
const TMask& cm = curr_mask();
int tipo_coll = 0; int tipo_coll = 0;
char tipper = ' '; char tipper = ' ';
long codper = 0; long codper = 0;
@ -1724,7 +1728,7 @@ bool TPrimanota_application::link_m770()
{ {
if (m770 == 1 || m770 == 5) if (m770 == 1 || m770 == 5)
{ {
const long forn = curr_mask().get_long(F_FORNITORE); const long forn = cm.get_long(F_FORNITORE);
if (is_percipient(forn, tipper, codper)) if (is_percipient(forn, tipper, codper))
calcola_m770(tipo_coll = 1, spese, compenso, imposte, ritenute); calcola_m770(tipo_coll = 1, spese, compenso, imposte, ritenute);
} }
@ -1754,18 +1758,18 @@ bool TPrimanota_application::link_m770()
} }
} }
if (tipo_coll) if (tipo_coll > 0)
{ {
TToken_string s(80); TToken_string s(80);
s.add(tipo_coll); s.add(tipo_coll);
s.add(curr_mask().insert_mode() ? "I" : "M"); s.add(cm.insert_mode() ? "I" : "M");
s.add(tipper); s.add(tipper);
s.add(codper); s.add(codper);
s.add(curr_mask().get(F_NUMREG)); s.add(cm.get(F_NUMREG));
s.add(curr_mask().get(F_NUMDOC)); s.add(cm.get(F_NUMDOC));
s.add(curr_mask().get(F_DATADOC)); s.add(cm.get(F_DATADOC));
if (iva() == iva_acquisti) if (iva() == iva_acquisti)
s.add(curr_mask().get(F_TOTALE)); s.add(cm.get(F_TOTALE));
else else
s.add(""); s.add("");
s.add(spese.string()); s.add(spese.string());
@ -2322,12 +2326,11 @@ bool TPrimanota_application::link_anal(const TMask& msk, const char* action)
if (!fexist("ca2.exe")) if (!fexist("ca2.exe"))
return false; return false;
TConfig cfg(CONFIG_DITTA, "ca"); const TDate data_att = ini_get_string(CONFIG_DITTA, "ca", "DtAttCa");
const TDate data_att = cfg.get("DtAttCa");
if (data_att.ok()) if (data_att.ok())
{ {
//la data competenza puo' essere vuota nel caso l'utonto non abbia i permessi per compilarla.. // la data competenza puo' essere vuota nel caso l'utonto non abbia i permessi per compilarla...
//..ovvero lavora a Dinamica // ...ovvero lavora a Dinamica
TDate data_cmp = msk.get_date(F_DATACOMP); TDate data_cmp = msk.get_date(F_DATACOMP);
if(!data_cmp.ok()) if(!data_cmp.ok())
data_cmp = msk.get_date(F_DATAREG); data_cmp = msk.get_date(F_DATAREG);
@ -2347,12 +2350,10 @@ bool TPrimanota_application::link_anal(const TMask& msk, const char* action)
} }
if (action[0] == 'I') if (action[0] == 'I')
{ {
// Se non ci sono conti analitici è inutile inserire // Se non ci sono conti analitici è inutile inserire
if (!bAnalBill) if (!bAnalBill)
return false; return false;
} }
// Controllo se esiste già il movimento // Controllo se esiste già il movimento
@ -2399,7 +2400,6 @@ bool TPrimanota_application::link_anal(const TMask& msk, const char* action)
app.run(); app.run();
return true; return true;
} }
bool TPrimanota_application::protected_record(TRectype& mov) bool TPrimanota_application::protected_record(TRectype& mov)
@ -2413,18 +2413,18 @@ bool TPrimanota_application::protected_record(TRectype& mov)
{ {
if (mov.get_bool(MOV_STAMPATO)) if (mov.get_bool(MOV_STAMPATO))
{ {
ok = yesno_box(FR("Il movimento %ld è già stato stampato sul libro giornale:\n" ok = delete_box(FR("Il movimento %ld è già stato stampato sul libro giornale:\n"
"si desidera eliminarlo ugualmente?"), numreg); "si desidera eliminarlo ugualmente?"), numreg);
} }
if (ok && mov.get_bool(MOV_REGST)) if (ok && mov.get_bool(MOV_REGST))
{ {
ok = yesno_box(FR("Il movimento %ld è già stato stampato sul bollato:\n" ok = delete_box(FR("Il movimento %ld è già stato stampato sul bollato:\n"
"si desidera eliminarlo ugualmente?"), numreg); "si desidera eliminarlo ugualmente?"), numreg);
} }
if (ok && mov.get_bool(MOV_INVIATO)) if (ok && mov.get_bool(MOV_INVIATO))
{ {
ok = yesno_box(FR("Il movimento %ld è stato inviato ad un'altra contabilità:\n" ok = delete_box(FR("Il movimento %ld è stato inviato ad un'altra contabilità:\n"
"si desidera eliminarlo ugualmente?"), numreg); "si desidera eliminarlo ugualmente?"), numreg);
} }
if (ok) if (ok)
last_checked_numreg = numreg; last_checked_numreg = numreg;

View File

@ -394,9 +394,9 @@ BEGIN
GROUP 2 GROUP 2
END END
BUTTON F_OCCASEDIT 56 BUTTON F_OCCASEDIT 50
BEGIN BEGIN
PROMPT 1 10 "Dati anagrafici del cliente o fornitore occasionale" PROMPT 1 10 "Dati del cliente o fornitore occasionale"
FLAGS "H" FLAGS "H"
END END

View File

@ -295,10 +295,10 @@ protected:
bool is_percipient(long forn, char& tipper, long& codper) const; bool is_percipient(long forn, char& tipper, long& codper) const;
long calcola_m770(int tipo_coll, real& spese, real& compenso, real& iva, real& ritfis); long calcola_m770(int tipo_coll, real& spese, real& compenso, real& iva, real& ritfis);
bool link_m770(); bool link_m770();
bool link_cesp(const TMask& msk, const char* action); bool link_cesp (const TMask& msk, const char* action);
bool link_intra(const TMask& msk, const char* action); bool link_intra(const TMask& msk, const char* action);
bool link_anal(const TMask& msk, const char* action); bool link_anal (const TMask& msk, const char* action);
public: public:
static int type2pos(char tipo); static int type2pos(char tipo);
static char row_type(const TToken_string& s); static char row_type(const TToken_string& s);

View File

@ -164,6 +164,9 @@ char TCausale::link_cespiti() const
bool TCausale::link_analitica() const bool TCausale::link_analitica() const
{ return _rec.get_bool(CAU_MOVIND); } { return _rec.get_bool(CAU_MOVIND); }
bool TCausale::link_industriale() const
{ return _rec.exist(CAU_MOVCGIND) && _rec.get_bool(CAU_MOVCGIND); }
bool TCausale::ok() const bool TCausale::ok() const
{ return iva() != iva_errata; } { return iva() != iva_errata; }

View File

@ -58,6 +58,7 @@ public:
int link_m770() const; int link_m770() const;
char link_cespiti() const; char link_cespiti() const;
bool link_analitica() const; bool link_analitica() const;
bool link_industriale() const;
const TString& compatible(const TCausale& c) const; const TString& compatible(const TCausale& c) const;

View File

@ -2158,14 +2158,17 @@ bool TPrimanota_application::edit_partite(const TMask& m, int riga)
bool TPrimanota_application::crea_partita(const TBill& bill, int anno, const TString& numero, int numrig, const TImporto& importo) bool TPrimanota_application::crea_partita(const TBill& bill, int anno, const TString& numero, int numrig, const TImporto& importo)
{ {
TMask& cm = curr_mask();
TPartita& partita = app().partite().partita(bill, anno, numero); TPartita& partita = app().partite().partita(bill, anno, numero);
TRiga_partite& part = partita.new_row(); // Creazione nuova riga vuota TRiga_partite& part = partita.new_row(); // Creazione nuova riga vuota
const int nriga = part.get_int(PART_NRIGA); // Nuova riga const int nriga = part.get_int(PART_NRIGA); // Nuova riga
// Copia dati movimento corrente // Copia dati movimento corrente
part.put(PART_NREG, NUMREG_PROVVISORIO); // Numero operazione const long numreg = cm.insert_mode() ? NUMREG_PROVVISORIO : cm.get_long(F_NUMREG);
part.put(PART_NUMRIG, numrig); // Riga su cui ho cliccato part.put(PART_NREG, numreg); // Numero operazione
part.put(PART_NUMRIG, numrig); // Riga su cui ho cliccato
// Forza il gruppo/conto cliente corretto (lo fa gia' anche la new_row) // Forza il gruppo/conto cliente corretto (lo fa gia' anche la new_row)
part.put(PART_GRUPPOCL, bill.gruppo()); part.put(PART_GRUPPOCL, bill.gruppo());
@ -2175,7 +2178,6 @@ bool TPrimanota_application::crea_partita(const TBill& bill, int anno, const TSt
const tipo_movimento tm = (tipo_movimento)causale.tipomov(); const tipo_movimento tm = (tipo_movimento)causale.tipomov();
part.put(PART_TIPOMOV, int(tm)); part.put(PART_TIPOMOV, int(tm));
TMask& cm = app().curr_mask();
// Setta il cambio corrente // Setta il cambio corrente
const TValuta valuta(cm, SK_VALUTA, SK_DATACAMBIO, SK_CAMBIO); const TValuta valuta(cm, SK_VALUTA, SK_DATACAMBIO, SK_CAMBIO);

View File

@ -1,353 +1,353 @@
#include <automask.h> #include <automask.h>
#include <colors.h> #include <colors.h>
#include <execp.h> #include <execp.h>
#include <modaut.h> #include <modaut.h>
#include <treectrl.h> #include <treectrl.h>
#include <utility.h> #include <utility.h>
#include <defmask.h> #include <defmask.h>
#include <varmask.h> #include <varmask.h>
#include "cg2100.h" #include "cg2100.h"
#include "cg2102.h" #include "cg2102.h"
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Maschere per colori // Maschere per colori
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TColor_mask : public TAutomask class TColor_mask : public TAutomask
{ {
const char* const _tipi; const char* const _tipi;
protected: protected:
TProp_field& props() { return (TProp_field&)field(DLG_USER); } TProp_field& props() { return (TProp_field&)field(DLG_USER); }
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void load_props(); void load_props();
void reset_props(); void reset_props();
void save_props(); void save_props();
public: public:
TColor_mask(); TColor_mask();
}; };
bool TColor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TColor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
switch (o.dlg()) switch (o.dlg())
{ {
case DLG_DELREC: case DLG_DELREC:
if (e == fe_button) if (e == fe_button)
{ {
reset_props(); reset_props();
return false; // Evita chiusura maschera return false; // Evita chiusura maschera
} }
break; break;
case DLG_USER: case DLG_USER:
switch (e) switch (e)
{ {
case fe_init: case fe_init:
xvt_vobj_maximize(props().win().win()); xvt_vobj_maximize(props().win().win());
load_props(); load_props();
break; break;
case fe_close: case fe_close:
save_props(); save_props();
break; break;
default: default:
break; break;
} }
break; break;
default: break; default: break;
} }
return true; return true;
} }
void TColor_mask::load_props() void TColor_mask::load_props()
{ {
const char* const desc[] = const char* const desc[] =
{ {
TR("Totale documento/saldo partite"), TR("Totale documento/saldo partite"),
TR("Ritenute fiscali"), TR("Ritenute fiscali"),
TR("Ritenute sociali"), TR("Ritenute sociali"),
TR("Generata (Imponibile)"), TR("Generata (Imponibile)"),
TR("IVA detraibile"), TR("IVA detraibile"),
TR("IVA non detraibile"), TR("IVA non detraibile"),
TR("Abbuoni attivi"), TR("Abbuoni attivi"),
TR("Abbuoni passivi"), TR("Abbuoni passivi"),
TR("Ritenute professionali"), TR("Ritenute professionali"),
TR("Differenza cambi"), TR("Differenza cambi"),
TR("Spese"), TR("Spese"),
TR("Contropartita spese"), TR("Contropartita spese"),
TR("Riga Cliente/Fornitore"), TR("Riga Cliente/Fornitore"),
TR("Riga Collegata") TR("Riga Collegata")
}; };
TPrimanota_application& a = app(); TPrimanota_application& a = app();
TProp_field& ps = props(); TProp_field& ps = props();
ps.freeze(true); ps.freeze(true);
int d = 0; int d = 0;
char prop[4] = "T_B"; char prop[4] = "T_B";
for (const char* k = _tipi; *k; k++, d++) for (const char* k = _tipi; *k; k++, d++)
{ {
COLOR back, fore; COLOR back, fore;
a.type2colors(*k, back, fore); a.type2colors(*k, back, fore);
prop[0] = *k; prop[1] = '\0'; prop[0] = *k; prop[1] = '\0';
ps.set_property(prop, (const char*)NULL, desc[d]); ps.set_property(prop, (const char*)NULL, desc[d]);
prop[0] = *k; prop[1] = '_'; prop[2] = 'B'; prop[0] = *k; prop[1] = '_'; prop[2] = 'B';
ps.set_property(prop, back, TR("Sfondo")); ps.set_property(prop, back, TR("Sfondo"));
prop[2] = 'F'; prop[2] = 'F';
ps.set_property(prop, fore, TR("Testo")); ps.set_property(prop, fore, TR("Testo"));
} }
ps.freeze(false); ps.freeze(false);
} }
void TColor_mask::reset_props() void TColor_mask::reset_props()
{ {
TProp_field& ps = props(); TProp_field& ps = props();
ps.freeze(true); ps.freeze(true);
char prop[4] = "T_B"; char prop[4] = "T_B";
for (const char* k = _tipi; *k; k++) for (const char* k = _tipi; *k; k++)
{ {
prop[0] = *k; prop[0] = *k;
prop[2] = 'B'; prop[2] = 'B';
ps.set_property(prop, NORMAL_BACK_COLOR); ps.set_property(prop, NORMAL_BACK_COLOR);
prop[2] = 'F'; prop[2] = 'F';
ps.set_property(prop, NORMAL_COLOR); ps.set_property(prop, NORMAL_COLOR);
} }
ps.freeze(false); ps.freeze(false);
} }
void TColor_mask::save_props() void TColor_mask::save_props()
{ {
TPrimanota_application& a = app(); TPrimanota_application& a = app();
TProp_field& ps = props(); TProp_field& ps = props();
char prop[4] = "T_B"; char prop[4] = "T_B";
for (const char* k = _tipi; *k; k++) for (const char* k = _tipi; *k; k++)
{ {
prop[0] = *k; prop[0] = *k;
prop[2] = 'B'; prop[2] = 'B';
const COLOR back = ps.get_color_property(prop); const COLOR back = ps.get_color_property(prop);
prop[2] = 'F'; prop[2] = 'F';
const COLOR fore = ps.get_color_property(prop); const COLOR fore = ps.get_color_property(prop);
a.set_type_colors(*k, back, fore); a.set_type_colors(*k, back, fore);
} }
} }
TColor_mask::TColor_mask() : TAutomask("cg2100k"), _tipi("TFSIDNAPRCGLKX") TColor_mask::TColor_mask() : TAutomask("cg2100k"), _tipi("TFSIDNAPRCGLKX")
{ } { }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Gestione righe colorate // Gestione righe colorate
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
void TPrimanota_application::load_colors() void TPrimanota_application::load_colors()
{ {
TConfig conf(CONFIG_USER, "cg2"); TConfig conf(CONFIG_USER, "cg2");
TAssoc_array& colori = (TAssoc_array&)conf.list_variables(); TAssoc_array& colori = (TAssoc_array&)conf.list_variables();
for (THash_object* o = colori.get_hashobj(); o; o = colori.get_hashobj()) for (THash_object* o = colori.get_hashobj(); o; o = colori.get_hashobj())
{ {
const TString& key = o->key(); const TString& key = o->key();
if (key.len() == 7 && key.compare("Color", 5, TRUE) == 0) if (key.len() == 7 && key.compare("Color", 5, TRUE) == 0)
{ {
const COLOR col = conf.get_color(key); const COLOR col = conf.get_color(key);
TString* strcol = new TString(15); TString* strcol = new TString(15);
strcol->format("%ld", col); strcol->format("%ld", col);
_colori.add(key.mid(5), strcol); _colori.add(key.mid(5), strcol);
} }
} }
} }
void TPrimanota_application::save_colors() void TPrimanota_application::save_colors()
{ {
TConfig conf(CONFIG_USER, "cg2"); TConfig conf(CONFIG_USER, "cg2");
TString16 tmp; TString16 tmp;
for (THash_object* o = _colori.get_hashobj(); o; o = _colori.get_hashobj()) for (THash_object* o = _colori.get_hashobj(); o; o = _colori.get_hashobj())
{ {
tmp = "Color"; tmp << o->key(); tmp = "Color"; tmp << o->key();
const COLOR col = atol((TString&)o->obj()); const COLOR col = atol((TString&)o->obj());
bool should_delete = FALSE; bool should_delete = FALSE;
if (tmp[5] == 'B') if (tmp[5] == 'B')
should_delete = same_color(col, NORMAL_BACK_COLOR); should_delete = same_color(col, NORMAL_BACK_COLOR);
else else
should_delete = same_color(col, NORMAL_COLOR); should_delete = same_color(col, NORMAL_COLOR);
if (should_delete) if (should_delete)
conf.remove(tmp); conf.remove(tmp);
else else
conf.set_color(tmp, col); conf.set_color(tmp, col);
} }
} }
COLOR TPrimanota_application::type2color(char tipor, char tipoc) COLOR TPrimanota_application::type2color(char tipor, char tipoc)
{ {
COLOR col; COLOR col;
if (tipor > ' ') if (tipor > ' ')
{ {
const char key[3] = { tipoc, tipor, '\0' }; const char key[3] = { tipoc, tipor, '\0' };
TString* colstr = (TString*)_colori.objptr(key); TString* colstr = (TString*)_colori.objptr(key);
if (colstr == NULL) if (colstr == NULL)
{ {
colstr = new TString(8); colstr = new TString(8);
if (tipor == 'X') if (tipor == 'X')
colstr->format("%ld", tipoc == 'B' ? FOCUS_BACK_COLOR : FOCUS_COLOR); colstr->format("%ld", tipoc == 'B' ? FOCUS_BACK_COLOR : FOCUS_COLOR);
else else
colstr->format("%ld", tipoc == 'B' ? NORMAL_BACK_COLOR : NORMAL_COLOR); colstr->format("%ld", tipoc == 'B' ? NORMAL_BACK_COLOR : NORMAL_COLOR);
_colori.add(key, colstr); _colori.add(key, colstr);
} }
col = atol(*colstr); col = atol(*colstr);
} }
else else
{ {
col = tipoc == 'B' ? NORMAL_BACK_COLOR : NORMAL_COLOR; col = tipoc == 'B' ? NORMAL_BACK_COLOR : NORMAL_COLOR;
} }
return col; return col;
} }
void TPrimanota_application::set_type_color(char tipor, char tipoc, COLOR col) void TPrimanota_application::set_type_color(char tipor, char tipoc, COLOR col)
{ {
if (tipor > ' ') if (tipor > ' ')
{ {
const char key[3] = { tipoc, tipor, '\0' }; const char key[3] = { tipoc, tipor, '\0' };
TString* colstr = (TString*)_colori.objptr(key); TString* colstr = (TString*)_colori.objptr(key);
if (colstr == NULL) if (colstr == NULL)
{ {
colstr = new TString(8); colstr = new TString(8);
_colori.add(key, colstr); _colori.add(key, colstr);
} }
colstr->format("%ld", col); colstr->format("%ld", col);
} }
} }
void TPrimanota_application::type2colors(char tipor, COLOR& back, COLOR& fore) void TPrimanota_application::type2colors(char tipor, COLOR& back, COLOR& fore)
{ {
back = type2color(tipor, 'B'); back = type2color(tipor, 'B');
fore = type2color(tipor, 'F'); fore = type2color(tipor, 'F');
} }
void TPrimanota_application::set_type_colors(char tipor, COLOR back, COLOR fore) void TPrimanota_application::set_type_colors(char tipor, COLOR back, COLOR fore)
{ {
set_type_color(tipor, 'B', back); set_type_color(tipor, 'B', back);
set_type_color(tipor, 'F', fore); set_type_color(tipor, 'F', fore);
} }
void TPrimanota_application::reset_colors() void TPrimanota_application::reset_colors()
{ {
_colori.destroy(); _colori.destroy();
} }
void TPrimanota_application::set_colors() void TPrimanota_application::set_colors()
{ {
TColor_mask colors; TColor_mask colors;
if (colors.run() == K_ENTER) if (colors.run() == K_ENTER)
save_colors(); save_colors();
else else
load_colors(); load_colors();
} }
bool TPrimanota_application::colors_handler(TMask_field& f, KEY k) bool TPrimanota_application::colors_handler(TMask_field& f, KEY k)
{ {
if (k == K_SPACE) if (k == K_SPACE)
app().set_colors(); app().set_colors();
return true; return true;
} }
#ifdef PRORATA100 #ifdef PRORATA100
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Gestione cambiamento prorata // Gestione cambiamento prorata
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
bool TPrimanota_application::test_prorata() bool TPrimanota_application::test_prorata()
{ {
if (iva() != iva_acquisti || !cgs().shown() || _as400) if (iva() != iva_acquisti || !cgs().shown() || _as400)
return true; return true;
bool esistono_righe_senza_tipo_detrazione = false; bool esistono_righe_senza_tipo_detrazione = false;
const TString_array& righe_iva = ivas().rows_array(); const TString_array& righe_iva = ivas().rows_array();
for (int r = 0; r < righe_iva.items(); r++) for (int r = 0; r < righe_iva.items(); r++)
{ {
const TToken_string& row = righe_iva.row(r); const TToken_string& row = righe_iva.row(r);
real imp_det, iva_det, imp_ind, iva_ind; real imp_det, iva_det, imp_ind, iva_ind;
get_importi_iva(row, imp_det, iva_det, imp_ind, iva_ind); get_importi_iva(row, imp_det, iva_det, imp_ind, iva_ind);
if (!iva_det.is_zero()) if (!iva_det.is_zero())
{ {
esistono_righe_senza_tipo_detrazione = true; esistono_righe_senza_tipo_detrazione = true;
break; break;
} }
} }
bool ok = true; bool ok = true;
if (esistono_righe_senza_tipo_detrazione) if (esistono_righe_senza_tipo_detrazione)
{ {
int annodoc = _msk[2]->get_date(F_DATADOC).year(); int annodoc = _msk[2]->get_date(F_DATADOC).year();
if (annodoc < 1900) if (annodoc < 1900)
annodoc = _msk[2]->get_int(F_ANNOIVA); annodoc = _msk[2]->get_int(F_ANNOIVA);
const bool prorata100 = causale().reg().prorata100(annodoc); const bool prorata100 = causale().reg().prorata100(annodoc);
const bool esiste_riga_iva_detraibile = type2pos('D') >= 0; const bool esiste_riga_iva_detraibile = type2pos('D') >= 0;
if (prorata100) if (prorata100)
ok = !esiste_riga_iva_detraibile; ok = !esiste_riga_iva_detraibile;
else else
ok = _msk[2]->get_real(F_TOTALE).is_zero() || esiste_riga_iva_detraibile; ok = _msk[2]->get_real(F_TOTALE).is_zero() || esiste_riga_iva_detraibile;
} }
return ok; return ok;
} }
bool TPrimanota_application::aggiusta_prorata() bool TPrimanota_application::aggiusta_prorata()
{ {
TWait_cursor hourglass; TWait_cursor hourglass;
if (test_prorata()) if (test_prorata())
return FALSE; return FALSE;
TRegistro& reg = causale().reg(); TRegistro& reg = causale().reg();
int annodoc = _msk[2]->get_date(F_DATADOC).year(); int annodoc = _msk[2]->get_date(F_DATADOC).year();
if (annodoc < 1900) if (annodoc < 1900)
annodoc = _msk[2]->get_int(F_ANNOIVA); annodoc = _msk[2]->get_int(F_ANNOIVA);
const real prorata_attuale = reg.prorata(annodoc); const real prorata_attuale = reg.prorata(annodoc);
const real vecchio_prorata = prorata_attuale < CENTO ? CENTO : ZERO; const real vecchio_prorata = prorata_attuale < CENTO ? CENTO : ZERO;
TSheet_field& iva_sheet = ivas(); TSheet_field& iva_sheet = ivas();
TString_array& righe_iva = iva_sheet.rows_array(); TString_array& righe_iva = iva_sheet.rows_array();
TToken_string oldrow(128); TToken_string oldrow(128);
for (int i = 0; i < righe_iva.items(); i++) for (int i = 0; i < righe_iva.items(); i++)
{ {
TToken_string& r = righe_iva.row(i); TToken_string& r = righe_iva.row(i);
if (!r.empty_items()) if (!r.empty_items())
{ {
oldrow = r; // Memorizza riga iva oldrow = r; // Memorizza riga iva
reg.set_prorata(annodoc, vecchio_prorata); reg.set_prorata(annodoc, vecchio_prorata);
iva_notify(iva_sheet, i, K_SPACE); iva_notify(iva_sheet, i, K_SPACE);
r.add("", 0); r.add("", 3); // Simula l'azzeramento degli importi r.add("", 0); r.add("", 3); // Simula l'azzeramento degli importi
iva_notify(iva_sheet, i, K_ENTER); // Simula uscita dalla riga iva_notify(iva_sheet, i, K_ENTER); // Simula uscita dalla riga
reg.set_prorata(annodoc, prorata_attuale); reg.set_prorata(annodoc, prorata_attuale);
iva_notify(iva_sheet, i, K_SPACE); iva_notify(iva_sheet, i, K_SPACE);
r = oldrow; // Simula riscrittura importi r = oldrow; // Simula riscrittura importi
iva_notify(iva_sheet, i, K_ENTER); // Simula uscita dalla riga iva_notify(iva_sheet, i, K_ENTER); // Simula uscita dalla riga
} }
else else
break; break;
} }
return TRUE; return TRUE;
} }
bool TPrimanota_application::prorata_handler(TMask_field& f, KEY k) bool TPrimanota_application::prorata_handler(TMask_field& f, KEY k)
{ {
if (k == K_SPACE) if (k == K_SPACE)
{ {
if (app().aggiusta_prorata()) if (app().aggiusta_prorata())
f.hide(); f.hide();
} }
return TRUE; return TRUE;
} }
#endif #endif

View File

@ -224,7 +224,7 @@ HIDDEN TStampa_giornale& app() { return (TStampa_giornale&)main_app(); }
bool TStampa_giornale::filtra_reg(const TRelation * r) bool TStampa_giornale::filtra_reg(const TRelation * r)
{ {
bool ok = TRUE; bool ok = true;
if (app()._ae_solare) if (app()._ae_solare)
{ {
const TRectype& rec = r->lfile().curr(); const TRectype& rec = r->lfile().curr();
@ -241,13 +241,13 @@ bool TStampa_giornale::filter_func(const TRelation * r)
// Scarto SEMPRE i provvisori // Scarto SEMPRE i provvisori
const TString& provvis = recmov.get(MOV_PROVVIS); const TString& provvis = recmov.get(MOV_PROVVIS);
if (!provvis.blank()) if (!provvis.blank())
return FALSE; return false;
// Scarto i movimenti che hanno il registro ai soli fini della liquidazione // Scarto i movimenti che hanno il registro ai soli fini della liquidazione
const TRectype& reg = r->lfile("REG").curr(); const TRectype& reg = r->lfile("REG").curr();
const tipo_sospensione ts = reg.get_bool("B1") ? (tipo_sospensione) reg.get_int("I9") : nessuna; const tipo_sospensione ts = reg.get_bool("B1") ? (tipo_sospensione) reg.get_int("I9") : nessuna;
if (ts == liquidazione) if (ts == liquidazione)
return FALSE; return false;
// In caso di NO libro con iva scarta quelli che non hanno righe contabili // In caso di NO libro con iva scarta quelli che non hanno righe contabili
if (!app()._libro_giornale_iva_unico) if (!app()._libro_giornale_iva_unico)
@ -264,7 +264,7 @@ bool TStampa_giornale::filter_func(const TRelation * r)
return numreg2 == numreg; return numreg2 == numreg;
} }
} }
return TRUE; return true;
} }
@ -360,7 +360,7 @@ bool TStampa_giornale::user_create()
add_file (LF_MOV); add_file (LF_MOV);
add_file (LF_RMOV); add_file (LF_RMOV);
add_file (LF_RMOVIVA); add_file (LF_RMOVIVA);
return TRUE; return true;
} }
bool TStampa_giornale::user_destroy() bool TStampa_giornale::user_destroy()
@ -370,7 +370,7 @@ bool TStampa_giornale::user_destroy()
delete _RecArrivoA; delete _RecArrivoA;
delete _tabreg; delete _tabreg;
return TRUE; return true;
} }
void TStampa_giornale::aggiorna_mov() void TStampa_giornale::aggiorna_mov()
@ -381,14 +381,14 @@ void TStampa_giornale::aggiorna_mov()
_cur->setregion(*_RecPartoDa, *_RecArrivoA); _cur->setregion(*_RecPartoDa, *_RecArrivoA);
const long items = _cur->items(); const long items = _cur->items();
TProgind prnd (items, TR("Aggiornamento movimenti ..."), FALSE, TRUE); TProgind prnd (items, TR("Aggiornamento movimenti ..."), false, true);
for ((*_cur) = 0L; _cur->pos() < items; ++(*_cur)) for ((*_cur) = 0L; _cur->pos() < items; ++(*_cur))
{ {
const bool gia_stampato = _cur->file(LF_MOV).get_bool(MOV_STAMPATO); const bool gia_stampato = _cur->file(LF_MOV).get_bool(MOV_STAMPATO);
if (!gia_stampato) if (!gia_stampato)
{ {
_cur->file(LF_MOV).put (MOV_STAMPATO, TRUE); _cur->file(LF_MOV).put (MOV_STAMPATO, true);
_cur->file(LF_MOV).put (MOV_NUMGIO, nprog); _cur->file(LF_MOV).put (MOV_NUMGIO, nprog);
mov.rewrite(); mov.rewrite();
nprog++; nprog++;
@ -467,7 +467,7 @@ void TStampa_giornale::preprocess_footer()
TString progr_dare_ap(22), progr_avere_ap(22); TString progr_dare_ap(22), progr_avere_ap(22);
TString progr_dare(25), progr_avere(25), dts(25), ats(25); TString progr_dare(25), progr_avere(25), dts(25), ats(25);
TString256 riga; TString256 riga;
bool ap = FALSE; bool ap = false;
int r=1; // was 2 int r=1; // was 2
const int STUMB = 42; const int STUMB = 42;
real dt, at; real dt, at;
@ -478,7 +478,7 @@ void TStampa_giornale::preprocess_footer()
{ {
real2currency(progr_dare_ap, _tot_dare_progr_ap); real2currency(progr_dare_ap, _tot_dare_progr_ap);
real2currency(progr_avere_ap, _tot_avere_progr_ap); real2currency(progr_avere_ap, _tot_avere_progr_ap);
ap = TRUE; ap = true;
} }
// //
@ -510,10 +510,10 @@ void TStampa_giornale::preprocess_footer()
(const char *) ats); (const char *) ats);
set_footer (r++, (const char*) riga); set_footer (r++, (const char*) riga);
_forza_ariportare = FALSE; _forza_ariportare = false;
if (_devo_riportare > 1) if (_devo_riportare > 1)
_devo_riportare = FALSE; _devo_riportare = false;
} }
} }
@ -523,7 +523,7 @@ int TStampa_giornale::set_totali_pagina(int righe)
TString progr_dare_ap(22), progr_avere_ap(22); TString progr_dare_ap(22), progr_avere_ap(22);
TString progr_dare(22), progr_avere(22), dts(22), ats(22); TString progr_dare(22), progr_avere(22), dts(22), ats(22);
TString256 riga; TString256 riga;
bool ap = FALSE; bool ap = false;
const int SHIFT = 15; const int SHIFT = 15;
const int STUMB = 51 + SHIFT; const int STUMB = 51 + SHIFT;
real dt, at; real dt, at;
@ -533,7 +533,7 @@ int TStampa_giornale::set_totali_pagina(int righe)
{ {
real2currency(progr_dare_ap, _tot_dare_progr_ap); real2currency(progr_dare_ap, _tot_dare_progr_ap);
real2currency(progr_avere_ap, _tot_avere_progr_ap); real2currency(progr_avere_ap, _tot_avere_progr_ap);
ap = TRUE; ap = true;
} }
if (_cur->pos() == _cur->items()-1) // se sono sull'ultimo if (_cur->pos() == _cur->items()-1) // se sono sull'ultimo
@ -596,10 +596,10 @@ int TStampa_giornale::set_totali_pagina(int righe)
// Determina se le righe settate finora stanno in questa pagina oppure no // Determina se le righe settate finora stanno in questa pagina oppure no
_gia_settato_ariportare = righe_rimaste() > righe; _gia_settato_ariportare = righe_rimaste() > righe;
// La fill_page mette forza_ariportare a TRUE // La fill_page mette forza_ariportare a true
// nel caso di pagine con solo i totali (v. fax VLADIMIRO) bisogna impedire // nel caso di pagine con solo i totali (v. fax VLADIMIRO) bisogna impedire
// che venga stampato di nuovo "Totale ..." nella preprocess_footer // che venga stampato di nuovo "Totale ..." nella preprocess_footer
_forza_ariportare = FALSE; _forza_ariportare = false;
dt = _tot_dare_progr + _tot_dare_progr_ap; dt = _tot_dare_progr + _tot_dare_progr_ap;
at = _tot_avere_progr + _tot_avere_progr_ap; at = _tot_avere_progr + _tot_avere_progr_ap;
@ -741,7 +741,7 @@ void TStampa_giornale::preprocess_header()
set_header(2, riga); // Sempre quasi sulla prima riga! set_header(2, riga); // Sempre quasi sulla prima riga!
} }
// _gia_settato_ariportare = FALSE; // _gia_settato_ariportare = false;
if (pag > 0) // Stampa riporti if (pag > 0) // Stampa riporti
{ {
@ -798,7 +798,7 @@ bool TStampa_giornale::preprocess_print(int file, int counter)
switch (file) switch (file)
{ {
case LF_MOV: case LF_MOV:
_nuovo_mese = FALSE; _nuovo_mese = false;
_iva_array.destroy(); _iva_array.destroy();
_nprog_mov = _nprog_da; _nprog_mov = _nprog_da;
*_RecPartoDa = _cur->curr(); *_RecPartoDa = _cur->curr();
@ -806,7 +806,7 @@ bool TStampa_giornale::preprocess_print(int file, int counter)
default: default:
break; break;
} }
return TRUE; return true;
} }
int TStampa_giornale::righe_rimaste() const int TStampa_giornale::righe_rimaste() const
@ -858,14 +858,14 @@ print_action TStampa_giornale::postprocess_print(int file, int counter)
print_action TStampa_giornale::postprocess_page(int file, int counter) print_action TStampa_giornale::postprocess_page(int file, int counter)
{ {
int righe_iva_settate=0; int righe_iva_settate=0;
// bool FINITO = FALSE; // bool FINITO = false;
if (counter) if (counter)
{ {
if (_nuovo_mese) if (_nuovo_mese)
{ {
printer().formfeed(); printer().formfeed();
_nuovo_mese = FALSE; _nuovo_mese = false;
} }
return NEXT_PAGE; return NEXT_PAGE;
} }
@ -889,7 +889,7 @@ print_action TStampa_giornale::postprocess_page(int file, int counter)
--(*_cur); --(*_cur);
_cur->restore_status(); _cur->restore_status();
_devo_riportare = TRUE; _devo_riportare = true;
const bool last_row = _cur->pos() == _cur->items()-1; const bool last_row = _cur->pos() == _cur->items()-1;
if (_data_corr != _data_succ || last_row) if (_data_corr != _data_succ || last_row)
@ -901,9 +901,9 @@ print_action TStampa_giornale::postprocess_page(int file, int counter)
righe = set_totali_pagina(righe); righe = set_totali_pagina(righe);
if (righe - 1 > (int)printer().rows_left()) if (righe - 1 > (int)printer().rows_left())
_devo_riportare = 3; // Very TRUE! _devo_riportare = 3; // Very true!
else else
_devo_riportare = FALSE; _devo_riportare = false;
// Nella stampa su bollato metto un segno su tutte le righe // Nella stampa su bollato metto un segno su tutte le righe
if (_stampa_definitiva) if (_stampa_definitiva)
@ -922,7 +922,7 @@ print_action TStampa_giornale::postprocess_page(int file, int counter)
// pagina dopo // pagina dopo
if (!_totals_updated) if (!_totals_updated)
update_totals(_sezione, _importo); update_totals(_sezione, _importo);
_gia_settato_ariportare = FALSE; _gia_settato_ariportare = false;
break; break;
default: default:
break; break;
@ -1145,11 +1145,11 @@ void TStampa_giornale::set_rows (int file, int counter)
const int left = printer().rows_left(); const int left = printer().rows_left();
if (left > 0 && left < rows) if (left > 0 && left < rows)
{ {
_totals_updated = TRUE; _totals_updated = true;
update_totals(_sezione, _importo); update_totals(_sezione, _importo);
} }
else else
_totals_updated = FALSE; _totals_updated = false;
} }
} }
break; break;
@ -1166,7 +1166,7 @@ void TStampa_giornale::set_rows (int file, int counter)
// //
bool TStampa_giornale::preprocess_page(int file, int counter) bool TStampa_giornale::preprocess_page(int file, int counter)
{ {
if (counter) return TRUE; if (counter) return true;
switch (file) switch (file)
{ {
@ -1184,7 +1184,7 @@ bool TStampa_giornale::preprocess_page(int file, int counter)
if (_data_corr > _ultima_data_mov) if (_data_corr > _ultima_data_mov)
_ultima_data_mov = _data_corr; _ultima_data_mov = _data_corr;
_mese_corr = _data_corr.month(); _mese_corr = _data_corr.month();
_devo_riportare = TRUE; _devo_riportare = true;
} }
break; break;
@ -1199,7 +1199,7 @@ bool TStampa_giornale::preprocess_page(int file, int counter)
break; break;
} }
set_rows (file, counter); set_rows (file, counter);
return TRUE; return true;
} }
void TStampa_giornale::calcola_iva() void TStampa_giornale::calcola_iva()
@ -1450,27 +1450,27 @@ bool TStampa_giornale::controlla_mov_aep()
fine_ep = esc[aep].fine(); fine_ep = esc[aep].fine();
} }
else else
return TRUE; // = e' il primo esercizio return true; // = e' il primo esercizio
TRectype da(LF_MOV), a(LF_MOV); TRectype da(LF_MOV), a(LF_MOV);
da.put(MOV_DATAREG, inizio_ep); da.put(MOV_DATAREG, inizio_ep);
a.put (MOV_DATAREG, fine_ep); a.put (MOV_DATAREG, fine_ep);
_cur->setregion(da, a); _cur->setregion(da, a);
_cur->setfilter(""); _cur->setfilter("");
_cur->set_filterfunction(filter_func, TRUE); _cur->set_filterfunction(filter_func, true);
const TRecnotype items = _cur->items(); const TRecnotype items = _cur->items();
_cur->freeze(); _cur->freeze();
TProgind pi(items, TR("Controllo movimenti esercizio precedente"), FALSE, TRUE); TProgind pi(items, TR("Controllo movimenti esercizio precedente"), false, true);
bool gia_stampati = TRUE; bool gia_stampati = true;
for (*_cur = 0L ; _cur->pos() < items; ++(*_cur)) for (*_cur = 0L ; _cur->pos() < items; ++(*_cur))
{ {
pi.addstatus(1); pi.addstatus(1);
gia_stampati = _cur->file().get_bool("STAMPATO"); gia_stampati = _cur->file().get_bool("STAMPATO");
if (!gia_stampati) break; // basta trovarne uno ancora da stampare if (!gia_stampati) break; // basta trovarne uno ancora da stampare
} }
_cur->freeze(FALSE); _cur->freeze(false);
if (!gia_stampati) if (!gia_stampati)
error_box(TR("Impossibile proseguire con la stampa:\n" error_box(TR("Impossibile proseguire con la stampa:\n"
"Esistono movimenti nell'esercizio precedente\n" "Esistono movimenti nell'esercizio precedente\n"
@ -1527,7 +1527,7 @@ bool TStampa_giornale::data_a_hndl (TMask_field& f, KEY k)
const TDate data_a(f.get()); const TDate data_a(f.get());
if (!data_a.ok()) if (!data_a.ok())
return TRUE; return true;
TEsercizi_contabili esc; TEsercizi_contabili esc;
const int esercizio = esc.date2esc(data_a); const int esercizio = esc.date2esc(data_a);
@ -1560,7 +1560,7 @@ bool TStampa_giornale::data_a_hndl (TMask_field& f, KEY k)
} }
} // if K_ENTER } // if K_ENTER
return TRUE; return true;
} }
bool TStampa_giornale::data_da_hndl(TMask_field& f, KEY k) bool TStampa_giornale::data_da_hndl(TMask_field& f, KEY k)
@ -1573,7 +1573,7 @@ bool TStampa_giornale::data_da_hndl(TMask_field& f, KEY k)
const TDate data_a(m.get(DATA_A)); const TDate data_a(m.get(DATA_A));
if (!data_da.ok() || !data_a.ok()) if (!data_da.ok() || !data_a.ok())
return TRUE; return true;
if (data_da.year() != data_a.year()) if (data_da.year() != data_a.year())
return f.error_box(TR("Le due date non appartengono allo stesso anno")); return f.error_box(TR("Le due date non appartengono allo stesso anno"));
@ -1594,7 +1594,7 @@ bool TStampa_giornale::data_da_hndl(TMask_field& f, KEY k)
if (data_da.ok() && data_da > data_a) if (data_da.ok() && data_da > data_a)
return f.warning_box(TR("La data di partenza non puo' essere maggiore della data finale")); return f.warning_box(TR("La data di partenza non puo' essere maggiore della data finale"));
} }
return TRUE; return true;
} }
// //
@ -1614,7 +1614,7 @@ bool TStampa_giornale::mask_a_cod_reg (TMask_field& f, KEY k)
// 25/11 controlli sul registro solo DOPO aver messo la DATA_A // 25/11 controlli sul registro solo DOPO aver messo la DATA_A
if (data_astr.empty()) if (data_astr.empty())
return TRUE; return true;
else else
{ {
TEsercizi_contabili esc; TEsercizi_contabili esc;
@ -1633,7 +1633,7 @@ bool TStampa_giornale::mask_a_cod_reg (TMask_field& f, KEY k)
m.set(REG_DESC, a._reg_descr); m.set(REG_DESC, a._reg_descr);
m.set(ANNO_ESER, a._ae_solare); m.set(ANNO_ESER, a._ae_solare);
} }
return TRUE; return true;
} }
// //
@ -1653,27 +1653,27 @@ bool TStampa_giornale::mask_b_ripristina (TMask_field& f, KEY k)
m.set(N_RIGA_STAMPATO, a._nprog_da); m.set(N_RIGA_STAMPATO, a._nprog_da);
m.set(PAGINA_DA, a._pagine_stampate); m.set(PAGINA_DA, a._pagine_stampate);
} }
return TRUE; return true;
} }
bool TStampa_giornale::mask_b_warning (TMask_field& f, KEY k) bool TStampa_giornale::mask_b_warning (TMask_field& f, KEY k)
{ {
static bool gia_detto = FALSE; static bool gia_detto = false;
if (k == K_TAB && !f.mask().is_running()) if (k == K_TAB && !f.mask().is_running())
gia_detto = FALSE; gia_detto = false;
if (!gia_detto) if (!gia_detto)
{ {
if (k == K_SPACE) if (k == K_SPACE)
{ {
f.warning_box(TR("Le modifiche a questi progressivi saranno scritte nel registro")); f.warning_box(TR("Le modifiche a questi progressivi saranno scritte nel registro"));
gia_detto = TRUE; gia_detto = true;
return TRUE; return true;
} }
} }
return TRUE; return true;
} }
void TStampa_giornale::init_print() void TStampa_giornale::init_print()
@ -1696,7 +1696,7 @@ void TStampa_giornale::init_print()
for (int i=1; i<RIGHE_FOOTER; i++) set_footer(i, "%s", " "); for (int i=1; i<RIGHE_FOOTER; i++) set_footer(i, "%s", " ");
set_real_picture (REAL_PICTURE); set_real_picture (REAL_PICTURE);
set_print_zero(TRUE); set_print_zero(true);
if (_stampa_width == 1) if (_stampa_width == 1)
_stampa_width = 132; _stampa_width = 132;
@ -1739,7 +1739,7 @@ void TStampa_giornale::init_totals()
bool TStampa_giornale::init_cursor() bool TStampa_giornale::init_cursor()
{ {
// bool gia_stampati = FALSE; // bool gia_stampati = false;
TRectype da (LF_MOV); TRectype da (LF_MOV);
TRectype a (LF_MOV); TRectype a (LF_MOV);
@ -1748,7 +1748,7 @@ bool TStampa_giornale::init_cursor()
a.put (MOV_DATAREG, _data_a); a.put (MOV_DATAREG, _data_a);
_cur->setregion(da, a); _cur->setregion(da, a);
_cur->set_filterfunction(filter_func, TRUE); _cur->set_filterfunction(filter_func, true);
_cur->setfilter(_stampa_definitiva ? "STAMPATO!=\"X\"" : ""); _cur->setfilter(_stampa_definitiva ? "STAMPATO!=\"X\"" : "");
(*_cur) = 0L; (*_cur) = 0L;
@ -1759,7 +1759,7 @@ bool TStampa_giornale::init_cursor()
return warning_box(TR("Non ci sono movimenti da stampare nel periodo selezionato.\nLa stampa e' annullata")); return warning_box(TR("Non ci sono movimenti da stampare nel periodo selezionato.\nLa stampa e' annullata"));
} }
return TRUE; return true;
} }
bool TStampa_giornale::set_print(int) bool TStampa_giornale::set_print(int)
@ -1772,7 +1772,7 @@ bool TStampa_giornale::set_print(int)
// set_reg_filter(ma); // set_reg_filter(ma);
_pagina_da = 0; // Parto dall'inizio _pagina_da = 0; // Parto dall'inizio
_forza_ariportare = FALSE; _forza_ariportare = false;
KEY tasto; KEY tasto;
while ((tasto = ma.run()) != K_QUIT) while ((tasto = ma.run()) != K_QUIT)
@ -1787,7 +1787,7 @@ bool TStampa_giornale::set_print(int)
_stampa_width = ma.get_int(STAMPA_WIDTH); _stampa_width = ma.get_int(STAMPA_WIDTH);
_stampa_len = ma.get_int(STAMPA_LEN); _stampa_len = ma.get_int(STAMPA_LEN);
set_magic_currency(TRUE); set_magic_currency(true);
// set_curr_codval(ma.get(F_CODVAL)); // set_curr_codval(ma.get(F_CODVAL));
// Se stampa definitiva DALLA_DATA e' la data di inizio esercizio // Se stampa definitiva DALLA_DATA e' la data di inizio esercizio
@ -1840,14 +1840,14 @@ bool TStampa_giornale::set_print(int)
init_print(); init_print();
init_totals(); init_totals();
return TRUE; return true;
} }
return FALSE; return false;
} }
int cg3400 (int argc, char * argv[]) int cg3400(int argc, char * argv[])
{ {
TStampa_giornale app; TStampa_giornale app;
app.run(argc, argv, TR("Stampa libro giornale")); app.run(argc, argv, TR("Stampa libro giornale"));
return TRUE; return true;
} }

View File

@ -214,10 +214,11 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
_nditte->save_status(); _nditte->save_status();
if (_nditte->is_first_match(LF_ATTIV)) if (_nditte->is_first_match(LF_ATTIV))
{ {
const TRectype& ndt_att = _nditte->curr(LF_ATTIV);
do do
{ {
const TString8 codatt = _nditte->curr(LF_ATTIV).get("CODATT"); const TString8 codatt = ndt_att.get("CODATT");
const TString80 desatt = _nditte->curr(LF_ATTIV).get("DESCR"); const TString80 desatt = ndt_att.get("DESCR");
quater = _nditte->curr().get_bool("FLIVA11Q"); quater = _nditte->curr().get_bool("FLIVA11Q");
// attività mista: ce ne sono in realtà due // attività mista: ce ne sono in realtà due
@ -227,9 +228,9 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
if (_prind) if (_prind)
{ {
TString buf(80); TString buf(80);
buf.format( _printonly ? FR("Stampa liquidazione (mese %d)...\n%s: %s\n") : buf.format( _printonly ? FR("Stampa liquidazione (mese %d %d)...\n%s: %s\n") :
FR("Calcolo liquidazione (mese %d)...\n%s: %s\n"), FR("Calcolo liquidazione (mese %d %d)...\n%s: %s\n"),
month, (const char*)_nditte_r->get(NDT_RAGSOC), (const char*)desatt); month, atoi(_year), (const char*)_nditte_r->get(NDT_RAGSOC), (const char*)desatt);
_prind->set_text(buf); _prind->set_text(buf);
} }
@ -282,10 +283,10 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
look_pla(cattiv, false); look_pla(cattiv, false);
} }
else else
_isservizio = _nditte->curr(LF_ATTIV).get("TIPOATT") == "S"; _isservizio = ndt_att.get("TIPOATT") == "S";
_isviaggio = _nditte->curr(LF_ATTIV).get_bool("REG74TER"); _isviaggio = ndt_att.get_bool("REG74TER");
_isagricolo = _nditte->curr(LF_ATTIV).get_bool("REGAGR"); _isagricolo = ndt_att.get_bool("REGAGR");
_isagr98 = _isagricolo && atoi(_year) >= 1998; _isagr98 = _isagricolo && atoi(_year) >= 1998;
_isvent = false; _isvent = false;
@ -559,7 +560,7 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
if (_isplafond && month != 13) if (_isplafond && month != 13)
zero_plafond(month,codatt); zero_plafond(month,codatt);
if (month != 13) if (month != 13 && !_recalc_regis) // Aggiunto test per evitare azzeramenti in stampa registri 19-06-2013
zero_diff(month,codatt); zero_diff(month,codatt);
} }
@ -569,8 +570,8 @@ bool TLiquidazione_app::ivadiff_chiusa(const TRectype& mov, const TDate& fine) c
TString query; TString query;
query << "USA IVADIFF SELECT BETWEEN(DATAREGP,0," << fine.date2ansi() << ')' query << "USA IVADIFF SELECT BETWEEN(DATAREGP,0," << fine.date2ansi() << ')'
<< "\nFROM NUMREG==" << numreg << "\nFROM NUMREG=" << numreg
<< "\nTO NUMREG==" << numreg; << "\nTO NUMREG=" << numreg;
TISAM_recordset id(query); TISAM_recordset id(query);
const TRectype& rid = id.cursor()->curr(); const TRectype& rid = id.cursor()->curr();
@ -971,18 +972,15 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
if (_isviaggio) if (_isviaggio)
{ {
if (tipomov == vendita && !(_mov->get(MOV_DATA74TER).empty())) if (tipomov == vendita && _mov->get(MOV_DATA74TER).not_empty())
date = _mov->get_date(MOV_DATA74TER); date = _mov->get_date(MOV_DATA74TER);
if (date.year() != year_int) // Controlla anno di appartenenza, altrimenti is_date_ok potrebbe non funzionare if (date.year() != year_int) // Controlla anno di appartenenza, altrimenti is_date_ok potrebbe non funzionare
continue; continue;
} }
const TRectype& rcs = _cur->curr(LF_CAUSALI); const TRectype& rcs = _cur->curr(LF_CAUSALI);
const bool fattrit = rcs.get_bool("RITFATT"); const bool fattrit = rcs.get_bool(CAU_RITFATT);
const bool cau_intra = rcs.get_bool("INTRACOM"); const bool cau_intra = rcs.get_bool(CAU_INTRACOM);
const bool cau_valintra = rcs.get_bool("VALINTRA"); const bool cau_valintra = rcs.get_bool(CAU_VALINTRA);
if (_mov->get_long(MOV_NUMREG) == 10146)
int cazzone = 1;
// Inizio gestione IVA differita // Inizio gestione IVA differita
const bool iva_diff = _isdiff && _mov->get_bool(MOV_LIQDIFF); const bool iva_diff = _isdiff && _mov->get_bool(MOV_LIQDIFF);
@ -1201,11 +1199,19 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
else else
id.put(RMI_IMPOSTA, imposta_orig); id.put(RMI_IMPOSTA, imposta_orig);
id.write_rewrite(); const int ew = id.write_rewrite();
if (ew != NOERR)
cantwrite_box(id.description());
} }
if (!pagscatt.empty()) if (!pagscatt.empty())
{ {
#ifdef DBG
if (_mov->get_long(MOV_NUMREG) == 13871)
xvt_dm_popup_message("Aggiornamento IVADIFF per movimento 13871");
#endif
const char sezpag = tipomov == vendita ? 'A' : 'D'; const char sezpag = tipomov == vendita ? 'A' : 'D';
const real totfat = _mov->get(MOV_TOTDOC); const real totfat = _mov->get(MOV_TOTDOC);
@ -2067,7 +2073,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
vendite += iii; vendite += iii;
} }
if (autodafe) // autofatture non residenti art, 17 if (autodafe) // autofatture non residenti art.17
{ {
/* /*
* Si devono riportare a parte in annuale * Si devono riportare a parte in annuale
@ -3048,20 +3054,23 @@ void TLiquidazione_app::iva11_set_arr_phase_2(const TString& codatt)
} }
} // is_vendita } // is_vendita
// Boia chi linka!
// Sommatoria per il calcolo aliquote medie vendite/acquisti... // Sommatoria per il calcolo aliquote medie vendite/acquisti...
if (_pim->get_bool("B3")) // E' un record valido per fare questa cosa? if (_pim->get_bool("B3")) // E' un record valido per fare questa cosa?
{ {
if ((tiporeg)_pim->get_long("I1") == vendita) if ((tiporeg)_pim->get_long("I1") == vendita)
{ //vendite { //vendite
vtot += imp; ivav+=iva; vtot += imp;
ivav += iva;
} }
else else
{
//acquisti //acquisti
if (tipodet != 9) // Evita di sommare quelli con tipo detraibilita' 9 (MI2209) if (tipodet != 9) // Evita di sommare quelli con tipo detraibilita' 9 (MI2209)
{ {
atot += imp; ivaa+=iva; atot += imp;
ivaa += iva;
} }
}
} }
} }

View File

@ -568,21 +568,22 @@ bool TLiquidazione_app::look_reg(const char* reg)
bool TLiquidazione_app::look_iva(const char* cod) bool TLiquidazione_app::look_iva(const char* cod)
{ {
bool rt = TRUE; bool rt = true;
TString16 s(cod);
const bool is_key = _codiva_arr.is_key(cod); TString4 s = cod; s.trim();
const bool is_key = _codiva_arr.is_key(s);
if (is_key) if (is_key)
_iva->curr() = (TRectype&) _codiva_arr[s]; _iva->curr() = (const TRectype&)_codiva_arr[s];
else else
{ {
_iva->zero(); _iva->zero();
_iva->put("CODTAB",s); _iva->put("CODTAB", s);
if (_iva->read() == NOERR) rt = _iva->read() == NOERR;
_codiva_arr.add(s,_iva->curr()); if (rt)
else _codiva_arr.add(s, _iva->curr());
rt = FALSE;
} }
return rt; return rt;
} }

View File

@ -368,7 +368,8 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
{ {
look_iva(vv->_codiva); look_iva(vv->_codiva);
_pim->put("I1", (long)vendita); _pim->put("I1", (long)vendita);
if (!_iva->get_bool("B4")) _pim->put("B3", "X"); if (!_iva->get_bool("B4"))
_pim->put("B3", "X");
} }
_pim->rewrite(); _pim->rewrite();
} }
@ -626,37 +627,44 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
// Azzera tabella IVA x CASSA // Azzera tabella IVA x CASSA
void TLiquidazione_app::zero_diff(int month, const char* codatt) void TLiquidazione_app::zero_diff(int month, const char* codatt)
{ {
// Azzero tuttp al momento dell'azzeramento della prima attività // Azzero tutto al momento dell'azzeramento della prima attività
if (_nditte->is_first_match(LF_ATTIV)) if (!_nditte->is_first_match(LF_ATTIV))
{ return;
if (month > 12 || (_freqviva == "T" && (month % 3) != 1))
return;
TString query; if (month > 12 || (_freqviva == "T" && (month % 3) != 1))
query << "USE IVADIFF KEY 2"; return;
query << "\nFROM ANNOLIQ=" << _year;
if (month > (_freqviva == "T" ? 3 : 1)) #ifdef DBG
query << " MESELIQ=" << month; TString msg; msg.
TISAM_recordset id(query); format("Azzeramento IVADIFF mese %s %s attività %s",
TLocalisamfile& file = id.cursor()->file(); itom(month), (const char*)_year, codatt);
for (bool ok = id.move_first(); ok; ok = id.move_next()) xvtil_statbar_set(msg);
{ #endif
file.zero("ANNOLIQ");
file.zero("MESELIQ"); TString query;
file.zero("IMPORTO"); query << "USE IVADIFF KEY 2";
file.zero("IMPONIBILE"); query << "\nFROM ANNOLIQ=" << _year;
file.zero("IMPOSTA"); if (month > (_freqviva == "T" ? 3 : 1))
file.zero("DATAREG"); query << " MESELIQ=" << month;
file.zero("NUMREGP"); TISAM_recordset id(query);
file.zero("NUMRIGP"); TLocalisamfile& file = id.cursor()->file();
file.zero("DATAREGP"); for (bool ok = id.move_first(); ok; ok = id.move_next())
file.zero("DATAREGP"); {
file.zero("TIPOMOV"); file.zero("ANNOLIQ");
file.zero("TIPOIVA"); file.zero("MESELIQ");
file.zero("TIPOATT"); file.zero("IMPORTO");
file.zero("TIPODIFF"); file.zero("IMPONIBILE");
file.zero("CHIUSA"); file.zero("IMPOSTA");
file.rewrite(); file.zero("DATAREG");
} file.zero("NUMREGP");
file.zero("NUMRIGP");
file.zero("DATAREGP");
file.zero("DATAREGP");
file.zero("TIPOMOV");
file.zero("TIPOIVA");
file.zero("TIPOATT");
file.zero("TIPODIFF");
file.zero("CHIUSA");
file.rewrite();
} }
} }

View File

@ -171,14 +171,11 @@ void TLiquidazione_app::describe_name(int month, const TToken_string& codatts, c
d->_s0 = _nditte->curr().get(NDT_CODDITTA); d->_s0 = _nditte->curr().get(NDT_CODDITTA);
d->_s1 = _nditte->curr().get(NDT_RAGSOC); d->_s1 = _nditte->curr().get(NDT_RAGSOC);
if (atoi(_year) > 2007) const TRectype& ndt_att = _nditte->curr(LF_ATTIV);
{ d->_s2 = ndt_att.get(ATT_CODATECO);
const TString16 codateco = _nditte->curr(LF_ATTIV).get(ATT_CODATECO); if (d->_s2.blank())
d->_s2 = codateco; d->_s2 = ndt_att.get(ATT_CODATT);
} d->_s3 = single_att ? (const char*)ndt_att.get(ATT_DESCR) : "";
else
d->_s2 = _nditte->curr(LF_ATTIV).get(ATT_CODATT);
d->_s3 = single_att ? (const char*)_nditte->curr(LF_ATTIV).get(ATT_DESCR) : "";
d->_s4 = _freqviva; d->_s4 = _freqviva;
d->_f1 = month; d->_f1 = month;
@ -565,7 +562,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
const TString8 activity= codtab.mid(4,6); const TString8 activity= codtab.mid(4,6);
const TString4 codreg = codtab.mid(10,3); const TString4 codreg = codtab.mid(10,3);
const int mese = atoi(codtab.mid(13,2)); const int mese = atoi(codtab.mid(13,2));
TString4 codiva = codtab.mid(16,4); TString4 codiva = codtab.mid(16,4); codiva.trim();
const int tipodet = atoi(codtab.mid(20,1)); const int tipodet = atoi(codtab.mid(20,1));
bool ok = look_reg(codreg); bool ok = look_reg(codreg);
ok |= look_iva(codiva); ok |= look_iva(codiva);
@ -806,7 +803,6 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
} }
autodafe += adf; autodafe += adf;
autodafe_iva += adi;
art40 += va7i; art40 += va7i;
art40_iva += va7v; art40_iva += va7v;
} }
@ -972,7 +968,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
{ {
_DescrItem* ads = new _DescrItem(PIM_ROW); _DescrItem* ads = new _DescrItem(PIM_ROW);
ads->_s0 = ref; ads->_s0 = ref;
ads->_s1 = "AF"; // cosi' vollero, inoltre non e' piu' A35 ma AF, come sul dio sistema ads->_s1 = "AF"; // così vollero, inoltre non è più A35 ma AF, come sul dio sistema
ads->_r0 = autodafe; ads->_r0 = autodafe;
ads->_r1 = autodafe_iva; ads->_r1 = autodafe_iva;
ads->_f0 = false; ads->_f0 = false;
@ -1642,28 +1638,25 @@ int TLiquidazione_app::calc_inc_diff(int tipoiva, real& imponibile_diff, real& i
TString limit; limit << "ANNOLIQ=" << _year; TString limit; limit << "ANNOLIQ=" << _year;
if (_month < 13) limit << " MESELIQ=" << _month; if (_month < 13) limit << " MESELIQ=" << _month;
TString query; TString query; // righe pagamento (TIPOMOV>=3) relative a fatture (TOTDOC>0) ed escluse NC!
query << "USE IVADIFF KEY 2 SELECT (TIPOMOV>2)&&(TIPOIVA=" << tipoiva << ')'; query << "USE IVADIFF KEY 2 SELECT (TIPOMOV>2)&&(MOV.TOTDOC>0)&&(TIPOIVA=" << tipoiva << ')'
query << "\nFROM " << limit << "\nTO " << limit; << "\nJOIN MOV INTO NUMREG==NUMREG"
<< "\nFROM " << limit << "\nTO " << limit;
TISAM_recordset id(query); TISAM_recordset id(query);
const TRectype& rec = id.cursor()->curr(); const TRectype& rec = id.cursor()->curr();
for (bool ok = id.move_first(); ok; ok = id.move_next()) for (bool ok = id.move_first(); ok; ok = id.move_next())
{ {
const real iva = rec.get_real(RMI_IMPOSTA); const real iva = rec.get_real(RMI_IMPOSTA);
if (iva > ZERO) if (!iva.is_zero())
{ {
const real imp = rec.get_real(RMI_IMPONIBILE);
const int tipodiff = rec.get_int("TIPODIFF"); const int tipodiff = rec.get_int("TIPODIFF");
if (tipodiff == 1) const real imp = rec.get_real(RMI_IMPONIBILE);
switch (tipodiff)
{ {
imponibile_diff += imp; case 1: imponibile_diff += imp; imposta_diff += iva; break;
imposta_diff += iva; case 2: imponibile_xcas += imp; imposta_xcas += iva; break;
} else default: break;
if (tipodiff == 2)
{
imponibile_xcas += imp;
imposta_xcas += iva;
} }
flag |= tipodiff; flag |= tipodiff;
} }
@ -1677,8 +1670,8 @@ int TLiquidazione_app::print_acc_diff_xcassa(const _DescrItem& d)
int i = 9; int i = 9;
const real& totiva = d._r0; const real& totiva = d._r0;
real ivadiff_inc = d._r29; const real ivadiff_inc = d._r29;
real ivadiff_pag = d._r33; const real ivadiff_pag = d._r33;
real ivaxcas_inc, ivaxcas_pag; real ivaxcas_inc, ivaxcas_pag;
@ -2483,12 +2476,12 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
{ {
real dimp, diva, ximp, xiva; real dimp, diva, ximp, xiva;
if (!diffinc_iva.is_zero() && calc_inc_diff(1, dimp, diva, ximp, xiva) & 0x2) if (!diffinc_iva.is_zero() && calc_inc_diff(1, dimp, diva, ximp, xiva))
{ {
diffinc_iva = diva; diffinc_iva = diva;
xcasinc_iva = xiva; xcasinc_iva = xiva;
} }
if (!diffinc_iva_acq.is_zero() && calc_inc_diff(2, dimp, diva, ximp, xiva) & 0x2) if (!diffinc_iva_acq.is_zero() && calc_inc_diff(2, dimp, diva, ximp, xiva))
{ {
diffinc_iva_acq = diva; diffinc_iva_acq = diva;
xcasinc_iva_acq = xiva; xcasinc_iva_acq = xiva;

View File

@ -1915,7 +1915,20 @@ bool TStampa_registri_app::some_IVAxCassa(int da_mese, int a_mese) const
query << "\nFROM ANNOLIQ=" << _data_da.year() << " MESELIQ=" << da_mese; query << "\nFROM ANNOLIQ=" << _data_da.year() << " MESELIQ=" << da_mese;
query << "\nTO ANNOLIQ=" << _data_a.year() << " MESELIQ=" << a_mese; query << "\nTO ANNOLIQ=" << _data_a.year() << " MESELIQ=" << a_mese;
TISAM_recordset id(query); TISAM_recordset id(query);
return id.items() > 0; const TRecnotype recs = id.items();
#ifdef DBG
TString msg;
if (a_mese > da_mese)
msg << "Nei mesi da " << itom(da_mese) << " a " < itom(a_mese);
else
msg << "Nel mese di " << itom(da_mese);
msg << " ci sarebbero " << recs << " incassi/pagamenti per cassa.";
xvtil_statbar_set(msg);
xvt_sys_sleep(1000);
#endif
return recs > 0;
} }
bool TStampa_registri_app::print_IVAxCassa(int da_month, int a_month) bool TStampa_registri_app::print_IVAxCassa(int da_month, int a_month)
@ -1923,6 +1936,7 @@ bool TStampa_registri_app::print_IVAxCassa(int da_month, int a_month)
if (_tipo_reg != vendita && _tipo_reg != acquisto) if (_tipo_reg != vendita && _tipo_reg != acquisto)
return false; return false;
// Non stampare il prospetto IVA differita sui registri
if (ini_get_bool(CONFIG_STUDIO, "cg", "NoIdRg")) if (ini_get_bool(CONFIG_STUDIO, "cg", "NoIdRg"))
{ {
_riga_prospettoXcassa.destroy(); _riga_prospettoXcassa.destroy();
@ -1946,7 +1960,7 @@ bool TStampa_registri_app::print_IVAxCassa(int da_month, int a_month)
TString query; TString query;
query = "USE IVADIFF SELECT (BETWEEN(DATAREGP,#DAL,#AL))&&(MOV.REG=#REG)&&(TIPOMOV>2)&&(STR(MOV.TOTDOC>0))"; query = "USE IVADIFF SELECT (BETWEEN(DATAREGP,#DAL,#AL))&&(MOV.REG=#REG)&&(TIPOMOV>2)&&(STR(MOV.TOTDOC>0))";
query << "\nBY DATAREGP DATAREG"; query << "\nBY DATAREGP DATAREG NUMPRO";
query << "\nJOIN MOV INTO NUMREG==NUMREG"; query << "\nJOIN MOV INTO NUMREG==NUMREG";
query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF"; query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF";
TISAM_recordset id(query); TISAM_recordset id(query);
@ -1958,10 +1972,21 @@ bool TStampa_registri_app::print_IVAxCassa(int da_month, int a_month)
const bool il = _intesta_liq; const bool il = _intesta_liq;
_intesta_liq = true; _intesta_liq = true;
if (id.items() > 0) const TRecnotype recs = id.items();
#ifdef DBG
TString msg;
if (a_month > a_month)
msg << "Nei mesi da " << itom(da_month) << " a " < itom(a_month);
else
msg << "Nel mese di " << itom(da_month);
msg << " ci sono effettivamente " << recs << " incassi/pagamenti per cassa.";
xvtil_statbar_set(msg);
#endif
if (recs > 0)
{ {
riga.reset(); riga.reset();
if (pr.rows_left() < id.items()+8) if (pr.rows_left() < pr.rows() && pr.rows_left() < id.items()+8)
{ {
pr.formfeed(); pr.formfeed();
riga.put(linea, 0); riga.put(linea, 0);
@ -1972,7 +1997,7 @@ bool TStampa_registri_app::print_IVAxCassa(int da_month, int a_month)
if (_tipo_reg == vendita) if (_tipo_reg == vendita)
riga.put(TR("DETTAGLIO INCASSI FATTURE CON IVA DIFFERITA O PER CASSA"), 40); riga.put(TR("DETTAGLIO INCASSI FATTURE CON IVA DIFFERITA O PER CASSA"), 40);
else else
riga.put(TR("DETTAGLIO PAGAMENTI FATTURE CON IVA DIFFERITA O PER CASSA"), 40); riga.put(TR("DETTAGLIO PAGAMENTI FATTURE CON IVA PER CASSA"), 40);
pr.print(riga); pr.print(riga);
riga.reset(); pr.print(riga); riga.reset(); pr.print(riga);
@ -3344,7 +3369,12 @@ void TStampa_registri_app::no_movimenti()
_mov_empty = true; _mov_empty = true;
int da = 1, a = _fino_a_mese; int da = 1, a = _fino_a_mese;
if (_tipo_stampa == bollato || _tipo_stampa == rif_giornale) if (_tipo_stampa == bollato || _tipo_stampa == rif_giornale)
da = 1; {
if (_tipo_stampa == rif_giornale)
da = 1;
else
da = _frequiva == 'M' ? _fino_a_mese : _fino_a_mese-2; // Mi sembra più sensato 19/06/2013
}
if (_tipo_stampa == libro_unico) if (_tipo_stampa == libro_unico)
da = _fino_a_mese; da = _fino_a_mese;
if (_tipo_stampa == prova) if (_tipo_stampa == prova)
@ -3369,8 +3399,7 @@ void TStampa_registri_app::no_movimenti()
TFilename app; TFilename app;
app.temp(); app.temp();
int mese = a; int mese = a;
//se la frequenza e' trimestrale // se la frequenza e' trimestrale aggiusta il mese al trimestre a cui appartiene
//aggiusta il mese al trimestre a cui appartiene
if (_frequiva == 'T') if (_frequiva == 'T')
{ {
mese += 2 - ((mese-1) % 3); mese += 2 - ((mese-1) % 3);
@ -3730,10 +3759,9 @@ bool TStampa_registri_app::stampa_registri_IVA(const TMask& m)
const long item = _cur->items(); const long item = _cur->items();
// 17.5.95 Leggo parametri di stampa del registro // 17.5.95 Leggo parametri di stampa del registro
TString16 config;
const long codditta = get_firm(); const long codditta = get_firm();
const char* reg = (const char*)_codreg; TString16 config; config.format("REG%05ld%s", codditta, (const char*)_codreg);
config.format("REG%05ld%s", codditta, reg);
printer().read_configuration(config); printer().read_configuration(config);
_mov_empty = true; _mov_empty = true;
@ -3743,9 +3771,8 @@ bool TStampa_registri_app::stampa_registri_IVA(const TMask& m)
print(); print();
if (is_cancelled()) if (is_cancelled())
return false; return false;
} }
//non ci sono movimenti da stampare nel periodo richiesto! else //non ci sono movimenti da stampare nel periodo richiesto!
else
no_movimenti(); no_movimenti();
if (_tipo_stampa == libro_unico && _rif_vid) if (_tipo_stampa == libro_unico && _rif_vid)
@ -3792,7 +3819,8 @@ bool TStampa_registri_app::stampa_registri_IVA(const TMask& m)
if (_u_data.ok()) if (_u_data.ok())
if (_data_a < _u_data) //e' molto imp. che rimanga < e non <= !!! if (_data_a < _u_data) //e' molto imp. che rimanga < e non <= !!!
{ //(per via del discorso liq. annuale) { //(per via del discorso liq. annuale)
message_box(FR("Ditta %ld: Il registro %s e' gia' stato stampato come bollato di %s"), _ditta, (const char*) _codreg, itom(_fino_a_mese)); message_box(FR("Ditta %ld: Il registro %s e' gia' stato stampato come bollato di %s"),
_ditta, (const char*) _codreg, itom(_fino_a_mese));
continue; continue;
} }
} }

View File

@ -16,7 +16,7 @@ int main(int argc,char** argv)
case 6: cg5600(argc,argv); break; // Ripristino liquidazione case 6: cg5600(argc,argv); break; // Ripristino liquidazione
case 7: cg5700(argc,argv); break; // Comunicazione annuale dati IVA case 7: cg5700(argc,argv); break; // Comunicazione annuale dati IVA
case 8: cg5800(argc,argv); break; // Quadro VT case 8: cg5800(argc,argv); break; // Quadro VT
case 9: cg5900(argc,argv); break; // Stampa Prorata case 9: cg5900(argc,argv); break; // Stampa pro-rata
default: cg5000(argc,argv); break; // Parametri Studio default: cg5000(argc,argv); break; // Parametri Studio
} }
return 0; return 0;

View File

@ -43,7 +43,7 @@ bool TParametri_ditta::user_create()
cur.freeze(); cur.freeze();
for (cur = 0L; cur.pos() < items; ++cur) for (cur = 0L; cur.pos() < items; ++cur)
// istanzia array _atts on le attivita' della ditta corrente // istanzia array _atts on le attività della ditta corrente
_atts.add(r.get(ATT_CODATT)); _atts.add(r.get(ATT_CODATT));
return TRUE; return TRUE;
@ -52,7 +52,7 @@ bool TParametri_ditta::user_create()
void TParametri_ditta::check_registers(int year) void TParametri_ditta::check_registers(int year)
{ {
// controlla che per ogni data attivita' esistano almeno un registro // controlla che per ogni data attività esistano almeno un registro
// acquisti, vendite e giornale; warning appropriato in caso negativo // acquisti, vendite e giornale; warning appropriato in caso negativo
const byte R_ACQ = 0x01; const byte R_ACQ = 0x01;
const byte R_VEN = 0x02; const byte R_VEN = 0x02;
@ -92,7 +92,7 @@ void TParametri_ditta::check_registers(int year)
} }
if (flags < R_ALL) if (flags < R_ALL)
{ {
TString wrn(TR("I seguenti registri non esistono per l'attivita' ")); TString wrn(TR("I seguenti registri non esistono per l'attività "));
wrn << att << " (" << year << "):"; wrn << att << " (" << year << "):";
if ((flags & R_VEN) == 0x00) wrn << TR("\n\tregistro vendite"); if ((flags & R_VEN) == 0x00) wrn << TR("\n\tregistro vendite");
if ((flags & R_ACQ) == 0x00) wrn << TR("\n\tregistro acquisti"); if ((flags & R_ACQ) == 0x00) wrn << TR("\n\tregistro acquisti");
@ -100,7 +100,7 @@ void TParametri_ditta::check_registers(int year)
} }
} }
// libro giornale non si controlla per attivita' // libro giornale non si controlla per attività
if(!is_giornale) if(!is_giornale)
warning_box(FR("Non esiste probabilmente nessun libro giornale per l'anno %d"), year); warning_box(FR("Non esiste probabilmente nessun libro giornale per l'anno %d"), year);
} }

View File

@ -1,5 +1,5 @@
// cg5300.cpp // cg5300.cpp
// modifica parametri contabilita' relativi alla liquidazione // modifica parametri contabilità relativi alla liquidazione
#include <config.h> #include <config.h>
#include <defmask.h> #include <defmask.h>
@ -89,7 +89,7 @@ bool TParaliq_app::gelidi_handler(TMask_field& f, KEY k)
{ {
f.set(" "); f.set(" ");
f.error_box(TR("La gestione della liquidazione differita richiede " f.error_box(TR("La gestione della liquidazione differita richiede "
"la data di inizio attivita' sull'anagrafica della ditta.")); "la data di inizio attività sull'anagrafica della ditta."));
} }
} }
} }
@ -114,7 +114,7 @@ bool TParaliq_app::agrmin_handler(TMask_field& f, KEY k)
{ {
f.set(" "); f.set(" ");
f.error_box(TR("La gestione degli agricoltori minimi richiede " f.error_box(TR("La gestione degli agricoltori minimi richiede "
"il settaggio del regime agricolo sull'attivita'.")); "il settaggio del regime agricolo sull'attività."));
} }
} }
} }
@ -203,7 +203,7 @@ bool TParaliq_app::utcred_handler(TMask_field& f, KEY k)
void TParaliq_app::check_registers(int year) void TParaliq_app::check_registers(int year)
{ {
// controlla che per ogni data attivita' esistano almeno un registro // controlla che per ogni data attività esistano almeno un registro
// acquisti, vendite e giornale; warning appropriato in caso negativo // acquisti, vendite e giornale; warning appropriato in caso negativo
TSheet_field& sf = _msk->sfield(F_SHEET_PLA); TSheet_field& sf = _msk->sfield(F_SHEET_PLA);
const byte R_ACQ = 0x01; const byte R_ACQ = 0x01;
@ -240,7 +240,7 @@ void TParaliq_app::check_registers(int year)
} }
if (flags < R_ALL) if (flags < R_ALL)
{ {
TString wrn(TR("I seguenti registri non esistono per l'attivita' ")); TString wrn(TR("I seguenti registri non esistono per l'attività "));
wrn << att << "(" << year << "):"; wrn << att << "(" << year << "):";
if ((flags & R_VEN) == 0x00) wrn << TR("\n\tregistro vendite"); if ((flags & R_VEN) == 0x00) wrn << TR("\n\tregistro vendite");
if ((flags & R_ACQ) == 0x00) wrn << TR("\n\tregistro acquisti"); if ((flags & R_ACQ) == 0x00) wrn << TR("\n\tregistro acquisti");
@ -325,7 +325,7 @@ void TParaliq_app::init_query_mode(TMask& m)
void TParaliq_app::init_insert_mode(TMask& m) void TParaliq_app::init_insert_mode(TMask& m)
{ {
// Inizializza array delle attivita' // Inizializza array delle attività
init_array(m, TRUE); init_array(m, TRUE);
m.set(F_ROUNDLIQ, TCurrency::get_firm_dec()); m.set(F_ROUNDLIQ, TCurrency::get_firm_dec());
} }
@ -355,7 +355,7 @@ int TParaliq_app::rewrite(const TMask& m)
TTable pla(TAB_PLA); TTable pla(TAB_PLA);
pla.put("CODTAB", codtab); pla.put("CODTAB", codtab);
pla.remove(); // Rimuove dalla tabella PLA il record senza il tipo attivita' ad 1 (se non c'e' fa lo stesso) pla.remove(); // Rimuove dalla tabella PLA il record senza il tipo attività ad 1 (se non c'e' fa lo stesso)
codtab << "1"; // Questo invece e' il codice che deve esistere realmente codtab << "1"; // Questo invece e' il codice che deve esistere realmente
pla.put("CODTAB", codtab); pla.put("CODTAB", codtab);
was = (pla.read() == NOERR); was = (pla.read() == NOERR);
@ -369,7 +369,7 @@ int TParaliq_app::rewrite(const TMask& m)
pla.put("CODTAB", codtab); pla.put("CODTAB", codtab);
// scrive i campi (vedi a read() per i nomi) // scrive i campi (vedi a read() per i nomi)
// in base alla riga sheet // in base alla riga sheet
pla.put("S7", tips); // tipo attivita' pla.put("S7", tips); // tipo attività
pla.put("R8", tt.get()); // prorata pla.put("R8", tt.get()); // prorata
pla.put("R5", tt.get()); // plafond art. 8 pla.put("R5", tt.get()); // plafond art. 8
pla.put("R6", tt.get()); // plafond art. 8bis pla.put("R6", tt.get()); // plafond art. 8bis
@ -439,7 +439,7 @@ int TParaliq_app::rewrite(const TMask& m)
int TParaliq_app::read(TMask& m) int TParaliq_app::read(TMask& m)
{ {
// legge da LIA (si istanziano i campi credito prec. e Freq. Vers // legge da LIA (si istanziano i campi credito prec. e Freq. Vers
// prende le attivita' una per una da _atts e // prende le attività una per una da _atts e
// crea le righe sheet // crea le righe sheet
m.autoload(*get_relation()); m.autoload(*get_relation());
@ -457,16 +457,16 @@ int TParaliq_app::read(TMask& m)
TCursor cur(&relpla, "", 1, &pla, &pla); TCursor cur(&relpla, "", 1, &pla, &pla);
const TRecnotype items = cur.items(); const TRecnotype items = cur.items();
init_array(m, FALSE); // Carica tutti i codici attivita' init_array(m, FALSE); // Carica tutti i codici attività
cur.freeze(); cur.freeze();
for (cur = 0L; cur.pos() < items; ++cur) for (cur = 0L; cur.pos() < items; ++cur)
{ {
tt = pla.get("CODTAB").mid(9,5); // codice attivita' tt = pla.get("CODTAB").mid(9,5); // codice attività
int i; int i;
for (i = 0; i < sf.items(); i++) // Cerca riga corrispondente sullo sheet for (i = 0; i < sf.items(); i++) // Cerca riga corrispondente sullo sheet
if (tt == sf.row(i).get(0)) break; if (tt == sf.row(i).get(0)) break;
tt.add(pla.get("S7")); // tipo attivita' tt.add(pla.get("S7")); // tipo attività
tt.add(pla.get("R8")); // prorata tt.add(pla.get("R8")); // prorata
tt.add(pla.get("R5")); // plafond art. 8 tt.add(pla.get("R5")); // plafond art. 8
tt.add(pla.get("R6")); // plafond art. 8bis tt.add(pla.get("R6")); // plafond art. 8bis

View File

@ -239,7 +239,7 @@ END
LIST F_TIPOATT 26 LIST F_TIPOATT 26
BEGIN BEGIN
PROMPT 4 3 "Tipo " PROMPT 4 3 "Tipo "
HELP "Tipo di attivita' della ditta" HELP "Tipo di attività della ditta"
ITEM " |Altre" ITEM " |Altre"
ITEM "E|Mista evid." ITEM "E|Mista evid."
ITEM "S|Serv. o mista gen." ITEM "S|Serv. o mista gen."

View File

@ -781,7 +781,7 @@ bool Visliq_app::vis_one(int m)
if (!n_rimborso.is_zero()) if (!n_rimborso.is_zero())
{ {
const bool old_rim = !rimborso.is_zero(); const bool old_rim = !rimborso.is_zero();
// check diritto (se non ce n'era gia' uno prima) // check diritto (se non ce n'era già uno prima)
if (!_lim->get_bool("B2") && !old_rim) if (!_lim->get_bool("B2") && !old_rim)
ok = yesno_box(FR("Non risulta diritto al rimborso per il mese %d. Si desidera " ok = yesno_box(FR("Non risulta diritto al rimborso per il mese %d. Si desidera "
"confermare ugualmente?"), m); "confermare ugualmente?"), m);
@ -1716,7 +1716,7 @@ void Visliq_app::write_general(TMask& m)
if (odbcr == "C") orett = -orett; if (odbcr == "C") orett = -orett;
if (ndbcr == "C") nrett = -nrett; if (ndbcr == "C") nrett = -nrett;
// acconto (si considerera' solo a dicembre) // acconto (si considererà solo a dicembre)
TToken_string& vo = (TToken_string&)_vers_rows[_freqviva == "M" ? 11 : 3]; TToken_string& vo = (TToken_string&)_vers_rows[_freqviva == "M" ? 11 : 3];
TToken_string& vn = sv.row(_freqviva == "M" ? 11 : 3); TToken_string& vn = sv.row(_freqviva == "M" ? 11 : 3);
real oacct (vo.get(5)); real oacct (vo.get(5));
@ -1824,7 +1824,7 @@ void Visliq_app::write_general(TMask& m)
} }
// controlla se qualcosa e' modificato e scrivi // controlla se qualcosa e' modificato e scrivi
// il valore; check compatibilita' versamenti e rimborsi // il valore; check compatibilità versamenti e rimborsi
// rileggi dati // rileggi dati
real cred = _lam->get_real("R2"); real cred = _lam->get_real("R2");
@ -1858,7 +1858,7 @@ void Visliq_app::write_general(TMask& m)
// se modificato rimborso sistemare // se modificato rimborso sistemare
if (nrimb != orimb && !_from_one) if (nrimb != orimb && !_from_one)
{ {
// check compatibilita' // check compatibilità
bool ok = TRUE; bool ok = TRUE;
if (!nrimb.is_zero()) if (!nrimb.is_zero())

401
cg/cg5900.cpp Normal file
View File

@ -0,0 +1,401 @@
// Programma per la gestione e la stampa della dichiarazione periodica IVA
#include <applicat.h>
#include <automask.h>
#include <execp.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#include <reprint.h>
#include "cg5900a.h"
#include "cglib03.h"
#include <attiv.h>
#include <causali.h>
#include <mov.h>
#include <rmov.h>
#include <rmoviva.h>
///////////////////////////////////////////////////////////
// TProrata_set
///////////////////////////////////////////////////////////
static int _year = 0;
static long _attiv = 0;
static TAssoc_array _causali;
static bool prorata_filter(const TRelation* rel)
{
const TRectype& mov = rel->curr(LF_MOV);
if (mov.get_char(MOV_TIPO) != 'F') // Solo movimenti fornitori
return false;
if (mov.get_char(MOV_PROVVIS) > ' ') // Solo movimenti definitivi
return false;
if (_year > 0)
{
const int anno = mov.get_int(MOV_ANNOIVA);
if (anno != _year)
return false;
}
const TBill zio(rel->curr());
const int cric = zio.tipo_cr();
if (cric >= 2 && cric <= 4) // Beni strumentali
return false;
const TString& codcaus = mov.get(MOV_CODCAUS);
TCausale* caus = (TCausale*)_causali.objptr(codcaus);
if (caus == NULL)
{
caus = new TCausale(codcaus, _year);
_causali.add(codcaus, caus);
}
if (caus->iva() != iva_acquisti)
return false;
if (caus->intra())
return false;
if (caus->tipodoc() == "AF")
return false;
if (_year > 0 && _attiv > 0)
{
const TRegistro& reg = caus->reg();
const long attiv = atol(reg.attivita());
if (attiv != _attiv)
return false;
}
return true;
}
class TProrata_set : public TISAM_recordset
{
protected:
virtual void set_custom_filter(TCursor& c) const;
virtual const TVariant& get_field(int logic, const char* fldname) const;
real perc_det() const;
public:
TProrata_set(const char* sql) : TISAM_recordset(sql) { }
};
void TProrata_set::set_custom_filter(TCursor& c) const
{
c.set_filterfunction(prorata_filter);
}
real TProrata_set::perc_det() const
{
real i = CENTO;
const TRectype& rmi = cursor()->curr();
if (rmi.get(RMI_TIPODET).full())
{
const TRectype& mov = cursor()->curr(LF_MOV);
real percind; get_tipodet_from_rmi(rmi, mov, percind);
i = CENTO-percind;
}
return i;
}
const TVariant& TProrata_set::get_field(int logic, const char* fldname) const
{
const TVariant& var = TISAM_recordset::get_field(logic, fldname);
if (logic == 0 || logic == LF_RMOVIVA)
{
if (xvt_str_compare_ignoring_case(fldname, RMI_IMPOSTA) == 0)
{
const real pd = perc_det();
if (pd < CENTO)
{
real i = var.as_real() * pd / CENTO;
return get_tmp_var() = i.round(2);
}
} else
if (xvt_str_compare_ignoring_case(fldname, "PERCDET") == 0)
{
return get_tmp_var() = perc_det();
}
}
return var;
}
///////////////////////////////////////////////////////////
// TProrata_rep
///////////////////////////////////////////////////////////
class TProrata_rep : public TReport
{
protected:
virtual bool use_mask() { return false; }
virtual bool set_recordset(const TString& sql);
public:
TProrata_rep();
};
bool TProrata_rep::set_recordset(const TString& sql)
{
TString query = sql;
if (_year > 0 && query.find("FROM ") < 0)
{
const TDate dal( 1, 1, _year);
const TDate al(31, 12, _year);
TISAM_recordset mov("USE MOV KEY 2\nFROM DATAREG=#DAL\nTO DATAREG=#AL");
mov.set_var("#DAL", dal);
mov.set_var("#AL", al);
long danumreg = 0;
long anumreg = 0;
const TRectype& curr = mov.cursor()->curr();
for (bool good = mov.move_first(); good; good = mov.move_next())
{
const long numreg = curr.get_long(MOV_NUMREG);
if (danumreg == 0 || numreg < danumreg)
danumreg = numreg;
if (numreg > anumreg)
anumreg = numreg;
}
query << "\nFROM NUMREG=" << danumreg << "\nTO NUMREG=" << anumreg;
}
TProrata_set* prs = new TProrata_set(query);
return TReport::set_recordset(prs);
}
TProrata_rep::TProrata_rep()
{
if (!load("cg5900a"))
cantread_box("cg5900a.rep");
}
///////////////////////////////////////////////////////////
// TProrata_msk
///////////////////////////////////////////////////////////
class TProrata_msk : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
real calc_prorata();
bool genera_mov(TFilename& ininame);
public:
TProrata_msk() : TAutomask("cg5900a") {}
};
real TProrata_msk::calc_prorata()
{
const long f = get_long(F_CODDITTA);
const int y = get_date(F_DATAFIN).year();
const long a = get_long(F_CODATT);
TString16 codtab;
codtab.format("%05ld%4d%05ld1", f, y, a);
const real pr = cache().get("%PLA", codtab, "R8");
set(F_PRORATA, pr);
_year = y;
TToken_string key; key.format("%05ld", prefix().get_codditta());
TRecord_array att(key, LF_ATTIV);
if (att.rows() > 1)
_attiv = a;
else
_attiv = 0;
return pr;
}
bool TProrata_msk::genera_mov(TFilename& ininame)
{
ininame.temp("cg5900", "ini");
TConfig trans(ininame, "Transaction");
trans.set("Action", "INSERT");
const TString& codcaus = get(F_CAUSALE);
const TCausale caus(codcaus, _year);
trans.set_paragraph("23");
trans.set(MOV_CODCAUS, codcaus);
trans.set(MOV_DATAREG, TDate(TODAY));
TString descr; descr << "PRO-RATA " << _year;
trans.set(MOV_DESCR, descr);
TProrata_rep rep;
rep.mask2report(*this);
TRecordset& recset = *rep.recordset();
TProgind pi(recset.items(), TR("Calcolo pro-rata"), false, true);
TAssoc_array mconti;
TString80 key;
const real prorata = calc_prorata();
for (bool good = recset.move_first(); good; good = recset.move_next())
{
pi.addstatus(1);
const real impdet = recset.get(RMI_IMPOSTA).as_real(); // Imposta detraibile
if (!impdet.is_zero())
{
const int gruppo = recset.get(RMI_GRUPPO).as_int();
const int conto = recset.get(RMI_CONTO).as_int();
const long sottoconto = recset.get(RMI_SOTTOCONTO).as_int();
const TString& codiva = recset.get(RMI_CODIVA).as_string();
key.format("%03d|%03d|%06ld|%s", gruppo, conto, sottoconto, (const char*)codiva);
real* pr = (real*)mconti.objptr(key);
if (pr == NULL)
{
pr = new real;
mconti.add(key, pr);
}
real imp = impdet * prorata / CENTO;
imp.round(2);
*pr += imp;
}
}
TString_array aconti;
FOR_EACH_ASSOC_OBJECT(mconti, o, k, i)
{
TToken_string* row = new TToken_string(k);
*row << '|' << *i;
aconti.add(row);
}
aconti.sort();
int riga = 0;
real tot;
const char* seziva = caus.sezione(1) == 'A' ? "A" : "D";
const char* sezimp = caus.sezione(1) == 'A' ? "D" : "A";
TString8 para;
FOR_EACH_ARRAY_ROW(aconti, r, row)
{
const int gruppo = row->get_int(0);
const int conto = row->get_int();
const long sottoconto = row->get_long();
const TString4 codiva = row->get();
const real imp = row->get();
if (!imp.is_zero())
{
para.format("%d,%d", LF_RMOV, ++riga);
trans.set_paragraph(para);
trans.set(RMV_SEZIONE, sezimp);
trans.set(RMV_IMPORTO, imp.string());
trans.set(RMV_GRUPPO, gruppo);
trans.set(RMV_CONTO, conto);
trans.set(RMV_SOTTOCONTO, sottoconto);
descr.cut(0) << TR("Codice IVA") << ' ' << codiva;
trans.set(RMV_DESCR, descr);
tot += imp;
}
}
TBill civa; caus.bill(1, civa);
para.format("%d,%d", LF_RMOV, ++riga);
trans.set_paragraph(para);
trans.set(RMV_SEZIONE, seziva);
trans.set(RMV_IMPORTO, tot.string());
trans.set(RMV_GRUPPO, civa.gruppo());
trans.set(RMV_CONTO, civa.conto());
trans.set(RMV_SOTTOCONTO, civa.sottoconto());
return true;
}
bool TProrata_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case DLG_PREVIEW:
case DLG_PRINT:
if (e == fe_button)
{
TProrata_rep rep;
if (rep.ok())
{
rep.mask2report(*this);
if (o.dlg() == DLG_PRINT)
rep.print();
else
rep.preview();
}
return false;
}
break;
case F_CODATT:
if (e == fe_init)
{
TBrowse& b = *((TEdit_field&)o).browse();
TCursor& c = *b.cursor();
const TRecnotype i = c.items();
if (i > 0)
{
c = 0L;
o.set(c.curr().get(ATT_CODATT));
b.do_output();
o.enable(i > 1);
}
else
o.disable();
}
if (!o.empty() && (e == fe_init || e == fe_modify))
calc_prorata();
break;
case F_DATAINI:
if (e == fe_init)
{
const TDate oggi(TODAY);
o.set(TDate(1,1,oggi.year()-1));
set(F_DATAFIN, TDate(31,12,oggi.year()-1), 0x3);
}
break;
case F_DATAFIN:
if (!o.empty() && (e == fe_init || e == fe_modify))
calc_prorata();
break;
case DLG_ELABORA:
if (e == fe_button)
{
TFilename ininame;
if (genera_mov(ininame))
{
TString app; app << "cg2 -0 /i" << ininame;
TExternal_app a(app);
a.run();
}
}
break;
default:
break;
}
return true;
}
///////////////////////////////////////////////////////////
// TProrata_app
///////////////////////////////////////////////////////////
class TProrata_app : public TSkeleton_application
{
public:
virtual void main_loop();
};
void TProrata_app::main_loop()
{
TProrata_msk m;
m.run();
}
int cg5900(int argc, char* argv[])
{
TProrata_app a;
a.run(argc, argv, TR("Stampa pro-rata"));
return 0;
}

11
cg/cg5900a.h Normal file
View File

@ -0,0 +1,11 @@
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_CODATT 105
#define F_DESCATT 106
#define F_PRORATA 107
#define F_CAUSALE 108
#define F_DATAINI 111
#define F_DATAFIN 112

125
cg/cg5900a.rep Normal file
View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="cg5900a" lpi="6">
<description>Stampa Prorata</description>
<font face="Courier New" size="10" />
<section type="Head" pattern="1">
<font face="Courier New" bold="1" size="10" />
<field border="2" x="15" type="Linea" height="2" pattern="1" />
<field border="2" x="30" type="Linea" height="2" pattern="1" />
<field border="2" x="47" type="Linea" height="2" pattern="1" />
<field border="2" x="64" type="Linea" height="2" pattern="1" />
<field border="2" x="86" type="Linea" height="2" pattern="1" />
<field x="2" y="0.5" type="Testo" width="10" pattern="1" text="Conto" />
<field x="16" y="0.5" type="Testo" width="14" pattern="1" text="IVA % Detr." />
<field x="31" y="0.5" type="Testo" align="right" width="15" pattern="1" text="Imponibile" />
<field x="48" y="0.5" type="Testo" align="right" width="15" pattern="1" text="Imposta" />
<field x="67" y="0.5" type="Testo" width="2" pattern="1" text="%" />
<field x="70" y="0.5" type="Testo" align="right" width="15" pattern="1" text="Prorata" />
<field border="2" y="2" type="Linea" width="86" height="0" pattern="1" />
</section>
<section type="Head" level="1" pattern="1">
<field border="3" type="Testo" align="center" width="86" height="3" pattern="1" text="Stampa Prorata">
<font face="Arial" bold="1" size="24" />
</field>
</section>
<section type="Head" level="2" pattern="1">
<groupby>GRUPPO+CONTO+SOTTOCONTO+CODIVA+TIPODET</groupby>
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.110|RESET,F2.111|RESET,F2.113</prescript>
<field type="Numero" hidden="1" align="right" width="3" id="101" pattern="1">
<source>GRUPPO</source>
<postscript description="H2.101 POSTSCRIPT">MESSAGE COPY,F2.101</postscript>
</field>
<field x="4" type="Numero" hidden="1" align="right" width="3" id="102" pattern="1">
<source>CONTO</source>
<postscript description="H2.102 POSTSCRIPT">MESSAGE COPY,F2.102</postscript>
</field>
<field x="8" type="Numero" hidden="1" align="right" width="6" id="103" pattern="1">
<source>SOTTOCONTO</source>
<postscript description="H2.103 POSTSCRIPT">MESSAGE COPY,F2.103</postscript>
</field>
<field x="15" type="Stringa" hidden="1" width="4" id="104" pattern="1">
<source>CODIVA</source>
<postscript description="H2.104 POSTSCRIPT">MESSAGE COPY,F2.104</postscript>
</field>
<field x="20" type="Numero" hidden="1" align="right" width="3" id="105" pattern="1">
<source>400@-&#3E;R0</source>
<postscript description="H2.105 POSTSCRIPT">MESSAGE COPY,F2.105</postscript>
</field>
<field x="24" type="Stringa" hidden="1" align="right" width="2" id="106" pattern="1">
<source>TIPODET</source>
<postscript description="H2.106 POSTSCRIPT">MESSAGE COPY,F2.106</postscript>
</field>
<field x="27" type="Numero" hidden="1" align="right" width="3" id="107" pattern="1">
<source>PERCDET</source>
<postscript description="H2.107 POSTSCRIPT">MESSAGE COPY,F2.107</postscript>
</field>
</section>
<section type="Body" pattern="1" />
<section type="Body" level="1" pattern="1">
<field x="25" type="Valuta" hidden="1" align="right" width="15" id="110" pattern="1" text="###.###.###,@@">
<source>IMPONIBILE</source>
<postscript description="B1.110 POSTSCRIPT">MESSAGE ADD,F2.110</postscript>
</field>
<field x="45" type="Valuta" hidden="1" align="right" width="15" id="111" pattern="1" text="###.###.###,@@">
<source>IMPOSTA</source>
<postscript description="B1.111 POSTSCRIPT">MESSAGE ADD,F2.111</postscript>
</field>
<field x="65" type="Numero" hidden="1" align="right" width="3" id="112" pattern="1">
<source>#PRORATA</source>
</field>
<field x="70" type="Valuta" hidden="1" align="right" width="15" id="113" pattern="1" text="###.###.###,@@">
<source>#111*#112&#2F;100</source>
<postscript description="B1.113 POSTSCRIPT">MESSAGE ADD,F2.113</postscript>
</field>
</section>
<section type="Foot" pattern="1" />
<section type="Foot" level="1" pattern="1">
<font face="Courier New" bold="1" size="10" />
<field border="2" type="Rettangolo" width="86" pattern="1" />
<field x="1" type="Testo" width="10" pattern="1" text="Totale" />
<field border="2" x="30" type="Linea" pattern="1" />
<field border="2" x="47" type="Linea" pattern="1" />
<field border="2" x="64" type="Linea" pattern="1" />
<field x="31" type="Valuta" align="right" width="15" id="110" pattern="1" text="###.###.###,@@" />
<field x="48" type="Valuta" align="right" width="15" id="111" pattern="1" text="###.###.###,@@" />
<field x="70" type="Valuta" align="right" width="15" id="113" pattern="1" text="###.###.###,@@" />
</section>
<section type="Foot" level="2" pattern="1">
<field border="2" x="15" type="Linea" pattern="1" />
<field border="2" x="30" type="Linea" pattern="1" />
<field border="2" x="47" type="Linea" pattern="1" />
<field border="2" x="64" type="Linea" pattern="1" />
<field border="2" x="69" type="Linea" pattern="1" />
<field border="2" x="86" type="Linea" pattern="1" />
<field type="Numero" align="right" width="3" id="101" pattern="1">
<prescript description="F2.101 PRESCRIPT">MESSAGE COPY,F2.101</prescript>
</field>
<field x="4" type="Numero" align="right" width="3" id="102" pattern="1">
<prescript description="F2.102 PRESCRIPT">MESSAGE COPY,F2.102</prescript>
</field>
<field x="8" type="Numero" align="right" width="6" id="103" pattern="1">
<prescript description="F2.103 PRESCRIPT">MESSAGE COPY,F2.103</prescript>
</field>
<field x="16" type="Stringa" width="4" id="104" pattern="1" />
<field x="20" type="Numero" align="right" width="3" id="105" pattern="1" />
<field x="24" type="Stringa" align="right" width="2" id="106" pattern="1" />
<field x="27" type="Numero" align="right" width="3" id="107" pattern="1" hide_zero="1" />
<field x="31" type="Valuta" align="right" width="15" id="110" pattern="1" text="###.###.###,@@">
<postscript description="F2.110 POSTSCRIPT">MESSAGE ADD,F1.110</postscript>
</field>
<field x="48" type="Valuta" align="right" width="15" id="111" pattern="1" text="###.###.###,@@">
<postscript description="F2.111 POSTSCRIPT">MESSAGE ADD,F1.111</postscript>
</field>
<field x="65" type="Numero" align="right" width="3" id="112" pattern="1">
<source>#PRORATA</source>
</field>
<field x="70" type="Valuta" align="right" width="15" id="113" pattern="1" text="###.###.###,@@">
<postscript description="F2.113 POSTSCRIPT">MESSAGE ADD,F1.113</postscript>
</field>
</section>
<sql>USE RMOVIVA SELECT (BETWEEN(MOV.DATAREG,#DATAINI,#DATAFIN))&#26;&#26;(STR(400@-&#3E;R0&#3E;0))
BY GRUPPO CONTO SOTTOCONTO CODIVA TIPODET
JOIN MOV INTO NUMREG==NUMREG
JOIN %IVA ALIAS 400 INTO CODTAB==CODIVA
</sql>
</report>

102
cg/cg5900a.uml Normal file
View File

@ -0,0 +1,102 @@
#include "cg5900a.h"
PAGE "Stampa pro-rata" -1 -1 72 6
NUMBER F_CODDITTA 5
BEGIN
PROMPT 1 1 "Ditta "
FLAGS "FDGZ"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 19 1 ""
FLAGS "D"
END
NUMBER F_CODATT 5
BEGIN
PROMPT 1 2 "Attività "
USE LF_ATTIV
INPUT CODDITTA F_CODDITTA SELECT
INPUT CODATT F_CODATT
DISPLAY "Ditta" CODDITTA
DISPLAY "Attività" CODATT
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODATT CODATT
OUTPUT F_DESCATT DESCR
CHECKTYPE REQUIRED
FIELD #CODATT
END
NUMBER F_PRORATA 3
BEGIN
PROMPT 1 3 "Pro-rata "
FLAGS "D"
FIELD #PRORATA
END
STRING F_CAUSALE 4
BEGIN
PROMPT 31 3 "Causale per movimento contabile "
USE LF_CAUSALI SELECT (REG="")&&(TIPOMOV="")&&(MOVAP="")
INPUT CODCAUS F_CAUSALE
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CAUSALE CODCAUS
CHEKCTYPE NORMAL
FLAGS "U"
ADD RUN cg0 -4
MESSAGE EMPTY DISABLE,DLG_ELABORA
MESSAGE ENABLE,DLG_ELABORA
END
STRING F_DESCATT 50
BEGIN
PROMPT 19 2 ""
FLAGS "D"
END
DATE F_DATAINI
BEGIN
PROMPT 1 4 "Data iniziale "
FIELD #DATAINI
CHECKTYPE REQUIRED
END
DATE F_DATAFIN
BEGIN
PROMPT 31 4 "Data finale "
FIELD #DATAFIN
CHECKTYPE REQUIRED
END
ENDPAGE
TOOLBAR "Topbar" 0 0 0 2
BUTTON DLG_ELABORA 2 2
BEGIN
PROMPT 1 1 "Prima Nota"
PICTURE TOOL_ELABORA
END
BUTTON DLG_NULL 2 2
BEGIN
END
BUTTON DLG_PREVIEW 2 2
BEGIN
PROMPT 2 1 "Anteprima"
PICTURE TOOL_PREVIEW
END
#include <printbar.h>
ENDPAGE
ENDMASK

View File

@ -368,7 +368,7 @@ bool TVar_mov::video_IVA()
{ {
TMask* mask = new TMask("cg6800c"); TMask* mask = new TMask("cg6800c");
TString regiva = _rec_mov->get(MOV_REG); const TString4 regiva = _rec_mov->get(MOV_REG);
if (!setta_campi_maschera_iva(*mask)) if (!setta_campi_maschera_iva(*mask))
{ {
@ -529,14 +529,14 @@ void TVar_mov::setta_campi_maschera(TMask& m)
TDate datacomp(_rec_mov->get_date(MOV_DATACOMP)); TDate datacomp(_rec_mov->get_date(MOV_DATACOMP));
int anno = _rec_mov->get_int (MOV_ANNOES); int anno = _rec_mov->get_int (MOV_ANNOES);
TString numdoc = _rec_mov->get (MOV_NUMDOC); const TString16 numdoc = _rec_mov->get (MOV_NUMDOC);
TString regiva = _rec_mov->get (MOV_REG); TString4 regiva = _rec_mov->get (MOV_REG);
regiva.trim(); regiva.trim();
long protiva = _rec_mov->get_long(MOV_PROTIVA); long protiva = _rec_mov->get_long(MOV_PROTIVA);
long nuprotiva = _rec_mov->get_long(MOV_UPROTIVA); long nuprotiva = _rec_mov->get_long(MOV_UPROTIVA);
TString provvis = _rec_mov->get (MOV_PROVVIS); TString4 provvis = _rec_mov->get (MOV_PROVVIS);
TString codcaus = _rec_mov->get (MOV_CODCAUS); TString4 codcaus = _rec_mov->get (MOV_CODCAUS);
TString codpag = _rec_mov->get (MOV_CODPAG); TString8 codpag = _rec_mov->get (MOV_CODPAG);
codpag.trim(); codpag.trim();
m.set(F_NUMREG, _numreg); m.set(F_NUMREG, _numreg);
@ -628,7 +628,7 @@ bool TVar_mov::setta_campi_maschera_iva(TMask& m)
TDate datareg (_rec_mov->get_date(MOV_DATAREG)); TDate datareg (_rec_mov->get_date(MOV_DATAREG));
TDate data74ter (_rec_mov->get_date(MOV_DATA74TER)); TDate data74ter (_rec_mov->get_date(MOV_DATA74TER));
int meseliq = _rec_mov->get_int(MOV_MESELIQ); int meseliq = _rec_mov->get_int(MOV_MESELIQ);
TString regiva = _rec_mov->get (MOV_REG); TString4 regiva = _rec_mov->get (MOV_REG);
regiva.trim(); regiva.trim();
TString codcaus = _rec_mov->get (MOV_CODCAUS); TString codcaus = _rec_mov->get (MOV_CODCAUS);
long codcf = _rec_mov->get_long(MOV_CODCF); long codcf = _rec_mov->get_long(MOV_CODCF);

View File

@ -486,7 +486,7 @@ bool TRegistro::read_att()
chiave << prefix().get_codditta() << '|' << attivita(); chiave << prefix().get_codditta() << '|' << attivita();
_att = cache().get(LF_ATTIV, chiave); _att = cache().get(LF_ATTIV, chiave);
// Ditta - Anno - Attivita' - Tipo Attivita' (fissata a 1) // Ditta - Anno - Attività - Tipo Attività (fissata a 1)
chiave.format("%05ld", prefix().get_codditta()); chiave.format("%05ld", prefix().get_codditta());
chiave << year(); // non fare << year() << attivita() chiave << year(); // non fare << year() << attivita()
chiave << attivita() << "1"; chiave << attivita() << "1";
@ -498,7 +498,7 @@ bool TRegistro::read_att()
{ {
chiave.format("%d", year()); chiave.format("%d", year());
_prorata.add(chiave, pla.get_real("R8")); _prorata.add(chiave, pla.get_real("R8"));
_att.put("TIPOATT", pla.get("S7")); // Aggiorna tipo attivita' _att.put("TIPOATT", pla.get("S7")); // Aggiorna tipo attività
} }
return !_att.empty(); return !_att.empty();
@ -519,7 +519,7 @@ const TString& TRegistro::tipo_attivita()
real* TRegistro::read_prorata(int anno) const real* TRegistro::read_prorata(int anno) const
{ {
TString16 chiave; // Ditta - Anno - Attivita' - Tipo Attivita' (fissata a 1) TString16 chiave; // Ditta - Anno - Attività - Tipo Attività (fissata a 1)
chiave.format("%05ld", prefix().get_codditta()); chiave.format("%05ld", prefix().get_codditta());
chiave << anno << attivita() << "1"; chiave << anno << attivita() << "1";

View File

@ -24,7 +24,7 @@
// //
// Cerca l'esercizio precedente di EseCorr // Cerca l'esercizio precedente di EseCorr
// Se EseCorr e' gia' il primo ritorna 0 // Se EseCorr e' già il primo ritorna 0
// //
HIDDEN int EsePre(const int EseCorr) HIDDEN int EsePre(const int EseCorr)
{ {
@ -64,7 +64,7 @@ TSaldi_list::TSaldi_list(int gr, int co, int aec, int aep_par)
const TRectype& r = cf.curr(); const TRectype& r = cf.curr();
key.format("%3d%3d%6ld", g, c, s); key.format("%3d%3d%6ld", g, c, s);
// Se avevo chiesto anche l'es. prec. puo' darsi che l'abbia gia' trovato // Se avevo chiesto anche l'es. prec. puo' darsi che l'abbia già trovato
bool force = !aep_par; bool force = !aep_par;
add(key, r, force); add(key, r, force);
} }
@ -136,7 +136,7 @@ real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusu
} }
//richiamata nel bilancio a sez.contr per data limite //richiamata nel bilancio a sez.contr per data limite
//in realta' calcola il saldo finale es.prec //in realtà calcola il saldo finale es.prec
real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil, bool provvis) real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil, bool provvis)
{ {
real saldoini; real saldoini;
@ -370,7 +370,7 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
// e' true. A cosa serve ? Serve per includere nel calcolo del saldo all' ultima immissione // e' true. A cosa serve ? Serve per includere nel calcolo del saldo all' ultima immissione
// anche il saldo finale compilato nei movimenti di chiusura (se non venisse considerato i conti // anche il saldo finale compilato nei movimenti di chiusura (se non venisse considerato i conti
// risulterebbero aperti); siccome alcuni programmi (esempio il bilancio IV dir. CEE) non ne // risulterebbero aperti); siccome alcuni programmi (esempio il bilancio IV dir. CEE) non ne
// devono tenere conto, si e' data la possibilita' di usare la funzione passandogli il parametro a false. // devono tenere conto, si e' data la possibilità di usare la funzione passandogli il parametro a false.
// Modifica del 09-07-96 // Modifica del 09-07-96
bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil,int stp_prov,bool saldo_chiusura) bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil,int stp_prov,bool saldo_chiusura)
{ {
@ -927,7 +927,7 @@ void TSaldo_agg::clear_saldi(int year)
// //
// Scorro la tabella dei conti interna _tab_conti. // Scorro la tabella dei conti interna _tab_conti.
// Per ogni conto cerco il record su saldi, se non c'e' lo creo. // Per ogni conto cerco il record su saldi, se non c'e' lo creo.
// Se c'e' gia' lo aggiorno nel seguente modo: // Se c'e' già lo aggiorno nel seguente modo:
// GLOP // GLOP
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@ -134,7 +134,7 @@ bool gestione_IVAxCassa(const TDate& data, long firm)
} }
// Anticamente TIPODET conteneva in tipo di indetraibilita, // Anticamente TIPODET conteneva in tipo di indetraibilita,
// ora invece trattasi di un codice di indetraibilita' // ora invece trattasi di un codice di indetraibilità
// associato ad un motivo ed una percentuale di indetraibilita' // associato ad un motivo ed una percentuale di indetraibilita'
int get_tipodet_from_rmi(const TRectype& rmi, const TRectype& mov,real& percind, const bool is_liq) int get_tipodet_from_rmi(const TRectype& rmi, const TRectype& mov,real& percind, const bool is_liq)
{ {

View File

@ -1586,9 +1586,9 @@ void TTransfer_file::write_tmp_movPN(TString& record)
if (fname == MOV_REG) if (fname == MOV_REG)
{ {
if (real::is_natural(field)) if (real::is_natural(field))
field.format("%03s", (const char*) field); field.format("%03s", (const char*)field);
else else
field.format("%-3s", (const char*) field); field.format("%-3s", (const char*)field);
} }
//Il codice pagamento su AS400 e' un alfanumerico di due, mentre su PC e' un //Il codice pagamento su AS400 e' un alfanumerico di due, mentre su PC e' un
@ -1608,7 +1608,7 @@ void TTransfer_file::write_tmp_movPN(TString& record)
int nr = atoi(record.sub(8,10)); int nr = atoi(record.sub(8,10));
if (nr == 1) if (nr == 1)
{ {
TString descr = record.sub(44,74); const TString& descr = record.sub(44,74);
dep->put(RMV_DESCR, descr); // Descrizione della prima riga riportata sulla testata dep->put(RMV_DESCR, descr); // Descrizione della prima riga riportata sulla testata
} }
} }
@ -1795,9 +1795,9 @@ void TTransfer_file::write_tmp_movIVA(const TString& record)
if (trc.is_key(key)) if (trc.is_key(key))
{ {
//ai fini del trasferimento (flag record gia trasferito e nuovo ultimo numero di registrazione). //ai fini del trasferimento (flag record gia trasferito e nuovo ultimo numero di registrazione).
TIsamtempfile* file = NULL; TIsamtempfile* file = NULL;
TRectype* dep = NULL; TRectype* dep = NULL;
TFilename tmp_path; TFilename tmp_path;
TString16 cfpi; TString16 cfpi;
int logicnum_p = 0; int logicnum_p = 0;
@ -3423,8 +3423,6 @@ void TTransfer_file::scrivi_PN(long nrec)
void TTransfer_file::scrivi_IVA(long nrec) void TTransfer_file::scrivi_IVA(long nrec)
{ {
TString buffer(sizeT);
_prog = new TProgind(nrec,TR("Trasferimento Movimenti IVA"),false, true); _prog = new TProgind(nrec,TR("Trasferimento Movimenti IVA"),false, true);
const TRic_recfield recf(_ttab->curr(), "S0", 0, sizeT); const TRic_recfield recf(_ttab->curr(), "S0", 0, sizeT);
@ -3433,10 +3431,11 @@ void TTransfer_file::scrivi_IVA(long nrec)
_ttab->put("CODTAB", "U1"); _ttab->put("CODTAB", "U1");
for (int err = _ttab->read(_isgteq); err == NOERR; err = _ttab->next()) for (int err = _ttab->read(_isgteq); err == NOERR; err = _ttab->next())
{ {
const TString& trec = _ttab->get("CODTAB").left(2); const TString& trec = _ttab->get("CODTAB");
if (trec != "U1") break; if (!trec.starts_with("U1"))
break;
buffer = (const char*)recf; const TFixed_string buffer((const char*)recf, sizeT);
write_tmp_movIVA(buffer); write_tmp_movIVA(buffer);
} }
delete _prog; delete _prog;
@ -4034,10 +4033,10 @@ int TTransfer_file::annoes_PC(const TString& data) const
return anno; return anno;
} }
void TTransfer_file::causale(TString& cau,TString& tipo,TString& descr) void TTransfer_file::causale(const TString& cau, TString& tipo,TString& descr) const
{ {
/*
TLocalisamfile caus (LF_CAUSALI); TLocalisamfile caus (LF_CAUSALI);
caus.setkey(1); caus.setkey(1);
caus.zero(); caus.zero();
caus.put(CAU_CODCAUS, cau); caus.put(CAU_CODCAUS, cau);
@ -4051,6 +4050,10 @@ void TTransfer_file::causale(TString& cau,TString& tipo,TString& descr)
descr = ""; descr = "";
tipo = ""; tipo = "";
} }
*/
const TRectype& caus = cache().get(LF_CAUSALI, cau);
descr = caus.get(CAU_DESCR);
tipo = caus.get(CAU_TIPODOC);
} }
int TTransfer_file::registro(const TString& reg, int anno) const int TTransfer_file::registro(const TString& reg, int anno) const
@ -4181,7 +4184,7 @@ void TTransfer_file::write_testata_movimenti(TString& record)
if (fname == MOV_REG) if (fname == MOV_REG)
{ {
const int tipo = registro (field,annoiva); const int tipo = registro(field, annoiva);
if (tipo == 1 || tipo == 2) if (tipo == 1 || tipo == 2)
_depmov->put(MOV_TIPO, tipo == 1 ? 'C' : 'F'); _depmov->put(MOV_TIPO, tipo == 1 ? 'C' : 'F');
} }

View File

@ -247,7 +247,7 @@ private:
void write_pagsca(const TString& record); void write_pagsca(const TString& record);
int annoes_PC(const TString& data) const; int annoes_PC(const TString& data) const;
void causale(TString& cau,TString& tipo,TString& descr); void causale(const TString& cau,TString& tipo,TString& descr) const;
int registro(const TString& reg,int anno) const; int registro(const TString& reg,int anno) const;
public: public:

View File

@ -95,7 +95,7 @@ Item_05 = "Ricalcolo saldi", "cg4 -0", "F"
Item_06 = "IVA", [CGMENU_010] Item_06 = "IVA", [CGMENU_010]
Item_07 = "Stampe di contabilità", [CGMENU_023] Item_07 = "Stampe di contabilità", [CGMENU_023]
Item_08 = "Saldaconto", <scmenu.men> Item_08 = "Saldaconto", <scmenu.men>
Item_09 = "Tracciabilita' CUP-CIG", <ctmenu.men> Item_09 = "Tracciabilità CUP-CIG", <ctmenu.men>
[CGMENU_010] [CGMENU_010]
Caption = "IVA" Caption = "IVA"
@ -107,12 +107,13 @@ Item_02 = "Liquidazione", "cg4 -2", "F"
Item_03 = "Visualizzazione liquidazione", "cg5 -5", "F" Item_03 = "Visualizzazione liquidazione", "cg5 -5", "F"
Item_04 = "Riepilogo progressivi", "cg0 -3", "F" Item_04 = "Riepilogo progressivi", "cg0 -3", "F"
Item_05 = "Stampa registri", "cg4 -3", "F" Item_05 = "Stampa registri", "cg4 -3", "F"
Item_06 = "Liste fatture", [CGMENU_026] Item_06 = "Stampa pro-rata", "cg5 -9", "F"
Item_07 = "Gestione acconti IVA", [CGMENU_027] Item_07 = "Liste fatture", [CGMENU_026]
Item_08 = "Gestione versamenti IVA", [CGMENU_022] Item_08 = "Gestione acconti IVA", [CGMENU_027]
Item_09 = "Operazioni annuali", [CGMENU_029] Item_09 = "Gestione versamenti IVA", [CGMENU_022]
Item_10 = "IVA per cassa / differita", <icmenu.men> Item_10 = "Operazioni annuali", [CGMENU_029]
Item_11 = "Gestione autotrasportatori", "cg4 -9", "F" Item_11 = "IVA per cassa / differita", <icmenu.men>
Item_12 = "Gestione autotrasportatori", "cg4 -9", "F"
[CGMENU_011] [CGMENU_011]
Caption = "Tabelle ministeriali" Caption = "Tabelle ministeriali"
@ -189,8 +190,8 @@ Module = 0
Flags = "" Flags = ""
Item_01 = "Tabella studio per invio", "cg6 -4 %ins", "F" Item_01 = "Tabella studio per invio", "cg6 -4 %ins", "F"
Item_02 = "Tabella ditta per invio", "cg6 -4 %ind", "F" Item_02 = "Tabella ditta per invio", "cg6 -4 %ind", "F"
Item_03 = "Invio contabilita' a sistema", "cg6 -8 S", "F" Item_03 = "Invio contabilità a sistema", "cg6 -8 S", "F"
Item_04 = "Invio contabilita' a PC", "cg6 -8 P", "F" Item_04 = "Invio contabilità a PC", "cg6 -8 P", "F"
Item_05 = "Ripristino movimenti da inviare", "cg6 -8 R", "F" Item_05 = "Ripristino movimenti da inviare", "cg6 -8 R", "F"
Item_06 = "Eliminazione file invio", "cg6 -8 C", "FP" Item_06 = "Eliminazione file invio", "cg6 -8 C", "FP"
@ -220,7 +221,7 @@ Flags = ""
Item_01 = "Apertura nuovo esercizio", "cg4 -4 C", "F" Item_01 = "Apertura nuovo esercizio", "cg4 -4 C", "F"
Item_02 = "Apertura nuovo esercizio IVA", "cg4 -4 I", "F" Item_02 = "Apertura nuovo esercizio IVA", "cg4 -4 I", "F"
Item_03 = "Chiusura/Apertura conti", "cg4 -5", "F" Item_03 = "Chiusura/Apertura conti", "cg4 -5", "F"
Item_04 = "Chiusura/Apertura conti Contabilita' sep.", "np0 -1", "F" Item_04 = "Chiusura/Apertura conti Contabilità sep.", "np0 -1", "F"
[CGMENU_022] [CGMENU_022]
Caption = "Gestione versamenti IVA" Caption = "Gestione versamenti IVA"

View File

@ -104,6 +104,11 @@ bool TPartite_cache::add_game(int anno, const char* partita)
const TPartita game(_bill, anno, partita); const TPartita game(_bill, anno, partita);
const bool chiusa = game.chiusa(true); const bool chiusa = game.chiusa(true);
can_add = (_flags == sct_closed_games) == chiusa; can_add = (_flags == sct_closed_games) == chiusa;
if (!can_add) // Faccio un'eccezione per le mie partite
{
for (int i = game.last(); i > 0 && !can_add; i = game.pred(i))
can_add = game.riga(i).get_long(PART_NREG) == _numreg;
}
} }
if (can_add) if (can_add)
add(key); add(key);

View File

@ -1,3 +1,3 @@
26 26
0 0
$caus|0|0|85|0|Causali contabili||| $caus|0|0|86|0|Causali contabili|||

View File

@ -1,5 +1,5 @@
26 26
25 26
CODCAUS|1|3|0|Codice causale CODCAUS|1|3|0|Codice causale
DESCR|1|50|0|Descrizione causale DESCR|1|50|0|Descrizione causale
TIPODOC|1|2|0|Tipo documento TIPODOC|1|2|0|Tipo documento
@ -12,14 +12,15 @@ DATADOC|8|1|0|Data documento
NUMDOC|8|1|0|Numero documento NUMDOC|8|1|0|Numero documento
AUTOFATT|8|1|0|Autofattura art. ?? AUTOFATT|8|1|0|Autofattura art. ??
MOVSEZ|8|1|0|Movimento sezionale ?? MOVSEZ|8|1|0|Movimento sezionale ??
TIPOMOV|2|1|0|Tipo movimento TIPOMOV|2|1|0|Tipo movimento saldaconto
RITFATT|8|1|0| RITFATT|8|1|0|
COLLCESP|1|1|0|Collegamnto ai cespiti COLLCESP|1|1|0|Collegamnto ai cespiti
M770|1|1|0|Collegamento al 770 M770|1|1|0|Collegamento al 770
CODCAUSIM|1|3|0|Codice causale incasso immediato CODCAUSIM|1|3|0|Codice causale incasso immediato
SOSPESO|8|1|0|Causale sospesa SOSPESO|8|1|0|Causale sospesa
VALINTRA|8|1|0|Gestione valuta intra-comunitaria VALINTRA|8|1|0|Gestione valuta intra-comunitaria
MOVIND|1|1|0|Causale per contabilita' industriale MOVIND|1|1|0|Causale per contabilità analitica
MOVCGIND|8|1|0|Causale per contabilità industriale
SOLOIVA|8|1|0|Movimento di sola IVA SOLOIVA|8|1|0|Movimento di sola IVA
PROVV|1|1|0|Tipo movimento (" " Normale, "P" Provvisorio cancellabile, "C" Provvisorio da cepiti) PROVV|1|1|0|Tipo movimento (" " Normale, "P" Provvisorio cancellabile, "C" Provvisorio da cepiti)
REGSPIVA|2|2|0|Regimi speciali IVA REGSPIVA|2|2|0|Regimi speciali IVA