143 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #ifndef __CGLIB03_H
 | |
| #include "cglib03.h"
 | |
| #endif
 | |
| 
 | |
| ///////////////////////////////////
 | |
| // classe TInteressi_IVA_table   //
 | |
| // per la lettura versamenti e   //
 | |
| // e interessi IVA dalla tabella //
 | |
| ///////////////////////////////////
 | |
| 
 | |
| TInteressi_IVA_table::TInteressi_IVA_table()
 | |
| {
 | |
|   _ver = new TTable("%VER");
 | |
| }
 | |
| 
 | |
| TInteressi_IVA_table::~TInteressi_IVA_table()
 | |
| {
 | |
|   delete _ver;
 | |
| }
 | |
| 
 | |
| int TInteressi_IVA_table::read(int anno, int mese)
 | |
| {
 | |
|   TString k;
 | |
|   k.format("%d%02d",anno,mese);
 | |
|   _ver->zero();_ver->put("CODTAB",k);
 | |
|   if (_ver->read(_isgteq) == NOERR)
 | |
|   {
 | |
|     TString cod = _ver->get("CODTAB");
 | |
|     
 | |
|     if (cod > k)
 | |
|       if (_ver->prev() != NOERR)
 | |
|         _ver->zero();
 | |
|   }
 | |
|   else
 | |
|     if (_ver->last() != NOERR)
 | |
|       _ver->zero();
 | |
|   return _ver->status();
 | |
| }
 | |
| 
 | |
| real TInteressi_IVA_table::get(int what)
 | |
| {
 | |
|   TString fieldname;
 | |
|   fieldname.format("R%d",what);
 | |
|   return _ver->get_real(fieldname);
 | |
| }
 | |
| 
 | |
| ///////////////////////////////////////////////
 | |
| // TRigaiva_array 
 | |
| // Tabella per il calcolo degli imponibili Iva
 | |
| ///////////////////////////////////////////////
 | |
| 
 | |
| bool TRigaiva_array::add_riga(const real& imponibile, const real& imposta, const real& imponibilep, const real& impostap, const char* codiva, const int tipodet, const int tipocr, bool intra, const int tipoatt) 
 | |
| {
 | |
|   bool found = FALSE;
 | |
|   for (int i = 0; i < items(); i++)
 | |
|   {
 | |
|     TRigaiva& r = riga(i);
 | |
|     if (r._codiva==codiva && tipodet==r._tipodet && tipocr==r._tipocr && tipoatt==r._tipoatt)
 | |
|     {
 | |
|       found = TRUE;
 | |
|       r._imponibile  += imponibile;
 | |
|       r._imposta     += imposta;
 | |
|       r._imponibilep += imponibilep;
 | |
|       r._impostap    += impostap;
 | |
|     }
 | |
|   }
 | |
|   if (!found)
 | |
|   {
 | |
|     TRigaiva* r = new TRigaiva(imponibile,imposta,imponibilep,impostap,codiva,tipodet,tipocr,intra,tipoatt);
 | |
|     add(r);
 | |
|   }
 | |
|   return found;
 | |
| }
 | |
| 
 | |
| bool TRiga_array::add_riga(const real& imponibile, const real& imposta, const real& implordo, const real& imponibilep, const real& impostap, const real& implordop, const char* codiva) 
 | |
| {
 | |
|   bool found = FALSE;
 | |
|   for (int i = 0; i < items(); i++)
 | |
|   {
 | |
|     TRiga& r = riga(i);
 | |
|     if (r._codiva==codiva) 
 | |
|     {
 | |
|       found = TRUE;
 | |
|       r._imponibile  += imponibile;
 | |
|       r._imposta     += imposta;
 | |
|       r._implordo    += implordo;  
 | |
|       r._imponibilep += imponibilep;
 | |
|       r._impostap    += impostap;
 | |
|       r._implordop   += implordop;
 | |
|     }
 | |
|   }
 | |
|   if (!found)
 | |
|   {                                                
 | |
|     TRiga* r = new TRiga(imponibile,imposta,implordo,imponibilep,impostap,implordop,codiva);
 | |
|     add(r);
 | |
|   }
 | |
|   return found;
 | |
| }                                 
 | |
| 
 | |
| bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc) 
 | |
| {
 | |
|   bool found = FALSE;
 | |
|   for (int i = 0; i < items(); i++)
 | |
|   {
 | |
|     TDociva& r = riga(i);
 | |
|     if (r._descrdoc==_descrdociva) 
 | |
|     {
 | |
|       found = TRUE;
 | |
|       if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 9))//||(r._ndoc == 4))
 | |
|         r._totdociva += _importo;
 | |
|     }
 | |
|   }
 | |
|   if (!found)
 | |
|   {
 | |
|     if ((_natdoc == 1)||(_natdoc == 2)||(_natdoc == 9))//||(_natdoc == 4))
 | |
|     {
 | |
|       TDociva* r = new TDociva(_descrdociva,_importo,_natdoc);
 | |
|       add(r);
 | |
|     }
 | |
|   }
 | |
|   return found; 
 | |
| }  
 | |
| 
 | |
| bool TTipodoc_array::add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc) 
 | |
| {
 | |
|   bool found = FALSE;
 | |
|   for (int i = 0; i < items(); i++)
 | |
|   {
 | |
|     TTipodoc& r = (TTipodoc&)(*this)[i];
 | |
|     if (r._tipodoc==tipodoc) 
 | |
|     {
 | |
|       found = TRUE;
 | |
|       r._totdoc += totdoc;
 | |
|     }
 | |
|   }
 | |
|   if (!found)
 | |
|   {
 | |
|     TTipodoc* r = new TTipodoc(tipodoc,descrdoc,totdoc);
 | |
|     add(r);
 | |
|   }
 | |
|   return found;
 | |
| }
 |