2018-07-06 16:30:37 +02:00
# include <confapp.h>
# include <automask.h>
# include <sheet.h>
# include <utility.h>
2018-07-17 22:55:15 +02:00
# include <urldefid.h> // ID Bottoni
2018-07-06 16:30:37 +02:00
# include "fp0.h"
# include "fp0100a.h"
# include <tsdb.h>
# include "recset.h"
# include "progind.h"
# include "../ve/velib.h"
2018-07-17 22:55:15 +02:00
# include "fplib01.h"
2018-07-06 16:30:37 +02:00
class TParametri_mask : public TAutomask
{
protected :
void tipi_import ( ) ;
2018-07-17 22:55:15 +02:00
static TMask & get_tmp_msk ( const char * title ) ;
virtual bool on_key ( KEY key ) ;
2018-07-06 16:30:37 +02:00
virtual bool on_field_event ( TOperable_field & o , TField_event e , long jolly ) ;
public :
TParametri_mask ( const char * n ) ;
} ;
TParametri_mask : : TParametri_mask ( const char * n ) : TAutomask ( n )
{
set ( F_INDIRIZZO , ini_get_string ( CONFIG_DITTA , " fp " , " ip " ) ) ;
set ( F_DATABASE , ini_get_string ( CONFIG_DITTA , " fp " , " db " ) ) ;
set ( F_USER , ini_get_string ( CONFIG_DITTA , " fp " , " usr " ) ) ;
set ( F_PASSWORD , decode ( ini_get_string ( CONFIG_DITTA , " fp " , " psw " ) ) ) ;
set ( F_FLDDEST , ini_get_string ( CONFIG_DITTA , " fp " , " flddest " ) ) ;
set ( F_FLDUSRDEST , ini_get_string ( CONFIG_DITTA , " fp " , " fldusrdest " ) ) ;
2018-07-17 22:55:15 +02:00
2018-07-06 16:30:37 +02:00
}
void TParametri_mask : : tipi_import ( )
{
if ( yesno_box ( " Attenzione! Questa procedura riporter<65> su tutti i documenti il tipo documento SDI della configurazione! \n Eventuali modifiche gi<67> fatte verranno sovrascritte, continuare? " ) )
{
TISAM_recordset tipi ( " USE %TIP SELECT S12!='' " ) ;
TProgress_monitor p ( tipi . items ( ) , " Elaborazione tipi doc " ) ;
for ( bool ok = tipi . move_first ( ) ; ok ; ok = tipi . move_next ( ) )
{
if ( ! p . add_status ( ) )
break ;
TISAM_recordset docs ( " USE DOC SELECT TIPODOC==#TIPODOC " ) ;
docs . set_var ( " #TIPODOC " , tipi . get ( " CODTAB " ) ) ;
TString msg = " Elaborazione documenti " ; msg < < tipi . get ( " CODTAB " ) ;
TProgress_monitor d ( docs . items ( ) , msg ) ;
for ( bool ok = docs . move_first ( ) ; ok ; ok = docs . move_next ( ) )
{
if ( ! d . add_status ( ) )
break ;
TDocumento doc ( docs . cursor ( ) - > curr ( ) ) ;
doc . put ( " TIPODOCSDI " , tipi . get ( " S12 " ) . as_string ( ) ) ;
if ( doc . rewrite ( ) ! = NOERR )
fatal_box ( " ERRORE aggiornamento documenti " ) ;
}
}
}
}
2018-07-17 22:55:15 +02:00
TMask & TParametri_mask : : get_tmp_msk ( const char * title )
{
static TMask * m ;
// Cancello la maschera se esiste
delete m ;
m = new TMask ( title , 1 , 30 , 5 ) ;
m - > add_button_tool ( DLG_OK , " ~Conferma " , TOOL_OK ) ;
m - > add_button_tool ( DLG_CANCEL , " Annulla " , TOOL_CANCEL ) ;
return * m ;
}
bool TParametri_mask : : on_key ( KEY key )
{
switch ( key )
{
case K_SHIFT + K_F12 :
{
TMask & m = get_tmp_msk ( " Password " ) ;
m . add_string ( 101 , 0 , " Password " , 1 , 1 , 15 , " * " ) ;
m . field ( 101 ) . check_type ( CHECK_REQUIRED ) ;
while ( m . run ( ) = = K_ENTER )
{
if ( m . get ( 101 ) = = " sirioFATT99 " ) // Hardcode password are the best!
{
for ( int i = F_SETPATCH ; i < = F_REBORNDB ; i + + )
enable ( i ) ;
break ;
}
else
error_box ( " Password errata " ) ;
}
break ;
}
default :
break ;
}
return true ;
}
2018-07-06 16:30:37 +02:00
bool TParametri_mask : : on_field_event ( TOperable_field & o , TField_event e , long jolly )
{
switch ( o . dlg ( ) )
{
case DLG_ELABORA :
if ( e = = fe_button )
tipi_import ( ) ;
2018-07-17 22:55:15 +02:00
break ;
case F_SETPATCH :
{
TMask & m = get_tmp_msk ( " Livello patch " ) ;
m . add_string ( 101 , 0 , " Versione " , 1 , 1 , 5 , " " ) ;
m . field ( 101 ) . check_type ( CHECK_REQUIRED ) ;
if ( m . run ( ) = = K_ENTER )
{
TLocalisamfile tabmod ( LF_TABMOD ) ;
tabmod . put ( " MOD " , " FP " ) ;
tabmod . put ( " COD " , " SQL " ) ;
tabmod . put ( " CODTAB " , " VERSION " ) ;
tabmod . put ( " S0 " , m . get ( 101 ) ) ;
if ( tabmod . write_rewrite ( ) = = NOERR )
message_box ( " Versione impostata! " ) ;
else
error_box ( " Errore durante la scrittura del DB Campo " ) ;
}
break ;
}
case F_ENPTYTABLE :
if ( yesno_box ( " Sei sicuro di voler svuotare tutte le tabelle del database? Questa procedura NON <20> REVERSIBILE " ) )
{
db ( ) . sq_set_exec ( " EXEC sp_MSforeachtable @command1 = 'TRUNCATE TABLE ? ' " ) ;
db ( ) . sq_commit ( ) ;
message_box ( " Procedura terminata " ) ;
}
break ;
case F_DROPTABLE :
if ( yesno_box ( " Sei sicuro di voler cancellare tutte le tabelle del database? Questa procedura NON <20> REVERSIBILE " ) )
{
db ( ) . sq_set_exec ( " EXEC sp_MSforeachtable @command1 = 'DROP TABLE ?' " ) ;
db ( ) . sq_commit ( ) ;
message_box ( " Procedura terminata " ) ;
}
break ;
case F_REBORNDB :
if ( yesno_box ( " Sei sicuro di voler ricreare tutte le tabelle del database? Questa procedura NON <20> REVERSIBILE " ) )
{
db ( ) . sq_set_exec ( " EXEC sp_MSforeachtable @command1 = 'DROP TABLE ?' " ) ;
TLocalisamfile tabmod ( LF_TABMOD ) ;
tabmod . put ( " MOD " , " FP " ) ;
tabmod . put ( " COD " , " SQL " ) ;
tabmod . put ( " CODTAB " , " VERSION " ) ;
tabmod . remove ( ) ;
check_tables ( ) ;
db ( ) . sq_commit ( ) ;
message_box ( " Procedura terminata " ) ;
}
break ;
2018-07-06 16:30:37 +02:00
default :
break ;
}
return true ;
}
class TParametri_ditta : public TSkeleton_application
{
public :
virtual bool create ( ) ;
virtual void main_loop ( ) ;
} ;
bool TParametri_ditta : : create ( )
{
open_files ( LF_DOC , LF_RIGHEDOC , - 1 ) ;
return TSkeleton_application : : create ( ) ;
}
void TParametri_ditta : : main_loop ( )
{
TParametri_mask pm ( " fp0100a " ) ;
while ( pm . run ( ) = = K_ENTER )
{
// Testo prima la connessione
TString
ip = pm . get ( F_INDIRIZZO ) ,
db = pm . get ( F_DATABASE ) ,
ad ,
usr = pm . get ( F_USER ) ,
psw = pm . get ( F_PASSWORD ) ;
ad < < ip < < " @ " < < db ;
SSimple_query s ( ad , usr , psw , TSDB_MSSQL ) ;
if ( s . sq_is_connect ( ) )
{
ini_set_string ( CONFIG_DITTA , " fp " , " ip " , ip ) ;
ini_set_string ( CONFIG_DITTA , " fp " , " db " , db ) ;
ini_set_string ( CONFIG_DITTA , " fp " , " usr " , usr ) ;
ini_set_string ( CONFIG_DITTA , " fp " , " psw " , encode ( psw ) ) ;
ini_set_string ( CONFIG_DITTA , " fp " , " flddest " , pm . get ( F_FLDDEST ) ) ;
ini_set_string ( CONFIG_DITTA , " fp " , " fldusrdest " , pm . get ( F_FLDUSRDEST ) ) ;
message_box ( " Dati salvati correttamente! " ) ;
}
else
error_box ( " Connessione a database non riuscita! " ) ;
}
}
int fp0100 ( int argc , char * argv [ ] )
{
TParametri_ditta appc ;
appc . run ( argc , argv , TR ( " Configurazione FP " ) ) ;
return 0 ;
}