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:
parent
c236db42c2
commit
b8b5025820
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user