git-svn-id: svn://10.65.10.50/branches/R_10_00@22756 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			231 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| // gestione tabelle di modulo hardy
 | ||
| 
 | ||
| #include <automask.h>
 | ||
| #include <modtbapp.h>
 | ||
| #include <recset.h>
 | ||
| #include <tabutil.h>
 | ||
| 
 | ||
| #include "halib.h"
 | ||
| 
 | ||
| #include "hatbatt.h"
 | ||
| #include "hatbcau.h"
 | ||
| #include "hatbcel.h"
 | ||
| 
 | ||
| ///////////////////////////////////////////////////////////
 | ||
| // Maschera generica di gestione tabelle hardy
 | ||
| ///////////////////////////////////////////////////////////
 | ||
| 
 | ||
| class THA_table_mask : public TAutomask
 | ||
| {
 | ||
| protected:
 | ||
| 	virtual bool on_field_event(TOperable_field &o, TField_event e, long jolly);
 | ||
| 
 | ||
| public:
 | ||
| 	THA_table_mask(const char* name) : TAutomask(name) {}
 | ||
| };
 | ||
| 
 | ||
| bool THA_table_mask::on_field_event(TOperable_field &o, TField_event e, long jolly)
 | ||
| {
 | ||
|   return true;
 | ||
| }
 | ||
| 
 | ||
| ///////////////////////////////////////////////////////////
 | ||
| // Applicazione generica di gestione tabelle hardy
 | ||
| ///////////////////////////////////////////////////////////
 | ||
| 
 | ||
| // applicazione per la gestione delle tabelle di lavanderia
 | ||
| class THA_table_app : public TTable_module_application
 | ||
