Allungate stringhe interne TModule_table per gestire correttamente codice cliente

git-svn-id: svn://10.65.10.50/branches/R_10_00@22845 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-04-09 15:11:00 +00:00
parent bf49d2b058
commit 2c5d6aded2
4 changed files with 20 additions and 19 deletions

View File

@ -250,21 +250,21 @@ const char* TDowJones::normalize_value(const char* val, const real& /*exch*/)
void TExchange::copy(const TExchange& exc)
{
strcpy(_val, exc._val);
_codval = exc._codval;
_exchange = exc._exchange;
}
const real& TExchange::get_change() const
{
if (_exchange.is_zero())
return DowJones.get_change(_val);
return DowJones.get_change(_codval);
return _exchange;
}
int TExchange::compare(const TSortable& obj) const
{
const TExchange& exc = (const TExchange&)obj;
int cmp = strcmp(_val, exc._val);
int cmp = _codval.compare(exc._codval);
if (cmp == 0)
{
const real diff = get_change() - exc.get_change();
@ -275,36 +275,34 @@ int TExchange::compare(const TSortable& obj) const
bool TExchange::same_value_as(const TExchange& exc) const
{
return strcmp(_val, exc._val) == 0;
return _codval == exc._codval;
}
bool TExchange::is_firm_value() const
{
return DowJones.get_firm_val() == _val;
return DowJones.get_firm_val() == _codval;
}
bool TExchange::is_euro_value() const
{
return DowJones.get_euro_val() == _val;
return DowJones.get_euro_val() == _codval;
}
int TExchange::decimals(bool price) const
{
return DowJones.get_dec(_val, price);
return DowJones.get_dec(_codval, price);
}
void TExchange::set(const char* val, const real& chg)
{
val = DowJones.normalize_value(val, chg);
strncpy(_val, val, 4);
_val[3] = '\0';
_codval = DowJones.normalize_value(val, chg);
_exchange = chg;
}
void TExchange::set(const TRectype& rec)
{
const TString4 codval = rec.get("CODVAL");
const real chg = rec.get_real("CAMBIO");
const TString& codval = rec.get("CODVAL");
set(codval, chg);
}
@ -408,15 +406,15 @@ const char* TCurrency::string(bool dotted) const
TCurrency& TCurrency::operator+=(const TCurrency& cur)
{
CHECK(is_price() == cur.is_price(), "Somma di pere e mele!");
if (!cur._num.is_zero())
{
if (!cur.is_zero())
{
if (same_value_as(cur))
{
_num += cur._num;
}
else
{
real n = DowJones.exchange(cur._num, cur._chg, _chg, is_price());
const real n = DowJones.exchange(cur._num, cur._chg, _chg, is_price());
_num += n;
}
}
@ -502,7 +500,6 @@ bool same_values(const char * valuea, const char * valueb)
return xvt_str_compare_ignoring_case(valuea, valueb) == 0;
}
real change_currency(const real& num,
const char* fromval, const real& fromchg,
const char* toval, const real& tochg,

View File

@ -16,7 +16,7 @@ class TRectype;
class TExchange : public TSortable
{
char _val[4]; // Codice valuta
TString4 _codval; // Codice valuta
real _exchange; // Cambio personalizzato
protected:
@ -35,7 +35,7 @@ public:
bool is_firm_value() const;
bool is_euro_value() const;
const char* get_value() const { return _val; }
const char* get_value() const { return _codval; }
const real& get_change() const;
int decimals(bool price = false) const;

View File

@ -35,6 +35,8 @@
#define DOC_CODINDSP "CODINDSP"
#define DOC_DATADOCRIF "DATADOCRIF"
#define DOC_NUMDOCRIF "NUMDOCRIF"
#define DOC_CODNUMRIF "CODNUMRIF"
#define DOC_ANNORIF "ANNORIF"
#define DOC_ZONA "ZONA"
#define DOC_CODAG "CODAG"
#define DOC_CODAGVIS "CODAGVIS"
@ -87,6 +89,7 @@
#define DOC_IVAXCASSA "IVAXCASSA"
#define DOC_DATACOMP "DATACOMP"
#define DOC_DATAFCOMP "DATAFCOMP"
#define DOC_DATASCIMP "DATASCIMP"
#define DOC_CUP "CUP"
#define DOC_CIG "CIG"
#define DOC_CONTRATTO "CONTRATTO"

View File

@ -5,7 +5,7 @@
TModule_table::TModule_table(const char* tabname)
: TLocalisamfile(LF_TABMOD), _customer(0)
{
TString8 name(tabname);
TString16 name(tabname);
if (!isalnum(name[0])) // Toglie eventuali prefissi inutili d'ora in poi
name.ltrim(1);
name.upper();
@ -22,7 +22,8 @@ TModule_table::TModule_table(const char* tabname)
else
_tabname = name;
}
else _tabname = name;
else
_tabname = name;
if (_module.blank() || _customer <= 0L)
{