Patch level : 12.0 900

Files correlati     : ca0.exe ca0400a.msk
Commento            :

Sistemato il pulsante ricerca avanti, inietro nelle anagrafiche dell'analitica
This commit is contained in:
Alessandro Bonazzi 2019-11-17 21:02:29 +01:00
parent 466c4bad25
commit 2456f926be
5 changed files with 104 additions and 35 deletions

View File

@ -97,6 +97,7 @@ class TAnalisi_app : public TAnal_app
TAnalisi_rec * _rows;
int _maxlev;
bool _riclassificato;
TPiano_conti_anal_msk * _msk;
protected:
virtual const char * extra_modules() const {return "ci|cm";} //funziona anche con autorizzazione CM
@ -119,6 +120,9 @@ protected:
virtual bool create();
virtual bool user_create();
virtual bool user_destroy();
virtual bool has_filtered_cursor() const { return true; }
TPiano_conti_anal_msk & mask() const { return *_msk; };
virtual TCursor * get_filtered_cursor() const { return mask().efield(F_KEY1 + _maxlev - 1).browse()->cursor();}
};
void TAnalisi_app::rec2row(const TMask& m)
@ -243,7 +247,7 @@ void TAnalisi_app::init_indbil(TMask& mask)
int level = 0;
for (level = _maxlev; level > 0; level--)
{
if (mask.field(F_KEY1+level).shown())
if (mask.field(F_KEY1 + level - 1).shown())
break;
}
enabled = level < _maxlev || _riclassificato; // Le foglie sono sempre disabilitate
@ -269,7 +273,7 @@ void TAnalisi_app::init_indbil(TMask& mask)
void TAnalisi_app::init_modify_mode(TMask& mask)
{
const short id = ((TPiano_conti_anal_msk &)mask).get_field_id(_maxlev, 1);
const short id = ((TPiano_conti_anal_msk &)mask).get_field_id(_maxlev - 1, 1);
mask.enable_page(1, mask.get(id).not_empty());
TAnal_app::init_modify_mode(mask);
@ -278,7 +282,7 @@ void TAnalisi_app::init_modify_mode(TMask& mask)
void TAnalisi_app::init_insert_mode(TMask& mask)
{
const short id = ((TPiano_conti_anal_msk &)mask).get_field_id(_maxlev, 1);
const short id = ((TPiano_conti_anal_msk &)mask).get_field_id(_maxlev - 1, 1);
mask.enable_page(1, mask.get(id).not_empty());
TAnal_app::init_insert_mode(mask);
@ -321,16 +325,21 @@ bool TAnalisi_app::user_create()
if (ok)
{
_rows = new TAnalisi_rec();
TPiano_conti_anal_msk * m = (TPiano_conti_anal_msk * ) get_mask(0);
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_PCONANA);
_msk = (TPiano_conti_anal_msk *)get_mask(0);
_maxlev = mci.levels();
set_search_field(F_KEY1 + _maxlev - 1);
for (int i = 0; i < 4; i++)
if (_maxlev > 1)
{
const short id = m->get_field_id(i, 1);
if (id <= 0 || m->id2pos(id) < 0)
break;
_maxlev = i;
TBrowse * b = mask().efield(F_KEY1 + _maxlev - 1).browse();
TString inp(b->get_input_fields());
b->set_filter("");
inp.strip("@");
b->set_input_fields(inp);
}
set_search_field(F_DES1 + _maxlev - 1);
}
return ok;
}

View File

@ -35,7 +35,7 @@ BEGIN
ITEM "2|2. Passivita'"
ITEM "3|3. Costi"
ITEM "4|4. Ricavi"
// ITEM "5|5. Conti d'ordine"
ITEM "5|5. Conti d'ordine"
FIELD INDBIL
END

View File

