Esplosione tab

git-svn-id: svn://10.65.10.50/trunk@4821 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-07-07 10:18:20 +00:00
parent 4a3996b65d
commit b328065d69
2 changed files with 180 additions and 184 deletions

View File

@ -4,13 +4,13 @@
void TForm_stampemg::add_giaclev(TString &levname) void TForm_stampemg::add_giaclev(TString &levname)
{ {
int lv=1; int lv=1;
do { do {
const TString & piece = _giaclev->unpack_grpcode(relation()->lfile(LF_MAG).get("LIVELLO"),lv); const TString & piece = _giaclev->unpack_grpcode(relation()->lfile(LF_MAG).get("LIVELLO"),lv);
if (piece.not_empty()) { if (piece.not_empty()) {
levname << '/' << piece ; levname << '/' << piece ;
} }
} while (++lv< (_tolivgiac ? _tolivgiac: _giaclev->last_level()) ); } while (++lv< (_tolivgiac ? _tolivgiac: _giaclev->last_level()) );
} }
@ -19,30 +19,30 @@ void TForm_stampemg::gruppogiac(TForm_item &cf, TToken_string &s)
TString valore,levname; TString valore,levname;
int livello=atoi(s.get()); int livello=atoi(s.get());
if (_fromlivgiac) { if (_fromlivgiac) {
levname=relation()->lfile(LF_MAG).get("CODART"); levname=relation()->lfile(LF_MAG).get("CODART");
if (_fromlivgiac>1) { if (_fromlivgiac>1) {
add_giaclev(levname); add_giaclev(levname);
} }
} }
levname << ' ' << _giaclev->name(livello) ; levname << ' ' << _giaclev->name(livello) ;
valore=_giacgrp->decode(_giaclev->build_tabcode(relation()->lfile(LF_MAG).get("LIVELLO"),livello)); valore=_giaclev->group_descr(relation()->lfile(LF_MAG).get("LIVELLO"),livello);
if (valore.empty()) if (valore.empty())
valore=UNKNOWN_NAME; valore=UNKNOWN_NAME;
cf.set(levname << ' ' << valore); cf.set(levname << ' ' << valore);
} }
void TForm_stampemg::gruppoart(TForm_item &cf, TToken_string &s) void TForm_stampemg::gruppoart(TForm_item &cf, TToken_string &s)
{ {
int lv=atoi(s.get()); int lv=atoi(s.get());
TString valore; TString valore;
valore=_artgrp->decode(_artlev->build_tabcode(relation()->lfile(LF_ANAMAG).get("CODART"),lv)); valore=_artlev->group_descr(relation()->lfile(LF_ANAMAG).get("CODART"),lv);
if (valore.not_empty()) if (valore.not_empty())
cf.set(valore); cf.set(valore);
else else
cf.set(UNKNOWN_NAME); cf.set(UNKNOWN_NAME);
} }
bool TForm_stampemg::validate(TForm_item &cf, TToken_string &s) bool TForm_stampemg::validate(TForm_item &cf, TToken_string &s)
@ -52,187 +52,183 @@ bool TForm_stampemg::validate(TForm_item &cf, TToken_string &s)
TString valore,levname; TString valore,levname;
if (code=="_USER") { if (code=="_USER") {
subcode=s.get(); subcode=s.get();
if (subcode=="GRUPPOGIAC") { if (subcode=="GRUPPOGIAC") {
/* /*
int lv=atoi(s.get()); int lv=atoi(s.get());
do { do {
valore=_giaclev->build_tabcode(relation()->lfile(LF_MAG).get("LIVELLO"),lv); valore=_giaclev->build_tabcode(relation()->lfile(LF_MAG).get("LIVELLO"),lv);
} while (--lv>0 && valore==""); } while (--lv>0 && valore=="");
if (valore!="") if (valore!="")
levname=_giaclev->name(lv+1) ; levname=_giaclev->name(lv+1) ;
else else
levname="giacenza"; levname="giacenza";
cf.set(levname << ' ' << _giacgrp->decode(valore)); cf.set(levname << ' ' << _giacgrp->decode(valore));
*/ */
gruppogiac(cf,s); gruppogiac(cf,s);
} }
if (subcode=="GRUPPOART") { if (subcode=="GRUPPOART") {
/* /*
int lv=atoi(s.get()); int lv=atoi(s.get());
do { do {
valore=_artlev->build_tabcode(relation()->lfile(LF_ANAMAG).get("CODART"),lv); valore=_artlev->build_tabcode(relation()->lfile(LF_ANAMAG).get("CODART"),lv);
} while (--lv>0 && valore==""); } while (--lv>0 && valore=="");
cf.set(_artgrp->decode(valore)); cf.set(_artgrp->decode(valore));
*/ */
gruppoart(cf,s); gruppoart(cf,s);
} }
if (subcode=="CODGRUPPOART") { if (subcode=="CODGRUPPOART") {
int lv=atoi(s.get()); int lv=atoi(s.get());
do { do {
valore=relation()->lfile(LF_ANAMAG).get("CODART"); valore=relation()->lfile(LF_ANAMAG).get("CODART");
valore.cut(_artlev->packed_lenght(lv)); valore.cut(_artlev->packed_lenght(lv));
} while (--lv>0 && valore==""); } while (--lv>0 && valore=="");
cf.set(valore); cf.set(valore);
} }
if (subcode=="CATMER") { if (subcode=="CATMER") {
valore=relation()->lfile(_sottocatmer ? -401 : -400).get("S0"); valore=relation()->lfile(_sottocatmer ? -401 : -400).get("S0");
cf.set(valore); cf.set(valore);
} }
if (subcode=="CODCATMER") { if (subcode=="CODCATMER") {
valore=relation()->lfile(LF_ANAMAG).get("GRMERC"); valore=relation()->lfile(LF_ANAMAG).get("GRMERC");
valore.cut(_sottocatmer ? 5:3); valore.cut(_sottocatmer ? 5:3);
cf.set(valore); cf.set(valore);
} }
if (subcode=="LIVELLIGIAC") { if (subcode=="LIVELLIGIAC") {
int lv=_tolivgiac; int lv=_tolivgiac;
valore=""; valore="";
do { do {
const TString & piece = _giaclev->unpack_grpcode(relation()->lfile(LF_MAG).get("LIVELLO"),lv+1); const TString & piece = _giaclev->unpack_grpcode(relation()->lfile(LF_MAG).get("LIVELLO"),lv+1);
if (piece.not_empty()) { if (piece.not_empty()) {
if (valore.not_empty()) if (valore.not_empty())
valore << '/'; valore << '/';
valore << piece ; valore << piece ;
} }
} while (lv++<_giaclev->last_level()); } while (lv++<_giaclev->last_level());
if (valore!="") if (valore!="")
levname=_giaclev->name(_tolivgiac+1); levname=_giaclev->name(_tolivgiac+1);
else else
levname="Giacenza"; levname="Giacenza";
cf.set(levname << ' ' << valore); cf.set(levname << ' ' << valore);
} }
return TRUE; return TRUE;
} else } else
return TForm::validate(cf, s); return TForm::validate(cf, s);
} }
void TForm_stampemg::setcatmer(bool catmer,bool sottoc) void TForm_stampemg::setcatmer(bool catmer,bool sottoc)
{ {
TForm_subsection &s=((TForm_subsection &)find_field('B',odd_page,"GRUPPI_CATMER")); TForm_subsection &s=((TForm_subsection &)find_field('B',odd_page,"GRUPPI_CATMER"));
TString cond("GRMERC"); TString cond("GRMERC");
if (catmer) if (catmer)
cond << "[1," << (sottoc ? 5 : 3) <<']'; cond << "[1," << (sottoc ? 5 : 3) <<']';
else else
cond ="CODART[1,1]"; cond ="CODART[1,1]";
s.setcondition(cond,_strexpr); s.setcondition(cond,_strexpr);
_sottocatmer=sottoc; _sottocatmer=sottoc;
} }
bool TForm_stampemg::setdett_perart(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep) bool TForm_stampemg::setdett_perart(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep)
{ {
find_field('B',odd_page,"H_MAGAZZINO").show(showmag && showdep); find_field('B',odd_page,"H_MAGAZZINO").show(showmag && showdep);
find_field('B',odd_page,"TOT_MAGAZZINO").show(showmag); find_field('B',odd_page,"TOT_MAGAZZINO").show(showmag);
find_field('B',odd_page,"H_DEPOSITO").show(FALSE); find_field('B',odd_page,"H_DEPOSITO").show(FALSE);
find_field('B',odd_page,"TOT_DEPOSITO").show(showdep); find_field('B',odd_page,"TOT_DEPOSITO").show(showdep);
return setdettaglio(TRUE,fromlivart,livart,fromlivgiac,livgiac,showmag||showdep); return setdettaglio(TRUE,fromlivart,livart,fromlivgiac,livgiac,showmag||showdep);
} }
bool TForm_stampemg::setdett_permag(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep,bool showdett) bool TForm_stampemg::setdett_permag(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep,bool showdett)
{ {
find_field('B',odd_page,"H_MAGAZZINO").show(showmag && (showdep) ); find_field('B',odd_page,"H_MAGAZZINO").show(showmag && (showdep) );
find_field('B',odd_page,"TOT_MAGAZZINO").show(showmag); find_field('B',odd_page,"TOT_MAGAZZINO").show(showmag);
find_field('B',odd_page,"H_DEPOSITO").show(showdep && showdett); find_field('B',odd_page,"H_DEPOSITO").show(showdep && showdett);
find_field('B',odd_page,"TOT_DEPOSITO").show(showdep); find_field('B',odd_page,"TOT_DEPOSITO").show(showdep);
return setdettaglio(showdett,fromlivart,livart,fromlivgiac,livgiac,FALSE); return setdettaglio(showdett,fromlivart,livart,fromlivgiac,livgiac,FALSE);
} }
bool TForm_stampemg::setdettaglio(bool show, int fromlivart,int livart,int fromlivgiac,int livgiac,bool dettgiac) bool TForm_stampemg::setdettaglio(bool show, int fromlivart,int livart,int fromlivgiac,int livgiac,bool dettgiac)
{ {
_fromlivart=fromlivart; _fromlivart=fromlivart;
_fromlivgiac=fromlivgiac; _fromlivgiac=fromlivgiac;
_tolivart=livart; _tolivart=livart;
_tolivgiac=livgiac; _tolivgiac=livgiac;
// *********** // ***********
int i, tolivart,tolivgiac; int i, tolivart,tolivgiac;
// abilita le sezioni dei livelli di codice // abilita le sezioni dei livelli di codice
TForm_subsection &s1=(TForm_subsection &)find_field('B',odd_page,"H_ARTICOLO"); TForm_subsection &s1=(TForm_subsection &)find_field('B',odd_page,"H_ARTICOLO");
TForm_subsection &s2=(TForm_subsection &)find_field('B',odd_page,"TOT_ARTICOLO"); TForm_subsection &s2=(TForm_subsection &)find_field('B',odd_page,"TOT_ARTICOLO");
if (fromlivgiac==0 && (livart==0 ||livart==_artlev->last_level())) { if (fromlivgiac==0 && (livart==0 ||livart==_artlev->last_level())) {
s1.show(show && livart<_artlev->last_level() || dettgiac); s1.show(show && livart<_artlev->last_level() || dettgiac);
s2.show(show); s2.show(show);
} else { } else {
s1.hide(); s1.hide();
s2.hide(); s2.hide();
} }
tolivart =min(( livart ? livart :_artlev->last_level()),_artlev->last_level()-1) ; tolivart =min(( livart ? livart :_artlev->last_level()),_artlev->last_level()-1) ;
tolivgiac=livgiac ? livgiac :_giaclev->last_level(); tolivgiac=livgiac ? livgiac :_giaclev->last_level();
for (i=1; i<=FORM_MAXARTLEV; i++) for (i=1; i<=FORM_MAXARTLEV; i++)
{ {
TString sname("TOT_GART"); TString sname("TOT_GART");
sname << i; sname << i;
TForm_subsection &s1=(TForm_subsection &)find_field('B',odd_page,sname); TForm_subsection &s1=(TForm_subsection &)find_field('B',odd_page,sname);
s1.show(show && i>=fromlivart && i<=tolivart && fromlivgiac==0); s1.show(show && i>=fromlivart && i<=tolivart && fromlivgiac==0);
sname="H_GCODART"; sname="H_GCODART";
sname << i; sname << i;
TForm_subsection &s2=(TForm_subsection &)find_field('B',odd_page,sname); TForm_subsection &s2=(TForm_subsection &)find_field('B',odd_page,sname);
s2.show(show && i>=fromlivart && s2.show(show && i>=fromlivart &&
(i<tolivart || (i==tolivart && (livart>tolivart || livgiac || dettgiac))) && fromlivgiac==0); (i<tolivart || (i==tolivart && (livart>tolivart || livgiac || dettgiac))) && fromlivgiac==0);
} }
// abilita le sezioni del codice livelli giacenza // abilita le sezioni del codice livelli giacenza
for (i=1; i<=FORM_MAXGIACLEV; i++) for (i=1; i<=FORM_MAXGIACLEV; i++)
{ {
TString sname("TOT_GLIVGIAC"); TString sname("TOT_GLIVGIAC");
sname << i; sname << i;
TForm_subsection &s1=(TForm_subsection &)find_field('B',odd_page,sname); TForm_subsection &s1=(TForm_subsection &)find_field('B',odd_page,sname);
s1.show(show && i>=fromlivgiac && (i<=tolivgiac) && livart==0); s1.show(show && i>=fromlivgiac && (i<=tolivgiac) && livart==0);
sname="H_GLIVGIAC"; sname="H_GLIVGIAC";
sname << i; sname << i;
TForm_subsection &s2=(TForm_subsection &)find_field('B',odd_page,sname); TForm_subsection &s2=(TForm_subsection &)find_field('B',odd_page,sname);
s2.show(show && i>=fromlivgiac && (i<tolivgiac ||(i==tolivgiac && dettgiac)) && livart==0); s2.show(show && i>=fromlivgiac && (i<tolivgiac ||(i==tolivgiac && dettgiac)) && livart==0);
} }
// *********** // ***********
fromlivart = fromlivart ? fromlivart :1; fromlivart = fromlivart ? fromlivart :1;
fromlivgiac=fromlivgiac ? fromlivgiac :1; fromlivgiac=fromlivgiac ? fromlivgiac :1;
// codice livello giacenza // codice livello giacenza
for (i=fromlivgiac;i<=tolivgiac ; i++) { for (i=fromlivgiac;i<=tolivgiac ; i++) {
TString sname=("GRUPPI_LIVGIAC"); TString sname=("GRUPPI_LIVGIAC");
sname << i; sname << i;
TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,sname); TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,sname);
TString cond(s.condition()); TString cond(s.condition());
cond << "[1," << _giaclev->packed_lenght(i) <<']'; cond << "[1," << _giaclev->packed_lenght(i) <<']';
s.setcondition(cond,_strexpr); s.setcondition(cond,_strexpr);
} }
// sezioni livello codice // sezioni livello codice
for (i=fromlivart;i<=tolivart ; i++) { for (i=fromlivart;i<=tolivart ; i++) {
TString sname("GRUPPI_CODART"); TString sname("GRUPPI_CODART");
sname << i; sname << i;
TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,sname); TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,sname);
TString cond(s.condition()); TString cond(s.condition());
cond << '[' << (i==1 ? 1:_artlev->packed_lenght(i-1))<<',' << _artlev->packed_lenght(i) <<']'; cond << '[' << (i==1 ? 1:_artlev->packed_lenght(i-1))<<',' << _artlev->packed_lenght(i) <<']';
s.setcondition(cond,_strexpr); s.setcondition(cond,_strexpr);
} }
return TRUE; return TRUE;
} }
TForm_stampemg::TForm_stampemg(const char *name,const char *code) TForm_stampemg::TForm_stampemg(const char *name,const char *code)
: TForm(name,code) : TForm(name,code)
{ {
_giaclev= new TMag_livelli("FCG"); _giaclev= new TCodgiac_livelli();
_artlev= new TMag_livelli("FCA"); _artlev= new TCodart_livelli();
_giacgrp= new TDecoder("GCG"); _fromlivgiac=_tolivgiac=0;
_artgrp= new TDecoder("GCA"); _fromlivart=_tolivart=0;
_fromlivgiac=_tolivgiac=0;
_fromlivart=_tolivart=0;
} }
TForm_stampemg::~TForm_stampemg() TForm_stampemg::~TForm_stampemg()
{ {
delete _giaclev; delete _giaclev;
delete _artlev; delete _artlev;
delete _giacgrp;
delete _artgrp;
} }

