Patch level : 10.0 606

Files correlati     : ve0.exe ve1.exe ve5.exe ve6.exe lv3.exe lv2.exe
Ricompilazione Demo : [ ]
Commento            :

Bug   0001551: Documenti interattivi

Nel caso le percentuali di sconto di testa diano zero non deve essere generata una riga in modo da non stamparle


git-svn-id: svn://10.65.10.50/trunk@20065 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2010-02-07 17:16:19 +00:00
parent c236db42c2
commit b8b5025820
3 changed files with 19 additions and 10 deletions

View File

@ -74,6 +74,7 @@ class TCache_articoli;
class TSmart_card;
bool is_sconto_not_zero(const char * exp);
bool scontoexpr2perc(const char * exp, bool signal , TString & goodexp, real & val_perc );
real prezzo_scontato(const real& prezzo, const char * sconto);

View File

@ -159,9 +159,17 @@ real TSpesa_prest::prezzo() const
return r;
}
bool is_sconto_not_zero(const char * exp)
{
TString good;
real perc;
return scontoexpr2perc(exp, false , good, perc) && perc != UNO;
}
bool scontoexpr2perc(const char * exp, bool signal , TString & goodexp, real & val_perc )
{
bool valid = TRUE;
bool valid = true;
goodexp.cut(0);
// Elimina gli spazi molesti
@ -170,8 +178,8 @@ bool scontoexpr2perc(const char * exp, bool signal , TString & goodexp, real & v
if (exp && *exp)
{
TString80 num;
bool dec = FALSE; // Flag che indica se si attende l'inizio di un numero
bool startnum = TRUE; // Flag che indica se siamo all'inizio di un numero
bool dec = false; // Flag che indica se si attende l'inizio di un numero
bool startnum = true; // Flag che indica se siamo all'inizio di un numero
int errorchar = ' ';
// Flag che indica se sono nella parte decimale di un numero
@ -192,8 +200,8 @@ bool scontoexpr2perc(const char * exp, bool signal , TString & goodexp, real & v
}
// Inizia il nuovo numero
num = (c == '-') ? "-" : "+";
startnum = TRUE;
dec = FALSE;
startnum = true;
dec = false;
break;
case '0':
case '1':
@ -206,7 +214,7 @@ bool scontoexpr2perc(const char * exp, bool signal , TString & goodexp, real & v
case '8':
case '9':
num << c;
startnum = FALSE;
startnum = false;
break;
case '.':
case ',':
@ -215,8 +223,8 @@ bool scontoexpr2perc(const char * exp, bool signal , TString & goodexp, real & v
if( startnum )
num << '0'; // Se occorreva un numero ci metto lo 0
num << '.'; // Interpreto la virgola come punto
dec = TRUE;
startnum = TRUE;
dec = true;
startnum = true;
}
else
errorchar = c; // Se siamo gi` nella parte decimale segnala un errore

View File

@ -841,9 +841,9 @@ long TDocumento::renum_ndoc(long numdoc)
void TDocumento::set_riga_sconto()
{
const TString80 sconto(get(DOC_SCONTOPERC));
const TString80 sconto(get(DOC_SCONTOPERC));
if (sconto.empty())
if (sconto.blank() || !is_sconto_not_zero(sconto))
{
if(_sconto != NULL)
delete _sconto;