#ifndef __VELIB05_H #define __VELIB05_H #ifndef __VELIB_H #include "velib.h" #endif struct dec_parm { int qta_lit; int qta_val; // add other groups here }; ////////////////////////////////////////////////////////////////////////////////////////////// // classe TDocumentoEsteso: oggetto che ha come finalita' il calcolo dei riepiloghi IVA ////////////////////////////////////////////////////////////////////////////////////////////// class TDocumentoEsteso : public TDocumento { // Parametri del documento dec_parm _parm; // Parametri per gli arrotondamenti // membri per il calcolo del riepilogo IVA int _sum_filter; // Filtro corrente della riga TRiepilogo_iva in corso di stampa (-1 se non ha ancora calcolato la tabella) bool _sum_selected; // true se ha selezionato una riga del riepilogo, funge da semaforo per leggere la prossima TString_array _order_array; // Array di TToken_string contenenti i codici IVA soddisfacenti ad ogni tipo di filtro TAssoc_array _summary_table; // Array associativo contenete imonibili ed imposte pronte per la stampa; TArray _summary_array; // Array dove vengono memorizzate le imposte/imponibili per riga TRiepilogo_iva _sum_current; // Riga corrente del riepilogo // membri per il calcolo del riepilogo scadenze TString_array _scadenze_array; // Array che contiene le scadenze ("|") int _scadenze_current; // indice per identificare l'elementi corrente sull'array (-1 se non ha ancora calcolato) protected: virtual int readat(TBaseisamfile& file, TRecnotype nrec, word lockop); public: // Funzioni per il riepilogo IVA const bool summary_compiled() { return _sum_filter > -1; } void compile_summary(); // Aggiorna la tabella riepilogativa void summary_filter(byte selector); // filtra la tabellina secondo il filtro corrente se non e' gia' stato fatto void summary_reset(bool force=FALSE); // riposiziona l'array dei codici IVA (_order_array). Se il parametro e' true forza il ricalcolo della tabella void summary_set_next(); // seleziona il prossimo elemento del filtro const TRiepilogo_iva& sum_current() const { return _sum_current; } // ritorna la riga corrente del filtro corrente const char * summary_get(const TString& w); // ritorna l'informazione richiesta estratta dall'elemento corrente int summary_items() { return tabella_iva().items();} // ritorna il numero di righe in totale della tabellina const TAssoc_array& summary() const { return _summary_table; } const TArray& summary_array() const { return _summary_array;} // Funzioni per il ricalcolo delle scadenze void scadenze_reset(); // riposiziona sulla prima scadenza void scadenze_recalc(); // resetta e ricalcola le scadenze void scadenze_set_next(); // seleziona il prossimo elemento dell'array delle scadenze const char * scadenze_get(const TString& w); // reperisce l'informazione richiesta dall'elemento corrente int scadenze_items() { return _scadenze_array.items(); } // restituisce il numero di scadenze TString_array& scadenze() { return _scadenze_array; } // restituisce tot_imponibili, tot_esenti, tot_nonsoggetti a seconda del selettore: // 1 = regime normale // 2 = da ventilare (non usato) // 4 = esenti // 8 = non imponibili // 16 = non soggetti // pertanto i non imponibili avranno selettore 1 e gli esenti selettore 4. // per avere esenti + non soggetti il selettore sara' 20 e cosi' via. real tot_imponibili(byte selector); // Funzioni per settare i parametri void set_decimals(dec_parm & parm) { _parm = parm ; } // void set_condv(TCli_for * cli); // Cambia le condizioni di vendita TDocumentoEsteso (const TRectype & rec, dec_parm & parm) ; TDocumentoEsteso (const TRectype & rec) ; TDocumentoEsteso () ; virtual ~TDocumentoEsteso(); }; #endif