Corretti conflitti relativi a length

git-svn-id: svn://10.65.10.50/trunk@5105 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1997-08-26 13:48:11 +00:00
parent b21a147663
commit 285a207a12
2 changed files with 89 additions and 34 deletions

View File

@ -195,18 +195,23 @@ public:
class TCodice_livelli : public TObject
{
long _last_firm;
int _code_length[MANY_MAG_LEV];
TString _name[MANY_MAG_LEV];
TString _picture[MANY_MAG_LEV];
int _last_level;
TDecoder *_gruppi;
int _last_level;
TDecoder *_gruppi;
protected:
bool _lev_enabled;
bool _lev_enabled;
TArray _metachars;
void load(bool e, const char *tabcod,const char *tabgrp);
void add_metachar(int lev);
TArray _metachars;
void update_firm();
void test_firm();
public:
// Ritorna il numero di livelli abilitati
@ -226,7 +231,7 @@ public:
// Ritorna la posizione iniziale del codice gruppo di quel livello
const int code_start(int levnum) const ;
// Ritorna la lunghezza del codice compatto fino a quel livello
const int packed_lenght(int levnum) const ;
const int packed_length(int levnum) const ;
// Restituisce la descrizione del gruppo
const TString & group_descr(const char * grpcode, int levnum) const;
// Setta la colonna del campo livello codice di uno sheet in base alle abilitazioni
@ -236,7 +241,6 @@ public:
TString unpack_grpcode(const TString & pc, const int levnum) const ; // Estrae il codice del gruppo del livello levnum da pc
TString build_tabcode(const TString & pc, const int levnum) const ;
// Restituisce il formato previsto per il codice (default==ultimo livello)
const char * code_format(int levnum=-1) const ;
// Restituisce se <p codepart> e' riconosciuto come codice articolo (default==ultimo livello)
@ -247,14 +251,18 @@ public:
const char * opz_chars();
const char * mand_chars();*/
TCodice_livelli() {}; // costruttore
virtual ~TCodice_livelli() {}; // distruttore
virtual void init() pure;
TCodice_livelli(); // costruttore
virtual ~TCodice_livelli(); // distruttore
};
class TCodart_livelli : public TCodice_livelli
{
public:
virtual void init();
TCodart_livelli(); // costruttore
virtual ~TCodart_livelli() ; // distruttore
};
@ -263,6 +271,8 @@ public:
class TCodgiac_livelli : public TCodice_livelli
{
public:
virtual void init();
TCodgiac_livelli(); // costruttore
virtual ~TCodgiac_livelli() {}; // distruttore
};

View File

