Files correlati : Ricompilazione Demo : [ ] Commento :stampa movimenti percipienti: sistemata la richiesta 1) della RobbiVezz (aggiungere iva e totdoc alla stampa) git-svn-id: svn://10.65.10.50/trunk@18522 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			419 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			419 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| // 77lib.h - utilita' varie per modulo 770
 | ||
| #ifndef __77LIB_H
 | ||
| #define __77LIB_H            
 | ||
| 
 | ||
| #include <mask.h>
 | ||
| #include <real.h>
 | ||
| #include <sheet.h>
 | ||
| 
 | ||
| class TSchedaP;
 | ||
| 
 | ||
| // Flag di record del dichiarante (quadro I "globale")
 | ||
| #define COD_QUA_I_DIC   'D'
 | ||
| #define DELEGA_BANCARIA 'B'
 | ||
| #define DISTINTA        'D'
 | ||
| #define CC_POSTALE      'C'
 | ||
| 
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| //                
 | ||
| // Parametri pacchetto/utente
 | ||
| //
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| 
 | ||
| // L'anno di dichiarazione selezionato nei parametri di studio 770.
 | ||
| // (Usato anche in 773100a.uml)
 | ||
| #define ANNO_SEL  "AnnoDic"
 | ||
| // Elenco di ditte selezionate da un utente. Array in CONFIG_USER
 | ||
| #define DITTE_SEL "DitteSel"
 | ||
| #define ST_MODULO "StSuModulo"
 | ||
| #define ST_DATA   "StDataMod"
 | ||
| #define ST_DOC    "StDocNoPag"
 | ||
| 
 | ||
| // La ditta corrente per il 770 -  s/get_firm_770() usano questo
 | ||
| #define DITTA_770 "Ditta770"  
 | ||
| 
 | ||
| // Arrotonda modificato { 1500 -> 1000 (e non 2000 come in round(-3)) }
 | ||
| real round_770(const real& importo);
 | ||
| 
 | ||
| // Cerca di stabilire se il titolare della ditta e' PF o PG
 | ||
| char tipo_persona (long codditta);                    
 | ||
| 
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| //                
 | ||
| // Dipendenti
 | ||
| //
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| // Stabilisce se coddip esiste
 | ||
| bool esiste_dipendente(const long codditta, const long coddip);
 | ||
| // Stabilisce se coddip e' un (erede o un deceduto) o no
 | ||
| bool is_dipendente(const long codditta, const long coddip);
 | ||
| // Stabilisce se coddip e' un erede 
 | ||
| bool is_erede(const long codditta, const long coddip);
 | ||
| // Stabilisce se coddip e' deceduto
 | ||
| bool is_deceduto(const long codditta, const long coddip);
 | ||
| 
 | ||
| bool scrivi_erede(const long codditta, const long deceduto, const long erede);
 | ||
| bool riscrivi_erede(const long codditta, const long deceduto, const long erede, const long val);
 | ||
| 
 | ||
| // Determina se esiste un pagamento con annopag = anno passato come par.
 | ||
| bool esiste_pag_in_anno(TSchedaP& sch, const int anno=0, const TDate& data_da=NULLDATE, const TDate& data_a=NULLDATE, const int annocomp=0);
 | ||
| // La stessa cosa tra due date
 | ||
| bool esiste_pag_in_periodo(TSchedaP& sch, const TDate& data_da, const TDate& data_a);
 | ||
|                              
 | ||
|                              
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| //                
 | ||
| // Dichiarazioni & quadri
 | ||
| //
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| 
 | ||
| typedef enum { estinto=0, normale, dichiarante } TipoDitta;
 | ||
| 
 | ||
| // Controlla se esiste la dic
 | ||
| bool exist_dichiar_770 (long codditta, bool sogg_dich= FALSE);
 | ||
| // Immette una dichiarazione
 | ||
| bool enter_dichiar_770 (long codditta, int annodic=0, bool sogg_dich= FALSE);    
 | ||
| // Ritorna l'anno sui parametri di studio
 | ||
| int anno_770();                                            
 | ||
| 
 | ||
