627 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			627 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| // dear emacs, this is -*-C++-*- 
 | ||
| // Questa e' la famosa palla della liquidazione IVA
 | ||
| 
 | ||
| #ifndef __MASK_H
 | ||
| #include <mask.h>
 | ||
| #endif
 | ||
| 
 | ||
| #ifndef __PRINTAPP_H
 | ||
| #include <printapp.h>
 | ||
| #endif
 | ||
| 
 | ||
| #ifndef __TABUTIL_H
 | ||
| #include <tabutil.h>
 | ||
| #endif
 | ||
| 
 | ||
| #ifndef __CGLIB03_H
 | ||
| #include "cglib03.h"
 | ||
| #endif
 | ||
| 
 | ||
| class TProgind;
 | ||
| 
 | ||
| // ------------------------------------------------------------------
 | ||
| // Parametri modificabili
 | ||
| // ------------------------------------------------------------------
 | ||
| 
 | ||
| // Fucked aliases to complain with new agricoltural rules
 | ||
| #define AGR_PCON1  201
 | ||
| #define AGR_PCON2  202
 | ||
| 
 | ||
| // arrotondamento default
 | ||
| // da cambiare se la lira si appesantisce o in caso di inflazione polacca
 | ||
| #define ROUND_LIRA        (0)
 | ||
| #define ROUND_MILLELIRE   (-3)
 | ||
| 
 | ||
| // picture default per i reali
 | ||
| // in caso di inflazione polacca occorrera' modificare la lunghezza
 | ||
| // e quindi cambiare le set_row in cg4304.cpp onde evitare overlap 
 | ||
| #define REAL_PICTURE      "###.###.###.###"
 | ||
| 
 | ||
| // IVA a debito da non pagare ma riportare al mese successivo
 | ||
| #define IVA_DA_RIPORTARE      real(50000.0)
 | ||
| 
 | ||
| // detrazione per detraibili 6%
 | ||
| #define DETRAZIONE_6PERCENTO  real(0.06)
 | ||
| 
 | ||
| // soglia che da' diritto alla liquidazione trimestrale per servizi
 | ||
| // currently trecentsesantamiliu'
 | ||
| #define SOGLIA_TRIM_SERVIZI   real(360000000.0)
 | ||
| 
 | ||
| // soglia che da' diritto alla liquidazione trimestrale per altri
 | ||
| // currently un miliardun
 | ||
| #define SOGLIA_TRIM_ALTRE     real(1000000000.0)
 | ||
| 
 | ||
| // minima percentuale di operazioni esenti per aver diritto al rimborso
 | ||
| // infrannuale
 | ||
| #define MIN_PARTE_ESENTE      real(0.25)
 | ||
| 
 | ||
| // percentuale degli imponibili da usare nel calcolo aliquota
 | ||
| // media acquisti e vendite per controllo diritto al rimborso
 | ||
| // infraanuuale secondo norme 1994
 | ||
| // ANNULLATO ANCOR PRIMA DI ESISTERE; LO LASCIO PER MEMORIA FUTURA
 | ||
| // (due giorni di lavoro)
 | ||
| #define PERC_IMP_RIMBORSABILE real(0.51)   
 | ||
| 
 | ||
| // NUOVO ENNESIMO CRITERIO RIMBORSO; mi si scusera' un minimo di
 | ||
| // risentimento
 | ||
| #define SOGLIA_MAGGIORE_ALIQUOTA_DEL_CAZZO_PER_AVER_DIRITTO_AL_RIMBORSO  real(0.1)
 | ||
| 
 | ||
| //
 | ||
| // ------------------------------------------------------------------
 | ||
| // Fine parametri modificabili
 | ||
| // do not change below this line if you want me to work
 | ||
| // and you to keep your fucking ass healty
 | ||
| // ------------------------------------------------------------------
 | ||
| 
 | ||
| // per il campo I0 di pim
 | ||
| #define NETTO "1"
 | ||
| #define LORDO "2"
 | ||
| 
 | ||
| enum tiporeg { vendita = 1, acquisto = 2 };
 | ||
| enum recalc  { needed = 1, one = 2, ever = 3, never = 4 };
 | ||
| enum wht     { all = 1, mnt = 2, trimestre = 3};
 | ||
| enum tbc     { precedente = 1, incorso = 2};
 | ||
| 
 | ||
| // flags per gli items di stampa
 | ||
