//AB2100.H: Classe principale e definizione di costanti #ifndef _AB2100_H #ifndef __FILETEXT_H #include #endif // __FILETEXT_H #ifndef __APPLICAT_H #include //Definizione della classe TApplication #endif //__APPLICAT_H #ifndef __MASK_H #include //Definizione della maschera #endif //__MASK_H #ifndef __URLDEFID_H #include //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ė 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ė 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 č 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 č implementata in questa classe, ma obbligatoriamente in un'altra virtual void main_loop() pure; //Gli dico che non č 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