- Aggiunto flag stampa totali di periodo

- Corretta la stampa degli header


git-svn-id: svn://10.65.10.50/trunk@5554 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-11-05 11:13:27 +00:00
parent b8bc385dd0
commit 56f054caa2
3 changed files with 56 additions and 38 deletions

View File

@ -346,6 +346,7 @@ class TStampa_stat : public TPrint_application
_col_anno ; // numero di colonne che formano un "Anno" (=periodo di rif.) _col_anno ; // numero di colonne che formano un "Anno" (=periodo di rif.)
bool _st_totr; // flag stampa totali di riga bool _st_totr; // flag stampa totali di riga
bool _st_totc; // flag stampa totali di colonna bool _st_totc; // flag stampa totali di colonna
bool _st_tota; // flag stampa totali di "anno"
static TString s_park; // stringa di lavoro static TString s_park; // stringa di lavoro
// ****************** // ******************
// stampa file di Output // stampa file di Output
@ -458,10 +459,11 @@ bool TStampa_stat::set_print(int i)
_st_totr=printmask().get_bool(F_STTOTALIRIGA); _st_totr=printmask().get_bool(F_STTOTALIRIGA);
_st_totc=printmask().get_bool(F_STTOTALICOL); _st_totc=printmask().get_bool(F_STTOTALICOL);
_st_tota=printmask().get_bool(F_STTOTALIANNO);
_largcol = (_st_totr ? LARG_COLPERC : 0 ) + (selmask().get(F_TIPODATO)[0]=='V' ? LARG_COLVAL : LARG_COLQTA); // valori o quantità _largcol = (_st_totr ? LARG_COLPERC : 0 ) + (selmask().get(F_TIPODATO)[0]=='V' ? LARG_COLVAL : LARG_COLQTA); // valori o quantità
_numcol_dati = selmask().get_int(F_PERIODO); _numcol_dati = selmask().get_int(F_PERIODO);
_col_anno =min(_numcol_dati,printmask().get_int(F_COLANNO)); //numero di colonne che formano un "Anno" _col_anno =min(_numcol_dati,printmask().get_int(F_COLANNO)); //numero di colonne che formano un "Anno"
_numcol = _numcol_dati+ (_st_totr ? int((_numcol_dati -1)/_col_anno+1) : 0); _numcol = _numcol_dati+ (_st_tota ? int((_numcol_dati -1)/_col_anno+1) : 0);
_pagewidth=POS_PRIMACOL+int((FORMWIDTH-POS_PRIMACOL)/_largcol)*_largcol; _pagewidth=POS_PRIMACOL+int((FORMWIDTH-POS_PRIMACOL)/_largcol)*_largcol;
// reset delle variabili per la gestione di gruppi ai vari livelli // reset delle variabili per la gestione di gruppi ai vari livelli
@ -512,7 +514,7 @@ void TStampa_stat::preprocess_header()
lastrow=row; lastrow=row;
for (int c=0; c < _numcol; c++) // colonne for (int c=0; c < _numcol; c++) // colonne
{ {
if (_st_totr && c && (((c)%_col_anno)==0 || c> _numcol_dati) ) if (_st_tota && c && (((c+1)%(_col_anno+1))==0 || c==_numcol-1) )
{ {
set_row_atpos('H',row,nome_totale(1+int((c-1)/_col_anno) ),POS_PRIMACOL+c*_largcol+_largcol/2 ); set_row_atpos('H',row,nome_totale(1+int((c-1)/_col_anno) ),POS_PRIMACOL+c*_largcol+_largcol/2 );
} else { } else {
@ -675,7 +677,7 @@ int TStampa_stat::set_rows_colonne(int row,TRectype &strec)
int col=0; // contatore di colonna corrente int col=0; // contatore di colonna corrente
int position; // posizione fisica della colonna corrente int position; // posizione fisica della colonna corrente
// ********** // **********
// setta i totali di colonne // setta i totali di riga
if (strec.get_char(SVS_TIPO)==LINEA_DATI || if (strec.get_char(SVS_TIPO)==LINEA_DATI ||
strec.get_char(SVS_TIPO)==LINEA_RAFFRONTI && printmask().get(F_TIPORAFFRONTO)[0]==AS_VALUE) strec.get_char(SVS_TIPO)==LINEA_RAFFRONTI && printmask().get(F_TIPORAFFRONTO)[0]==AS_VALUE)
{ {
@ -729,7 +731,7 @@ int TStampa_stat::set_rows_colonne(int row,TRectype &strec)
// colonna con la percentuale rispetto al totale di riga // colonna con la percentuale rispetto al totale di riga
if (_st_totr && aggiungi_perc && !_tot_riga[int(c/_col_anno)].is_zero()) if (_st_totr && aggiungi_perc && !_tot_riga[int(c/_col_anno)].is_zero())
{ {
set_row_atpos('R',row,((real)(strec.get_real(colname)/_tot_riga[int(c/_col_anno)]*100.0)).string(PICTURE_PERCENT),POS_PRIMACOL+(col+1)*_largcol-LARG_COLPERC); set_row_atpos('R',row,((real)(strec.get_real(colname)/_tot_riga[int(c/_col_anno)]*100.0)).string(PICTURE_PERCENT),position+_largcol-LARG_COLPERC);
} }
// riga con i totali di colonna // riga con i totali di colonna
if (_st_totc && aggiungi_perc ) if (_st_totc && aggiungi_perc )
@ -738,18 +740,20 @@ int TStampa_stat::set_rows_colonne(int row,TRectype &strec)
if (!_rec_totale.get_real(colname).is_zero()) if (!_rec_totale.get_real(colname).is_zero())
{ {
r_totc=((real)(strec.get_real(colname)/_rec_totale.get_real(colname)*100.0)).string(PICTURE_PERCENT); r_totc=((real)(strec.get_real(colname)/_rec_totale.get_real(colname)*100.0)).string(PICTURE_PERCENT);
set_row_atpos('R',row+1,(const char *)r_totc,POS_PRIMACOL+col*_largcol+_largcol-LARG_COLPERC); set_row_atpos('R',row+1,(const char *)r_totc,position+_largcol-LARG_COLPERC);
} else { } else {
// aggiunge comunque una riga vuota per la spaziatura // aggiunge comunque una riga vuota per la spaziatura
set_row_atpos('R',row+1,"",0); set_row_atpos('R',row+1,"",0);
} }
} }
// colonna con il totale di un "anno" // colonna con il totale di un "anno"
if (_st_totr && aggiungi_perc && (((c+1)%_col_anno)==0 || c== _numcol_dati-1)) if (_st_tota && aggiungi_perc && (((c+1)%_col_anno)==0 || c== _numcol_dati-1))
{ {
col++; col++;
set_row_atpos('R',row,(const char *)_tot_riga[int(c/_col_anno)].string(PICTURE),POS_PRIMACOL+col*_largcol); position = POS_PRIMACOL+col*_largcol;
set_row_atpos('R',row,(const char *)real(100).string(PICTURE_PERCENT),POS_PRIMACOL+col*_largcol+_largcol-LARG_COLPERC); set_row_atpos('R',row,(const char *)_tot_riga[int(c/_col_anno)].string(PICTURE),position);
if (_st_totr && aggiungi_perc)
set_row_atpos('R',row,(const char *)real(100).string(PICTURE_PERCENT),position+_largcol-LARG_COLPERC);
} }
col++; col++;
} }
@ -812,7 +816,7 @@ int TStampa_stat::handle_levchange(int row,const int level)
lencode=rec_grp2.get(SVS_CODICE).len(); lencode=rec_grp2.get(SVS_CODICE).len();
} }
adjust_record(rec_grp1,lencode); adjust_record(rec_grp1,lencode);
wrk_row.fill('-',_largcol*_numcol); wrk_row.fill('-',_pagewidth-POS_PRIMACOL);
set_row_atpos('R',++row,(const char *)wrk_row,POS_PRIMACOL); set_row_atpos('R',++row,(const char *)wrk_row,POS_PRIMACOL);
wrk_row ="Totale "; wrk_row ="Totale ";
wrk_row << partkey_name(rec_grp1.get(SVS_LEVCODE)); wrk_row << partkey_name(rec_grp1.get(SVS_LEVCODE));
@ -1167,7 +1171,7 @@ void TStampa_stat::put_column(TRectype & statrec,int col,TSVriep_record& rieprec
{ {
real r,fc; real r,fc;
static TString colname("Rxx"); static TString colname("Rxx");
CHECK(col>=0,"Le colonne partono da 0"); if (col<0 || col> SVS_NUMCOLONNE) return;
colname=SVS_COLNAME; colname=SVS_COLNAME;
colname << col; colname << col;
r=statrec.get_real(colname); r=statrec.get_real(colname);
@ -1397,9 +1401,9 @@ void TStampa_stat::genera_file(const char *outfn)
key.cut(0); key.cut(0);
for (int l=0; l< num_liv_output; l++) for (int l=0; l< num_liv_output; l++)
{ {
static TString lev_code; static TString16 levcode;
lev_code=s_chiave.cell(l,s_chiave.cid2index(S_CAMPO)); levcode=s_chiave.cell(l,s_chiave.cid2index(S_CAMPO));
key << get_part(lev_code,curr); key << get_part(levcode,curr);
// setta il range in base all'algoritmo (Valori/progressivi/mobili) // setta il range in base all'algoritmo (Valori/progressivi/mobili)
const int range=(alg=='V'? col : alg=='P' ? ((1+int(col/_col_anno))*_col_anno-1) : (col+_col_anno-1)); const int range=(alg=='V'? col : alg=='P' ? ((1+int(col/_col_anno))*_col_anno-1) : (col+_col_anno-1));
if (col>=first_col) // periodo da osservare if (col>=first_col) // periodo da osservare
@ -1409,7 +1413,7 @@ void TStampa_stat::genera_file(const char *outfn)
update_file(" ","T",LINEA_DATI,num_liv_output,c,curr); update_file(" ","T",LINEA_DATI,num_liv_output,c,curr);
if (*s_chiave.cell(l,s_chiave.cid2index(S_TOTALE))=='X') if (*s_chiave.cell(l,s_chiave.cid2index(S_TOTALE))=='X')
for (int c=max(col,0);c <= range ; c++) for (int c=max(col,0);c <= range ; c++)
update_file(key,lev_code,LINEA_DATI,num_liv_output-l-1,c,curr); update_file(key,levcode,LINEA_DATI,num_liv_output-l-1,c,curr);
} }
if (first_raffr !=first_col && col >= first_raffr && col<=first_raffr+_numcol_dati) // periodo da confrontare if (first_raffr !=first_col && col >= first_raffr && col<=first_raffr+_numcol_dati) // periodo da confrontare
{ {
@ -1418,7 +1422,7 @@ void TStampa_stat::genera_file(const char *outfn)
update_file(" Totale","T",LINEA_RAFFRONTI, num_liv_output , c -first_raffr,curr); update_file(" Totale","T",LINEA_RAFFRONTI, num_liv_output , c -first_raffr,curr);
if (*s_chiave.cell(l,s_chiave.cid2index(S_TOTALE))=='X') if (*s_chiave.cell(l,s_chiave.cid2index(S_TOTALE))=='X')
for (int c=max(col,0); c <= range; c++) for (int c=max(col,0); c <= range; c++)
update_file(key,lev_code,LINEA_RAFFRONTI,num_liv_output-l-1, c -first_raffr , curr); update_file(key,levcode,LINEA_RAFFRONTI,num_liv_output-l-1, c -first_raffr , curr);
} }
} }
} }
@ -1561,6 +1565,7 @@ const TString& TStampa_stat::get_part(TString & lev_code, TSVriep_record &riepre
return park.rpad(3); return park.rpad(3);
case 'F': // cliente / fornitore case 'F': // cliente / fornitore
case 'C': // cliente / fornitore case 'C': // cliente / fornitore
if (rieprec.get_char(SVR_TIPOCF)>' ')
lev_code[0]=rieprec.get_char(SVR_TIPOCF); lev_code[0]=rieprec.get_char(SVR_TIPOCF);
park.format("%c%6d",lev_code[0],rieprec.get_int(SVR_CODCF)); park.format("%c%6d",lev_code[0],rieprec.get_int(SVR_CODCF));
return park; return park;

View File

@ -7,6 +7,8 @@
#define F_TIPOTOTALIRIGA 110 #define F_TIPOTOTALIRIGA 110
#define F_STTOTALICOL 111 #define F_STTOTALICOL 111
#define F_TIPOTOTALICOL 112 #define F_TIPOTOTALICOL 112
#define F_STTOTALIANNO 113
#define F_COLANNO 114
#define F_FLAGSTOTALI 200 #define F_FLAGSTOTALI 200
#define F_FLAGT1 200 #define F_FLAGT1 200
@ -18,7 +20,6 @@
#define F_FLAGT7 206 #define F_FLAGT7 206
#define F_FLAGT8 207 #define F_FLAGT8 207
#define F_FLAGT9 208 #define F_FLAGT9 208
#define F_COLANNO 210
#define AS_VALUE 'V' #define AS_VALUE 'V'
#define AS_DIFF 'D' #define AS_DIFF 'D'
#define AS_PERC 'P' #define AS_PERC 'P'

View File

@ -34,34 +34,46 @@ BEGIN
ITEM "P|come percentuale" ITEM "P|come percentuale"
END END
BOOL F_STTOTALIRIGA BOOL F_STTOTALIANNO
BEGIN BEGIN
PROMPT 2 4 "Stampo i totali di riga" PROMPT 2 4 "Stampo i totali dei periodi di base"
MESSAGE TRUE ENABLE,F_TIPOTOTALIRIGA|ENABLE,F_COLANNO MESSAGE TRUE ENABLE,F_COLANNO|ENABLE,F_STTOTALIRIGA
MESSAGE FALSE CLEAR,F_TIPOTOTALIRIGA|DISABLE,F_COLANNO MESSAGE FALSE DISABLE,F_COLANNO|" ",F_STTOTALIRIGA
END
LIST F_TIPOTOTALIRIGA 1 25
BEGIN
PROMPT 29 4 ""
ITEM "P|come percentuale"
END END
NUM F_COLANNO 2 NUM F_COLANNO 2
BEGIN BEGIN
PROMPT 2 5 "Numero di colonne del periodo di base " PROMPT 42 4 "composti da "
END
TEXT DLG_NULL
BEGIN
PROMPT 60 4 "colonne "
END
BOOL F_STTOTALIRIGA
BEGIN
PROMPT 2 6 "Stampo i totali di riga"
MESSAGE TRUE ENABLE,F_TIPOTOTALIRIGA
MESSAGE FALSE CLEAR,F_TIPOTOTALIRIGA
END
LIST F_TIPOTOTALIRIGA 1 25
BEGIN
PROMPT 29 6 ""
ITEM "P|come percentuale"
END END
BOOL F_STTOTALICOL BOOL F_STTOTALICOL
BEGIN BEGIN
PROMPT 2 7 "Stampo i totali di colonna" PROMPT 2 8 "Stampo i totali di colonna"
MESSAGE TRUE ENABLE,F_TIPOTOTALICOL MESSAGE TRUE ENABLE,F_TIPOTOTALICOL
MESSAGE FALSE CLEAR,F_TIPOTOTALICOL MESSAGE FALSE CLEAR,F_TIPOTOTALICOL
END END
LIST F_TIPOTOTALICOL 1 25 LIST F_TIPOTOTALICOL 1 25
BEGIN BEGIN
PROMPT 35 7 "" PROMPT 35 8 ""
ITEM "P|come percentuale" ITEM "P|come percentuale"
END END