Patch level : 4.0
Files correlati : batbgsa.msk mg0.exe Ricompilazione Demo : [ ] Commento : Migliorata gestione gruppi avanzati git-svn-id: svn://10.65.10.50/trunk@15447 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3bb185d781
commit
79807cb175
@ -2,9 +2,9 @@
|
||||
#define F_CODLIV 101
|
||||
#define F_DESLIV 102
|
||||
#define F_FORMLIV 103
|
||||
#define F_ROOT 104
|
||||
#define F_CODGROUP 111
|
||||
#define F_DESGROUP 112
|
||||
#define F_CODGROUP 104
|
||||
#define F_DESGROUP 105
|
||||
#define F_ROOT 199
|
||||
|
||||
#define F_CHILD1 201
|
||||
#define F_DESCR1 202
|
||||
|
@ -57,11 +57,11 @@ BEGIN
|
||||
KEY 1
|
||||
USE GSA
|
||||
JOIN FSA ALIAS 500 INTO CODTAB==CODTAB[1,3]
|
||||
INPUT CODTAB[1,3] F_CODLIV SELECT
|
||||
INPUT CODTAB[4,24] F_CODGROUP
|
||||
INPUT CODTAB[1,3] F_CODLIV SELECT
|
||||
INPUT CODTAB[4,24] F_CODGROUP
|
||||
DISPLAY "Codice" CODTAB[1,3]
|
||||
DISPLAY "Parte@50 " 500@->S0
|
||||
DISPLAY "Gruppo@20" CODTAB[2,25]
|
||||
DISPLAY "Gruppo@20" CODTAB[4,24]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODLIV CODTAB[1,3]
|
||||
OUTPUT F_CODGROUP CODTAB[4,24]
|
||||
|
253
mg/mg0100.cpp
253
mg/mg0100.cpp
@ -10,12 +10,31 @@
|
||||
#include "mglib.h"
|
||||
#include "../ve/vetbmag.h"
|
||||
|
||||
// applicazione per la gestione delle tabelle di magazzino
|
||||
class Tab_app_mag : public Tab_application
|
||||
{
|
||||
|
||||
protected: // TRelation_application
|
||||
virtual bool user_destroy() ;
|
||||
virtual bool user_create() ;
|
||||
virtual bool protected_record(TRectype& rec) ;
|
||||
virtual int rewrite(const TMask& m);
|
||||
|
||||
virtual TMask * set_mask(TMask * _m=NULL);
|
||||
|
||||
public:
|
||||
Tab_app_mag();
|
||||
virtual ~Tab_app_mag() {}
|
||||
};
|
||||
|
||||
HIDDEN inline Tab_app_mag& app() { return (Tab_app_mag&)main_app(); }
|
||||
|
||||
|
||||
#define MAXMETACH 20
|
||||
// maschere delle tabelle di magazzino
|
||||
class TMask_tabmag : public TMask
|
||||
{
|
||||
TCodice_livelli * cod_liv;
|
||||
TTable *aux_tabf;
|
||||
TFile_cache *tab_cache;
|
||||
TMetachar * metach;
|
||||
|
||||
@ -27,74 +46,77 @@ class TMask_tabmag : public TMask
|
||||
static bool codlivart_handler(TMask_field &, KEY); // handler del numero formato articoli
|
||||
static bool codlivgiac_handler(TMask_field &, KEY); // handler del numero formato giacenze
|
||||
static bool codgrp_handler(TMask_field &, KEY); // handler del numero formato
|
||||
|
||||
static bool adv_codgrp_handler(TMask_field& f, KEY k); // handler codice gruppo avanzato
|
||||
|
||||
public:
|
||||
// @cmember Disabilita la verifica del modulo in chiave
|
||||
virtual bool check_autorization() const
|
||||
{return FALSE;}
|
||||
TMask_tabmag(const char * ,const TString16 &);
|
||||
TMask_tabmag(const char*, const TString&);
|
||||
virtual ~TMask_tabmag();
|
||||
};
|
||||
|
||||
// costruttore della maschera
|
||||
TMask_tabmag::TMask_tabmag(const char * _maskname,const TString16 &tabname):
|
||||
TMask(_maskname)
|
||||
TMask_tabmag::TMask_tabmag(const char * _maskname, const TString &tabname)
|
||||
: TMask(_maskname)
|
||||
{
|
||||
aux_tabf=NULL;
|
||||
if (tabname == "MAG") // Magazzini
|
||||
cod_liv = NULL;
|
||||
|
||||
if (tabname == "MAG") // Magazzini
|
||||
{
|
||||
TMagazzini magazzini;
|
||||
if (!magazzini.gestmultimag())
|
||||
{
|
||||
TMagazzini magazzini;
|
||||
if (!magazzini.gestmultimag())
|
||||
{
|
||||
set_handler(F_CODICE, singlemag_handler);
|
||||
set_handler(F_MAGSTD, stdmag_handler);
|
||||
//disable(F_MAGSTD);
|
||||
}
|
||||
if (!magazzini.gestdep())
|
||||
{
|
||||
field(F_GESTGIA).reset();
|
||||
field(F_GESTGIA).disable();
|
||||
}
|
||||
set_handler(F_CODICE, singlemag_handler);
|
||||
set_handler(F_MAGSTD, stdmag_handler);
|
||||
//disable(F_MAGSTD);
|
||||
}
|
||||
else if (tabname == "%CAU")
|
||||
if (!magazzini.gestdep())
|
||||
{
|
||||
if (!main_app().has_module(DBAUT))
|
||||
hide(F_DIBAEXPLOSION);
|
||||
set_handler(F_SGNGIAC, sumsign_handler);
|
||||
}
|
||||
else if (tabname == "FCA") // FORMATO CODICE ARTICOLI
|
||||
{
|
||||
cod_liv=new TCodart_livelli;
|
||||
aux_tabf = new TTable("FCA");
|
||||
metach= new TMetachar("");
|
||||
set_handler(F_FORMLIV, format_handler);
|
||||
set_handler(F_CODLIV, codlivart_handler);
|
||||
}
|
||||
else if (tabname == "GCA") // GRUPPI CODICE ARTICOLI
|
||||
{
|
||||
cod_liv=new TCodart_livelli;
|
||||
set_handler(F_CODGROUP, codgrp_handler);
|
||||
}
|
||||
else if (tabname == "FCG") // FORMATO CODICE GIACENZE
|
||||
{
|
||||
cod_liv = new TCodgiac_livelli;
|
||||
metach = new TMetachar("") ;
|
||||
aux_tabf = new TTable("FCG");
|
||||
set_handler(F_FORMLIV, formatgiac_handler);
|
||||
set_handler(F_CODLIV, codlivgiac_handler);
|
||||
}
|
||||
else if (tabname == "GCG") // GRUPPI CODICE GIACENZE
|
||||
{
|
||||
cod_liv = new TCodgiac_livelli;
|
||||
set_handler(F_CODGROUP, codgrp_handler);
|
||||
field(F_GESTGIA).reset();
|
||||
field(F_GESTGIA).disable();
|
||||
}
|
||||
} else
|
||||
if (tabname == "%CAU")
|
||||
{
|
||||
if (!main_app().has_module(DBAUT))
|
||||
hide(F_DIBAEXPLOSION);
|
||||
set_handler(F_SGNGIAC, sumsign_handler);
|
||||
} else
|
||||
if (tabname == "FCA") // FORMATO CODICE ARTICOLI
|
||||
{
|
||||
cod_liv=new TCodart_livelli;
|
||||
metach= new TMetachar("");
|
||||
set_handler(F_FORMLIV, format_handler);
|
||||
set_handler(F_CODLIV, codlivart_handler);
|
||||
} else
|
||||
if (tabname == "GCA") // GRUPPI CODICE ARTICOLI
|
||||
{
|
||||
cod_liv=new TCodart_livelli;
|
||||
set_handler(F_CODGROUP, codgrp_handler);
|
||||
} else
|
||||
if (tabname == "FCG") // FORMATO CODICE GIACENZE
|
||||
{
|
||||
cod_liv = new TCodgiac_livelli;
|
||||
metach = new TMetachar("") ;
|
||||
set_handler(F_FORMLIV, formatgiac_handler);
|
||||
set_handler(F_CODLIV, codlivgiac_handler);
|
||||
} else
|
||||
if (tabname == "GCG") // GRUPPI CODICE GIACENZE
|
||||
{
|
||||
cod_liv = new TCodgiac_livelli;
|
||||
set_handler(F_CODGROUP, codgrp_handler);
|
||||
} else
|
||||
if (tabname == "GSA") // GRUPPI CODICE AVANZATI
|
||||
{
|
||||
set_handler(F_CODGROUP, adv_codgrp_handler);
|
||||
}
|
||||
}
|
||||
|
||||
TMask_tabmag::~TMask_tabmag()
|
||||
{
|
||||
if (aux_tabf!=NULL)
|
||||
delete aux_tabf;
|
||||
if (cod_liv!=NULL)
|
||||
delete cod_liv;
|
||||
}
|
||||
|
||||
// tabella magazzini: controllo codice
|
||||
@ -168,14 +190,13 @@ bool TMask_tabmag::format_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TString s(f.get());
|
||||
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
|
||||
TTable * aux_tabf=mask.aux_tabf;
|
||||
TTable aux_tabf(app().get_tabname());
|
||||
|
||||
s.strip_spaces();
|
||||
f.set(s);
|
||||
|
||||
aux_tabf->zero();
|
||||
aux_tabf->put("CODTAB",mask.get_int(F_CODLIV)+1);
|
||||
if (aux_tabf->read()==NOERR)
|
||||
aux_tabf.put("CODTAB",mask.get_int(F_CODLIV)+1);
|
||||
if (aux_tabf.read()==NOERR)
|
||||
{
|
||||
// non è l'ultimo livello: solo caratteri obbligatori
|
||||
if (mask.metach->has_opzchars(s))
|
||||
@ -198,20 +219,19 @@ bool TMask_tabmag::formatgiac_handler(TMask_field& f, KEY k)
|
||||
int total_len=0;
|
||||
TString s(f.get());
|
||||
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
|
||||
TTable * aux_tabf=mask.aux_tabf;
|
||||
TTable aux_tabf(app().get_tabname());
|
||||
|
||||
s.strip_spaces();
|
||||
f.set(s);
|
||||
mask.set(F_LENFORM,mask.metach->maxstrlen(s));
|
||||
|
||||
aux_tabf->zero();
|
||||
aux_tabf->put("CODTAB",1);
|
||||
if (aux_tabf->read()==NOERR)
|
||||
aux_tabf.put("CODTAB",1);
|
||||
if (aux_tabf.read()==NOERR)
|
||||
{
|
||||
do {
|
||||
if (aux_tabf->get_int("CODTAB") != mask.get_int(F_CODLIV))
|
||||
total_len+=aux_tabf->get_int("I0");
|
||||
} while (aux_tabf->next()==NOERR);
|
||||
if (aux_tabf.get_int("CODTAB") != mask.get_int(F_CODLIV))
|
||||
total_len+=aux_tabf.get_int("I0");
|
||||
} while (aux_tabf.next()==NOERR);
|
||||
}
|
||||
total_len+=mask.get_int(F_LENFORM);
|
||||
if (total_len > maxlen)
|
||||
@ -229,56 +249,61 @@ bool TMask_tabmag::codlivart_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB && f.focusdirty())
|
||||
{
|
||||
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
|
||||
TTable * aux_tabf=mask.aux_tabf;
|
||||
int codliv=atoi((const char *)f.get());
|
||||
|
||||
if (codliv>1)
|
||||
const int codliv=atoi(f.get());
|
||||
if (codliv>1)
|
||||
// Non è il primo codice
|
||||
{
|
||||
aux_tabf->zero();
|
||||
aux_tabf->put("CODTAB",codliv-1);
|
||||
if (aux_tabf->read()==NOERR)
|
||||
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
|
||||
TTable aux_tabf(app().get_tabname());
|
||||
aux_tabf.put("CODTAB",codliv-1);
|
||||
if (aux_tabf.read()==NOERR)
|
||||
// esiste un precedente
|
||||
{
|
||||
TString prevformat(aux_tabf->get("S1"));
|
||||
aux_tabf->zero();
|
||||
aux_tabf->put("CODTAB",codliv+1);
|
||||
if (aux_tabf->read()!=NOERR && mask.metach->has_opzchars(prevformat))
|
||||
{
|
||||
f.error_box(TR("Il livello precedente include caratteri opzionali nel formato\ne non puo' divenire un livello intermedio"));
|
||||
return FALSE;
|
||||
}
|
||||
} else {
|
||||
f.error_box(TR("Non si possono inserire salti nel livello del codice"));
|
||||
return FALSE;
|
||||
}
|
||||
TString prevformat(aux_tabf.get("S1"));
|
||||
aux_tabf.put("CODTAB",codliv+1);
|
||||
if (aux_tabf.read()!=NOERR && mask.metach->has_opzchars(prevformat))
|
||||
return f.error_box(TR("Il livello precedente include caratteri opzionali nel formato\ne non puo' divenire un livello intermedio"));
|
||||
}
|
||||
else
|
||||
return f.error_box(TR("Non si possono inserire salti nel livello del codice"));
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// HANDLER DEL CODICE GRUPPO AVANZATO
|
||||
bool TMask_tabmag::adv_codgrp_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB && f.focusdirty())
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (m.query_mode())
|
||||
{
|
||||
const int desc_pos = m.id2pos(f.dlg()) + 1;
|
||||
TMask_field& desc = m.fld(desc_pos);
|
||||
if (desc.empty()) // Copia il codice nella descrizione se necessario
|
||||
desc.set(f.get());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// HANDLER DEL CODICE LIVELLO
|
||||
bool TMask_tabmag::codlivgiac_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB && f.focusdirty())
|
||||
{
|
||||
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
|
||||
TTable * aux_tabf=mask.aux_tabf;
|
||||
int codliv=atoi((const char *)f.get());
|
||||
|
||||
const int codliv = atoi(f.get());
|
||||
if (codliv>1)
|
||||
// Non è il primo codice
|
||||
{
|
||||
aux_tabf->zero();
|
||||
aux_tabf->put("CODTAB",codliv-1);
|
||||
if (aux_tabf->read()!=NOERR)
|
||||
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
|
||||
TTable aux_tabf(app().get_tabname());
|
||||
|
||||
aux_tabf.put("CODTAB",codliv-1);
|
||||
if (aux_tabf.read()!=NOERR)
|
||||
// non esiste un precedente
|
||||
{
|
||||
f.error_box(TR("Non si possono inserire salti nel livello del codice"));
|
||||
return FALSE;
|
||||
}
|
||||
return f.error_box(TR("Non si possono inserire salti nel livello del codice"));
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
@ -291,44 +316,15 @@ bool TMask_tabmag::codgrp_handler(TMask_field& f, KEY k)
|
||||
if ((k == K_TAB && f.focusdirty() )||k == K_ENTER )
|
||||
{
|
||||
TMask_tabmag & mask=((TMask_tabmag &)f.mask());
|
||||
|
||||
if (!mask.cod_liv->enabled())
|
||||
{
|
||||
f.error_box(TR("Livelli del codice non abilitati"));
|
||||
return FALSE;
|
||||
}
|
||||
return f.error_box(TR("Livelli del codice non abilitati"));
|
||||
|
||||
if (!f.empty() && !(mask.cod_liv->fit_to_format(f.get(),mask.get_int(F_CODLIV))))
|
||||
{
|
||||
f.error_box(TR("Codice non corrispondente al formato previsto"));
|
||||
return FALSE;
|
||||
}
|
||||
return f.error_box(TR("Codice non corrispondente al formato previsto"));
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// applicazione per la gestione delle tabelle di magazzino
|
||||
class Tab_app_mag : public Tab_application
|
||||
{
|
||||
|
||||
protected: // TRelation_application
|
||||
virtual bool user_destroy() ;
|
||||
virtual bool user_create() ;
|
||||
virtual bool protected_record(TRectype& rec) ;
|
||||
virtual int rewrite(const TMask& m);
|
||||
|
||||
virtual TMask * set_mask(TMask * _m=NULL);
|
||||
|
||||
public:
|
||||
Tab_app_mag();
|
||||
virtual ~Tab_app_mag() {}
|
||||
};
|
||||
|
||||
|
||||
HIDDEN inline Tab_app_mag& app() { return (Tab_app_mag&)main_app(); }
|
||||
// costruttore
|
||||
Tab_app_mag::Tab_app_mag() {}
|
||||
|
||||
@ -356,10 +352,11 @@ TMask * Tab_app_mag::set_mask(TMask * _m)
|
||||
{
|
||||
if (_m != NULL)
|
||||
return Tab_application::set_mask(_m);
|
||||
else {
|
||||
TFixed_string tabname(get_tabname());
|
||||
TString maskname;
|
||||
return Tab_application::set_mask(new TMask_tabmag((const char *)get_mask_name(maskname),tabname));
|
||||
else
|
||||
{
|
||||
const TString& tabname = get_tabname();
|
||||
TString maskname; get_mask_name(maskname);
|
||||
return Tab_application::set_mask(new TMask_tabmag(maskname, tabname));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -206,7 +206,7 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t)
|
||||
break;
|
||||
}
|
||||
|
||||
const TCurrency valore(p * giac_corretta);
|
||||
const TCurrency valore(real(p * giac_corretta));
|
||||
|
||||
cf.set(valore.get_num().string());
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user