campo-sirio/mg/mglib03.cpp
augusto 3ce702a635 Introdotto un rpad prima di un cat nelle variabili codice
In questo modo si evitano messaggi di warning in debug


git-svn-id: svn://10.65.10.50/trunk@4983 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-07-30 13:40:12 +00:00

235 lines
7.2 KiB
C++
Executable File

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