1997-08-27 09:18:41 +00:00
// Programma di gestione agenti
# include <relapp.h>
# include "pr0.h"
# include "pr0500a.h"
2003-05-15 12:27:42 +00:00
# include "agenti.h"
1997-08-27 09:18:41 +00:00
class TGestione_agenti_app : public TRelation_application
{
TMask * _msk ;
TRelation * _rel ;
protected :
virtual bool user_create ( ) ;
virtual bool user_destroy ( ) ;
2003-05-15 12:27:42 +00:00
virtual TMask * get_mask ( int mode ) { return _msk ; }
virtual bool changing_mask ( int mode ) { return FALSE ; }
virtual TRelation * get_relation ( ) const { return _rel ; }
1997-08-27 09:18:41 +00:00
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 :
1998-01-23 09:57:34 +00:00
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization ( ) const
{ return FALSE ; }
1997-08-27 09:18:41 +00:00
TGestione_agenti_app ( ) { } ;
~ TGestione_agenti_app ( ) { } ;
} ;
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 ) )
{
2003-05-15 12:27:42 +00:00
const real p = CENTO - real ( f . get ( ) ) ;
1997-08-27 09:18:41 +00:00
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
{
2004-05-19 13:47:43 +00:00
TLocalisamfile agenti ( LF_AGENTI ) ;
TRecfield agente ( agenti . curr ( ) , AGE_CODAGE ) ;
TRecfield capo ( agenti . curr ( ) , AGE_CODCAPO ) ;
2003-05-15 12:27:42 +00:00
const TString & ag = f . mask ( ) . get ( F_CODAGE ) ;
TString ca = f . get ( ) ;
1997-08-27 09:18:41 +00:00
agente = ca ;
2004-05-19 13:47:43 +00:00
while ( agenti . read ( ) = = NOERR )
1997-08-27 09:18:41 +00:00
{
ca = capo ;
if ( ca = = ag )
break ;
if ( ca . empty ( ) )
break ;
agente = ca ;
}
2004-05-19 13:47:43 +00:00
if ( agenti . good ( ) & & ca = = ag )
2003-05-15 12:27:42 +00:00
return f . error_box ( TR ( " Il codice del capozona inserito non e' valido, in quanto e' stato rilevato nella catena un codice capozona corrispondente al presente codice agente. " ) ) ;
1997-08-27 09:18:41 +00:00
}
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 " )
2003-05-15 12:27:42 +00:00
return f . error_box ( TR ( " La percentuale definita nell'agente non puo' essere usata nella indicazione "
" di percentuale aggiuntiva se gia' utilizzata nella sequenza di ricerca della percentuale di provvigione " ) ) ;
1997-08-27 09:18:41 +00:00
}
}
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
{
TString16 cod = f . get ( ) ;
if ( cod . not_empty ( ) )
{
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 )
2003-05-15 12:27:42 +00:00
return f . error_box ( FR ( " L'archivio provvigioni %s definito nella indicazione di percentuale aggiuntiva non puo' essere utilizzato "
" se gia' impostato nella sequenza di ricerca della percentuale di provvigione " ) , ( const char * ) cod ) ;
1997-08-27 09:18:41 +00:00
}
}
return TRUE ;
}
bool TGestione_agenti_app : : user_create ( )
{
2004-05-19 13:47:43 +00:00
open_files ( LF_AGENTI , LF_PROVV , LF_PERCPROV , 0 ) ;
1997-08-27 09:18:41 +00:00
_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 ;
2003-05-15 12:27:42 +00:00
a . run ( argc , argv , TR ( " Gestione agenti " ) ) ;
1997-08-27 09:18:41 +00:00
return 0 ;
}