118 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| // Dichiarazione della classe generale.
 | |
| 
 | |
| #ifndef _TELABORAZIONI_DECL
 | |
| #define _TELABORAZIONI_DECL
 | |
| 
 | |
| #include <applicat.h>
 | |
| #include <relation.h>
 | |
| #include <recarray.h>
 | |
| #include <sheet.h>
 | |
| 
 | |
| #include "ve6retv.h"
 | |
| #include "ve6gen.h"
 | |
| 
 | |
| #define _TDD_IN_FILTER
 | |
| 
 | |
| #define STATO_PPT '*'
 | |
| #define SET_PROCESSED TRUE
 | |
| #define DONT_SET_PROCESSED FALSE
 | |
| 
 | |
| class TElaborazioni : public TApplication
 | |
| {
 | |
| protected:
 | |
|   // i data members sono protected in modo che gli oggetti generatori
 | |
|   // possano accedervi senza la necessità di funzioni specifiche
 | |
|   TString16 _codnum;            // (stringa di 4)
 | |
|   TString16 _anno;              // int _anno;
 | |
|   TString16 _provv;             // char _provv;
 | |
|   TString16 _ndoc;              // int _ndoc;
 | |
|   bool _crea_doc;               // deve creare il documento di destinazione ?
 | |
|   int _ordinamento;             // indica il tipo di ordinamento
 | |
|   bool _raggruppa;              // indica se si deve raggruppare o no
 | |
|   bool _per_articolo;           // indica se raggruppare le righe per codice articolo o no
 | |
|   int _chiave;                  // chiave di doc usata per selezionare i doc. originali
 | |
|   TBit_array _processed;        // array in cui è indicato se un documento di _chiavi è stato processato o no
 | |
|   TString _tipo_doc_org;        // tipo documento originale
 | |
|   TString _tipo_doc_des;        // tipo documento finale
 | |
|   TString80 _stati_validi_doc_i;// lista stati documenti originali prima dell'elaborazione
 | |
|   TString _stato_f_doc_i;       // dopo l'elaborazione
 | |
|   TString _stato_f_doc_f;       // stato documento finale al termine dell'operazione
 | |
| //  TString _codnum;              // codice per la numerazione del documento di destinazione
 | |
|   bool _sosp_imposta;           // T/F sospensione imposta
 | |
|   bool _cod_sconto;             // T/F codice sconto
 | |
|   bool _stesso_anno;            // T/F STESSOANNOFISCALE in [RAGGR.] del .ini del doc pilota
 | |
|   TDate _datadoc;               // data dei documenti che si vanno a creare
 | |
| 
 | |
|   bool errore_fatale(int);              // ritorna true se l'errore passato come argomento è nella lista degli errori fatali
 | |
| public:
 | |
|   TElaborazioni() : _provv(1) { _chiave = 2; }
 | |
|   ~TElaborazioni () {}
 | |
| };
 | |
| 
 | |
| // TCursor_sheet con la on_key() customizzata per l'inserimento del campo QTAEVASA nelle righe
 | |
| class TInterattivo_sheet : public TCursor_sheet
 | |
| {
 | |
| protected:
 | |
|    virtual bool on_key(KEY);
 | |
| 
 | |
|   // modificata per fare apparire anche le qta' da evadere
 | |
|   virtual void get_row(long n, TToken_string& l); 
 | |
| 
 | |
| public:
 | |
|   TInterattivo_sheet(TCursor* cursor, const char* fields, const char* title, const char* head, byte buttons = 0)
 | |
|      : TCursor_sheet(cursor, fields, title, head, buttons) { }
 | |
|   virtual ~TInterattivo_sheet() { }
 | |
| };
 | |
| 
 | |
| class TBatch_crea_doc : public TElaborazioni
 | |
