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; class TSmart_card;
bool is_sconto_not_zero(const char * exp);
bool scontoexpr2perc(const char * exp, bool signal , TString & goodexp, real & val_perc ); bool scontoexpr2perc(const char * exp, bool signal , TString & goodexp, real & val_perc );
real prezzo_scontato(const real& prezzo, const char * sconto); real prezzo_scontato(const real& prezzo, const char * sconto);

View File

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