@ -2,12 +2,10 @@
// oggetto movimento di magazzino
// funzione di ricostruzione saldi
#include "mglib.h"
#ifndef __TABUTIL_H
#include <prefix.h>
#include <tabutil.h>
#endif
#include "mglib.h"
// *******************************
// *******************************
@ -574,11 +572,25 @@ TMetachar::~TMetachar ()
delete _au;
}
// **************************
// classe codice a livelli
void TCodice_livelli::update_firm()
{
_last_firm = prefix().get_codditta();
}
void TCodice_livelli::test_firm()
{
long firm = prefix().get_codditta();
if (firm > 0 && firm != _last_firm)
{
init();
update_firm(); // Lo dovrebbe gia' fare la init
}
}
void TCodice_livelli::load(bool enabled, const char *tabname,const char *tabgrp)
{
TTable _tabformato(tabname);
@ -587,27 +599,31 @@ void TCodice_livelli::load(bool enabled, const char *tabname,const char *tabgrp)
_lev_enabled = enabled;
_last_level=0;
e=_tabformato.first();
for (int i=0; i< MANY_MAG_LEV; i++) {
if ((e==NOERR) && _lev_enabled) {
for (int i=0; i < MANY_MAG_LEV; i++)
{
if ((e==NOERR) && _lev_enabled)
{
_name[i]=_tabformato.get("S0");
_picture[i]=_tabformato.get("S1");
_code_length[i]=TMetachar::maxstrlen(_picture[i]);
_last_level=i+1;
} else {
}
else
{
_name[i]="";
_code_length[i]=0;
_picture[i]="";
}
e=_tabformato.next();
}
_gruppi = new TDecoder(tabgrp);
if (_gruppi == NULL)
_gruppi = new TDecoder(tabgrp);
}
const char *TCodice_livelli::code_format(int levnum) const
{
CHECK(enabled(), "iu chent get the code format if levels are disabled");
CHECK(enabled(), "iu chent get de code format if levels ar disebold");
if (levnum<0) {
levnum=max(last_level(),1);
}
@ -618,7 +634,7 @@ const char *TCodice_livelli::code_format(int levnum) const
bool TCodice_livelli::fit_to_format(const char *codepart,int levnum) const
{
CHECK(enabled(), "iu chent check wether the format fits if levels are disabled");
CHECK(enabled(), "iu chent cec ueter de format fits if levels ar disebold");
if (levnum<0) {
levnum=max(last_level(),1);
}
@ -646,7 +662,7 @@ const bool TCodice_livelli::enabled(int levnum) const
const int TCodice_livelli::code_start(int levnum) const
{
return packed_lenght(levnum-1)+1;
return packed_length(levnum-1)+1;
}
@ -662,7 +678,7 @@ const int TCodice_livelli::code_length(int levnum) const
}
const int TCodice_livelli::packed_lenght(int levnum) const
const int TCodice_livelli::packed_length(int levnum) const
{
int start=0;
for (int i=0; _lev_enabled && i<levnum && levnum<MANY_MAG_LEV; i++)
@ -689,10 +705,10 @@ const TString & TCodice_livelli::picture(int levnum) const
void TCodice_livelli::pack_grpcode(TString & pc, const TString &codlev, const int levnum)
{
pc.overwrite(codlev.left(_code_length[levnum-1]),packed_lenght(levnum-1));
pc.overwrite(codlev.left(_code_length[levnum-1]),packed_length(levnum-1));
}
TString TCodice_livelli::unpack_grpcode(const TString & pc, const int levnum) const
TString TCodice_livelli::unpack_grpcode(const TString& pc, const int levnum) const
{
int start=0;
for (int i=1; _lev_enabled && i<levnum; i++)
@ -726,18 +742,31 @@ const TString & TCodice_livelli::group_descr(const char * code, int levnum) cons
void TCodice_livelli::set_sheetcolumn(TSheet_field &fld_righe,int field, int lev) const
{
if (enabled(lev)) {
if (enabled(lev))
{
fld_righe.sheet_mask().field(field).show();
fld_righe.set_column_header(fld_righe.cid2index(field),name(lev));
fld_righe.sheet_mask().field(field).set_prompt(name(lev));
} else {
}
else
{
fld_righe.sheet_mask().field(field).hide();
fld_righe.delete_column(fld_righe.cid2index(field));
}
}
TCodice_livelli::TCodice_livelli()
: _last_firm(-1), _gruppi(NULL) {}
TCodart_livelli ::TCodart_livelli()
TCodice_livelli::~TCodice_livelli()
{
if (_gruppi)
delete _gruppi;
}
void TCodart_livelli::init()
{
TConfig mgconfig(CONFIG_DITTA, "mg");
load(mgconfig.get_bool("GESLIVART"), "FCA","GCA");
@ -746,19 +775,33 @@ TCodart_livelli ::TCodart_livelli()
TTable tabfca("FCA");
if (tabfca.last() == NOERR)
format = tabfca.get("S1");
_metachars.destroy();
_metachars.add(new TMetachar(format),max(last_level()-1,0));
update_firm();
}
TCodart_livelli ::TCodart_livelli()
{
init();
}
TCodart_livelli ::~TCodart_livelli()
TCodart_livelli::~TCodart_livelli()
{
}
TCodgiac_livelli ::TCodgiac_livelli()
void TCodgiac_livelli::init()
{
TConfig mgconfig(CONFIG_DITTA, "mg");
load(mgconfig.get_bool("GESLIVGIAC"),"FCG","GCG");
update_firm();
}
TCodgiac_livelli::TCodgiac_livelli()
{
init();
}
@ -769,9 +812,11 @@ TMagazzini::TMagazzini() :
mag.first();
while (!mag.eof() && !mag.get_bool("B1"))
mag.next();
if (!mag.eof()) {
_stdmag=mag.get("CODTAB");_stdmag.cut(3);
_stddep=mag.get("CODTAB")+3;
if (!mag.eof())
{
const TString& codtab = mag.get("CODTAB");
_stdmag = codtab.left(3);
_stddep = codtab.mid(3);
}
}