Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
listini-contratti-offerte comprensibili


git-svn-id: svn://10.65.10.50/branches/R_10_00@21054 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-10-22 11:11:32 +00:00
parent f18c9a1569
commit 2da88fff15
5 changed files with 346 additions and 1203 deletions

View File

@ -15,6 +15,34 @@
#include "ve2500a.h"
#include "ve2500b.h"
const TString& build_query(const char tipo)
{
TString& query = get_tmp_string();
query << "USE RCONDV";
switch (tipo)
{
case 'C':
{
query << "\nFROM TIPO=C TIPOCF=#TIPOCF CODCF=#CODCF COD=#COD";
query << "\nTO TIPO=C TIPOCF=#TIPOCF CODCF=#CODCF COD=#COD";
}
break;
case 'O':
{
query << "\nFROM TIPO=O COD=#COD";
query << "\nTO TIPO=O COD=#COD";
}
break;
default: //il default è 'L', listini
{
query << "\nFROM TIPO=L CATVEN=#CATVEN COD=#COD";
query << "\nTO TIPO=L CATVEN=#CATVEN COD=#COD";
}
break;
}
return query;
}
////////////////////////////////////////////////////////////////////
// MASCHERA SECONDARIA DI GENERAZIONE LISTINO
////////////////////////////////////////////////////////////////////
@ -31,7 +59,7 @@ protected:
public:
void crea_listino();
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
TGestione_listini_semplice_mask_genera(TMask* main_mask);
TGestione_listini_semplice_mask_genera(TMask* main_mask, const TString& mask_name);
};
@ -40,12 +68,12 @@ bool TGestione_listini_semplice_mask_genera::on_field_event(TOperable_field& o,
return true;
}
TGestione_listini_semplice_mask_genera::TGestione_listini_semplice_mask_genera(TMask* main_mask)
: TAutomask("ve2500b"), _main_mask(main_mask)
TGestione_listini_semplice_mask_genera::TGestione_listini_semplice_mask_genera(TMask* main_mask, const TString& mask_name)
: TAutomask(mask_name), _main_mask(main_mask)
{
const bool gesliscv = ini_get_bool(CONFIG_DITTA, "ve", "GESLISCV");
enable(FB_CATVEN, gesliscv);
enable(FB_DESVEN, gesliscv);
enable(FB_L_CATVEN, gesliscv);
enable(FB_L_DESVEN, gesliscv);
}
// COPIA LISTINO
@ -76,18 +104,62 @@ int TGestione_listini_semplice_mask_genera::find_art_in_sheet(const char tipo, c
//metodo per la copia da un listino esistente
void TGestione_listini_semplice_mask_genera::copia_listino()
{
//parametri listino origine
const TString& ori_catven = get(FB_CATVEN);
const TString& ori_codlis = get(FB_COD);
//inizializza il tipo di condv che serve ('L'istino, 'C'ontratto, 'O'fferta)
char tipo = main_app().argv(2)[0];
tipo = toupper(tipo);
//parametri listino/contratto/offerta origine
TString4 ori_catven;
char ori_tipocf;
long ori_codcf;
switch (tipo)
{
case 'C':
ori_tipocf = get(FB_C_TIPOCF)[0];
ori_codcf = get_long(FB_C_CODCF);
break;
case 'O':
break;
default: //il default è 'L'
ori_catven = get(FB_L_CATVEN);
break;
}
//parametri comuni
const TString& ori_condv = get(FB_COD);
const real ricarico = get_real(FB_RICARICO);
//vanno fuori dall'if(get_bool(FB_COPIATESTA)) perchè rec_ori_testata serve in seguito! (che schifo!)
TToken_string key;
key.add("L");
key.add(ori_catven);
key.add("");
key.add("");
key.add(ori_codlis);
key.add(tipo);
switch(tipo)
{
case 'C':
{
key.add("");
key.add(ori_tipocf);
key.add(ori_codcf);
}
break;
case 'O':
{
key.add("");
key.add("");
key.add("");
}
break;
default: //'L', come sopra
{
key.add(ori_catven);
key.add("");
key.add("");
}
break;
}
key.add(ori_condv);
const TRectype& rec_ori_testata = cache().get(LF_CONDV, key);
//TESTATA
@ -106,24 +178,35 @@ void TGestione_listini_semplice_mask_genera::copia_listino()
//RIGHE
//prende il recordset delle righe del listino origine e lo mette sullo sheet
TString query;
query << "USE RCONDV\n";
query << "FROM TIPO=L CATVEN=#CATVEN COD=#COD\n";
query << "TO TIPO=L CATVEN=#CATVEN COD=#COD\n";
TISAM_recordset righe(build_query(tipo)); //la build query è un metodo dell'altra maschera (A)
switch (tipo)
{
case 'C':
{
TString4 str_tipocf;
str_tipocf << ori_tipocf;
righe.set_var("#TIPOCF", str_tipocf);
righe.set_var("#CODCF", ori_codcf);
}
break;
case 'O':
break;
default: //il default è 'L'
righe.set_var("#CATVEN", ori_catven);
break;
}
TISAM_recordset righe_listino(query);
righe_listino.set_var("#CATVEN", ori_catven);
righe_listino.set_var("#COD", ori_codlis);
righe.set_var("#COD", ori_condv);
const long righe_listino_items = righe_listino.items();
TProgind pi(righe_listino_items, TR("Copia righe listino origine..."), true, true);
const long righe_items = righe.items();
TProgind pi(righe_items, TR("Copia righe origine..."), true, true);
//sheet righe listino da riempire nella maschera principale
TSheet_field& sf_righe = _main_mask->sfield(FA_RIGHE);
TMask& msk = sf_righe.sheet_mask();
//record corrente del recordset (non const perchè la modifica eventualmente causa ricarico)
TRectype& riga_corrente = righe_listino.cursor()->curr();
TRectype& riga_corrente = righe.cursor()->curr();
TString80 val;
//alcune date utili nelle righe; prese qui perchè vengono dalla testata o dalla maschera e sono poi riportate..
@ -136,7 +219,7 @@ void TGestione_listini_semplice_mask_genera::copia_listino()
data_prz_storico = data_ult_aum - 1L;
//scorre tutte le righe listino del recordset e le sbatte nello sheet della maschera principale
for (bool ok = righe_listino.move_first(); ok; ok = righe_listino.move_next())
for (bool ok = righe.move_first(); ok; ok = righe.move_next())
{
if (!pi.addstatus(1))
break;
@ -299,27 +382,50 @@ void TGestione_listini_semplice_mask_genera::crea_listino()
////////////////////////////////////////////////////////////////////
class TGestione_listini_semplice_mask: public TAutomask
{
int _pos_tipo, _pos_art, _pos_desc, _pos_um;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
int find_art(TSheet_field& s, const char tipo, const TString& art, const int tranne = -1) const;
int find_art(TSheet_field& s, const char tipo, const TString& art, const TString& um, const int tranne = -1) const;
int guess_art(TSheet_field& s, const char tipo, const TString& art, const int column) const;
TGestione_listini_semplice_mask();
TGestione_listini_semplice_mask(const TString& mask_name);
};
TGestione_listini_semplice_mask::TGestione_listini_semplice_mask() : TAutomask("ve2500a")
TGestione_listini_semplice_mask::TGestione_listini_semplice_mask(const TString& mask_name) : TAutomask(mask_name)
{
//in base alla cervellotica configurazione impostata dall'utonto abilita/disabilita campi
const bool gesliscv = ini_get_bool(CONFIG_DITTA, "ve", "GESLISCV");
enable(FA_L_CATVEN, gesliscv);
enable(FA_L_DESVEN, gesliscv);
//attenzione!!! il campo CATVEN è in chiave 1! per disabilitarlo ci vuole questo trucco!
if (!gesliscv)
efield(FA_L_CATVEN).reset_key(1);
//assegna le posizioni delle colonne dello sheet
TSheet_field& sf_righe = sfield(FA_RIGHE);
_pos_tipo = sf_righe.cid2index(S_TIPORIGA); //0
_pos_art = sf_righe.cid2index(S_CODRIGA_A); //1
_pos_desc = sf_righe.cid2index(S_DESRIGA_A); //2
_pos_um = sf_righe.cid2index(S_UM); //4
//inizializza il tipo di condv che serve ('L'istino, 'C'ontratto, 'O'fferta)
char tipo = main_app().argv(2)[0];
tipo = toupper(tipo);
switch (tipo)
{
case 'C':
break;
case 'O':
break;
default: //il default è L
{
//in base alla cervellotica configurazione impostata dall'utonto abilita/disabilita campi
const bool gesliscv = ini_get_bool(CONFIG_DITTA, "ve", "GESLISCV");
enable(FA_L_CATVEN, gesliscv);
enable(FA_L_DESVEN, gesliscv);
//attenzione!!! il campo CATVEN è in chiave 1! per disabilitarlo ci vuole questo trucco!
if (!gesliscv)
efield(FA_L_CATVEN).reset_key(1);
}
break;
}
}
//metodo per la ricerca al volo di un articolo (serve per posizionare il cursore sullo sheet in tempo reale..
@ -330,7 +436,7 @@ int TGestione_listini_semplice_mask::guess_art(TSheet_field& s, const char tipo,
int i = -1;
FOR_EACH_SHEET_ROW(s, r, row)
{
const char tiporiga = row->get_char(0);
const char tiporiga = row->get_char(_pos_tipo);
const TString& cod = row->get(column);
if (tipo == tiporiga && cod.starts_with(art, true))
{
@ -344,7 +450,7 @@ int TGestione_listini_semplice_mask::guess_art(TSheet_field& s, const char tipo,
//metodo che restituisce l'indice della riga dello sheet che contiene
//la coppia tipo-articolo desiderata (-1 se non lo trova)
int TGestione_listini_semplice_mask::find_art(TSheet_field& s, const char tipo, const TString& art,
const int tranne) const
const TString& um, const int tranne) const
{
int i = -1;
//tranne serve per evitare una riga specifica;di default è posto =-1 perchè non si usa
@ -352,10 +458,11 @@ int TGestione_listini_semplice_mask::find_art(TSheet_field& s, const char tipo,
{
if (r != tranne)
{
const char tiporiga = row->get_char(0);
const char* codart = row->get(1);
if (tipo == tiporiga && art == codart)
const char tiporiga = row->get_char(_pos_tipo);
const char* codart = row->get(_pos_art);
TString4 umart = row->get(_pos_um);
umart.trim();
if (tipo == tiporiga && art == codart && um == umart)
{
i = r;
break;
@ -456,9 +563,11 @@ bool TGestione_listini_semplice_mask::on_field_event(TOperable_field &o, TField_
{
TSheet_field& sf_righe = sfield(FA_RIGHE);
TToken_string& riga = sf_righe.row(jolly);
const char tipo = riga.get_char(0);
const TString& art = riga.get(1);
const long found_riga = find_art(sf_righe, tipo, art, jolly);
const char tipo = riga.get_char(_pos_tipo);
const TString& art = riga.get(_pos_art);
TString4 umart = riga.get(_pos_um);
umart.trim();
const long found_riga = find_art(sf_righe, tipo, art, umart, jolly);
if (found_riga >= 0)
return error_box(TR("Non è possibile inserire lo stesso articolo più di una volta!"));
}
@ -466,8 +575,8 @@ bool TGestione_listini_semplice_mask::on_field_event(TOperable_field &o, TField_
{
TSheet_field& sf_righe = sfield(FA_RIGHE);
TToken_string& riga = sf_righe.row(jolly);
const char tipo = riga.get_char(0);
const TString& art = riga.get(1);
const char tipo = riga.get_char(_pos_tipo);
const TString& art = riga.get(_pos_art);
if (get(FA_TIPO)[0] != tipo)
set(FA_TIPO, tipo, 0x1); //0x1 perchè ha dei message e non degli output
@ -509,7 +618,6 @@ bool TGestione_listini_semplice_mask::on_field_event(TOperable_field &o, TField_
{
TISAM_recordset gmc_recset("USE GMC");
//TCursor_sheet cs(gmc_recset.cursor(), "CODTAB|S0", TR("Gruppi merceologici"), HR("Gr.Merc.|Descrizione@50"), 0, 0, win());
TToken_string siblings;
TBrowse_sheet cs (gmc_recset.cursor(), "CODTAB|S0", TR("Gruppi merceologici"), HR("Gr.Merc.|Descrizione@50"), 0,
efield(FA_GRMERC_A), siblings);
@ -530,10 +638,15 @@ bool TGestione_listini_semplice_mask::on_field_event(TOperable_field &o, TField_
}
}
break;
case DLG_CREA: //copia / generazione listino
case DLG_CREA: //copia / generazione listino,contratto,offerta
if (e == fe_button)
{
TGestione_listini_semplice_mask_genera mask_gen(this); //gli passa la maschera principale
char tipo = main_app().argv(2)[0];
tipo = toupper(tipo);
TString16 mask_name;
mask_name << "ve2500b" << tipo;
//gli passa la maschera principale ed il nome della maschera di generazione in base al tipo di condv in esame
TGestione_listini_semplice_mask_genera mask_gen(this, mask_name);
if (mask_gen.run() == K_ENTER)
mask_gen.crea_listino();
}
@ -544,10 +657,10 @@ bool TGestione_listini_semplice_mask::on_field_event(TOperable_field &o, TField_
TSheet_field& sf_righe = sfield(FA_RIGHE);
FOR_EACH_SHEET_ROW_BACK(sf_righe, r, row) //deve andare all'indietro per minimizzare il riordino righe
{
if (row->get_char(2) <= ' ') //le righe senza descrizione sono sbagliate (è obbligatoria per articoli ecc.)
if (row->get_char(_pos_desc) <= ' ') //le righe senza descrizione sono sbagliate (è obbligatoria per articoli ecc.)
{
bool kill_row = true;
if (row->get_char(0) == 'A') //solo se è un articolo tenta di recuperarlo con il codice alternativo..(mah?)
if (row->get_char(_pos_tipo) == 'A') //solo se è un articolo tenta di recuperarlo con il codice alternativo..(mah?)
{
TLocalisamfile file_codcorr(LF_CODCORR);
file_codcorr.setkey(2);
@ -586,10 +699,10 @@ class TGestione_listini_semplice : public TRelation_application
{
TGestione_listini_semplice_mask *_mask;
TRelation* _rel;
char _tipo;
private:
void save_rows();
TString build_query() const;
protected:
virtual bool user_create();
@ -620,6 +733,7 @@ public:
void TGestione_listini_semplice::save_rows()
{
TWait_cursor hourglass;
@ -627,8 +741,20 @@ void TGestione_listini_semplice::save_rows()
//attenzione!!! fatto questo casino per poter usare la find_art() che è un metodo della maschera listini
const TGestione_listini_semplice_mask& m = *_mask;
//instanzio un TISAM_recordset sulle righe listino e un localisamfile
TISAM_recordset righelist(build_query());
righelist.set_var("#CATVEN", m.get(FA_L_CATVEN));
TISAM_recordset righelist(build_query(_tipo));
switch (_tipo)
{
case 'C':
righelist.set_var("#TIPOCF", m.get(FA_C_TIPOCF));
righelist.set_var("#CODCF", m.get(FA_C_CODCF));
break;
case 'O':
break;
default: //il default è 'L'
righelist.set_var("#CATVEN", m.get(FA_L_CATVEN));
break;
}
righelist.set_var("#COD", m.get(FA_COD));
const long righelist_items = righelist.items();
@ -641,10 +767,11 @@ void TGestione_listini_semplice::save_rows()
//scorro tutte le righe listino ed elimino tutte quelle che non ci sono più sullo sheet (modifiche utonto)
for (bool ok = righelist.move_first(); ok; ok = righelist.move_next())
{
const char tiporiga = righelist.get("TIPORIGA").as_string()[0];
const char tiporiga = righelist.get(RCONDV_TIPORIGA).as_string()[0];
const TString& art = righelist.get("CODRIGA").as_string();
if (m.find_art(righe, tiporiga, art) < 0)
const TString& art = righelist.get(RCONDV_CODRIGA).as_string();
const TString& umart = righelist.get(RCONDV_UM).as_string();
if (m.find_art(righe, tiporiga, art, umart) < 0)
file.remove();
}
@ -652,7 +779,22 @@ void TGestione_listini_semplice::save_rows()
//-----------------------------------------
//per prima cosa servono i dati di testata utili per riempire la chiave di riga listino
const TString& catven = m.get(FA_L_CATVEN);
char tipocf;
long codcf;
TString4 catven;
switch (_tipo)
{
case 'C':
tipocf = m.get(FA_C_TIPOCF)[0];
codcf = m.get_long(FA_C_CODCF);
break;
case 'O':
break;
default: //il default è 'L'
catven = m.get(FA_L_CATVEN);
break;
}
const TString& cod = m.get(FA_COD);
//recupero la maschera di riga
@ -662,8 +804,21 @@ void TGestione_listini_semplice::save_rows()
FOR_EACH_SHEET_ROW(righe, r, row)
{
file.zero();
file.put(RCONDV_TIPO, "L");
file.put(RCONDV_CATVEN, catven);
file.put(RCONDV_TIPO, _tipo);
switch (_tipo)
{
case 'C':
file.put(RCONDV_TIPOCF, tipocf);
file.put(RCONDV_CODCF, codcf);
break;
case 'O':
break;
default: //il default è 'L'
file.put(RCONDV_CATVEN, catven);
break;
}
file.put(RCONDV_COD, cod);
//per ogni campo della maschera setta all'interno del record corrente di file
@ -708,6 +863,8 @@ const TString& TGestione_listini_semplice::find_descr(TToken_string& row)
bool TGestione_listini_semplice::protected_record(TRectype& rec)
{
//non deve consentire l'eliminazione di un listino se ha dei figli da mantenere!
//SOLO i listini possono avere la disgrazia della paternità, quindi il controllo non si..
//..estende per ora a contratti ed offerte
TString query;
query << "USE CONDV\n";
query << "SELECT (FATHCATVEN=#CATVEN)&&(FATHCOD=#COD)\n";
@ -720,15 +877,6 @@ bool TGestione_listini_semplice::protected_record(TRectype& rec)
return figli.items() > 0;
}
TString TGestione_listini_semplice::build_query() const
{
TString query;
query << "USE RCONDV\n";
query << "FROM TIPO=L CATVEN=#CATVEN COD=#COD\n";
query << "TO TIPO=L CATVEN=#CATVEN COD=#COD\n";
return query;
}
int TGestione_listini_semplice::read(TMask& m)
{
@ -739,8 +887,20 @@ int TGestione_listini_semplice::read(TMask& m)
{
TWait_cursor hourglass;
//instanzio un TISAM_recordset sulle righe listino (RCONDV)
TISAM_recordset righelist(build_query());
righelist.set_var("#CATVEN", m.get(FA_L_CATVEN));
TISAM_recordset righelist(build_query(_tipo));
switch (_tipo)
{
case 'C':
righelist.set_var("#TIPOCF", m.get(FA_C_TIPOCF));
righelist.set_var("#CODCF", m.get(FA_C_CODCF));
break;
case 'O':
break;
default: //il default è 'L'
righelist.set_var("#CATVEN", m.get(FA_L_CATVEN));
break;
}
righelist.set_var("#COD", m.get(FA_COD));
const long righelist_items = righelist.items();
@ -807,8 +967,20 @@ bool TGestione_listini_semplice::remove()
//vanno rimosse prima le righe poi la testata (nucleare?)
const TRectype& rec_head = get_relation()->curr();
TISAM_recordset righelist(build_query());
righelist.set_var("#CATVEN", rec_head.get(RCONDV_CATVEN));
TISAM_recordset righelist(build_query(_tipo));
switch (_tipo)
{
case 'C':
righelist.set_var("#TIPOCF", rec_head.get(RCONDV_TIPOCF));
righelist.set_var("#CODCF", rec_head.get(RCONDV_CODCF));
break;
case 'O':
break;
default: //il default è 'L'
righelist.set_var("#CATVEN", rec_head.get(RCONDV_CATVEN));
break;
}
righelist.set_var("#COD", rec_head.get(RCONDV_COD));
const long righelist_items = righelist.items();
TProgind pi(righelist_items, TR("Eliminazione righe listino..."), true, true);
@ -870,13 +1042,13 @@ void TGestione_listini_semplice::mask2ini(const TMask& m, TConfig& ini)
query << "\nTO TIPO=#TIPO CATVEN=#CATVEN TIPOCF=#TCF CODCF=#CODCF COD=#COD";
TISAM_recordset rcondv(query);
const TString& tipo = m.get(CONDV_TIPO);
TString4 tipo(_tipo);
rcondv.set_var("#TIPO", tipo);
if (tipo == "L")
if (_tipo == 'L')
rcondv.set_var("#CATVEN", m.get(CONDV_CATVEN));
else
rcondv.set_var("#CATVEN", "");
if (tipo == "C")
if (_tipo == 'C')
{
rcondv.set_var("#TCF", m.get(CONDV_TIPOCF));
rcondv.set_var("#CODCF", m.get(CONDV_CODCF));
@ -934,12 +1106,34 @@ bool TGestione_listini_semplice::user_create()
if (!dninst.can_I_run(true))
return error_box(TR("Programma non autorizzato!"));
//decide il tipo di condizione di vendita: 'L'istino, 'C'ontratto 'O'fferta
_tipo = 'L';
if (argc() > 2) //se la chiamata ha un parametro ulteriore ('ve2 -4 c', ad esempio)..
{
TFilename trans = argv(2); //..prende il parametro ulteriore
if (trans.len() == 1) //se è lungo 1 -> chiamata da menu...
_tipo = trans[0];
else
{
trans.ltrim(2); //..sennò chiamata interattiva con file .ini
if (trans.exist())
{
TConfig ini(trans, "52");
_tipo = ini.get_char("TIPO");
}
}
_tipo = toupper(_tipo);
}
_rel = new TRelation(LF_CONDV);
//attenzione!! questo è il parametro per avere la lunghezza del numero riga sullo sheet
TSheet_field::set_line_number_width(5);
_mask = new TGestione_listini_semplice_mask;
//super-attenzione! la maschera da caricare viene decisa in base al tipo di condizione di vendita
TString16 mask_name;
mask_name << "ve2500a" << _tipo;
_mask = new TGestione_listini_semplice_mask(mask_name);
return true;
}

View File

@ -1,50 +1,64 @@
//maschera gestione listini comprensibile
#define FA_TIPO 200
#define FA_L_CATVEN 201
#define FA_L_DESVEN 202
#define FA_COD 203
#define FA_DESCR 204
#define FA_VALINI 205
#define FA_VALFIN 206
#define FA_TIPORIGA 207
#define FA_CODRIGA_A 208
#define FA_DESRIGA_A 209
#define FA_CODRIGA_G 210
#define FA_DESRIGA_G 211
#define FA_CODRIGA_S 212
#define FA_DESRIGA_S 213
#define FA_CODRIGA_R 214
#define FA_DESRIGA_R 215
//Istruzioni per un uso corretto
//------------------------------
//_L_ -> campo solo 'L'istini -> ve2500l.uml
//_C_ -> campo solo 'C'ontratti -> ve2500c.uml
//_O_ -> campo solo 'O'fferte -> ve2500o.uml
//tutti gli altri campi stanno in ve2500x.uml
#define FA_GRMERC_A 216
#define FA_SOTGRMERC_A 217
#define FA_DESGRMERC_A 218
#define DLG_GRMERC 219
//in caso di modifiche seguire sempre queste istruzioni..
//..e non fare le cose alla cazzo, grazie!
#define FA_RIGHE 220
#define FA_TIPO 200
#define FA_L_CATVEN 201
#define FA_L_DESVEN 202
#define FA_C_TIPOCF 203
#define FA_C_CODCF 204
#define FA_C_DESCF 205
#define FA_COD 208
#define FA_DESCR 209
#define FA_VALINI 210
#define FA_VALFIN 211
#define FA_C_OBBL 212
#define FA_TIPORIGA 213
#define FA_CODRIGA_A 214
#define FA_DESRIGA_A 215
#define FA_CODRIGA_G 216
#define FA_DESRIGA_G 217
#define FA_CODRIGA_S 218
#define FA_DESRIGA_S 219
#define FA_CODRIGA_R 220
#define FA_DESRIGA_R 221
#define FA_CODVAL 227
#define FA_CAMBIO 228
#define FA_CONTROEURO 229
#define FA_DATACAM 230
#define FA_GESTSCAGL 231
#define FA_DECIMALI 232
#define FA_SEQRIC_1 233
#define FA_SEQRIC_2 234
#define FA_SEQRIC_3 235
#define FA_SEQRIC_4 236
#define FA_IMPLORDI 237
#define FA_GESTUM 238
#define FA_GESTSCO 239
#define FA_L_CODSUCC 240
#define FA_L_DESSUCC 241
#define FA_L_FATHCATVEN 242
#define FA_L_FATHDESVEN 243
#define FA_L_FATHCOD 244
#define FA_L_FATHDESCR 245
#define FA_L_ARROTONDA 246
#define FA_GRMERC_A 222
#define FA_SOTGRMERC_A 223
#define FA_DESGRMERC_A 224
#define DLG_GRMERC 225
//campi dello sheet delle righe
#define FA_RIGHE 230
#define FA_CODVAL 231
#define FA_CAMBIO 232
#define FA_CONTROEURO 233
#define FA_DATACAM 234
#define FA_GESTSCAGL 235
#define FA_DECIMALI 236
#define FA_SEQRIC_1 240
#define FA_SEQRIC_2 241
#define FA_SEQRIC_3 242
#define FA_SEQRIC_4 243
#define FA_IMPLORDI 244
#define FA_GESTUM 245
#define FA_GESTSCO 246
#define FA_L_CODSUCC 250
#define FA_L_DESSUCC 251
#define FA_L_FATHCATVEN 252
#define FA_L_FATHDESVEN 253
#define FA_L_FATHCOD 254
#define FA_L_FATHDESCR 255
#define FA_L_ARROTONDA 256
//campi dello sheet delle righe (ve2500x.uml)
#define S_TIPORIGA 101
#define S_CODRIGA_A 102
#define S_DESRIGA_A 103

View File

@ -1,838 +0,0 @@
#include "ve2500a.h"
TOOLBAR "Toolbar" 0 0 0 2
#include <filebar.h>
BUTTON DLG_CREA 2 2
BEGIN
PROMPT 10 -1 "Cr~ea"
PICTURE TOOL_IMPORT
END
BUTTON DLG_COMPATTA 2 2
BEGIN
PROMPT 11 -1 "Co~mpatta"
PICTURE TOOL_PACK
END
#include <cancelbar.h>
ENDPAGE
PAGE "Dati generali e Righe" 0 2 0 0
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 0 0 "@bDati Listino"
END
LIST FA_TIPO 1 7
BEGIN
PROMPT 100 100 ""
ITEM "L|Listino"
FLAGS "D"
FIELD TIPO
KEY 1
END
STRING FA_L_CATVEN 2
BEGIN
PROMPT 1 1 "Cat. ven. "
FIELD CATVEN
FLAGS "U"
KEY 1
USE CVE
INPUT CODTAB FA_L_CATVEN
DISPLAY "Cat." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT FA_L_CATVEN CODTAB
OUTPUT FA_L_DESVEN S0
CHECKTYPE FORCED
END
STRING FA_L_DESVEN 50
BEGIN
PROMPT 18 1 ""
USE CVE KEY 2
INPUT S0 FA_L_DESVEN
DISPLAY "Descrizione@50" S0
DISPLAY "Cat." CODTAB
COPY OUTPUT FA_L_CATVEN
CHECKTYPE NORMAL
END
STRING FA_COD 3
BEGIN
PROMPT 1 2 "Listino "
FIELD COD
FLAGS "U"
KEY 1
USE LF_CONDV
INPUT TIPO "L"
INPUT CATVEN FA_L_CATVEN
INPUT COD FA_COD
DISPLAY "C.V." CATVEN
DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR
DISPLAY "Valuta" CODVAL
DISPLAY "Fine validita'" VALFIN
OUTPUT FA_L_CATVEN CATVEN
OUTPUT FA_COD COD
OUTPUT FA_DESCR DESCR
CHECKTYPE REQUIRED
END
STRING FA_DESCR 50
BEGIN
PROMPT 18 2 ""
FIELD DESCR
END
DATA FA_VALINI
BEGIN
PROMPT 1 3 "Inizio validita` "
FIELD VALIN
END
DATA FA_VALFIN
BEGIN
PROMPT 42 3 "Fine validita` "
FIELD VALFIN
END
//campi di ricerca parziale sullo sheet
//-------------------------------------
LIST FA_TIPORIGA 1 13
BEGIN
PROMPT 1 5 ""
FLAGS "P"
ITEM "A|Articolo"
MESSAGE HIDE,2@|HIDE,3@|HIDE,4@|SHOW,1@
ITEM "G|Gr. merc."
MESSAGE HIDE,1@|HIDE,3@|HIDE,4@|SHOW,2@
ITEM "S|Sotgr.merc."
MESSAGE HIDE,1@|HIDE,2@|HIDE,4@|SHOW,3@
ITEM "R|Ragg. fisc."
MESSAGE HIDE,1@|HIDE,2@|HIDE,3@|SHOW,4@
END
STRING FA_CODRIGA_A 20
BEGIN
PROMPT 18 5 ""
FLAGS "U"
USE LF_ANAMAG
INPUT CODART FA_CODRIGA_A
DISPLAY "Articolo@20" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT FA_CODRIGA_A CODART
OUTPUT FA_DESRIGA_A DESCR
OUTPUT FA_GRMERC_A GRMERC
CHECKTYPE SEARCH
ADD RUN ve2 -3
GROUP 1
END
STRING FA_DESRIGA_A 50 33
BEGIN
PROMPT 42 5 ""
USE LF_ANAMAG KEY 2
INPUT DESCR FA_DESRIGA_A
DISPLAY "Descrizione@50" DESCR
DISPLAY "Articolo@20" CODART
COPY OUTPUT FA_CODRIGA_A
CHECKTYPE SEARCH
ADD RUN ve2 -3
GROUP 1
END
STRING FA_CODRIGA_G 20 3
BEGIN
PROMPT 18 5 ""
FLAGS "U"
USE GMC SELECT CODTAB[4,5] == ""
INPUT CODTAB[1,3] FA_CODRIGA_G
DISPLAY "Gr. merc." CODTAB[1,3]
DISPLAY "Descrizione@50" S0
OUTPUT FA_CODRIGA_G CODTAB[1,3]
OUTPUT FA_DESRIGA_G S0
CHECKTYPE SEARCH
GROUP 2
END
STRING FA_DESRIGA_G 50
BEGIN
PROMPT 25 5 ""
USE GMC KEY 2 SELECT CODTAB[4,5] == ""
INPUT S0 F_DESRIGA_G
DISPLAY "Descrizione@50" S0
DISPLAY "Gr. merc." CODTAB[1,3]
COPY OUTPUT FA_CODRIGA_G
CHECKTYPE SEARCH
GROUP 2
END
STRING FA_CODRIGA_S 20 5
BEGIN
PROMPT 18 5 ""
FLAGS "U"
USE GMC SELECT CODTAB[4,5] != ""
INPUT CODTAB FA_CODRIGA_S
DISPLAY "Gruppo merc." CODTAB[1,3]
DISPLAY "Sottogr. merc." CODTAB[4,5]
DISPLAY "Descrizione@50" S0
OUTPUT FA_CODRIGA_S CODTAB
OUTPUT FA_DESRIGA_S S0
CHECKTYPE SEARCH
GROUP 3
END
STRING FA_DESRIGA_S 50 48
BEGIN
PROMPT 27 5 ""
USE GMC KEY 2 SELECT CODTAB[4,5] != ""
INPUT S0 FA_DESRIGA_S
DISPLAY "Descrizione@50" S0
DISPLAY "Gr. merc." CODTAB[1,3]
DISPLAY "Sottogr. merc." CODTAB[4,5]
COPY OUTPUT FA_CODRIGA_S
CHECKTYPE SEARCH
GROUP 3
END
STRING FA_CODRIGA_R 20 5
BEGIN
PROMPT 18 5 ""
FLAGS "U"
USE RFA
INPUT CODTAB FA_CODRIGA_R
DISPLAY "Ragg. fisc." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT FA_CODRIGA_R CODTAB
OUTPUT FA_DESRIGA_R S0
CHECKTYPE SEARCH
GROUP 4
END
STRING FA_DESRIGA_R 50 48
BEGIN
PROMPT 27 5 ""
USE RFA KEY 2
INPUT S0 FA_DESRIGA_R
DISPLAY "Descrizione@50" S0
DISPLAY "Ragg. fisc." CODTAB
COPY OUTPUT FA_CODRIGA_R
CHECKTYPE SEARCH
GROUP 4
END
STRING FA_GRMERC_A 5
BEGIN
PROMPT 15 6 "Gr.merc. "
USE GMC
INPUT CODTAB FA_GRMERC_A
OUTPUT FA_DESGRMERC_A S0
FLAGS "DG"
CHECKTYPE NORMAL
GROUP 1 2 3
END
STRING FA_DESGRMERC_A 50 27
BEGIN
PROMPT 30 6 ""
FLAGS "D"
GROUP 1 2 3
END
BUTTON DLG_GRMERC 18 1
BEGIN
PROMPT 58 6 "Modifica Gr.Merc."
GROUP 1
END
//------------------------------------------
TEXT -1
BEGIN
PROMPT 0 6 "@bRighe listino"
END
SPREADSHEET FA_RIGHE
BEGIN
PROMPT 1 7 "Righe"
ITEM "Tipo@4"
ITEM "Codice@20"
ITEM "Descrizione@50"
ITEM "Prezzo netto@18"
ITEM "UM"
ITEM "N.Scagl."
ITEM "Qta lim. scagl."
ITEM "Sconto@25"
ITEM "Add.IVA"
ITEM "Cod.IVA"
ITEM "Qta sconto/omag"
ITEM "Qta base sconto"
ITEM "Cod. art. omaggio@20"
ITEM "UM omaggio"
ITEM "Prezzo omaggio"
ITEM "Prezzo storico"
ITEM "Data prz.storico"
ITEM "Data ult.aumento"
ITEM "% provvigione"
END
ENDPAGE
PAGE "Dati avanzati" 0 2 0 0
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 0 0 "@bGestione valuta"
END
STRING FA_CODVAL 5
BEGIN
PROMPT 1 1 "Valuta "
FIELD CODVAL
FLAGS "U"
USE %VAL
INPUT CODTAB FA_CODVAL
DISPLAY "Valuta" CODTAB
DISPLAY "Descrizione@50" S0
DISPLAY "Cambio" S4
OUTPUT FA_CODVAL CODTAB
OUTPUT FA_CONTROEURO B1
OUTPUT FA_CAMBIO S4
CHECKTYPE NORMAL
MESSAGE EMPTY CLEAR,FA_CAMBIO|CLEAR,FA_DATACAM|DISABLE,FA_DATACAM
MESSAGE ENABLE,FA_CAMBIO|ENABLE,FA_DATACAM
END
NUMBER FA_CAMBIO 15 6
BEGIN
PROMPT 17 1 "Cambio "
FIELD CAMBIO
END
BOOLEAN FA_CONTROEURO
BEGIN
PROMPT 42 1 "Contro Euro"
FIELD CONTROEURO
END
DATA FA_DATACAM
BEGIN
PROMPT 61 1 "Data "
FIELD DATACAM
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 0 3 "@bScaglioni"
END
BOOLEAN FA_GESTSCAGL
BEGIN
PROMPT 1 4 "Gestione scaglioni"
FIELD GESTSCAGL
MESSAGE FALSE CLEAR,FA_DECIMALI
MESSAGE TRUE ENABLE,FA_DECIMALI
END
LISTBOX FA_DECIMALI 7
BEGIN
PROMPT 25 4 "Decimali per quantita' limite "
FIELD DECIMALI
ITEM "0|Nessuno"
ITEM "1|1"
ITEM "2|2"
ITEM "3|3"
ITEM "4|4"
ITEM "5|5"
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 0 6 "@bSequenza ricerca"
END
LIST FA_SEQRIC_1 10
BEGIN
PROMPT 1 7 ""
FIELD SEQRIC[1,1]
ITEM "A|Articoli"
ITEM "G|Gruppo M."
ITEM "S|Sottog. M."
ITEM "R|Ragg.fisc."
END
LIST FA_SEQRIC_2 10
BEGIN
PROMPT 18 7 ""
FIELD SEQRIC[2,2]
ITEM "-|Nessuno" MESSAGE CLEAR,5@
ITEM "A|Articoli" MESSAGE ENABLE,FA_SEQRIC_3
ITEM "G|Gruppo M." MESSAGE ENABLE,FA_SEQRIC_3
ITEM "S|Sottog. M." MESSAGE ENABLE,FA_SEQRIC_3
ITEM "R|Ragg.fisc." MESSAGE ENABLE,FA_SEQRIC_3
STR_EXPR (#THIS_FIELD=="-")||(#THIS_FIELD!=#FA_SEQRIC_1)
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
END
LIST FA_SEQRIC_3 10
BEGIN
PROMPT 33 7 ""
FIELD SEQRIC[3,3]
ITEM "-|Nessuno" MESSAGE CLEAR,FA_SEQRIC_4
ITEM "A|Articoli" MESSAGE ENABLE,FA_SEQRIC_4
ITEM "G|Gruppo M." MESSAGE ENABLE,FA_SEQRIC_4
ITEM "S|Sottog. M." MESSAGE ENABLE,FA_SEQRIC_4
ITEM "R|Ragg.fisc." MESSAGE ENABLE,FA_SEQRIC_4
GROUP 5
STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#FA_SEQRIC_1)&&(#THIS_FIELD!=#FA_SEQRIC_2))
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
END
LIST FA_SEQRIC_4 10
BEGIN
PROMPT 48 7 ""
FIELD SEQRIC[4,4]
ITEM "-|Nessuno"
ITEM "A|Articoli"
ITEM "G|Gruppo M."
ITEM "S|Sottog. M."
ITEM "R|Ragg.fisc."
GROUP 5
STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#FA_SEQRIC_1)&&(#THIS_FIELD!=#FA_SEQRIC_2)&&(#THIS_FIELD!=#FA_SEQRIC_3))
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 0 9 "@bListino successivo"
END
STRING FA_L_CODSUCC 3
BEGIN
PROMPT 1 10 ""
FIELD CODLISSUCC
FLAGS "U"
USE LF_CONDV
INPUT TIPO "L"
INPUT CATVEN FA_L_CATVEN SELECT
INPUT COD FA_L_CODSUCC
DISPLAY "C.V." CATVEN
DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR
OUTPUT FA_L_CODSUCC COD
OUTPUT FA_L_DESSUCC DESCR
CHECKTYPE NORMAL
END
STRING FA_L_DESSUCC 50
BEGIN
PROMPT 10 10 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 0 12 "@bListino padre"
END
STRING FA_L_FATHCATVEN 2
BEGIN
PROMPT 1 13 "Cat. ven. "
FIELD FATHCATVEN
FLAGS "U"
USE CVE
INPUT CODTAB FA_L_FATHCATVEN
DISPLAY "Cat." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT FA_L_FATHCATVEN CODTAB
OUTPUT FA_L_FATHDESVEN S0
CHECKTYPE NORMAL
END
STRING FA_L_FATHDESVEN 50
BEGIN
PROMPT 18 13 ""
USE CVE KEY 2
INPUT S0 FA_L_FATHDESVEN
DISPLAY "Descrizione@50" S0
DISPLAY "Cat." CODTAB
COPY OUTPUT FA_L_FATHCATVEN
END
STRING FA_L_FATHCOD 3
BEGIN
PROMPT 1 14 "Listino "
FIELD FATHCOD
FLAGS "U"
USE LF_CONDV SELECT (CATVEN!=#FA_L_CATVEN)||(COD!=#FA_COD)
INPUT TIPO "L"
INPUT CATVEN FA_L_FATHCATVEN SELECT
INPUT COD FA_L_FATHCOD
DISPLAY "C.V." CATVEN
DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR
DISPLAY "Valuta" CODVAL
DISPLAY "Fine validita'" VALFIN
OUTPUT FA_L_FATHCATVEN CATVEN
OUTPUT FA_L_FATHCOD COD
OUTPUT FA_L_FATHDESCR DESCR
CHECKTYPE NORMAL
END
STRING FA_L_FATHDESCR 50
BEGIN
PROMPT 18 14 ""
FLAGS "D"
END
STRING FA_L_ARROTONDA 8
BEGIN
PROMPT 1 15 "Arrotonda "
FIELD ARROTONDA
END
TEXT -1
BEGIN
PROMPT 21 15 "es. -0,05=per difetto ai 5 cent; +0,10=per eccesso ai 10 cent"
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 0 17 "@bParametri gestione"
END
BOOLEAN FA_IMPLORDI
BEGIN
PROMPT 1 18 "Importi lordi"
FIELD IMPLORDI
END
BOOLEAN FA_GESTUM
BEGIN
PROMPT 20 18 "Gestione unita` di misura"
FIELD GESTUM
END
BOOLEAN FA_GESTSCO
BEGIN
PROMPT 50 18 "Gestione sconti/omaggi"
FIELD GESTSCO
END
ENDPAGE
ENDMASK
/////////////////////////////////////////
//maschera di riga
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
PAGE "Riga listino" -1 -1 78 22
LIST S_TIPORIGA 1 16
BEGIN
PROMPT 1 0 "Tipo riga "
FIELD TIPORIGA
ITEM "A|Articolo"
MESSAGE HIDE,2@|HIDE,3@|HIDE,4@|SHOW,1@
ITEM "G|Gruppo merc."
MESSAGE HIDE,1@|HIDE,3@|HIDE,4@|SHOW,2@
ITEM "S|Sottogr. merc."
MESSAGE HIDE,1@|HIDE,2@|HIDE,4@|SHOW,3@
ITEM "R|Ragg. fiscale"
MESSAGE HIDE,1@|HIDE,2@|HIDE,3@|SHOW,4@
END
STRING S_CODRIGA_A 20
BEGIN
PROMPT 1 1 "Articolo "
FIELD CODRIGA
FLAGS "U"
USE LF_ANAMAG
INPUT CODART S_CODRIGA_A
DISPLAY "Articolo@20" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT S_CODRIGA_A CODART
OUTPUT S_DESRIGA_A DESCR
CHECKTYPE FORCED
ADD RUN ve2 -3
GROUP 1
END
STRING S_DESRIGA_A 50 39
BEGIN
PROMPT 35 1 ""
USE LF_ANAMAG KEY 2
INPUT DESCR S_DESRIGA_A
DISPLAY "Descrizione@50" DESCR
DISPLAY "Articolo@20" CODART
COPY OUTPUT S_CODRIGA_A
CHECKTYPE NORMAL
ADD RUN ve2 -3
GROUP 1
END
STRING S_CODRIGA_G 20 3
BEGIN
PROMPT 1 1 "Gr. merceologico "
FIELD CODRIGA
FLAGS "U"
USE GMC SELECT CODTAB[4,5] == ""
INPUT CODTAB[1,3] S_CODRIGA_G
DISPLAY "Gr. merc." CODTAB[1,3]
DISPLAY "Descrizione@50" S0
OUTPUT S_CODRIGA_G CODTAB[1,3]
OUTPUT S_DESRIGA_G S0
CHECKTYPE FORCED
GROUP 2
END
STRING S_DESRIGA_G 50
BEGIN
PROMPT 24 1 ""
USE GMC KEY 2 SELECT CODTAB[4,5] == ""
INPUT S0 S_DESRIGA_G
DISPLAY "Descrizione@50" S0
DISPLAY "Gr. merc." CODTAB[1,3]
COPY OUTPUT S_CODRIGA_G
CHECKTYPE NORMAL
GROUP 2
END
STRING S_CODRIGA_S 20 5
BEGIN
PROMPT 1 1 "Sottogr. merc. "
FIELD CODRIGA
FLAGS "U"
USE GMC SELECT CODTAB[4,5] != ""
INPUT CODTAB S_CODRIGA_S
DISPLAY "Gruppo merc." CODTAB[1,3]
DISPLAY "Sottogr. merc." CODTAB[4,5]
DISPLAY "Descrizione@50" S0
OUTPUT S_CODRIGA_S CODTAB
OUTPUT S_DESRIGA_S S0
CHECKTYPE FORCED
GROUP 3
END
STRING S_DESRIGA_S 50
BEGIN
PROMPT 24 1 ""
USE GMC KEY 2 SELECT CODTAB[4,5] != ""
INPUT S0 S_DESRIGA_S
DISPLAY "Descrizione@50" S0
DISPLAY "Gr. merc." CODTAB[1,3]
DISPLAY "Sottogr. merc." CODTAB[4,5]
COPY OUTPUT S_CODRIGA_S
CHECKTYPE NORMAL
GROUP 3
END
STRING S_CODRIGA_R 20 5
BEGIN
PROMPT 1 1 "Raggr. fiscale "
FIELD CODRIGA
FLAGS "U"
USE RFA
INPUT CODTAB S_CODRIGA_R
DISPLAY "Ragg. fisc." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT S_CODRIGA_R CODTAB
OUTPUT S_DESRIGA_R S0
CHECKTYPE FORCED
GROUP 4
END
STRING S_DESRIGA_R 50
BEGIN
PROMPT 24 1 ""
USE RFA KEY 2
INPUT S0 S_DESRIGA_R
DISPLAY "Descrizione@50" S0
DISPLAY "Ragg. fisc." CODTAB
COPY OUTPUT S_CODRIGA_R
CHECKTYPE NORMAL
GROUP 4
END
NUMBER S_PREZZO 18 5
BEGIN
PROMPT 2 2 "Prezzo "
FIELD PREZZO
FLAGS "U"
DRIVENBY -FA_CODVAL
END
STRING S_UM 2
BEGIN
PROMPT 67 0 "U.M. "
FIELD UM
FLAGS "U"
USE LF_UMART KEY 2
JOIN %UMS INTO CODTAB=UM
INPUT CODART S_CODRIGA_A SELECT
INPUT UM S_UM
DISPLAY "U.M." UM
DISPLAY "Descrizione@50" %UMS->S0
OUTPUT S_UM UM
CHECKTYPE FORCED
END
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 1 3 "Scaglione"
END
NUMBER S_NSCAGL 1
BEGIN
PROMPT 2 4 "Numero "
FIELD NSCAGL
CHECKTYPE REQUIRED
END
NUMBER S_QLIM 15 5
BEGIN
PROMPT 24 4 "Qta limite "
FIELD QLIM
END
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 1 6 "IVA"
END
BOOLEAN S_ADDIVA
BEGIN
PROMPT 2 7 "Addebito"
FIELD ADDIVA
END
STRING S_CODIVA 4
BEGIN
PROMPT 25 7 "Codice"
FIELD CODIVA
FLAGS "U"
USE %IVA
INPUT CODTAB S_CODIVA
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT S_CODIVA CODTAB
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 76 8
BEGIN
PROMPT 1 9 "Sconti e omaggi"
END
STRING S_SCONTO 25
BEGIN
PROMPT 2 10 "Sconto/maggiorazione "
FIELD SCONTO
FLAGS "U"
END
NUMBER S_QOM 15 5
BEGIN
PROMPT 2 11 "Qta sconto/omaggio "
FIELD QOM
END
NUMBER S_QBASE 15 5
BEGIN
PROMPT 2 12 "Qta base sconto "
FIELD QBASE
END
STRING S_CODARTOM 20
BEGIN
PROMPT 2 13 "Cod. articolo omaggio "
FIELD CODARTOM
FLAGS "U"
USE LF_ANAMAG
INPUT CODART S_CODARTOM
DISPLAY "Articolo@20" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT S_CODARTOM CODART
CHECKTYPE NORMAL
END
STRING S_UMOM 2
BEGIN
PROMPT 2 14 "U.M. qta omaggio "
FIELD UMOM
FLAGS "U"
USE LF_UMART KEY 2
JOIN %UMS INTO CODTAB=UM
INPUT CODART S_CODARTOM SELECT
INPUT UM F_UMOM
DISPLAY "U.M." UM
DISPLAY "Descrizione@50" %UMS->S0
OUTPUT S_UMOM UM
END
NUMBER S_PROMAGGIO 18 5
BEGIN
PROMPT 2 15 "Prezzo omaggio "
FIELD PROMAGGIO
FLAGS "U"
DRIVENBY -FA_CODVAL
END
GROUPBOX DLG_NULL 76 5
BEGIN
PROMPT 1 17 "Storico"
END
NUMBER S_PRZSTO 18 5
BEGIN
PROMPT 2 18 "Prezzo storico "
FIELD PRZSTO
FLAGS "U"
END
DATA S_DATAPRZSTO
BEGIN
PROMPT 2 19 "Data prz storico "
FIELD DATAPRZSTO
END
DATA S_DATAULTAUM
BEGIN
PROMPT 2 20 "Data ultimo aumento "
FIELD DATAULTAUM
END
NUMBER S_PERCPROVV 5 2
BEGIN
PROMPT 2 22 "% provv. "
FIELD PERCPROVV
NUM_EXPR (#F_PERCPROVV>=0)&&(#F_PERCPROVV<=100)
WARNING "La percentuale di provvigione deve essere compresa tra 0 e 100"
END
ENDPAGE
ENDMASK

View File

@ -1,21 +1,23 @@
//campi maschera ve2500b.uml (parametri di creazione nuovi listini)
#define FB_SELECT 101
#define FB_SELECT 101
#define FB_CATVEN 102
#define FB_DESVEN 103
#define FB_COD 104
#define FB_DESCR 105
#define FB_RICARICO 106
#define FB_DACODART 107
#define FB_DADESART 108
#define FB_ACODART 109
#define FB_ADESART 110
#define FB_GRMERC 111
#define FB_SOTGRMERC 112
#define FB_DESGRMERC 113
#define FB_RAGFIS 114
#define FB_DESRAGFIS 115
#define FB_COPIATESTA 116
#define FB_L_CATVEN 102
#define FB_L_DESVEN 103
#define FB_C_TIPOCF 104
#define FB_C_CODCF 105
#define FB_C_DESCF 106
#define FB_COD 107
#define FB_DESCR 108
#define FB_RICARICO 109
#define FB_DACODART 115
#define FB_DADESART 116
#define FB_ACODART 117
#define FB_ADESART 118
#define FB_GRMERC 119
#define FB_SOTGRMERC 120
#define FB_DESGRMERC 121
#define FB_RAGFIS 122
#define FB_DESRAGFIS 123
#define FB_COPIATESTA 124

View File

@ -1,229 +0,0 @@
#include "ve2500b.h"
TOOLBAR "Toolbar" 0 0 0 2
#include <stdbar.h>
ENDPAGE
PAGE "Creazione nuovo listino" 0 2 0 0
RADIOBUTTON FB_SELECT 76
BEGIN
PROMPT 1 1 "@bTipologia di generazione"
ITEM "1|Copia da listino esistente"
MESSAGE HIDE,2@|SHOW,1@
ITEM "2|Anagrafica articoli"
MESSAGE HIDE,1@|SHOW,2@
END
//Copia listino esistente
//-----------------------------------------------
GROUPBOX DLG_NULL 76 5
BEGIN
PROMPT 1 7 "@bDati listino origine"
GROUP 1
END
STRING FB_CATVEN 2
BEGIN
PROMPT 2 8 "Cat. vend. "
FIELD CATVEN
FLAGS "U"
KEY 1
USE CVE
INPUT CODTAB FB_CATVEN
DISPLAY "Cat." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT FB_CATVEN CODTAB
OUTPUT FB_DESVEN S0
CHECKTYPE FORCED
GROUP 1
END
STRING FB_DESVEN 50
BEGIN
PROMPT 21 8 ""
USE CVE KEY 2
INPUT S0 FB_DESVEN
DISPLAY "Descrizione@50" S0
DISPLAY "Cat." CODTAB
COPY OUTPUT FB_CATVEN
CHECKTYPE NORMAL
GROUP 1
END
STRING FB_COD 3
BEGIN
PROMPT 2 9 "Listino "
FLAGS "U"
KEY 1
USE LF_CONDV
INPUT TIPO "L"
INPUT CATVEN FB_CATVEN
INPUT COD FB_COD
DISPLAY "C.V." CATVEN
DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR
DISPLAY "Valuta" CODVAL
DISPLAY "Fine validita'" VALFIN
OUTPUT FB_CATVEN CATVEN
OUTPUT FB_COD COD
OUTPUT FB_DESCR DESCR
CHECKTYPE REQUIRED
GROUP 1
END
STRING FB_DESCR 50
BEGIN
PROMPT 21 9 ""
GROUP 1
END
NUMBER FB_RICARICO 6 2
BEGIN
PROMPT 2 10 "Ricarico "
GROUP 1
END
BOOLEAN FB_COPIATESTA
BEGIN
PROMPT 21 10 "Copia tutti i dati di testata"
GROUP 1
END
//Generazione da anagrafica articoli
//-----------------------------------------------
GROUPBOX DLG_NULL 76 6
BEGIN
PROMPT 1 7 "@bAnagrafica articoli"
GROUP 2
END
STRING FB_DACODART 20
BEGIN
PROMPT 2 8 "Da articolo "
FLAGS "U"
USE LF_ANAMAG
INPUT CODART FB_DACODART
DISPLAY "Articolo@20" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT FB_DACODART CODART
OUTPUT FB_DADESART DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
GROUP 2
END
STRING FB_DADESART 50 35
BEGIN
PROMPT 38 8 ""
USE LF_ANAMAG KEY 2
INPUT DESCR FB_DADESART
DISPLAY "Descrizione@50" DESCR
DISPLAY "Articolo@20" CODART
COPY OUTPUT FB_DACODART
CHECKTYPE NORMAL
ADD RUN ve2 -3
GROUP 2
END
STRING FB_ACODART 20
BEGIN
PROMPT 2 9 "A articolo "
FLAGS "U"
USE LF_ANAMAG
INPUT CODART FB_ACODART
COPY DISPLAY FB_DACODART
OUTPUT FB_ACODART CODART
OUTPUT FB_ADESART DESCR
CHECKTYPE NORMAL
ADD RUN ve2 -3
GROUP 2
END
STRING FB_ADESART 50 35
BEGIN
PROMPT 38 9 ""
USE LF_ANAMAG KEY 2
INPUT DESCR FB_ADESART
COPY DISPLAY FB_DADESART
COPY OUTPUT FB_ACODART
CHECKTYPE NORMAL
ADD RUN ve2 -3
GROUP 2
END
STRING FB_GRMERC 3
BEGIN
PROMPT 2 10 "Gr. merc. "
FLAGS "U"
USE GMC SELECT CODTAB[4,5] == ""
INPUT CODTAB[1,3] FB_GRMERC
DISPLAY "Gruppo" CODTAB[1,3]
DISPLAY "Descrizione@50" S0
OUTPUT FB_GRMERC CODTAB[1,3]
OUTPUT FB_DESGRMERC S0
CHECKTYPE NORMAL
GROUP 2
END
STRING FB_SOTGRMERC 2
BEGIN
PROMPT 20 10 ""
FLAGS "U"
USE GMC
COPY INPUT FB_GRMERC
INPUT CODTAB[4,5] FB_SOTGRMERC
DISPLAY "Gruppo" CODTAB[1,3]
DISPLAY "Sottogruppo" CODTAB[4,5]
DISPLAY "Descrizione@50" S0
COPY OUTPUT FB_GRMERC
OUTPUT FB_SOTGRMERC CODTAB[4,5]
CHECKTYPE NORMAL
GROUP 2
END
STRING FB_DESGRMERC 50 45
BEGIN
PROMPT 28 10 ""
USE GMC KEY 2
INPUT S0 FB_DESGRMERC
DISPLAY "Descrizione@50" S0
DISPLAY "Gruppo" CODTAB[1,3]
DISPLAY "Sottogruppo" CODTAB[4,5]
COPY OUTPUT FB_SOTGRMERC
CHECKTYPE NORMAL
GROUP 2
END
STRING FB_RAGFIS 5
BEGIN
PROMPT 2 11 "Raggr. fis. "
FLAGS "U"
USE RFA
INPUT CODTAB FB_RAGFIS
DISPLAY "Ragg. fisc." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT FB_RAGFIS CODTAB
OUTPUT FB_DESRAGFIS S0
CHECKTYPE NORMAL
GROUP 2
END
STRING FB_DESRAGFIS 50
BEGIN
PROMPT 23 11 ""
USE RFA KEY 2
INPUT S0 FB_DESRAGFIS
DISPLAY "Descrizione@50" S0
DISPLAY "Ragg. fisc." CODTAB
COPY OUTPUT FB_RAGFIS
CHECKTYPE NORMAL
GROUP 2
END
ENDPAGE
ENDMASK