| {
 | |
| protected:
 | |
|   bool  _interattivo; // TRUE se e' stata attivata l'elaborazione interattiva;
 | |
| //  bool  _stesso_anno_fiscale;  // TRUE se i documenti originali debbono avere lo stesso anno fiscale del documento da creare
 | |
|   TString _descr_tipodocorg; // descrizione del tipo documento originale (solo come titolo del TSheet_array)
 | |
|   virtual bool menu (MENU_TAG);
 | |
|   virtual bool create ();
 | |
|   virtual bool destroy();
 | |
|   
 | |
|   int run_mask (TRectype&, TRectype&);          // lancia la maschera e scandisce i records
 | |
|   int per_cliente(TRectype&, TRectype&, const char*);   // crea fatture ordinate tramite la elab_princ
 | |
|   int elab_princ(TSorted_cursor&);  // elabora tutti i documenti del cursore che hanno un record ELD
 | |
|   bool search (TRectype&, TRectype&, TSorted_cursor&);   // cerca il prossimo record da includere nel doc. destinazione
 | |
|   bool getflag (TRectype&, int);          // ritorna i valori di due flag
 | |
|   static bool filterfunct(const TRelation*);    // funzione di filtro per i campi non alfanumerici
 | |
|   void raggruppa_righe (TRecord_array&);      // raggruppa le righe per codice articolo
 | |
|   bool prox_riga (int&, TRecord_array&, TBit_array&, TRectype&);  // cerca la prossima riga da raggruppare
 | |
|   long _first_codcf, _last_codcf;     // valori del campo CODCF dei records first e last, per potervi accedere dalla filterfunct()
 | |
|   bool elab_righe(TString metodo,bool raggr_parz,TRectype &tempr,TRecord_array &doc_destinazione,TRectype &temprdoc);
 | |
|                                       // elabora le righe (di doc_originale), mettendole in doc_destinazione
 | |
|                                       // usando il metodo metodo, tramite il record temprdoc gia' inizializzato
 | |
|   bool next_pilota(TSorted_cursor &curs,TRectype &pilota);
 | |
|                             // cerca il prossimo documeto pilota in cursor tenendo conto di processed
 | |
|   int esiste_ELD(TSorted_cursor &curs,int i,bool set_proc = DONT_SET_PROCESSED);
 | |
|         // ritorna ELAB_FOUND se esiste una ELD che passa dal tipo documento di pilota a _tipo_dest
 | |
|         // (o _tipo_doc_dest, se _tipo_dest non viene specificato) e riempie eventualmente dest con la prima ELD
 | |
|   int leggi_da_ELD(TRectype &dest,TString _tipo_pilota,TString _tipo_dest = "");
 | |
|         // legge dalla tabella ELD il record _tipo_pilota->_tipo_destinazione, lo mette in dest e ritorna l'errore
 | |
|   TString metodo(TRectype &rec);
 | |
|         // restituisce la stringa metodo di trasf. dal record ELD per rec->_tipo_destinazione
 | |
|   int statovalido(TRectype& rec);
 | |
|         // controlla che il documento rec sia in uno degli stati validi indicati nella sezione [RAGGRUPPA] del suo .ini
 | |
|   const char *td_ELD_to_filter(TString &_tipo_doc_des);
 | |
|         // trova il .ini di rec e lo restituisce
 | |
|   TString getini(TRectype& rec, int &err);
 | |
|         // prende RAGGRPARZ della sezione [RAGGRUPPA]
 | |
|   bool get_raggr_parz(TRectype& rec, int& err);
 | |
|         // ritorna TRUE se _stesso_anno_fiscale o STESSOANNOFISCALE del .ini di rec
 | |
|   bool stesso_anno_fiscale(TRectype& rec);
 | |
|         // setta le informazioni sugli stati del doc e le mette nelle  relative variabili globali
 | |
|   int get_info(TRectype &doc);
 | |
|         // guarda se i documenti pil e pil2 sono compatibili per essere uniti nello stesso documento finale
 | |
|   bool doc_i_compatibili(TRectype &pil,TRectype &pil2);
 | |
| 
 | |
| public:
 | |
|   TBatch_crea_doc () {}               // costruttore
 | |
|   ~TBatch_crea_doc () {}
 | |
| };     
 | |
| 
 | |
| #endif // _TELABORAZIONI_DECL //
 |