- 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:
parent
b8bc385dd0
commit
56f054caa2
@ -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
|
||||
|
17
sv/sv1200b.h
17
sv/sv1200b.h
@ -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'
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user