campo-sirio/ve/ve2100.cpp
angelo 6c8f2ea093 Sottile modifica per abilitare/disabilitare i campi della
chiave.


git-svn-id: svn://10.65.10.50/trunk@3100 c028cbd2-c16b-5b4b-a496-9718f37d4682
1996-06-27 09:38:29 +00:00

106 lines
4.0 KiB
C++
Executable File

#include <relapp.h>
#include <config.h>
#include "ve2100.h"
static void key_disable(TMask & m, short id, int key = 1)
{
((TEditable_field &)m.field(id)).reset_key(key);
m.disable(id);
}
static void key_enable(TMask & m, short id, int key = 1)
{
((TEditable_field &)m.field(id)).reset_key(key);
m.enable(id);
}
class TTabelle_sconti: public TRelation_application {
TMask *_msk; // maschera principale
TRelation *_rel; // relazione principale
char _sconti; // carattere che indica il tipo di tabella
bool _catven; // abilitazione della gestione della categoria di vendita
TString _gessco; // indicatore di abilitazione degli sconti incondizionati
virtual bool user_create();
virtual bool user_destroy();
virtual TMask *get_mask(int) { return _msk; }
virtual bool changing_mask(int) { return FALSE; }
virtual TRelation *get_relation() const { return _rel; }
public:
TTabelle_sconti() {}
virtual ~TTabelle_sconti() {}
};
bool TTabelle_sconti::user_create() {
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
short sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
int i; // indice di ciclo
_sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella
if (argc()>2) _sconti= toupper((argv(2))[0]); // se c'è, prende il tipo di tabella dalla linea di comando
else {
TMask choose("VE2100"); // istanzia la maschera di scelta del tipo di tabella
if (choose.run() == K_ENTER) _sconti= toupper((choose.get(F_TIPOSC))[0]); // prende il tipo di tabella dalla maschera
}
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione di ditta
switch (_sconti) {
case 'D': // sconti documento
_msk= new TMask("VE2100D"); // apre la maschera relativa
set_search_field(F_D_CODCAT); // setta il campo di ricerca
gotcha= TRUE;
break;
case 'R': // sconti di riga
_msk= new TMask("VE2100R"); // apre la maschera relativa
set_search_field(F_R_RICERCA); // setta il campo di ricerca
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
if (!_catven) key_disable(*_msk, F_R_CODCAT); // se non è abilitato, viene disabilitato anche il campo
gotcha= TRUE;
break;
case 'I': // sconti incondizionati
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
if (_gessco=="A") {
_msk= new TMask("VE2100I"); // apre la maschera relativa
set_search_field(F_I_RICERCA); // setta il campo di ricerca
sci_k_id[0]= F_I_CATVEN; // inizializza l'array dei campi da disabilitare condizionalmente
sci_k_id[1]= F_I_SCCLIENTI;
sci_k_id[2]= F_I_ZONE;
sci_k_id[3]= F_I_CONDPAG;
for (i=0; i<4; i++) {
if (!prassid.get_bool("SCOKEY", NULL, i+1)) // se nel file di config. il campo non è abilitato...
key_disable(*_msk, sci_k_id[i]); // il campo non è abilitato viene disabilitato anche sulla maschera
else gotcha = TRUE;
}
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
if (!_catven) key_disable(*_msk, sci_k_id[1]); // se non è abilitato, viene disabilitato anche il campo
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
} else error_box("Gli sconti incondizionati non sono abilitati nella configurazione");
break;
default: // messaggio di errore se si indica una tabella non valida
error_box("Indicare la tabella sulla linea di comando (D, R o I) oppure selezionarla dalla maschera di partenza");
break;
}
if (gotcha) _rel= new TRelation(LF_SCONTI); // se è stata selezionata una tabella, apre la relazione (un unico file)
return (gotcha);
}
bool TTabelle_sconti::user_destroy() {
delete _rel;
delete _msk;
return TRUE;
}
int ve2100(int argc, char* argv[]) {
TTabelle_sconti a;
a.run(argc, argv, "Tabella sconti ");
return 0;
}