Patch level :4.0 486

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :ulteriori features del report ce3800


git-svn-id: svn://10.65.10.50/trunk@14310 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2006-09-11 15:44:16 +00:00
parent f22c1a7a52
commit 3489f6b40e
2 changed files with 95 additions and 42 deletions

View File

@ -138,6 +138,9 @@ TPrint_bilancio_cms_mask::TPrint_bilancio_cms_mask()
///////////////////////////////////////////////////////////////
// CACHE INDICATORI BILANCIO
///////////////////////////////////////////////////////////////
const TFixed_string CMS_DEL_CAZZO("@@@@@@@@@@@@@@@@@@@@");
class TIndbil_cache : public TCache
{
bool _usepdcc;
@ -258,8 +261,11 @@ protected:
virtual const TVariant& get(const char* column_name) const;
void parse_bill(const TString& bill, TString& gruppo, TString& conto) const;
void aggiorna_importo(TAssoc_array* riga_array, const TString& livello,
const int indbil, const TRecordset& saldana) 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,
const int indice, const TString& codcms, const TString& fase,
const TString& descrizione, const real& avanzamento);
public:
virtual void set_filter(const TPrint_bilancio_cms_mask& msk);
@ -290,14 +296,14 @@ void TPrint_bilancio_cms_recordset::parse_bill(const TString& bill, TString& gru
conto = bill.mid(prefix_len, gruppo_len + conto_len);
}
void TPrint_bilancio_cms_recordset::aggiorna_importo(TAssoc_array* riga_array,
const TString& livello, const int indbil, const TRecordset& saldana) const
void TPrint_bilancio_cms_recordset::aggiorna_importo(TAssoc_array& riga_array,
const TString& livello, const int indbil, const TRecordset& saldana, const bool inverti) const
{
TString* str_imp = (TString*)riga_array->objptr(livello);
TString* str_imp = (TString*)riga_array.objptr(livello);
if (str_imp == NULL)
{
str_imp = new TString;
riga_array->add(livello, str_imp);
riga_array.add(livello, str_imp);
}
//dare o avere?
@ -309,13 +315,51 @@ void TPrint_bilancio_cms_recordset::aggiorna_importo(TAssoc_array* riga_array,
const TImporto imp_saldov(saldana.get(SALDANA_SEZIONEV).as_string()[0],
saldana.get(SALDANA_SALDOV).as_real());
imp += imp_saldop;
imp += imp_saldov;
if (inverti)
{
imp -= imp_saldop;
imp -= imp_saldov;
}
else
{
imp += imp_saldop;
imp += imp_saldov;
}
imp.normalize(sezione);
*str_imp = imp.valore().string();
}
TAssoc_array& TPrint_bilancio_cms_recordset::get_row(TAssoc_array& cms, const char* chiave,
const int indice, const TString& codcms, const TString& fase,
const TString& descrizione, const real& avanzamento)
{
//cerca se la commessa (e l'eventuale fase) esistono gia' nell'assocarray delle commesse
TAssoc_array* riga_array = (TAssoc_array*)cms.objptr(chiave);
//se non esiste la crea!
if (riga_array == NULL)
{
riga_array = new TAssoc_array;
TString4 str_indice; //l'indice va stringato per l'assoc_array
str_indice << indice;
riga_array->add("LEVEL", str_indice);
riga_array->add("CODCMS", codcms);
riga_array->add("FASE", fase);
riga_array->add("DESCRIZ", descrizione);
const TString str_avanz = avanzamento.string();
riga_array->add("AVANZAMENTO", str_avanz);
//aggiunge la riga all'array-ino
cms.add(chiave, riga_array);
}
return *riga_array;
}
void TPrint_bilancio_cms_recordset::requery()
{
//prende le date di inizio e fine dell'eserizio selezionato sulla maschera
@ -394,33 +438,34 @@ void TPrint_bilancio_cms_recordset::requery()
if (_use_fasi)
chiave << '|' << fase;
//cerca se la commessa (e l'eventuale fase) esistono gia' nell'assocarray delle commesse
TAssoc_array* riga_array = (TAssoc_array*)cms[indice].objptr(chiave);
//se non esiste la crea!
if (riga_array == NULL)
{
riga_array = new TAssoc_array;
TString4 str_indice; //l'indice va stringato per l'assoc_array
str_indice << indice;
riga_array->add("LEVEL", str_indice);
riga_array->add("CODCMS", codcms);
riga_array->add("FASE", fase);
riga_array->add("DESCRIZ", rec_commesse.get(COMMESSE_DESCRIZ));
const TString str_avanz = avanzamento.string();
riga_array->add("AVANZAMENTO", str_avanz);
//aggiunge la riga all'array-ino
cms[indice].add(chiave, riga_array);
}
//riempie le righe degli array da mandare poi in stampa
//dapprima le righe normali..
TAssoc_array& riga_array = get_row(cms[indice], chiave, indice, codcms, fase,
rec_commesse.get(COMMESSE_DESCRIZ), avanzamento);
//aggiunge gli importi e normalizza
TString80 gruppo, conto;
parse_bill(conto_anale, gruppo, conto);
aggiorna_importo(riga_array, gruppo, indbil, saldana);
aggiorna_importo(riga_array, conto, indbil, saldana);
//..poi le righe speciali,che esistono solo se la commessa e' iniziata prima dell'anno
//selezionato,quindi se l'indice e' 0 o 2
if (indice %2 == 0)
{
//aggiorna il record speciale con la somma dei saldi con anno anteriore a quello..
//..selezionato sulla maschera (CRPA request)
const int anno = saldana.get(SALDANA_ANNO).as_int();
if (anno < _anno)
{
TString cazzo_cod; cazzo_cod.format("DETR_%02d", _anno - 1);
TString cazzo_descr = "DETRAZIONE PER COMPETENZA ";
cazzo_descr << (_anno - 1);
TAssoc_array& riga_array = get_row(cms[indice], CMS_DEL_CAZZO, indice, cazzo_cod,
EMPTY_STRING, cazzo_descr, CENTO);
aggiorna_importo(riga_array, gruppo, indbil, saldana, true);
aggiorna_importo(riga_array, conto, indbil, saldana, true);
}
} //if(indice...
} //if (datafine >= datainiesc &&...
} //if (saldop != ZERO..
@ -432,9 +477,19 @@ void TPrint_bilancio_cms_recordset::requery()
for (int i = 0; i < 4; i++)
{
TAssoc_array& a = cms[i];
TObject* cazzo_cms = NULL;
FOR_EACH_ASSOC_OBJECT(a, h, k, r)
_righe.add(h->remove_obj()); // Copia nella destinazione la riga corrente e la toglie dall'originale
}
{
TObject* obj = h->remove_obj();
if (strcmp(k, CMS_DEL_CAZZO) == 0)
cazzo_cms = obj;
else
_righe.add(obj); // Copia nella destinazione la riga corrente e la toglie dall'originale
}
if (cazzo_cms != NULL)
_righe.add(cazzo_cms);
} //for(int...
}
const TVariant& TPrint_bilancio_cms_recordset::get(unsigned int column) const

