1995-09-14 13:59:52 +00:00
# include <relapp.h>
# include <config.h>
# include "ve2100.h"
class TTabelle_sconti : public TRelation_application {
TMask * _msk ; // maschera principale
TRelation * _rel ; // relazione principale
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
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 ; }
virtual void init_query_mode ( TMask & ) ; // handler chiamato quando la maschera passa in modo ricerca
public :
TTabelle_sconti ( ) { }
virtual ~ TTabelle_sconti ( ) { }
} ;
bool TTabelle_sconti : : user_create ( ) {
bool gotcha = 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 {
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
}
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
TConfig prassid ( 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 ( int i = 0 ; i < 4 ; i + + ) {
1995-09-15 16:34:56 +00:00
if ( prassid . get ( " SCOKEY " , " ve " , i ) . empty ( ) ) _sci_k_enabled [ i ] = FALSE ; // se nel file di config. il campo non <20> abilitato, viene indicato nel vettore di abilitazione
1995-09-14 13:59:52 +00:00
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 = 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 ;
}
void TTabelle_sconti : : init_query_mode ( TMask & m ) {
for ( int i = 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
}
}
}
int ve2100 ( int argc , char * argv [ ] ) {
TTabelle_sconti a ;
a . run ( argc , argv , " Tabella sconti " ) ;
return 0 ;
}