View File

@ -364,7 +364,7 @@ int THead_lines_record::read(TBaseisamfile& f, word op, word lockop)
} }
else else
{ {
// nuovo oggetto: resetta tutto // nuovo oggetto: resetta tutto
_nuovo = TRUE; _nuovo = TRUE;
destroy_rows(); destroy_rows();
_rows->set_key((TRectype *)(line_key.dup())); // ok _rows->set_key((TRectype *)(line_key.dup())); // ok
@ -492,7 +492,7 @@ int THead_lines_record::remove(TBaseisamfile& f) const
TRegistro_std::TRegistro_std(const char* cod, int year) : TRectype(LF_TAB) TRegistro_std::TRegistro_std(const char* cod, int year) : TRectype(LF_TAB)
{ {
if (!read(cod, year)) if (!read(cod, year))
fatal_box("Il codice richiesto non è stato trovato nei registri"); fatal_box("Il codice richiesto non è stato trovato nei registri");
TTable itl("%ITL"); TTable itl("%ITL");
itl.put("CODTAB",cod_intest()); itl.put("CODTAB",cod_intest());
itl.read(); itl.read();
@ -528,10 +528,10 @@ bool TRegistro_std::write(bool rewrite) const
TTable reg("REG"); TTable reg("REG");
reg.set_curr((TRectype *)this); reg.set_curr((TRectype *)this);
if (rewrite) if (rewrite)
err = reg.rewrite(); err = reg.rewrite();
else else
err = reg.write(); err = reg.write();
return err == NOERR; return err == NOERR;
} }