Patch level :4.0 /10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :conai in corso d'opera


git-svn-id: svn://10.65.10.50/trunk@16220 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2008-02-26 15:40:14 +00:00
parent 294db713c8
commit db0ffb58f1
2 changed files with 329 additions and 65 deletions

View File

@ -81,8 +81,12 @@ class TDichiarazione_CONAI : public TSkeleton_application
protected:
void elabora(const TMask& mask) const;
void scrivi_csv(const TRectype& riga_generata, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie) const;
void scrivi_csv(const TRectype& prima_riga, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie, const TString& conai_codart) const;
void scrivi_csv_doc_con_riga_generata(TDocumento& doc, const int n_riga_generata,
TDichiarazione_CONAI_csv_recordset& csv, const int conai_specie) const;
void scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie, const TString& conai_codart) const;
public:
virtual bool create();
@ -91,22 +95,18 @@ public:
};
void TDichiarazione_CONAI::scrivi_csv(const TRectype& riga_generata, TDichiarazione_CONAI_csv_recordset& csv,
//riempie recordset con le righe CONAI del documento che contiene una riga generata CONAI
void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, const int n_riga_generata, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie) const
{
//crea la testata delle righedoc per poter fare vari calcoli (e intanto il tempo se ne va...)
const int anno = riga_generata.get_int(RDOC_ANNO);
const TString4 codnum = riga_generata.get(RDOC_CODNUM);
const long numdoc = riga_generata.get_long(RDOC_NDOC);
//prende dalla riga i dati che gli servono per fare vari calcoli
const TRiga_documento& riga_generata = doc[n_riga_generata];
const TString80 conai_codart = riga_generata.get(RDOC_CODART); //questo ci serve per trovare le righe conai
const real totale_qta_assogg = riga_generata.get_real(RDOC_QTA); //questo ci serve per le quantita' assoggetate o no
TGeneric_distrib agip(totale_qta_assogg, 5); //distrib per ridistribuire le % dei quantitativi assoggetati
TArray qta_AB_conai; //array con le quantita' conai totali (A+B)
//documento della riga generata, e quindi anche di tutte le altre righe conai
TDocumento doc('D', anno, codnum, numdoc);
//scopre se il doc e' una NAC
const bool is_nac = doc.is_nota_credito();
@ -129,9 +129,8 @@ void TDichiarazione_CONAI::scrivi_csv(const TRectype& riga_generata, TDichiarazi
//servono SOLO le righe CONAI!!!!!
const TString& codagg1 = rdoc.get(RDOC_CODAGG1);
const TString& codagg2 = rdoc.get(RDOC_CODAGG2);
if (codagg1 == conai_codart && codagg2.full())
if (codagg1 == conai_codart)
{
//quantita' totale conai (A + B) sul report
const real n = rdoc.calc_conai_qta(conai_specie);
@ -149,10 +148,17 @@ void TDichiarazione_CONAI::scrivi_csv(const TRectype& riga_generata, TDichiarazi
//servono SOLO le righe CONAI!!!!!
const TString& codagg1 = rdoc.get(RDOC_CODAGG1);
const TString& codagg2 = rdoc.get(RDOC_CODAGG2);
if (codagg1 == conai_codart && codagg2.full())
if (codagg1 == conai_codart)
{
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica
TString4 codagg2 = rdoc.get(RDOC_CODAGG2);
if (codagg2.empty())
codagg2 = codagg1;
//puo' capitare che la sottocategoria sia stata troncata alla categoria
if (codagg2 == codagg1)
codagg2 << "99";
//creazione di un nuovo record da esportare
csv.new_rec("");
@ -174,7 +180,7 @@ void TDichiarazione_CONAI::scrivi_csv(const TRectype& riga_generata, TDichiarazi
//prezzo
const real prezzo = riga_generata.get_real(RDOC_PREZZO); //va preso dalla riga generata
csv.set(10, TVariant(prezzo));
csv.set(10, TVariant(prezzo));
//um conai
const TString4 umqta = cache().get("SPP", conai_codart, "S7"); //unita' di misura dalla tabella SPP
@ -184,25 +190,164 @@ void TDichiarazione_CONAI::scrivi_csv(const TRectype& riga_generata, TDichiarazi
real qta_tot_conai = (real&)qta_AB_conai[i];
if (is_nac)
qta_tot_conai = -qta_tot_conai;
csv.set(12, TVariant(qta_tot_conai));
csv.set(15, TVariant(qta_tot_conai));
//percentuale di esenzione conai al 100%?
const real perc = rdoc.get_real(RDOC_QTAGG2);
//quantita' assoggettata (B) sul report (le NAC hanno segno rovesciato)
real qta_assoggettata_conai = agip.get();
if (perc == CENTO)
qta_assoggettata_conai = ZERO;
if (is_nac)
qta_assoggettata_conai = -qta_assoggettata_conai;
csv.set(13, TVariant(qta_assoggettata_conai));
//quantita' esente conai (A) sul report
const real qta_esente_conai = qta_tot_conai - qta_assoggettata_conai;
csv.set(14, TVariant(qta_esente_conai));
csv.set(12, TVariant(qta_esente_conai));
//valore totale contributo (BxC) sul report
const real totale_contrib_conai = qta_assoggettata_conai * prezzo;
csv.set(15, TVariant(totale_contrib_conai));
const TCurrency totale_contrib_conai = qta_assoggettata_conai * prezzo;
csv.set(14, TVariant(totale_contrib_conai.get_num()));
}
}
}
//riempie recordset con le righe CONAI del documento che NON ha una riga generata CONAI;trattasi di documenti..
//..farlocchi costruiti ad arte per correggere le vaccate dei rompiscatolifici
void TDichiarazione_CONAI::scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie, const TString& conai_codart) const
{
//scopre se il doc e' una NAC
const bool is_nac = doc.is_nota_credito();
//prende la data del documento
const TDate& datadoc = doc.data();
//prende il cliente ed i suoi dati
TCli_for clifo = doc.clifor();
const long clifo_cod = clifo.codice();
TString16 clifo_cofi = clifo.get(CLI_COFI);
if (clifo_cofi.empty())
clifo_cofi = clifo.get(CLI_PAIV);
const int nrighe = doc.rows();
//ciclo di riempimento delle righe csv;scandisce solo l'array con i valori compilati
for (int i = 1; i <= nrighe; i++)
{
const TRiga_documento& rdoc = doc[i];
//servono SOLO le righe CONAI!!!!!
const TString& codagg1 = rdoc.get(RDOC_CODAGG1);
if (codagg1 == conai_codart)
{
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica
TString4 codagg2 = rdoc.get(RDOC_CODAGG2);
if (codagg2.empty())
codagg2 = codagg1;
//puo' capitare che la sottocategoria sia stata troncata alla categoria
if (codagg2 == codagg1)
codagg2 << "99";
//creazione di un nuovo record da esportare
csv.new_rec("");
//riempie i campi del record del csv
//codnum-anno-ndoc-datadoc-codcli-cofi-nriga-codagg1-codagg2-prezzo-um-conai(AB)-conai(B)-conai(A)
//parte chiave della riga
csv.set(0, TVariant(rdoc.get(RDOC_CODNUM)));
csv.set(1, TVariant(rdoc.get(RDOC_ANNO)));
csv.set(2, TVariant(rdoc.get(RDOC_NDOC)));
csv.set(3, TVariant(datadoc));
csv.set(4, TVariant(clifo_cod));
csv.set(5, TVariant(clifo_cofi));
csv.set(6, TVariant(rdoc.get(RDOC_CODART)));
csv.set(7, TVariant(rdoc.get(RDOC_NRIGA)));
//codici conai
csv.set(8, TVariant(codagg1)); //codice materiale conai (es. carta, legno...)
csv.set(9, TVariant(codagg2)); //sottocodice materiale (es. carta imballo, busta...)
//prezzo
const real prezzo = rdoc.get_real(RDOC_PREZZO); //va preso dalla riga stessa
csv.set(10, TVariant(prezzo));
//um conai
const TString4 umqta = cache().get("SPP", conai_codart, "S7"); //unita' di misura dalla tabella SPP
csv.set(11, TVariant(umqta));
//quantita' totale conai (A + B) sul report (le NAC hanno segno rovesciato)
real qta_tot_conai = rdoc.get_real(RDOC_QTA);
if (is_nac)
qta_tot_conai = -qta_tot_conai;
csv.set(15, TVariant(qta_tot_conai));
//percentuale di esenzione conai al 100%?
const real perc = rdoc.get_real(RDOC_QTAGG2);
//quantita' assoggettata (B) sul report (le NAC hanno segno rovesciato)
real qta_assoggettata_conai = qta_tot_conai;
if (perc == CENTO)
qta_assoggettata_conai = ZERO;
if (is_nac)
qta_assoggettata_conai = -qta_assoggettata_conai;
csv.set(13, TVariant(qta_assoggettata_conai));
//quantita' esente conai (A) sul report
const real qta_esente_conai = qta_tot_conai - qta_assoggettata_conai; //deve essere sempre ZERO!
csv.set(12, TVariant(qta_esente_conai));
//valore totale contributo (BxC) sul report
const TCurrency totale_contrib_conai = qta_assoggettata_conai * prezzo;
csv.set(14, TVariant(totale_contrib_conai.get_num()));
}
}
}
//crea il documento che contiene la riga che gli viene passata,cerca la riga generata ed in base al risultato della ricerca chiama..
//..il metodo adatto
void TDichiarazione_CONAI::scrivi_csv(const TRectype& prima_riga, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie, const TString& conai_codart) const
{
//crea la testata delle righedoc per poter fare vari calcoli (e intanto il tempo se ne va...)
const int anno = prima_riga.get_int(RDOC_ANNO);
const TString4 codnum = prima_riga.get(RDOC_CODNUM);
const long numdoc = prima_riga.get_long(RDOC_NDOC);
//documento della prima riga e quindi anche di tutte le altre righe conai
TDocumento doc('D', anno, codnum, numdoc);
//cerca la riga generata (in tal caso e' un documento con righe CONAI giuste)
const int nrighe = doc.rows();
int n_riga_generata = 0;
for (int j = 1; j <= nrighe; j++)
{
const TRiga_documento& rdoc = doc[j];
//c'è la riga generata con codart di tipo conai (sia automatica che manuale)?
if (rdoc.get(RDOC_CODART) == conai_codart && (rdoc.is_spese() || rdoc.is_generata()))
{
n_riga_generata = j;
break;
}
}
if (n_riga_generata > 0)
scrivi_csv_doc_con_riga_generata(doc, n_riga_generata, csv, conai_specie);
else
scrivi_csv_doc_speciale(doc, csv, conai_specie, conai_codart);
}
static int compare_csv_rows_specie(const TObject** o1, const TObject** o2)
{
TToken_string& s1 = *(TToken_string*)*o1;
@ -329,11 +474,17 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
//cerca le righe con numerazione e tipo indicate nello sheet;prende sia le righe che generano CONAI (per avere il codice conai,..
//..le quantita' etc) e le righe generate da CONAI (per avere i prezzi)
TString query;
query << "USE RDOC KEY 5\n";
/* query << "USE RDOC KEY 5\n";
query << "SELECT (NUM(ANSI(33.DATADOC))>=NUM(ANSI(#DADATA)))&&(NUM(ANSI(33.DATADOC))<=NUM(ANSI(#ADATA)))&&(33.TIPODOC=#TIPODOC)&&(GENERATA=\"X\")\n";
query << "JOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC\n";
query << "FROM CODART=#CODART ANNO=#ANNO CODNUM=#CODNUM PROVV=\"D\"\n";
query << "TO CODART=#CODART ANNO=#ANNO CODNUM=#CODNUM PROVV=\"D\"\n";
query << "TO CODART=#CODART ANNO=#ANNO CODNUM=#CODNUM PROVV=\"D\"\n";*/
query << "USE RDOC KEY 1\n";
query << "SELECT (NUM(ANSI(33.DATADOC))>=NUM(ANSI(#DADATA)))&&(NUM(ANSI(33.DATADOC))<=NUM(ANSI(#ADATA)))&&(33.TIPODOC=#TIPODOC)&&(CODAGG1=#CODART)\n";
query << "JOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC\n";
query << "FROM CODNUM=#CODNUM ANNO=#ANNO PROVV=\"D\"\n";
query << "TO CODNUM=#CODNUM ANNO=#ANNO PROVV=\"D\"\n";
//crea il recordset principale relativo alle righe originali CONAI ed assegna subito i valori delle variabili che restano costanti al cambio..
//..numerazione/tipo: sono le date ed il codice articolo
@ -366,16 +517,23 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
//E crea pure la progind..
TProgind pi(tot_items, TR("Generazione righe..."), true, true);
long last_ndoc = 0;
//Scansione del recordset trovato
for (bool ok = rdoc.move_first(); ok; ok = rdoc.move_next())
{
if (!pi.addstatus(1))
break;
scrivi_csv(rdoc.cursor()->curr(), *csv, specie_conai);
const long ndoc = rdoc.get(RDOC_NDOC).as_int();
if (ndoc != last_ndoc)
{
scrivi_csv(rdoc.cursor()->curr(), *csv, specie_conai, codart.as_string());
last_ndoc = ndoc;
}
} //for(bool ok = rdoc.move_first(..
} //FOR_EACH...
//riordinamento del file secondo:
@ -390,8 +548,31 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
//se richiesto il file in formato excel...
if (mask.get_bool(F_EXCEL))
{
//crea la riga con le intestazioni dei campi e la mette all'inizio
csv->insert_rec(0);
//riempie i campi del primo record del csv in modo da avere l'intestazione
csv->set(0, "CODNUM");
csv->set(1, "ANNO");
csv->set(2, "NDOC");
csv->set(3, "DATADOC");
csv->set(4, "CODCLI");
csv->set(5, "COFICLI");
csv->set(6, "CODART");
csv->set(7, "NRIGA");
csv->set(8, "CLASSE");
csv->set(9, "SOTTOCL");
csv->set(10, "PREZZO");
csv->set(11, "UM");
csv->set(12, "CONAI A");
csv->set(13, "CONAI B");
csv->set(14, "CONAI BxC");
csv->set(15, "CONAI A+B");
const TString path = mask.get(F_PATH);
csv->save_as(path, fmt_text);
//accoppa la riga con le intestazioni dei campi
csv->destroy(0);
/*#ifdef DBG
xvt_sys_goto_url(path, "open");

View File

@ -66,10 +66,19 @@
+
+
#THIS !
</prescript>
</field>
<field x="62" type="Stringa" hidden="1" width="6" id="50" pattern="1">
<prescript description="B1.50 PRESCRIPT">"#F0."
#10 @
500
+
+
#THIS !
</prescript>
</field>
<field x="10" type="Numero" hidden="1" align="right" width="10" id="101" pattern="1">
<source>O</source>
<source>M</source>
<prescript description="B1.101 PRESCRIPT">#THIS @
#20 @
+!</prescript>
@ -83,12 +92,19 @@
<postscript description="B1.102 POSTSCRIPT">MESSAGE ADD,F0.2000</postscript>
</field>
<field x="50" type="Valuta" hidden="1" align="right" width="10" id="103" pattern="1" text="#########,@@">
<source>P</source>
<source>O</source>
<prescript description="B1.103 PRESCRIPT">#THIS @
#40 @
+!</prescript>
<postscript description="B1.103 POSTSCRIPT">MESSAGE ADD,F0.3000</postscript>
</field>
<field x="70" type="Numero" hidden="1" align="right" width="10" id="104" pattern="1" hide_zero="1">
<source>P</source>
<prescript description="B1.104 PRESCRIPT">#THIS @
#50 @
+!</prescript>
<postscript description="B1.104 POSTSCRIPT">MESSAGE ADD,F0.5000</postscript>
</field>
</section>
<section y="26" type="Foot">
<font face="Courier New" size="8" />
@ -99,121 +115,121 @@
<field x="29.25" y="0.25" type="Numero" align="right" width="10" id="110" pattern="1">
<prescript description="F0.110 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="1.25" type="Numero" align="right" width="10" id="120" pattern="1">
<prescript description="F0.120 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="2.25" type="Numero" align="right" width="10" id="130" pattern="1">
<prescript description="F0.130 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="3.25" type="Numero" align="right" width="10" id="140" pattern="1">
<prescript description="F0.140 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="4.25" type="Numero" align="right" width="10" id="150" pattern="1">
<prescript description="F0.150 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="5.25" type="Numero" align="right" width="10" id="160" pattern="1">
<prescript description="F0.160 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="6.25" type="Numero" align="right" width="10" id="170" pattern="1">
<prescript description="F0.170 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="7.25" type="Numero" align="right" width="10" id="180" pattern="1">
<prescript description="F0.180 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="8.25" type="Numero" align="right" width="10" id="190" pattern="1">
<prescript description="F0.190 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="9.25" type="Numero" align="right" width="10" id="199" pattern="1">
<prescript description="F0.199 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="0.25" type="Numero" align="right" width="10" id="210" pattern="1">
<prescript description="F0.210 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="1.25" type="Numero" align="right" width="10" id="220" pattern="1">
<prescript description="F0.220 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="2.25" type="Numero" align="right" width="10" id="230" pattern="1">
<prescript description="F0.230 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="3.25" type="Numero" align="right" width="10" id="240" pattern="1">
<prescript description="F0.240 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="4.25" type="Numero" align="right" width="10" id="250" pattern="1">
<prescript description="F0.250 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="5.25" type="Numero" align="right" width="10" id="260" pattern="1">
<prescript description="F0.260 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="6.25" type="Numero" align="right" width="10" id="270" pattern="1">
<prescript description="F0.270 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="7.25" type="Numero" align="right" width="10" id="280" pattern="1">
<prescript description="F0.280 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="8.25" type="Numero" align="right" width="10" id="290" pattern="1">
<prescript description="F0.290 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="9.25" type="Numero" align="right" width="10" id="299" pattern="1">
<prescript description="F0.299 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="60.5" y="0.25" type="Valuta" align="right" width="10" id="310" pattern="1" hide_zero="1" text="#########,@@" />
@ -226,92 +242,159 @@
<field x="60.5" y="7.25" type="Valuta" align="right" width="10" id="380" pattern="1" hide_zero="1" text="#########,@@" />
<field x="60.5" y="8.25" type="Valuta" align="right" width="10" id="390" pattern="1" hide_zero="1" text="#########,@@" />
<field x="60.5" y="9.25" type="Valuta" align="right" width="10" id="399" pattern="1" hide_zero="1" text="#########,@@" />
<field x="53" y="0.25" type="Numero" align="right" width="5" id="410" pattern="1" text="##,@@">
<field x="53" y="0.25" type="Valuta" align="right" width="5" id="410" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.410 PRESCRIPT">#310 @
#210 @
&#2F;
#THIS !</prescript>
</field>
<field x="25" y="12.25" type="Numero" align="right" width="55" id="410" pattern="1" text="LETTERE">
<prescript description="F0.410 PRESCRIPT">#3000 @
#THIS !</prescript>
</field>
<field x="53" y="1.25" type="Numero" align="right" width="5" id="420" pattern="1" text="##,@@">
<field x="53" y="1.25" type="Valuta" align="right" width="5" id="420" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.420 PRESCRIPT">#320 @
#220 @
&#2F;
#THIS !</prescript>
</field>
<field x="53" y="2.25" type="Numero" align="right" width="5" id="430" pattern="1" text="##,@@">
<field x="53" y="2.25" type="Valuta" align="right" width="5" id="430" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.430 PRESCRIPT">#330 @
#230 @
&#2F;
#THIS !</prescript>
</field>
<field x="53" y="3.25" type="Numero" align="right" width="5" id="440" pattern="1" text="##,@@">
<field x="53" y="3.25" type="Valuta" align="right" width="5" id="440" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.440 PRESCRIPT">#340 @
#240 @
&#2F;
#THIS !</prescript>
</field>
<field x="53" y="4.25" type="Numero" align="right" width="5" id="450" pattern="1" text="##,@@">
<field x="53" y="4.25" type="Valuta" align="right" width="5" id="450" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.450 PRESCRIPT">#350 @
#250 @
&#2F;
#THIS !</prescript>
</field>
<field x="53" y="5.25" type="Numero" align="right" width="5" id="460" pattern="1" text="##,@@">
<field x="53" y="5.25" type="Valuta" align="right" width="5" id="460" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.460 PRESCRIPT">#360 @
#260 @
&#2F;
#THIS !</prescript>
</field>
<field x="53" y="6.25" type="Numero" align="right" width="5" id="470" pattern="1" text="##,@@">
<field x="53" y="6.25" type="Valuta" align="right" width="5" id="470" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.470 PRESCRIPT">#370 @
#270 @
&#2F;
#THIS !</prescript>
</field>
<field x="53" y="7.25" type="Numero" align="right" width="5" id="480" pattern="1" text="##,@@">
<field x="53" y="7.25" type="Valuta" align="right" width="5" id="480" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.480 PRESCRIPT">#380 @
#280 @
&#2F;
#THIS !</prescript>
</field>
<field x="53" y="8.25" type="Numero" align="right" width="5" id="490" pattern="1" text="##,@@">
<field x="53" y="8.25" type="Valuta" align="right" width="5" id="490" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.490 PRESCRIPT">#390 @
#290 @
&#2F;
#THIS !</prescript>
</field>
<field x="53" y="9.25" type="Numero" align="right" width="5" id="499" pattern="1" text="##,@@">
<field x="53" y="9.25" type="Valuta" align="right" width="5" id="499" pattern="1" hide_zero="1" text="#########,@@">
<prescript description="F0.499 PRESCRIPT">#399 @
#299 @
&#2F;
#THIS !</prescript>
</field>
<field x="70.75" y="0.25" type="Numero" align="right" width="10" id="510" pattern="1">
<prescript description="F0.510 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="1.25" type="Numero" align="right" width="10" id="520" pattern="1">
<prescript description="F0.520 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="2.25" type="Numero" align="right" width="10" id="530" pattern="1">
<prescript description="F0.530 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="3.25" type="Numero" align="right" width="10" id="540" pattern="1">
<prescript description="F0.540 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="4.25" type="Numero" align="right" width="10" id="550" pattern="1">
<prescript description="F0.550 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="5.25" type="Numero" align="right" width="10" id="560" pattern="1">
<prescript description="F0.560 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="6.25" type="Numero" align="right" width="10" id="570" pattern="1">
<prescript description="F0.570 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="7.25" type="Numero" align="right" width="10" id="580" pattern="1">
<prescript description="F0.580 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="8.25" type="Numero" align="right" width="10" id="590" pattern="1">
<prescript description="F0.590 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="9.25" type="Numero" align="right" width="10" id="599" pattern="1">
<prescript description="F0.599 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="29.25" y="10.25" type="Numero" align="right" width="10" id="1000" pattern="1">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.1000 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="39.75" y="10.25" type="Numero" align="right" width="10" id="2000" pattern="1">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.2000 PRESCRIPT">#THIS @
1000 &#2F;
2 ROUND
3 ROUND
#THIS !</prescript>
</field>
<field x="60.5" y="10.25" type="Valuta" align="right" width="10" id="3000" pattern="1" text="#########,@@">
<field x="60.5" y="10.25" type="Valuta" align="right" width="10" id="3000" pattern="1" hide_zero="1" text="#########,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="53" y="10.25" type="Numero" align="right" width="5" id="5000" pattern="1" text="##,@@">
<field x="53" y="10.25" type="Valuta" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="#########,@@">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.5000 PRESCRIPT">#340 @
<prescript description="F0.4000 PRESCRIPT">#340 @
#240 @
&#2F;
#THIS !</prescript>
</field>
<field x="70.75" y="10.25" type="Numero" align="right" width="10" id="5000" pattern="1">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.5000 PRESCRIPT">#THIS @
1000 &#2F;
3 ROUND
#THIS !</prescript>
</field>
<field x="25" y="12.25" type="Numero" align="right" width="55" id="6000" pattern="1" text="LETTERE">
<prescript description="F0.6000 PRESCRIPT">#3000 @
#THIS !</prescript>
</field>
</section>