1995-09-25 15:36:30 +00:00
|
|
|
|
|
|
|
|
|
#include <relapp.h>
|
|
|
|
|
#include <config.h>
|
|
|
|
|
|
|
|
|
|
#include "ve2100.h"
|
|
|
|
|
|
|
|
|
|
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
|
|
|
|
|
#define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TTabelle_sconti: public TRelation_application {
|
|
|
|
|
TMask *_msk; // maschera principale
|
|
|
|
|
TRelation *_rel; // relazione principale
|
|
|
|
|
|
|
|
|
|
char _sconti; // carattere che indica il tipo di tabella
|
|
|
|
|
|
|
|
|
|
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'<27>, 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); // apre il file di configurazione di ditta
|
|
|
|
|
switch (_sconti) {
|
|
|
|
|
case 'D': // sconti documento
|
|
|
|
|
_msk= new TMask("VE2100D"); // apre la maschera relativa
|
|
|
|
|
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
|
|
|
|
|
gotcha= TRUE;
|
|
|
|
|
break;
|
|
|
|
|
case 'I': // sconti incondizionati
|
|
|
|
|
_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", "ve", i)) { // se nel file di config. il campo <20> abilitato...
|
|
|
|
|
REVIVE(sci_k_id[i]); // ...il campo viene abilitato anche sulla maschera...
|
|
|
|
|
gotcha= TRUE; // ...e viene settato il flag di ok
|
|
|
|
|
} else KILL(sci_k_id[i]); // se nel file di config. il campo non <20> abilitato viene disabilitato anche sulla maschera
|
|
|
|
|
}
|
|
|
|
|
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
|
|
|
|
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 <20> 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;
|
|
|
|
|
}
|