Patch level : 2.2

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Migliorata gestione configurazione analitica in modo da velocizzare leggermente
la creazione delle maschere dinamiche.


git-svn-id: svn://10.65.10.50/trunk@13344 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2005-09-16 14:52:59 +00:00
parent e3bf7a51c7
commit 987a23dfb4
15 changed files with 82 additions and 84 deletions

View File

@ -167,9 +167,8 @@ bool TConf_Analitica::postprocess_config (TMask& mask, TConfig& config)
bool TConf_Analitica::user_create( ) bool TConf_Analitica::user_create( )
{ {
TConfig_anal config; TConfig_anal& cfg = ca_config();
config.set( "EdMask", "ca0300a"); cfg.set( "EdMask", "ca0300a");
return true; return true;
} }

View File

@ -272,7 +272,7 @@ void TAnalisi_app::init_query_mode(TMask& mask)
bool TAnalisi_app::create() bool TAnalisi_app::create()
{ {
TConfig_anal cfg; TConfig_anal& cfg = ca_config();
const TString& pdc = cfg.get("Pdci", NULL, 1); const TString& pdc = cfg.get("Pdci", NULL, 1);
if (pdc.blank()) if (pdc.blank())
{ {

View File

@ -158,7 +158,7 @@ void TRiparti_msk::create_sheet()
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
TConfig_anal ini; TConfig_anal& ini = ca_config();
int y = 1; int y = 1;
short dlg = 202; short dlg = 202;
@ -209,7 +209,7 @@ void TRiparti_msk::create_sheet()
TRiparti_msk::TRiparti_msk() : TAutomask("ca0800a") TRiparti_msk::TRiparti_msk() : TAutomask("ca0800a")
{ {
TConfig_anal ini; TConfig_anal& ini = ca_config();
// Crea gli eventuali campi per commessa e centro di costo // Crea gli eventuali campi per commessa e centro di costo

View File

@ -1,4 +1,5 @@
#include <applicat.h> #include <applicat.h>
#include <automask.h>
#include <reprint.h> #include <reprint.h>
#include "ca1.h" #include "ca1.h"

View File

@ -43,7 +43,7 @@ public:
bool TPrint_pdc::create() bool TPrint_pdc::create()
{ {
TConfig_anal cfg; TConfig_anal& cfg = ca_config();
const TString& pdc = cfg.get("Pdci", NULL, 1); const TString& pdc = cfg.get("Pdci", NULL, 1);
if (pdc.blank()) if (pdc.blank())

View File

@ -596,7 +596,7 @@ void TMovanal_msk::create_sheet()
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
TConfig_anal ini; TConfig_anal& ini = ca_config();
const bool fsc_req = ini.get_bool("FscRequired"); const bool fsc_req = ini.get_bool("FscRequired");
int y = 3; int y = 3;

View File

@ -122,7 +122,7 @@ bool TPrint_movimenti_ca_mask::on_field_event(TOperable_field& o, TField_event e
TPrint_movimenti_ca_mask::TPrint_movimenti_ca_mask() TPrint_movimenti_ca_mask::TPrint_movimenti_ca_mask()
:TAnal_report_mask("ca3100") :TAnal_report_mask("ca3100")
{ {
TConfig_anal cfg; TConfig_anal& cfg = ca_config();
const bool use_pdcc = cfg.get_bool("UsePdcc"); const bool use_pdcc = cfg.get_bool("UsePdcc");
const int logicnum = use_pdcc ? LF_PCON : LF_PCONANA; const int logicnum = use_pdcc ? LF_PCON : LF_PCONANA;

View File

@ -119,7 +119,7 @@ bool TPrint_mastrini_ca_mask::on_field_event(TOperable_field& o, TField_event e,
TPrint_mastrini_ca_mask::TPrint_mastrini_ca_mask() TPrint_mastrini_ca_mask::TPrint_mastrini_ca_mask()
:TAnal_report_mask("ca3200") :TAnal_report_mask("ca3200")
{ {
TConfig_anal cfg; TConfig_anal& cfg = ca_config();
const bool use_pdcc = cfg.get_bool("UsePdcc"); const bool use_pdcc = cfg.get_bool("UsePdcc");
const int logicnum = use_pdcc ? LF_PCON : LF_PCONANA; const int logicnum = use_pdcc ? LF_PCON : LF_PCONANA;

View File

@ -174,7 +174,7 @@ void TPrint_bilancio_ca_mask::create_sheet()
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
TConfig_anal ini; TConfig_anal& ini = ca_config();
const bool fsc_req = ini.get_bool("FscRequired"); const bool fsc_req = ini.get_bool("FscRequired");
int y = 1; int y = 1;
@ -234,7 +234,8 @@ bool TPrint_bilancio_ca_mask::esistono_riclassificazioni() const
TPrint_bilancio_ca_mask::TPrint_bilancio_ca_mask() TPrint_bilancio_ca_mask::TPrint_bilancio_ca_mask()
:TAutomask("ca3300") :TAutomask("ca3300")
{ {
TConfig_anal cfg; TConfig_anal& cfg = ca_config();
const bool use_pdcc = cfg.get_bool("UsePdcc"); const bool use_pdcc = cfg.get_bool("UsePdcc");
const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA); const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA);

View File

@ -147,7 +147,7 @@ bool TPrint_rendiconto_ca_mask::esistono_riclassificazioni() const
TPrint_rendiconto_ca_mask::TPrint_rendiconto_ca_mask() TPrint_rendiconto_ca_mask::TPrint_rendiconto_ca_mask()
:TAnal_report_mask("ca3700") :TAnal_report_mask("ca3700")
{ {
TConfig_anal cfg; TConfig_anal& cfg = ca_config();
const bool use_pdcc = cfg.get_bool("UsePdcc"); const bool use_pdcc = cfg.get_bool("UsePdcc");
const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA); const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA);
@ -795,7 +795,8 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(const TPrint_rendiconto_
//Filtro sulle righe documento (e testate collegate) //Filtro sulle righe documento (e testate collegate)
//Controlla sul file di configurazione di CA (ditta.ini,[ca]) se esistono numerazioni da escludere.. //Controlla sul file di configurazione di CA (ditta.ini,[ca]) se esistono numerazioni da escludere..
//..e se, per alcune numerazioni, deve tener conto dello stato del documento //..e se, per alcune numerazioni, deve tener conto dello stato del documento
TConfig_anal config; TConfig_anal& config = ca_config();
bool update = false; bool update = false;
for (int i = 0;;i++) //scansione delle righe ND(i)=.. sul paragrafo di configurazione CA for (int i = 0;;i++) //scansione delle righe ND(i)=.. sul paragrafo di configurazione CA
{ {
@ -1055,33 +1056,16 @@ void TPrint_rendiconto_ca_rep::set_filter(const TPrint_rendiconto_ca_mask& msk,
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
class TPrint_rendiconto_ca : public TSkeleton_application class TPrint_rendiconto_ca : public TSkeleton_application
{ {
TPrint_rendiconto_ca_mask * _mask;
protected:
bool create();
bool destroy();
public: public:
virtual void main_loop(); virtual void main_loop();
}; };
bool TPrint_rendiconto_ca::create()
{
_mask = new TPrint_rendiconto_ca_mask;
return TSkeleton_application::create();
}
bool TPrint_rendiconto_ca::destroy()
{
delete _mask;
return TSkeleton_application::destroy();
}
void TPrint_rendiconto_ca::main_loop() void TPrint_rendiconto_ca::main_loop()
{ {
while (_mask->run() == K_ENTER) TPrint_rendiconto_ca_mask mask;
while (mask.run() == K_ENTER)
{ {
TSheet_field& sheet = _mask->sfield(F_RIGHE); TSheet_field& sheet = mask.sfield(F_RIGHE);
const int n_righe_sheet = sheet.items(); const int n_righe_sheet = sheet.items();
//se lo sheet è vuoto aggiunge una riga vuota //se lo sheet è vuoto aggiunge una riga vuota
if (n_righe_sheet == 0) if (n_righe_sheet == 0)
@ -1089,7 +1073,7 @@ void TPrint_rendiconto_ca::main_loop()
//report e book dei report //report e book dei report
TReport_book book; TReport_book book;
TString path = _mask->get(F_REPORT); TString path = mask.get(F_REPORT);
if (path.empty()) if (path.empty())
path = "ca3700a"; path = "ca3700a";
TPrint_rendiconto_ca_rep rep; TPrint_rendiconto_ca_rep rep;
@ -1097,7 +1081,7 @@ void TPrint_rendiconto_ca::main_loop()
FOR_EACH_SHEET_ROW(sheet, r, row) //per ogni cdc/cms che appare nello sheet di pag.1 della msk.. FOR_EACH_SHEET_ROW(sheet, r, row) //per ogni cdc/cms che appare nello sheet di pag.1 della msk..
{ {
rep.set_filter(*_mask, r); //..chiama il metodone globale che crea e compila il file.. rep.set_filter(mask, r); //..chiama il metodone globale che crea e compila il file..
//..temporaneo i cui dati riempiranno il report //..temporaneo i cui dati riempiranno il report
book.add(rep); //aggiunge il report relativo alla cdc/cms corrente al book book.add(rep); //aggiunge il report relativo alla cdc/cms corrente al book
} }

View File

@ -71,7 +71,7 @@ TCode_generator::TCode_generator(int logicnum)
if (logicnum <= 0) if (logicnum <= 0)
{ {
TConfig_anal cfg; TConfig_anal& cfg = ca_config();
const bool use_pdcc = cfg.get_bool("UsePdcc"); const bool use_pdcc = cfg.get_bool("UsePdcc");
logicnum = use_pdcc ? LF_PCON : LF_PCONANA; logicnum = use_pdcc ? LF_PCON : LF_PCONANA;
} }

View File

@ -43,8 +43,6 @@ public:
//---------------------------------------------------------- //----------------------------------------------------------
class TConversione_anal_msk : public TAutomask class TConversione_anal_msk : public TAutomask
{ {
TConfig_anal _config_anal;
protected: protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
@ -94,7 +92,6 @@ class TConversione_cm2ca : public TSkeleton_application
{ {
virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM
TCache_ripartizioni _cache_rip; TCache_ripartizioni _cache_rip;
TConfig_anal* _config_anal;
protected: protected:
virtual void main_loop(); virtual void main_loop();
@ -122,8 +119,6 @@ bool TConversione_cm2ca::test_configuration()
//gestione del menu (vari tipi di conversione) //gestione del menu (vari tipi di conversione)
void TConversione_cm2ca::main_loop() void TConversione_cm2ca::main_loop()
{ {
_config_anal = new TConfig_anal;
TConversione_anal_msk mask; TConversione_anal_msk mask;
while (mask.run() == K_ENTER) while (mask.run() == K_ENTER)
{ {
@ -155,7 +150,6 @@ void TConversione_cm2ca::main_loop()
} //end get_bool(F_MOVIMENTI) } //end get_bool(F_MOVIMENTI)
} //end while } //end while
delete _config_anal;
} }

View File

@ -50,6 +50,14 @@ const TString& TConfig_anal::get(const char* var, const char* section, int index
return tmp; return tmp;
} }
TConfig_anal& ca_config()
{
static TConfig_anal* cfg = NULL;
if (cfg == NULL)
cfg = new TConfig_anal;
return *cfg;
}
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TMultilevel_code_info // TMultilevel_code_info
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -170,7 +178,7 @@ TMultilevel_code_info::TMultilevel_code_info(int logicnum) : _logicnum(logicnum)
} }
else else
{ {
TConfig_anal cfg; TConfig_anal& cfg = ca_config();
if (logicnum == LF_FASI) if (logicnum == LF_FASI)
{ {
@ -265,7 +273,7 @@ bool ca_test_multilevel_field(TEdit_field& fld, int level)
// Utilities // Utilities
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
void ca_append_select_clause(ostream& out, int level, int logic) static void ca_append_select_clause(ostream& out, int level, int logic)
{ {
TString str; TString str;
if (logic == LF_PCON) if (logic == LF_PCON)
@ -293,15 +301,21 @@ void ca_append_select_clause(ostream& out, int level, int logic)
str << ')'; str << ')';
} }
if (str.not_empty()) if (str.not_empty())
out << " SE " << str << endl; out << " SE " << str << '\n';
} }
void ca_append_run_clause(ostream& out, int logicnum) static void ca_append_run_clause(ostream& out, int logicnum)
{ {
const TRectype r(logicnum); const TRectype r(logicnum);
TString app; r.get_relapp(app); TString app; r.get_relapp(app);
if (app.not_empty()) if (app.not_empty())
out << "AD RU " << app << endl; out << "AD RU " << app << '\n';
}
static void init_tmp_filename(TFilename& name)
{
name.tempdir();
name.add("tmp.msk");
} }
void ca_create_browse1(TEdit_field& kfld, int level, int logic, short key_id, short des_id) void ca_create_browse1(TEdit_field& kfld, int level, int logic, short key_id, short des_id)
@ -320,10 +334,10 @@ void ca_create_browse1(TEdit_field& kfld, int level, int logic, short key_id, sh
const TMultilevel_code_info& mci = ca_multilevel_code_info(logic); const TMultilevel_code_info& mci = ca_multilevel_code_info(logic);
TFilename tmp; tmp.tempdir(); tmp.add("tmp.msk"); TFilename tmp; init_tmp_filename(tmp);
ofstream out(tmp); ofstream out(tmp);
out << "US " << logic << endl; out << "US " << logic << '\n';
ca_append_select_clause(out, level, logic); ca_append_select_clause(out, level, logic);
ca_append_run_clause(out, logic); ca_append_run_clause(out, logic);
@ -333,19 +347,19 @@ void ca_create_browse1(TEdit_field& kfld, int level, int logic, short key_id, sh
const TString& prompt = mci.prompt(i); const TString& prompt = mci.prompt(i);
const TFieldref& field = mci.fieldref(i); const TFieldref& field = mci.fieldref(i);
const int length = field.to() - field.from(); const int length = field.to() - field.from();
out << "IN " << field << ' ' << (key_id+i) << endl; out << "IN " << field << ' ' << (key_id+i) << '\n';
out << "DI \"" << prompt; out << "DI \"" << prompt;
if (length > prompt.len()) if (length > prompt.len())
out << '@' << length; out << '@' << length;
out << "\" " << field << endl; out << "\" " << field << '\n';
out << "OU " << (key_id+i) << ' ' << field << endl; out << "OU " << (key_id+i) << ' ' << field << '\n';
} }
const TFieldref& field = mci.fieldref(0, 2); const TFieldref& field = mci.fieldref(0, 2);
out << "DI \"" << TR("Descrizione") << "@50\" " << field << endl; out << "DI \"" << TR("Descrizione") << "@50\" " << field << '\n';
out << "OU " << (des_id+level) << ' ' << field << endl; out << "OU " << (des_id+level) << ' ' << field << '\n';
out << "CH NO" << endl; out << "CH NO" << '\n';
out << "FI " << main_info.fieldref(level) << endl; out << "FI " << main_info.fieldref(level) << '\n';
out << "EN" << endl; out << "EN" << '\n';
out.close(); out.close();
TScanner scan(tmp); TScanner scan(tmp);
@ -374,15 +388,16 @@ void ca_create_browse2(TEdit_field& kfld, int level, int logic, short key_id, sh
const TFieldref& field = mci.fieldref(0, 2); const TFieldref& field = mci.fieldref(0, 2);
TString str2; str2 << field; TString str2; str2 << field;
TFilename tmp; tmp.tempdir(); tmp.add("tmp.msk"); TFilename tmp; init_tmp_filename(tmp);
ofstream out(tmp); ofstream out(tmp);
out << "US " << logic << " KE 2" << endl;
out << "US " << logic << " KE 2" << '\n';
ca_append_select_clause(out, level, logic); ca_append_select_clause(out, level, logic);
ca_append_run_clause(out, logic); ca_append_run_clause(out, logic);
out << "IN " << str2 << ' ' << kfld.dlg() << endl; out << "IN " << str2 << ' ' << kfld.dlg() << '\n';
out << "DI \"" << TR("Descrizione") << "@50\" " << str2 << endl; out << "DI \"" << TR("Descrizione") << "@50\" " << str2 << '\n';
out << "OU " << kfld.dlg() << ' ' << str2 << endl; out << "OU " << kfld.dlg() << ' ' << str2 << '\n';
for (int i = 0; i <= level; i++) for (int i = 0; i <= level; i++)
{ {
@ -397,13 +412,13 @@ void ca_create_browse2(TEdit_field& kfld, int level, int logic, short key_id, sh
if (mci.is_numeric_picture(i)) if (mci.is_numeric_picture(i))
out << 'R'; out << 'R';
} }
out << "\" " << field << endl; out << "\" " << field << '\n';
out << "OU " << (key_id+i) << ' ' << field << endl; out << "OU " << (key_id+i) << ' ' << field << '\n';
} }
out << "CH NO" << endl; out << "CH NO" << '\n';
if (level == main_info.levels()-1) if (level == main_info.levels()-1)
out << "FI " << main_info.fieldref(0, 2) << endl; out << "FI " << main_info.fieldref(0, 2) << '\n';
out << "EN" << endl; out << "EN" << '\n';
out.close(); out.close();
TScanner scan(tmp); TScanner scan(tmp);
@ -623,7 +638,7 @@ void TSimple_anal_msk::read(const char* name)
if (delta > 0) if (delta > 0)
{ {
TFilename outname; outname.tempdir(); outname.add("tmp.msk"); TFilename outname; init_tmp_filename(outname);
TFilename inpname = name; inpname.ext("msk"); TFilename inpname = name; inpname.ext("msk");
inpname.custom_path(); inpname.custom_path();

View File

@ -17,6 +17,23 @@
class TBill; class TBill;
#endif #endif
///////////////////////////////////////////////////////////
// TConfig_anal
///////////////////////////////////////////////////////////
class TConfig_anal : public TConfig
{
bool _has_ca;
public:
virtual const TString& get(const char* var, const char* section = NULL, int index = -1, const char* def = "");
TConfig_anal();
};
TConfig_anal& ca_config();
///////////////////////////////////////////////////////////
// TConfig_anal
///////////////////////////////////////////////////////////
class TMultilevel_code_info : public TObject class TMultilevel_code_info : public TObject
{ {
@ -169,17 +186,4 @@ public:
const TRecord_array& righe(const TBill& bill); const TRecord_array& righe(const TBill& bill);
}; };
///////////////////////////////////////////////////////////
// TConfig_anal
///////////////////////////////////////////////////////////
class TConfig_anal : public TConfig
{
bool _has_ca;
public:
virtual const TString& get(const char* var, const char* section = NULL, int index = -1, const char* def = "");
TConfig_anal();
};
#endif #endif

View File

@ -263,7 +263,7 @@ void TPconana_recordset::set_tipo(char tipo)
{ {
if (tipo != 'A' && tipo != 'C') if (tipo != 'A' && tipo != 'C')
{ {
TConfig_anal cfg; TConfig_anal& cfg = ca_config();
tipo = cfg.get_bool("UsePdcc") ? 'C' : 'A'; tipo = cfg.get_bool("UsePdcc") ? 'C' : 'A';
} }
_tipo = tipo; _tipo = tipo;
@ -996,7 +996,7 @@ void TAnal_report_mask::create_sheet(short sheet_id)
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
TConfig_anal ini; TConfig_anal& ini = ca_config();
int y = 1; int y = 1;
short dlg = S_CDC1 + 100; // id del primo campo da generare short dlg = S_CDC1 + 100; // id del primo campo da generare