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( )
{
TConfig_anal config;
config.set( "EdMask", "ca0300a");
TConfig_anal& cfg = ca_config();
cfg.set( "EdMask", "ca0300a");
return true;
}

View File

@ -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())
{

View File

@ -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

View File

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

View File

@ -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())

View File

@ -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;

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()
: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;

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()
: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;

View File

@ -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);

View File

@ -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
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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();

View File

@ -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

View File

@ -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