TString16_rcondven;// stringa che indica il tipo di archivio
bool_codlis_catven;// booleano di abilitazione del campo CATVEN
bool_codcon_codcf;// booleano di abilitazioni dei campi TIPOCF e CODCF
bool_gest_um;// variabile di abilitazione delle unit<69> di misura
virtualbooluser_create();
virtualbooluser_destroy();
virtualTMask*get_mask(int){return_msk;}// punto d'aggancio tra la maschera della rel.app. e la maschera principale dell'applicazione
virtualboolchanging_mask(int){returnFALSE;}// ritorna il flag di cambio maschera a seconda dei modi di funzionamento, in questa applicazione la maschera <20> una sola quindi il flag <20> FALSE
virtualboolchanging_keys()const{returnTRUE;}// ritorna il flag di rigenerazione della lista delle chiavi ad ogni find(), in questa applicazione le chiavi cambiano continuamente quindi il flag <20> TRUE
virtualTRelation*get_relation()const{return_rel;}// punto d'aggancio tra la relazione della rel.app. e la relazione principale dell'applicazione
staticvoidhide_and_show_codriga(void);// procedura di abilitazione/disabilitazione dei tre campi CODRIGA (codice riga)
staticboolhandle_tiporiga(TMask_field&,KEY);// handler del campo TIPORIGA (articolo, gruppo merc., ragg. fiscale)
staticboolhandle_cod(TMask_field&,KEY);// handler del campo COD (codice listino, numero contratto, codice offerta)
virtualintwrite(constTMask&);// metodo usato per scrivere il record sul file
virtualintrewrite(constTMask&);// metodo usato per aggiornare il record sul file
public:
TRighe_condizioni_vendita(){}
virtual~TRighe_condizioni_vendita(){}
};
TRighe_condizioni_vendita&app(){// funzione che ritorna il riferimento alla classe principale dell'applicazione
return(TRighe_condizioni_vendita&)main_app();
}
boolTRighe_condizioni_vendita::user_create(){
boolgotcha=FALSE;// booleano di avvenuta inizializzazione
_rcondven="*";// inizializzazione dell'indicatore del tipo di archivio
if(argc()>2){// se c'<27>, prende il tipo di archivio dalla linea di comando
TStringtemp(argv(2));
_rcondven=temp.left(1);// prende solo il primo carattere
}else{
TMaskchoose("VE2300");// istanzia la maschera di scelta del tipo di archivio
if(choose.run()==K_ENTER)_rcondven=choose.get(F_TIPORCV);// prende il tipo di archivio dalla maschera
}
_rcondven.upper();// rende la stringa upper-case
_msk=newTMask("VE2300X");
TConfigprassid(CONFIG_DITTA,"ve");// apre il file di configurazione della ditta corrente
switch(_rcondven[0]){
case'L':// listini
DESTROY(F_R_C_TIPOCF);// settaggio dei campi da eliminare...
DESTROY(F_R_C_CODCF);
DESTROY(F_R_C_COD);
DESTROY(F_R_O_COD);
_msk->hide(F_R_C_DESCF);
_msk->hide(F_R_C_DES);
_msk->hide(F_R_O_DES);
_msk->hide(F_R_C_RICERCA);
_msk->hide(F_R_O_RICERCA);
// _msk->hide(F_R_CO_CODLOTTO);
_msk->hide(F_R_O_ARTES);
_codlis_catven=prassid.get_bool("GESLISCV");// setta il booleano di abilitazione di CATVEN
if(!_codlis_catven)KILL(F_R_L_CATVEN);// disabilita condizionalmente le categorie di vendita
set_search_field(F_R_L_RICERCA);// impostazione del campo di ricerca
_msk->set_handler(F_R_L_COD,handle_cod);// impostazione dell'handler sul campo di controllo della testata
gotcha=TRUE;
break;
case'C':// contratti
DESTROY(F_R_L_CATVEN);// settaggio dei campi da eliminare...
DESTROY(F_R_L_COD);
DESTROY(F_R_O_COD);
_msk->hide(F_R_L_DESVEN);
_msk->hide(F_R_L_DES);
_msk->hide(F_R_O_DES);
_msk->hide(F_R_L_RICERCA);
_msk->hide(F_R_O_RICERCA);
_msk->hide(F_R_O_ARTES);
_codcon_codcf=prassid.get_bool("GESCONCC");// setta il booleano di abilitazione di TIPOCF e CODCF
if(!_codcon_codcf){// disabilita i campi di gestione clienti/fornitori in base al flag. di config.
KILL(F_R_C_TIPOCF);
KILL(F_R_C_CODCF);
}
set_search_field(F_R_C_RICERCA);// impostazione del campo di ricerca
_msk->set_handler(F_R_C_COD,handle_cod);// impostazione dell'handler sul campo di controllo della testata
gotcha=TRUE;
break;
case'O':// offerte
DESTROY(F_R_L_CATVEN);// settaggio dei campi da eliminare...
DESTROY(F_R_C_TIPOCF);
DESTROY(F_R_C_CODCF);
DESTROY(F_R_L_COD);
DESTROY(F_R_C_COD);
_msk->hide(F_R_C_DESCF);
_msk->hide(F_R_L_DESVEN);
_msk->hide(F_R_L_DES);
_msk->hide(F_R_C_DES);
_msk->hide(F_R_L_RICERCA);
_msk->hide(F_R_C_RICERCA);
set_search_field(F_R_O_RICERCA);// impostazione del campo di ricerca
_msk->set_handler(F_R_O_COD,handle_cod);// impostazione dell'handler sul campo di controllo della testata
gotcha=TRUE;
break;
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 <20> stato selezionato correttamente un archivio completa l'inizializzazione
_rel=newTRelation(LF_RCONDV);// apre la relazione (un unico file)
_msk->set(F_R_TIPO,_rcondven);// settaggio del campo di tipo archivio
_msk->set_handler(F_R_TIPORIGA,handle_tiporiga);// impostazione dell'handler sul campo di selezione del tipo della riga
_gest_um=TRUE;// abilita la gestione delle unit<69> di misura (di default)
hide_and_show_codriga();// invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA