char_sconti;// carattere che indica il tipo di tabella
short_sci_k_id[4];// vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
bool_sci_k_enabled[4];// vettore di abilitazione dei campi chiave per la maschera degli sconti incondizionati
virtualbooluser_create();
virtualbooluser_destroy();
virtualTMask*get_mask(int){return_msk;}
virtualboolchanging_mask(int){returnFALSE;}
virtualTRelation*get_relation()const{return_rel;}
virtualvoidinit_query_mode(TMask&);// handler chiamato quando la maschera passa in modo ricerca
public:
TTabelle_sconti(){}
virtual~TTabelle_sconti(){}
};
boolTTabelle_sconti::user_create(){
boolgotcha=FALSE;// booleano di avvenuta inizializzazione
_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{
TMaskchoose("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
}
switch(_sconti){
case'D':{// sconti documento
_msk=newTMask("VE2100D");// apre la maschera relativa
gotcha=TRUE;
break;
}
case'R':{// sconti di riga
_msk=newTMask("VE2100R");// apre la maschera relativa
set_search_field(F_R_RICERCA);// setta il campo di ricerca
gotcha=TRUE;
break;
}
case'I':{// sconti incondizionati
_msk=newTMask("VE2100I");// apre la maschera relativa
set_search_field(F_I_RICERCA);// setta il campo di ricerca
TConfigprassid(CONFIG_DITTA);// apre il file di configurazione di ditta
_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(inti=0;i<4;i++){
if(prassid.get("K_SCONTI_INC","ve",i).empty())_sci_k_enabled[i]=FALSE;// se nel file di config. il campo non <20> abilitato, viene indicato nel vettore di abilitazione
else_sci_k_enabled[i]=gotcha=TRUE;// se c'<27> almeno un campo abilitato "gotcha" esce TRUE dal ciclo
}
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=newTRelation(LF_SCONTI);// se <20> stata selezionata una tabella, apre la relazione (un unico file)
return(gotcha);
}
boolTTabelle_sconti::user_destroy(){
delete_rel;
delete_msk;
returnTRUE;
}
voidTTabelle_sconti::init_query_mode(TMask&m){
for(inti=0;i<4;i++){
if(_sci_k_enabled[i]){// se il campo deve essere abilitato...
m.enable(_sci_k_id[i]);// ...lo abilita...
m.efield(_sci_k_id[i]).check_type(CHECK_REQUIRED);// ...e lo rende richiesto...
}else{// ...altrimenti...
m.disable(_sci_k_id[i]);// ...lo disabilita...
m.efield(_sci_k_id[i]).check_type(CHECK_NORMAL);// ...e lo rende non richiesto