| // Conta il numero di persone fisiche e non della ditta codit per quadro "quadro"
 | ||
| // Mette i totali nei due parametri passati per riferimento
 | ||
| int conta_tipiper(const long codit, TString& quadro, int* NumFisiche, int* NumNoFisiche);
 | ||
| 
 | ||
| // Ritorna il numero di quadri L aggiuntivi 
 | ||
| int num_quadri_L_agg(const long codditta);   
 | ||
| 
 | ||
| // Ritorna il numero di quadri N,P,Q,R,S,T aggiuntivi
 | ||
| int num_quadri_N_agg(const long codditta);
 | ||
| 
 | ||
| // TRUE se la codditta e' sogg. dichiarante
 | ||
| bool sogg_dic    (const long codditta);    
 | ||
| // Ritorna il codice del sogg. dichiarante oppure 0
 | ||
| long sogg_estinto(const long codditta);
 | ||
| 
 | ||
| // Ritorna la ditta corrente selezionata
 | ||
| long get_firm_770();                    
 | ||
| // Setta la ditta 'codditta' come corrente
 | ||
| void set_firm_770(const long codditta);
 | ||
| 
 | ||
| 
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| //                
 | ||
| // Utility varie
 | ||
| //
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| bool ricerca(const TMask& m);
 | ||
| bool modifica(const TMask& m);
 | ||
| bool inserimento(const TMask& m);
 | ||
| // Ritorna il codice fiscale del titolare di codditta
 | ||
| const char* cod_fis(const long codditta);    
 | ||
| // Ritorna la descrizione della causale
 | ||
| const char* get_desc_cau(const char* codcau);
 | ||
| bool esiste_perc(char tipoa, const long codanag);   
 | ||
| // Ritorna l'indirizzo secondo la regola : prima domicilio poi residenza
 | ||
| // formattazione token_string : localit<69>|indirizzo|num.civico|cap|provincia 
 | ||
| TToken_string get_anag_address(char tip_anagr, long cod_anagr);        
 | ||
| 
 | ||
| ////////////////////////////////////////////////////////////////////////////
 | ||
| // E' un array sheet in cui si puo' decidere di visualizzare solo i 
 | ||
| // primi "visible" campi. I campi successivi vengono mantenuti in un
 | ||
| // TArray e possono essere letti da programma ma NON vengono visualizzati
 | ||
| ////////////////////////////////////////////////////////////////////////////
 | ||
| class TNikArray_sheet : public TArray_sheet
 | ||
