Patch level :4.0 nopatch

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :prosegue la stampa proiezioni cespiti;adesso comincia a stampare qualche campo in modo sensato;da rivedere il font del rep che e' troppo grande!


git-svn-id: svn://10.65.10.50/trunk@13994 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2006-05-17 18:01:10 +00:00
parent 13edd566c5
commit 7656644cbe
2 changed files with 318 additions and 131 deletions

View File

@ -4,11 +4,13 @@
#include <progind.h>
#include <recarray.h>
#include <recset.h>
#include <relation.h>
#include <reprint.h>
#include "../cg/cglib01.h"
#include "ammce.h"
#include "cespi.h"
#include "movce.h"
#include "salce.h"
#include "celib.h"
@ -101,51 +103,182 @@ void TStampa_proiez_ammo_recordset::set_filter(const TStampa_proiez_ammo_mask& m
{
if (dacat == acat)
query << "&&(CODTAB[7,8]==" << dacat << ")";
query << "&&(CODTAB[7,8]=='" << dacat << "')";
else
{
if (dacat.full())
query << "&&(CODTAB[7,8]>=" << dacat << ")";
query << "&&(CODTAB[7,8]>='" << dacat << "')";
if (acat.full())
query << "&&(CODTAB[7,8]<=" << acat << ")";
query << "&&(CODTAB[7,8]<='" << acat << "')";
}
}
query << "\nBY I0 CODTAB[7,8]";
set(query); //setta la nuova query nel report (che avrebbe solo USE CESPI)
set(query); //setta la nuova query nel report
}
////////////////////////////////////////////////////////
// REPORT
////////////////////////////////////////////////////////
class TStampa_proiez_ammo_rep : public TReport
{
int _anno;
//Clamoroso TAssocarray che conterra' tutti i valori dei record di CESPI utili al completamento..
//..della faticosa stampa..
TAssoc_array _cat;
protected:
virtual bool get_usr_val(const TString& name, TVariant& var) const;
void add_value (const int codcat, const char* field, const real& value);
real get_value (const int codcat, const char* field) const;
public:
void set_filter(const TStampa_proiez_ammo_mask& msk);
};
void TStampa_proiez_ammo_rep::add_value (const int codcat, const char* field, const real& value)
{
TString4 key;
key << codcat;
TAssoc_array* cat = (TAssoc_array*)_cat.objptr(key);
if (cat == NULL)
{
cat = new TAssoc_array;
_cat.add(key, cat);
}
real* val = (real*)cat->objptr(field);
if (val == NULL)
{
val = new real;
cat->add(field, val);
}
*val += value;
}
real TStampa_proiez_ammo_rep::get_value (const int codcat, const char* field) const
{
TString4 key;
key << codcat;
TAssoc_array* cat = (TAssoc_array*)_cat.objptr(key);
if (cat != NULL)
{
real* val = (real*)cat->objptr(field);
if (val != NULL)
return *val;
}
return ZERO;
}
void TStampa_proiez_ammo_rep::set_filter(const TStampa_proiez_ammo_mask& msk)
{
_anno = msk.get_int(F_ESERCIZIO);
((TStampa_proiez_ammo_recordset*) recordset())->set_filter(msk);
_cat.destroy();
//Si vuole creare una lista di tutti i cespiti che ricadono nei parametri gr/sp/cat della..
//..maschera di selezione, che verra' poi utilizzato per calcolare i valori del costo di tali..
//..cespiti riuniti nella categoria di appartenenza
TRelation rel_cespi(LF_CESPI);
TRectype darec_cespi(LF_CESPI), arec_cespi(LF_CESPI);
darec_cespi.put(CESPI_CODCGRA, msk.get(F_GRUPPO));
darec_cespi.put(CESPI_CODSPA, msk.get(F_SPECIE));
darec_cespi.put(CESPI_CODCAT, msk.get(F_FROM_CAT));
arec_cespi = darec_cespi;
arec_cespi.put(CESPI_CODCAT, msk.get(F_TO_CAT));
//Dalla lista cespiti deve risalire ai costi, agli ammortamenti e alle alienazioni;..
//..quindi servono i files collegati..
TLocalisamfile salce(LF_SALCE);
TLocalisamfile ammce(LF_AMMCE);
//ISAM query per trovare su MOVCE i movimenti relativi al cespite corrente nell'esercizio selezionato
TString query;
TEsercizi_contabili esc;
const TDate& dataini = esc[_anno].inizio();
const TDate& datafine = esc[_anno].fine();
query.format("USE MOVCE KEY 2 SELECT NUM(ANSI(DTMOV)>=%ld)&&NUM(ANSI(DTMOV)<=%ld)\nFROM IDCESPITE=#CESPITE\nTO IDCESPITE=#CESPITE",
dataini.date2ansi(), datafine.date2ansi());
TISAM_recordset movce(query);
//Ciclo principale per riempire _cat, assoc_array di assoc_array che sara' poi scandito in fase di creazione report
//Il metodo add_value e' quello che effettivamente aggiunge i valori a _cat
TCursor cur_cespi(&rel_cespi, "", 2, &darec_cespi, &arec_cespi);
const TRecnotype num = cur_cespi.items();
TProgind pi(num, "Calcolo proiezione ammortamenti...");
for (cur_cespi = 0; cur_cespi.pos() < num; ++cur_cespi)
{
pi.addstatus(1);
//Colonna COSTO
const TString& idcespite = rel_cespi.curr().get(CESPI_IDCESPITE);
const int codcat = rel_cespi.curr().get_int(CESPI_CODCAT);
salce.put(SALCE_IDCESPITE, idcespite);
salce.put(SALCE_CODES, _anno);
salce.put(SALCE_TPSALDO, 1);
if (salce.read() == NOERR)
add_value(codcat, SALCE_CSTO, salce.get_real(SALCE_CSTO));
//Colonna ALIENAZIONI
//cerca tutti i movimenti di vendita relativi al cespite corrente all'interno dell'esercizio..
//..selezionato sulla maschera;somma i loro importi in modo da ricavare l'importo complessivo..
//..di tutti
movce.set_var("#CESPITE", TVariant(idcespite)); //assegna il vero valore dell'idcespite alla query
for (TRecnotype i = 0; movce.move_to(i); i++)
{
const real vendita = movce.get(MOVCE_IMPVEN).as_real();
add_value(codcat, MOVCE_IMPVEN, vendita);
}
//Colonna FAMM (fondo ammortamento)
ammce.put(AMMCE_IDCESPITE, idcespite);
ammce.put(AMMCE_CODES, _anno);
ammce.put(AMMCE_TPSALDO, 1); //tiposaldo iniziale
ammce.put(AMMCE_TPAMM, 1); //tipoamm fiscale
if (ammce.read() == NOERR)
{
real famm;
famm += ammce.get_real(AMMCE_QNOR);
famm += ammce.get_real(AMMCE_QACC);
famm += ammce.get_real(AMMCE_QANT);
add_value(codcat, AMMCE_QNOR, famm);
}
//Colonna PERCAMM (aliquota ammortamento)
//Colonna QAMM
//Per questi ci vuole un tiposaldo diverso
ammce.put(AMMCE_TPSALDO, 2); //tiposaldo finale
if (ammce.read() == NOERR)
{
real percamm;
percamm += ammce.get_real(AMMCE_PNOR);
percamm += ammce.get_real(AMMCE_PACC);
percamm += ammce.get_real(AMMCE_PANT);
add_value(codcat, AMMCE_PNOR, percamm);
real qamm;
qamm += ammce.get_real(AMMCE_QNOR);
qamm += ammce.get_real(AMMCE_QACC);
qamm += ammce.get_real(AMMCE_QANT);
add_value(codcat, AMMCE_QACC, qamm);
}
} //for(cur_cespi...
}
//metodo per il calcolo dei campi da calcolare (ma va'!) nel report
bool TStampa_proiez_ammo_rep::get_usr_val(const TString& name, TVariant& var) const
{
const TRecordset& recset = *recordset();
const TString& idcespite = recset.get("IDCESPITE").as_string();
if (name == "#DESCAT") //categoria (descrizione della categoria corrente)
{
const int gruppo = recset.get("CODCGRA").as_int();
const TString& specie = recset.get("CODSPA").as_string();
const int categoria = recset.get("CODCAT").as_int();
const TRectype& rec_cac = ditta_cespiti().categoria(gruppo, specie, categoria);
var = rec_cac.get("S0");
return true;
}
const int codcat = atoi(recset.get("CODTAB").as_string().mid(6, 2));
if (name == "#ANNOES")
{
var.set(_anno);
@ -159,75 +292,29 @@ bool TStampa_proiez_ammo_rep::get_usr_val(const TString& name, TVariant& var) co
var.set(dal - 1L);
return true;
}
if (name == "#ALIENAZ") //movimenti di vendita
{
//cerca tutti i movimenti di vendita relativi al cespite corrente all'interno dell'esercizio..
//..selezionato sulla maschera;somma i loro importi in modo da ricavare l'importo complessivo..
//..di tutti
TString query;
TEsercizi_contabili esc;
const TDate& dataini = esc[_anno].inizio();
const TDate& datafine = esc[_anno].fine();
query.format("USE MOVCE KEY 2 SELECT NUM(ANSI(DTMOV)>=%ld)&&NUM(ANSI(DTMOV)<=%ld)\nFROM IDCESPITE=%s\nTO IDCESPITE=%s",
dataini.date2ansi(), datafine.date2ansi(), (const char*)idcespite, (const char*)idcespite);
TISAM_recordset isam(query);
real somma_vendite;
for (TRecnotype i = 0; isam.move_to(i); i++)
{
const real vendita = isam.get(MOVCE_IMPVEN).as_real();
somma_vendite += vendita;
}
var = somma_vendite;
return true;
}
if (name == "#COSTO") //costo
{
TToken_string key;
key = idcespite; //cespite
key.add(_anno); //esercizio
key.add(1); //tiposaldo finale
const TRectype& rec_salce = cache().get(LF_SALCE, key);
const real costo = rec_salce.get_real(SALCE_CSTO);
var = costo;
var = get_value(codcat, SALCE_CSTO);
return true;
}
if (name == "#PERCAMM") //percentuale ammortamento
if (name == "#ALIENAZ") //movimenti di vendita
{
TToken_string key;
key = idcespite;
key.add(_anno);
key.add(2); //tiposaldo finale
key.add(1); //tipoamm fiscale
const TRectype& rec_ammce = cache().get(LF_AMMCE, key);
const real percamm = rec_ammce.get_real(AMMCE_PNOR) + rec_ammce.get_real(AMMCE_PACC) + rec_ammce.get_real(AMMCE_PANT);
var = percamm;
return true;
}
if (name == "#QAMM") //fondo ammortamento esercizio corrente
{
TToken_string key;
key = idcespite;
key.add(_anno);
key.add(2); //tiposaldo finale
key.add(1); //tipoamm fiscale
const TRectype& rec_ammce = cache().get(LF_AMMCE, key);
const real quotamm = rec_ammce.get_real(AMMCE_QNOR) + rec_ammce.get_real(AMMCE_QACC) + rec_ammce.get_real(AMMCE_QANT);
var = quotamm;
var = get_value(codcat, MOVCE_IMPVEN);
return true;
}
if (name == "#FAMM") //fondo ammortamento alla fine dell'esercizio precedente
{
TToken_string key;
key = idcespite;
key.add(_anno);
key.add(1); //tiposaldo iniziale
key.add(1); //tipoamm fiscale
const TRectype& rec_ammce = cache().get(LF_AMMCE, key);
const real quotamm = rec_ammce.get_real(AMMCE_QNOR) + rec_ammce.get_real(AMMCE_QACC) + rec_ammce.get_real(AMMCE_QANT);
var = quotamm;
var = get_value(codcat, AMMCE_QNOR);
return true;
}
if (name == "#PERCAMM") //percentuale ammortamento
{
var = get_value(codcat, AMMCE_PNOR);
return true;
}
if (name == "#QAMM") //fondo ammortamento esercizio corrente
{
var = get_value(codcat, AMMCE_QACC);
return true;
}

View File

@ -1,11 +1,21 @@
<report name="ce4300a" lpi="6">
<description>Proiezione ammortamenti cespiti</description>
<font face="Courier New" size="8" />
<font face="Arial" size="8" />
<section type="Head">
<font face="Courier New" bold="1" size="8" />
</section>
<section type="Head" level="1" height="6">
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.101
MESSAGE RESET,F1.102
MESSAGE RESET,F1.103
MESSAGE RESET,F1.104
MESSAGE RESET,F1.105
MESSAGE RESET,F1.106
MESSAGE RESET,F1.107
MESSAGE RESET,F1.108
MESSAGE RESET,F1.109
MESSAGE RESET,F1.110</prescript>
<field border="1" radius="100" x="18" y="0.5" type="Testo" valign="center" align="center" shade_offset="25" width="130" height="2.5" text="PROIEZIONE AMMORTAMENTI CESPITI">
<font face="Courier New" bold="1" size="16" />
</field>
@ -23,107 +33,197 @@
</section>
<section repeat="1" type="Head" level="2">
<groupby>I0</groupby>
<font face="Courier New" bold="1" size="8" />
<font face="Arial" bold="1" size="8" />
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.101
MESSAGE RESET,F2.102
MESSAGE RESET,F2.103
MESSAGE RESET,F2.104
MESSAGE RESET,F2.105
MESSAGE RESET,F2.106
MESSAGE RESET,F2.107
MESSAGE RESET,F2.108
MESSAGE RESET,F2.109
MESSAGE RESET,F2.110</prescript>
<field x="1" type="Testo" width="12" pattern="1" text="TIPO BENI:">
<font face="Courier New" bold="1" size="9" />
</field>
<field x="13" type="Array" width="15" pattern="1">
<font face="Courier New" bold="1" size="9" />
<source>I0</source>
<postscript description="H2.0 POSTSCRIPT">MESSAGE COPY,F2.100</postscript>
<list>
<li Value="Materiali" Code="0" />
<li Value="Immateriali" Code="1" />
<li Value="Pluriennali" Code="2" />
</list>
</field>
<field x="30" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Valore al" />
<field x="57" y="1.25" type="Testo" align="right" width="13" height="0.75" pattern="1" text="Fondo amm. al" />
<field x="71" y="1.25" type="Testo" align="right" width="13" height="0.75" pattern="1" text="Val. residuo" />
<field x="92" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="105" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="118" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="131.1" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="144" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="157" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Residuo da" />
<field x="50" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Valore al" />
<field x="77" y="1.25" type="Testo" align="right" width="13" height="0.75" pattern="1" text="Fondo amm. al" />
<field x="91" y="1.25" type="Testo" align="right" width="13" height="0.75" pattern="1" text="Val. residuo" />
<field x="111.5" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="125" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="138" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="151.1" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="164" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Ammortamento" />
<field x="177" y="1.25" type="Testo" align="right" width="12" height="0.75" pattern="1" text="Residuo da" />
<field x="1" y="2" type="Testo" width="10" pattern="1" text="Categoria" />
<field x="30" y="2" type="Stringa" align="right" width="12" height="0.75" pattern="1">
<field x="50" y="2" type="Stringa" align="right" width="12" height="0.75" pattern="1">
<source>#FINESCPREC</source>
</field>
<field x="44" y="2" type="Testo" align="right" width="12" pattern="1" text="Alienazioni" />
<field x="58" y="2" type="Data" align="right" width="12" height="0.75" pattern="1">
<field x="64" y="2" type="Testo" align="right" width="12" pattern="1" text="Alienazioni" />
<field x="78" y="2" type="Data" align="right" width="12" height="0.75" pattern="1">
<source>#FINESCPREC</source>
</field>
<field x="72" y="2" type="Testo" align="right" width="12" height="0.75" pattern="1" text="da ammortizz" />
<field x="86" y="2" type="Testo" align="right" width="5" pattern="1" text="Aliq." />
<field x="95" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<field x="92" y="2" type="Testo" align="right" width="12" height="0.75" pattern="1" text="da ammortizz" />
<field x="106" y="2" type="Testo" align="right" width="5" pattern="1" text="Aliq." />
<field x="115" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<source>#ANNOES</source>
</field>
<field x="108" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<field x="128" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<source>#ANNOES+1</source>
</field>
<field x="121" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<field x="141" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<source>#ANNOES+2</source>
</field>
<field x="134" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<field x="154" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<source>#ANNOES+3</source>
</field>
<field x="147" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<field x="167" y="2" type="Numero" align="right" width="6" height="0.75" pattern="1">
<source>#ANNOES+4</source>
</field>
<field x="157" y="2" type="Testo" align="right" width="12" height="0.75" pattern="1" text="ammortizzare" />
<field border="1" x="1" y="3" type="Linea" width="172" height="0" pattern="1" />
<field x="177" y="2" type="Testo" align="right" width="12" height="0.75" pattern="1" text="ammortizzare" />
<field border="1" x="1" y="3" type="Linea" width="192" height="0" pattern="1" />
</section>
<section type="Body" />
<section type="Body" level="1">
<field x="1" type="Stringa" width="2" pattern="1">
<source>CODTAB[7,8]</source>
</field>
<field x="4" type="Stringa" dynamic_height="1" width="25" height="2" pattern="1">
<field x="4" type="Stringa" dynamic_height="1" width="45" height="2" pattern="1">
<source>S0</source>
</field>
<field x="87" type="Numero" align="right" width="4" pattern="1">
<field x="107" type="Numero" align="right" width="4" pattern="1">
<source>#PERCAMM</source>
</field>
<field x="92" type="Numero" align="right" width="12" pattern="1">
<source>#QAMM</source>
</field>
<field x="105" type="Numero" align="right" width="12" pattern="1">
<source>#QAMM</source>
</field>
<field x="118" type="Numero" align="right" width="12" pattern="1">
<source>#QAMM</source>
</field>
<field x="131" type="Numero" align="right" width="12" pattern="1">
<source>#QAMM</source>
</field>
<field x="144" type="Numero" align="right" width="12" pattern="1">
<source>#QAMM</source>
</field>
<field x="157" type="Numero" align="right" width="12" pattern="1">
<source>#RESAMM</source>
</field>
<field x="30" type="Valuta" align="right" width="12" id="101" pattern="1" text="#########,@@">
<field x="50" type="Valuta" align="right" width="12" id="101" pattern="1" text="###.###.###,@@">
<source>#COSTO</source>
<postscript description="B1.101 POSTSCRIPT">MESSAGE ADD,F2.101</postscript>
</field>
<field x="44" type="Valuta" align="right" width="12" id="102" pattern="1" text="#########,@@">
<field x="64" type="Valuta" align="right" width="12" id="102" pattern="1" text="###.###.###,@@">
<source>#ALIENAZ</source>
<postscript description="B1.102 POSTSCRIPT">MESSAGE ADD,F2.102</postscript>
</field>
<field x="58" type="Numero" align="right" width="12" id="103" pattern="1">
<field x="78" type="Valuta" align="right" width="12" id="103" pattern="1" text="###.###.###,@@">
<source>#FAMM</source>
<postscript description="B1.103 POSTSCRIPT">MESSAGE ADD,F2.103</postscript>
</field>
<field x="72" type="Valuta" align="right" width="12" id="104" pattern="1" text="###.###.###,@@">
<field x="92" type="Valuta" align="right" width="12" id="104" pattern="1" text="###.###.###,@@">
<source>#101-#102-#103</source>
</field>
<field x="112" type="Numero" align="right" width="12" id="105" pattern="1">
<source>#QAMM</source>
<postscript description="B1.105 POSTSCRIPT">MESSAGE ADD,F2.105</postscript>
</field>
<field x="125" type="Numero" align="right" width="12" id="106" pattern="1">
<postscript description="B1.106 POSTSCRIPT">MESSAGE ADD,F2.106</postscript>
</field>
<field x="138" type="Numero" align="right" width="12" id="107" pattern="1">
<postscript description="B1.107 POSTSCRIPT">MESSAGE ADD,F2.107</postscript>
</field>
<field x="151" type="Numero" align="right" width="12" id="108" pattern="1">
<postscript description="B1.108 POSTSCRIPT">MESSAGE ADD,F2.108</postscript>
</field>
<field x="164" type="Numero" align="right" width="12" id="109" pattern="1">
<postscript description="B1.109 POSTSCRIPT">MESSAGE ADD,F2.109</postscript>
</field>
<field x="177" type="Numero" align="right" width="12" id="110" pattern="1">
<postscript description="B1.110 POSTSCRIPT">MESSAGE ADD,F2.110</postscript>
</field>
</section>
<section type="Head" level="11" />
<section type="Body" level="11">
<sql>USE CESPI KEY 2</sql>
</section>
<section type="Foot" level="11" />
<section type="Foot" />
<section type="Foot" level="1" />
<section type="Foot" level="2" height="1">
<section type="Foot" level="1">
<font face="Arial" bold="1" size="8" />
<field border="2" x="1" y="1" type="Linea" width="196" height="0" pattern="1" />
<field x="1" y="1.5" type="Testo" align="center" bg_color="#C0C0C0" width="47" text="TOTALE GENERALE">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="104" y="1.5" type="Testo" bg_color="#C0C0C0" width="7" />
<field x="48" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="14" id="101" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="62" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="14" id="102" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="76" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="14" id="103" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="90" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="14" id="104" text="###.###.###,@@">
<source>#101-#102-#103</source>
</field>
<field x="111" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="13" id="105" text="###.###.###,@@">
<postscript description="F1.105 POSTSCRIPT">MESSAGE ADD,F1.105</postscript>
</field>
<field x="124" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="13" id="106" text="###.###.###,@@">
<postscript description="F1.106 POSTSCRIPT">MESSAGE ADD,F1.106</postscript>
</field>
<field x="137" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="13" id="107" text="###.###.###,@@">
<postscript description="F1.107 POSTSCRIPT">MESSAGE ADD,F1.107</postscript>
</field>
<field x="150" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="13" id="108" text="###.###.###,@@">
<postscript description="F1.108 POSTSCRIPT">MESSAGE ADD,F1.108</postscript>
</field>
<field x="163" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="13" id="109" text="###.###.###,@@">
<postscript description="F1.109 POSTSCRIPT">MESSAGE ADD,F1.109</postscript>
</field>
<field x="176" y="1.5" type="Valuta" align="right" bg_color="#C0C0C0" width="13" id="110" text="###.###.###,@@">
<postscript description="F1.110 POSTSCRIPT">MESSAGE ADD,F1.110</postscript>
</field>
</section>
<section type="Foot" level="2" height="4">
<font italic="1" face="Arial" bold="1" size="8" />
<field border="1" x="1" y="0.5" type="Linea" width="196" height="0" pattern="1" />
<field x="10" y="1" type="Testo" width="12" pattern="1" text="TOTALE AMM">
<font italic="1" face="Courier New" bold="1" size="9" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="196" height="0" pattern="1" />
<field x="22" y="1" type="Array" width="15" id="100" pattern="1">
<font face="Courier New" bold="1" size="9" />
<list>
<li Value="Materiali" Code="0" />
<li Value="Immateriali" Code="1" />
<li Value="Pluriennali" Code="2" />
</list>
</field>
<field x="50" y="1" type="Valuta" align="right" width="12" id="101" pattern="1" text="###.###.###,@@">
<postscript description="F2.101 POSTSCRIPT">MESSAGE ADD,F1.101</postscript>
</field>
<field x="64" y="1" type="Valuta" align="right" width="12" id="102" pattern="1" text="###.###.###,@@">
<postscript description="F2.102 POSTSCRIPT">MESSAGE ADD,F1.102</postscript>
</field>
<field x="78" y="1" type="Valuta" align="right" width="12" id="103" pattern="1" text="###.###.###,@@">
<postscript description="F2.103 POSTSCRIPT">MESSAGE ADD,F1.103</postscript>
</field>
<field x="92" y="1" type="Valuta" align="right" width="12" id="104" pattern="1" text="###.###.###,@@">
<source>#101-#102-#103</source>
</field>
<field x="112" y="1" type="Numero" align="right" width="12" id="105" pattern="1">
<postscript description="F2.105 POSTSCRIPT">MESSAGE ADD,F1.105</postscript>
</field>
<field x="125" y="1" type="Numero" align="right" width="12" id="106" pattern="1">
<postscript description="F2.106 POSTSCRIPT">MESSAGE ADD,F1.106</postscript>
</field>
<field x="138" y="1" type="Numero" align="right" width="12" id="107" pattern="1">
<postscript description="F2.107 POSTSCRIPT">MESSAGE ADD,F1.107</postscript>
</field>
<field x="151" y="1" type="Numero" align="right" width="12" id="108" pattern="1">
<postscript description="F2.108 POSTSCRIPT">MESSAGE ADD,F1.108</postscript>
</field>
<field x="164" y="1" type="Numero" align="right" width="12" id="109" pattern="1">
<postscript description="F2.109 POSTSCRIPT">MESSAGE ADD,F1.109</postscript>
</field>
<field x="177" y="1" type="Numero" align="right" width="12" id="110" pattern="1">
<postscript description="F2.110 POSTSCRIPT">MESSAGE ADD,F1.110</postscript>
</field>
</section>
<sql>USE %CAC
BY I0 CODTAB[7,8]</sql>