Patch level :2.2 nopatch

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :avanzato un po' (dopo 2 mesi) il programma di stampa pagato


git-svn-id: svn://10.65.10.50/trunk@13819 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2006-02-24 12:52:02 +00:00
parent a5014db165
commit aa3dd28e95
2 changed files with 176 additions and 166 deletions

View File

@ -4,6 +4,7 @@
#include <progind.h> #include <progind.h>
#include <reprint.h> #include <reprint.h>
#include <clifo.h>
#include <mov.h> #include <mov.h>
#include <partite.h> #include <partite.h>
#include <rmov.h> #include <rmov.h>
@ -204,7 +205,7 @@ protected:
protected: //da libreria protected: //da libreria
// virtual const TVariant& get(const char* column_name) const; virtual const TVariant& get(const char* column_name) const;
protected: protected:
void crea_trr(const TFilename& trr) const; void crea_trr(const TFilename& trr) const;
@ -270,13 +271,41 @@ void TPag_per_cms_recordset::set_custom_filter(TCursor& cur) const
myself = (TPag_per_cms_recordset*)this; myself = (TPag_per_cms_recordset*)this;
} }
//simpatico metodo per riempire in automatico i campi di intestazione speciali
const TVariant& TPag_per_cms_recordset::get(const char* column_name) const
{
if (*column_name == '#')
{
if (strcmp(column_name, "#COSTO") == 0)
{
TVariant& var = get_tmp_var();
var = _codcosto;
return var;
}
if (strcmp(column_name, "#COMMESSA") == 0)
{
TVariant& var = get_tmp_var();
var = _codcms;
return var;
}
if (strcmp(column_name, "#FASE") == 0)
{
TVariant& var = get_tmp_var();
var = _codfas;
return var;
}
}
return TISAM_recordset::get(column_name);
}
void TPag_per_cms_recordset::crea_trr(const TFilename& trr) const void TPag_per_cms_recordset::crea_trr(const TFilename& trr) const
{ {
ofstream of(trr); ofstream of(trr);
of << 1000 << endl; of << 1000 << endl;
of << 14 << endl; of << 15 << endl;
of << "CONTO|1|12|0|Conto contabile" << endl; of << "CODFORN|3|6|0|Codice fornitore" << endl;
of << "DESCONTO|1|50|0|Descrizione conto" << endl; of << "DESFORN|1|50|0|Descrizione fornitore" << endl;
of << "NREG|3|7|0|Numero registrazione" << endl; of << "NREG|3|7|0|Numero registrazione" << endl;
of << "DATAPAG|5|8|0|Data pagamento" << endl; of << "DATAPAG|5|8|0|Data pagamento" << endl;
of << "DESCRPAG|1|50|0|Descrizione pagamento" << endl; of << "DESCRPAG|1|50|0|Descrizione pagamento" << endl;
@ -286,11 +315,12 @@ void TPag_per_cms_recordset::crea_trr(const TFilename& trr) const
of << "TOTDOC|4|18|5|Totale documento" << endl; of << "TOTDOC|4|18|5|Totale documento" << endl;
of << "TOTPAG|4|18|5|Totale pagamento" << endl; of << "TOTPAG|4|18|5|Totale pagamento" << endl;
of << "TOTRES|4|18|5|Totale residuo" << endl; of << "TOTRES|4|18|5|Totale residuo" << endl;
of << "CODFORN|3|7|0|Codice fornitore" << endl; of << "CDC|1|20|0|Centro di costo" << endl;
of << "DESFORN|1|50|0|Descrizione fornitore" << endl; of << "CMS|1|20|0|Commessa" << endl;
of << "FSC|1|10|0|Fase" << endl;
of << "HIDDEN|8|1|0|Record nascosto" << endl; of << "HIDDEN|8|1|0|Record nascosto" << endl;
of << 1 << endl; of << 1 << endl;
of << "CONTO+NREG+DATAPAG" << endl; of << "CODFORN+FSC+NREG+DATAPAG" << endl;
} }
void TPag_per_cms_recordset::lettura_conti(TAssoc_array& assoc, const char tipoconto) void TPag_per_cms_recordset::lettura_conti(TAssoc_array& assoc, const char tipoconto)
@ -499,25 +529,25 @@ void TPag_per_cms_recordset::find_commesse_cg(const long nreg)
if (anal_rows.rows() > 0) //se il movana ha righe... if (anal_rows.rows() > 0) //se il movana ha righe...
{ {
for (i = 1; i <= anal_rows.rows(); i++) //scansiona righe analitiche.. for (int j = 1; j <= anal_rows.rows(); j++) //scansiona righe analitiche..
{ {
if (check_cms_cdc_fsc(anal_rows[i])) if (check_cms_cdc_fsc(anal_rows[j]))
{ {
//prende il conto sulla riga analitica e lo confronta con quello della riga iva //prende il conto sulla riga analitica e lo confronta con quello della riga iva
const int gruppo_anal = atoi(anal_rows[i].get(RMOVANA_CODCONTO).left(3)); const int gruppo_anal = atoi(anal_rows[j].get(RMOVANA_CODCONTO).left(3));
const int conto_anal = atoi(anal_rows[i].get(RMOVANA_CODCONTO).mid(3,3)); const int conto_anal = atoi(anal_rows[j].get(RMOVANA_CODCONTO).mid(3,3));
const long sottoconto_anal = atol(anal_rows[i].get(RMOVANA_CODCONTO).mid(6,6)); const long sottoconto_anal = atol(anal_rows[j].get(RMOVANA_CODCONTO).mid(6,6));
const TBill conto(gruppo_anal, conto_anal, sottoconto_anal); const TBill conto(gruppo_anal, conto_anal, sottoconto_anal);
if (cerca_costo(conto) || cerca_pagamento(conto)) if (cerca_costo(conto) || cerca_pagamento(conto))
{ {
const char sezione = anal_rows[i].get_char(RMOVANA_SEZIONE); const char sezione = anal_rows[j].get_char(RMOVANA_SEZIONE);
const real valore = anal_rows[i].get_real(RMOVANA_IMPORTO); const real valore = anal_rows[j].get_real(RMOVANA_IMPORTO);
const TImporto imp(sezione, valore); const TImporto imp(sezione, valore);
} }
} }
} //for(i<anal_rows... } //for(j<anal_rows...
} //if(anal_rows>0... } //if(anal_rows>0...
} //if(numregcg==nreg... } //if(numregcg==nreg...
} //for(TRecnotype... } //for(TRecnotype...
@ -629,9 +659,9 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
//se movimento IVA.. //se movimento IVA..
if (pn.iva_items() > 0) if (pn.iva_items() > 0)
{ {
for (int i = 0; i < pn.iva_items(); i++) for (int j = 0; j < pn.iva_items(); j++)
{ {
const TRectype& rmoviva = pn.iva(i); const TRectype& rmoviva = pn.iva(j);
const TBill zio(rmoviva); const TBill zio(rmoviva);
//il tutto si fa solo se l'indicatore di bilancio del conto nella riga iva e' != 5 //il tutto si fa solo se l'indicatore di bilancio del conto nella riga iva e' != 5
if (zio.indicatore_bilancio() != 5) if (zio.indicatore_bilancio() != 5)
@ -642,7 +672,7 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
const long sottoconto_iva = zio.sottoconto(); const long sottoconto_iva = zio.sottoconto();
//trova le RMOVANA del MOVANA corrente che hanno il conto = a quello della i-esima rigaiva //trova le RMOVANA del MOVANA corrente che hanno il conto = a quello della i-esima rigaiva
TAnal_mov anal_mov(nreg); TAnal_mov anal_mov(rmoviva);
TRecord_array& anal_rows = anal_mov.body(); TRecord_array& anal_rows = anal_mov.body();
if (anal_rows.rows() > 0) //se il movana ha righe... if (anal_rows.rows() > 0) //se il movana ha righe...
@ -654,13 +684,13 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
//..agli importi delle righe analitiche corretti per le % iva //..agli importi delle righe analitiche corretti per le % iva
TGeneric_distrib agip (lordo_iva, TCurrency::get_firm_dec()); TGeneric_distrib agip (lordo_iva, TCurrency::get_firm_dec());
for (i = 1; i <= anal_rows.rows(); i++) //scansiona righe analitiche.. for (int k = 1; k <= anal_rows.rows(); k++) //scansiona righe analitiche..
{ {
real perc_ded_iva = UNO; //%iva deducibile (di default 100, ameno del prorata) real perc_ded_iva = UNO; //%iva deducibile (di default 100, a meno del prorata)
if (imposta_iva != ZERO) if (imposta_iva != ZERO)
{ {
//controllo prorata //controllo prorata
const TString80 commessa_riga_anal = anal_rows[i].get(RMOVANA_CODCMS); const TString80 commessa_riga_anal = anal_rows[k].get(RMOVANA_CODCMS);
const TRectype& pla = cache().get(LF_COMMESSE, commessa_riga_anal); const TRectype& pla = cache().get(LF_COMMESSE, commessa_riga_anal);
const bool prorata = pla.get_bool("PRORATA"); const bool prorata = pla.get_bool("PRORATA");
if (prorata) if (prorata)
@ -675,16 +705,16 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
} //if imposta_iva... } //if imposta_iva...
//prende il conto sulla riga analitica e lo confronta con quello della riga iva //prende il conto sulla riga analitica e lo confronta con quello della riga iva
const int gruppo_anal = atoi(anal_rows[i].get(RMOVANA_CODCONTO).left(3)); const int gruppo_anal = atoi(anal_rows[k].get(RMOVANA_CODCONTO).left(3));
const int conto_anal = atoi(anal_rows[i].get(RMOVANA_CODCONTO).mid(3,3)); const int conto_anal = atoi(anal_rows[k].get(RMOVANA_CODCONTO).mid(3,3));
const long sottoconto_anal = atol(anal_rows[i].get(RMOVANA_CODCONTO).mid(6,6)); const long sottoconto_anal = atol(anal_rows[k].get(RMOVANA_CODCONTO).mid(6,6));
//il codconto anale e iva coincidono?.. //il codconto anale e iva coincidono?..
if (gruppo_iva == gruppo_anal && conto_iva == conto_anal && sottoconto_iva == sottoconto_anal) if (gruppo_iva == gruppo_anal && conto_iva == conto_anal && sottoconto_iva == sottoconto_anal)
{ {
//..in tal caso aggiunge l'importo della riga analitica al distributore, dopo.. //..in tal caso aggiunge l'importo della riga analitica al distributore, dopo..
//..averlo corretto in base alle % precedentemente calcolate //..averlo corretto in base alle % precedentemente calcolate
real importo_anal = anal_rows[i].get_real(RMOVANA_IMPORTO); real importo_anal = anal_rows[k].get_real(RMOVANA_IMPORTO);
const real perc_iva = imposta_iva / imponibile_iva; const real perc_iva = imposta_iva / imponibile_iva;
const real perc_corretta_iva = perc_iva * (UNO - perc_ded_iva); const real perc_corretta_iva = perc_iva * (UNO - perc_ded_iva);
importo_anal = importo_anal * (UNO - perc_corretta_iva); importo_anal = importo_anal * (UNO - perc_corretta_iva);
@ -693,12 +723,12 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
} //if(gruppo_iva==... } //if(gruppo_iva==...
} //for (anal_rows... } //for (anal_rows...
for (i = 1; i <= anal_rows.rows(); i++) //..allora le scansiona.. for (int l = 1; l <= anal_rows.rows(); l++) //..allora le scansiona..
{ {
//prende il conto sulla riga analitica e lo confronta con quello della riga iva //prende il conto sulla riga analitica e lo confronta con quello della riga iva
const int gruppo_anal = atoi(anal_rows[i].get(RMOVANA_CODCONTO).left(3)); const int gruppo_anal = atoi(anal_rows[l].get(RMOVANA_CODCONTO).left(3));
const int conto_anal = atoi(anal_rows[i].get(RMOVANA_CODCONTO).mid(3,3)); const int conto_anal = atoi(anal_rows[l].get(RMOVANA_CODCONTO).mid(3,3));
const long sottoconto_anal = atol(anal_rows[i].get(RMOVANA_CODCONTO).mid(6,6)); const long sottoconto_anal = atol(anal_rows[l].get(RMOVANA_CODCONTO).mid(6,6));
//il codconto anale e iva coincidono? //il codconto anale e iva coincidono?
if (gruppo_iva == gruppo_anal && conto_iva == conto_anal && sottoconto_iva == sottoconto_anal) if (gruppo_iva == gruppo_anal && conto_iva == conto_anal && sottoconto_iva == sottoconto_anal)
@ -706,13 +736,13 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
//impoerto //impoerto
real importo = agip.get(); real importo = agip.get();
//commessa,cdc,fase della riga analitica devono essere coincidenti con quelle dello sheet //commessa,cdc,fase della riga analitica devono essere coincidenti con quelle dello sheet
if (check_cms_cdc_fsc(anal_rows[i])) if (check_cms_cdc_fsc(anal_rows[l]))
{ {
//costruzione dell'assoc_array con cms/cdc/fsc ed importi //costruzione dell'assoc_array 'commesse' con cms/cdc/fsc ed importi
TToken_string cms_cdc_fsc; TToken_string cms_cdc_fsc;
cms_cdc_fsc.add(anal_rows[i].get(RMOVANA_CODCMS)); cms_cdc_fsc.add(anal_rows[l].get(RMOVANA_CODCMS));
cms_cdc_fsc.add(anal_rows[i].get(RMOVANA_CODCCOSTO)); cms_cdc_fsc.add(anal_rows[l].get(RMOVANA_CODCCOSTO));
cms_cdc_fsc.add(anal_rows[i].get(RMOVANA_CODFASE)); cms_cdc_fsc.add(anal_rows[l].get(RMOVANA_CODFASE));
real* imp = (real*)commesse.objptr(cms_cdc_fsc); real* imp = (real*)commesse.objptr(cms_cdc_fsc);
//aggiunge un elemento all'assoc_array... //aggiunge un elemento all'assoc_array...
@ -740,9 +770,9 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
} //if(pn.iva_items(... } //if(pn.iva_items(...
else //..movimento NON iva (sempre con saldaconto) else //..movimento NON iva (sempre con saldaconto)
{ {
for (int i = 0; i < pn.cg_items(); i++) for (int j = 0; j < pn.cg_items(); j++)
{ {
const TRectype& rmov = pn.cg(i); const TRectype& rmov = pn.cg(j);
const TBill zio_cg(rmov); const TBill zio_cg(rmov);
TImporto importo(rmov.get_char(RMV_SEZIONE), rmov.get_real(RMV_IMPORTO)); TImporto importo(rmov.get_char(RMV_SEZIONE), rmov.get_real(RMV_IMPORTO));
@ -756,7 +786,7 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
else else
if (cerca_fiscali(zio_cg) || cerca_sociali(zio_cg)) if (cerca_fiscali(zio_cg) || cerca_sociali(zio_cg))
totdoc -= importo.valore(); //valore da stampare nella colonna Tot.fattura con ritenute totdoc -= importo.valore(); //valore da stampare nella colonna Tot.fattura con ritenute
} //for i < pn.cg_items... } //for j < pn.cg_items...
TAnal_mov anal_mov(nreg); TAnal_mov anal_mov(nreg);
TRecord_array& anal_rows = anal_mov.body(); TRecord_array& anal_rows = anal_mov.body();
@ -764,25 +794,25 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
if (anal_rows.rows() > 0) //se il movana ha righe... if (anal_rows.rows() > 0) //se il movana ha righe...
{ {
for (i = 1; i <= anal_rows.rows(); i++) //..allora le scansiona.. for (int k = 1; k <= anal_rows.rows(); k++) //..allora le scansiona..
{ {
//prende il conto sulla riga analitica e lo confronta con quello della riga iva //prende gr/co/sott sulla riga analitica...
const int gruppo_anal = atoi(anal_rows[i].get(RMOVANA_CODCONTO).left(3)); const int gruppo_anal = atoi(anal_rows[k].get(RMOVANA_CODCONTO).left(3));
const int conto_anal = atoi(anal_rows[i].get(RMOVANA_CODCONTO).mid(3,3)); const int conto_anal = atoi(anal_rows[k].get(RMOVANA_CODCONTO).mid(3,3));
const long sottoconto_anal = atol(anal_rows[i].get(RMOVANA_CODCONTO).mid(6,6)); const long sottoconto_anal = atol(anal_rows[k].get(RMOVANA_CODCONTO).mid(6,6));
//..e crea il conto contabile corrispondente
TBill conto_cg(gruppo_anal, conto_anal, sottoconto_anal); TBill conto_cg(gruppo_anal, conto_anal, sottoconto_anal);
//il codconto anale e iva coincidono? //l'indicatore di bilancio del conto contabile appena creato e' valido?
if (conto_cg.indicatore_bilancio() != 5) if (conto_cg.indicatore_bilancio() != 5)
{ {
const real importo_anal = anal_rows[i].get_real(RMOVANA_IMPORTO); const real importo_anal = anal_rows[k].get_real(RMOVANA_IMPORTO);
//costruzione dell'assoc_array con cms/cdc/fsc ed importi //costruzione dell'assoc_array 'commesse' con cms/cdc/fsc ed importi
TToken_string cms_cdc_fsc; TToken_string cms_cdc_fsc;
cms_cdc_fsc.add(anal_rows[i].get(RMOVANA_CODCMS)); cms_cdc_fsc.add(anal_rows[k].get(RMOVANA_CODCMS));
cms_cdc_fsc.add(anal_rows[i].get(RMOVANA_CODCCOSTO)); cms_cdc_fsc.add(anal_rows[k].get(RMOVANA_CODCCOSTO));
cms_cdc_fsc.add(anal_rows[i].get(RMOVANA_CODFASE)); cms_cdc_fsc.add(anal_rows[k].get(RMOVANA_CODFASE));
real* imp = (real*)commesse.objptr(cms_cdc_fsc); real* imp = (real*)commesse.objptr(cms_cdc_fsc);
@ -792,15 +822,14 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
commesse.add(cms_cdc_fsc, imp); commesse.add(cms_cdc_fsc, imp);
} }
TImporto importo(anal_rows[i].get_char(RMOVANA_SEZIONE), anal_rows[i].get_real(RMOVANA_IMPORTO)); TImporto importo(anal_rows[k].get_char(RMOVANA_SEZIONE), anal_rows[k].get_real(RMOVANA_IMPORTO));
importo.normalize('D'); importo.normalize('D');
*imp += importo.valore(); *imp += importo.valore();
totdoc_cms += importo.valore(); totdoc_cms += importo.valore();
} //if(conto_cg.indicatore... } //if(conto_cg.indicatore...
} } //for(k<anal_rows...
} //if(anal_rows>0...
}
} //else (pn.iva_items(... } //else (pn.iva_items(...
//parte comune a movimenti IVA e non (vengono anche qui considerate le ritenute fiscali //parte comune a movimenti IVA e non (vengono anche qui considerate le ritenute fiscali
@ -849,43 +878,39 @@ void TPag_per_cms_recordset::find_commesse(const long nreg, const TRectype& riga
{ {
const real& impcms = *(real*)imp; const real& impcms = *(real*)imp;
// campi del pagamento // campi del pagamento che vanno spediti nel file temporaneo
// tmpcurr.put("CONTO", ); //codice fornitore e descrizione
// tmpcurr.put("DESCONTO", ); const long codforn = riga_pag.get_long(PART_SOTTOCONTO);
tmpcurr.put("CODFORN", codforn);
TString16 keyclifo;
keyclifo.format("%s|%d", "F", codforn);
const TRectype& rec_clifo = cache().get(LF_CLIFO, keyclifo);
TString80 desforn = rec_clifo.get(CLI_RAGSOC);
tmpcurr.put("DESFORN", desforn);
//nreg,data pagamento,descrizione pagamento
tmpcurr.put("NREG", nreg); tmpcurr.put("NREG", nreg);
tmpcurr.put("DATAPAG", riga_pag.get_date(_campodata)); tmpcurr.put("DATAPAG", riga_pag.get_date(_campodata));
tmpcurr.put("DESCRPAG", riga_pag.get(PART_DESCR)); tmpcurr.put("DESCRPAG", riga_pag.get(PART_DESCR));
/* tmpcurr.put("NDOC", );
tmpcurr.put("DATADOC", );
tmpcurr.put("PROT", );
tmpcurr.put("TOTDOC", );
tmpcurr.put("TOTPAG", );
tmpcurr.put("TOTRES", );
tmpcurr.put("CODFORN", );
tmpcurr.put("DESFORN", );*/
}
/* ppcs->_tipo = 0; //movimenti da saldaconto //documento origine
ppcs->_codforn = riga_pag.get_long(PART_SOTTOCONTO); tmpcurr.put("NDOC", movfat.get_long(MOV_NUMDOC));
ppcs->_datapag = riga_pag.get_date(_campodata); tmpcurr.put("DATADOC", movfat.get_date(MOV_DATADOC));
ppcs->_importopagato.set_num(distributore.get()); //pagamento nella partita tmpcurr.put("PROT", movfat.get_long(MOV_PROTIVA));
ppcs->_importopagato_prec.set_num(distributore_prec.get()); //pagamenti precedenti al tmpcurr.put("TOTDOC", totdoc);
ppcs->_descrpagamento = riga_pag.get(PART_DESCR); tmpcurr.put("TOTPAG", distributore.get()); //pagamento nella partita
// campi della fattura // tmpcurr.put("TOTRES", ); //pagamenti precedenti al
ppcs->_nreg = nreg;
ppcs->_numfat = movfat.get(MOV_NUMDOC); //campi relativi a cdc,commessa,fase
ppcs->_datafat = movfat.get_date(MOV_DATADOC); TToken_string cdc_cms_fsc = k;
ppcs->_protiva = movfat.get_long(MOV_PROTIVA); tmpcurr.put("CMS",cdc_cms_fsc.get(0));
ppcs->_totfat = totdoc; //questo e' quello che viene stampato in Tot.fattura tmpcurr.put("CDC",cdc_cms_fsc.get(1));
tmpcurr.put("FSC",cdc_cms_fsc.get(2));
TToken_string cms_fsc = k; // tmpcurr.put("IMPCMS",impcms);
ppcs->_commessa = cms_fsc.get(0); //e finalmente aggiunge il record al file temporaneo
ppcs->_fase = cms_fsc.get(1); _tmp->write();
ppcs->_importocommessa.set_num(impcms); //importo da pagare scritto sulla fattura } //FOR_EACH_...
}*/
_tmp->write(); //aggiunge il record al file temporaneo
} //pn.read()... } //pn.read()...
} //if (numregcg==nreg)... } //if (numregcg==nreg)...

View File

@ -11,26 +11,25 @@
<field x="80" type="Data" width="10" pattern="1"> <field x="80" type="Data" width="10" pattern="1">
<source>#SYSTEM.DATE</source> <source>#SYSTEM.DATE</source>
</field> </field>
<field x="165" type="Numero" align="right" width="3" pattern="1"> <field x="155" type="Numero" align="right" width="3" pattern="1">
<source>#REPORT.PAGE</source> <source>#REPORT.PAGE</source>
</field> </field>
<field border="2" x="1" y="2" type="Linea" width="169" height="0" pattern="1" /> <field border="2" x="1" y="2" type="Linea" width="159" height="0" pattern="1" />
<field x="1" y="3.5" type="Testo" align="right" width="7" pattern="1" text="N. Reg." /> <field x="1" y="3.5" type="Testo" align="right" width="7" pattern="1" text="N. Reg." />
<field x="9" y="3.5" type="Testo" align="center" width="11" pattern="1" text="Data pag." /> <field x="10" y="3.5" type="Testo" align="center" width="11" pattern="1" text="Data pag." />
<field x="21" y="3.5" type="Testo" width="25" pattern="1" text="Descrizione pagamento" /> <field x="23" y="3.5" type="Testo" width="25" pattern="1" text="Descrizione pagamento" />
<field x="47" y="3.5" type="Testo" align="center" width="6" pattern="1" text="N. doc." /> <field x="69" y="3.5" type="Testo" align="center" width="7" pattern="1" text="N. doc." />
<field x="54" y="3.5" type="Testo" align="center" width="10" pattern="1" text="Data doc." /> <field x="84" y="3.5" type="Testo" align="center" width="10" pattern="1" text="Data doc." />
<field x="65" y="3.5" type="Testo" width="4" pattern="1" text="Prot." /> <field x="97.5" y="3.5" type="Testo" width="5" pattern="1" text="Prot." />
<field x="70" y="3.5" type="Testo" align="right" width="18" pattern="1" text="Totale documento" /> <field x="104" y="3.5" type="Testo" align="right" width="18" pattern="1" text="Totale documento" />
<field x="89" y="3.5" type="Testo" align="right" width="18" pattern="1" text="Totale pagamento" /> <field x="123" y="3.5" type="Testo" align="right" width="18" pattern="1" text="Totale pagamento" />
<field x="108" y="3.5" type="Testo" align="right" width="18" pattern="1" text="Totale residuo" /> <field x="142" y="3.5" type="Testo" align="right" width="18" pattern="1" text="Totale residuo" />
<field x="128" y="3.5" type="Testo" align="right" width="7" pattern="1" text="Fornitore" /> <field border="1" x="1" y="4.5" type="Linea" width="159" height="0" pattern="1" />
<field border="1" x="1" y="4.5" type="Linea" width="169" height="0" pattern="1" />
</section> </section>
<section type="Head" level="1" height="9"> <section type="Head" level="1" height="9">
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.101 <prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.101
MESSAGE RESET,F1.102</prescript> MESSAGE RESET,F1.102</prescript>
<field border="1" radius="100" x="1" type="Testo" valign="center" align="center" shade_offset="25" width="167" height="2.5" text="PAGATO PER COMMESSA &#2F; FORNITORE"> <field border="1" radius="100" x="1" type="Testo" valign="center" align="center" shade_offset="25" width="158" height="2.5" text="PAGATO PER COMMESSA &#2F; FORNITORE">
<font face="Courier New" bold="1" size="16" /> <font face="Courier New" bold="1" size="16" />
</field> </field>
<field x="1" y="3" type="Testo" width="18" pattern="1" text="Centro di Costo:" /> <field x="1" y="3" type="Testo" width="18" pattern="1" text="Centro di Costo:" />
@ -104,7 +103,7 @@ MESSAGE RESET,F1.102</prescript>
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
<prescript description="H1.0 PRESCRIPT">MESSAGE ISAMREAD,COMMESSE,CODCMS=#COMMESSA,PROROGA</prescript> <prescript description="H1.0 PRESCRIPT">MESSAGE ISAMREAD,COMMESSE,CODCMS=#COMMESSA,PROROGA</prescript>
</field> </field>
<field border="2" x="1" y="9" type="Linea" width="169" height="0" pattern="1" /> <field border="2" x="1" y="9" type="Linea" width="159" height="0" pattern="1" />
<field x="20" y="7.5" type="Stringa" width="6" id="101" pattern="1"> <field x="20" y="7.5" type="Stringa" width="6" id="101" pattern="1">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
<prescript description="H1.101 PRESCRIPT">MESSAGE ISAMREAD,COMMESSE,CODCMS=#COMMESSA,CODCF</prescript> <prescript description="H1.101 PRESCRIPT">MESSAGE ISAMREAD,COMMESSE,CODCMS=#COMMESSA,CODCF</prescript>
@ -115,59 +114,65 @@ MESSAGE RESET,F1.102</prescript>
</field> </field>
</section> </section>
<section repeat="1" type="Head" level="2" height="2"> <section repeat="1" type="Head" level="2" height="2">
<groupby>CONTO</groupby> <groupby>CODFORN</groupby>
<font italic="1" face="Courier New" size="8" /> <font italic="1" face="Courier New" size="8" />
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.101 <prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.101
MESSAGE RESET,F2.102 MESSAGE RESET,F2.102
MESSAGE RESET,F2.103</prescript> MESSAGE RESET,F2.103</prescript>
<field x="1" y="0.5" type="Stringa" bg_color="#C0C0C0" width="23"> <field x="1" y="0.5" type="Stringa" bg_color="#C0C0C0" width="7">
<font italic="1" face="Courier New" bold="1" size="8" /> <font italic="1" face="Courier New" bold="1" size="8" />
<source>CONTO</source> <source>CODFORN</source>
<prescript description="H2.0 PRESCRIPT">CA_FORMAT_CONTO</prescript>
</field> </field>
<field x="25" y="0.5" type="Stringa" width="50" pattern="1"> <field x="8" y="0.5" type="Stringa" bg_color="#C0C0C0" width="50">
<font italic="1" face="Courier New" bold="1" size="8" /> <font italic="1" face="Courier New" bold="1" size="8" />
<source>DESCONTO</source> <source>DESFORN</source>
</field> </field>
</section> </section>
<section type="Head" level="3"> <section type="Head" level="3">
<groupby>CODNUM+ANNO+NUMRD</groupby> <groupby>FSC</groupby>
<field x="1" type="Stringa" hidden="1" align="right" width="7" pattern="1"> <font italic="1" face="Courier New" bold="1" size="8" />
<source>NREG</source> <prescript description="H3 PRESCRIPT">MESSAGE RESET,F3.101
MESSAGE RESET,F3.102
MESSAGE RESET,F3.103</prescript>
<field x="1" type="Stringa" width="10" pattern="1">
<source>FSC</source>
<prescript description="H3.0 PRESCRIPT">MESSAGE RESET,F3.101
MESSAGE RESET,F3.102
MESSAGE RESET,F3.103</prescript>
</field> </field>
</section> </section>
<section type="Body" /> <section type="Body" />
<section type="Body" level="1"> <section type="Body" level="1">
<condition>HIDDEN!='X'</condition> <condition>HIDDEN!='X'</condition>
<field x="9" type="Data" width="10" pattern="1"> <field x="10" type="Data" width="10" pattern="1">
<source>DATAPAG</source> <source>DATAPAG</source>
</field> </field>
<field x="20" type="Stringa" dynamic_height="1" width="25" height="2" pattern="1"> <field x="22" type="Stringa" width="50" pattern="1">
<source>DESCRPAG</source> <source>DESCRPAG</source>
</field> </field>
<field x="46" type="Stringa" width="7" pattern="1"> <field x="74" type="Stringa" width="7" pattern="1">
<source>NDOC</source> <source>NDOC</source>
</field> </field>
<field x="55" type="Data" width="10" pattern="1"> <field x="84" type="Data" width="10" pattern="1">
<source>DATADOC</source> <source>DATADOC</source>
</field> </field>
<field x="66" type="Numero" align="right" width="5" pattern="1"> <field x="97" type="Numero" align="right" width="5" pattern="1">
<source>PROT</source> <source>PROT</source>
</field> </field>
<field x="72" type="Valuta" align="right" width="18" pattern="1" text="###.###.###,@@"> <field x="104" type="Valuta" align="right" width="18" pattern="1" text="###.###.###,@@">
<source>TOTDOC</source> <source>TOTDOC</source>
<postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F2.101</postscript> <postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F2.101
MESSAGE ADD,F3.101</postscript>
</field> </field>
<field x="91" type="Valuta" align="right" width="18" pattern="1" text="###.###.###,@@"> <field x="123" type="Valuta" align="right" width="18" pattern="1" text="###.###.###,@@">
<source>TOTPAG</source> <source>TOTPAG</source>
<postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F2.102</postscript> <postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F2.102
MESSAGE ADD,F3.102</postscript>
</field> </field>
<field x="110" type="Valuta" align="right" width="18" pattern="1" text="###.###.###,@@"> <field x="142" type="Valuta" align="right" width="18" pattern="1" text="###.###.###,@@">
<source>TOTRES</source> <source>TOTRES</source>
<postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F2.103</postscript> <postscript description="B1.0 POSTSCRIPT">MESSAGE ADD,F2.103
</field> MESSAGE ADD,F3.103</postscript>
<field x="137" type="Stringa" dynamic_height="1" width="25" height="2" pattern="1">
<source>DESCFORN</source>
</field> </field>
<field type="Numero" hidden="1" align="right" width="1" id="100" pattern="1"> <field type="Numero" hidden="1" align="right" width="1" id="100" pattern="1">
<prescript description="B1.100 PRESCRIPT">#THIS @ <prescript description="B1.100 PRESCRIPT">#THIS @
@ -192,76 +197,56 @@ MESSAGE RESET,F2.103</prescript>
<field x="1" type="Stringa" align="right" width="7" id="105" pattern="1"> <field x="1" type="Stringa" align="right" width="7" id="105" pattern="1">
<source>NREG</source> <source>NREG</source>
</field> </field>
<field x="129" type="Stringa" align="right" width="7" id="105" pattern="1">
<source>CODFORN</source>
</field>
</section> </section>
<section type="Foot" /> <section type="Foot" />
<section type="Foot" level="1"> <section type="Foot" level="1">
<field border="2" x="1" y="0.5" type="Linea" width="169" height="0" pattern="1" /> <field border="2" x="1" y="0.5" type="Linea" width="159" height="0" pattern="1" />
<field x="90" y="1" type="Testo" width="42" pattern="1" text="TOTALE PER FASE:"> <field x="73" y="1" type="Testo" width="30" pattern="1" text="TOTALE PER COMMESSA:">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
</field> </field>
<field x="90" y="2.5" type="Testo" width="42" pattern="1" text="TOTALE PER COMMESSA:"> <field x="104" y="1" type="Valuta" align="right" width="18" id="101" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
</field> </field>
<field x="90" y="4" type="Testo" width="42" pattern="1" text="TOTALE PER CENTRO DI COSTO:"> <field x="123" y="1" type="Valuta" align="right" width="18" id="102" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
</field> </field>
<field x="132" y="1" type="Valuta" align="right" width="12" id="101" pattern="1" text="###.###.###,@@"> <field x="142" y="1" type="Valuta" align="right" width="18" id="103" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
</field> </field>
<field x="145" y="1" type="Valuta" align="right" width="12" id="102" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="158" y="1" type="Valuta" align="right" width="12" id="103" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="132" y="2.5" type="Valuta" align="right" width="12" id="201" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
<source>#103-#101</source>
</field>
<field x="132" y="4" type="Valuta" align="right" width="12" id="201" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
<source>#103-#101</source>
</field>
<field x="145" y="2.5" type="Valuta" align="right" width="12" id="202" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
<source>#103-#102</source>
</field>
<field x="145" y="4" type="Valuta" align="right" width="12" id="202" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
<source>#103-#102</source>
</field>
<field x="158" y="2.5" type="Valuta" align="right" width="12" id="203" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
<source>#F1.111-#103</source>
</field>
<field x="158" y="4" type="Valuta" align="right" width="12" id="203" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
<source>#F1.111-#103</source>
</field>
</section> </section>
<section type="Foot" level="2" height="3"> <section type="Foot" level="2" height="2.5">
<field border="1" x="1" y="0.5" type="Linea" width="169" height="0" pattern="1" /> <field border="1" x="1" y="0.5" type="Linea" width="159" height="0" pattern="1" />
<field x="110" y="1" type="Testo" width="20" pattern="1" text="Totale per conto:"> <field x="80" y="1" type="Testo" width="25" pattern="1" text="Totale per fornitore:">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
</field> </field>
<field x="132" y="1" type="Valuta" align="right" width="12" id="101" pattern="1" text="###.###.###,@@"> <field x="104" y="1" type="Valuta" align="right" width="18" id="101" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
<postscript description="F2.101 POSTSCRIPT">MESSAGE ADD,F1.101</postscript> <postscript description="F2.101 POSTSCRIPT">MESSAGE ADD,F1.101</postscript>
</field> </field>
<field x="145" y="1" type="Valuta" align="right" width="12" id="102" pattern="1" text="###.###.###,@@"> <field x="123" y="1" type="Valuta" align="right" width="18" id="102" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
<postscript description="F2.102 POSTSCRIPT">MESSAGE ADD,F1.102</postscript> <postscript description="F2.102 POSTSCRIPT">MESSAGE ADD,F1.102</postscript>
</field> </field>
<field x="158" y="1" type="Valuta" align="right" width="12" id="103" pattern="1" text="###.###.###,@@"> <field x="142" y="1" type="Valuta" align="right" width="18" id="103" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
<postscript description="F2.103 POSTSCRIPT">MESSAGE ADD,F1.103</postscript> <postscript description="F2.103 POSTSCRIPT">MESSAGE ADD,F1.103</postscript>
</field> </field>
</section> </section>
<section type="Foot" level="3"> <section type="Foot" level="3">
<prescript description="F3 PRESCRIPT">0 #B1.100 !</prescript> <prescript description="F3 PRESCRIPT">0 #B1.100 !</prescript>
<field border="1" x="1" y="0.5" type="Linea" width="159" height="0" pattern="1" />
<field x="80" y="1" type="Testo" width="20" pattern="1" text="Totale per fase:">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="104" y="1" type="Valuta" align="right" width="18" id="101" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="123" y="1" type="Valuta" align="right" width="18" id="102" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="142" y="1" type="Valuta" align="right" width="18" id="103" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
</section> </section>
<sql>USE 1000</sql> <sql>USE 1000</sql>
</report> </report>