158 lines
6.6 KiB
C++
Executable File
158 lines
6.6 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);
|
|
|
|
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();
|
|
};
|
|
|
|
|