in modo che utilizzasse la tabella %VER. git-svn-id: svn://10.65.10.50/trunk@2770 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			137 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //Gestione acconti: questo assurdo prg viene usato solo se ho un acconto da versare
 | |
| //(cosa stabilita dal prg di calcolo acconti) e serve per versare meno, cioe'
 | |
| //per frodare il fisco.
 | |
| #include <relapp.h>
 | |
| #include <config.h>
 | |
| #include <msksheet.h>
 | |
| #include <tabutil.h>
 | |
| #ifndef __CGLIB03_H
 | |
| #include "cglib03.h"
 | |
| #endif
 | |
| #include "cg4700.h"
 | |
| 
 | |
| 
 | |
| class GesAcc_app : public TRelation_application
 | |
| {
 | |
|     TRelation*       _rel;
 | |
|     TMask*           _mask; 
 | |
|     TTable*          _lim; 
 | |
|   
 | |
|   private:               
 | |
|     static bool msk_credito(TMask_field&, KEY);
 | |
|     static bool msk_acconto(TMask_field&, KEY);    
 | |
|     
 | |
|   protected:
 | |
|     virtual bool       user_create();
 | |
|     virtual bool       user_destroy();
 | |
|     virtual TRelation* get_relation() const { return _rel; }
 | |
|     virtual TMask*     get_mask(int mode);
 | |
|     virtual bool       changing_mask(int mode) {return FALSE; }
 | |
|     //virtual int        rewrite(const TMask&);
 | |
|     //virtual void       init_query_mode (TMask&);
 | |
|     //virtual void       init_query_insert_mode (TMask&);
 | |
| };                    
 | |
| 
 | |
| inline GesAcc_app& app() 
 | |
| {
 | |
|   return (GesAcc_app&) main_app();
 | |
| }
 | |
| 
 | |
| bool GesAcc_app::user_create()
 | |
| { 
 | |
|   _lim = new TTable("LIM");
 | |
|   _rel = new TRelation("%LIA");
 | |
|   
 | |
|   _mask = new TMask("cg4700a");
 | |
|   _mask->set_handler(F_ACCONTO, msk_acconto);
 | |
|   _mask->set_handler(F_CREDITO, msk_credito);
 | |
|   
 | |
|   set_search_field(F_CODDITTA);
 | |
|   
 | |
|   return TRUE; 
 | |
| }
 | |
| 
 | |
| bool GesAcc_app::user_destroy()
 | |
| {                                  
 | |
|   delete _mask;
 | |
|   delete _lim; 
 | |
|   delete _rel;
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool GesAcc_app::msk_credito(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER)
 | |
|   {
 | |
|     real credito (f.get());
 | |
|     real acconto (f.mask().get(F_ACCONTO));
 | |
|     if (credito.sign() < 0)
 | |
|        return f.error_box("Introdurre un valore non negativo");
 | |
|     if (credito > acconto)
 | |
|       return f.error_box("Il credito non puo' essere superiore all'acconto");
 | |
|     if (acconto.is_zero())
 | |
|       if (!credito.is_zero())
 | |
|         return f.error_box("Non e' possibile indicare il credito se l'acconto e' nullo");
 | |
|   }
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool GesAcc_app::msk_acconto(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER)
 | |
|   {
 | |
|     real credito (f.mask().get(F_CREDITO));
 | |
|     real acconto (f.get());
 | |
|     TInteressi_IVA_table ver;
 | |
|     if (ver.read(f.mask().get_int(F_ANNO),12)!=NOERR)
 | |
|       warning_box("Errore %d in lettura tabella versamenti ed interessi.",ver.status());
 | |
|     real acconto_meno_credito = ver.get(I_ACCONTOIVA);
 | |
|     if (!acconto.is_zero())
 | |
|     {
 | |
|       if (acconto.sign() < 0)
 | |
|         return f.error_box("Introdurre un valore non negativo"); 
 | |
|       if (acconto - credito < acconto_meno_credito)   
 | |
|         return f.error_box("La differenza tra acconto e credito deve essere superiore a lire %s", acconto_meno_credito.string("."));
 | |
|     }
 | |
|   }  
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| /*** Deve farlo il programma di stampa versamenti!
 | |
| int GesAcc_app::rewrite(const TMask& m)
 | |
| {
 | |
|   TString16 chiave;
 | |
|   int anno = m.get_int(F_ANNO);
 | |
|   
 | |
|   chiave << anno << 12;
 | |
|   
 | |
|   TTable lim ("LIM");
 | |
|   lim.put("CODTAB", chiave);
 | |
|   if (lim.read() == NOERR)
 | |
|   {
 | |
|    real new_acc (m.get(F_ACCONTO));
 | |
|    real new_cred = lim.get_real("R12") - lim.get_real("R11") + new_acc;
 | |
|    lim.put("R11", new_acc);
 | |
|    lim.put("R12", new_cred);
 | |
|    lim.put("R0",  lim.get_real("R13")- new_cred);   
 | |
|    lim.rewrite();
 | |
|   } 
 | |
|    
 | |
|   m.autosave(_rel);
 | |
|   return _rel->rewrite();
 | |
| }    
 | |
| ***/
 | |
| 
 | |
| TMask* GesAcc_app::get_mask(int mode)
 | |
| {
 | |
|   return _mask;
 | |
| }
 | |
| 
 | |
| int cg4700(int argc, char* argv[])
 | |
| {
 | |
|   GesAcc_app app;
 | |
|   app.run(argc, argv, "Gestione acconti");
 | |
|   return 0;
 | |
| }
 |