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:
parent
e3bf7a51c7
commit
987a23dfb4
@ -167,9 +167,8 @@ bool TConf_Analitica::postprocess_config (TMask& mask, TConfig& config)
|
||||
|
||||
bool TConf_Analitica::user_create( )
|
||||
{
|
||||
TConfig_anal config;
|
||||
config.set( "EdMask", "ca0300a");
|
||||
|
||||
TConfig_anal& cfg = ca_config();
|
||||
cfg.set( "EdMask", "ca0300a");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -272,7 +272,7 @@ void TAnalisi_app::init_query_mode(TMask& mask)
|
||||
|
||||
bool TAnalisi_app::create()
|
||||
{
|
||||
TConfig_anal cfg;
|
||||
TConfig_anal& cfg = ca_config();
|
||||
const TString& pdc = cfg.get("Pdci", NULL, 1);
|
||||
if (pdc.blank())
|
||||
{
|
||||
|
@ -158,7 +158,7 @@ void TRiparti_msk::create_sheet()
|
||||
|
||||
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
|
||||
|
||||
TConfig_anal ini;
|
||||
TConfig_anal& ini = ca_config();
|
||||
|
||||
int y = 1;
|
||||
short dlg = 202;
|
||||
@ -209,7 +209,7 @@ void TRiparti_msk::create_sheet()
|
||||
|
||||
TRiparti_msk::TRiparti_msk() : TAutomask("ca0800a")
|
||||
{
|
||||
TConfig_anal ini;
|
||||
TConfig_anal& ini = ca_config();
|
||||
|
||||
// Crea gli eventuali campi per commessa e centro di costo
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <reprint.h>
|
||||
|
||||
#include "ca1.h"
|
||||
|
@ -43,7 +43,7 @@ public:
|
||||
|
||||
bool TPrint_pdc::create()
|
||||
{
|
||||
TConfig_anal cfg;
|
||||
TConfig_anal& cfg = ca_config();
|
||||
const TString& pdc = cfg.get("Pdci", NULL, 1);
|
||||
|
||||
if (pdc.blank())
|
||||
|
@ -596,7 +596,7 @@ void TMovanal_msk::create_sheet()
|
||||
|
||||
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");
|
||||
|
||||
int y = 3;
|
||||
|
@ -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()
|
||||
:TAnal_report_mask("ca3100")
|
||||
{
|
||||
TConfig_anal cfg;
|
||||
TConfig_anal& cfg = ca_config();
|
||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||
|
||||
const int logicnum = use_pdcc ? LF_PCON : LF_PCONANA;
|
||||
|
@ -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()
|
||||
:TAnal_report_mask("ca3200")
|
||||
{
|
||||
TConfig_anal cfg;
|
||||
TConfig_anal& cfg = ca_config();
|
||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||
|
||||
const int logicnum = use_pdcc ? LF_PCON : LF_PCONANA;
|
||||
|
@ -174,7 +174,7 @@ void TPrint_bilancio_ca_mask::create_sheet()
|
||||
|
||||
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");
|
||||
|
||||
int y = 1;
|
||||
@ -234,7 +234,8 @@ bool TPrint_bilancio_ca_mask::esistono_riclassificazioni() const
|
||||
TPrint_bilancio_ca_mask::TPrint_bilancio_ca_mask()
|
||||
:TAutomask("ca3300")
|
||||
{
|
||||
TConfig_anal cfg;
|
||||
TConfig_anal& cfg = ca_config();
|
||||
|
||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||
|
||||
const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA);
|
||||
|
@ -147,7 +147,7 @@ bool TPrint_rendiconto_ca_mask::esistono_riclassificazioni() const
|
||||
TPrint_rendiconto_ca_mask::TPrint_rendiconto_ca_mask()
|
||||
:TAnal_report_mask("ca3700")
|
||||
{
|
||||
TConfig_anal cfg;
|
||||
TConfig_anal& cfg = ca_config();
|
||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||
|
||||
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)
|
||||
//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
|
||||
TConfig_anal config;
|
||||
TConfig_anal& config = ca_config();
|
||||
|
||||
bool update = false;
|
||||
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
|
||||
{
|
||||
TPrint_rendiconto_ca_mask * _mask;
|
||||
|
||||
protected:
|
||||
bool create();
|
||||
bool destroy();
|
||||
|
||||
public:
|
||||
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()
|
||||
{
|
||||
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();
|
||||
//se lo sheet è vuoto aggiunge una riga vuota
|
||||
if (n_righe_sheet == 0)
|
||||
@ -1089,7 +1073,7 @@ void TPrint_rendiconto_ca::main_loop()
|
||||
|
||||
//report e book dei report
|
||||
TReport_book book;
|
||||
TString path = _mask->get(F_REPORT);
|
||||
TString path = mask.get(F_REPORT);
|
||||
if (path.empty())
|
||||
path = "ca3700a";
|
||||
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..
|
||||
{
|
||||
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
|
||||
book.add(rep); //aggiunge il report relativo alla cdc/cms corrente al book
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ TCode_generator::TCode_generator(int logicnum)
|
||||
|
||||
if (logicnum <= 0)
|
||||
{
|
||||
TConfig_anal cfg;
|
||||
TConfig_anal& cfg = ca_config();
|
||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||
logicnum = use_pdcc ? LF_PCON : LF_PCONANA;
|
||||
}
|
||||
|
@ -43,8 +43,6 @@ public:
|
||||
//----------------------------------------------------------
|
||||
class TConversione_anal_msk : public TAutomask
|
||||
{
|
||||
TConfig_anal _config_anal;
|
||||
|
||||
protected:
|
||||
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
|
||||
TCache_ripartizioni _cache_rip;
|
||||
TConfig_anal* _config_anal;
|
||||
|
||||
protected:
|
||||
virtual void main_loop();
|
||||
@ -122,8 +119,6 @@ bool TConversione_cm2ca::test_configuration()
|
||||
//gestione del menu (vari tipi di conversione)
|
||||
void TConversione_cm2ca::main_loop()
|
||||
{
|
||||
_config_anal = new TConfig_anal;
|
||||
|
||||
TConversione_anal_msk mask;
|
||||
while (mask.run() == K_ENTER)
|
||||
{
|
||||
@ -155,7 +150,6 @@ void TConversione_cm2ca::main_loop()
|
||||
} //end get_bool(F_MOVIMENTI)
|
||||
} //end while
|
||||
|
||||
delete _config_anal;
|
||||
}
|
||||
|
||||
|
||||
|
@ -50,6 +50,14 @@ const TString& TConfig_anal::get(const char* var, const char* section, int index
|
||||
return tmp;
|
||||
}
|
||||
|
||||
TConfig_anal& ca_config()
|
||||
{
|
||||
static TConfig_anal* cfg = NULL;
|
||||
if (cfg == NULL)
|
||||
cfg = new TConfig_anal;
|
||||
return *cfg;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TMultilevel_code_info
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -170,7 +178,7 @@ TMultilevel_code_info::TMultilevel_code_info(int logicnum) : _logicnum(logicnum)
|
||||
}
|
||||
else
|
||||
{
|
||||
TConfig_anal cfg;
|
||||
TConfig_anal& cfg = ca_config();
|
||||
|
||||
if (logicnum == LF_FASI)
|
||||
{
|
||||
@ -265,7 +273,7 @@ bool ca_test_multilevel_field(TEdit_field& fld, int level)
|
||||
// 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;
|
||||
if (logic == LF_PCON)
|
||||
@ -293,15 +301,21 @@ void ca_append_select_clause(ostream& out, int level, int logic)
|
||||
str << ')';
|
||||
}
|
||||
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);
|
||||
TString app; r.get_relapp(app);
|
||||
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)
|
||||
@ -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);
|
||||
|
||||
TFilename tmp; tmp.tempdir(); tmp.add("tmp.msk");
|
||||
TFilename tmp; init_tmp_filename(tmp);
|
||||
ofstream out(tmp);
|
||||
|
||||
out << "US " << logic << endl;
|
||||
out << "US " << logic << '\n';
|
||||
ca_append_select_clause(out, level, 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 TFieldref& field = mci.fieldref(i);
|
||||
const int length = field.to() - field.from();
|
||||
out << "IN " << field << ' ' << (key_id+i) << endl;
|
||||
out << "IN " << field << ' ' << (key_id+i) << '\n';
|
||||
out << "DI \"" << prompt;
|
||||
if (length > prompt.len())
|
||||
out << '@' << length;
|
||||
out << "\" " << field << endl;
|
||||
out << "OU " << (key_id+i) << ' ' << field << endl;
|
||||
out << "\" " << field << '\n';
|
||||
out << "OU " << (key_id+i) << ' ' << field << '\n';
|
||||
}
|
||||
const TFieldref& field = mci.fieldref(0, 2);
|
||||
out << "DI \"" << TR("Descrizione") << "@50\" " << field << endl;
|
||||
out << "OU " << (des_id+level) << ' ' << field << endl;
|
||||
out << "CH NO" << endl;
|
||||
out << "FI " << main_info.fieldref(level) << endl;
|
||||
out << "EN" << endl;
|
||||
out << "DI \"" << TR("Descrizione") << "@50\" " << field << '\n';
|
||||
out << "OU " << (des_id+level) << ' ' << field << '\n';
|
||||
out << "CH NO" << '\n';
|
||||
out << "FI " << main_info.fieldref(level) << '\n';
|
||||
out << "EN" << '\n';
|
||||
out.close();
|
||||
|
||||
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);
|
||||
TString str2; str2 << field;
|
||||
|
||||
TFilename tmp; tmp.tempdir(); tmp.add("tmp.msk");
|
||||
TFilename tmp; init_tmp_filename(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_run_clause(out, logic);
|
||||
|
||||
out << "IN " << str2 << ' ' << kfld.dlg() << endl;
|
||||
out << "DI \"" << TR("Descrizione") << "@50\" " << str2 << endl;
|
||||
out << "OU " << kfld.dlg() << ' ' << str2 << endl;
|
||||
out << "IN " << str2 << ' ' << kfld.dlg() << '\n';
|
||||
out << "DI \"" << TR("Descrizione") << "@50\" " << str2 << '\n';
|
||||
out << "OU " << kfld.dlg() << ' ' << str2 << '\n';
|
||||
|
||||
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))
|
||||
out << 'R';
|
||||
}
|
||||
out << "\" " << field << endl;
|
||||
out << "OU " << (key_id+i) << ' ' << field << endl;
|
||||
out << "\" " << field << '\n';
|
||||
out << "OU " << (key_id+i) << ' ' << field << '\n';
|
||||
}
|
||||
out << "CH NO" << endl;
|
||||
out << "CH NO" << '\n';
|
||||
if (level == main_info.levels()-1)
|
||||
out << "FI " << main_info.fieldref(0, 2) << endl;
|
||||
out << "EN" << endl;
|
||||
out << "FI " << main_info.fieldref(0, 2) << '\n';
|
||||
out << "EN" << '\n';
|
||||
out.close();
|
||||
|
||||
TScanner scan(tmp);
|
||||
@ -623,7 +638,7 @@ void TSimple_anal_msk::read(const char* name)
|
||||
|
||||
if (delta > 0)
|
||||
{
|
||||
TFilename outname; outname.tempdir(); outname.add("tmp.msk");
|
||||
TFilename outname; init_tmp_filename(outname);
|
||||
TFilename inpname = name; inpname.ext("msk");
|
||||
inpname.custom_path();
|
||||
|
||||
|
30
ca/calib01.h
30
ca/calib01.h
@ -17,6 +17,23 @@
|
||||
class TBill;
|
||||
#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
|
||||
{
|
||||
@ -169,17 +186,4 @@ public:
|
||||
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
|
||||
|
@ -263,7 +263,7 @@ void TPconana_recordset::set_tipo(char tipo)
|
||||
{
|
||||
if (tipo != 'A' && tipo != 'C')
|
||||
{
|
||||
TConfig_anal cfg;
|
||||
TConfig_anal& cfg = ca_config();
|
||||
tipo = cfg.get_bool("UsePdcc") ? 'C' : 'A';
|
||||
}
|
||||
_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);
|
||||
|
||||
TConfig_anal ini;
|
||||
TConfig_anal& ini = ca_config();
|
||||
|
||||
int y = 1;
|
||||
short dlg = S_CDC1 + 100; // id del primo campo da generare
|
||||
|
Loading…
x
Reference in New Issue
Block a user