TString16_rcondven;// stringa che indica il tipo di archivio
bool_codlis_catven;// booleano di abilitazione del campo CATVEN
state_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
_gest_um=disactivated;// attiva di default la gestione delle unit<69> di misura pur lasciando il campo disabilitato
DESTROY(F_R_C_TIPOCF);// settaggio dei campi da eliminare...
TMask*_msk=app()._msk;// prende il puntatore alla maschera principale dell'applicazione
if(_msk->query_mode()){// se la maschera <20> in modo query procede con i controlli...
shortid_campi[3]={F_R_CODRIGA_A,F_R_CODRIGA_G,F_R_CODRIGA_R};// vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
chartag_campi[3]={'A','G','R'};// vettore dei tag di TIPORIGA per i tre campi CODRIGA in mutua esclusione
state&_gest_um=app()._gest_um;// prende il riferimento al booleano di abilitazione delle unit<69> di misura
TString&_rcondven=app()._rcondven;// prende il riferimento alla stringa di tipo di archivio
chartag_campo=toupper(_msk->get(F_R_TIPORIGA)[0]);// prende il tag del campo da abilitare in TIPORIGA
for(inti=0;i<3;i++){// ciclo sui tre campi CODRIGA
if(tag_campo==tag_campi[i]){CREATE(id_campi[i]);}// il campo indicato con il tag viene reso visibile
else{DESTROY(id_campi[i]);}// i campi non corrispondenti al tag vengono resi invisibili
}
if((_gest_um!=hidden)&&(_gest_um!=disabled)){// se <20> abilitata (o abilitabile) la gestione delle unit<69> di misura ed <20> stata selezionata una riga di articoli...
if(tag_campo=='A')_gest_um=activated;// ...il campo "unit<69> di misura" viene abilitato...
else_gest_um=disactivated;// ...altrimenti viene disabilitato
}
switch(_gest_um){
casehidden:// se l'unit<69> di misura deve essere fuori dai piedi...
DESTROY(F_R_LO_UM);// ...il campo viene relativo soppresso
break;
casedisabled:// se l'unit<69> di misura deve essere tra i piedi (ma inutilizzabile)
casedisactivated:
CREATE(F_R_LO_UM);// ...il campo relativo viene rimesso al mondo...
KILL(F_R_LO_UM);// ...ma subito ucciso
break;
caseactivated:// se l'unit<69> di misura deve funzionare...
CREATE(F_R_LO_UM);// ...il campo relativo viene rimesso al mondo...