Corretta la stampa in valuta e l'incolonnamento degli stessi importi.

git-svn-id: svn://10.65.10.50/trunk@2488 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-01-23 12:02:13 +00:00
parent b2c54b409e
commit 1a3147d03f
2 changed files with 71 additions and 28 deletions

View File

@ -223,8 +223,9 @@ void TEC_row::set_imp(TForm_item& fi, const real& imp, bool valuta) const
else
new_picture << ",@@@";
}
int exceed = fi.width() - new_picture.len();
if (exceed<0)
const int w = fi.width();
int exceed = w - new_picture.len();
if (exceed<0 && w>0)
{
exceed=::abs(exceed);
new_picture = new_picture.mid(exceed,new_picture.len()-exceed);
@ -768,23 +769,36 @@ 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)
{
TString pic(20);
pic = fi.picture();
op.add(pic);
const int w = fi.width();
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)
int exceed = w - pic.len();
if (exceed<0 && w>0)
{
exceed=::abs(exceed);
pic = pic.mid(exceed,pic.len()-exceed);
}
fi.set_picture(pic);
}
// oltre a cio' deve correggere la picture, in modo che tutti gli importi del
// footer risultino incolonnati correttamente.
// (nel body cio' e' fatto in TForm_number::put_paragraph())
const int l = pic.len();
if (w>l)
{
int gap = w-l;
TString stmp(gap); // cosi' mette gli spazi necessari davanti alla picture
stmp.fill(' '); // in modo da colmare il vuoto
pic.insert(stmp);
}
fi.set_picture(pic);
}
void TEC_form::print_total(int riga, const THash_object& o)
@ -820,16 +834,18 @@ void TEC_form::print_total(int riga, const THash_object& o)
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);
dare.set_x(bdare.x());
dare.width() = bdare.width();
TForm_item& bavere = body.find_field(PEC_AVERE);
avere.set_x(bavere.x());
avere.width() = bavere.width();
}
modify_picture(dare,old_pictures,in_valuta);
modify_picture(avere,old_pictures,in_valuta);
char sez = imp.sezione();
real num = imp.valore();
@ -853,21 +869,23 @@ 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);
scaduto.set_x(bscaduto.x());
scaduto.width() = bscaduto.width();
}
modify_picture(scaduto,old_pictures,in_valuta);
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);
esposto.set_x(besposto.x());
esposto.width() = besposto.width();
}
modify_picture(esposto,old_pictures,in_valuta);
esposto.set(t.esposto().string());
TForm_item& implire = foot.find_field(PEC_IMPLIRE);
@ -875,7 +893,9 @@ void TEC_form::print_total(int riga, const THash_object& o)
{
TForm_item& bimplire = body.find_field(PEC_IMPLIRE);
implire.set_x(bimplire.x());
esposto.width() = bimplire.width();
}
modify_picture(implire,old_pictures,FALSE);
implire.set(t.importo_lire().string());
foot.update();
@ -891,12 +911,13 @@ void TEC_form::print_total(int riga, const THash_object& o)
}
}
if (in_valuta)//restore old pictures
if (old_pictures.items() > 0)//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));
implire.set_picture(old_pictures.row(4));
}
for (word r = 0; r < _total_rows; r++)
printer().setfooterline(riga + r, foot.row(r));

View File

@ -129,8 +129,9 @@ void TESSL_row::set_imp(TForm_item& fi, const real& imp, bool valuta) const
else
new_picture << ",@@@";
}
int exceed = fi.width() - new_picture.len();
if (exceed<0)
const int w = fi.width();
int exceed = w - new_picture.len();
if (exceed<0 && w>0)
{
exceed=::abs(exceed);
new_picture = new_picture.mid(exceed,new_picture.len()-exceed);
@ -653,23 +654,36 @@ 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)
{
TString pic(20);
pic = fi.picture();
op.add(pic);
const int w = fi.width();
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)
int exceed = w - pic.len();
if (exceed<0 && w>0)
{
exceed=::abs(exceed);
pic = pic.mid(exceed,pic.len()-exceed);
}
fi.set_picture(pic);
}
// oltre a cio' deve correggere la picture, in modo che tutti gli importi del
// footer risultino incolonnati correttamente.
// (nel body cio' e' fatto in TForm_number::put_paragraph())
const int l = pic.len();
if (w>l)
{
int gap = w-l;
TString stmp(gap); // cosi' mette gli spazi necessari davanti alla picture
stmp.fill(' '); // in modo da colmare il vuoto
pic.insert(stmp);
}
fi.set_picture(pic);
}
void TESSL_form::print_total(int riga, const THash_object& o)
@ -705,16 +719,18 @@ void TESSL_form::print_total(int riga, const THash_object& o)
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);
dare.set_x(bdare.x());
dare.width() = bdare.width();
TForm_item& bavere = body.find_field(PEC_AVERE);
avere.set_x(bavere.x());
avere.width() = bavere.width();
}
modify_picture(dare,old_pictures,in_valuta);
modify_picture(avere,old_pictures,in_valuta);
char sez = imp.sezione();
real num = imp.valore();
if (sez=='D' && num<0)
@ -737,21 +753,23 @@ 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);
scaduto.set_x(bscaduto.x());
scaduto.width() = bscaduto.width();
}
modify_picture(scaduto,old_pictures,in_valuta);
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);
esposto.set_x(besposto.x());
esposto.width() = besposto.width();
}
modify_picture(esposto,old_pictures,in_valuta);
esposto.set(t.esposto().string());
TForm_item& implire = foot.find_field(PEC_IMPLIRE);
@ -759,16 +777,19 @@ void TESSL_form::print_total(int riga, const THash_object& o)
{
TForm_item& bimplire = body.find_field(PEC_IMPLIRE);
implire.set_x(bimplire.x());
implire.width() = bimplire.width();
}
modify_picture(implire,old_pictures,FALSE);
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);
unreferenced.set_x(uns.x());
unreferenced.width() = avere.width();
}
modify_picture(unreferenced,old_pictures,in_valuta);
unreferenced.set(t.unassigned().valore().string());
foot.update();
@ -783,13 +804,14 @@ void TESSL_form::print_total(int riga, const THash_object& o)
desc_field.set_prompt(*p);
}
}
if (in_valuta)//restore old pictures
if (old_pictures.items() > 0)//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));
implire.set_picture(old_pictures.row(4));
unreferenced.set_picture(old_pictures.row(5));
}
for (word r = 0; r < _total_rows; r++)
printer().setfooterline(riga + r, foot.row(r));