Reso autoimatizzabile ricalcolo statistiche
git-svn-id: svn://10.65.10.50/branches/R_10_00@22766 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6dc48175f8
commit
d993d1a9fa
131
sv/sv1200.cpp
131
sv/sv1200.cpp
@ -483,7 +483,6 @@ protected:
|
||||
|
||||
TString& build_key(const TRectype& rec);
|
||||
|
||||
|
||||
const TString& nome_colonna1(int c, TString& nome);
|
||||
const TString& nome_colonna2(int c, TString& nome);
|
||||
const TString& nome_totale(int t, TString& nome);
|
||||
@ -498,8 +497,6 @@ 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(); }
|
||||
@ -827,33 +824,33 @@ const TString& TStampa_stat::nome_colonna2(int c, TString& s_park)
|
||||
|
||||
if (freq == maskfreq && numero > 1 && maskfreq==fs_giornaliera)
|
||||
{
|
||||
TDate dto(app()._freq.column_last_day(c));
|
||||
const TDate dto = app()._freq.column_last_day(c);
|
||||
s_park.format(FR("Al %s"),(const char *)dto.string());
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (freq)
|
||||
switch (freq)
|
||||
{
|
||||
case fs_giornaliera:
|
||||
{
|
||||
case fs_giornaliera:
|
||||
{
|
||||
TDate d = din; d += c*numero;
|
||||
s_park.format("%s",(const char *)d.string());
|
||||
}
|
||||
break;
|
||||
case fs_annuale:
|
||||
break;
|
||||
case fs_mensile:
|
||||
s_park.format("%d",din.year()+int((start+c-1)/lastp));
|
||||
break;
|
||||
case fs_settimanale:
|
||||
case fs_quindicinale:
|
||||
case fs_bimestrale:
|
||||
case fs_trimestrale:
|
||||
case fs_quadrimestrale:
|
||||
case fs_semestrale:
|
||||
s_park.format(FR(" anno %d"),din.year()+int((start+c-1)/lastp));
|
||||
break;
|
||||
TDate d = din; d += c*numero;
|
||||
s_park.format("%s",(const char *)d.string());
|
||||
}
|
||||
break;
|
||||
case fs_mensile:
|
||||
s_park.format("%d",din.year()+int((start+c-1)/lastp));
|
||||
break;
|
||||
case fs_settimanale:
|
||||
case fs_quindicinale:
|
||||
case fs_bimestrale:
|
||||
case fs_trimestrale:
|
||||
case fs_quadrimestrale:
|
||||
case fs_semestrale:
|
||||
s_park.format(FR(" anno %d"),din.year()+int((start+c-1)/lastp));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return s_park;
|
||||
}
|
||||
@ -948,12 +945,14 @@ void TStampa_stat::set_page(int file, int count)
|
||||
strec.zero(SVS_CODICE);
|
||||
switch (tipo_riga)
|
||||
{
|
||||
case LINEA_DATI:
|
||||
_group_recs.add(strec,level);
|
||||
break;
|
||||
case LINEA_RAFFRONTI:
|
||||
_group_recs_raff.add(strec,level);
|
||||
break;
|
||||
case LINEA_DATI:
|
||||
_group_recs.add(strec,level);
|
||||
break;
|
||||
case LINEA_RAFFRONTI:
|
||||
_group_recs_raff.add(strec,level);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// *****************
|
||||
@ -963,32 +962,34 @@ void TStampa_stat::set_page(int file, int count)
|
||||
{
|
||||
switch (tipo_riga)
|
||||
{
|
||||
case LINEA_DATI:
|
||||
if (level >= _liv_riga)
|
||||
case LINEA_DATI:
|
||||
if (level >= _liv_riga)
|
||||
{
|
||||
_save_code = strec.get(SVS_CODICE);
|
||||
set_descr(row);
|
||||
}
|
||||
if (level == _liv_riga)
|
||||
row = set_rows_colonne(row, strec);
|
||||
break;
|
||||
case LINEA_RAFFRONTI:
|
||||
if (printmask().get_bool(F_STRAFFRONTO))
|
||||
{
|
||||
if (_save_code != strec.get(SVS_CODICE))
|
||||
{
|
||||
_save_code = strec.get(SVS_CODICE);
|
||||
TRectype stempty(LF_SVSTAT);
|
||||
stempty.put(SVS_CODICE,strec.get(SVS_CODICE));
|
||||
stempty.put(SVS_LEVCODE,strec.get(SVS_LEVCODE));
|
||||
stempty.put(SVS_LIVELLO,strec.get(SVS_LIVELLO));
|
||||
stempty.put(SVS_TIPO,strec.get(SVS_TIPO));
|
||||
set_descr(row);
|
||||
row = set_rows_colonne(row, stempty);
|
||||
}
|
||||
if (level == _liv_riga)
|
||||
row = set_rows_colonne(row, strec);
|
||||
break;
|
||||
case LINEA_RAFFRONTI:
|
||||
if (printmask().get_bool(F_STRAFFRONTO))
|
||||
{
|
||||
if (_save_code != strec.get(SVS_CODICE))
|
||||
{
|
||||
TRectype stempty(LF_SVSTAT);
|
||||
stempty.put(SVS_CODICE,strec.get(SVS_CODICE));
|
||||
stempty.put(SVS_LEVCODE,strec.get(SVS_LEVCODE));
|
||||
stempty.put(SVS_LIVELLO,strec.get(SVS_LIVELLO));
|
||||
stempty.put(SVS_TIPO,strec.get(SVS_TIPO));
|
||||
set_descr(row);
|
||||
row = set_rows_colonne(row, stempty);
|
||||
}
|
||||
if (level == _liv_riga)
|
||||
row = set_rows_colonne(++row, strec);
|
||||
}
|
||||
break;
|
||||
row = set_rows_colonne(++row, strec);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// *****************
|
||||
@ -1187,7 +1188,6 @@ int TStampa_stat::set_rows_colonne(int row, const TRectype &strec)
|
||||
return row;
|
||||
}
|
||||
|
||||
|
||||
void TStampa_stat::set_filled_row(char section,int row,char c,int pos,int len)
|
||||
{
|
||||
const int MAX=100; // limite massimo per una singola set_row; 5 char per costruire la goto
|
||||
@ -1202,8 +1202,6 @@ void TStampa_stat::set_filled_row(char section,int row,char c,int pos,int len)
|
||||
set_row_atpos(section,row,(const char *)_wrk_row,pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// fa le set_row per la "riga" contenente i valori delle colonne di statistica
|
||||
void TStampa_stat::set_row_atpos(char section,int nrow,const char * f,int pos)
|
||||
{
|
||||
@ -1234,9 +1232,10 @@ void TStampa_stat::set_row_atpos(char section,int nrow,const char * f,int pos)
|
||||
repeat_print();
|
||||
switch (section)
|
||||
{
|
||||
case 'R': set_row(nrow,ss); break;
|
||||
case 'H': set_header(nrow,ss); break;
|
||||
case 'F': set_footer(nrow,ss); break;
|
||||
case 'R': set_row(nrow,ss); break;
|
||||
case 'H': set_header(nrow,ss); break;
|
||||
case 'F': set_footer(nrow,ss); break;
|
||||
default : break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1699,9 +1698,7 @@ void TStampa_stat::update_file(const char * key, const char *lev_code,const char
|
||||
statrec->put(SVS_DESCR,"");
|
||||
else
|
||||
{
|
||||
TString descr(get_descrpart(lev_code,curr,fld, row));
|
||||
for (int pos = descr.find('%'); pos >=0; pos = descr.find('%', pos + 2))
|
||||
descr.insert("%", pos);
|
||||
TString descr = safe_string(get_descrpart(lev_code,curr,fld, row));
|
||||
if (descr.len() > SVS_LEN_DESCR)
|
||||
descr.cut(SVS_LEN_DESCR);
|
||||
statrec->put(SVS_DESCR, descr);
|
||||
@ -1814,8 +1811,8 @@ const real TStampa_stat::fc_um(const TRectype& statrec,const TSVriep_record& rie
|
||||
}
|
||||
else
|
||||
{
|
||||
error_box("L'articolo '%s' non ha l'unita' di misura %s\n"
|
||||
"ma esistono statistiche che la utilizzano ugualmente",
|
||||
error_box(FR("L'articolo '%s' non ha l'unità di misura %s\n"
|
||||
"ma esistono statistiche che la utilizzano ugualmente"),
|
||||
(const char*)art, (const char*)um);
|
||||
}
|
||||
}
|
||||
@ -1839,7 +1836,7 @@ const real TStampa_stat::fc_um(const TRectype& statrec,const TSVriep_record& rie
|
||||
void TStampa_stat::invalid_columns(TRectype& statrec)
|
||||
{
|
||||
statrec.zero(SVS_UMQTA);
|
||||
TString16 colname;
|
||||
TString8 colname;
|
||||
for (int col = 0; col < SVS_NUMCOLONNE; col++)
|
||||
{
|
||||
colname.format("%C%d", SVS_QTACOLNAME, col);
|
||||
@ -2134,7 +2131,7 @@ void TStampa_stat::adjust_record(TRectype &strec, int from) const
|
||||
if (lev_code==CHR_CLIFOR)
|
||||
{
|
||||
TString codprec = strec.get(SVS_CODICE).left(from);
|
||||
TString& s = (TString&)strec.get(SVS_CODICE).mid(from);
|
||||
TString s = strec.get(SVS_CODICE).mid(from);
|
||||
while ((lev_code=s.shift())==' ');
|
||||
codprec << s;
|
||||
strec.put(SVS_LEVCODE, lev_code);
|
||||
@ -2145,7 +2142,7 @@ void TStampa_stat::adjust_record(TRectype &strec, int from) const
|
||||
if (from)
|
||||
{
|
||||
TString codprec=strec.get(SVS_CODICE).left(from);
|
||||
TString& s = (TString&)strec.get(SVS_CODICE).mid(from);
|
||||
TString s = strec.get(SVS_CODICE).mid(from);
|
||||
while ((lev_code=s.shift())==' ');
|
||||
codprec << lev_code << s;
|
||||
strec.put(SVS_CODICE,codprec);
|
||||
@ -2590,7 +2587,7 @@ bool TStampa_stat::filename_handler(TMask_field& f, KEY k)
|
||||
TFilename path(fn.path());
|
||||
path.rtrim(1); // Toglie la slash dal path
|
||||
if (!path.exist())
|
||||
return f.error_box(FR("Directory %s non trovato"),(const char *)path);
|
||||
return f.error_box(FR("Cartella %s non trovata"),(const char *)path);
|
||||
else
|
||||
if (fn.exist())
|
||||
return f.yesno_box(FR("File %s esistente: sovrascrivo"), (const char*)fn);
|
||||
|
@ -137,7 +137,12 @@ void TRicalcolo_stats::calc_stats(const TDate& dfr, const TDate& dto)
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
|
||||
TProgind pi(items, TR("Ricalcolo statistiche"), false, true);
|
||||
TString msg; msg << TR("Ricalcolo statistiche");
|
||||
if (dfr.ok())
|
||||
msg << TR(" dal ") << dfr;
|
||||
if (dto.ok())
|
||||
msg << TR(" al ") << dto;
|
||||
TProgind pi(items, msg, false, true);
|
||||
|
||||
long records = 0;
|
||||
_agg.reset();
|
||||
@ -186,17 +191,31 @@ void TRicalcolo_stats::main_loop()
|
||||
{
|
||||
calcola_data_minima();
|
||||
|
||||
TMask m("sv2100a");
|
||||
m.set_handler(F_FROMDATE, datein_handler);
|
||||
m.set(F_FROMDATE, _datamin);
|
||||
|
||||
while (m.run() == K_ENTER)
|
||||
if (argc() >= 3 && _stricmp(argv(2), "-A") == 0)
|
||||
{
|
||||
const TDate dfr(m.get(F_FROMDATE));
|
||||
const TDate dto(m.get(F_TODATE));
|
||||
const TDate dto(TODAY);
|
||||
TDate dfr = dto;
|
||||
dfr.set_day(1);
|
||||
dfr.addmonth(-12);
|
||||
if (dfr < _datamin)
|
||||
dfr = _datamin;
|
||||
if (kill_stats(dfr, dto))
|
||||
calc_stats(dfr, dto);
|
||||
}
|
||||
else
|
||||
{
|
||||
TMask m("sv2100a");
|
||||
m.set_handler(F_FROMDATE, datein_handler);
|
||||
m.set(F_FROMDATE, _datamin);
|
||||
|
||||
while (m.run() == K_ENTER)
|
||||
{
|
||||
const TDate dfr(m.get(F_FROMDATE));
|
||||
const TDate dto(m.get(F_TODATE));
|
||||
if (kill_stats(dfr, dto))
|
||||
calc_stats(dfr, dto);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int sv2100(int argc, char* argv[])
|
||||
|
Loading…
x
Reference in New Issue
Block a user