git-svn-id: svn://10.65.10.50/branches/R_10_00@23107 c028cbd2-c16b-5b4b-a496-9718f37d4682

This commit is contained in:
guy 2015-06-08 15:42:06 +00:00
parent 36d2a2b01a
commit 89918b05cd

View File

@ -12,21 +12,20 @@
class TRiepBolle_recordset: public TCSV_recordset class TRiepBolle_recordset: public TCSV_recordset
{ {
int _loop; int _loop;
unsigned int _max_column; unsigned int _max_column, _lst_column;
TArray _max_cli_col; TArray _max_cli_col;
public: public:
void first_loop() { _loop = 0;} void first_loop() { _loop = 0;}
void prev_loop() { --_loop;} void prev_loop() { --_loop;}
void next_loop() { ++_loop;} void next_loop() { ++_loop;}
void set_loop(int l) { _loop = l;} void set_loop(int l) { _loop = l;}
unsigned int loops() { return (_max_column - 4 )/ 66 + 1; } unsigned int loops() const { return (_max_column - 4 )/_lst_column + 1; }
unsigned int get_curr_max_column() const ; unsigned int get_curr_max_column() const ;
void set_max_column(unsigned int column); void set_max_column(unsigned int column);
virtual const TVariant& get(unsigned int column) const; virtual const TVariant& get(unsigned int column) const;
TRiepBolle_recordset(): TCSV_recordset("CSV(\"\t\")"), _loop(0), _max_column(0) {} TRiepBolle_recordset(unsigned int last_col): TCSV_recordset("CSV(\"\t\")"), _loop(0), _max_column(0), _lst_column(last_col) {}
}; };
void TRiepBolle_recordset::set_max_column(unsigned int column) void TRiepBolle_recordset::set_max_column(unsigned int column)
@ -56,9 +55,9 @@ const TVariant& TRiepBolle_recordset::get(unsigned int column) const
static TVariant __s(""); static TVariant __s("");
if (column < 4) if (column < 4)
return TCSV_recordset::get( column); return TCSV_recordset::get( column);
if (column + _loop * 66 >= get_curr_max_column()) if (column + _loop * _lst_column >= get_curr_max_column())
return __s; return __s;
return TCSV_recordset::get(column + _loop * 66); return TCSV_recordset::get(column + _loop * _lst_column);
} }
class TRiepBolle_mask: public TAutomask class TRiepBolle_mask: public TAutomask
@ -96,8 +95,7 @@ protected:
virtual bool set_usr_val(const TString& name, const TVariant& var); virtual bool set_usr_val(const TString& name, const TVariant& var);
public: public:
TRiepBolle_report() {} TRiepBolle_report();
virtual ~TRiepBolle_report() {}
}; };
bool TRiepBolle_report::get_usr_val(const TString& name, TVariant& var) const bool TRiepBolle_report::get_usr_val(const TString& name, TVariant& var) const
@ -120,33 +118,36 @@ bool TRiepBolle_report::get_usr_val(const TString& name, TVariant& var) const
bool TRiepBolle_report::set_usr_val(const TString& name, const TVariant& var) bool TRiepBolle_report::set_usr_val(const TString& name, const TVariant& var)
{ {
if(name == "#TOT") if (name == "#TOT")
{ {
TRecordset* recset = recordset(); TRecordset* recset = recordset();
if (recset != NULL) if (recset != NULL)
{ {
TVariant * v = (TVariant *) _tot.objptr(recset->current_row()); TVariant* v = (TVariant*)_tot.objptr(recset->current_row());
if (v == NULL) if (v == NULL)
{ {
v = new TVariant(ZERO); v = new TVariant(ZERO);
_tot.add(v, recset->current_row()); _tot.add(v, recset->current_row());
} }
*v = var; *v = var;
return true; return true;
} }
return false; return false;
} }
return TDocument_report::set_usr_val(name, var); return TDocument_report::set_usr_val(name, var);
} }
TRiepBolle_report::TRiepBolle_report()
{
}
class TRiepBolle_app: public TSkeleton_application class TRiepBolle_app: public TSkeleton_application
{ {
protected: protected:
virtual void main_loop();
void elabora(const TMask& mask) const; void elabora(const TMask& mask) const;
public:
virtual void main_loop();
}; };
void TRiepBolle_app::elabora(const TMask& mask)const void TRiepBolle_app::elabora(const TMask& mask)const
@ -203,9 +204,24 @@ void TRiepBolle_app::elabora(const TMask& mask)const
TRiepBolle_report rep; TRiepBolle_report rep;
if (!rep.load("lv2700a")) if (!rep.load("lv2700a"))
return; return;
TRiepBolle_recordset* riep_set = new TRiepBolle_recordset();
const TReport_section& body = rep.section('B', 1);
TString4 last_fld;
for (int f = body.items()-1; f > 0; f--)
{
const TReport_field& fld = body.field(f);
const TString& src = fld.field();
if (src.len() == 2 && src > last_fld)
last_fld = src;
}
int last_col = (last_fld[0]-'A'+1)*26 + (last_fld[1]-'A'+1) - 4;
if (last_col < 66) last_col = 66;
TRiepBolle_recordset* riep_set = new TRiepBolle_recordset(last_col);
((TReport &)rep).set_recordset(riep_set); ((TReport &)rep).set_recordset(riep_set);
if (docsi > 0)
{
TProgress_monitor pi_art(docsi, TR("Estrazione articoli")); TProgress_monitor pi_art(docsi, TR("Estrazione articoli"));
int count = 1; int count = 1;
@ -251,7 +267,10 @@ void TRiepBolle_app::elabora(const TMask& mask)const
} }
} }
} }
}
if (!riepilogo.empty())
{
TProgress_monitor pi(riepilogo.items(), TR("Costruzione report")); TProgress_monitor pi(riepilogo.items(), TR("Costruzione report"));
int maxpos = 0L; int maxpos = 0L;
const int cols = nbolle.items(); const int cols = nbolle.items();
@ -280,10 +299,10 @@ void TRiepBolle_app::elabora(const TMask& mask)const
riep_set->set_max_column(col); riep_set->set_max_column(col);
} }
} }
#ifdef DBG #ifdef DBG
//Crea file che contiene il recordset per debug //Crea file che contiene il recordset per debug
riep_set->save_as("c:/temp/riepilogoBolla.txt"); riep_set->save_as("c:/temp/riepilogoBolla.txt");
#endif #endif
//carica tutte le variabili del report. //carica tutte le variabili del report.
if (riep_set->items() > 0L) if (riep_set->items() > 0L)
@ -297,6 +316,7 @@ void TRiepBolle_app::elabora(const TMask& mask)const
if (!pi.add_status()) if (!pi.add_status())
break; break;
} }
}
if (b.pages() > 0) if (b.pages() > 0)
b.print_or_preview(); // Stampa effettivamente b.print_or_preview(); // Stampa effettivamente
else else