#include #include #include #include #include /////////////////////////////////////////////////////////// // TRiclassifica_cache /////////////////////////////////////////////////////////// class TTSRiclassifica_cache : public TCache { TLocalisamfile _multirel; protected: virtual TObject* key2obj(const char* key); public: const char * sdecode(const char* tab, const TString& cod); long decode(const char* tab, const TString& cod); TTSRiclassifica_cache() : _multirel(LF_MULTIREL) { _multirel.setkey(2);} }; /////////////////////////////////////////////////////////// // TTS_sender /////////////////////////////////////////////////////////// const long TSbill2ricl(char & t, int gr, int co, long so); /////////////////////////////////////////////////////////// // TTS_sender /////////////////////////////////////////////////////////// class TTS_textset; class TTS_sender : public TSkeleton_application { TTSRiclassifica_cache* _tabelle; TAssoc_array _riclassifica; TTS_textset* _tsfile; TLog_report* _log; bool _errors_logged; TString8 _dittamulti; TAssoc_array _dittemulti; long _empty_caus; TArray _recsets; TAssoc_array _iva; TAssoc_array _contiiva; TAssoc_array _contirit; bool _professionista; bool _ventilazione; real _rit_acc; protected: TRecordset * get_recset(const int logicnum) const { return (TRecordset *) _recsets.objptr(logicnum);} TRecordset * set_recset(const int logicnum, TRecordset * r) { _recsets.add(r, logicnum); return r;} TArray & recsets() { return _recsets;} const TString & descr2agg(const char* d); bool new_rec(const char* t); void remove_last(); void set(const char* field, const TVariant& var); void set(const char* field, const TString & str) { set(field, TVariant(str)); } void set(const char* field, const int n) { set(field, TVariant((long)n)); } void set(const char* field, const char* s) { set(field, TVariant(s)); } void set(const char* field, const TDate& d) { set(field, TVariant(d)); } void set(const char* field, const real& v) { set(field, TVariant(v)); } const TVariant& get(const char* field); void add_mov(TRecordset& mov); void add_clifor(char tipocf, long codcf); void add_header(const TRecordset& mov, const bool fullhead = true); void add_datiiva(const TRecordset& mov); void add_tot_fattura(const TRecordset& mov); void add_conti_ricavo_costo(const TRecordset& mov); void add_new_rec(const TRecordset& mov); void add_diversi(const TRecordset& mov, const bool moviva); void add_ratei_risconti(const TRecordset& mov); void add_ulteriori(TRecordset& mov); bool add_regol(TRecordset& mov, bool rec_to_add); bool add_optional_rec(TRecordset& mov, bool rec_to_add); const TString & scod2ricl(const char* tab, const TString& cod); const TString & scod2ricl(const char* tab, const TVariant& cod); const long cod2ricl(const char* tab, const TString& cod); const long cod2ricl(const char* tab, const TVariant& cod); const long bill2ricl(char & t, int gr, int co, long so, const bool header_cli = true); virtual void get_citta_provincia(const TRecordset& cli, TString & dencom, TString & provcom, bool nascita = false); virtual const char * decode_causale(const TRecordset& mov) { return EMPTY_STRING; } virtual bool test_swap(const TRecordset& mov) { return false;} virtual bool swap_ritsoc(const TRecordset& mov) { return false;} virtual bool mov_regolarizzazione(const TRecordset& mov) { return false;} virtual bool mov_intra(const TRecordset& mov) { return false;} virtual bool mov_reverse_charge(const TRecordset& mov) { return false;} virtual long iva11_reverse(const TRecordset & mov) { return 0L;} bool add_iva_to_mov(const TRecordset& mov) { return mov_intra(mov) || mov_reverse_charge(mov);} protected: virtual bool find_regolarizzazione(TRecordset& mov) {return false;} virtual TRecordset & movrecset() pure; virtual TRecordset & rmovrecset(const TRecordset & mov) pure; virtual TRecordset & rivarecset(const TRecordset & mov) pure; virtual const TRecordset & clirecset(const char tipocf, const long codcf) pure; virtual bool regime_agricolo(const TRecordset& mov) const { return false; } virtual TMask & get_mask() pure ; public: void log(int sev, const char* msg); virtual bool multi_activity() const { return true; } virtual const TString & dittamulti(const TRecordset& mov) const ; TAssoc_array & riclassifica() {return _riclassifica;} virtual void postprocess_movs(TRecordset & mov) {} virtual void set_parameters(); virtual bool create(); virtual void main_loop(); virtual bool destroy(); TTS_sender() : _tabelle(NULL), _tsfile(NULL), _log(NULL) {} };