| #define CHG_PARMS  1   // cambiato qualcosa (attivita', ditta...)
 | ||
| #define PIM_ROW    2   // riga totali parziali per codiva
 | ||
| #define PLAFOND    3   // prospetto plafond
 | ||
| #define THE_END    4   // riepilogo finale 
 | ||
| #define TOT_ROW    5   // totale dei pim (plm)
 | ||
| #define MISC_LIQ   6   // altri dati dichiarazione (ptm)
 | ||
| #define SET_FIRM   7   // dati ditta (senza attivita')
 | ||
| #define ANNUAL     8   // prospetto annuale (prorata etc.)
 | ||
| #define VENTILA    9   // prospetto ventilazione
 | ||
| #define REGAGR     10  // prospetto regime agricolo
 | ||
| #define REGVIA     11  // prospetto agenzie viaggio
 | ||
| #define RIMBORSO   12  // prospetto rimborso infraannuale
 | ||
| #define ACCONTO    13  // riga prospetto acconti
 | ||
| #define ACCHEAD    14  // header prospetto acconti
 | ||
| #define DELDEB     15  // righe tabulato deleghe ditte a debito
 | ||
| #define DELCRED    16  // header tabulato deleghe ditte a credito
 | ||
| #define DELEGA     17  // descrizione versamenti
 | ||
| #define PIM_HEAD   18  // bytes sprecati per far vedere l'intestazione pim
 | ||
| #define LIQACC     19  // prospetto liquidazione acconto 
 | ||
| #define PROGAGR    20  // progressivi per prospetto agricolo dal 1998
 | ||
| 
 | ||
| // ...............................................................
 | ||
| // support structs
 | ||
| // ...............................................................
 | ||
| 
 | ||
| class _VentItem : public TObject
 | ||
| {
 | ||
| public: // non e' bello, ma non e' bello neanche dover fare un
 | ||
|   // TObject per poter mettere una struct in un TArray
 | ||
|   real    _imposta;     // per comodita'
 | ||
|   real    _aliquota;    // aliquota iva
 | ||
|   real    _totale;      // totale acquisti
 | ||
|   TString _codiva;      // codice iva        
 | ||
|   TString _other;       // codice iva a cui ventilare       
 | ||
|   _VentItem() : _imposta(0.0), _totale(0.0) {}
 | ||
|   virtual ~_VentItem() {}
 | ||
| };
 | ||
| 
 | ||
| class _VendItem : public TObject
 | ||
| {
 | ||
| public:                // vedi sopra per le fisime morali
 | ||
|   real    _totale;     // totale vendite per registro/tipo det.
 | ||
|   TString _codreg;     // codice registro
 | ||
|   int     _month;      // mese
 | ||
|   int     _tipodet;    // tipo detraibilita'
 | ||
|   _VendItem() : _codreg(5) {}
 | ||
|   virtual ~_VendItem() {}
 | ||
| };
 | ||
| 
 | ||
| class _CorrItem : public TObject
 | ||
| {
 | ||
| public:                // vedi sopra per le fisime morali
 | ||
|   real    _totale;     // totale vendite per registro
 | ||
|   TString _codreg;     // codice registro
 | ||
|   int     _month;      // mese
 | ||
|   real    _aliquota;    // aliquota iva
 | ||
|   TString _codiva;      // codice iva
 | ||
|   TString _codatt;      // codice attivita'
 | ||
|   int     _tipodet;     // tipo detraibilita'
 | ||
|   virtual TObject* dup() const { return new _CorrItem(*this); }
 | ||
|   _CorrItem() : _codreg(5) {}
 | ||
|   virtual ~_CorrItem() {}
 | ||
| };
 | ||
| 
 | ||
| class _DescrItem : public TObject
 | ||
| // Sembra triste e brutto esattamente come i files tabella
 | ||
| // Ma la verita' e' che non e' affatto inefficiente 
 | ||
| // e che mi piace, nei limiti dell'entusiasmo concessomi, moltissimo 
 | ||
| {
 | ||
| public:
 | ||
|   word    _flags;
 | ||
|   word    _f0, _f1, _f2, _f3;
 | ||
|   TString _s0, _s1, _s2, _s3, _s4, _s5;
 | ||
|   real    _r0, _r1, _r2, _r3, _r4, _r5, 
 | ||
|   _r6, _r7, _r8, _r9, _r10,_r11, _r12, _r13, _r14;
 | ||
|   TArray  _arr;
 | ||
|   TDate   _d0;
 | ||
|   
 | ||
|   _DescrItem(word f) : _f0(0), _f1(0), _f2(0) 
 | ||
|   { _flags = f; }
 | ||
|   virtual ~_DescrItem() 
 | ||
|   { }
 | ||
| };
 | ||
