2016-09-09 13:58:28 +00:00
// Programma di gestione agenti
# include <relapp.h>
# include "pr0.h"
# include "pr0500a.h"
# include "agenti.h"
class TGestione_agenti_app : public TRelation_application
{
TMask * _msk ;
TRelation * _rel ;
protected :
virtual bool user_create ( ) ;
virtual bool user_destroy ( ) ;
virtual TMask * get_mask ( int mode ) { return _msk ; }
virtual bool changing_mask ( int mode ) { return FALSE ; }
virtual TRelation * get_relation ( ) const { return _rel ; }
static bool percfat_handler ( TMask_field & f , KEY k ) ;
static bool codcapo_handler ( TMask_field & f , KEY k ) ;
static bool seqalt_handler ( TMask_field & f , KEY k ) ;
static bool codalt_handler ( TMask_field & f , KEY k ) ;
public :
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization ( ) const { return false ; }
2017-01-04 17:58:58 +00:00
TGestione_agenti_app ( ) { } ;
~ TGestione_agenti_app ( ) { } ;
2016-09-09 13:58:28 +00:00
} ;
static inline TGestione_agenti_app & app ( ) { return ( TGestione_agenti_app & ) main_app ( ) ; }
bool TGestione_agenti_app : : percfat_handler ( TMask_field & f , KEY k )
{
if ( f . to_check ( k , TRUE ) )
{
const real p = CENTO - real ( f . get ( ) ) ;
f . mask ( ) . set ( F_PERCPAG , p ) ;
}
return TRUE ;
}
bool TGestione_agenti_app : : codcapo_handler ( TMask_field & f , KEY k )
{
if ( f . to_check ( k ) & & k = = K_ENTER ) // Solo prima che prema il pulsante di registrazione
{
TLocalisamfile agenti ( LF_AGENTI ) ;
TRecfield agente ( agenti . curr ( ) , AGE_CODAGE ) ;
TRecfield capo ( agenti . curr ( ) , AGE_CODCAPO ) ;
const TString & ag = f . mask ( ) . get ( F_CODAGE ) ;
TString ca = f . get ( ) ;
agente = ca ;
while ( agenti . read ( ) = = NOERR )
{
ca = capo ;
if ( ca = = ag )
break ;
if ( ca . empty ( ) )
break ;
agente = ca ;
}
if ( agenti . good ( ) & & ca = = ag )
return f . error_box ( TR ( " Il codice del capozona inserito non <20> valido, in quanto <20> stato rilevato nella catena un codice capozona corrispondente al presente codice agente. " ) ) ;
}
return TRUE ;
}
bool TGestione_agenti_app : : seqalt_handler ( TMask_field & f , KEY k )
{
if ( f . to_check ( k ) & & k = = K_ENTER ) // Solo prima che prema il pulsante di registrazione
{
if ( f . get ( ) = = " A " )
{
TMask & m = f . mask ( ) ;
if ( m . get ( F_SEQRIC1 ) = = " A " | | m . get ( F_SEQRIC2 ) = = " A " | |
m . get ( F_SEQRIC3 ) = = " A " | | m . get ( F_SEQRIC4 ) = = " A " )
return f . error_box ( TR ( " La percentuale definita nell'agente non puo' essere usata nella indicazione "
" di percentuale aggiuntiva se gi<67> utilizzata nella sequenza di ricerca della percentuale di provvigione " ) ) ;
}
}
return TRUE ;
}
bool TGestione_agenti_app : : codalt_handler ( TMask_field & f , KEY k )
{
if ( f . to_check ( k ) & & k = = K_ENTER ) // Solo prima che prema il pulsante di registrazione
{
const TString & cod = f . get ( ) ;
if ( cod . not_empty ( ) )
{
const TMask & m = f . mask ( ) ;
if ( m . get ( F_CODRICPR1 ) = = cod | | m . get ( F_CODRICPR2 ) = = cod | |
m . get ( F_CODRICPR3 ) = = cod | | m . get ( F_CODRICPR4 ) = = cod )
return f . error_box ( FR ( " L'archivio provvigioni %s definito nella indicazione di percentuale aggiuntiva non puo' essere utilizzato "
" se gi<67> impostato nella sequenza di ricerca della percentuale di provvigione " ) , ( const char * ) cod ) ;
}
}
return TRUE ;
}
bool TGestione_agenti_app : : user_create ( )
{
open_files ( LF_AGENTI , LF_PROVV , LF_PERCPROV , 0 ) ;
_msk = new TMask ( " pr0500a " ) ;
_rel = new TRelation ( LF_AGENTI ) ;
_msk - > set_handler ( F_CODCAPO , codcapo_handler ) ;
_msk - > set_handler ( F_SEQALT1 , seqalt_handler ) ;
_msk - > set_handler ( F_SEQALT2 , seqalt_handler ) ;
_msk - > set_handler ( F_SEQALT3 , seqalt_handler ) ;
_msk - > set_handler ( F_SEQALT4 , seqalt_handler ) ;
_msk - > set_handler ( F_CODALTPR1 , codalt_handler ) ;
_msk - > set_handler ( F_CODALTPR2 , codalt_handler ) ;
_msk - > set_handler ( F_CODALTPR3 , codalt_handler ) ;
_msk - > set_handler ( F_CODALTPR4 , codalt_handler ) ;
_msk - > set_handler ( F_PERCFATT , percfat_handler ) ;
return TRUE ;
}
bool TGestione_agenti_app : : user_destroy ( )
{
delete _msk ;
delete _rel ;
return TRUE ;
}
int pr0500 ( int argc , char * * argv )
{
TGestione_agenti_app a ;
a . run ( argc , argv , TR ( " Gestione agenti " ) ) ;
return 0 ;
}