| {
 | ||
|     TArray          _interno;
 | ||
|     int             _visible_items;
 | ||
|   public:             
 | ||
|     TNikArray_sheet(short x, short y, short dx, short dy, const char* caption,
 | ||
|                const char* head, byte buttons = 0, WINDOW parent = NULL_WIN,
 | ||
|                int visible=0)
 | ||
|      : TArray_sheet(x, y, dx, dy, caption,head, buttons),
 | ||
|        _visible_items(visible)  {}
 | ||
| 
 | ||
|     bool destroy(int i = -1);
 | ||
|     long add(TToken_string& s);
 | ||
|     TToken_string& row(int i);
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| //                
 | ||
| // Schede, versamenti, pagamenti, percipienti....
 | ||
| //
 | ||
| ////////////////////////////////////////////////////////////////////////
 | ||
| 
 | ||
| const int SCHEDA_NON_ESISTENTE = -2;
 | ||
| 
 | ||
| class TSchedaP
 | ||
| {    
 | ||
|   private:
 | ||
|     long      _codditta;
 | ||
|     char      _tipoa;
 | ||
|     long      _codanagr;
 | ||
|     int       _nprog;
 | ||
|     real      _spese_doc, _compenso_doc;
 | ||
|     TDate     _data_doc;
 | ||
| 
 | ||
|   public:
 | ||
|     bool  read();
 | ||
|     long  codditta() const { return _codditta; }
 | ||
|     char  tipoa()    const { return _tipoa; }
 | ||
|     long  codanagr() const { return _codanagr; }
 | ||
|     int   nprog()    const { return _nprog; }
 | ||
| 
 | ||
|     real    compenso_doc() const;
 | ||
|     real    spese_doc() const;  
 | ||
|     int     anno_doc() const;   
 | ||
|      
 | ||
|     bool operator == (const TSchedaP& sch) const 
 | ||
|     { 
 | ||
|       return (_codditta == sch.codditta() && _tipoa == sch.tipoa() &&
 | ||
|               _codanagr == sch.codanagr() && _nprog == sch.nprog()) ; 
 | ||
|     }
 | ||
|     
 | ||
|     bool operator != (const TSchedaP& sch) const 
 | ||
|     { 
 | ||
|       return (_codditta != sch.codditta() || _tipoa != sch.tipoa() ||
 | ||
|               _codanagr != sch.codanagr() || _nprog != sch.nprog()) ; 
 | ||
|     }
 | ||
| 
 | ||
|     bool not_empty() const { return _codditta != 0L && _tipoa != '\0' && 
 | ||
|                                     _codanagr != 0L && _nprog != 0; }
 | ||
|     bool ok() const { return not_empty(); }
 | ||
|     
 | ||
|     void set(const long codditta=0L, const char tipoa=0, const long codanagr=0L, const int nprog=0)
 | ||
|     { 
 | ||
|       _codditta=codditta; _tipoa=tipoa; _codanagr=codanagr; _nprog=nprog;
 | ||
|     }                            
 | ||
| // Cancella la scheda con tutte le sue righe di pag. e vers.
 | ||
|     int remove();
 | ||
|         
 | ||
|     TSchedaP (const long codditta=0L, const char tipoa=0, const long codanagr=0L, const int nprog=0);
 | ||
|     TSchedaP (const TRectype& rec);
 | ||
|     ~TSchedaP();
 | ||
| };
 | ||
| 
 | ||
| class TPercipiente
 | ||
| {    
 | ||
|   private:
 | ||
|     long  _codditta;
 | ||
|     char  _tipoa;
 | ||
|     long  _codanagr;
 | ||
| 
 | ||
|   public:
 | ||
|     long codditta() const { return _codditta; }
 | ||
|     char tipoa() const { return _tipoa; }
 | ||
|     long codanagr() const { return _codanagr; }
 | ||
| 
 | ||
|     bool not_empty() const { return _tipoa != '\0' && _codanagr != 0L; }
 | ||
|     bool ok() const { return not_empty(); }
 | ||
|         
 | ||
|     bool operator == (const TPercipiente& sch) const 
 | ||
|       { 
 | ||
|         return _tipoa == sch.tipoa() && _codanagr == sch.codanagr() ; 
 | ||
|       }
 | ||
|     
 | ||
|     bool operator != (const TPercipiente& sch) const 
 | ||
|       { 
 | ||
|         return _tipoa != sch.tipoa() || _codanagr != sch.codanagr() ; 
 | ||
|       }
 | ||
| 
 | ||
|     void set(const char tipoa=0, const long codanagr=0L)
 | ||
|     { 
 | ||
|       _tipoa=tipoa; _codanagr=codanagr;
 | ||
|     }                            
 | ||
| 
 | ||
| // Determina se esiste almeno una scheda per questo perc.
 | ||
|     bool esiste_scheda();
 | ||
| // Cancella tutte le schede di questo percipiente
 | ||
|     bool elimina_schede();        
 | ||
| 
 | ||
|     TPercipiente (const long codditta=0L, const char tipoa='\0', const long codanagr=0L) :
 | ||
|       _codditta(codditta), _tipoa(tipoa), _codanagr(codanagr) {}  
 | ||
| 
 | ||
|     TPercipiente (const TRectype& rec);
 | ||
| };
 | ||
| 
 | ||
| class TVersamento
 | ||
| {    
 | ||
|   protected:
 | ||
|     long    _codditta;
 | ||
|     char    _tipoa;
 | ||
|     long    _codanagr;
 | ||
|     int     _nprog;
 | ||
|     int     _nriga;
 | ||
|     real    _importo_versato;
 | ||
|     
 | ||
|   public:
 | ||
|     long  codditta() const { return _codditta; }
 | ||
|     char  tipoa()    const { return _tipoa; }
 | ||
|     long  codanagr() const { return _codanagr; }
 | ||
|     int   nprog()    const { return _nprog; }
 | ||
|     int   nriga()    const { return _nriga; }
 | ||
|     real    importo_versato() const { return _importo_versato; }
 | ||
|     
 | ||
|     void  set_importo_versato(real& imp) { _importo_versato = imp; }
 | ||
|     
 | ||
|     virtual TVersamento& operator = (const TVersamento& sch)
 | ||
|     { 
 | ||
|       _codditta = sch.codditta();
 | ||
|       _tipoa    = sch.tipoa();
 | ||
|       _codanagr = sch.codanagr();
 | ||
|       _nprog    = sch.nprog();
 | ||
|       _nriga    = sch.nriga();   
 | ||
|       return *this;
 | ||
|     }
 | ||
|     
 | ||
|     bool operator == (const TVersamento& sch) const 
 | ||
|     { 
 | ||
|       return (_codditta == sch.codditta() && _tipoa == sch.tipoa() &&
 | ||
|               _codanagr == sch.codanagr() && _nprog == sch.nprog() &&
 | ||
|               _nriga    == sch.nriga()) ; 
 | ||
|     }
 | ||
|     
 | ||
|     bool operator != (const TVersamento& sch) const 
 | ||
|     { 
 | ||
|       return (_codditta != sch.codditta() || _tipoa != sch.tipoa() ||
 | ||
|               _codanagr != sch.codanagr() || _nprog != sch.nprog() ||
 | ||
|               _nriga    != sch.nriga()) ; 
 | ||
|     }
 | ||
| 
 | ||
|     virtual void set(const long codditta=0L, const char tipoa=0, const long codanagr=0L, const int nprog=0, const int nriga=0, const real& impvers=ZERO);
 | ||
|     virtual void set(TToken_string& row);
 | ||
|     
 | ||
|     bool not_empty() const { return _codditta != 0L && _tipoa != '\0' && 
 | ||
|                                     _codanagr != 0L && _nprog != 0 && _nriga != 0; }
 | ||
|     
 | ||
|     bool ok() const { return not_empty(); }
 | ||
|     
 | ||
|     TVersamento (const long codditta=0L, const char tipoa=0, const long codanagr=0L, const int nprog=0, const int nriga=0, const real& impvers=ZERO) :
 | ||
|       _codditta(codditta), _tipoa(tipoa), _codanagr(codanagr), _nprog(nprog), _nriga(nriga) 
 | ||
|     {}  
 | ||
| 
 | ||
|     TVersamento(const TRectype& rec);
 | ||
| };
 | ||
| 
 | ||
| // per suddividere il versamento sui vari pagamenti
 | ||
| // e per ricordarsi i versamenti gia' visti
 | ||
| class TVersamento_stampa : public TVersamento
 | ||
| {
 | ||
|   private:
 | ||
|     TAssoc_array  _vers;  
 | ||
|     real      _importo_versato_residuo;
 | ||
|     real      _importo_versato;
 | ||
|     int       _status;  // esito read_pags
 | ||
|     int       _num_pags;  // numero di pagamenti collegati    
 | ||
|     bool      _gia_letti_pag;
 | ||
|     int       _num_last_pag;  // numero dell'ultimo pagamento
 | ||
|     
 | ||
|   public:    
 | ||
|     virtual void set(const long codditta=0L, const char tipoa=0, const long codanagr=0L, const int nprog=0, const int nriga=0, const real& impvers=ZERO);
 | ||
|     virtual TVersamento_stampa& operator = (const TVersamento_stampa& sch)
 | ||
|     { 
 | ||
|       _codditta = sch.codditta();
 | ||
|       _tipoa    = sch.tipoa();
 | ||
|       _codanagr = sch.codanagr();
 | ||
|       _nprog    = sch.nprog();
 | ||
|       _nriga    = sch.nriga();   
 | ||
|       _importo_versato = sch.importo_versato();
 | ||
|       return *this;
 | ||
|     }
 | ||
| 
 | ||
|     int   read_pags(TLocalisamfile* pagf=NULL);   // legge i pagamenti collegati
 | ||
|     int   num_pags(TLocalisamfile* pag=NULL);
 | ||
|     bool  last_pag(const int npag) const { return npag == _num_last_pag; }
 | ||
|     real  importo_versato() const { return _importo_versato; }
 | ||
|     void  set_importo_versato(const real& imp) { _importo_versato = imp; }
 | ||
| 
 | ||
|     void  add(TVersamento& vers);
 | ||
|     bool  find(TVersamento& vers);
 | ||
| 
 | ||
|     real  vers_stampa(TLocalisamfile* rpag, const int nriga_pag, const real& vers, const real& rit);
 | ||
|     real  importo_versato_residuo() const { return _importo_versato_residuo; }
 | ||
| 
 | ||
|     TVersamento_stampa(const long codditta=0L, const char tipoa=0, const long codanagr=0L, const int nprog=0, const int nriga=0, const real& impvers=ZERO);
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| ////////////////////////////////////////////////////////////////////////////
 | ||
| // Collegamento CG - 770
 | ||
| ////////////////////////////////////////////////////////////////////////////
 | ||
| 
 | ||
| typedef enum { nessuno=0, fattura=1, pagamento=3, versamento=4,
 | ||
|                occasionale=6, pagamento_piu_perc=7 } TTipo_coll;
 | ||
| 
 | ||
| struct TLink770
 | ||
| {
 | ||
|   TTipo_coll  _tipo_coll;
 | ||
|   char      _immissione;
 | ||
|   char      _tipo;
 | ||
|   long      _codanagr;
 | ||
|   long      _numreg;
 | ||
|   TString16   _numdoc;
 | ||
|   TString16   _datadoc;
 | ||
|   real      _spese;
 | ||
|   real      _compenso;
 | ||
|   real      _imposte;
 | ||
|   real      _ritenute;
 | ||
|   real      _totdoc;
 | ||
|              
 | ||
|   bool read(const char* msg);
 | ||
|                
 | ||
|   TLink770();
 | ||
| };
 | ||
| 
 | ||
| // struttura completa riga di pagamento   
 | ||
| // con overloading dell'operatore di confronto "=="
 | ||
| // con overloading dell'operatore di assegnazione da un TRectype
 | ||
| struct Pag_struct
 | ||
| {
 | ||
|   TDate datapag;
 | ||
|   real imponibile;
 | ||
|   real perc;
 | ||
|   real ritenuta;
 | ||
|   real compenso;
 | ||
|   real netto;
 | ||
|   long numvers;
 | ||
|   real spesa;
 | ||
|   real ctssnperc;
 | ||
|   real ctssncomp;
 | ||
|   real ritlorda;
 | ||
|   real controbb;
 | ||
|   real detfamil;
 | ||
|   real detlavdip;
 | ||
|   real totdet;
 | ||
|   int giolavdip;
 | ||
|   real impcpa;
 | ||
|   real somregconv;
 | ||
|   real alqimp10;
 | ||
|   TString16 cod10;
 | ||
|   real utpagati;
 | ||
|   real utspett;
 | ||
|   real ritutpag;
 | ||
|   real ritutspe; 
 | ||
|   real nquote;  
 | ||
|   real somnsrit;
 | ||
|   real ammlordo;
 | ||
|   real quotaprov;
 | ||
|   real impnetto;
 | ||
|   real comnetto; 
 | ||
| 	long numreg;
 | ||
|   
 | ||
|   // overloading operatore di confronto
 | ||
|   int operator==(Pag_struct& s);        
 | ||
|   
 | ||
|   // overloading operatore di assegnazione
 | ||
|   // ritorna per riferimento la struttura
 | ||
|   // compilata con i valori del record passato
 | ||
|   Pag_struct& operator=(TRectype & rec);  
 | ||
|   
 | ||
|   // overloading operatore di assegnazione
 | ||
|   // ritorna per riferimento la struttura
 | ||
|   // incrementata dai valori della struttura passata 
 | ||
|   Pag_struct& operator+=(Pag_struct& s); 
 | ||
| };  
 | ||
| 
 | ||
| #endif
 | ||
| 
 |