| 
 | ||
| class _ErrItem : public TObject
 | ||
| {
 | ||
| 
 | ||
| public:
 | ||
| 
 | ||
|   TString _err;
 | ||
|   TString _att;
 | ||
|   TString _firm;
 | ||
|   _ErrItem(const char* err, const char* att, const char* firm) 
 | ||
|   { _err = err; _att = att; _firm = firm; }
 | ||
|   virtual ~_ErrItem() {}
 | ||
| };
 | ||
| 
 | ||
| // _Iva11Item serve per memorizzare gli elementi da trasferire su tab1100
 | ||
| class _Iva11Item : public TObject
 | ||
| {
 | ||
|   real _value;
 | ||
|   int  _file;
 | ||
| public:
 | ||
|   virtual TObject* dup() const { return new _Iva11Item(*this); }
 | ||
|   real& value()  { return _value; }
 | ||
|   int& file()    { return _file; }
 | ||
|   void zero()    { _value = 0.0; _file = LF_TAB1100A; }
 | ||
|   _Iva11Item() { _file = LF_TAB1100A; }
 | ||
|   virtual ~_Iva11Item() {}
 | ||
| };
 | ||
| 
 | ||
| // Definisco solo i metodi add e sub, per aggiungere elementi _Iva11Item
 | ||
| // per il resto e' un normalissimo TAssoc_array
 | ||
| class _Iva11Array : public TAssoc_array
 | ||
| {
 | ||
| public:
 | ||
|   bool add(const real& val, const char* fld_name, int num_file = LF_TAB1100A);
 | ||
|   bool sub(const real& val, const char* fld_name, int num_file = LF_TAB1100A);
 | ||
|   void zero(const char* fld_name);
 | ||
|   _Iva11Array() {}
 | ||
|   virtual ~_Iva11Array() {}
 | ||
| };
 | ||
| 
 | ||
| // _ProrataItem serve per calcolare prorata dal 1998
 | ||
| class _ProrataItem : public TObject
 | ||
| {
 | ||
|   real _current_perc;     // Percentuale prorata anno in corso
 | ||
|   real _previous_perc;    // Percentuale prorata anno precedente
 | ||
|   bool _previous_ok;      // Flag per indicare se presente tabella anno precedente
 | ||
| public:
 | ||
|   void set(const int a, const real& c, const real& p, const bool fl = TRUE);
 | ||
|   real calc_prorata(const real& acq, const bool current = TRUE);
 | ||
|   const real& current()    { return _current_perc; }
 | ||
|   const real& previous()   { return _previous_perc; }
 | ||
|   const bool flag()        { return _previous_ok; }
 | ||
|   _ProrataItem() {}
 | ||
|   virtual ~_ProrataItem() {}
 | ||
| };
 | ||
| 
 | ||
| // ------------------------------------------------------------------------
 | ||
| // Application
 | ||
| // ------------------------------------------------------------------------
 | ||
| 
 | ||
| class TLiquidazione_app : public TPrint_application
 | ||
