Gestione testata (2200) e righe (2300) di listini, contratti, offerte
git-svn-id: svn://10.65.10.50/trunk@1744 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
ea2ac8f506
commit
7380ec8c03
@ -12,7 +12,8 @@ class TCondizioni_vendita: public TRelation_application {
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
TString16 _condven; // stringa che indica il tipo di archivio
|
||||
short _tohide[10]; // vettore degli identificatori di campi che devono essere nascosti
|
||||
TBit_array _tohide; // vettore degli identificatori di campi che devono essere nascosti
|
||||
bool _catven_on; // booleano di abilitazione del campo CATVEN
|
||||
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
@ -51,48 +52,42 @@ bool TCondizioni_vendita::user_create() {
|
||||
switch (_condven[0]) {
|
||||
case 'L': { // listini
|
||||
// settaggio dei campi da eliminare
|
||||
_tohide[0]= 5;
|
||||
_tohide[1]= F_C_COD;
|
||||
_tohide[2]= F_O_COD;
|
||||
_tohide[3]= F_C_TIPOCF;
|
||||
_tohide[4]= F_C_CODCF;
|
||||
_tohide[5]= F_C_OBBLIG;
|
||||
_tohide.set(F_C_COD);
|
||||
_tohide.set(F_O_COD);
|
||||
_tohide.set(F_C_TIPOCF);
|
||||
_tohide.set(F_C_CODCF);
|
||||
_tohide.set(F_C_OBBLIG);
|
||||
set_search_field(F_L_COD); // impostazione del campo di ricerca
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta
|
||||
if (toupper(prassid.get("CATVEN_ON")[0])!='T') _msk->disable(F_L_CATVEN); // disabilita il campo CATVEN se non è abilitato nella config.
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
_catven_on= (toupper(prassid.get("CATVEN_ON")[0])!='T'); // setta il booleano di abilitazione di CATVEN
|
||||
_msk->set_handler(F_L_CODLISSUCC, handler_codlissucc); // setta l'handler per il campo di codice successivo
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
}
|
||||
case 'C': { // contratti
|
||||
case 'C': // contratti
|
||||
// settaggio dei campi da eliminare
|
||||
_tohide[0]= 4;
|
||||
_tohide[1]= F_L_COD;
|
||||
_tohide[2]= F_O_COD;
|
||||
_tohide[3]= F_L_CATVEN;
|
||||
_tohide[4]= F_L_CODLISSUCC;
|
||||
_tohide.set(F_L_COD);
|
||||
_tohide.set(F_O_COD);
|
||||
_tohide.set(F_L_CATVEN);
|
||||
_tohide.set(F_L_CODLISSUCC);
|
||||
set_search_field(F_C_COD); // impostazione del campo di ricerca
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
}
|
||||
case 'O': { // offerte
|
||||
case 'O': // offerte
|
||||
// settaggio dei campi da eliminare
|
||||
_tohide[0]= 7;
|
||||
_tohide[1]= F_L_COD;
|
||||
_tohide[2]= F_C_COD;
|
||||
_tohide[3]= F_L_CATVEN;
|
||||
_tohide[4]= F_C_TIPOCF;
|
||||
_tohide[5]= F_C_CODCF;
|
||||
_tohide[6]= F_C_OBBLIG;
|
||||
_tohide[7]= F_L_CODLISSUCC;
|
||||
_tohide.set(F_L_COD);
|
||||
_tohide.set(F_C_COD);
|
||||
_tohide.set(F_L_CATVEN);
|
||||
_tohide.set(F_C_TIPOCF);
|
||||
_tohide.set(F_C_CODCF);
|
||||
_tohide.set(F_C_OBBLIG);
|
||||
_tohide.set(F_L_CODLISSUCC);
|
||||
set_search_field(F_O_COD); // impostazione del campo di ricerca
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
}
|
||||
default: { // messaggio di errore se si indica un archivio non valido
|
||||
default: // messaggio di errore se si indica un archivio non valido
|
||||
error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
||||
_rel= new TRelation(LF_CONDV); // apre la relazione (un unico file)
|
||||
@ -195,10 +190,15 @@ int TCondizioni_vendita::rewrite(const TMask &m) {
|
||||
}
|
||||
|
||||
void TCondizioni_vendita::init_query_mode(TMask &m) {
|
||||
for (int i=1; i<=_tohide[0]; i++) {
|
||||
if (_msk->field(_tohide[i]).is_edit()) _msk->efield(_tohide[i]).check_type(CHECK_NORMAL); // disabilita il checking sul campo se è editabile
|
||||
_msk->disable(_tohide[i]); // disabilita il campo
|
||||
_msk->hide(_tohide[i]); // rende invisibile il campo
|
||||
for (short i=(short)_tohide.first_one(); i<=(short)_tohide.last_one(); i++) {
|
||||
if (_tohide[i]) {
|
||||
if (_msk->field(i).is_edit()) _msk->efield(i).check_type(CHECK_NORMAL); // disabilita il checking sul campo se è editabile
|
||||
_msk->hide(i); // rende invisibile il campo
|
||||
}
|
||||
}
|
||||
if (!_catven_on) { // se il booleano di abil. di CATVEN è falso...
|
||||
_msk->efield(F_L_CATVEN).check_type(CHECK_NONE); // ...viene rimosso dal checking...
|
||||
_msk->disable(F_L_CATVEN); // ...e disabilitato
|
||||
}
|
||||
_msk->set(F_TIPO, _condven); // settaggio del campo di tipo archivio
|
||||
}
|
||||
|
@ -1,23 +1,25 @@
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
|
||||
#include "ve2300.h"
|
||||
|
||||
|
||||
|
||||
// !! verificare le disabilitazioni incrociate tra i campi e le loro relative riabilitazioni
|
||||
// !! durante i cambi di chiave e dei campi con ricerche custom
|
||||
|
||||
class TRighe_condizioni_vendita: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
bool _catven_on; // booleano di abilitazione del campo CATVEN
|
||||
|
||||
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; }
|
||||
|
||||
static void hide_and_show_codriga(TMask &); // procedura di abilitazione/disabilitazione dei tre campi CODRIGA (codice riga)
|
||||
|
||||
static bool handle_tiporiga(TMask_field &, KEY); // handler del campo TIPORIGA (articolo, gruppo merc., ragg. fiscale)
|
||||
static bool handle_cod(TMask_field &, KEY); // handler del campo COD (codice listino, numero contratto, codice offerta)
|
||||
|
||||
@ -29,7 +31,6 @@ class TRighe_condizioni_vendita: public TRelation_application {
|
||||
public:
|
||||
TString16 _rcondven; // stringa che indica il tipo di archivio
|
||||
TBit_array _tohide; // vettore degli identificatori di campi che devono essere nascosti
|
||||
TBit_array _todisable; // vettore degli identificatori di campi che devono essere disabilitati
|
||||
|
||||
TRighe_condizioni_vendita() {}
|
||||
virtual ~TRighe_condizioni_vendita() {}
|
||||
@ -42,7 +43,6 @@ TRighe_condizioni_vendita &app() { // funzione che ritorna il riferimento alla c
|
||||
bool TRighe_condizioni_vendita::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
warning_box("Questa applicazione non è ancora stata definitivamente debuggata"); // !! rimuovere la warning box a fine debugging
|
||||
_rcondven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||
if (argc()>2) { // se c'è, prende il tipo di archivio dalla linea di comando
|
||||
TString temp(argv(2));
|
||||
@ -55,7 +55,7 @@ bool TRighe_condizioni_vendita::user_create() {
|
||||
_msk= new TMask("VE2300X");
|
||||
_tohide.reset(); // resetta il vettore dei campi da eliminare
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': // listini
|
||||
case 'L': { // listini
|
||||
_tohide.set(F_C_TIPOCF); // settaggio dei campi da eliminare...
|
||||
_tohide.set(F_C_CODCF);
|
||||
_tohide.set(F_C_COD);
|
||||
@ -64,15 +64,18 @@ bool TRighe_condizioni_vendita::user_create() {
|
||||
_tohide.set(F_O_RICERCA);
|
||||
_tohide.set(F_CO_CODLOTTO);
|
||||
_tohide.set(F_O_ARTES);
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
_catven_on= (toupper(prassid.get("CATVEN_ON")[0])!='T'); // setta il booleano di abilitazione di CATVEN
|
||||
set_search_field(F_L_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_L_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
}
|
||||
case 'C': // contratti
|
||||
_tohide.set(F_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
_tohide.set(F_L_COD);
|
||||
_tohide.set(F_O_COD);
|
||||
_tohide.set(F_LO_UM);
|
||||
_tohide.set(F_LO_UM);
|
||||
_tohide.set(F_L_RICERCA);
|
||||
_tohide.set(F_O_RICERCA);
|
||||
_tohide.set(F_O_ARTES);
|
||||
@ -98,8 +101,8 @@ bool TRighe_condizioni_vendita::user_create() {
|
||||
}
|
||||
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
||||
_rel= new TRelation(LF_RCONDV); // apre la relazione (un unico file)
|
||||
_todisable.reset(); // inizializza il vettore dei campi da disabilitare
|
||||
_msk->set_handler(F_TIPORIGA, handle_tiporiga); // impostazione dell'handler sul campo di selezione del tipo della riga
|
||||
hide_and_show_codriga(*_msk); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
@ -110,17 +113,41 @@ bool TRighe_condizioni_vendita::user_destroy() {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TRighe_condizioni_vendita::hide_and_show_codriga(TMask &m) {
|
||||
short id_campi[3]= { F_CODRIGA_A, F_CODRIGA_G, F_CODRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
|
||||
char tag_campi[3]= { 'A', 'G', 'R' }; // vettore dei tag di TIPORIGA per i tre campi CODRIGA in mutua esclusione
|
||||
char tag_campo= m.get(F_TIPORIGA)[0]; // prende il tag in TIPORIGA del campo da abilitare
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di tipo di archivio
|
||||
TBit_array &_tohide= app()._tohide; // prende il riferimento all'array di campi da eliminare
|
||||
for (int i=0; i<3; i++) { // ciclo sui tre campi CODRIGA
|
||||
if (tag_campo == tag_campi[i]) { // il campo indicato con il tag viene...
|
||||
m.efield(id_campi[i]).check_type(CHECK_REQUIRED); // ...abilitato al checking...
|
||||
m.show(id_campi[i]); // ...mostrato...
|
||||
_tohide.reset(id_campi[i]); // ...e rimosso dal vettore di eliminazione...
|
||||
} else { // ...mentre gli altri vengono...
|
||||
m.efield(id_campi[i]).check_type(CHECK_NONE); // ...disabilitati dal checking...
|
||||
m.hide(id_campi[i]); // ...nascosti...
|
||||
_tohide.set(id_campi[i]); // ...e aggiunti al vettore di eliminazione
|
||||
}
|
||||
}
|
||||
if (_rcondven != "C") { // se non stiamo lavorando sui contratti...
|
||||
if (tag_campo=='A') { // ...ed è stata selezionata una riga di articoli...
|
||||
m.efield(F_LO_UM).check_type(CHECK_REQUIRED); // ...l'unità di misura viene attivata al checking...
|
||||
m.enable(F_LO_UM); // ...e abilitata...
|
||||
} else { // ...altrimenti, se è stata selezionata una riga non di articoli...
|
||||
m.efield(F_LO_UM).check_type(CHECK_NONE); // ...l'unità di misura viene rimossa dal checking...
|
||||
m.disable(F_LO_UM); // ...e disabilitata
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) {
|
||||
TBit_array &_todisable= app()._todisable; // vettore per la disabilitazione dei campi, ricavato dalla proprietà dell'applicazione
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di indicazione del tipo di archivio
|
||||
if ((fld.get() != "A") && (_rcondven != "C")) _todisable.set(F_LO_UM); // se il tipo riga è "Articolo" e non siamo sui contratti, l'unità di misura deve essere disabilitata
|
||||
}
|
||||
return TRUE;
|
||||
if (k==K_TAB) hide_and_show_codriga(fld.mask()); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) {
|
||||
if ((k==K_TAB) && fld.get().not_empty()) {
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di indicazione del tipo di archivio
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita)
|
||||
@ -140,13 +167,22 @@ bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
|
||||
break;
|
||||
}
|
||||
if (condv.read()==NOERR) { // se la lettura è andata a buon fine abilita/disabilita i campi della maschera in base ai booleani della testata
|
||||
TBit_array &_todisable= app()._todisable; // vettore per la disabilitazione dei campi, ricavato dalla proprietà dell'applicazione
|
||||
_todisable.reset(); // resetta il vettore dei campi da disabilitare
|
||||
if (!condv.get_bool("GESTUM")) _todisable.set(F_LO_UM); // mette nel vettore di dabilitazione il campo "unità di misura" della maschera (campo chiave)
|
||||
if (!condv.get_bool("GESTSCAGL")) {
|
||||
_todisable.set(F_NSCAGL); // mette nel vettore di dabilitazione il campo "n.ro scaglione" della maschera (campo chiave)
|
||||
m.disable(F_QLIM); // disabilita il campo "quantità limite scaglione"
|
||||
if (!condv.get_bool("GESTUM")) {
|
||||
m.efield(F_LO_UM).check_type(CHECK_NONE); // disabilita il checking sul campo "unità di misura"
|
||||
m.disable(F_LO_UM); // disabilita il campo "unità di misura"
|
||||
} else {
|
||||
m.efield(F_LO_UM).check_type(CHECK_REQUIRED); // abilita il checking sul campo "unità di misura"
|
||||
m.enable(F_LO_UM); // abilita il campo "unità di misura"
|
||||
}
|
||||
if (!condv.get_bool("GESTSCAGL")) {
|
||||
m.efield(F_NSCAGL).check_type(CHECK_NONE); // disabilita il checking sul campo "quantità limite scaglione"
|
||||
m.disable(F_NSCAGL); // disabilita il campo "quantità limite scaglione"
|
||||
m.disable(F_QLIM); // disabilita il campo "quantità limite scaglione"
|
||||
} else {
|
||||
m.efield(F_NSCAGL).check_type(CHECK_REQUIRED); // abilita il checking sul campo "quantità limite scaglione"
|
||||
m.enable(F_NSCAGL); // abilita il campo "quantità limite scaglione"
|
||||
m.enable(F_QLIM); // abilita il campo "quantità limite scaglione"
|
||||
}
|
||||
if (!condv.get_bool("GESTSCO")) {
|
||||
m.disable(F_SCONTO); // disabilita il campo "sconto"
|
||||
m.disable(F_QOM); // disabilita il campo "quantità art. omaggio"
|
||||
@ -154,6 +190,13 @@ bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
|
||||
m.disable(F_CODARTOM); // disabilita il campo "codice articolo omaggio"
|
||||
m.disable(F_PROMAGGIO); // disabilita il campo "prezzo omaggio"
|
||||
m.disable(F_UMOM); // disabilita il campo "unità di misura art. omaggio"
|
||||
} else {
|
||||
m.enable(F_SCONTO); // abilita il campo "sconto"
|
||||
m.enable(F_QOM); // abilita il campo "quantità art. omaggio"
|
||||
m.enable(F_QBASE); // abilita il campo "quantità base x sconto"
|
||||
m.enable(F_CODARTOM); // abilita il campo "codice articolo omaggio"
|
||||
m.enable(F_PROMAGGIO); // abilita il campo "prezzo omaggio"
|
||||
m.enable(F_UMOM); // abilita il campo "unità di misura art. omaggio"
|
||||
}
|
||||
return TRUE;
|
||||
} else {
|
||||
@ -192,12 +235,10 @@ void TRighe_condizioni_vendita::init_query_mode(TMask &m) {
|
||||
_msk->hide(i); // rende invisibile il campo
|
||||
}
|
||||
}
|
||||
for (i= (short)_todisable.first_one(); i<=(short)_todisable.last_one(); i++) { // ciclo sul vettore dei campi da disabilitare
|
||||
if (_todisable[i]) {
|
||||
if (_msk->field(i).is_edit()) _msk->efield(i).check_type(CHECK_NONE); // disabilita il checking sul campo se è editabile
|
||||
_msk->disable(i); // disabilita il campo
|
||||
}
|
||||
}
|
||||
if (!_catven_on) { // se il booleano di abil. di CATVEN è falso...
|
||||
_msk->efield(F_L_CATVEN).check_type(CHECK_NONE); // ...viene rimosso dal checking...
|
||||
_msk->disable(F_L_CATVEN); // ...e disabilitato
|
||||
}
|
||||
_msk->set(F_TIPO, _rcondven); // settaggio del campo di tipo archivio
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user