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
		
			
				
	
	
		
			347 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			347 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //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
 | ||
| 
 |