campo-sirio/ve/ve6gen.h
angelo a174fcf7cb Aggiunta inclusione di <recarray.h>
git-svn-id: svn://10.65.10.50/trunk@4058 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-01-11 10:43:09 +00:00

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 //