@ -6,6 +6,7 @@
#include "calib01.h"
#include "ca0500a.h"
#include "cdc.h"
#include "calibmsk.h"
////////////////////////////////////////////////////////////////////////
//MASCHERA
@ -55,6 +56,7 @@ class TCdC_app : public TAnal_app
{
int _maxlev;
bool _has_filter;
TCdC_anal_msk * _msk;
protected:
virtual bool filtered() const;
@ -63,7 +65,9 @@ protected:
virtual void init_insert_mode(TMask& mask);
virtual bool protected_record(TRectype& record);
virtual TSimple_anal_msk* create_mask() const { return new TCdC_anal_msk; }
virtual bool user_create();
TCdC_anal_msk & mask() const { return *_msk; };
virtual TCursor * get_filtered_cursor() const { return mask().efield(F_KEY1 + _maxlev - 1).browse()->cursor(); }
virtual bool user_create();
};
bool TCdC_app::filtered() const
@ -108,17 +112,33 @@ void TCdC_app::init_insert_mode(TMask& mask)
bool TCdC_app::user_create()
{
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_CDC);
const bool ok = TAnal_app::user_create();
_maxlev = mci.levels();
if (_maxlev <= 0)
return error_box(TR("I centri di costo non sono stati configurati"));
if (ok)
{
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_CDC);
//eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S1").full();
// set_search_field(F_CDCPDA1 + _maxlev - 1);
_maxlev = mci.levels();
if (_maxlev <= 0)
return error_box(TR("I centri di costo non sono stati configurati"));
return TAnal_app::user_create();
//eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S1").full();
_msk = (TCdC_anal_msk *)get_mask(0);
set_search_field(F_KEY1 + _maxlev - 1);
if (_maxlev > 1)
{
TBrowse * b = mask().efield(F_KEY1 + _maxlev - 1).browse();
TString inp(b->get_input_fields());
inp.strip("@");
b->set_input_fields(inp);
}
}
return ok;
}
int ca0500(int argc, char* argv[])

View File

@ -7,6 +7,8 @@
#include "ca0600a.h"
#include "commesse.h"
#include "cfcms.h"
#include "calibmsk.h"
////////////////////////////////////////////////////////////////////////
//MASCHERA
@ -56,6 +58,7 @@ class TCms_app : public TAnal_app
{
int _maxlev;
bool _has_filter;
TCms_anal_msk * _msk;
protected:
void fin2row(const TMask& m);
@ -76,7 +79,9 @@ protected:
virtual void init_insert_mode(TMask& mask);
virtual bool protected_record(TRectype& record);
virtual TSimple_anal_msk* create_mask() const { return new TCms_anal_msk; }
virtual bool user_create();
TCms_anal_msk & mask() const { return *_msk; };
virtual TCursor * get_filtered_cursor() const { return mask().efield(F_KEY1 + _maxlev - 1).browse()->cursor(); }
virtual bool user_create();
public:
@ -398,16 +403,32 @@ void TCms_app::init_insert_mode(TMask& mask)
bool TCms_app::user_create()
{
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_COMMESSE);
const bool ok = TAnal_app::user_create();
_maxlev = mci.levels();
if (_maxlev <= 0)
return error_box(TR("Le commesse non sono state configurate"));
if (ok)
{
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_COMMESSE);
//eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S0").full();
_maxlev = mci.levels();
if (_maxlev <= 0)
return error_box(TR("Le commesse non sono state configurate"));
return TAnal_app::user_create();
//eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S0").full();
_msk = (TCms_anal_msk *)get_mask(0);
set_search_field(F_KEY1 + _maxlev - 1);
if (_maxlev > 1)
{
TBrowse * b = mask().efield(F_KEY1 + _maxlev - 1).browse();
TString inp(b->get_input_fields());
inp.strip("@");
b->set_input_fields(inp);
}
}
return ok;
}
int ca0600(int argc, char* argv[])

View File

@ -67,6 +67,8 @@ TFsc_anal_msk::TFsc_anal_msk()
class TFsc_app : public TAnal_app
{
bool _has_filter;
int _maxlev;
TFsc_anal_msk * _msk;
protected:
virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM
@ -74,7 +76,9 @@ protected:
virtual bool filtered() const;
virtual bool protected_record(TRectype& record);
virtual TSimple_anal_msk* create_mask() const { return new TFsc_anal_msk; }
virtual bool user_create();
TFsc_anal_msk & mask() const { return *_msk; };
virtual TCursor * get_filtered_cursor() const { return mask().efield(F_KEY1 + _maxlev - 1).browse()->cursor(); }
virtual bool user_create();
};
bool TFsc_app::filtered() const
@ -120,14 +124,29 @@ bool TFsc_app::protected_record(TRectype& record)
bool TFsc_app::user_create()
{
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_FASI);
if (mci.levels() <= 0)
return error_box(TR("Le fasi non sono state configurate"));
const bool ok = TAnal_app::user_create();
//eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S2").full();
if (ok)
{
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_FASI);
return TAnal_app::user_create();
_maxlev = mci.levels();
if (mci.levels() <= 0)
return error_box(TR("Le fasi non sono state configurate"));
//eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S2").full();
_msk = (TFsc_anal_msk *)get_mask(0);
set_search_field(F_KEY1 + _maxlev - 1);
TBrowse * b = mask().efield(F_KEY1 + _maxlev - 1).browse();
TString inp(b->get_input_fields());
inp.strip("@");
b->set_input_fields(inp);
}
return ok;
}
int ca0700(int argc, char* argv[])