diff --git a/ve/ve2.cpp b/ve/ve2.cpp index e3ff6b7e7..375c20607 100755 --- a/ve/ve2.cpp +++ b/ve/ve2.cpp @@ -5,11 +5,12 @@ // #define MAIN -#define usage "Errore - Utilizzo: %s -{1|2|3}" +#define usage "Errore - Utilizzo: %s -{0|1|2|3}" extern int ve2100(int argc, char* argv[]); // listini extern int ve2200(int argc, char* argv[]); // contratti extern int ve2300(int argc, char* argv[]); // offerte-campagne +extern int ve2400(int argc, char* argv[]); // anagrafica di magazzino int main( int argc, char** argv) { @@ -18,15 +19,18 @@ int main( int argc, char** argv) switch (r) { - case 1: + case 0: rt = ve2100( argc, argv ); break; - case 2: + case 1: rt = ve2200( argc, argv ); break; - case 3: + case 2: rt = ve2300( argc, argv ); break; + case 3: + rt = ve2400( argc, argv ); + break; default: error_box( usage, argv[0] ); break; diff --git a/ve/ve2400.cpp b/ve/ve2400.cpp index 9ca1f95c2..8acf3e655 100755 --- a/ve/ve2400.cpp +++ b/ve/ve2400.cpp @@ -1,11 +1,6 @@ + #include "ve2400.h" -#define LF_ANAMAG 47 -#define LF_CODCORR 48 -#define LF_DESLIN 51 - - - #ifndef __CHECKS_H #include #endif @@ -14,244 +9,375 @@ #include #endif +#ifndef __TABUTIL_H +#include +#endif + #ifndef __MSKSHEET_H #include #endif -#ifndef __LFFILES_H -#include +#ifndef __ASSOC_H +#include #endif -#define F_SHEET1 300 -#define F_SHEET2 301 -class TAnamag_application : public TRelation_application -{ - TMask* _msk; - TRelation* _rel; +class TAnamag_application: public TRelation_application { + TMask *_msk; // maschera principale + TRelation *_rel; // relazione principale di un solo file (anagrafiche di magazzino) + TLocalisamfile *_umart; // file di accesso alle unità di misura + TLocalisamfile *_deslin; // file di accesso alle descrizioni in lingua + TLocalisamfile *_codcorr; // file di accesso ai codici corrispondenti + TRecord_array *_linee_rec0; // record array di accoppiamento delle unità di misura + TRecord_array *_linee_rec1; // record array di accoppiamento delle descrizioni in lingua con il primo sheet + TRecord_array *_linee_rec2; // record array di accoppiamento delle codici corrispondenti con il secondo sheet - TRecord_array * _linee_rec1; - TSheet_field * _sheet1; - - TRecord_array * _linee_rec2; - TSheet_field * _sheet2; - - - virtual int read(TMask& m); virtual bool user_create(); virtual bool user_destroy(); - virtual TMask* get_mask(int mode) { return _msk;} - virtual bool changing_mask(int mode) { return FALSE;} - virtual TRelation* get_relation() const { return _rel;} - TSheet_field& ss() const { return *_sheet1; } - - + virtual TMask *get_mask(int) {return _msk;} + virtual bool changing_mask(int) {return FALSE;} + virtual TRelation *get_relation() const {return _rel;} + virtual void init_insert_mode(TMask &); + + virtual int read(TMask& m); virtual int write(const TMask& m); virtual int rewrite(const TMask& m); - + static bool handle_sheet0(TMask_field &, KEY); // handler dello sheet delle unità di misura + static bool handle_sheet1(TMask_field &, KEY); // handler dello sheet delle descrizioni in lingua + static bool handle_sheet2(TMask_field &, KEY); // handler dello sheer dei codici alternativi + static bool handle_sheet0_um(TMask_field &, KEY); // handler del campo UM dello sheet delle unità di misura public: - - TAnamag_application( ) { }; - virtual ~TAnamag_application() { } + TAnamag_application() {} + virtual ~TAnamag_application() {} }; -bool TAnamag_application::user_create() -{ - _msk = new TMask( "VE2400" ); - _sheet1 = &(TSheet_field &)_msk->field( F_SHEET1 ); - _sheet2 = &(TSheet_field &)_msk->field( F_SHEET2 ); + + +bool TAnamag_application::user_create() { + _msk= new TMask("VE2400"); + _msk->set_handler(F_SHEET0, handle_sheet0); + _msk->set_handler(F_SHEET1, handle_sheet1); + _msk->set_handler(F_SHEET2, handle_sheet2); - _rel = new TRelation( LF_ANAMAG ); - _linee_rec1 = new TRecord_array( LF_DESLIN, "NRIGA", 1 ); - _rel->add( LF_DESLIN, "CODART=CODART" ); - - _linee_rec2 = new TRecord_array( LF_CODCORR, "NRIGA", 1 ); - _rel->add( LF_CODCORR, "CODART=CODART" ); + TSheet_field &f= (TSheet_field &)_msk->field(F_SHEET0); + TMask &fm= f.sheet_mask(); + fm.set_handler(FS_CODUM, handle_sheet0_um); + _rel= new TRelation(LF_ANAGR); + _umart= new TLocalisamfile(LF_UMART); + _deslin= new TLocalisamfile(LF_DESLIN); + _codcorr= new TLocalisamfile(LF_CODCORR); + _linee_rec0= new TRecord_array(LF_UMART, "NRIGA"); + _linee_rec1= new TRecord_array(LF_DESLIN, "NRIGA"); + _linee_rec2= new TRecord_array(LF_CODCORR, "NRIGA"); return TRUE; } -bool TAnamag_application::user_destroy() -{ - delete _msk; - delete _rel; +bool TAnamag_application::user_destroy() { + delete _linee_rec2; + delete _linee_rec1; + delete _linee_rec0; + delete _codcorr; + delete _deslin; + delete _umart; + delete _rel; + delete _msk; return TRUE; } +int TAnamag_application::read(TMask& m) { + int err= TRelation_application::read(m); + if (err == NOERR) { + TRectype rum(_umart->curr()); // prende il record corrente dal file delle unità di misura + rum.zero(); + rum.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera) + _linee_rec0->read(rum); // legge il record array + TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0); // prende il sheet delle unità di misura + f0.destroy(); // cancella lo sheet + int last= _linee_rec0->last_row(); + if (last>0) { + for (int i= 1; i <= last; i++) { + TRectype &rec= _linee_rec0->row(i, TRUE); // prende il record della riga corrente dal record array + TToken_string &row= f0.row(i-1); + row= rec.get("UM"); // imposta la riga dello sheet con i campi del record della riga corrente + if (i != 1) row.add(rec.get("FC")); + else row.add("1"); // forza a 1 il secondo campo della prima riga (il fattore di conversione della prima U.M. deve essere 1) + } + } else { + TToken_string &row= f0.row(-1); // aggiunge una riga allo sheet + row.add(""); + row.add("1"); // setta il secondo campo della riga aggiunta a 1 + } + f0.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) + f0.force_update(0); // aggiorna lo stato della riga 0 -int TAnamag_application::read(TMask& m) -{ - int err = TRelation_application::read( m ); - if ( err == NOERR ) - { - // message_box( "Entrato nel ciclo di caricamento delle righe!" ); - TLocalisamfile& rdoc = _rel->lfile(LF_DESLIN); - TRectype r(rdoc.curr()); + TRectype r(_deslin->curr()); // prende il record corrente dal file delle descrizioni in lingua r.zero(); - r.put( "CODART", m.get( F_CODART ) ); - _linee_rec1->read( r ); - - TSheet_field& f = (TSheet_field&) m.field( F_SHEET1 ); - f.destroy(); - int last = _linee_rec1->last_row(); - for( int i = 1; i <= last; i ++ ) - { TRectype &rec = _linee_rec1->row( i, TRUE ); - TToken_string& row = f.row( i -1 ); - row = rec.get("CODLIN"); - row.add( rec.get("DESCR") ); - } + r.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera) + _linee_rec1->read(r); // legge il record array + TSheet_field &f1= (TSheet_field &)m.field(F_SHEET1); // prende il sheet delle descrizioni in lingua + f1.destroy(); // cancella lo sheet + last= _linee_rec1->last_row(); + for (int i= 1; i <= last; i++) { + TRectype &rec= _linee_rec1->row(i, TRUE); // prende il record della riga corrente dal record array + TToken_string &row= f1.row(i-1); + row= rec.get("CODLIN"); // imposta la riga dello sheet con i campi del record della riga corrente + row.add(rec.get("DESCR")); + } - TLocalisamfile& rdoccor = _rel->lfile(LF_CODCORR); - TRectype rcor(rdoccor.curr()); + TRectype rcor(_codcorr->curr()); // prende il record corrente dal file dei codici corrispondenti rcor.zero(); - rcor.put( "CODART", m.get( F_CODART ) ); - _linee_rec2->read( rcor ); - - TSheet_field& fcorr = (TSheet_field&) m.field( F_SHEET2 ); - fcorr.destroy(); - last = _linee_rec2->last_row(); - for( i = 1; i <= last; i ++ ) - { TRectype &rec = _linee_rec2->row( i, TRUE ); - TToken_string& row = f.row( i -1 ); - row = rec.get("CODARTALT"); - row.add( rec.get("TIPO") ); - - } + rcor.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera) + _linee_rec2->read(rcor); // legge il record array + TSheet_field &f2= (TSheet_field &)m.field(F_SHEET2); // prende lo sheet dei codici corrispondenti + f2.destroy(); // cancella lo sheet + last= _linee_rec2->last_row(); + for (i= 1; i <= last; i++) { + TRectype &rec= _linee_rec2->row(i, TRUE); // prende il record della riga corrente dal record array + TToken_string &row= f2.row(i-1); + row= rec.get("CODARTALT"); // imposta la riga dello sheet con i campi del record della riga corrente + row.add(rec.get("TIPO")); + } } return err; } -int TAnamag_application::write(const TMask& m) -{ - int err = TRelation_application::write(m); - if (err == NOERR) - { - TSheet_field& f = (TSheet_field&) m.field( F_SHEET1 ); +int TAnamag_application::write(const TMask& m) { + int err= TRelation_application::write(m); + if (err == NOERR) { + TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0); + _linee_rec0->destroy_rows(); + + if (m.insert_mode()) _linee_rec0->renum_key("CODART", m.get(F_CODART)); + + for (int i= 0; i < f0.items(); i++) { + TToken_string &row= f0.row(i); + const TString16 um(row.get(0)); + const real fc(row.get()); + + if (um.not_empty() && (!fc.is_zero())) { + TRectype &rec= _linee_rec0->row(i+1, TRUE); + rec.put("UM", um); + rec.put("FC", fc); + } + } + err= _linee_rec0->write(); + } + + if (err == NOERR) { + TSheet_field &f1= (TSheet_field &)m.field(F_SHEET1); _linee_rec1->destroy_rows(); - if (m.insert_mode()) - _linee_rec1->renum_key("CODART", m.get(F_CODART)); - - - for (int i = 0; i < f.items(); i++) - { - TToken_string & row = f.row(i); + if (m.insert_mode()) _linee_rec1->renum_key("CODART", m.get(F_CODART)); + + for (int i= 0; i < f1.items(); i++) { + TToken_string &row= f1.row(i); const TString16 codlin(row.get(0)); const TString80 descr(row.get()); - if (codlin.not_empty() || descr.not_empty() ) - { - TRectype & rec = _linee_rec1->row( i+1 , TRUE); - + if (codlin.not_empty() && descr.not_empty()) { + TRectype &rec= _linee_rec1->row(i+1, TRUE); rec.put("CODLIN", codlin); rec.put("DESCR", descr); } } - err = _linee_rec1->write(); + err= _linee_rec1->write(); } - if (err == NOERR) - { - TSheet_field& f = (TSheet_field&) m.field( F_SHEET2 ); + if (err == NOERR) { + TSheet_field &f2= (TSheet_field &)m.field(F_SHEET2); _linee_rec2->destroy_rows(); - if (m.insert_mode()) - _linee_rec2->renum_key("CODART", m.get(F_CODART)); + if (m.insert_mode()) _linee_rec2->renum_key("CODART", m.get(F_CODART)); - - for (int i = 0; i < f.items(); i++) - { - TToken_string & row = f.row(i); + for (int i= 0; i < f2.items(); i++) { + TToken_string &row= f2.row(i); const TString80 codartalt(row.get(0)); const TString16 tipo(row.get()); - if (codartalt.not_empty() || tipo.not_empty() ) - { - TRectype & reccor = _linee_rec2->row( i+1 , TRUE); - + if (codartalt.not_empty()) { + TRectype &reccor= _linee_rec2->row(i+1, TRUE); reccor.put("CODARTALT", codartalt); reccor.put("TIPO", tipo); } } - err = _linee_rec2->write(); + err= _linee_rec2->write(); } - - - - return err; } -int TAnamag_application::rewrite(const TMask& m) -{ - int err = TRelation_application::rewrite(m); - if (err == NOERR) - { - TSheet_field& f = (TSheet_field&) m.field( F_SHEET1 ); +int TAnamag_application::rewrite(const TMask& m) { + int err= TRelation_application::rewrite(m); + if (err == NOERR) { + TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0); + _linee_rec0->destroy_rows(); + + if (m.insert_mode()) _linee_rec0->renum_key("CODART", m.get(F_CODART)); + + for (int i= 0; i < f0.items(); i++) { + TToken_string & row = f0.row(i); + const TString16 um(row.get(0)); + const real fc(row.get()); + + if (um.not_empty() && (!fc.is_zero())) { + TRectype &rec= _linee_rec0->row(i+1, TRUE); + rec.put("UM", um); + rec.put("FC", fc); + } + } + err= _linee_rec0->rewrite(); + } + + if (err == NOERR) { + TSheet_field &f1= (TSheet_field &)m.field(F_SHEET1); _linee_rec1->destroy_rows(); - if (m.insert_mode()) - _linee_rec1->renum_key("CODART", m.get(F_CODART)); - - - for (int i = 0; i < f.items(); i++) - { - TToken_string & row = f.row(i); + if (m.insert_mode()) _linee_rec1->renum_key("CODART", m.get(F_CODART)); + + for (int i= 0; i < f1.items(); i++) { + TToken_string & row = f1.row(i); const TString16 codlin(row.get(0)); const TString80 descr(row.get()); - if (codlin.not_empty() || descr.not_empty() ) - { - TRectype & rec = _linee_rec1->row( i+1 , TRUE); - + if (codlin.not_empty() && descr.not_empty()) { + TRectype &rec= _linee_rec1->row(i+1, TRUE); rec.put("CODLIN", codlin); rec.put("DESCR", descr); } } - err = _linee_rec1->rewrite(); + err= _linee_rec1->rewrite(); } - if (err == NOERR) - { - TSheet_field& f = (TSheet_field&) m.field( F_SHEET2 ); + if (err == NOERR) { + TSheet_field &f2= (TSheet_field &)m.field(F_SHEET2); _linee_rec2->destroy_rows(); - if (m.insert_mode()) - _linee_rec2->renum_key("CODART", m.get(F_CODART)); + if (m.insert_mode()) _linee_rec2->renum_key("CODART", m.get(F_CODART)); - - for (int i = 0; i < f.items(); i++) - { - TToken_string & row = f.row(i); + for (int i= 0; i < f2.items(); i++) { + TToken_string &row= f2.row(i); const TString80 codartalt(row.get(0)); const TString80 tipo(row.get()); - if (codartalt.not_empty() || tipo.not_empty() ) - { - TRectype & reccor = _linee_rec2->row( i+1 , TRUE); - + if (codartalt.not_empty()) { + TRectype &reccor= _linee_rec2->row(i+1, TRUE); reccor.put("CODARTALT", codartalt); reccor.put("TIPO", tipo); } } - err = _linee_rec2->write(); + err= _linee_rec2->write(); } - return err; } +void TAnamag_application::init_insert_mode(TMask &m) { + TSheet_field &f= (TSheet_field &)m.field(F_SHEET0); + if (f.items()==0) { + TToken_string &row= f.row(-1); // aggiunge una riga allo sheet + row.add(""); + row.add("1"); // setta il secondo campo della riga aggiunta a 1 + f.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) + f.force_update(0); // aggiorna lo stato della riga 0 + } +} +bool TAnamag_application::handle_sheet0(TMask_field &fld, KEY k) { + if (k==K_ENTER) { + TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente + TAssoc_array v; // istanzia l'hash table per il controllo di univocità + for (int i= 0; iselected() != 0) && me.not_empty()) { + + // ALGORITMO DI PRECALCOLO DEL RAPPORTO DELLE UNITA' DI MISURA NELLO SHEET + // + // SHEET: + // ----- + // riga u.m. f.c. + // 1) KM 1 -> kilometri (you), riferiti al metro (your) con f.c. 1000 (your_fc) + // ... ... ... + // ...) MM X -> millimetri (me), riferiti al metro (my) con f.c. 0,001 (my_fc) + // + // se (your==my) allora X=(your_fc/my_fc) ...chiaro, no!? :-) + + TTable t("%UM"); + real x(0.0); // fattore di conversione dell'unità di misura corrente + const TString16 you(f->row(0).get(0)); // prende l'unità di misura di rapporto (dalla prima linea dello sheet) + t.zero(); + t.put("CODTAB", me); + if (t.read() == NOERR) { + TString16 my(t.get("S7")); // prende l'unità di misura di riferimento dell'unità di misura corrente + real my_fc(t.get_real("R0")); // prende il suo fattore di conversione + t.zero(); + t.put("CODTAB", you); + if (t.read() == NOERR) { + TString16 your(t.get("S7")); // prende l'unità di misura di riferimento dell'unità di misura di rapporto + real your_fc(t.get_real("R0")); // prende il suo fattore di conversione + if (your==my) { + x= your_fc/my_fc; + message_box("me:%s, my:%s, my_fc:%s, you:%s your:%s, your_fc:%s, x:%s", (const char *)me, (const char *)my, my_fc.stringa(), (const char *)you, (const char *)your, your_fc.stringa(), x.stringa()); + } // NON FUNZIONA UN CAZZO! + } + } + TToken_string &row= f->row(f->selected()); // prende la riga corrente dello sheet + row.add(x.stringa(), 1); // inserisce il valore precalcolato (0 se non è possibile calcolarlo); + f->force_update(f->selected()); // forza l'aggiornamento della riga corrente dello sheet + } + } + return TRUE; +} + +int ve2400(int argc, char* argv[]) { TAnamag_application a; - a.run(argc, argv, "Anagrafica di magazzino " ); + a.run(argc, argv, "Anagrafica di magazzino "); return 0; } diff --git a/ve/ve2400.h b/ve/ve2400.h index 1196d42a4..55c4b0b5e 100755 --- a/ve/ve2400.h +++ b/ve/ve2400.h @@ -1,61 +1,67 @@ -#define F_CODART 101 -#define F_TIPO 102 -#define F_DESCR 103 +#define F_CODART 101 +#define F_TIPO 102 +#define F_DESCR 103 #define F_GRMERC1 104 -#define F_GRMERC1A 105 -#define F_GRMERC2 106 -#define F_GRMERC2A 107 -#define F_GRMERC3 108 -#define F_GRMERC3A 109 +#define F_GRMERC1B 105 +#define F_GRMERC1D 106 +#define F_GRMERC2 107 +#define F_GRMERC2B 108 +#define F_GRMERC2D 109 +#define F_GRMERC3 110 +#define F_GRMERC3B 111 +#define F_GRMERC3D 112 -#define F_UMA 111 -#define F_FCA 112 -#define F_UMV 113 -#define F_UM2 114 -#define F_FC2 115 -#define F_UM3 116 -#define F_CATCONA 117 -#define F_CATCONA1 118 -#define F_GRUPPOA 119 -#define F_CONTOA 120 -#define F_SOTTOCA 121 -#define F_DESCRA 122 -#define F_CATCONV 123 -#define F_CATCONV1 124 -#define F_GRUPPOV 125 -#define F_CONTOV 126 -#define F_SOTTOCV 127 -#define F_DESCRV 128 -#define F_UMP 129 -#define F_PESO 130 -#define F_CLASSDOG 131 -#define F_CLASSDOG1 132 -#define F_UBICAZIONE 133 -#define F_UBICAZIONE1 134 -#define F_COSTSTD 135 -#define F_CODIVA 136 -#define F_CODIVA1 137 -#define F_CODFORN 138 -#define F_CODFORN1 139 -#define F_ARTFIS 140 -#define F_RAGGFIS 142 -#define F_RAGGFIS1 143 -#define F_CLASSEFIS 144 -#define F_CLASSEFIS1 145 -#define F_ARTPROD 146 -#define F_TIPOCF 147 -#define F_LINEAPROD 148 -#define F_LINEAPROD1 149 +#define F_UMA 121 +#define F_FCA 122 +#define F_UMV 123 +#define F_UM2 124 +#define F_FC2 125 +#define F_UM3 126 +#define F_CATCONA 127 +#define F_CATCONA1 128 +#define F_GRUPPOA 129 +#define F_CONTOA 130 +#define F_SOTTOCA 131 +#define F_DESCRA 132 +#define F_CATCONV 133 +#define F_CATCONV1 134 +#define F_GRUPPOV 135 +#define F_CONTOV 136 +#define F_SOTTOCV 137 +#define F_DESCRV 138 +#define F_UMP 139 +#define F_PESO 140 +#define F_CLASSDOG 141 +#define F_CLASSDOG1 142 +#define F_UBICAZIONE 143 +#define F_UBICAZIONE1 144 +#define F_COSTSTD 145 +#define F_CODIVA 146 +#define F_CODIVA1 147 +#define F_CODFORN 148 +#define F_CODFORN1 149 +#define F_ARTFIS 150 +#define F_RAGGFIS 152 +#define F_RAGGFIS1 153 +#define F_CLASSEFIS 154 +#define F_CLASSEFIS1 155 +#define F_ARTPROD 156 +#define F_TIPOCF 157 +#define F_LINEAPROD 158 +#define F_LINEAPROD1 159 +#define F_SHEET0 200 +#define F_SHEET1 201 +#define F_SHEET2 202 +#define FS_CODUM 101 +#define FS_FCUM 102 #define FS_CODLIN 101 #define FS_DESCR 102 -//#define FS_CODLIN1 103 #define FS_CODARTALT 101 #define FS_TIPO 102 -//#define FS_CODARTALT1 103 diff --git a/ve/ve2400.uml b/ve/ve2400.uml index 2b6cbeb54..c43b5e048 100755 --- a/ve/ve2400.uml +++ b/ve/ve2400.uml @@ -1,7 +1,6 @@ + +#include #include "VE2400.H" -#define ANAMAG 47 -#define PCON 19 -#define CLIFOR 20 TOOLBAR "" 0 20 60 2 #include @@ -9,39 +8,35 @@ ENDPAGE PAGE "Gestione anagrafica di magazzino " 0 0 70 20 -STRING F_CODART 30 +STRING F_CODART 20 BEGIN - PROMPT 2 1 "Codice articolo " - FIELD ANAMAG->CODART + PROMPT 2 1 "Codice art. " + FIELD LF_ANAGR->CODART KEY 1 FLAG "U" - USE ANAMAG + USE LF_ANAGR INPUT CODART F_CODART - DISPLAY "Codice@30" CODART + DISPLAY "Codice@20" CODART DISPLAY "Descrizione@50" DESCR OUTPUT F_CODART CODART OUTPUT F_DESCR DESCR - CHECKTYPE REQUIRED - - END STRING F_TIPO 1 BEGIN - PROMPT 55 1 "Tipo " - FIELD ANAMAG->TIPO - + PROMPT 42 1 "Tipo " + FIELD LF_ANAGR->TIPO END STRING F_DESCR 50 BEGIN - PROMPT 2 3 "Descrizione " - FIELD ANAMAG->DESCR + PROMPT 2 3 "Descrizione " + FIELD LF_ANAGR->DESCR KEY 2 - USE ANAMAG KEY 2 + USE LF_ANAGR KEY 2 INPUT DESCR F_DESCR - DISPLAY "Codice@30" CODART + DISPLAY "Codice@20" CODART DISPLAY "Descrizione@50" DESCR OUTPUT F_CODART CODART OUTPUT F_DESCR DESCR @@ -55,121 +50,141 @@ BEGIN FLAG "R" END - - STRING F_GRMERC1 3 BEGIN PROMPT 1 5 "Gruppo merc. 1 " - FIELD ANAMAG->GRMERC1 - USE GMC - INPUT CODTAB F_GRMERC1 - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_GRMERC1 CODTAB - OUTPUT F_GRMERC1A S0 + FIELD LF_ANAGR->GRMERC1[1,3] + GROUP 1 + FLAG "U" END -STRING F_GRMERC1A 50 +STRING F_GRMERC1B 2 BEGIN - PROMPT 23 5 "" - USE GMC KEY 2 - INPUT S0 F_GRMERC1A + PROMPT 21 5 "" + FIELD LF_ANAGR->GRMERC1[4,5] + GROUP 1 + FLAG "U" + MESSAGE EMPTY CLEAR,2@ + MESSAGE ENABLE,2@ + USE %GMC + INPUT CODTAB[1,3] F_GRMERC1 + INPUT CODTAB[4,5] F_GRMERC1B DISPLAY "Codice" CODTAB DISPLAY "Descrizione@50" S0 - OUTPUT F_GRMERC1 CODTAB - OUTPUT F_GRMERC1A S0 + OUTPUT F_GRMERC1 CODTAB[1,3] + OUTPUT F_GRMERC1B CODTAB[4,5] + OUTPUT F_GRMERC1D S0 + CHECKTYPE NORMAL +END + +STRING F_GRMERC1D 50 +BEGIN + PROMPT 26 5 "" + GROUP 1 + USE %GMC KEY 2 + INPUT S0 F_GRMERC1D + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_GRMERC1 CODTAB[1,3] + OUTPUT F_GRMERC1B CODTAB[4,5] + OUTPUT F_GRMERC1D S0 END STRING F_GRMERC2 3 BEGIN PROMPT 1 6 "Gruppo merc. 2 " - FIELD ANAMAG->GRMERC2 - USE GMC - INPUT CODTAB F_GRMERC2 - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_GRMERC2 CODTAB - OUTPUT F_GRMERC2A S0 + FIELD LF_ANAGR->GRMERC2[1,3] + GROUP 2 + FLAG "U" END -STRING F_GRMERC2A 50 +STRING F_GRMERC2B 2 BEGIN - PROMPT 23 6 "" - USE GMC KEY 2 - INPUT S0 F_GRMERC2A + PROMPT 21 6 "" + FIELD LF_ANAGR->GRMERC2[4,5] + GROUP 2 + FLAG "U" + MESSAGE EMPTY CLEAR,3@ + MESSAGE ENABLE,3@ + NUM_EXPR (#F_GRMERC2=="")||(#F_GRMERC2!=#F_GRMERC1) + USE %GMC + INPUT CODTAB[1,3] F_GRMERC2 + INPUT CODTAB[4,5] F_GRMERC2B DISPLAY "Codice" CODTAB DISPLAY "Descrizione@50" S0 - OUTPUT F_GRMERC2 CODTAB - OUTPUT F_GRMERC2A S0 + OUTPUT F_GRMERC2 CODTAB[1,3] + OUTPUT F_GRMERC2B CODTAB[4,5] + OUTPUT F_GRMERC2D S0 + CHECKTYPE NORMAL +END + +STRING F_GRMERC2D 50 +BEGIN + PROMPT 26 6 "" + GROUP 2 + USE %GMC KEY 2 + INPUT S0 F_GRMERC2D + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_GRMERC2 CODTAB[1,3] + OUTPUT F_GRMERC2B CODTAB[4,5] + OUTPUT F_GRMERC2D S0 END STRING F_GRMERC3 3 BEGIN PROMPT 1 7 "Gruppo merc. 3 " - FIELD ANAMAG->GRMERC3 - USE GMC - INPUT CODTAB F_GRMERC3 + FIELD LF_ANAGR->GRMERC3[1,3] + GROUP 3 + FLAG "U" +END + +STRING F_GRMERC3B 2 +BEGIN + PROMPT 21 7 "" + FIELD LF_ANAGR->GRMERC3[4,5] + GROUP 3 + FLAG "U" + NUM_EXPR (#F_GRMERC3=="")||((#F_GRMERC3!=#F_GRMERC1)&&(#F_GRMERC3!=#F_GRMERC2)) + USE %GMC + INPUT CODTAB[1,3] F_GRMERC3 + INPUT CODTAB[4,5] F_GRMERC3B DISPLAY "Codice" CODTAB DISPLAY "Descrizione@50" S0 - OUTPUT F_GRMERC3 CODTAB - OUTPUT F_GRMERC3A S0 + OUTPUT F_GRMERC3 CODTAB[1,3] + OUTPUT F_GRMERC3B CODTAB[4,5] + OUTPUT F_GRMERC3D S0 + CHECKTYPE NORMAL END -STRING F_GRMERC3A 50 +STRING F_GRMERC3D 50 BEGIN - PROMPT 23 7 "" - USE GMC KEY 2 - INPUT S0 F_GRMERC3A + PROMPT 26 7 "" + GROUP 3 + USE %GMC KEY 2 + INPUT S0 F_GRMERC3D DISPLAY "Codice" CODTAB DISPLAY "Descrizione@50" S0 - OUTPUT F_GRMERC3 CODTAB - OUTPUT F_GRMERC3A S0 + OUTPUT F_GRMERC3 CODTAB[1,3] + OUTPUT F_GRMERC3B CODTAB[4,5] + OUTPUT F_GRMERC3D S0 END -STRING F_UMA 3 +SPREADSHEET F_SHEET0 77 4 BEGIN - PROMPT 1 8 "U.M. di acq. " - FIELD ANAMAG->UMA -END - -NUMBER F_FCA 15 5 -BEGIN - PROMPT 21 8 "Fatt. di conv. " - FIELD ANAMAG->FCA -END - -STRING F_UMV 3 -BEGIN - PROMPT 55 8 "U.M. di vendita " - FIELD ANAMAG->UMV -END - -STRING F_UM2 3 -BEGIN - PROMPT 1 9 "Seconda U.M. " - FIELD ANAMAG->UM2 -END - -NUMBER F_FC2 15 5 -BEGIN - PROMPT 21 9 "Fatt. di conv. " - FIELD ANAMAG->FC2 -END - -STRING F_UM3 3 -BEGIN - PROMPT 55 9 "Terza U.M. " - FIELD ANAMAG->UM3 + PROMPT 1 8 "" + ITEM " U.M. @2" + ITEM "Fattore conversione@30" END STRING F_CATCONA 3 BEGIN - PROMPT 1 10 "Categoria conto acquisti " - FIELD ANAMAG->CATCONA -// MESSAGE CLEAR , F_GRUPPOA -// MESSAGE CLEAR , F_CONTOA -// MESSAGE CLEAR , F_SOTTOCA -// MESSAGE CLEAR , F_DESCRA + PROMPT 1 12 "Categoria conto acquisti " + FIELD LF_ANAGR->CATCONA + GROUP 11 + MESSAGE CLEAR,12@ + MESSAGE EMPTY ENABLE,12@ + FLAG "UZ" USE CAA INPUT CODTAB F_CATCONA DISPLAY "Codice" CODTAB @@ -177,69 +192,86 @@ BEGIN DISPLAY "Gruppo" S1 DISPLAY "Conto" S2 DISPLAY "Sottoconto" S3 - OUTPUT F_CATCONA CODTAB OUTPUT F_CATCONA1 S0 + CHEKTYPE NORMAL END STRING F_CATCONA1 40 BEGIN - PROMPT 33 10 "" + PROMPT 36 12 "" FLAG "D" + GROUP 11 + USE CAA KEY 2 + INPUT S0 F_CATCONA1 + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + DISPLAY "Gruppo" S1 + DISPLAY "Conto" S2 + DISPLAY "Sottoconto" S3 + COPY OUTPUT F_CATCONA END - - STRING F_GRUPPOA 2 BEGIN - PROMPT 1 11 "Conto d'acquisto " - FIELD ANAMAG->GRUPPOA -// MESSAGE CLEAR , F_CATCONA -// MESSAGE CLEAR , F_CATCONA1 - - USE PCON - INPUT GRUPPO F_GRUPPOA - INPUT CONTO F_CONTOA - INPUT SOTTOCONTO F_SOTTOCA - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - - OUTPUT F_GRUPPOA GRUPPO - OUTPUT F_CONTOA CONTO - OUTPUT F_SOTTOCA SOTTOCONTO - OUTPUT F_DESCRA DESCR + PROMPT 1 13 "Conto d'acquisto " + FIELD LF_ANAGR->GRUPPOA + GROUP 12 + MESSAGE CLEAR,11@ + MESSAGE EMPTY ENABLE,11@ END STRING F_CONTOA 2 BEGIN - PROMPT 24 11 "" - FIELD ANAMAG->CONTOA + PROMPT 22 13 "" + FIELD LF_ANAGR->CONTOA + GROUP 12 END STRING F_SOTTOCA 6 BEGIN - PROMPT 28 11 "" - FIELD ANAMAG->SOTTOCA + PROMPT 26 13 "" + FIELD LF_ANAGR->SOTTOCA + GROUP 12 + USE LF_PCON + INPUT GRUPPO F_GRUPPOA + INPUT CONTO F_CONTOA + INPUT SOTTOCONTO F_SOTTOCA + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + OUTPUT F_GRUPPOA GRUPPO + OUTPUT F_CONTOA CONTO + OUTPUT F_SOTTOCA SOTTOCONTO + OUTPUT F_DESCRA DESCR + CHECKTYPE NORMAL END STRING F_DESCRA 40 BEGIN - PROMPT 36 11 "" + PROMPT 36 13 "" FLAG "D" + GROUP 12 + USE LF_PCON KEY 2 + INPUT DESCR F_DESCRA + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT F_SOTTOCA END STRING F_CATCONV 3 BEGIN - PROMPT 1 12 "Categoria conto vendite " - FIELD ANAMAG->CATCONV -// MESSAGE CLEAR , F_GRUPPOV -// MESSAGE CLEAR , F_CONTOV -// MESSAGE CLEAR , F_SOTTOCV -// MESSAGE CLEAR , F_DESCRV + PROMPT 1 14 "Categoria conto vendite " + FIELD LF_ANAGR->CATCONV + GROUP 21 + MESSAGE CLEAR,22@ + MESSAGE EMPTY ENABLE,22@ + FLAG "UZ" USE CRA INPUT CODTAB F_CATCONV DISPLAY "Codice" CODTAB @@ -247,163 +279,144 @@ BEGIN DISPLAY "Gruppo" S1 DISPLAY "Conto" S2 DISPLAY "Sottoconto" S3 - OUTPUT F_CATCONV CODTAB OUTPUT F_CATCONV1 S0 + CHECKTYPE NORMAL END STRING F_CATCONV1 40 BEGIN - PROMPT 33 12 "" + PROMPT 36 14 "" FLAG "D" + GROUP 21 + USE CRA KEY 2 + INPUT S0 F_CATCONV1 + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + DISPLAY "Gruppo" S1 + DISPLAY "Conto" S2 + DISPLAY "Sottoconto" S3 + COPY OUTPUT F_CATCONV END STRING F_GRUPPOV 2 BEGIN - PROMPT 1 13 "Conto di vendita " - FIELD ANAMAG->GRUPPOV -// MESSAGE CLEAR , F_CATCONV -// MESSAGE CLEAR , F_CATCONV1 - - USE PCON - INPUT GRUPPO F_GRUPPOV - INPUT CONTO F_CONTOV - INPUT SOTTOCONTO F_SOTTOCV - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - - OUTPUT F_GRUPPOV GRUPPO - OUTPUT F_CONTOV CONTO - OUTPUT F_SOTTOCV SOTTOCONTO - OUTPUT F_DESCRV DESCR + PROMPT 1 15 "Conto di vendita " + FIELD LF_ANAGR->GRUPPOV + GROUP 22 + MESSAGE CLEAR,21@ + MESSAGE EMPTY ENABLE,21@ END STRING F_CONTOV 2 BEGIN - PROMPT 24 13 "" - FIELD ANAMAG->CONTOV + PROMPT 22 15 "" + FIELD LF_ANAGR->CONTOV + GROUP 22 END STRING F_SOTTOCV 6 BEGIN - PROMPT 28 13 "" - FIELD ANAMAG->SOTTOCV + PROMPT 26 15 "" + FIELD LF_ANAGR->SOTTOCV + GROUP 22 + USE LF_PCON + INPUT GRUPPO F_GRUPPOV + INPUT CONTO F_CONTOV + INPUT SOTTOCONTO F_SOTTOCV + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + OUTPUT F_GRUPPOV GRUPPO + OUTPUT F_CONTOV CONTO + OUTPUT F_SOTTOCV SOTTOCONTO + OUTPUT F_DESCRV DESCR + CHECKTYPE NORMAL END STRING F_DESCRV 40 BEGIN - PROMPT 36 13 "" + PROMPT 36 15 "" FLAG "D" + GROUP 22 + USE LF_PCON KEY 2 + INPUT DESCR F_DESCRV + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT F_SOTTOCV END - - STRING F_UMP 3 BEGIN - PROMPT 1 14 "U.M. peso " - FIELD ANAMAG->UMP + PROMPT 1 16 "U.M. peso " + FIELD LF_ANAGR->UMP END NUMBER F_PESO 15 5 BEGIN - PROMPT 30 14 "Peso " - FIELD ANAMAG->PESO + PROMPT 30 16 "Peso " + FIELD LF_ANAGR->PESO END STRING F_CLASSDOG 10 BEGIN - PROMPT 1 15 "Classe doganale " - FIELD ANAMAG->CLASSDOG + PROMPT 1 17 "Classe doganale " + FIELD LF_ANAGR->CLASSDOG + FLAG "UZ" + USE %CLD + INPUT CODTAB F_CLASSDOG + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CLASSDOG CODTAB + OUTPUT F_CLASSDOG1 S0 + CHECKTYPE NORMAL END STRING F_CLASSDOG1 40 BEGIN - PROMPT 34 15 "" + PROMPT 36 17 "" FLAG "D" + USE %CLD KEY 2 + INPUT S0 F_CLASSDOG1 + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + OUTPUT F_CLASSDOG CODTAB + OUTPUT F_CLASSDOG1 S0 END - -STRING F_UBICAZIONE 10 -BEGIN - PROMPT 1 16 "Ubicazione " - FIELD ANAMAG->CLASSDOG - USE UBI - INPUT CODTAB F_UBICAZIONE - DISPLAY "Codice " CODTAB - DISPLAY "Descrizione@40" S0 - DISPLAY "Piano " S6 - DISPLAY "Corridoio " S7 - DISPLAY "Fila " S8 - DISPLAY "Scaffale " S9 - DISPLAY "Piano scaffale " S5 - OUTPUT F_UBICAZIONE CODTAB - OUTPUT F_UBICAZIONE1 S0 -END - - - -STRING F_UBICAZIONE1 40 -BEGIN - PROMPT 34 16 "" - FLAG "D" -END - -/* -STRING F_LINEAPROD 5 -BEGIN - PROMPT 1 17 "Linea prodotto " - FIELD ANAMAG->LINEAPROD - USE LIC - INPUT CODTAB F_LINEAPROD - DISPLAY "Codice " CODTAB - DISPLAY "Descrizione@40" S0 - OUTPUT F_LINEAPROD CODTAB - OUTPUT F_LINEAPROD1 S0 -END - -STRING F_LINEAPROD1 40 -BEGIN - PROMPT 34 17 "" - FLAG "D" -END - -*/ - ENDPAGE PAGE "Gestione anagrafica di magazzino " 0 0 70 20 - STRING F_CODIVA 4 BEGIN - PROMPT 2 1 "Codice IVA " - FIELD ANAMAG->CODIVA + PROMPT 2 1 "Codice IVA " + FIELD LF_ANAGR->CODIVA USE %IVA INPUT CODTAB F_CODIVA DISPLAY "Codice " CODTAB DISPLAY "Descrizione@40" S0 OUTPUT F_CODIVA CODTAB OUTPUT F_CODIVA1 S0 - + CHECKTYPE NORMAL END STRING F_CODIVA1 40 BEGIN - PROMPT 23 1 "" - FLAG "D" + PROMPT 29 1 "" + USE %IVA KEY 2 + INPUT S0 F_CODIVA1 + DISPLAY "Descrizione@40" S0 + DISPLAY "Codice " CODTAB + OUTPUT F_CODIVA CODTAB + OUTPUT F_CODIVA1 S0 END -NUMBER F_COSTSTD 18 2 -BEGIN - PROMPT 37 2 "Costo standard " - FIELD ANAMAG->COSTSTD -END - - LISTBOX F_TIPOCF 1 BEGIN PROMPT 0 0 "" @@ -414,21 +427,26 @@ END NUMBER F_CODFORN 6 BEGIN PROMPT 2 2 "Codice fornitore " - FIELD ANAMAG->CODFORN - USE CLIFOR + FIELD LF_ANAGR->CODFORN + USE LF_CLIFO INPUT TIPOCF F_TIPOCF SELECT INPUT CODCF F_CODFORN DISPLAY "Codice " CODCF DISPLAY "Ragione sociale@50" RAGSOC OUTPUT F_CODFORN CODCF OUTPUT F_CODFORN1 RAGSOC +END +NUMBER F_COSTSTD 18 0 +BEGIN + PROMPT 37 2 "Costo standard " + FIELD LF_ANAGR->COSTSTD END STRING F_CODFORN1 50 BEGIN PROMPT 2 3 "Ragione sociale " - USE CLIFOR KEY 2 + USE LF_CLIFO KEY 2 INPUT TIPOCF F_TIPOCF SELECT INPUT RAGSOC F_CODFORN1 DISPLAY "Codice " CODCF @@ -437,70 +455,75 @@ BEGIN OUTPUT F_CODFORN1 RAGSOC END - - BOOLEAN F_ARTFIS BEGIN PROMPT 2 4 "Articolo fiscale " - FIELD ANAMAG->ARTFIS + FIELD LF_ANAGR->ARTFIS END - - -STRING F_RAGGFIS 1 +STRING F_RAGGFIS 5 BEGIN - PROMPT 2 5 "Raggruppamento fiscale " - FIELD ANAMAG->RAGGFIS + PROMPT 2 5 "Raggrupp. fiscale " + FIELD LF_ANAGR->RAGGFIS + USE %RFA + INPUT CODTAB F_RAGGFIS + DISPLAY "Codice " CODTAB + DISPLAY "Descrizione@40" S0 + OUTPUT F_RAGGFIS CODTAB + OUTPUT F_RAGGFIS1 S0 + OUTPUT F_CLASSEFIS S8 + CHECKTYPE NORMAL END STRING F_RAGGFIS1 40 BEGIN - PROMPT 32 5 "" + PROMPT 31 5 "" FLAG "D" END -STRING F_CLASSEFIS 3 +STRING F_CLASSEFIS 1 BEGIN - PROMPT 2 6 "Classe fiscale " - FIELD ANAMAG->CLASSEFIS + PROMPT 2 6 "Classe fiscale " + FIELD LF_ANAGR->CLASSEFIS + USE %ASF + INPUT CODTAB F_CLASSEFIS + DISPLAY "Codice " CODTAB + DISPLAY "Descrizione@40" S0 + OUTPUT F_CLASSEFIS CODTAB + OUTPUT F_CLASSEFIS1 S0 + CHECKTYPE NORMAL END STRING F_CLASSEFIS1 40 BEGIN - PROMPT 32 6 "" + PROMPT 31 6 "" FLAG "D" END BOOLEAN F_ARTPROD BEGIN PROMPT 2 7 "Articolo di produzione " - FIELD ANAMAG->ARTPROD + FIELD LF_ANAGR->ARTPROD END -SPREADSHEET 300 70 5 - BEGIN +SPREADSHEET F_SHEET1 71 5 +BEGIN PROMPT 2 8 "" ITEM "Cod. lingua" ITEM "Descrizione@50" - END -SPREADSHEET 301 60 5 - BEGIN - PROMPT 2 14 "" - ITEM "Cod. art.@30" +SPREADSHEET F_SHEET2 71 5 +BEGIN + PROMPT 2 13 "" + ITEM "Cod. art.@20" ITEM "Tipo@10" - END - - ENDPAGE - - - ENDMASK + #include "VE2400A.UML" #include "VE2400B.UML" #include "VE2400C.UML" diff --git a/ve/ve2400a.uml b/ve/ve2400a.uml new file mode 100755 index 000000000..72619eab2 --- /dev/null +++ b/ve/ve2400a.uml @@ -0,0 +1,31 @@ + +// SHEET 0 (unità di misura) DI VE2400 + +PAGE "Pagina 1" 8 5 65 14 + +STRING FS_CODUM 2 +BEGIN + PROMPT 3 3 "U.M. " + FIELD LF_UMART->UM + FLAG "U" +END + +NUMBER FS_FCUM 15 5 +BEGIN + PROMPT 3 7 "Fattore conv. " + FIELD LF_UMART->FC +END + +BUTTON 1 9 2 +BEGIN + PROMPT 15 12 "" +END + +BUTTON 2 9 2 +BEGIN + PROMPT 38 12 "" +END + +ENDPAGE + +ENDMASK diff --git a/ve/ve2400b.uml b/ve/ve2400b.uml index b0b36c3ab..e11bc0952 100755 --- a/ve/ve2400b.uml +++ b/ve/ve2400b.uml @@ -1,15 +1,13 @@ -// SHEET DI VE2400 -#include "VE2400.H" -#define DESLIN 51 +// SHEET 1 (descrizioni in lingua) DI VE2400 PAGE "Pagina 1" 8 5 65 14 STRING FS_CODLIN 1 BEGIN PROMPT 3 3 "Codice lingua " - FIELD DESLIN->CODLIN - USE %LIN + FIELD LF_DESLIN->CODLIN + USE %LNG INPUT CODTAB FS_CODLIN DISPLAY "Codice" CODTAB DISPLAY "Descrizione@30" S0 @@ -20,7 +18,8 @@ BEGIN STRING FS_DESCR 50 BEGIN PROMPT 1 7 "Descrizione " - FIELD DESLIN->DESCR + FIELD LF_DESLIN->DESCR + VALIDATE REQIF_FUNC 1 FS_CODLIN END /* @@ -31,6 +30,7 @@ BEGIN END */ + BUTTON 1 9 2 BEGIN PROMPT 15 12 "" @@ -40,8 +40,6 @@ BUTTON 2 9 2 BEGIN PROMPT 38 12 "" END - - ENDPAGE diff --git a/ve/ve2400c.uml b/ve/ve2400c.uml index 16191660f..f39780db4 100755 --- a/ve/ve2400c.uml +++ b/ve/ve2400c.uml @@ -1,22 +1,13 @@ -// SHEET DI VE2400 -#include "VE2400.H" -#define CODCORR 48 -#define ANAMAG 47 +// SHEET 2 (codici alternativi) DI VE2400 PAGE "Pagina 1" 8 5 65 14 -STRING FS_CODARTALT 30 +STRING FS_CODARTALT 20 BEGIN PROMPT 3 3 "Codice art. alt. " - FIELD CODCORR->CODARTALT - USE ANAMAG - INPUT CODART FS_CODARTALT - DISPLAY "Codice" CODART - DISPLAY "Descrizione@50" DESCR - OUTPUT FS_CODARTALT CODART -// OUTPUT FS_CODARTALT1 DESCR - END + FIELD LF_CODCORR->CODARTALT +END LISTBOX FS_TIPO 10 BEGIN @@ -26,8 +17,7 @@ BEGIN ITEM "1|EA13 " ITEM "3|3/9 " ITEM "C|Codabar" - - FIELD CODCORR->TIPO + FIELD LF_CODCORR->TIPO END /* STRING FS_CODARTALT1 50 @@ -35,7 +25,6 @@ BEGIN PROMPT 2 5 "" FLAG "D" END - */ BUTTON 1 9 2 @@ -48,7 +37,6 @@ BEGIN PROMPT 38 12 "" END - ENDPAGE ENDMASK