git-svn-id: svn://10.65.10.50/branches/R_10_00@22903 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			147 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| // gestione tabelle di modulo contabilità
 | |
| 
 | |
| #include <automask.h>
 | |
| #include <modtbapp.h>
 | |
| 
 | |
| #include "fetbcon.h"
 | |
| 
 | |
| ///////////////////////////////////////////////////////////
 | |
| // Maschera gestione contratti FE
 | |
| ///////////////////////////////////////////////////////////
 | |
| 
 | |
| class TFE_contract_mask : public TAutomask
 | |
| {
 | |
|   enum { MAX_RATE = 4 };
 | |
|   TSheet_field& rate_sheet() const { return sfield(F_CON_RATE); }
 | |
| 
 | |
| protected:
 | |
| 	virtual bool on_field_event(TOperable_field &o, TField_event e, long jolly);
 | |
|   virtual void autoload(const TRelation& rel);
 | |
|   virtual void autosave(TRelation& rel) const;
 | |
| 
 | |
| public:
 | |
| 	TFE_contract_mask() : TAutomask("fetbcon") {}
 | |
| };
 | |
| 
 | |
| // carica i normalmente i campi standard e la sequenza degli R* nello sheet
 | |
| void TFE_contract_mask::autoload(const TRelation& rel)
 | |
| {
 | |
|   TAutomask::autoload(rel);
 | |
| 
 | |
|   TSheet_field& s = rate_sheet();
 | |
|   s.destroy();
 | |
|   const TRectype& curr = rel.curr();
 | |
| 
 | |
|   char anno[] = "I0"; // I[0,1,2,3] contengono i 4 anni solari
 | |
|   char imp[]  = "R0"; // R[0,2,4,6] contengono i 4 importi annuali
 | |
|   char iva[]  = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali
 | |
| 
 | |
|   for (int i = 0; i < MAX_RATE; i++)
 | |
|   {
 | |
|     TToken_string& row = s.row(i);
 | |
|     row.add(curr.get(anno));
 | |
|     row.add(curr.get(imp));
 | |
|     row.add(curr.get(iva));
 | |
|     anno[1]++; // I0 -> I1
 | |
|     imp[1]+=2; // R0 -> R2
 | |
|     iva[1]+=2; // R1 -> R3
 | |
|   }
 | |
| }
 | |
| 
 | |
| // salva i normalmente i campi standard e la sequenza degli R* dallo sheet
 | |
| void TFE_contract_mask::autosave(TRelation& rel) const
 | |
| {
 | |
|   TAutomask::autosave(rel);
 | |
|   TSheet_field& s = rate_sheet();
 | |
|   TRectype& curr = rel.curr();
 | |
| 
 | |
|   char anno[] = "I0"; // I[0,1,2,3] contengono i 4 anni solari
 | |
|   char imp[]  = "R0"; // R[0,2,4,6] contengono i 4 importi annuali
 | |
|   char iva[]  = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali
 | |
| 
 | |
|   for (int i = 0; i < s.items() && i < MAX_RATE; i++)
 | |
|   {
 | |
|     TToken_string& row = s.row(i);
 | |
|     curr.put(anno, row.get(0));
 | |
|     curr.put(imp, row.get());
 | |
|     curr.put(iva, row.get());
 | |
|     anno[1]++; // I0 -> I1
 | |
|     imp[1]+=2; // R0 -> R2
 | |
|     iva[1]+=2; // R1 -> R3
 | |
|   }
 | |
| }
 | |
| 
 | |
| bool TFE_contract_mask::on_field_event(TOperable_field &o, TField_event e, long jolly)
 | |
| {
 | |
|   if (o.is_sheet())
 | |
|   {
 | |
|     switch (e)
 | |
|     {
 | |
|     case fe_init:
 | |
|       if (o.mask().mode() == MODE_INS)
 | |
|       {
 | |
|         TSheet_field& s = (TSheet_field&)o;
 | |
|         for (int i = s.items(); i < MAX_RATE; i++)
 | |
|           s.row(i);
 | |
|         s.force_update();
 | |
|       }
 | |
|       break;
 | |
|     case se_query_add:
 | |
|     case se_query_del:
 | |
|       return false; // Non permetto aggiunta/cancellazione di righe
 | |
|     default: break;
 | |
|     }
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     switch (o.dlg())
 | |
|     {
 | |
|     case R_CON_ANNO:
 | |
|       if (e == fe_modify && !o.empty() && jolly > 0)
 | |
|       {
 | |
|         const int anno_prec = atoi(rate_sheet().cell(jolly-1, o.dlg()));
 | |
|         const int anno_corr = atoi(o.get());
 | |
|         if (anno_corr <= anno_prec)
 | |
|           return error_box(TR("Inserire un anno successivo al %d"), anno_prec);
 | |
|       }
 | |
|       break;
 | |
|     default: break;
 | |
|     }
 | |
|   }
 | |
|   
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| ///////////////////////////////////////////////////////////
 | |
| // Applicazione generica di gestione tabelle di modulo
 | |
| ///////////////////////////////////////////////////////////
 | |
| 
 | |
| // applicazione per la gestione delle tabelle di lavanderia
 | |
| class TFE_table_app : public TTable_module_application
 | |
| {
 | |
| protected:  // TRelation_application 
 | |
|   virtual TMask* user_create_mask();
 | |
| public:
 | |
| };
 | |
| 
 | |
| // Ridefinire questo metodo per le eventuali maschere speciali
 | |
| // che abbiano controlli speciali da effettuare nella on_field_event
 | |
| TMask* TFE_table_app::user_create_mask()
 | |
| {
 | |
|   TMask* m = NULL;
 | |
|   const TString4 name = get_relation()->file(0).name();
 | |
|   if (name == "CON")
 | |
|     m = new TFE_contract_mask;
 | |
|   else
 | |
|     m = TTable_module_application::user_create_mask();
 | |
| 
 | |
|   return m;
 | |
| }
 | |
| 
 | |
| int fe0200(int argc, char* argv[])
 | |
| {
 | |
|   TFE_table_app a;
 | |
|   a.run(argc, argv, TR("Tabella Spesometro"));
 | |
|   return 0;
 | |
| }
 |