| {
 | ||
|   bool _trans_done;
 | ||
| 
 | ||
| private:
 | ||
|   int update_gcg(const TRectype& att);
 | ||
| 
 | ||
| protected:  // TRelation_application 
 | ||
|   virtual bool protected_record(TRectype& record);
 | ||
|   virtual void init_query_mode(TMask& m);
 | ||
| 	virtual void init_query_insert_mode(TMask& m);
 | ||
|   virtual void init_insert_mode(TMask& m);
 | ||
|   virtual void init_modify_mode(TMask& m);
 | ||
| 
 | ||
|   virtual int write(const TMask& m);
 | ||
|   virtual int rewrite(const TMask& m);
 | ||
| 
 | ||
|   virtual bool get_next_key(TToken_string& key);
 | ||
| 
 | ||
| public:
 | ||
|   THA_table_app() : _trans_done(false) {}
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| bool THA_table_app::get_next_key(TToken_string& key)
 | ||
| {
 | ||
|   //casino per la tabella attrezzature "&ATT"
 | ||
|   const TFixed_string name = get_relation()->file(0).name();
 | ||
|   if (name == "ATT")
 | ||
|   {
 | ||
|     const TString& codart = curr_mask().get(F_CODART);
 | ||
|     if (codart.full())
 | ||
|     {
 | ||
|       const TString& codtab = hd_get_next_att_key(codart);
 | ||
|  
 | ||
|       //riempie la token_string con i dati richiesti
 | ||
|       key.add(F_CODART);
 | ||
|       key.add(codart);
 | ||
|       key.add(F_PROGRESSIVO);
 | ||
|       key.add(codtab.mid(5));
 | ||
|       return true;
 | ||
|     }
 | ||
|   }
 | ||
|   
 | ||
|   return TTable_module_application::get_next_key(key);
 | ||
| }
 | ||
| 
 | ||
| bool THA_table_app::protected_record(TRectype& record)
 | ||
| {
 | ||
|   const TFixed_string name = get_relation()->file(0).name();
 | ||
| 
 | ||
|   //tabella delle attrezzature
 | ||
|   //non si pu<70> eliminare una attrezzatura se la medesima ha una storia! rispettiamo gli anziani!
 | ||
|   if (name == "ATT")
 | ||
|   {
 | ||
|     const TString80 codattr = record.get("CODTAB");
 | ||
| 
 | ||
|     //controlla che l'attrezzatura non abbia record nella tabella della storia attrezzature
 | ||
|     TString query;
 | ||
|     query << "USE &HIS";
 | ||
|     query << "\nFROM CODTAB=#CODATTR";
 | ||
|     query << "\nTO CODTAB=#CODATTR";
 | ||
| 
 | ||
|     TISAM_recordset attr_recset(query);
 | ||
|     attr_recset.set_var("#CODATTR", codattr);
 | ||
|   
 | ||
|     const long items = attr_recset.items();
 | ||
|     return items > 0;
 | ||
|   }
 | ||
|   
 | ||
|   return false;
 | ||
| }
 | ||
| 
 | ||
| void THA_table_app::init_insert_mode(TMask& m)
 | ||
| {
 | ||
|   const TFixed_string name = get_relation()->file(0).name();
 | ||
|   if (name == "ATT")
 | ||
|   {
 | ||
|     m.hide(-2);
 | ||
|     m.show(-1);
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| void THA_table_app::init_modify_mode(TMask& m)
 | ||
| {
 | ||
|   const TFixed_string name = get_relation()->file(0).name();
 | ||
|   if (name == "ATT")
 | ||
|   {
 | ||
|     m.hide(-2);
 | ||
|     m.show(-1);
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| void THA_table_app::init_query_mode(TMask& m)
 | ||
| {
 | ||
|   const TFixed_string name = get_relation()->file(0).name();
 | ||
|   if (name == "CEL")
 | ||
|   {
 | ||
| 		m.hide(F_CODCLI1);
 | ||
| 		m.show(F_CODCLI);
 | ||
| 	} else
 | ||
|   if (name == "ATT")  //inizialmente vedo il gruppo 2 di SEARCH e non quello 1 di NEW
 | ||
|   {
 | ||
|     m.hide(-1);
 | ||
|     m.show(-2);
 | ||
|   }
 | ||
| 
 | ||
|   if (!_trans_done && argc() > 3)
 | ||
|   {
 | ||
|     _trans_done = true;
 | ||
|     const TFixed_string a = argv(3);
 | ||
|     if (a.starts_with("CODTAB="))
 | ||
|     {
 | ||
|       const TString& codtab = a.after("=");
 | ||
|       get_relation()->curr().put("CODTAB", codtab);
 | ||
|       FOR_EACH_MASK_FIELD(m, i, f) if (f->active() && f->field() != NULL && f->in_key(1))
 | ||
|       {
 | ||
|         const TFieldref* fref = f->field();
 | ||
|         if (fref->name() == "CODTAB")
 | ||
|         {
 | ||
|           const TString& val = fref->read(*get_relation());
 | ||
|           f->set(val);
 | ||
|         }
 | ||
|       }
 | ||
|       m.send_key(K_AUTO_ENTER, 0);
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| void THA_table_app::init_query_insert_mode(TMask& m)
 | ||
| {
 | ||
|   const TFixed_string name = get_relation()->file(0).name();
 | ||
|   if (name == "CEL")
 | ||
|   {
 | ||
|     m.hide(F_CODCLI);
 | ||
|     m.show(F_CODCLI1);
 | ||
|   }
 | ||
|   if (name == "ATT")
 | ||
|   {
 | ||
|     m.hide(-2); //in caso di 'nuovo' vedo il gruppo di NEW
 | ||
|     m.show(-1);
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| int THA_table_app::update_gcg(const TRectype& att)
 | ||
| {
 | ||
|   TTable gcg("GCG");
 | ||
|   TString str;
 | ||
|   str << '1' << att.get("CODTAB");
 | ||
|   gcg.put("CODTAB", str);
 | ||
| 
 | ||
|   str = TR("Matricola ");
 | ||
|   str <<  att.get("S0").mid(20,15);
 | ||
|   gcg.put("S0", str);
 | ||
|   
 | ||
|   const int err = gcg.rewrite_write();
 | ||
|   return err;
 | ||
| }
 | ||
| 
 | ||
| int THA_table_app::write(const TMask& m)
 | ||
| {
 | ||
|   const int err = TTable_module_application::write(m);
 | ||
| 
 | ||
|   if (err == NOERR)
 | ||
|   {
 | ||
|     const TFixed_string name = get_relation()->file(0).name();
 | ||
|     if (name == "ATT")
 | ||
|       update_gcg(get_relation()->curr());
 | ||
|   }
 | ||
| 
 | ||
|   return err;
 | ||
| }
 | ||
| 
 | ||
| int THA_table_app::rewrite(const TMask& m)
 | ||
| {
 | ||
|   const int err = TTable_module_application::rewrite(m);
 | ||
| 
 | ||
|   if (err == NOERR)
 | ||
|   {
 | ||
|     const TFixed_string name = get_relation()->file(0).name();
 | ||
|     if (name == "ATT")
 | ||
|       update_gcg(get_relation()->curr());
 | ||
|   }
 | ||
| 
 | ||
|   return err;
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| int ha0100(int argc, char* argv[])
 | ||
| {
 | ||
|   THA_table_app a;
 | ||
|   a.run(argc, argv, TR("Tabella Hardy"));
 | ||
|   return 0;
 | ||
| }
 |