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:
parent
37236df11d
commit
62f1c903fa
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user