View File

@ -125,7 +125,6 @@ MESSAGE RESET,F3.108</prescript>
<source>CODCMS</source>
</field>
<field x="21" type="Stringa" dynamic_height="1" width="22" height="2" pattern="1">
<font face="Arial Narrow" size="8" />
<source>DESCRIZ</source>
</field>
<field x="43" type="Stringa" width="10" pattern="1">
@ -205,38 +204,38 @@ MESSAGE RESET,F3.108</prescript>
</field>
<field y="1" type="Numero" hidden="1" align="right" width="1" id="101" pattern="1" />
<field x="58" y="1" type="Valuta" align="right" width="13" id="101" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" size="8" />
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.101 POSTSCRIPT">MESSAGE ADD,F1.101</postscript>
</field>
<field x="52" y="1" type="Numero" hidden="1" align="right" width="4" id="102" pattern="1">
<postscript description="F2.102 POSTSCRIPT">MESSAGE COPY,F2.101</postscript>
</field>
<field x="71" y="1" type="Valuta" align="right" width="13" id="102" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" size="8" />
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.102 POSTSCRIPT">MESSAGE ADD,F1.102</postscript>
</field>
<field x="84" y="1" type="Valuta" align="right" width="13" id="103" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" size="8" />
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.103 POSTSCRIPT">MESSAGE ADD,F1.103</postscript>
</field>
<field x="97" y="1" type="Valuta" align="right" width="13" id="104" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" size="8" />
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.104 POSTSCRIPT">MESSAGE ADD,F1.104</postscript>
</field>
<field x="110" y="1" type="Valuta" align="right" width="13" id="105" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" size="8" />
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.105 POSTSCRIPT">MESSAGE ADD,F1.105</postscript>
</field>
<field x="123" y="1" type="Valuta" align="right" width="13" id="106" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" size="8" />
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.106 POSTSCRIPT">MESSAGE ADD,F1.106</postscript>
</field>
<field x="136" y="1" type="Valuta" align="right" width="13" id="107" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" size="8" />
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.107 POSTSCRIPT">MESSAGE ADD,F1.107</postscript>
</field>
<field x="149" y="1" type="Valuta" align="right" width="13" id="108" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" size="8" />
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.108 POSTSCRIPT">MESSAGE ADD,F1.108</postscript>
</field>
</section>
@ -244,7 +243,6 @@ MESSAGE RESET,F3.108</prescript>
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<field border="1" x="2" y="0.25" type="Linea" width="169" height="0" pattern="1" />
<field x="2" y="0.5" type="Array" bg_color="#C0C0C0" width="50" pattern="1">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<source>H3.101</source>
<list>
<li Value="TOTALI Commesse avviate in esercizi precedenti" Code="0" />