a174fcf7cb
git-svn-id: svn://10.65.10.50/trunk@4058 c028cbd2-c16b-5b4b-a496-9718f37d4682
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 //
|