1995-03-24 11:22:13 +00:00
// cglib04.h
# include <applicat.h>
# include <config.h>
# include <prefix.h>
# include <isam.h>
# include <stdio.h>
# include <array.h>
# include <assoc.h>
# include <strings.h>
# include <scanner.h>
# include <tabutil.h>
# include <mov.h>
# include <rmov.h>
# include <rmoviva.h>
# define TEMP_MOV "tmov"
# define TEMP_RMOV "trmov"
# define TEMP_RMOVIVA "triva"
# define SIZE 256
// Tracciato del record di controllo
HIDDEN int pos [ 15 ] = { 0 , 15 , 25 , 29 , 32 , 38 , 47 , 234 , 235 , 236 , 237 , 238 , 239 , 240 , 241 } ;
const char * converti ( TString & data ) ;
int fremove ( const char * path ) ;
bool look_causale ( const char * codcaus ) ;
bool format_if_zero ( TString & , int ) ;
class TMappa_trc : public TAssoc_array
{
public :
void leggi_modulo ( ) ;
int from ( const char * key ) ;
int to ( const char * key ) ;
int logicnum ( const char * key ) ;
const char * field_name ( const char * key ) ;
int flag ( const char * key ) ;
TMappa_trc ( ) { } ;
} ;
class TTransfer_file
{
FILE * _trasfer ;
TArray _index ;
// TAssoc_array _fis_index;
TMappa_trc _trc ;
TString _curfile ;
TString256 _control_rec ; // Buffer per il record di controllo
TString256 _record ; // Buffer per il record corrente
long _curpos ;
long _tot_rec ; // Numero totale di record nel transfer
int _nultras ; // Numero ultimo trasferimento
int _last_tab , _last_mov ;
TString16 _dataultras ;
TString16 _sigle_file ;
TString _nrec_file ;
TString _ult_file ;
TString _key ;
private :
// Inizializza l'indice leggendo il record di controllo
void fill_index ( TString & , TString & ) ;
// Funzioni utilizzate da fcopytemp()
void scrivi_nprog_testata ( long numreg , long nprog_iva , TIsamtempfile & mov ) ;
void look_mov ( long nr , const char * data74 , long cf , TIsamtempfile & mov ) ;
void write_tmp_mov ( TIsamtempfile & mov , TIsamtempfile & rmov ,
const TString & rec , const int nprog_mov ) ;
int dataes ( const TDate & , int * , TDate & ) ;
void write_tmp_rmoviva ( TIsamtempfile & rmov_iva , TIsamtempfile & mov ,
const TString & rec , const int nprog_iva ) ;
/////////////////////////////////////////////////////////////////////////////
public :
const char * path ( long codditta = 0 ) ;
1995-04-18 13:40:57 +00:00
bool open ( const char * path , bool create = FALSE ) ;
1995-03-24 11:22:13 +00:00
void close ( ) ;
bool exist ( ) const { return _trasfer ! = NULL ; }
long get_pos ( const char * key ) ;
// Funzioni che agiscono sul record di controllo del file trasfer.
bool read_control_rec ( ) ; // Legge il record
bool write_control_rec ( const char * str , const int size ) ; // Scrive una stringa di lunghezza size
int nultras ( ) const { return _nultras ; } // Ritorna il numero ultimo trasferimento
const char * dataultras ( ) const { return ( const char * ) _dataultras ; } // Ritorna la data ultimo trasferimento
const char * sigle_file ( ) const { return ( const char * ) _sigle_file ; } // Ritorna una stringa contenente le sigle dei file da ricevere
const char * nrec_file ( ) const { return ( const char * ) _nrec_file ; } // Ritorna una stringa con il numero totale di record corrispondenti ad ogni sigla dei file da ricevere
char flg_agg ( ) ; // Ritorna i flag tipo aggiornamento relativi alle tabelle
bool numprot_att ( ) ; // Ritorna il flag riattribuzione numero protocollo su fatture attive
bool numprot_pas ( ) ; // Ritorna il flag riattribuzione numero protocollo su fatture passive
char flg_agg_IV ( ) ; // Ritorna il flag tipo aggiornamento classi piano dei conti
const char * ult_file ( ) const { return ( const char * ) _ult_file ; } // Ritorna l'ultima sigla file elaborato
const char * key ( ) const { return ( const char * ) _key ; } // Ritorna la chiave ultimo record elaborato
const char * record ( ) const { return ( const char * ) _control_rec ; } // Ritorna il record di controllo del trasfer
// Funzioni per il posizionamento e la gestione dei record del trasfer (escluso il record di controllo)
// Legge il record del trasfer specificato da numrec
int read_rec_trasfer ( long numrec , int size = 256 ) ;
const char * read_rec ( ) const { return ( const char * ) _record ; } // Ritorna un record del trasfer
// Scrive una stringa di lunghezza size nel campo specificato da fieldnum
void writeat ( const char * str , int size , int fieldnum , const char * file ) ;
void writeat ( const char * str , int size , int fieldnum ,
const char * file , const long numrec ) ;
int write ( long numrec , int size = SIZE ) ;
// Permette di posizionarsi all'interno del record sul campo specificato
// da fieldnum sfruttando la Mappa precaricata
int go2field ( int fieldnum , const char * file = NULL ,
const long nrec = - 1L , bool seek = TRUE ) ;
void go2rec ( const long numrec ) ;
void readat ( long recnum ) ; // Si posiziona all'inizio del record specificato da numrec sfruttando l'array indice
void put ( const char * val , const char * file , int fieldnum , long recnum = - 1L ) ;
int controllo_ripartenza ( ) ;
// Funzioni per la gestione dell'array indice
int last_tab ( ) const { return _last_tab ; } // Ritorna la posizione dell'ultima sigla relativa alle tabelle presente nella schiera delle sigle file
int last_mov ( ) const { return _last_mov ; } // Ritorna la posizione dell'ultima sigla relativa ai movimenti presente nella schiera delle sigle file
int num ( char sigla ) ;
const char * name ( int i ) ; // Ritorna la sigla di quel file
long nrec ( int i ) ; // Ritorna il numero di record di quel file
int lenrec ( int i ) ; // Ritorna la lunghezza del record del trasfer corrispondente a quel file
int lenrec ( char sigla ) ; // Ritorna la stessa cosa ma con la sigla invece del numero
long start ( int i ) ; // Inizio del file numero i
long start ( char sigla ) ; // Inizio del file sigla
long end ( int i ) ; // Ritorna la posizione in byte corrispondente alla fine di quel file all'interno del trasfer
long rec ( int i ) ;
long tot_rec ( ) const { return _tot_rec ; }
void annulla_classi ( int g , int c , bool conto ) ;
// Copia il file trasfer creando tre isam_temp_file per i mov. di prima nota
bool fcopytemp ( const char * , const char * , bool ) ;
TMappa_trc & mappa ( ) { return _trc ; }
TTransfer_file ( ) ;
~ TTransfer_file ( ) ;
} ;