Corretta stampa in valuta.
git-svn-id: svn://10.65.10.50/trunk@2478 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a4b804a300
commit
aba2659298
@ -54,6 +54,7 @@ protected:
|
||||
int find_magic(TString& s, TString& magic1, TString& magic2) const;
|
||||
void change_magic_body(const TEC_row& o, TString& s);
|
||||
void change_magic_footer(const THash_object& o, TString& s);
|
||||
void modify_picture(TForm_item& fi, TString_array& op, const bool in_valuta);
|
||||
void print_total(int riga, const THash_object& o);
|
||||
|
||||
void stampa_testata(TPrinter& p);
|
||||
@ -147,7 +148,7 @@ public:
|
||||
void print_on(TPrint_section& body);
|
||||
|
||||
TEC_row(const TRiga_partite& row, const TDate& data, const TImporto& imp, int rata);
|
||||
TEC_row(const char* desc, const TImporto& imp);
|
||||
TEC_row(const char* desc, const TImporto& imp, const TValuta& val);
|
||||
virtual ~TEC_row() {}
|
||||
};
|
||||
|
||||
@ -168,11 +169,12 @@ TEC_row::TEC_row(const TRiga_partite& row, const TDate& data, const TImporto& im
|
||||
_valuta.get(row);
|
||||
}
|
||||
|
||||
TEC_row::TEC_row(const char* desc, const TImporto& imp)
|
||||
TEC_row::TEC_row(const char* desc, const TImporto& imp, const TValuta& val)
|
||||
: _riga(9999), _rata(9999), _num_prot(0), _num_reg(0), _salvo_buon_fine(FALSE)
|
||||
{
|
||||
_descrizione = desc;
|
||||
_importo = imp; _importo.normalize();
|
||||
_valuta = val;
|
||||
}
|
||||
|
||||
// Le righe dell'estratto conto sono ordinate per data, riga partita, numero rata o
|
||||
@ -219,17 +221,19 @@ void TEC_row::set_imp(TForm_item& fi, const real& imp, bool valuta) const
|
||||
if (old_picture.find(',') > 0)
|
||||
new_picture << ".###";
|
||||
else
|
||||
new_picture << ",###";
|
||||
new_picture << ",@@@";
|
||||
}
|
||||
int exceed = fi.width() - new_picture.len();
|
||||
if (exceed<0)
|
||||
{
|
||||
exceed=::abs(exceed);
|
||||
new_picture = new_picture.mid(exceed,new_picture.len()-exceed);
|
||||
}
|
||||
fi.set_picture(new_picture);
|
||||
}
|
||||
|
||||
fi.set(imp.string());
|
||||
|
||||
if (valuta)
|
||||
{
|
||||
fi.set_picture(old_picture);
|
||||
}
|
||||
}
|
||||
|
||||
TEC_form& TEC_row::form() const
|
||||
@ -271,10 +275,13 @@ void TEC_row::print_on(TPrint_section& body)
|
||||
TForm_item& datapag = body.find_field(PEC_DATAPAG);
|
||||
datapag.set(_data.string());
|
||||
|
||||
TString_array old_pictures;
|
||||
const real& imp = _importo.valore();
|
||||
TForm_item& dare = body.find_field(PEC_DARE);
|
||||
TForm_item& avere = body.find_field(PEC_AVERE);
|
||||
|
||||
old_pictures.add(dare.picture());
|
||||
old_pictures.add(avere.picture());
|
||||
if (_importo.sezione() == 'D')
|
||||
{
|
||||
set_imp(dare, imp, valuta);
|
||||
@ -287,9 +294,11 @@ void TEC_row::print_on(TPrint_section& body)
|
||||
}
|
||||
|
||||
TForm_item& scaduto = body.find_field(PEC_SCADUTO);
|
||||
old_pictures.add(scaduto.picture());
|
||||
set_imp(scaduto, _scaduto, valuta);
|
||||
|
||||
TForm_item& esposto = body.find_field(PEC_ESPOSTO);
|
||||
old_pictures.add(esposto.picture());
|
||||
set_imp(esposto, _esposto, valuta);
|
||||
esposto.set_prompt(_salvo_buon_fine ? "*" : " ");
|
||||
|
||||
@ -308,7 +317,12 @@ void TEC_row::print_on(TPrint_section& body)
|
||||
body.update(); // Crea vera riga di stampa
|
||||
|
||||
esposto.set_prompt(" "); // Ripristina il vecchi prompt
|
||||
descr.set_prompt(old_prompt);
|
||||
descr.set_prompt(old_prompt);
|
||||
dare.set_picture(old_pictures.row(0));
|
||||
avere.set_picture(old_pictures.row(1));
|
||||
scaduto.set_picture(old_pictures.row(2));
|
||||
esposto.set_picture(old_pictures.row(3));
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -655,9 +669,8 @@ void TEC_form::stampa_riporti(TPrinter& pr)
|
||||
THash_object* tot[MAXTOT];
|
||||
_num_rip = ordina_totali_per_valuta(tot);
|
||||
|
||||
const word maxtot = section('F').height() - 1; // La prima riga e' riservata alla fincatura
|
||||
if (_num_rip > maxtot)
|
||||
_num_rip = maxtot;
|
||||
if (_num_rip > _maxtot)
|
||||
_num_rip = _maxtot;
|
||||
|
||||
const TString& riporto = describe(PEC_RIPORTO);
|
||||
TString desc(80);
|
||||
@ -668,9 +681,14 @@ void TEC_form::stampa_riporti(TPrinter& pr)
|
||||
TTotal& t = (TTotal&)(tot[j]->obj());
|
||||
|
||||
desc = riporto;
|
||||
TValuta val;
|
||||
if (key.not_empty())
|
||||
{
|
||||
desc << ' ' << key;
|
||||
TEC_row rip(desc, t.importo().normalize());
|
||||
TValuta val1(key,botime,ZERO); // E' una valuta fittizia, giusto per far
|
||||
val = val1; // eseguire in set_imp() i calcoli per i decimali.
|
||||
}
|
||||
TEC_row rip(desc, t.importo().normalize(),val);
|
||||
rip.scaduto(t.scaduto());
|
||||
rip.esposto(t.esposto());
|
||||
rip.importo_lire(t.importo_lire());
|
||||
@ -748,6 +766,27 @@ void TEC_form::change_magic_footer(const THash_object& o, TString& s)
|
||||
}
|
||||
}
|
||||
|
||||
void TEC_form::modify_picture(TForm_item& fi, TString_array& op, const bool in_valuta)
|
||||
{
|
||||
if (in_valuta && _in_valuta)
|
||||
{
|
||||
TString pic(20);
|
||||
pic = fi.picture();
|
||||
op.add(pic);
|
||||
if (pic.find(',') > 0)
|
||||
pic << ".###";
|
||||
else
|
||||
pic << ",@@@";
|
||||
int exceed = fi.width() - pic.len();
|
||||
if (exceed<0)
|
||||
{
|
||||
exceed=::abs(exceed);
|
||||
pic = pic.mid(exceed,pic.len()-exceed);
|
||||
}
|
||||
fi.set_picture(pic);
|
||||
}
|
||||
}
|
||||
|
||||
void TEC_form::print_total(int riga, const THash_object& o)
|
||||
{
|
||||
const short MAXID = 4;
|
||||
@ -776,9 +815,13 @@ void TEC_form::print_total(int riga, const THash_object& o)
|
||||
|
||||
const TTotal& t = (const TTotal&)o.obj();
|
||||
const TImporto& imp = t.importo();
|
||||
const bool in_valuta = o.key().not_empty();
|
||||
TForm_item& dare = foot.find_field(PEC_DARE);
|
||||
TForm_item& avere = foot.find_field(PEC_AVERE);
|
||||
TString_array old_pictures;//pictures da rippristinare dopo aver stampato
|
||||
|
||||
modify_picture(dare,old_pictures,in_valuta);
|
||||
modify_picture(avere,old_pictures,in_valuta);
|
||||
if (dare.x() <= 0 || avere.x() <= 0)
|
||||
{
|
||||
TForm_item& bdare = body.find_field(PEC_DARE);
|
||||
@ -810,6 +853,7 @@ void TEC_form::print_total(int riga, const THash_object& o)
|
||||
}
|
||||
|
||||
TForm_item& scaduto = foot.find_field(PEC_SCADUTO);
|
||||
modify_picture(scaduto,old_pictures,in_valuta);
|
||||
if (scaduto.x() <= 0)
|
||||
{
|
||||
TForm_item& bscaduto = body.find_field(PEC_SCADUTO);
|
||||
@ -818,6 +862,7 @@ void TEC_form::print_total(int riga, const THash_object& o)
|
||||
scaduto.set(t.scaduto().string());
|
||||
|
||||
TForm_item& esposto = foot.find_field(PEC_ESPOSTO);
|
||||
modify_picture(esposto,old_pictures,in_valuta);
|
||||
if (esposto.x() <= 0)
|
||||
{
|
||||
TForm_item& besposto = body.find_field(PEC_ESPOSTO);
|
||||
@ -846,6 +891,13 @@ void TEC_form::print_total(int riga, const THash_object& o)
|
||||
}
|
||||
}
|
||||
|
||||
if (in_valuta)//restore old pictures
|
||||
{
|
||||
dare.set_picture(old_pictures.row(0));
|
||||
avere.set_picture(old_pictures.row(1));
|
||||
scaduto.set_picture(old_pictures.row(2));
|
||||
esposto.set_picture(old_pictures.row(3));
|
||||
}
|
||||
for (word r = 0; r < _total_rows; r++)
|
||||
printer().setfooterline(riga + r, foot.row(r));
|
||||
}
|
||||
@ -950,7 +1002,7 @@ bool TEC_form::print_game(const TPartita& game)
|
||||
{
|
||||
saldo.normalize();
|
||||
|
||||
TEC_row sld(describe(PEC_SALDO), saldo);
|
||||
TEC_row sld(describe(PEC_SALDO), saldo, righe.row(r-1).valuta());
|
||||
sld.scaduto(scaduto);
|
||||
sld.esposto(esposto);
|
||||
sld.importo_lire(implire);
|
||||
|
@ -75,11 +75,12 @@ TESSL_row::TESSL_row(const TRiga_partite& row, const TDate& data, const TImporto
|
||||
_valuta.get(row);
|
||||
}
|
||||
|
||||
TESSL_row::TESSL_row(const char* desc, const TImporto& imp)
|
||||
TESSL_row::TESSL_row(const char* desc, const TImporto& imp, const TValuta& val)
|
||||
: _riga(9999), _rata(9999), _num_prot(0), _num_reg(0), _salvo_buon_fine(FALSE)
|
||||
{
|
||||
_descrizione = desc;
|
||||
_importo = imp; _importo.normalize();
|
||||
_importo = imp; _importo.normalize();
|
||||
_valuta = val;
|
||||
}
|
||||
|
||||
// le righe dell'estratto conto sono ordinate per data, riga partita, numero rata,
|
||||
@ -126,17 +127,19 @@ void TESSL_row::set_imp(TForm_item& fi, const real& imp, bool valuta) const
|
||||
if (old_picture.find(',') > 0)
|
||||
new_picture << ".###";
|
||||
else
|
||||
new_picture << ",###";
|
||||
}
|
||||
new_picture << ",@@@";
|
||||
}
|
||||
int exceed = fi.width() - new_picture.len();
|
||||
if (exceed<0)
|
||||
{
|
||||
exceed=::abs(exceed);
|
||||
new_picture = new_picture.mid(exceed,new_picture.len()-exceed);
|
||||
}
|
||||
fi.set_picture(new_picture);
|
||||
}
|
||||
|
||||
fi.set(imp.string());
|
||||
|
||||
if (valuta)
|
||||
{
|
||||
fi.set_picture(old_picture);
|
||||
}
|
||||
}
|
||||
|
||||
TESSL_form& TESSL_row::form() const
|
||||
@ -181,10 +184,13 @@ void TESSL_row::print_on(TPrint_section& body)
|
||||
TForm_item& datapag = body.find_field(PEC_DATAPAG);
|
||||
datapag.set(_data.string());
|
||||
|
||||
TString_array old_pictures;
|
||||
const real& imp = _importo.valore();
|
||||
TForm_item& dare = body.find_field(PEC_DARE);
|
||||
TForm_item& avere = body.find_field(PEC_AVERE);
|
||||
|
||||
|
||||
old_pictures.add(dare.picture());
|
||||
old_pictures.add(avere.picture());
|
||||
if (_importo.sezione() == 'D')
|
||||
{
|
||||
set_imp(dare, imp, valuta);
|
||||
@ -200,9 +206,11 @@ void TESSL_row::print_on(TPrint_section& body)
|
||||
importo_in_lire.set(_importo_lire.string());
|
||||
|
||||
TForm_item& scaduto = body.find_field(PEC_SCADUTO);
|
||||
old_pictures.add(scaduto.picture());
|
||||
set_imp(scaduto, _scaduto, valuta);
|
||||
|
||||
TForm_item& esposto = body.find_field(PEC_ESPOSTO);
|
||||
old_pictures.add(esposto.picture());
|
||||
set_imp(esposto, _esposto, valuta);
|
||||
esposto.set_prompt(_salvo_buon_fine ? "*" : " ");
|
||||
|
||||
@ -219,6 +227,10 @@ void TESSL_row::print_on(TPrint_section& body)
|
||||
|
||||
esposto.set_prompt(" ");
|
||||
descr.set_prompt(old_prompt); // Ripristina il vecchio prompt
|
||||
dare.set_picture(old_pictures.row(0));
|
||||
avere.set_picture(old_pictures.row(1));
|
||||
scaduto.set_picture(old_pictures.row(2));
|
||||
esposto.set_picture(old_pictures.row(3));
|
||||
}
|
||||
|
||||
static int val_compare(const void* o1, const void* o2) {
|
||||
@ -541,7 +553,6 @@ void TESSL_form::stampa_riporti(TPrinter& pr)
|
||||
THash_object* tot[MAXTOT];
|
||||
_num_rip = ordina_totali_per_valuta(tot);
|
||||
|
||||
// const word maxtot = section('F').height() - 1;
|
||||
if (_num_rip > _maxtot)
|
||||
_num_rip = _maxtot;
|
||||
|
||||
@ -555,9 +566,14 @@ void TESSL_form::stampa_riporti(TPrinter& pr)
|
||||
TTotal& t = (TTotal&)(tot[j]->obj());
|
||||
|
||||
desc = riporto;
|
||||
TValuta val;
|
||||
if (key.not_empty())
|
||||
{
|
||||
desc << ' ' << key;
|
||||
TESSL_row rip(desc, t.importo().normalize());
|
||||
TValuta val1(key,botime,ZERO); // E' una valuta fittizia, giusto per far
|
||||
val = val1; // eseguire in set_imp() i calcoli per i decimali.
|
||||
}
|
||||
TESSL_row rip(desc, t.importo().normalize(),val);
|
||||
rip.scaduto(t.scaduto());
|
||||
rip.esposto(t.esposto());
|
||||
rip.importo_in_lire(t.importo_lire());
|
||||
@ -635,6 +651,27 @@ void TESSL_form::change_magic_footer(const THash_object& o, TString& s)
|
||||
}
|
||||
}
|
||||
|
||||
void TESSL_form::modify_picture(TForm_item& fi, TString_array& op, const bool in_valuta)
|
||||
{
|
||||
if (in_valuta && _in_valuta)
|
||||
{
|
||||
TString pic(20);
|
||||
pic = fi.picture();
|
||||
op.add(pic);
|
||||
if (pic.find(',') > 0)
|
||||
pic << ".###";
|
||||
else
|
||||
pic << ",@@@";
|
||||
int exceed = fi.width() - pic.len();
|
||||
if (exceed<0)
|
||||
{
|
||||
exceed=::abs(exceed);
|
||||
pic = pic.mid(exceed,pic.len()-exceed);
|
||||
}
|
||||
fi.set_picture(pic);
|
||||
}
|
||||
}
|
||||
|
||||
void TESSL_form::print_total(int riga, const THash_object& o)
|
||||
{
|
||||
const short MAXID = 5;
|
||||
@ -663,9 +700,13 @@ void TESSL_form::print_total(int riga, const THash_object& o)
|
||||
|
||||
const TTotal& t = (const TTotal&)o.obj();
|
||||
const TImporto& imp = t.importo();
|
||||
const bool in_valuta = o.key().not_empty();
|
||||
TForm_item& dare = foot.find_field(PEC_DARE);
|
||||
TForm_item& avere = foot.find_field(PEC_AVERE);
|
||||
TString_array old_pictures;//pictures da rippristinare dopo aver stampato
|
||||
|
||||
modify_picture(dare,old_pictures,in_valuta);
|
||||
modify_picture(avere,old_pictures,in_valuta);
|
||||
if (dare.x() <= 0 || avere.x() <= 0)
|
||||
{
|
||||
TForm_item& bdare = body.find_field(PEC_DARE);
|
||||
@ -696,6 +737,7 @@ void TESSL_form::print_total(int riga, const THash_object& o)
|
||||
}
|
||||
|
||||
TForm_item& scaduto = foot.find_field(PEC_SCADUTO);
|
||||
modify_picture(scaduto,old_pictures,in_valuta);
|
||||
if (scaduto.x() <= 0)
|
||||
{
|
||||
TForm_item& bscaduto = body.find_field(PEC_SCADUTO);
|
||||
@ -704,6 +746,7 @@ void TESSL_form::print_total(int riga, const THash_object& o)
|
||||
scaduto.set(t.scaduto().string());
|
||||
|
||||
TForm_item& esposto = foot.find_field(PEC_ESPOSTO);
|
||||
modify_picture(esposto,old_pictures,in_valuta);
|
||||
if (esposto.x() <= 0)
|
||||
{
|
||||
TForm_item& besposto = body.find_field(PEC_ESPOSTO);
|
||||
@ -720,6 +763,7 @@ void TESSL_form::print_total(int riga, const THash_object& o)
|
||||
implire.set(t.importo_lire().string());
|
||||
|
||||
TForm_item& unreferenced = foot.find_field(PEC_UNASSIGNED);
|
||||
modify_picture(unreferenced,old_pictures,in_valuta);
|
||||
if (unreferenced.x() <= 0)
|
||||
{
|
||||
TForm_item& uns = body.find_field(PEC_AVERE);
|
||||
@ -739,7 +783,14 @@ void TESSL_form::print_total(int riga, const THash_object& o)
|
||||
desc_field.set_prompt(*p);
|
||||
}
|
||||
}
|
||||
|
||||
if (in_valuta)//restore old pictures
|
||||
{
|
||||
dare.set_picture(old_pictures.row(0));
|
||||
avere.set_picture(old_pictures.row(1));
|
||||
scaduto.set_picture(old_pictures.row(2));
|
||||
esposto.set_picture(old_pictures.row(3));
|
||||
unreferenced.set_picture(old_pictures.row(4));
|
||||
}
|
||||
for (word r = 0; r < _total_rows; r++)
|
||||
printer().setfooterline(riga + r, foot.row(r));
|
||||
}
|
||||
@ -814,7 +865,6 @@ bool TESSL_form::print_game(const TPartita& game)
|
||||
for (int r = 0; r < righe.items(); r++)
|
||||
{
|
||||
TESSL_row& riga = righe.row(r);
|
||||
|
||||
if (pr.rows_left() < body.height())
|
||||
{
|
||||
pr.formfeed();
|
||||
@ -850,7 +900,7 @@ bool TESSL_form::print_game(const TPartita& game)
|
||||
{
|
||||
saldo.normalize();
|
||||
|
||||
TESSL_row sld(describe(PEC_SALDO), saldo);
|
||||
TESSL_row sld(describe(PEC_SALDO), saldo, righe.row(r-1).valuta());
|
||||
sld.scaduto(scaduto);
|
||||
sld.esposto(esposto);
|
||||
sld.importo_in_lire(implire);
|
||||
|
@ -97,7 +97,7 @@ public:
|
||||
void print_on(TPrint_section& body);
|
||||
|
||||
TESSL_row(const TRiga_partite& row, const TDate& data, const TImporto& imp, int rata);
|
||||
TESSL_row(const char* desc, const TImporto& imp);
|
||||
TESSL_row(const char* desc, const TImporto& imp, const TValuta& val);
|
||||
virtual ~TESSL_row() {}
|
||||
};
|
||||
|
||||
@ -137,6 +137,7 @@ protected:
|
||||
int find_magic(TString& s, TString& magic1, TString& magic2) const;
|
||||
void change_magic_body(const TESSL_row& o, TString& s);
|
||||
void change_magic_footer(const THash_object& o, TString& s);
|
||||
void modify_picture(TForm_item& fi, TString_array& op, const bool in_valuta);
|
||||
void print_total(int riga, const THash_object& o);
|
||||
|
||||
void stampa_testata(TPrinter& p);
|
||||
|
@ -39,8 +39,8 @@ TSol_row::TSol_row(const TRiga_partite& row, const TDate& data, const TImporto&
|
||||
{
|
||||
}
|
||||
|
||||
TSol_row::TSol_row(const char* desc, const TImporto& imp)
|
||||
:TESSL_row(desc, imp)
|
||||
TSol_row::TSol_row(const char* desc, const TImporto& imp, const TValuta& val)
|
||||
:TESSL_row(desc, imp, val)
|
||||
|
||||
{}
|
||||
|
||||
|
@ -43,7 +43,7 @@ protected: // TSortable
|
||||
|
||||
public:
|
||||
TSol_row(const TRiga_partite& row, const TDate& data, const TImporto& imp, int rata);
|
||||
TSol_row(const char* desc, const TImporto& imp);
|
||||
TSol_row(const char* desc, const TImporto& imp, const TValuta& val);
|
||||
virtual ~TSol_row() {}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user