campo-sirio/ab/ab2100.h
sauro 22557d5d80 Per il modulo ab1 (stampe) sono state commentate delle righe di codice che non
servivano.
Le maschere sono state modificate solo dal punto di vista estetico.
Il modulo ab2 (invio e ricezione) è stato completato: esegue ricezioni da as400 e
interne, ed esegue invii ad as400 (tranne la parte di analisi) e invii interni.
Il file ab2100a.ini è il file di configurazione per as400
Il file ab2100b.ini è il file di configurazione per l'interno


git-svn-id: svn://10.65.10.50/trunk@6073 c028cbd2-c16b-5b4b-a496-9718f37d4682
1998-01-30 16:32:36 +00:00

347 lines
9.7 KiB
C++
Executable File
Raw Blame History

//AB2100.H: Classe principale e definizione di costanti
#ifndef _AB2100_H
#ifndef __FILETEXT_H
#include <filetext.h>
#endif // __FILETEXT_H
#ifndef __APPLICAT_H
#include <applicat.h> //Definizione della classe TApplication
#endif //__APPLICAT_H
#ifndef __MASK_H
#include <mask.h> //Definizione della maschera
#endif //__MASK_H
#ifndef __URLDEFID_H
#include <urldefid.h> //Definizione di BAR_ITEM(1)
#endif //__URLDEFID_H
#define ID_NULLO 0
//Costanti di definizione dei tipi record
#define MOVIMENTO1 "MOVI1"
#define MOVIMENTO2 "MOVI2"
#define MOVIMENTO3 "MOVI3"
#define MOVIMENTO4 "MOVI4"
#define MOVIMENTO5 "MOVI5"
#define TIPO_TABELLA_PERIODI "TBBBD"
#define SIGLA_TABELLA_PERIODI "BB"
#define TIPO_SRELAZ "STABI"
#define TIPO_VOCI "ATAB2"
#define TIPO_VOCI "ATAB2"
//Costanti di posizionamento nel record_text
#define SIGLA_TAB_PER 1
//Costanti di posizionamento nel record_text dei MOVIMENTI e DETTAGLI
#define CODICE_DITTA_MOVDETT 1
#define ANNO_BILANCIO_MOVDETT 2
#define CODICE_PERIODO_MOVDETT 3
#define CODICE_TABELLA_MOVDETT 4
#define CONTO_COGE_MOVDETT 5
#define PROGRESSIVO_DETT_MOVDETT 6
#define NUMERO_REG_MOVDETT 8
#define NUMERO_RIGA_MOVDETT 9
#define SALDO_INIZIO_ANNO_MOVDETT 13
#define PROGRESSIVO_DARE_MOVDETT 14
#define PROGRESSIVO_AVERE_MOVDETT 15
#define RICLASSIFICAZIONE_DARE_MOVDETT 16
#define RICLASSIFICAZIONE_AVERE_MOVDETT 17
#define FLAG_DA_MOVDETT 17
#define IMPORTO_MOVDETT 19
#define FLAG_RICLASSIFICAZIONE_MOVDETT 21
#define SALDO_INIZIO_ANNO_SLD_MOVDETT 9
#define PROGRESSIVO_DARE_SLD_MOVDETT 10
#define PROGRESSIVO_AVERE_SLD_MOVDETT 11
#define RICLASSIFICAZIONE_DARE_SLD_MOVDETT 12
#define RICLASSIFICAZIONE_AVERE_SLD_MOVDETT 13
//Costanti di posizionamento nel record_text per VOCI
#define TIPO_VOCE_VOCI 6
#define NCA_VOCI 4
#define CODVC_VOCI 1
#define CODCOMP_ANA_VOCI 2
#define DESCR1_VOCI 5
#define DESCR2_VOCI 43
#define VOCI_INCIDENZA 41
//Costanti di posizionamento nel record_text per SOTTORELAZIONI
#define CODAN_SOTTOREL 1
#define CODVC_SOTTOREL 2
#define NCOMP_SOTTOREL 3
#define NSREL_SOTTOREL 5
//Costanti tipi di ricesione
#define RICEZIONE_INTERNA 1
#define RICEZIONE_AS400 2
#define RICEZIONE_USER_DEFINED 3
//Definizione dei flag
#define FLAG_COGE '1'
#define FLAG_DETT '2'
#define FLAG_MOVIMENTO '3' // cos<6F> i movs sono alla fine
#define FLAG_INDICE "I"
#define FLAG_SOTTOD "S"
#define FLAG_COMPOSTA "C"
#define FLAG_ANALISI "A"
#define FLAG_VOCI "V"
#define FLAG_COGE_CG "CG"
#define FLAG_DETT_DT "DT"
#define FLAG_CLIENTE_CL "CL"
#define FLAG_FORNITORE_FO "FO"
#define FLAG_MOVIMENTO_MO "MO" // cos<6F> i movs sono alla fine
//Definizioni di constanti per il record di testata
#define RECORD_TESTA "1"
#define ABILITATO "X"
#define AB_PIANO_CONTI 2
#define AB_PERIODI_BIL 3
#define AB_ANALISI 4
#define AB_SALDI 8
#define AB_DETT 9
#define AB_MOV 10
class TAlbero_record : public TAssoc_array
{
static TToken_string wrk_string;
public:
void dept_first(TToken_string key, TRectype * padre, TRectype * prec, int &curr_id, TString_array & allkeys, TToken_string ** prog_key);
TToken_string& cerca_fratello (TToken_string &key, TString_array& allkeys, TToken_string ** next_key);
TToken_string& cerca_figlio (TToken_string &key, TString_array& allkeys, TToken_string ** next_key);
TAlbero_record() {}
virtual ~TAlbero_record(){}
};
class TFile_text_AS400: public TFile_text
{
TString16 _tipo_bilancio;
TAssoc_array _last_id;
// static long _idcaradd;
long _idncomp;
//long _idcoldich;
TString _codvc_prec;
inline const TString & get_tipo_bil() const {return _tipo_bilancio;}
protected:
// virtual void preformat_field(TRelation& rel,const TFieldref&field,const TRecord_text& rec,TString &str);
virtual void preformat_field(const TFieldref&field,TString &str,TRelation& rel,const TString &tipo_tr);
void cambia_anno(TString& str);
void cambia_data(TString& str);
virtual bool pre_writerel(TRelation& rel,const TRecord_text& rec);
void scrivi_temp_link(TRelation& rel,const TRecord_text& rec);
void aggiorna_rel_link(TLocalisamfile &relvoc);
public:
void set_tipo_bilancio(const TString & tipo_bil) {_tipo_bilancio = tipo_bil;}
TFile_text_AS400(const char* file_name, const char* set_config_name);
virtual ~TFile_text_AS400() {}
};
class TObject_reception:public TObject
{
protected:
TFile_text* _trasfile; //File di testo da cui ricevere
public:
TFile_text * trans_file() {return _trasfile;}
virtual void ricevi(TMask &);
TObject_reception() {_trasfile = NULL;}
TObject_reception(const TFilename &percorso) ;
virtual ~TObject_reception() {}
};
//Classe derivata per la ricezione
class TRicezione_AS400 : public TObject_reception
{
private:
void build_balancetree(int);
void build_ana_tree(long&, TRectype&, TRectype*, TRectype*, TAssoc_array&);
void build_relana(TString&, const TMask&, const TFilename&);
void naviga_array(TAlbero_record &a);
void scrivi_array(TAssoc_array &s_rec, int);
protected:
TFile_text_AS400 *trasfile() {return (TFile_text_AS400 *)_trasfile;}
virtual void leggi_temp_link(TRectype& cur_rec,TToken_string& k);
//Questa funzione <20> da usare solo in fase di debug
//void print_ana_tree(int & level, TRectype&,FILE * stream);
public:
virtual void ricevi(TMask &);
TRicezione_AS400(const TFilename &percorso);
virtual ~TRicezione_AS400() {}
};
//Classe derivata per la ricezione
class TRicezione_userdef : public TObject_reception
{
public:
//virtual void ricevi(TMask &);
TRicezione_userdef(const TString & config, const TFilename &percorso) ;
virtual ~TRicezione_userdef() {}
};
//classe derivata nella quale viene gestita la funzione di trasferimento
//class TTrasfer: public TApplication
class TTrasfer: public TSkeleton_application
{
// private:
// TArray _files;
protected:
// TFile_text* _trasfile; //File di testo
// virtual bool menu(MENU_TAG) pure; //Gli dico che non <20> implementata in questa classe, ma obbligatoriamente in un'altra
virtual void main_loop() pure; //Gli dico che non <20> implementata in questa classe, ma obbligatoriamente in un'altra
//Controlla che il percorso e il file specificati esistono
static bool inseriscipercorso(TMask_field& f, KEY k);
public:
TTrasfer() {}
virtual ~TTrasfer() {}
};
class TRicezione:public TTrasfer
{
private:
TArray _files;
TObject_reception *_rice;
protected:
// virtual bool create();
// virtual bool destroy();
// virtual bool menu(MENU_TAG);
virtual void main_loop();
public:
//Seleziona da quale file prelevare le informazioni del tracciato record
// void set_config_name(TString&,TMask&);
TObject_reception *set_transfer(int tipo_ricezione ,const TFilename & percorso_temp, const TString & config_file_temp);
TObject_reception *transfer() {return _rice;}
TFile_text * trans_file() {return _rice->trans_file();}
TRicezione() {_rice=NULL;}
virtual ~TRicezione() {}
};
class TObject_send:public TObject
{
protected:
TFile_text* _trasfile; //File di testo da cui ricevere
public:
TFile_text * trans_file() {return _trasfile;}
virtual void converti(int);
virtual void converti(int main_file,const char * tabname);
TObject_send() {_trasfile = NULL;}
TObject_send(const TFilename &percorso);
virtual ~TObject_send() { delete _trasfile;}
};
//Classe derivata per il trasferimento
class TInvio:public TTrasfer
{
TObject_send *_invio;
protected:
//virtual bool menu(MENU_TAG);
virtual void main_loop();
static bool inseriscipercorso(TMask_field& f, KEY k);
public:
TInvio() {}
virtual ~TInvio() {}
};
class TInvio_AS400:public TObject_send
{
protected:
void trasferisci_albero(TRectype &,TRecord_text&, TAssoc_array&);
bool cerca_padre(TLocalisamfile &, TRectype &);
long my_num(TLocalisamfile&, TAssoc_array&);
bool mov_da_scrivere(TRectype &);
void formatta(TRecord_text&,TRectype&,int&);
public:
virtual void converti(int);
TInvio_AS400(const TFilename &percorso);
virtual ~TInvio_AS400() {}
};
class TInvio_user_defined:public TObject_send
{
public:
// virtual void converti(int) {} //DA definire
TInvio_user_defined(const TString & config, const TFilename &percorso);
virtual ~TInvio_user_defined() {}
};
// **********************
// da spostare in ablib01
class TAdditional_car: public TRectype
{
protected:
virtual void put_str(const char* fieldname, const char* val);
public:
bool same_as(real id);
TAdditional_car();
virtual ~TAdditional_car() {}
};
/***************************/
class TAdditional_cars: public TLocalisamfile
{
long _lastid; // usato in caso di lock
public:
long lastid();
TAdditional_car & current()
{return (TAdditional_car & )(TLocalisamfile::curr());}
virtual int write();
//int write();
TAdditional_cars(TFilelock lockmode=_manulock);
virtual ~TAdditional_cars() {}
};
class TAdditional_col: public TRectype
{
public:
TAdditional_col();
virtual ~TAdditional_col() {}
};
class TAdditional_cols: public TLocalisamfile
{
static long _lastid;
public:
//long lastid();
virtual int write();
TAdditional_cols();
virtual ~TAdditional_cols() {}
};
#endif //_AB2100_H