Patch level :4.0 490

Files correlati     :ca3.exe
Ricompilazione Demo : [ ]
Commento            :stampa bilancio di commessa per esercizio pronta ad essere testata


git-svn-id: svn://10.65.10.50/trunk@14329 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2006-09-18 14:36:45 +00:00
parent 37236df11d
commit 62f1c903fa

View File

@ -261,6 +261,8 @@ protected:
virtual const TVariant& get(const char* column_name) const;
void parse_bill(const TString& bill, TString& gruppo, TString& conto) const;
int estrai_saldi(const TRecordset& saldana, const int indbil,
TImporto& saldo, TImporto& saldop) const;
void aggiorna_importo(TAssoc_array& riga_array, const TString& livello,
const int indbil, const TRecordset& saldana, const bool inverti = false) const;
TAssoc_array& get_row(TAssoc_array& cms, const char* chiave,
@ -296,6 +298,38 @@ void TPrint_bilancio_cms_recordset::parse_bill(const TString& bill, TString& gru
conto = bill.mid(prefix_len, gruppo_len + conto_len);
}
int TPrint_bilancio_cms_recordset::estrai_saldi(const TRecordset& saldana, const int indbil,
TImporto& saldo, TImporto& saldop) const
{
int flag = 0;
if (_tipostima == 'C' && indbil == 3)
{
const TImporto imp_saldo(saldana.get(SALDANA_SEZIONE).as_string()[0],
saldana.get(SALDANA_SALDO).as_real());
saldo = imp_saldo;
flag |= saldo.is_zero() ? 0 : 1;
}
else
saldo.reset();
if (_tipostima == 'T' || (_tipostima == 'C' && indbil == 4)) //stima Tempo o (Costi e indbil=ricavo)
{
const TImporto imp_saldop(saldana.get(SALDANA_SEZIONEP).as_string()[0],
saldana.get(SALDANA_SALDOP).as_real());
const TImporto imp_saldov(saldana.get(SALDANA_SEZIONEV).as_string()[0],
saldana.get(SALDANA_SALDOV).as_real());
saldop = imp_saldop;
saldop += imp_saldov;
flag |= saldop.is_zero() ? 0 : 2;
}
else
saldop.reset();
return flag;
}
void TPrint_bilancio_cms_recordset::aggiorna_importo(TAssoc_array& riga_array,
const TString& livello, const int indbil, const TRecordset& saldana, const bool inverti) const
{
@ -312,33 +346,16 @@ void TPrint_bilancio_cms_recordset::aggiorna_importo(TAssoc_array& riga_array,
//ci sono tutti i tipi di saldo, ma solo quelli che rientrano nei parametri iniziali..
//..verranno considerati (_tipostima,indbil)
const TImporto imp_saldo(saldana.get(SALDANA_SEZIONE).as_string()[0],
saldana.get(SALDANA_SALDO).as_real());
const TImporto imp_saldop(saldana.get(SALDANA_SEZIONEP).as_string()[0],
saldana.get(SALDANA_SALDOP).as_real());
const TImporto imp_saldov(saldana.get(SALDANA_SEZIONEV).as_string()[0],
saldana.get(SALDANA_SALDOV).as_real());
TImporto imp_saldo, imp_saldop;
estrai_saldi(saldana, indbil, imp_saldo, imp_saldop);
if (inverti)
if (inverti) // Devo sottrarre l'importo = gli scambio la sezione
{
if (_tipostima == 'C' && indbil == 3) //stima Costi e indbil=Costo
imp -= imp_saldo;
if (_tipostima == 'T' || (_tipostima == 'C' && indbil == 4)) //stima Tempo o (Costi e indbil=ricavo)
{
imp -= imp_saldop;
imp -= imp_saldov;
}
}
else
{
if (_tipostima == 'C' && indbil == 3)
imp += imp_saldo;
if (_tipostima == 'T' || (_tipostima == 'C' && indbil == 4))
{
imp += imp_saldop;
imp += imp_saldov;
}
imp_saldo.swap_section();
imp_saldop.swap_section();
}
imp += imp_saldo;
imp += imp_saldop;
imp.normalize(sezione);
*str_imp = imp.valore().string();
@ -411,17 +428,9 @@ void TPrint_bilancio_cms_recordset::requery()
//solo i Costi(3) ed i Ricavi(4) devono essere considerati per la stampa
if (indbil == 3 || indbil == 4)
{
//solo i record con saldi non nulli devono essere considerati
const bool has_saldop = (saldana.get(SALDANA_SALDOP).as_real() +
saldana.get(SALDANA_SALDOV).as_real()) != ZERO;
const bool has_saldo = saldana.get(SALDANA_SALDO).as_real() != ZERO;
//se stima per Tempo -> usa solo saldop e saldov
//se stima per Costi -> se costi -> usa solo saldo
//se stima per Costi -> se ricavi -> usa solo saldop e saldov
if ((_tipostima == 'T' && has_saldop)||
(_tipostima == 'C' && indbil == 3 && has_saldo)||
(_tipostima == 'C' && indbil == 4 && has_saldop))
TImporto saldo, saldop;
const int flag = estrai_saldi(saldana, indbil, saldo, saldop);
if (flag != 0)
{
const TString& codcms = saldana.get(SALDANA_COMMESSA).as_string();
const TString& fase = saldana.get(SALDANA_FASE).as_string();