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:
parent
f22c1a7a52
commit
3489f6b40e
119
ca/ca3800.cpp
119
ca/ca3800.cpp
@ -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
|
||||
|
@ -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" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user