- 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.)
bool _st_totr; // flag stampa totali di riga
bool _st_totc; // flag stampa totali di colonna
bool _st_tota; // flag stampa totali di "anno"
static TString s_park; // stringa di lavoro
// ******************
// stampa file di Output
@ -458,10 +459,11 @@ bool TStampa_stat::set_print(int i)
_st_totr=printmask().get_bool(F_STTOTALIRIGA);
_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à
_numcol_dati = selmask().get_int(F_PERIODO);
_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;
// reset delle variabili per la gestione di gruppi ai vari livelli
@ -512,7 +514,7 @@ void TStampa_stat::preprocess_header()
lastrow=row;
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 );
} else {
@ -675,7 +677,7 @@ int TStampa_stat::set_rows_colonne(int row,TRectype &strec)
int col=0; // contatore di 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 ||
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
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
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())
{
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 {
// aggiunge comunque una riga vuota per la spaziatura
set_row_atpos('R',row+1,"",0);
}
}
// 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++;
set_row_atpos('R',row,(const char *)_tot_riga[int(c/_col_anno)].string(PICTURE),POS_PRIMACOL+col*_largcol);
set_row_atpos('R',row,(const char *)real(100).string(PICTURE_PERCENT),POS_PRIMACOL+col*_largcol+_largcol-LARG_COLPERC);
position = POS_PRIMACOL+col*_largcol;
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++;
}
@ -812,7 +816,7 @@ int TStampa_stat::handle_levchange(int row,const int level)
lencode=rec_grp2.get(SVS_CODICE).len();
}
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);
wrk_row ="Totale ";
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;
static TString colname("Rxx");
CHECK(col>=0,"Le colonne partono da 0");
if (col<0 || col> SVS_NUMCOLONNE) return;
colname=SVS_COLNAME;
colname << col;
r=statrec.get_real(colname);
@ -1396,10 +1400,10 @@ void TStampa_stat::genera_file(const char *outfn)
// costruisce il file statistiche...
key.cut(0);
for (int l=0; l< num_liv_output; l++)
{
static TString lev_code;
lev_code=s_chiave.cell(l,s_chiave.cid2index(S_CAMPO));
key << get_part(lev_code,curr);
{
static TString16 levcode;
levcode=s_chiave.cell(l,s_chiave.cid2index(S_CAMPO));
key << get_part(levcode,curr);
// 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));
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);
if (*s_chiave.cell(l,s_chiave.cid2index(S_TOTALE))=='X')
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
{
@ -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);
if (*s_chiave.cell(l,s_chiave.cid2index(S_TOTALE))=='X')
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,7 +1565,8 @@ const TString& TStampa_stat::get_part(TString & lev_code, TSVriep_record &riepre
return park.rpad(3);
case 'F': // cliente / fornitore
case 'C': // cliente / fornitore
lev_code[0]=rieprec.get_char(SVR_TIPOCF);
if (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));
return park;
case 'G': // agente

View File

@ -1,14 +1,16 @@
#ifndef __SV1200B_H
#define __SV1200B_H
#define F_STRAFFRONTO 101
#define F_TIPORAFFRONTO 102
#define F_STTOTALIRIGA 109
#define F_TIPOTOTALIRIGA 110
#define F_STTOTALICOL 111
#define F_TIPOTOTALICOL 112
#define F_STRAFFRONTO 101
#define F_TIPORAFFRONTO 102
#define F_STTOTALIRIGA 109
#define F_TIPOTOTALIRIGA 110
#define F_STTOTALICOL 111
#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_FLAGT2 201
#define F_FLAGT3 202
@ -18,7 +20,6 @@
#define F_FLAGT7 206
#define F_FLAGT8 207
#define F_FLAGT9 208
#define F_COLANNO 210
#define AS_VALUE 'V'
#define AS_DIFF 'D'
#define AS_PERC 'P'

View File

@ -34,34 +34,46 @@ BEGIN
ITEM "P|come percentuale"
END
BOOL F_STTOTALIRIGA
BOOL F_STTOTALIANNO
BEGIN
PROMPT 2 4 "Stampo i totali di riga"
MESSAGE TRUE ENABLE,F_TIPOTOTALIRIGA|ENABLE,F_COLANNO
MESSAGE FALSE CLEAR,F_TIPOTOTALIRIGA|DISABLE,F_COLANNO
END
LIST F_TIPOTOTALIRIGA 1 25
BEGIN
PROMPT 29 4 ""
ITEM "P|come percentuale"
PROMPT 2 4 "Stampo i totali dei periodi di base"
MESSAGE TRUE ENABLE,F_COLANNO|ENABLE,F_STTOTALIRIGA
MESSAGE FALSE DISABLE,F_COLANNO|" ",F_STTOTALIRIGA
END
NUM F_COLANNO 2
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
BOOL F_STTOTALICOL
BEGIN
PROMPT 2 7 "Stampo i totali di colonna"
PROMPT 2 8 "Stampo i totali di colonna"
MESSAGE TRUE ENABLE,F_TIPOTOTALICOL
MESSAGE FALSE CLEAR,F_TIPOTOTALICOL
END
LIST F_TIPOTOTALICOL 1 25
BEGIN
PROMPT 35 7 ""
PROMPT 35 8 ""
ITEM "P|come percentuale"
END