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:
alex 2001-04-30 15:10:48 +00:00
parent 6c73d4919e
commit a46907a934
5 changed files with 203 additions and 96 deletions

View File

@ -2,5 +2,4 @@
#define QAPPNAME "campo" #define QAPPNAME "campo"
#define QFIRMNAME "A.G.A. Informatica Srl" #define QFIRMNAME "A.G.A. Informatica Srl"
#include <default.url> #include <mainmenu.url>

View File

@ -2,5 +2,4 @@
#define QAPPNAME "campo" #define QAPPNAME "campo"
#define QFIRMNAME "A.G.A. Informatica Srl" #define QFIRMNAME "A.G.A. Informatica Srl"
#include <default.url> #include <mainmenu.url>

View File

@ -367,6 +367,8 @@ class TStampa_stat : public TPrint_application
TToken_string _key; TToken_string _key;
TString _last_key; TString _last_key;
TRectype * _last_data;
TString_array _des_fld; TString_array _des_fld;
TString_array _file_fld; TString_array _file_fld;
TString_array _key_fld; TString_array _key_fld;
@ -381,12 +383,14 @@ class TStampa_stat : public TPrint_application
int _last_lev_grp, // livello dell'ultimo raggruppamento incontrato int _last_lev_grp, // livello dell'ultimo raggruppamento incontrato
_liv_riga; // livello della riga _liv_riga; // livello della riga
TArray _group_recs; // array dei record dei raggruppamenti 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 int _indent[MAX_ROWS];// array delle posizione di indentazione
real _totval_riga[SVS_NUMCOLONNE]; //array dei totali degli "anni" della riga real _totval_riga[SVS_NUMCOLONNE]; //array dei totali degli "anni" della riga
real _totqta_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 int _colpage, // numero di pagina ripetuta per contenere in larghezza tutte le colonne
_last_page; // ultima pagina della "prima copia" _last_page; // ultima pagina della "prima copia"
int _larg[7];
int _largcol, // larghezza di una colonna int _largcol, // larghezza di una colonna
_numcol_dati, // numero di colonne contenenti dati _numcol_dati, // numero di colonne contenenti dati
_numcol, // numero totale di colonne (dati+totali) _numcol, // numero totale di colonne (dati+totali)
@ -480,6 +484,8 @@ public:
TMask& printmask() const { return *_print_msk; } TMask& printmask() const { return *_print_msk; }
TMask& expmask() const { return *_export_msk; } TMask& expmask() const { return *_export_msk; }
virtual bool menu(MENU_TAG); virtual bool menu(MENU_TAG);
TStampa_stat() {}
virtual ~TStampa_stat() { }
}; };
inline TStampa_stat& app() { return (TStampa_stat&)main_app(); } 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_totc=printmask().get_bool(F_STTOTALICOL);
_st_tota=printmask().get_bool(F_STTOTALIANNO); _st_tota=printmask().get_bool(F_STTOTALIANNO);
_largcol = 0; _largcol = 0;
for (int l = 0; l < 7; l++)
_larg[l] = 0;
if (_st_val) if (_st_val)
{ {
_largcol += LARG_COLVAL; _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) if (_st_totr)
{
_largcol += LARG_COLPERC; _largcol += LARG_COLPERC;
_larg[2] = LARG_COLPERC;
}
} }
if (_st_qta) if (_st_qta)
{ {
_largcol += LARG_COLQTA; _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) if (_st_totr)
{
_largcol += LARG_COLPERC; _largcol += LARG_COLPERC;
_larg[5] = LARG_COLPERC;
}
} }
if (_st_uni) if (_st_uni)
{
_largcol += LARG_COLVAL; _largcol += LARG_COLVAL;
_larg[6] = LARG_COLVAL;
}
if (_largcol <= 0) if (_largcol <= 0)
_largcol = 1; _largcol = 1;
@ -604,70 +658,114 @@ void TStampa_stat::preprocess_header()
else else
{ {
TString col1, col2; TString col1, col2;
int pos = POS_PRIMACOL+c*_largcol;
nome_colonna1(col, col1); nome_colonna1(col, col1);
nome_colonna2(col, col2); 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; // const bool multiprint = (_st_val + _st_qta + _st_uni) > 1;
if (multiprint) // 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(); pos += _larg[0];
col2.trim(); set_row_atpos('H',lastrow,"Valore", pos - 7);
_wrk_row = col1; _wrk_row << ' ' << col2; if (printmask().get_bool(F_STRAFFRONTO))
_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)
{ {
set_row_atpos('H',lastrow,"Valore", pos + LARG_COLVAL-7); pos += _larg[1];
pos += LARG_COLVAL; switch (printmask().get(F_TIPORAFFRONTO)[0])
if (_st_totr) {
pos += LARG_COLPERC; case COMP_AS_DIFF:
} set_row_atpos('H',lastrow,"Differenza", pos - 11);
if (_st_qta) 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); set_row_atpos('H', lastrow, "Perc.", pos);
pos += LARG_COLQTA; pos += _larg[2];
if (_st_totr) }
pos += LARG_COLPERC; }
} if (_st_qta)
if (_st_uni) {
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 else
{ {
if (col2.not_empty()) if (col2.not_empty())
{ {
lastrow=row+1; lastrow=row+1;
set_row_atpos('H',row+1,col2,POS_PRIMACOL+c*_largcol);
} }
} }
*/
col++; col++;
} }
if (_st_totr) /* if (_st_totr)
{ {
int pos = POS_PRIMACOL+c*_largcol; int pos = POS_PRIMACOL+c*_largcol;
if (_st_val) if (_st_val)
{ {
lastrow=row+1; lastrow=row+1;
pos += LARG_COLVAL; pos += _larg[0] + _larg;
set_row_atpos('H', lastrow, "Perc.", pos);
pos += LARG_COLPERC; pos += LARG_COLPERC;
} }
if (_st_qta) if (_st_qta)
{ {
lastrow=row+1; lastrow=row+1;
pos += LARG_COLQTA; pos += LARG_COLQTA;
set_row_atpos('H', lastrow, "Perc.", pos);
} }
} }
*/
} }
row=lastrow; row=lastrow;
set_header(++row,""); set_header(++row,"");
@ -676,14 +774,6 @@ void TStampa_stat::preprocess_header()
const int lasthline=(printmask().get_bool(F_STRAFFRONTO )? 5 :4); 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); _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++; 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); set_background(_wrk_row);
} }
@ -736,7 +826,7 @@ const TString& TStampa_stat::nome_colonna1(int c, TString& s_park)
break; break;
} }
} }
s_park.center_just(_largcol); // s_park.center_just(_largcol);
return s_park; return s_park;
} }
@ -782,7 +872,7 @@ const TString& TStampa_stat::nome_colonna2(int c, TString& s_park)
break; break;
} }
} }
s_park.center_just(LARG_COLVAL); // s_park.center_just(LARG_COLVAL);
return s_park; return s_park;
} }
@ -870,19 +960,28 @@ void TStampa_stat::set_page(int file, int count)
// ***************** // *****************
// gestione totali di raggruppamento // gestione totali di raggruppamento
row = handle_levchange(row, level); row = handle_levchange(row, level);
const char tipo_riga = *strec.get(SVS_TIPO);
if (level > 0) if (level > 0)
{ {
// salva i record dei livelli di raggruppamento // salva i record dei livelli di raggruppamento
if (level == lastlev) if (level == lastlev)
strec.zero(SVS_CODICE); 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" // gestione delle "righe"
if (level != lastlev && if (level != lastlev &&
printmask().get_bool(F_FLAGSTOTALI+lastlev-level)) printmask().get_bool(F_FLAGSTOTALI+lastlev-level))
{ {
switch (*strec.get(SVS_TIPO)) switch (tipo_riga)
{ {
case LINEA_DATI: case LINEA_DATI:
if (level >= _liv_riga) 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 // 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) int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
{ {
TRectype last_data(LF_SVSTAT); TRectype &last_data = *_last_data;
TString16 colname; TString16 colname;
TString r_totc; TString r_totc;
real col_value; 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++) for (int c = 0; c < _numcol_dati; c++)
{ {
const int idx = int(c / _col_anno); 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 for (int t = 0; t < 3; t++) // Ciclo su valore, quantita' e unitario
{ {
if (t == 0 && !_st_val) if (t == 0 && !_st_val)
@ -1007,28 +1107,10 @@ int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
colval /= qta; colval /= qta;
} }
position = POS_PRIMACOL + col*_largcol; int offset = (t - 1) * 3;
if (t == 1 && _st_qta) if (offset >= 0)
{ position += _larg[offset + 0] + _larg[offset + 1] + _larg[offset + 2];
if (_st_val) offset += 3;
{
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;
}
}
switch (strec.get_char(SVS_TIPO)) 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: case COMP_AS_DIFF:
if (t < 2) if (t < 2)
{ {
r_totc= "+"; set_row_atpos('R',row, colval.string(PICT),position);
r_totc << PICT; set_row_atpos('R',row,((real)(last_data.get_real(colname)-strec.get_real(colname))).string(PICT),position + _larg[offset]);
set_row_atpos('R',row,((real)(last_data.get_real(colname)-strec.get_real(colname))).string(r_totc),position);
} }
break; break;
//?!?! aggiungi_perc=FALSE;
case COMP_AS_PERC: case COMP_AS_PERC:
if (t < 2) if (t < 2)
{ {
position += t == 0 ? LARG_COLVAL : LARG_COLQTA; set_row_atpos('R',row, colval.string(PICT),position);
if (!colval.is_zero()) if (!colval.is_zero())
{ {
real p = 100.0 * last_data.get_real(colname) / colval; p.round(1); real p = 100.0 * (last_data.get_real(colname) - colval) / colval; p.round(1);
set_row_atpos('R',row,p.string(PICTURE_PERCENT),position); set_row_atpos('R',row,p.string(PICTURE_PERCENT),position + _larg[offset] );
} }
aggiungi_perc=FALSE; aggiungi_perc=FALSE;
} }
@ -1070,12 +1150,12 @@ int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
break; break;
} }
if (t < 2) if (t < 2 && strec.get_char(SVS_TIPO) == LINEA_DATI)
{ {
// 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.is_zero()) 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); real p = 100.0 * colval / tot_riga; p.round(1);
set_row_atpos('R',row,p.string(PICTURE_PERCENT),pos); 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); real p = 100.0 * colval / tot; p.round(1);
r_totc = p.string(PICTURE_PERCENT); r_totc = p.string(PICTURE_PERCENT);
set_row_atpos('R',row+1,(const char *)r_totc,position+_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);
} }
else
set_row_atpos('R',row+1,"",0);
// aggiunge comunque una riga vuota per la spaziatura
} }
// colonna con il totale di un "anno" // colonna con il totale di un "anno"
if (_st_tota && 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++;
int position_a = position + _largcol;
position = POS_PRIMACOL+col*_largcol; /* position = POS_PRIMACOL + col*_largcol;
if (_st_val && _st_qta && t == 1) if (_st_val && _st_qta && t == 1)
{ {
position += LARG_COLVAL; position += LARG_COLVAL;
if (_st_totr) position += LARG_COLPERC; 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) if (_st_totr && aggiungi_perc)
{ {
position += t == 0 ? LARG_COLVAL : LARG_COLQTA; // position += t == 0 ? LARG_COLVAL : LARG_COLQTA;
set_row_atpos('R',row,(const char *)real(100).string(PICTURE_PERCENT),position); 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! //_wrk_row.cut(LARG_COLCODICE); there are also @ chars!
set_row_atpos('R',++row,(const char *)_wrk_row,_indent[_last_lev_grp]); set_row_atpos('R',++row,(const char *)_wrk_row,_indent[_last_lev_grp]);
row = set_rows_colonne(row, rec_grp1); 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(); _last_lev_grp = numlevels();
_liv_riga = _last_lev_grp+1; _liv_riga = _last_lev_grp+1;
_group_recs.destroy(); _group_recs.destroy();
_group_recs_raff.destroy();
int pos=0; int pos=0;
for (int l = 0; l <= _last_lev_grp; l++) for (int l = 0; l <= _last_lev_grp; l++)
{ {
@ -1295,7 +1389,9 @@ bool TStampa_stat::user_create()
// cache per l'output // cache per l'output
_svcache=NULL; _svcache=NULL;
set_real_picture(""); set_real_picture("");
_last_data = new TRectype(LF_SVSTAT);
return TRUE; return TRUE;
} }
@ -1322,6 +1418,7 @@ bool TStampa_stat::user_destroy()
delete _agenti; delete _agenti;
delete _spp; delete _spp;
delete _prs; delete _prs;
delete _last_data;
delete current_cursor()->relation(); delete current_cursor()->relation();
return TRUE; return TRUE;

View File

@ -2,5 +2,4 @@
#define QAPPNAME "campo" #define QAPPNAME "campo"
#define QFIRMNAME "A.G.A. Informatica Srl" #define QFIRMNAME "A.G.A. Informatica Srl"
#include <default.url> #include <mainmenu.url>

View File

@ -18,6 +18,7 @@ protected:
virtual void on_config_change(); virtual void on_config_change();
public: public:
static bool datein_handler(TMask_field& f, KEY k);
bool kill_stats(const TDate& dfr, const TDate& dto); bool kill_stats(const TDate& dfr, const TDate& dto);
void calc_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"); 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() void TRicalcolo_stats::main_loop()
{ {
TMask m("sv2100a"); TMask m("sv2100a");
m.set_handler(F_FROMDATE, datein_handler);
while (m.run() == K_ENTER) while (m.run() == K_ENTER)
{ {
const TDate dfr(m.get(F_FROMDATE)); const TDate dfr(m.get(F_FROMDATE));