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"
2019-01-02 14:48:09 +01:00
# include "fplib.h"
2018-07-06 16:30:37 +02:00
class TParametri_mask : public TAutomask
{
2018-07-25 15:53:29 +02:00
private :
void load_all ( ) ;
2018-07-06 16:30:37 +02:00
protected :
2018-10-08 11:45:08 +02:00
void tipi_import ( ) const ;
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 ) ;
2018-07-25 15:53:29 +02:00
void save_all ( ) const ;
2018-07-06 16:30:37 +02:00
} ;
TParametri_mask : : TParametri_mask ( const char * n ) : TAutomask ( n )
2018-07-25 15:53:29 +02:00
{
load_all ( ) ;
}
void TParametri_mask : : save_all ( ) const
{
2019-01-02 14:48:09 +01:00
fp_settings ( ) . set_db_indirizzo ( get ( F_INDIRIZZO ) ) ;
fp_settings ( ) . set_db_database ( get ( F_DATABASE ) ) ;
fp_settings ( ) . set_db_user ( get ( F_USER ) ) ;
fp_settings ( ) . set_db_password ( get ( F_PASSWORD ) ) ;
fp_settings ( ) . set_fld_dest ( get ( F_FLDDEST ) ) ;
fp_settings ( ) . set_fld_dest_usr ( get ( F_FLDUSRDEST ) ) ;
fp_settings ( ) . set_cofi_tras ( get ( F_COFI ) ) ;
fp_settings ( ) . set_gest_alleg ( get_bool ( F_ESPORTAALLEG ) ) ;
fp_settings ( ) . set_allega_fat ( get_bool ( F_ESPORTADOC ) ) ;
2019-01-07 18:00:02 +01:00
fp_settings ( ) . set_f8 ( get_bool ( F_F8 ) ) ;
2019-02-21 17:44:31 +01:00
fp_settings ( ) . set_check_not_block ( get_bool ( F_CHECK_NOT_BLOCK ) ) ;
2019-03-15 10:30:02 +01:00
fp_settings ( ) . set_no_sconti_fatt ( get_bool ( F_CHECK_NO_SCONTI ) ) ;
2019-02-15 11:38:50 +01:00
TFP_righe_custom ( ) . save_sheet ( sfield ( F_FORMPERS ) ) ;
2018-07-25 15:53:29 +02:00
}
void TParametri_mask : : load_all ( )
2018-07-06 16:30:37 +02:00
{
2019-01-02 14:48:09 +01:00
set ( F_INDIRIZZO , fp_settings ( ) . get_db_indirizzo ( ) ) ;
set ( F_DATABASE , fp_settings ( ) . get_db_database ( ) ) ;
set ( F_USER , fp_settings ( ) . get_db_user ( ) ) ;
set ( F_PASSWORD , fp_settings ( ) . get_db_password ( ) ) ;
set ( F_FLDDEST , fp_settings ( ) . get_fld_dest ( ) ) ;
set ( F_FLDUSRDEST , fp_settings ( ) . get_fld_dest_usr ( ) ) ;
set ( F_COFI , fp_settings ( ) . get_cofi_tras ( ) ) ;
set ( F_ESPORTAALLEG , fp_settings ( ) . get_gest_alleg ( ) ) ;
set ( F_ESPORTADOC , fp_settings ( ) . get_allega_fat ( ) ) ;
2019-01-07 18:00:02 +01:00
set ( F_F8 , fp_settings ( ) . is_f8 ( ) ) ;
2019-02-21 17:44:31 +01:00
set ( F_CHECK_NOT_BLOCK , fp_settings ( ) . get_check_not_block ( ) ) ;
2019-03-15 10:30:02 +01:00
set ( F_CHECK_NO_SCONTI , fp_settings ( ) . get_no_sconti_fatt ( ) ) ;
2019-02-15 11:38:50 +01:00
TFP_righe_custom ( ) . load_sheet ( sfield ( F_FORMPERS ) ) ;
2018-07-06 16:30:37 +02:00
}
2018-10-08 11:45:08 +02:00
void TParametri_mask : : tipi_import ( ) const
2018-07-06 16:30:37 +02:00
{
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 )
{
2018-10-04 18:10:17 +02:00
if ( m . get ( 101 ) = = " sirioFATT99 " ) // Hardcoded password are the best!
2018-07-17 22:55:15 +02:00
{
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 :
{
2018-07-19 09:33:30 +02:00
if ( e = = fe_button )
2018-07-17 22:55:15 +02:00
{
2018-07-19 09:33:30 +02:00
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 " ) ;
}
2018-07-17 22:55:15 +02:00
}
break ;
}
case F_ENPTYTABLE :
2018-07-19 09:33:30 +02:00
if ( e = = fe_button )
2018-07-17 22:55:15 +02:00
{
2018-07-19 09:33:30 +02:00
if ( yesno_box ( " Sei sicuro di voler svuotare tutte le tabelle del database? Questa procedura NON <20> REVERSIBILE " ) )
{
2018-10-08 11:45:08 +02:00
fp_db ( ) . sq_set_exec ( " EXEC sp_MSforeachtable @command1 = 'TRUNCATE TABLE ? ' " ) ;
fp_db ( ) . sq_commit ( ) ;
2018-07-19 09:33:30 +02:00
message_box ( " Procedura terminata " ) ;
}
2018-07-17 22:55:15 +02:00
}
break ;
case F_DROPTABLE :
2018-07-19 09:33:30 +02:00
if ( e = = fe_button )
2018-07-17 22:55:15 +02:00
{
2018-07-19 09:33:30 +02:00
if ( yesno_box ( " Sei sicuro di voler cancellare tutte le tabelle del database? Questa procedura NON <20> REVERSIBILE " ) )
{
2018-10-08 11:45:08 +02:00
fp_db ( ) . sq_set_exec ( " EXEC sp_MSforeachtable @command1 = 'DROP TABLE ?' " ) ;
fp_db ( ) . sq_commit ( ) ;
2018-07-19 09:33:30 +02:00
message_box ( " Procedura terminata " ) ;
}
2018-07-17 22:55:15 +02:00
}
break ;
case F_REBORNDB :
2018-07-19 09:33:30 +02:00
if ( e = = fe_button )
2018-07-17 22:55:15 +02:00
{
2018-07-19 09:33:30 +02:00
if ( yesno_box ( " Sei sicuro di voler ricreare tutte le tabelle del database? Questa procedura NON <20> REVERSIBILE " ) )
{
2018-10-08 11:45:08 +02:00
fp_db ( ) . sq_set_exec ( " EXEC sp_MSforeachtable @command1 = 'DROP TABLE ?' " ) ;
2018-07-19 09:33:30 +02:00
TLocalisamfile tabmod ( LF_TABMOD ) ;
tabmod . put ( " MOD " , " FP " ) ;
tabmod . put ( " COD " , " SQL " ) ;
tabmod . put ( " CODTAB " , " VERSION " ) ;
tabmod . remove ( ) ;
check_tables ( ) ;
2018-10-08 11:45:08 +02:00
fp_db ( ) . sq_commit ( ) ;
2018-07-19 09:33:30 +02:00
message_box ( " Procedura terminata " ) ;
}
2018-07-17 22:55:15 +02:00
}
break ;
2018-07-31 16:53:37 +02:00
case F_ESPORTAALLEG :
{
const bool esporta = get_bool ( F_ESPORTAALLEG ) ;
field ( F_FLDDEST ) . check_type ( esporta ? CHECK_REQUIRED : CHECK_NONE ) ;
field ( F_FLDUSRDEST ) . check_type ( esporta ? CHECK_REQUIRED : CHECK_NONE ) ;
field ( F_ESPORTADOC ) . enable ( esporta ) ;
if ( e = = fe_modify & & ! esporta )
{
set ( F_FLDDEST , " " ) ;
set ( F_FLDUSRDEST , " " ) ;
set ( F_ESPORTADOC , " " ) ;
}
}
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 ( ) )
{
2018-07-25 15:53:29 +02:00
pm . save_all ( ) ;
2018-07-06 16:30:37 +02:00
message_box ( " Dati salvati correttamente! " ) ;
2018-12-27 10:36:13 +01:00
s . sq_disconnect ( ) ;
2018-07-06 16:30:37 +02:00
}
else
2018-12-27 10:36:13 +01:00
{
TString msg = " Connessione a database non riuscita! \n " ;
msg < < s . sq_get_string_error ( ) ;
error_box ( msg ) ;
}
2018-07-06 16:30:37 +02:00
}
}
int fp0100 ( int argc , char * argv [ ] )
{
TParametri_ditta appc ;
appc . run ( argc , argv , TR ( " Configurazione FP " ) ) ;
return 0 ;
}