campo-sirio/cg/cglib04.h
nik 9241f8a5fa Correzioni agli invii e ricezioni
git-svn-id: svn://10.65.10.50/trunk@1421 c028cbd2-c16b-5b4b-a496-9718f37d4682
1995-05-31 16:00:32 +00:00

159 lines
6.7 KiB
C++
Executable File

// 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);
int flag_bis (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);
bool open (const char* path, bool create=FALSE);
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();
};