| {  
 | ||
|   TArray_sheet* _ditte;
 | ||
|   wht           _what;
 | ||
|   TBit_array _selected;
 | ||
|   int        _menu;            // 1 = Liquidazione, 2 = Deleghe, 3 = Acconti
 | ||
|   TString    _year;            // anno di calcolo
 | ||
|   int        _month;           // mese da calcolare
 | ||
|   TDate      _date;            // data di stampa
 | ||
|   bool       _isprint;         // vuoi stampare o no?
 | ||
|   bool       _canprint;        // PUOI stampare o no?
 | ||
|   bool       _printonly;       // calcolo definitivo        
 | ||
|   recalc     _recalc;          // tipo ricalcolo scelto
 | ||
|   bool       _isplafond;       // plafond importatori abituali
 | ||
|   bool       _isvent;          // ventilazione
 | ||
|   bool       _isagricolo;      // regime agricolo
 | ||
|   bool       _isviaggio;       // regime agenzie viaggio
 | ||
|   bool       _isbenzinaro;     // regime benzinaro
 | ||
|   bool       _gest4;           // gestione 4<> trim. per benzinaro
 | ||
|   bool       _isannual;        // dichiarazione annuale
 | ||
|   bool       _mixed;           // attivita' mista 
 | ||
|   bool       _isriepilogo;     // 13a liq   
 | ||
|   bool       _isannual_12;     // annuale con mese = 12 (trimestre)
 | ||
|   bool       _isendliq;        // annuale o riepilogo
 | ||
|   bool       _isservizio;      // servizi, professionisti, artisti
 | ||
|   bool       _isrimborso;      // vuole il rimborso infraannuale
 | ||
|   bool       _isricacq;        // ricalcolo imposte acq. riv (par. ditta)
 | ||
|   bool       _isdifferita;     // liquidazione differita e mese != 13
 | ||
|   bool       _isdiffacc;       // liq. differita (usato per stampa registri)
 | ||
|   bool       _isagr98;         // TRUE se l'anno e' > 1997 e si sta calcolando una attivita' agricola
 | ||
|   bool       _recalc_only;     // solo ricalcolo progressivi
 | ||
|   bool       _calcall;         // tutte le ditte nessuna esclusa
 | ||
|   bool       _isbase;          // stampa base di calcolo acconto
 | ||
|   bool       _isfinal;         // stampa definitiva (su registro bollato)
 | ||
|   bool       _isregis;         // stampa per registro       
 | ||
|   bool       _isintr;          // calcola interessi per trimestrali 
 | ||
|   bool       _stampa_vers;     // stampa trafiletto versamento;
 | ||
|   bool       _stampa_acc;      // stampa trafiletto saldo/acconto 
 | ||
|   bool       _riepilogo;       // stampa riepilogo sul registro
 | ||
|   bool       _sind11;          // somma imposte non detraibili in trasferimento IVA11 (da configurazione dati studio)
 | ||
|   tbc        _basecalc;        // tipo base di calcolo acconto
 | ||
|   TString    _freqviva;        // frequenza versamenti (M|T)
 | ||
|   long       _n_ditte;         // numero ditte
 | ||
|   bool       _comp_acconto;    // stiamo calcolando l'acconto
 | ||
|   TArray     _nomiditte;       // array descr. ditte per sheet
 | ||
|   
 | ||
|   TProgind*  _prind;
 | ||
|   int        _row;
 | ||
|   TArray     _vend_arr;        // tabella vendite per ventilazione
 | ||
|   TArray     _corr_arr;        // tabella corrispettivi
 | ||
|   TArray     _vent_arr;        // tabella acquisti per ventilazione
 | ||
|   TArray     _descr_arr;       // things to be printed
 | ||
|   TArray     _errors;          // errors to notify
 | ||
| 
 | ||
| 
 | ||
|   TAssoc_array _codiva_arr;    // cache dei codici IVA.
 | ||
|   TAssoc_array _reg_arr;       // cache dei registri.
 | ||
|   TAssoc_array _iva11_arr;     // array contenente le informazioni da trasferire.
 | ||
|                                // La chiave di ordinamento e' sul codice attivita'.
 | ||
|                                // Ogni elemento dell'array e' un _Iva11Array
 | ||
|                                // La cui chiave e' a sua volta sul nome campo
 | ||
| 
 | ||
|   // totali vari per attivita'
 | ||
|   real       _p8, _p8b, _p9;   // totali plafond
 | ||
|   _ProrataItem
 | ||
|              _prorata;         // Mini cazzetto per calcoli prorata
 | ||
|   long       __firm;           // ditta selezionata all'inizio
 | ||
|   bool       _is_interactive;  // lanciata da menu o da altro prog
 | ||
|   bool       _is_visliq;       // lanciata da visualizzazione liquidazione
 | ||
|   
 | ||
|   int        _monthinatt;      // mese inizio attivita' (serve per differita)
 | ||
|   
 | ||
|   static real CENTO;    
 | ||
|   
 | ||
|   // main cursor
 | ||
|   TRelation* _rel;
 | ||
|   TCursor*   _cur;
 | ||
|   
 | ||
|   // files, tables
 | ||
|   TRelation*      _tab11;     // un giorno tab1100a e tab1100b saranno un unico file!
 | ||
|   TRelation*      _nditte;
 | ||
|   TLocalisamfile* _mov;
 | ||
|   TLocalisamfile* _rmoviva;
 | ||
|   TLocalisamfile* _pcon_1;
 | ||
|   TLocalisamfile* _pcon_2;
 | ||
|   
 | ||
|   TInteressi_IVA_table* _ver;
 | ||
|     
 | ||
|   TTable*    _pim;
 | ||
|   TTable*    _pum;  
 | ||
|   TTable*    _pam;  
 | ||
|   TTable*    _pom;  
 | ||
|   TTable*    _plm;  
 | ||
|   TTable*    _pia;
 | ||
|   TTable*    _lim;  
 | ||
|   TTable*    _lam;  
 | ||
|   TTable*    _pla; 
 | ||
|   TTable*    _ppa;
 | ||
|   TTable*    _reg;
 | ||
|   TTable*    _iva;
 | ||
|   TTable*    _del;
 | ||
|   TTable*    _lia;  
 | ||
|   
 | ||
|   // a reference rectype per file/table
 | ||
|   TRectype*  _mov_r;
 | ||
|   TRectype*  _rmoviva_r;
 | ||
|   TRectype*  _pcon_1_r;
 | ||
|   TRectype*  _pcon_2_r;
 | ||
|   TRectype*  _iva_r;
 | ||
|   TRectype*  _pim_r;
 | ||
|   TRectype*  _pum_r;
 | ||
|   TRectype*  _pam_r;
 | ||
|   TRectype*  _pom_r;
 | ||
|   TRectype*  _reg_r;
 | ||
|   TRectype*  _nditte_r;
 | ||
|   TRectype*  _pla_r;
 | ||
|   TRectype*  _plm_r;
 | ||
|   TRectype*  _pia_r;
 | ||
|   TRectype*  _ppa_r;
 | ||
|   TRectype*  _lim_r;
 | ||
|   TRectype*  _lam_r;
 | ||
|   TRectype*  _del_r;
 | ||
|   TRectype*  _att_r;     
 | ||
|   
 | ||
|   // recfields for each stronz codtab
 | ||
|   TRecfield* _pim_anno;
 | ||
|   TRecfield* _pim_codatt;
 | ||
|   TRecfield* _pim_codreg;
 | ||
|   TRecfield* _pim_mese;
 | ||
|   TRecfield* _pim_tipocr;
 | ||
|   TRecfield* _pim_codiva;
 | ||
|   TRecfield* _pim_tipodet;
 | ||
|   TRecfield* _pum_anno;
 | ||
|   TRecfield* _pum_codatt;
 | ||
|   TRecfield* _pum_mese;
 | ||
|   TRecfield* _pam_anno;
 | ||
|   TRecfield* _pam_codatt;
 | ||
|   TRecfield* _pam_mese;
 | ||
|   TRecfield* _pom_anno;
 | ||
|   TRecfield* _pom_codatt;
 | ||
|   TRecfield* _pom_mese;
 | ||
|   TRecfield* _ppa_year;
 | ||
|   TRecfield* _ppa_codatt;
 | ||
|   TRecfield* _ppa_month;
 | ||
|   TRecfield* _ppa_kind;
 | ||
|   TRecfield* _plm_anno;
 | ||
|   TRecfield* _plm_codatt;
 | ||
|   TRecfield* _plm_mese;
 | ||
|   TRecfield* _pia_anno;
 | ||
|   TRecfield* _pia_codatt;
 | ||
|   TRecfield* _pia_mese;
 | ||
|   TRecfield* _pia_codord;
 | ||
|   TRecfield* _pia_codcom;
 | ||
|   
 | ||
|   TRecfield* _pla_ditta;
 | ||
|   TRecfield* _pla_anno;
 | ||
|   TRecfield* _pla_codatt;
 | ||
|   
 | ||
|   TRecfield* _del_ditta;
 | ||
|   TRecfield* _del_anno;
 | ||
|   TRecfield* _del_mese;
 | ||
|   TRecfield* _del_tipo;
 | ||
|   TRecfield* _lim_anno;
 | ||
|   TRecfield* _lim_mese;                                    
 | ||
|   TRecfield* _lam_anno;
 | ||
|   TRecfield* _lam_mese;                                    
 | ||
|   
 | ||
|   // supporto per l'ultima figata                         
 | ||
|   int        _firm_bookmark;
 | ||
|   int        _att_bookmark;
 | ||
|   
 | ||
| protected:              
 | ||
|   
 | ||
|   long select_firm_range(long from, long to, wht freq);
 | ||
|   
 | ||
|   static bool ch_year_handler(TMask_field& f, KEY key);
 | ||
|   static bool to_ditt_handler(TMask_field& f, KEY key);
 | ||
|   static bool fr_ditt_handler(TMask_field& f, KEY key);
 | ||
|   static bool what_freq_handler(TMask_field& f, KEY key);
 | ||
|   static bool lst_tm_handler(TMask_field& f, KEY key);
 | ||
|   static bool select_button(TMask_field& f, KEY key);
 | ||
|   static bool reset_button(TMask_field& f, KEY key);
 | ||
|   static bool chk_final_handler(TMask_field& f, KEY key);
 | ||
|   
 | ||
|   static TLiquidazione_app& app() { return (TLiquidazione_app&)main_app(); }
 | ||
|   
 | ||
| public:
 | ||
|   
 | ||
|   virtual bool user_create();
 | ||
|   virtual bool user_destroy();
 | ||
|   virtual bool set_print(int i);
 | ||
|   
 | ||
|   // cazzatelle per handlers
 | ||
|   TArray_sheet* get_ditte_sheet() { return _ditte; }
 | ||
|   TBit_array&   get_selected()    { return _selected; }  
 | ||
|   void          build_ditte_sheet(wht);
 | ||
|   void          reset_choices(TMask&);
 | ||
|   void          set_choice_limits(TMask&);
 | ||
|   void          build_nomiditte(TProgind* pnd = NULL);
 | ||
|   void          set_year(const char* y) { _year  = y; }
 | ||
|   void          set_month(const int m)  { _month = m; }
 | ||
|   
 | ||
|   bool set_liquidazione();
 | ||
|   bool recalc_all();
 | ||
|   
 | ||
|   // ricalcolo progressivi mese
 | ||
|   bool update_firm   (int month, bool recalc = TRUE);
 | ||
|   bool update_att    (int month, const char* codatt, bool recalc = TRUE);
 | ||
|   void zero_firm     (int month);
 | ||
|   void zero_att      (int month, const char* codatt);
 | ||
|   void zero_annual   (int month);
 | ||
|   void recalc_att    (int month, const char* codatt);
 | ||
|   void recalc_annual (const char* codatt);
 | ||
|   _DescrItem* recalc_rimborso(int month, const char* codatts, bool print);
 | ||
|   
 | ||
|   // Le funzioni che hanno come prefisso iva11 sono per creare il file di trasferimento per IVA11
 | ||
|   // Viene chiamata quando vengono scorsi tutti i movimenti, settando gli elementi di _iva11_arr.
 | ||
|   void iva11_set_arr   (const TString& codatt);
 | ||
|   // Scorre tutti i PIM della ditta, per completare _iva11_arr prima di chiamare write_IVA11()
 | ||
|   void iva11_set_arr_pim   (const TString& codatt);
 | ||
|   // Scrive per la ditta/attivita' corrente, i dati relativi al trasferimento IVA11
 | ||
|   // Se viene passato TRUE come parametro, azzera i campi R1 ed R2.
 | ||
|   void iva11_write   (bool reset_r1r2 = FALSE);
 | ||
| 
 | ||
|   // ricalcolo liquidazioni dai progressivi mensili
 | ||
|   void write_liq     (int month, const char* atts);
 | ||
|   
 | ||
|   // ritorna l'eventuale ma sempre appropriato debito (< 50.000)
 | ||
|   real debt_prec(int month);
 | ||
|   // ritorna il risultato della liquidazione del mese
 | ||
|   // non considera il conguaglio prorata (annuale) 
 | ||
|   real result_liq(int month);
 | ||
|   // ritorna l'appropriato credito precedente al mese in corso
 | ||
|   real credito_prec(int month);
 | ||
|   // ritorna l'appropriato credito di costo precedente al mese in corso
 | ||
|   // (travel agency only)
 | ||
|   real credito_costo_prec(int month);
 | ||
|   // ritorna i versamenti effettuati nel mese per
 | ||
|   // i tipi delega passati (stile tokenstring) sommando  
 | ||
|   // gli interessi se interesse = TRUE
 | ||
|   real versamenti_IVA(int month, const char* types, bool interesse = FALSE);
 | ||
|   
 | ||
|   // Funzione personale di arrotondamento alle 1000 LIRE per l'annuale.
 | ||
|   // Risolve il seguente problema: da 0 a 500 lire arrotonda alle mille inferiori
 | ||
|   // da 501 a 999 arrotonda alle mille superiori.
 | ||
|   void round_mille_lire(real& d);
 | ||
|   
 | ||
|   // supporto stampa
 | ||
|   void describe_firm(int month);
 | ||
|   void describe_att(int month, const char* codatt, bool isresult, char flags);
 | ||
|   void describe_name(int month, TToken_string& atts, char flags);
 | ||
|   void describe_plafond(int month, const char* codatt); 
 | ||
|   void describe_ventilation(int month, const char* codatt); 
 | ||
|   void describe_agricolo(int month, const char* codatt); 
 | ||
|   void describe_viaggio(int month, const char* codatt); 
 | ||
|   void describe_pims(int month, const char* codatt);
 | ||
|   void describe_liq(int month, const char* codatts, _DescrItem* d = NULL);
 | ||
|   void describe_error(const char* errstr, const char* codatt);
 | ||
|   void describe_annual(const char* codatt);
 | ||
|   void describe_consistence(const char* codatt);
 | ||
|   void describe_liqacc();
 | ||
|   
 | ||
|   _DescrItem* describe_deleghe(int month);
 | ||
|   
 | ||
|   // corrispettivi
 | ||
|   void recalc_corrispettivi (int month, const char* codatt);
 | ||
|   
 | ||
|   // ventilasiun
 | ||
|   void recalc_ventilation (int month, const char* codatt);
 | ||
| 
 | ||
|   // ag. viaggio
 | ||
|   void recalc_viaggio (int month, const char* codatt);
 | ||
|   
 | ||
|   // plafond
 | ||
|   void zero_plafond (int month, const char* codatt);
 | ||
|   void add_plafond  (int month, const char* codatt, int type,
 | ||
|                      real& howmuch, bool intra);
 | ||
|   
 | ||
|   // Ritorna il parametro della liquidazione differita per la ditta corrente, cosi come 
 | ||
|   // e' scritto sui parametri liquidazione (LIA)
 | ||
|   // Se si passa 0 (default) vede prende la ditta correntemente in corso di calcolo
 | ||
|   // Analogamente per l'anno
 | ||
|   bool TLiquidazione_app::is_differita(long firm = 0, int year = 0);
 | ||
|   
 | ||
|   // ritorna l'aliquota ordinaria dal
 | ||
|   // codice IVA apposito immesso nei parametri studio
 | ||
|   real aliquota_agvia();
 | ||
|   
 | ||
|   // ritorna l'interesse per il mese in questione (dai parametri studio)
 | ||
|   real interesse_trimestrale(int month);
 | ||
|   
 | ||
|   // minchia di puro suino
 | ||
|   void add_vendite     (int month, const char* codreg, int tipodet, real& r);
 | ||
|   void add_ventilation (real iva, real sum, const char* codiva, const char* other);
 | ||
|   void add_corrisp     (int month, const char* codreg, real& r, real& p,
 | ||
|                         int tipodet, const char* codiva, const char* codatt);
 | ||
|   
 | ||
|   //vergine immacolata, richiamata per scorporare l'iva nei peccatori corrispettivi
 | ||
|   void lordo2netto(const real& totale, real& imponibile, real& imposta, const real& aliquota);
 | ||
|   void lordo2netto(real& imponibile, real& imposta, const real& aliquota);
 | ||
|   
 | ||
|   // printappings
 | ||
|   virtual void         set_page(int file, int counter);
 | ||
|   virtual bool         preprocess_page(int file, int counter);
 | ||
|   virtual print_action postprocess_page(int file, int counter);
 | ||
|   
 | ||
|   // settaggio righe per ogni elemento di _descr_arr
 | ||
|   void set_plafond(_DescrItem& d);
 | ||
|   void set_ventila(_DescrItem& d);
 | ||
|   void set_regagr(_DescrItem& d);
 | ||
|   void set_viaggio(_DescrItem& d);
 | ||
|   void set_firm(_DescrItem& d);
 | ||
|   void set_att(_DescrItem& d);
 | ||
|   void set_pim(_DescrItem& d);
 | ||
|   void set_pumpam(_DescrItem& d);
 | ||
|   void set_plm(_DescrItem& d);
 | ||
|   bool set_annual(_DescrItem& d);
 | ||
|   void set_grand(_DescrItem& d);
 | ||
|   void set_pim_head(_DescrItem& d);
 | ||
|   void set_liqacc(_DescrItem& d);
 | ||
|   
 | ||
|   // cercapalle in tabelle con opzione di creazione se serve
 | ||
|   bool look_pim(int m, const char* a, const char* r, const char* cr,
 | ||
|                 const char* i, int tipodet = 0, bool create = FALSE);
 | ||
|   bool look_pum(int m, const char* a, bool create = FALSE);
 | ||
|   bool look_pam(int m, const char* a, bool create = FALSE);
 | ||
|   bool look_pom(int m, const char* a, bool create = FALSE);
 | ||
|   bool look_plm(int m, const char* a, bool create = FALSE);
 | ||
|   bool look_pia(int m, const char* a, const char* cod1, const char* cod2, bool create = FALSE);
 | ||
|   bool look_lim(int m, bool create = FALSE);
 | ||
|   bool look_lam(int m, bool create = FALSE);
 | ||
|   bool look_pla(const char* a, bool create = FALSE);
 | ||
|   bool look_ppa(int m, const char* a, int t, bool create = FALSE);
 | ||
|   bool look_del(int month, int type, bool create = FALSE);
 | ||
|   bool look_iva(const char* cod);
 | ||
|   bool look_reg(const char* reg);
 | ||
|   bool look_lia(long ditta = 0l, bool create = FALSE, int anno = 0);
 | ||
|   
 | ||
|   // trova il mytical ufficio concessione da mettere nelle deleghe
 | ||
|   bool look_conc(TString& uffcon, TString& uffiva);
 | ||
|   
 | ||
|   _VendItem* look_vendita(int m, const char* codreg);
 | ||
|   _VentItem* look_ventilation(int m, const char* codreg);
 | ||
|   
 | ||
|   // tutti i controlli del mondo sui mesi da calcolare
 | ||
|   static bool is_trim (int x);
 | ||
|   // ritorna il mese corrispondente alla scadenza del trimestre relativo 
 | ||
|   // senza considerare la frequenza versamenti
 | ||
|   int next_trim(int x);
 | ||
|   // is_month_ok controlla che il mese passato sia
 | ||
|   // da prendere in considerazione per la liquidazione 
 | ||
|   // controllando il regime trimestrale o mensile e 
 | ||
|   // il ricalcolo annuale
 | ||
|   bool is_month_ok(int x, int mtocalc);
 | ||
|   // is_month_ok_strict controlla che il mese sia OK per la
 | ||
|   // liquidazione, ma ritorna TRUE per le trimestrali solo
 | ||
|   // se il mese cade ESATTAMENTE su un trimestre
 | ||
|   bool is_month_ok_strict(int x, int month = -1);
 | ||
|   // questa e' la piu' semplice, per vedere se devo
 | ||
|   // calcolare il mese fottendomene dell'annuale
 | ||
|   bool is_month_plain(int x); 
 | ||
|   // questa serve per i progressivi: la data passata va bene
 | ||
|   // se il movimento deve essere considerato in calcolo e riepilogo
 | ||
|   // per la liquidazione di month
 | ||
|   bool is_date_ok     (TDate& d, int month);
 | ||
|   bool is_in_liq_period(TDate& d);
 | ||
|   bool is_first_month (int m);
 | ||
|   int  liq_month(int x);
 | ||
| 
 | ||
|   int  previous_month (int m);
 | ||
|   
 | ||
|   // Funzioni accessorie: estrazione deleghe
 | ||
|   bool set_deleghe();
 | ||
|   bool extract_deleghe();
 | ||
|   bool extract_delega(int m, TArray& desc);
 | ||
|   bool video_conferma(const real&, const real&, const real&, bool to_del = FALSE);
 | ||
|   // stampa
 | ||
|   void set_deltab(_DescrItem& d, bool iscred);
 | ||
|   
 | ||
|   // Funzioni accessorie: calcolo acconto dicembre  
 | ||
|   // i real passati sono due cazzi di correzioni iva che 
 | ||
|   // vanno settate nella maschera anche se non potranno
 | ||
|   // mai riguardare tutte le ditte
 | ||
| 
 | ||
|   bool set_acconto   (real&, real&);
 | ||
|   bool recalc_acconti(real&, real&);
 | ||
|   bool recalc_acconto(real&, real&);
 | ||
|   // stampa
 | ||
|   void set_acconto_p(_DescrItem& d);  
 | ||
|   void set_acchead_p(_DescrItem& d);
 | ||
|   
 | ||
|   // cippiuppiu'  
 | ||
|   TLiquidazione_app(int men);
 | ||
|   virtual ~TLiquidazione_app() {}
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| 
 |