Storico suddiviso per magazzini

Aggiunte parametrizzazioni da Config_ditta,ve


git-svn-id: svn://10.65.10.50/trunk@4778 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-06-27 16:45:59 +00:00
parent 4d246c0258
commit 26dffcf566

View File

@ -1,8 +1,5 @@
#include <relapp.h>
#include <tabutil.h>
#include <msksheet.h>
#include <recarray.h>
#include <assoc.h>
#include <checks.h>
#include <defmask.h>
#include <modaut.h>
@ -21,16 +18,18 @@ class TMask_anamag: public TMask {
TMetachar * metac;
int last_annogiac;
int last_annosto;
TString16 um_principale;
static bool handle_codice(TMask_field &, KEY); // handler del campo codice articolo
static bool handle_livart(TMask_field &, KEY); // handler dei campi codice articolo (livelli)
static bool handle_anno(TMask_field &, KEY); // handler del campo anno delle giacenze
static bool handle_stoanno(TMask_field &, KEY); // handler del campo anno delle giacenze
static bool handle_sheet_um(TMask_field &, KEY); // handler dello sheet delle unità di misura
static bool notify_sheet_um(TSheet_field & s, int r, KEY k); // handler dello sheet delle unità di misura
static bool notify_sheet_um(TSheet_field & s, int r, KEY k); // notify dello sheet delle unità di misura
static bool handle_sheet_deslin(TMask_field &, KEY); // handler dello sheet delle descrizioni in lingua
static bool handle_sheet_cod(TMask_field &, KEY); // handler dello sheet dei codici alternativi
static bool handle_sheetgiac(TMask_field &, KEY); // handler dello sheet giacenze
static bool notify_sheet_sto(TSheet_field & s, int r, KEY k); // notify dello storico
static bool handle_sheetstomag(TMask_field &, KEY); // handler dello sheet storico giacenze
static bool handle_sheet_um_um(TMask_field &, KEY); // handler del campo UM dello sheet delle unità di misura
static bool handle_sheet_um_price(TMask_field &, KEY); // handler del campo PREZZO e PREZZO_LORDO dello sheet delle unità di misura
@ -42,15 +41,21 @@ class TMask_anamag: public TMask {
void clear_info_sto();
bool info_sto_dirty();
void converti_storico(TString newum);
int add_totali_storico(TString &codmag);
bool remove_totali_storico(TString & codmag);
void update_totali_storico(TString & codmag);
bool check_totali_storico();
public:
TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv);
virtual ~TMask_anamag();
TEsercizi_contabili esercizi_contabili;
TMask_anamag(TRelation * rel,bool mg_autorized);
virtual ~TMask_anamag();
};
// costruttore della maschera anagrafica di magazzino
TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv) : TMask("ve2400")
TMask_anamag::TMask_anamag(TRelation * rel,bool mg_autorized) : TMask("ve2400")
{
_rel=rel;
// imposta il riconoscimento dei caratteri del formato dell'ultima parte dell'articolo
@ -77,6 +82,7 @@ TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv)
((TSheet_field &)field(F_SHEETGIAC)).set_userget(sheetgiac_get);
((TSheet_field &)field(F_SHEETGIAC)).set_userput(sheetgiac_put);
set_handler(F_SHEETSTOMAG, handle_sheetstomag);
((TSheet_field &)field(F_SHEETSTOMAG)).set_notify(notify_sheet_sto);
((TSheet_field &)field(F_SHEETSTOMAG)).set_userget(sheetsto_get);
((TSheet_field &)field(F_SHEETSTOMAG)).set_userput(sheetsto_put);
@ -87,17 +93,21 @@ TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv)
fm.set_handler(FS_PREZZO, handle_sheet_um_price);
fm.set_handler(FS_PREZZO_LORDO, handle_sheet_um_price);
// ***************************************************
// ABILITAZIONI PARAMETRICHE
TConfig mgconfig(CONFIG_DITTA, "mg");
// Abilita la pagina delle giacenze
if (enable_mag)
if (mg_autorized && mgconfig.get_bool("GESMAG"))
{
enable_page(3,TRUE);
enable_page(4,TRUE);
// setta i campi della maschera
// per la pagina giacenze
// setta i campi della maschera per la pagina giacenze
TSheet_field &fld_giac= (TSheet_field &)field(F_SHEETGIAC);
// disabilita le colonne quando non sono utilizzati i livelli di giacenza
for (int i=0; i<4; i++)
for (int i=0; i<4; i++)
{
if (livelli_giac->enabled(1+i)) {
if (mgconfig.get_bool("GESLIVGIAC") && livelli_giac->enabled(1+i)) {
fld_giac.sheet_mask().field(F_LIV1+i).show();
fld_giac.set_column_header(fld_giac.cid2index(F_LIV1+i),livelli_giac->name(1+i));
fld_giac.sheet_mask().field(F_LIV1+i).set_prompt(livelli_giac->name(1+i));
@ -107,12 +117,12 @@ TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv)
}
}
// disabilita la colonna numero distinte
if (0) {
if (FALSE) {
fld_giac.delete_column(fld_giac.cid2index(F_NDIST));
fld_giac.sheet_mask().field(F_NDIST).enable(FALSE);
}
// abilita la gestione delle ubicazioni (manuale/su tabella)
if (1) {
if (mgconfig.get("GESUBICAZ")=="M") {
fld_giac.sheet_mask().field(F_UBICAZ).show(FALSE);
fld_giac.sheet_mask().field(F_UBICAZD).show(FALSE);
fld_giac.sheet_mask().field(F_UBICAZ2).show(TRUE);
@ -123,9 +133,10 @@ TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv)
}
} else {
enable_page(4,FALSE);
enable_page(3,FALSE);
}
// abilita la visualizzazione dei campi distinti per i livelli articolo
if (enable_artliv)
if (FALSE)
{
field(F_CODART).hide();
field(F_GCA).hide();
@ -144,7 +155,7 @@ TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv)
}
}
} else {
if (livelli_art->enabled())
if (mgconfig.get_bool("GESCODART") && livelli_art->enabled())
{
set_handler(F_CODART, handle_codice);
for (int i=0; i<9; i++)
@ -187,13 +198,13 @@ void TMask_anamag::sheetsto_get(TSheet_field &sheet_sto, int item)
bool TMask_anamag::info_sto_dirty()
{
return
field(F_STOULTCOS1).dirty() ||
field(F_STOULTCOS2).dirty() ||
field(F_STOCOSTOSTD).dirty() ||
field(F_STOCOSTOMEDIO).dirty()||
field(F_STOCATVEN ).dirty()||
field(F_STOCODLIST).dirty()||
field(F_STOPREZZOLIST).dirty();
field(F_STOULTCOS1).focusdirty() ||
field(F_STOULTCOS2).focusdirty() ||
field(F_STOCOSTOSTD).focusdirty() ||
field(F_STOCOSTOMEDIO).focusdirty()||
field(F_STOCATVEN ).focusdirty()||
field(F_STOCODLIST).focusdirty()||
field(F_STOPREZZOLIST).focusdirty();
}
@ -276,6 +287,11 @@ bool TMask_anamag::handle_anno(TMask_field &fld, KEY k)
{
TSheet_field &fld_giac= (TSheet_field &)mask.field(F_SHEETGIAC);
if (mask.get(F_ANNO).empty() )
{
mask.set(F_ANNORIF, mask.esercizi_contabili.last()) ;
mask.set(F_ANNO, mask.get(F_ANNORIF));
}
if (mask.last_annogiac>0 && mask.last_annogiac!=fld.mask().get_int(F_ANNO)) {
if (fld_giac.dirty() && handle_sheetgiac(fld_giac,K_ENTER)) {
if (fld.yesno_box("Vuoi salvare le righe di giacenza per l'anno %d",mask.last_annogiac )) {
@ -303,25 +319,32 @@ bool TMask_anamag::handle_stoanno(TMask_field &fld, KEY k)
{
TSheet_field &fld_stomag= (TSheet_field &)fld.mask().field(F_SHEETSTOMAG);
if (mask.last_annosto>0 && mask.last_annosto!=fld.mask().get_int(F_STOANNO))
if (mask.get(F_STOANNO).empty() )
{
mask.set(F_STOANNORIF, mask.esercizi_contabili.pred(mask.get_int(F_ANNORIF)) );
mask.set(F_STOANNO, mask.get(F_STOANNORIF));
}
if ( fld.focusdirty() && mask.last_annosto>0 && mask.last_annosto!=fld.mask().get_int(F_STOANNO))
{
if ((mask.field(F_SHEETSTOMAG).dirty() || mask.info_sto_dirty()) &&
handle_sheetstomag(fld_stomag,K_ENTER) &&
fld_stomag.items()>0 )
{
if (fld.yesno_box("Vuoi salvare le righe di storico per l'anno %d",mask.last_annosto)) {
if (fld.yesno_box("Vuoi salvare lo storico per l'anno %d",mask.last_annosto) &&
handle_sheetstomag(fld_stomag,K_ENTER)) {
fld_stomag.autosave(*mask._rel);
fld_stomag.record()->write(TRUE);
}
}
mask.field(F_STOANNORIF).set(fld.get());
mask.last_annosto=mask.get_int(F_STOANNORIF);
// rilegge lo storico relativo a quell'anno ed aggiorna il layout
mask.clear_info_sto();
fld_stomag.record()->read(*fld_stomag.putkey(*mask._rel));
fld_stomag.autoload(*mask._rel);
handle_sheetstomag(mask.field(F_SHEETSTOMAG),K_SPACE);
fld_stomag.force_update();
}
mask.last_annosto=mask.get_int(F_STOANNO);
} else
mask.last_annosto=mask.get_int(F_STOANNORIF);
}
return(TRUE);
}
@ -329,9 +352,10 @@ bool TMask_anamag::handle_stoanno(TMask_field &fld, KEY k)
bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k)
{
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
TMask_anamag & m= (TMask_anamag &)(fld.mask());
if (k == K_ENTER)
{
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
const int items = f.items();
if (items > 0)
{
@ -341,12 +365,20 @@ bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k)
const TString16 um(f.cell(i,0));
if (um.empty())
return error_box("Le unita' di misura non possono essere vuote");
//return error_box("Le unita' di misura non possono essere vuote");
if (v.add(um))
return error_box("Le unità di misura devono essere diverse tra loro"); // aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista già
}
}
} else if (k==K_TAB) {
if (m.um_principale!=f.cell(0,0)) {
m.converti_storico(f.cell(0,0));
m.um_principale=f.cell(0,0);
}
} else if (k==K_SPACE) {
m.um_principale=f.cell(0,0);
}
return TRUE;
}
@ -354,11 +386,10 @@ bool TMask_anamag::notify_sheet_um(TSheet_field &s, int r, KEY k)
{
if (k == K_TAB)
s.sheet_mask().enable(DLG_DELREC, r > 0);
TMask_field &mf=s.sheet_mask().field(DLG_DELREC);
return TRUE;
}
bool TMask_anamag::handle_sheet_deslin(TMask_field &fld, KEY k)
{
if (k == K_ENTER)
@ -446,28 +477,244 @@ bool TMask_anamag::handle_sheetgiac(TMask_field &fld, KEY k)
return TRUE;
}
int TMask_anamag::add_totali_storico(TString & codmag)
{
TSheet_field &s =(TSheet_field &)field(F_SHEETSTOMAG);
bool need_rigatotali(TRUE);
for (int r=0 ; r< s.items() && codmag>=s.cell(r,s.cid2index(F_STOCODMAG)); r++)
{
if (*s.cell(r,s.cid2index(F_STOTIPORIGA))==SIMBOLO_TOTALI
&& codmag==s.cell(r,s.cid2index(F_STOCODMAG)))
need_rigatotali=FALSE;
}
if (need_rigatotali )
{
real totq,totval;
TLocalisamfile mag(LF_MAG);
mag.setkey(2);
mag.put(MAG_ANNOES,esercizi_contabili.next(get_int(F_STOANNORIF)));
//mag.put(MAG_CODART,get(F_CODART));
mag.put(MAG_CODMAG,codmag);
mag.read();
while (!mag.eof()
&& esercizi_contabili.next(get_int(F_STOANNORIF))==mag.get_int(MAG_ANNOES)
&& strncmp((const char *)codmag,mag.get(MAG_CODMAG),3)==0)
{
if (get(F_CODART)==mag.get(MAG_CODART))
{
totq+=mag.get_real(MAG_RIM);
totval+=mag.get_real(MAG_VALRIM);
}
mag.next();
}
s.insert(r,FALSE);
s.row(r ).add(SIMBOLO_TOTALI,s.cid2index(F_STOTIPORIGA));
s.row(r ).add(codmag,s.cid2index(F_STOCODMAG));
s.row(r ).add("----",s.cid2index(F_STOANNOES));
s.row(r ).add(um_principale,s.cid2index(F_STOUM));
s.disable_cell(r,-1);
s.insert(r+1,FALSE);
s.row(r+1).add(SIMBOLO_TOTALI,s.cid2index(F_STOTIPORIGA));
s.row(r+1).add(codmag,s.cid2index(F_STOCODMAG));
s.row(r+1).add("",s.cid2index(F_STOANNOES));
s.row(r+1).add(um_principale,s.cid2index(F_STOUM));
s.row(r+1).add(totq.string(),s.cid2index(F_STOQUANT));
s.row(r+1).add(totval.string(),s.cid2index(F_STOVAL));
s.disable_cell(r+1,-1);
s.force_update(r+1);
}
update_totali_storico(codmag);
return r;
}
void TMask_anamag::update_totali_storico(TString & codmag)
{
TSheet_field &s =(TSheet_field &)field(F_SHEETSTOMAG);
real tot1,tot2;
// find first occourrence..
int i=0 ;
while (i< s.items() && codmag>s.cell(i,s.cid2index(F_STOCODMAG)))
i++;
// ...sum...
for (; i< s.items() && *s.cell(i,s.cid2index(F_STOTIPORIGA))!=SIMBOLO_TOTALI ; i++)
{
tot1+=s.cell(i,s.cid2index(F_STOQUANT));
tot2+=s.cell(i,s.cid2index(F_STOVAL));
}
//... display
if (i< s.items())
{
s.row(i).add(tot1.string(),s.cid2index(F_STOQUANT));
s.row(i).add(tot2.string(),s.cid2index(F_STOVAL));
s.force_update(i);
}
}
bool TMask_anamag::remove_totali_storico(TString & codmag)
{
TSheet_field &s =(TSheet_field &)field(F_SHEETSTOMAG);
bool found_some(FALSE);
if (codmag==" ")
return FALSE;
for (int r=0 ;
!found_some && r< s.items()-1
&& !(*s.cell(r,s.cid2index(F_STOTIPORIGA))==SIMBOLO_TOTALI
&& codmag==s.cell(r,s.cid2index(F_STOCODMAG)));
r++)
{
if (*s.cell(r,s.cid2index(F_STOTIPORIGA))!=SIMBOLO_TOTALI
&& codmag==s.cell(r,s.cid2index(F_STOCODMAG)))
found_some=TRUE;
}
if (!found_some)
{
// ultima riga
s.destroy(r,FALSE);
s.destroy(r,FALSE);
}
return !found_some;
}
bool TMask_anamag::check_totali_storico()
{
TSheet_field &s =(TSheet_field &)field(F_SHEETSTOMAG);
for (int r=0 ; r< s.items() ; r++)
{
for (; r< s.items() && *s.cell(r,s.cid2index(F_STOTIPORIGA))!=SIMBOLO_TOTALI; r++) ;
real totq1(s.cell(r,s.cid2index(F_STOQUANT))),totq2(s.cell(r+1,s.cid2index(F_STOQUANT)));
if (totq1!=totq2)
return yesno_box("La somma delle composizioni dello storico non corrisponde alla rimanenza\n Proseguo ugualmente ?");
real totval1(s.cell(r,s.cid2index(F_STOVAL))),totval2(s.cell(r+1,s.cid2index(F_STOVAL)));
if (totval1!=totval2)
return yesno_box("La somma del valore delle composizioni dello storico non corrisponde al valore della rimanenza\n Proseguo ugualmente ?");
}
return TRUE;
}
bool TMask_anamag::notify_sheet_sto(TSheet_field &s, int r, KEY k)
{
static TString16 oldcodmag,newcodmag,oldanno,newanno;
TMask_anamag & m=(TMask_anamag &)s.mask();
bool need_rigatotali=TRUE;
switch (k)
{
case K_DEL:
if (*s.cell(r,s.cid2index(F_STOTIPORIGA))==SIMBOLO_TOTALI)
return FALSE;
break;
case (K_CTRL+K_DEL):
if (m.remove_totali_storico(oldcodmag))
s.force_update();
break;
case K_TAB: // posizionamento sulla riga
oldcodmag=s.cell(r,s.cid2index(F_STOCODMAG));
oldanno=s.cell(r,s.cid2index(F_STOANNOES));
break;
case (K_ENTER): // fine modifica
newcodmag=(s.cell(r,s.cid2index(F_STOCODMAG)));
// modifica
m.update_totali_storico(newcodmag);
if (oldcodmag==s.cell(r,s.cid2index(F_STOCODMAG)))
{
if (oldanno==s.cell(r,s.cid2index(F_STOANNOES)) )
break;
} else {
m.remove_totali_storico(oldcodmag);
}
case (K_CTRL + K_INS ):
newcodmag=(s.cell(r,s.cid2index(F_STOCODMAG)));
newanno=(s.cell(r,s.cid2index(F_STOANNOES)));
if (newcodmag != " ")
{
// ordina
while (r< s.items()-1 && (newcodmag > s.cell(r+1,s.cid2index(F_STOCODMAG)) ||
(newcodmag == s.cell(r+1,s.cid2index(F_STOCODMAG)) &&
(newanno > s.cell(r+1,s.cid2index(F_STOANNOES)) && *s.cell(r+1,s.cid2index(F_STOTIPORIGA))!=SIMBOLO_TOTALI)) ))
{
s.swap_rows(r,r+1);
r++;
}
while (r>0 && (newcodmag < s.cell(r-1,s.cid2index(F_STOCODMAG)) ||
(newcodmag == s.cell(r-1,s.cid2index(F_STOCODMAG)) &&
(newanno < s.cell(r-1,s.cid2index(F_STOANNOES)) || *s.cell(r-1,s.cid2index(F_STOTIPORIGA))==SIMBOLO_TOTALI )) ))
{
s.swap_rows(r,r-1);
r--;
}
m.add_totali_storico(newcodmag);
TSheet_field & s_um=(TSheet_field & )s.mask().field(F_SHEETUM);
s.row(r).add(m.um_principale,s.cid2index(F_STOUM));
s.force_update();
}
break;
}
return TRUE;
}
bool TMask_anamag::handle_sheetstomag(TMask_field &fld, KEY k)
{
TSheet_field & f=(TSheet_field &)fld;
TMask_anamag &m=(TMask_anamag &) f.mask(); // prende la maschere d'origine del campo
if (k==K_ENTER)
{
TSheet_field & f=(TSheet_field &)fld;
const int items = f.items();
real totrim,totvalrim;
if (items > 0)
{
TMask &m= f.mask(); // prende la maschere d'origine del campo
if (!m.check_totali_storico())
return FALSE;
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
for (int i= 0; i< items; i++)
{
TString codeser(f.cell(i,F_STOANNOES-FIRST_FIELD));
if (codeser.empty())
return error_box("I codici degli esercizi non possono essere vuoti");
// aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista già
if (v.add(codeser))
return error_box("La composizione delle rimananenze deve far riferimento a esercizi tutti diversi tra loro");
if (*f.cell(i,f.cid2index(F_STOTIPORIGA))!=SIMBOLO_TOTALI)
{
TString codeser(f.cell(i,f.cid2index(F_STOANNOES)));
if (codeser.empty())
return error_box("I codici degli esercizi non possono essere vuoti");
// aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista già
if (v.add(codeser))
return error_box("La composizione delle rimanenze deve far riferimento a esercizi tutti diversi tra loro");
TLocalisamfile stor_aux(LF_STOMAG);
stor_aux.put(STOMAG_CODART,fld.mask().get(F_CODART));
stor_aux.put(STOMAG_ANNOESRIF,fld.mask().get(F_STOANNO));
stor_aux.put(STOMAG_ANNOES,codeser);
totrim=totrim+(real)f.cell(i,f.cid2index(F_STOQUANT));
totvalrim=totvalrim+(real)f.cell(i,f.cid2index(F_STOVAL));
}
}
for (i= 0; i< items;)
{
if (*f.cell(i,f.cid2index(F_STOTIPORIGA))==SIMBOLO_TOTALI)
f.rows_array().remove(i,TRUE);
else
i++;
}
// ordina le righe per ANNO
//f.rows_array().sort();
if ( m.get(F_STOANNO)<f.cell(f.items()-1,F_STOANNOES-FIRST_FIELD))
return error_box("La composizione delle rimanenze non puo' comprendere anni seguenti");
}
} else if (k==K_SPACE) {
for (int i=0; i< f.items();)
{
TString16 codmag(f.cell(i,f.cid2index(F_STOCODMAG)));
i=m.add_totali_storico(codmag)+2;
}
}
return TRUE;
}
@ -600,15 +847,21 @@ void TMask_anamag::sheetgiac_put(TSheet_field &fld_righe, int item)
}
}
void TMask_anamag:: converti_storico(TString newum)
{
}
// ******************************
// applicazione
class TAnagrafica_magazzino : public TRelation_application {
TMask_anamag *_msk; // maschera principale
TRelation *_rel; // relazione principale di un solo file (anagrafiche di magazzino)
TRecord_array *_linee_rec_um; // record array di accoppiamento delle unità di misura
TRecord_array *_linee_rec_deslin; // record array di accoppiamento delle descrizioni in lingua con il primo sheet
TRecord_array *_linee_rec_cod; // record array di accoppiamento delle codici corrispondenti con il secondo sheet
//TRecord_array *_linee_rec_um; // record array di accoppiamento delle unità di misura
//TRecord_array *_linee_rec_deslin; // record array di accoppiamento delle descrizioni in lingua con il primo sheet
//TRecord_array *_linee_rec_cod; // record array di accoppiamento delle codici corrispondenti con il secondo sheet
virtual bool user_create();
virtual bool user_destroy();
@ -635,22 +888,20 @@ bool TAnagrafica_magazzino::user_create()
// crea l'oggetto per i parametri di livello giacenza
// apre la maschera e dispone gli sheet
_rel= new TRelation(LF_ANAMAG);
_linee_rec_um= new TRecord_array(LF_UMART, "NRIGA");
_linee_rec_deslin= new TRecord_array(LF_DESLIN, "NRIGA");
_linee_rec_cod= new TRecord_array(LF_CODCORR, "NRIGA");
_msk= new TMask_anamag(_rel,has_module(MGAUT),FALSE);
//_linee_rec_um= new TRecord_array(LF_UMART, "NRIGA");
//_linee_rec_deslin= new TRecord_array(LF_DESLIN, "NRIGA");
//_linee_rec_cod= new TRecord_array(LF_CODCORR, "NRIGA");
_msk= new TMask_anamag(_rel,has_module(MGAUT));
return TRUE;
}
bool TAnagrafica_magazzino::user_destroy()
{
delete _linee_rec_cod;
delete _linee_rec_deslin;
delete _linee_rec_um;
//delete _linee_rec_cod;
//delete _linee_rec_deslin;
//delete _linee_rec_um;
delete _rel;
delete _msk;
@ -664,8 +915,8 @@ int TAnagrafica_magazzino::read(TMask& m)
if (err == NOERR)
{
// LETTURA SHEET STORICO MAGAZZINO IN AUTOMATICO
/*TSheet_field &fld_stomag= (TSheet_field &)m.field(F_SHEETSTOMAG); // prende il sheet delle unità di misura
fld_stomag.sheet_mask().field(F_STOCODART).set(m.field(F_CODART).get()); */
TSheet_field &fld_stomag= (TSheet_field &)m.field(F_SHEETSTOMAG);
fld_stomag.sheet_mask().field(F_STOCODART).set(m.field(F_CODART).get()); // necessario se lo sheet è vuoto
// *****************************
// LETTURA SHEET UNITA' DI MISURA
@ -678,7 +929,6 @@ int TAnagrafica_magazzino::read(TMask& m)
fld_um.disable_cell(0, 1); // mette in sola lettura il secondo campo della prima riga (il fattore di conversione della prima U.M. è fisso a 1)
fld_um.force_update(0); // aggiorna lo stato della riga 0
// preleva le info di storico (prezzi, ultcosti, ecc)
} // no errors in TRelation_application::read(m);
return err;
}