Patch level : xx.7.054
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 1.7 patch 054 aga sul main trunk git-svn-id: svn://10.65.10.50/trunk@9657 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6c73d4919e
commit
a46907a934
@ -2,5 +2,4 @@
|
||||
#define QAPPNAME "campo"
|
||||
#define QFIRMNAME "A.G.A. Informatica Srl"
|
||||
|
||||
#include <default.url>
|
||||
|
||||
#include <mainmenu.url>
|
||||
|
@ -2,5 +2,4 @@
|
||||
#define QAPPNAME "campo"
|
||||
#define QFIRMNAME "A.G.A. Informatica Srl"
|
||||
|
||||
#include <default.url>
|
||||
|
||||
#include <mainmenu.url>
|
||||
|
277
sv/sv1200.cpp
277
sv/sv1200.cpp
@ -367,6 +367,8 @@ class TStampa_stat : public TPrint_application
|
||||
|
||||
TToken_string _key;
|
||||
TString _last_key;
|
||||
TRectype * _last_data;
|
||||
|
||||
TString_array _des_fld;
|
||||
TString_array _file_fld;
|
||||
TString_array _key_fld;
|
||||
@ -381,12 +383,14 @@ class TStampa_stat : public TPrint_application
|
||||
int _last_lev_grp, // livello dell'ultimo raggruppamento incontrato
|
||||
_liv_riga; // livello della riga
|
||||
TArray _group_recs; // array dei record dei raggruppamenti
|
||||
TArray _group_recs_raff; // array dei record dei raggruppamenti (raffronti)
|
||||
int _indent[MAX_ROWS];// array delle posizione di indentazione
|
||||
real _totval_riga[SVS_NUMCOLONNE]; //array dei totali degli "anni" della riga
|
||||
real _totqta_riga[SVS_NUMCOLONNE]; //array dei totali degli "anni" della riga
|
||||
|
||||
int _colpage, // numero di pagina ripetuta per contenere in larghezza tutte le colonne
|
||||
_last_page; // ultima pagina della "prima copia"
|
||||
int _larg[7];
|
||||
int _largcol, // larghezza di una colonna
|
||||
_numcol_dati, // numero di colonne contenenti dati
|
||||
_numcol, // numero totale di colonne (dati+totali)
|
||||
@ -480,6 +484,8 @@ public:
|
||||
TMask& printmask() const { return *_print_msk; }
|
||||
TMask& expmask() const { return *_export_msk; }
|
||||
virtual bool menu(MENU_TAG);
|
||||
TStampa_stat() {}
|
||||
virtual ~TStampa_stat() { }
|
||||
};
|
||||
|
||||
inline TStampa_stat& app() { return (TStampa_stat&)main_app(); }
|
||||
@ -513,21 +519,69 @@ bool TStampa_stat::set_print(int i)
|
||||
_st_totc=printmask().get_bool(F_STTOTALICOL);
|
||||
_st_tota=printmask().get_bool(F_STTOTALIANNO);
|
||||
|
||||
_largcol = 0;
|
||||
_largcol = 0;
|
||||
for (int l = 0; l < 7; l++)
|
||||
_larg[l] = 0;
|
||||
if (_st_val)
|
||||
{
|
||||
_largcol += LARG_COLVAL;
|
||||
_larg[0] = LARG_COLVAL;
|
||||
if (printmask().get_bool(F_STRAFFRONTO))
|
||||
{
|
||||
switch (printmask().get(F_TIPORAFFRONTO)[0])
|
||||
{
|
||||
case COMP_AS_DIFF:
|
||||
_largcol += LARG_COLVAL;
|
||||
_larg[1] = LARG_COLVAL;
|
||||
break;
|
||||
case COMP_AS_PERC:
|
||||
_largcol += LARG_COLPERC;
|
||||
_larg[1] = LARG_COLPERC;
|
||||
break;
|
||||
case COMP_AS_VALUE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (_st_totr)
|
||||
{
|
||||
_largcol += LARG_COLPERC;
|
||||
_larg[2] = LARG_COLPERC;
|
||||
}
|
||||
}
|
||||
if (_st_qta)
|
||||
{
|
||||
_largcol += LARG_COLQTA;
|
||||
_larg[3] = LARG_COLVAL;
|
||||
if (printmask().get_bool(F_STRAFFRONTO))
|
||||
{
|
||||
switch (printmask().get(F_TIPORAFFRONTO)[0])
|
||||
{
|
||||
case COMP_AS_DIFF:
|
||||
_largcol += LARG_COLVAL;
|
||||
_larg[4] = LARG_COLVAL;
|
||||
break;
|
||||
case COMP_AS_PERC:
|
||||
_largcol += LARG_COLPERC;
|
||||
_larg[4] = LARG_COLPERC;
|
||||
break;
|
||||
case COMP_AS_VALUE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (_st_totr)
|
||||
{
|
||||
_largcol += LARG_COLPERC;
|
||||
_larg[5] = LARG_COLPERC;
|
||||
}
|
||||
}
|
||||
if (_st_uni)
|
||||
{
|
||||
_largcol += LARG_COLVAL;
|
||||
_larg[6] = LARG_COLVAL;
|
||||
}
|
||||
|
||||
if (_largcol <= 0)
|
||||
_largcol = 1;
|
||||
|
||||
@ -604,70 +658,114 @@ void TStampa_stat::preprocess_header()
|
||||
else
|
||||
{
|
||||
TString col1, col2;
|
||||
int pos = POS_PRIMACOL+c*_largcol;
|
||||
|
||||
nome_colonna1(col, col1);
|
||||
nome_colonna2(col, col2);
|
||||
_wrk_row = col1;
|
||||
col1 << ' ' << col2;
|
||||
const int l = col1.len();
|
||||
TParagraph_string s(col1, _largcol);
|
||||
|
||||
const bool multiprint = (_st_val + _st_qta + _st_uni) > 1;
|
||||
if (multiprint)
|
||||
// const bool multiprint = (_st_val + _st_qta + _st_uni) > 1;
|
||||
// if (multiprint)
|
||||
// {
|
||||
col1 = s.get();
|
||||
col1.center_just(_largcol);
|
||||
set_row_atpos('H', row, col1, pos);
|
||||
col2 = s.get();
|
||||
if (col2.empty())
|
||||
lastrow = row + 1;
|
||||
else
|
||||
{
|
||||
col2.center_just(_largcol);
|
||||
set_row_atpos('H', row + 1, col2, pos);
|
||||
lastrow = row + 2;
|
||||
}
|
||||
|
||||
// if (multiprint)
|
||||
// {
|
||||
// lastrow = row+1;
|
||||
if (_st_val)
|
||||
{
|
||||
col1.trim();
|
||||
col2.trim();
|
||||
_wrk_row = col1; _wrk_row << ' ' << col2;
|
||||
_wrk_row.center_just(_largcol);
|
||||
}
|
||||
set_row_atpos('H',row,_wrk_row,POS_PRIMACOL+c*_largcol);
|
||||
|
||||
if (multiprint)
|
||||
{
|
||||
lastrow = row+1;
|
||||
int pos = POS_PRIMACOL+c*_largcol;
|
||||
if (_st_val)
|
||||
pos += _larg[0];
|
||||
set_row_atpos('H',lastrow,"Valore", pos - 7);
|
||||
if (printmask().get_bool(F_STRAFFRONTO))
|
||||
{
|
||||
set_row_atpos('H',lastrow,"Valore", pos + LARG_COLVAL-7);
|
||||
pos += LARG_COLVAL;
|
||||
if (_st_totr)
|
||||
pos += LARG_COLPERC;
|
||||
}
|
||||
if (_st_qta)
|
||||
pos += _larg[1];
|
||||
switch (printmask().get(F_TIPORAFFRONTO)[0])
|
||||
{
|
||||
case COMP_AS_DIFF:
|
||||
set_row_atpos('H',lastrow,"Differenza", pos - 11);
|
||||
break;
|
||||
case COMP_AS_PERC:
|
||||
set_row_atpos('H',lastrow,"%%Diff", pos - 7);
|
||||
break;
|
||||
case COMP_AS_VALUE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (_st_totr)
|
||||
{
|
||||
set_row_atpos('H',lastrow,"Quantita'",pos+LARG_COLQTA-13);
|
||||
pos += LARG_COLQTA;
|
||||
if (_st_totr)
|
||||
pos += LARG_COLPERC;
|
||||
}
|
||||
if (_st_uni)
|
||||
set_row_atpos('H', lastrow, "Perc.", pos);
|
||||
pos += _larg[2];
|
||||
}
|
||||
}
|
||||
if (_st_qta)
|
||||
{
|
||||
pos += _larg[3];
|
||||
set_row_atpos('H',lastrow,"Quantita'",pos - 12);
|
||||
if (printmask().get_bool(F_STRAFFRONTO))
|
||||
{
|
||||
set_row_atpos('H',lastrow,"Medio", pos + LARG_COLVAL-6);
|
||||
}
|
||||
}
|
||||
pos += _larg[4];
|
||||
switch (printmask().get(F_TIPORAFFRONTO)[0])
|
||||
{
|
||||
case COMP_AS_DIFF:
|
||||
set_row_atpos('H',lastrow,"Differenza", pos - 13);
|
||||
break;
|
||||
case COMP_AS_PERC:
|
||||
set_row_atpos('H',lastrow,"%%Diff", pos - 7);
|
||||
break;
|
||||
case COMP_AS_VALUE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (_st_totr)
|
||||
{
|
||||
set_row_atpos('H', lastrow, "Perc.", pos);
|
||||
pos += _larg[5];
|
||||
}
|
||||
}
|
||||
if (_st_uni)
|
||||
set_row_atpos('H',lastrow,"Valore medio", pos + _larg[6] - 12);
|
||||
/* }
|
||||
else
|
||||
{
|
||||
if (col2.not_empty())
|
||||
{
|
||||
lastrow=row+1;
|
||||
set_row_atpos('H',row+1,col2,POS_PRIMACOL+c*_largcol);
|
||||
}
|
||||
}
|
||||
*/
|
||||
col++;
|
||||
}
|
||||
if (_st_totr)
|
||||
/* if (_st_totr)
|
||||
{
|
||||
int pos = POS_PRIMACOL+c*_largcol;
|
||||
if (_st_val)
|
||||
{
|
||||
lastrow=row+1;
|
||||
pos += LARG_COLVAL;
|
||||
set_row_atpos('H', lastrow, "Perc.", pos);
|
||||
pos += _larg[0] + _larg;
|
||||
pos += LARG_COLPERC;
|
||||
}
|
||||
if (_st_qta)
|
||||
{
|
||||
lastrow=row+1;
|
||||
pos += LARG_COLQTA;
|
||||
set_row_atpos('H', lastrow, "Perc.", pos);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
row=lastrow;
|
||||
set_header(++row,"");
|
||||
@ -676,14 +774,6 @@ void TStampa_stat::preprocess_header()
|
||||
const int lasthline=(printmask().get_bool(F_STRAFFRONTO )? 5 :4);
|
||||
_wrk_row.format("PnW1l(1,2,%d,2)l(1,%d,%d,%d)l(1,%d,%d,%d)",_pagewidth,lasthline,_pagewidth,lasthline,row,_pagewidth,row);
|
||||
row++;
|
||||
/*
|
||||
for (c=0; c < _numcol; c++) // colonne
|
||||
{
|
||||
// background
|
||||
_wrk_row << "l(" << POS_PRIMACOL+c*_largcol << ",4," ;
|
||||
_wrk_row << POS_PRIMACOL+c*_largcol << ',' << (int)printer().rows() << ')';
|
||||
}
|
||||
*/
|
||||
set_background(_wrk_row);
|
||||
}
|
||||
|
||||
@ -736,7 +826,7 @@ const TString& TStampa_stat::nome_colonna1(int c, TString& s_park)
|
||||
break;
|
||||
}
|
||||
}
|
||||
s_park.center_just(_largcol);
|
||||
// s_park.center_just(_largcol);
|
||||
return s_park;
|
||||
}
|
||||
|
||||
@ -782,7 +872,7 @@ const TString& TStampa_stat::nome_colonna2(int c, TString& s_park)
|
||||
break;
|
||||
}
|
||||
}
|
||||
s_park.center_just(LARG_COLVAL);
|
||||
// s_park.center_just(LARG_COLVAL);
|
||||
return s_park;
|
||||
}
|
||||
|
||||
@ -870,19 +960,28 @@ void TStampa_stat::set_page(int file, int count)
|
||||
// *****************
|
||||
// gestione totali di raggruppamento
|
||||
row = handle_levchange(row, level);
|
||||
const char tipo_riga = *strec.get(SVS_TIPO);
|
||||
if (level > 0)
|
||||
{
|
||||
// salva i record dei livelli di raggruppamento
|
||||
if (level == lastlev)
|
||||
strec.zero(SVS_CODICE);
|
||||
_group_recs.add(strec,level);
|
||||
switch (tipo_riga)
|
||||
{
|
||||
case LINEA_DATI:
|
||||
_group_recs.add(strec,level);
|
||||
break;
|
||||
case LINEA_RAFFRONTI:
|
||||
_group_recs_raff.add(strec,level);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// *****************
|
||||
// gestione delle "righe"
|
||||
if (level != lastlev &&
|
||||
printmask().get_bool(F_FLAGSTOTALI+lastlev-level))
|
||||
{
|
||||
switch (*strec.get(SVS_TIPO))
|
||||
switch (tipo_riga)
|
||||
{
|
||||
case LINEA_DATI:
|
||||
if (level >= _liv_riga)
|
||||
@ -922,8 +1021,8 @@ void TStampa_stat::set_page(int file, int count)
|
||||
|
||||
// fa le set row per la "riga" contenente i valori delle colonne di statistica
|
||||
int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
|
||||
{
|
||||
TRectype last_data(LF_SVSTAT);
|
||||
{
|
||||
TRectype &last_data = *_last_data;
|
||||
TString16 colname;
|
||||
TString r_totc;
|
||||
real col_value;
|
||||
@ -982,6 +1081,7 @@ int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
|
||||
for (int c = 0; c < _numcol_dati; c++)
|
||||
{
|
||||
const int idx = int(c / _col_anno);
|
||||
position = POS_PRIMACOL + col*_largcol;
|
||||
for (int t = 0; t < 3; t++) // Ciclo su valore, quantita' e unitario
|
||||
{
|
||||
if (t == 0 && !_st_val)
|
||||
@ -1007,28 +1107,10 @@ int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
|
||||
colval /= qta;
|
||||
}
|
||||
|
||||
position = POS_PRIMACOL + col*_largcol;
|
||||
if (t == 1 && _st_qta)
|
||||
{
|
||||
if (_st_val)
|
||||
{
|
||||
position += LARG_COLVAL;
|
||||
if (_st_totr) position += LARG_COLPERC;
|
||||
}
|
||||
}
|
||||
if (t == 2 && _st_uni)
|
||||
{
|
||||
if (_st_val)
|
||||
{
|
||||
position += LARG_COLVAL;
|
||||
if (_st_totr) position += LARG_COLPERC;
|
||||
}
|
||||
if (_st_qta)
|
||||
{
|
||||
position += LARG_COLQTA;
|
||||
if (_st_totr) position += LARG_COLPERC;
|
||||
}
|
||||
}
|
||||
int offset = (t - 1) * 3;
|
||||
if (offset >= 0)
|
||||
position += _larg[offset + 0] + _larg[offset + 1] + _larg[offset + 2];
|
||||
offset += 3;
|
||||
|
||||
switch (strec.get_char(SVS_TIPO))
|
||||
{
|
||||
@ -1045,20 +1127,18 @@ int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
|
||||
case COMP_AS_DIFF:
|
||||
if (t < 2)
|
||||
{
|
||||
r_totc= "+";
|
||||
r_totc << PICT;
|
||||
set_row_atpos('R',row,((real)(last_data.get_real(colname)-strec.get_real(colname))).string(r_totc),position);
|
||||
set_row_atpos('R',row, colval.string(PICT),position);
|
||||
set_row_atpos('R',row,((real)(last_data.get_real(colname)-strec.get_real(colname))).string(PICT),position + _larg[offset]);
|
||||
}
|
||||
break;
|
||||
//?!?! aggiungi_perc=FALSE;
|
||||
case COMP_AS_PERC:
|
||||
if (t < 2)
|
||||
{
|
||||
position += t == 0 ? LARG_COLVAL : LARG_COLQTA;
|
||||
set_row_atpos('R',row, colval.string(PICT),position);
|
||||
if (!colval.is_zero())
|
||||
{
|
||||
real p = 100.0 * last_data.get_real(colname) / colval; p.round(1);
|
||||
set_row_atpos('R',row,p.string(PICTURE_PERCENT),position);
|
||||
real p = 100.0 * (last_data.get_real(colname) - colval) / colval; p.round(1);
|
||||
set_row_atpos('R',row,p.string(PICTURE_PERCENT),position + _larg[offset] );
|
||||
}
|
||||
aggiungi_perc=FALSE;
|
||||
}
|
||||
@ -1070,12 +1150,12 @@ int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
|
||||
break;
|
||||
}
|
||||
|
||||
if (t < 2)
|
||||
if (t < 2 && strec.get_char(SVS_TIPO) == LINEA_DATI)
|
||||
{
|
||||
// colonna con la percentuale rispetto al totale di riga
|
||||
if (_st_totr && aggiungi_perc && !tot_riga.is_zero())
|
||||
{
|
||||
const int pos = position + (t == 0 ? LARG_COLVAL : LARG_COLQTA);
|
||||
const int pos = position + _larg[offset] + _larg[offset + 1];
|
||||
real p = 100.0 * colval / tot_riga; p.round(1);
|
||||
set_row_atpos('R',row,p.string(PICTURE_PERCENT),pos);
|
||||
}
|
||||
@ -1089,27 +1169,29 @@ int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
|
||||
real p = 100.0 * colval / tot; p.round(1);
|
||||
r_totc = p.string(PICTURE_PERCENT);
|
||||
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);
|
||||
}
|
||||
else
|
||||
set_row_atpos('R',row+1,"",0);
|
||||
// aggiunge comunque una riga vuota per la spaziatura
|
||||
}
|
||||
// colonna con il totale di un "anno"
|
||||
if (_st_tota && aggiungi_perc && (((c+1)%_col_anno)==0 || c== _numcol_dati-1))
|
||||
{
|
||||
col++;
|
||||
|
||||
position = POS_PRIMACOL+col*_largcol;
|
||||
int position_a = position + _largcol;
|
||||
/* position = POS_PRIMACOL + col*_largcol;
|
||||
if (_st_val && _st_qta && t == 1)
|
||||
{
|
||||
position += LARG_COLVAL;
|
||||
if (_st_totr) position += LARG_COLPERC;
|
||||
}
|
||||
set_row_atpos('R',row,(const char *)tot_riga.string(PICT),position);
|
||||
*/
|
||||
|
||||
set_row_atpos('R',row,(const char *)tot_riga.string(PICT),position_a);
|
||||
if (_st_totr && aggiungi_perc)
|
||||
{
|
||||
position += t == 0 ? LARG_COLVAL : LARG_COLQTA;
|
||||
set_row_atpos('R',row,(const char *)real(100).string(PICTURE_PERCENT),position);
|
||||
// position += t == 0 ? LARG_COLVAL : LARG_COLQTA;
|
||||
set_row_atpos('R',row,(const char *)real(100).string(PICTURE_PERCENT),position_a + _larg[offset]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1210,6 +1292,17 @@ int TStampa_stat::handle_levchange(int row, const int level)
|
||||
//_wrk_row.cut(LARG_COLCODICE); there are also @ chars!
|
||||
set_row_atpos('R',++row,(const char *)_wrk_row,_indent[_last_lev_grp]);
|
||||
row = set_rows_colonne(row, rec_grp1);
|
||||
if (printmask().get_bool(F_STRAFFRONTO ))
|
||||
{
|
||||
TRectype& rec_grp_raff=(TRectype &)_group_recs_raff[_last_lev_grp];
|
||||
if (_group_recs_raff.objptr(level+1))
|
||||
{
|
||||
const TRectype& rec_grp= (const TRectype&)_group_recs_raff[level+1];
|
||||
lencode = rec_grp.get(SVS_CODICE).len();
|
||||
}
|
||||
adjust_record(rec_grp_raff,lencode);
|
||||
row = set_rows_colonne(++row, rec_grp_raff);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1223,6 +1316,7 @@ void TStampa_stat::reset_grplevels()
|
||||
_last_lev_grp = numlevels();
|
||||
_liv_riga = _last_lev_grp+1;
|
||||
_group_recs.destroy();
|
||||
_group_recs_raff.destroy();
|
||||
int pos=0;
|
||||
for (int l = 0; l <= _last_lev_grp; l++)
|
||||
{
|
||||
@ -1295,7 +1389,9 @@ bool TStampa_stat::user_create()
|
||||
// cache per l'output
|
||||
_svcache=NULL;
|
||||
|
||||
set_real_picture("");
|
||||
set_real_picture("");
|
||||
|
||||
_last_data = new TRectype(LF_SVSTAT);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -1322,6 +1418,7 @@ bool TStampa_stat::user_destroy()
|
||||
delete _agenti;
|
||||
delete _spp;
|
||||
delete _prs;
|
||||
delete _last_data;
|
||||
|
||||
delete current_cursor()->relation();
|
||||
return TRUE;
|
||||
|
@ -2,5 +2,4 @@
|
||||
#define QAPPNAME "campo"
|
||||
#define QFIRMNAME "A.G.A. Informatica Srl"
|
||||
|
||||
#include <default.url>
|
||||
|
||||
#include <mainmenu.url>
|
||||
|
@ -18,6 +18,7 @@ protected:
|
||||
virtual void on_config_change();
|
||||
|
||||
public:
|
||||
static bool datein_handler(TMask_field& f, KEY k);
|
||||
bool kill_stats(const TDate& dfr, const TDate& dto);
|
||||
void calc_stats(const TDate& dfr, const TDate& dto);
|
||||
};
|
||||
@ -121,10 +122,22 @@ void TRicalcolo_stats::calc_stats(const TDate& dfr, const TDate& dto)
|
||||
message_box("Attenzione: l'archivio riepilogativo delle statistiche ora ricalcolato risulta vuoto");
|
||||
}
|
||||
|
||||
bool TRicalcolo_stats::datein_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (f.to_check(k))
|
||||
{
|
||||
TConfig prassid(CONFIG_DITTA, "Euro");
|
||||
TDate adozione = prassid.get("DataAdozione");
|
||||
if (adozione.ok() && f.get() < adozione)
|
||||
return f.error_box("Impossibile effettuare la ricostruzione statistiche \n a una data inferiore alla data adozione Euro") ;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TRicalcolo_stats::main_loop()
|
||||
{
|
||||
TMask m("sv2100a");
|
||||
m.set_handler(F_FROMDATE, datein_handler);
|
||||
while (m.run() == K_ENTER)
|
||||
{
|
||||
const TDate dfr(m.get(F_FROMDATE));
|
||||
|
Loading…
x
Reference in New Issue
Block a user