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