Files correlati :ba5.exe Ricompilazione Demo : [ ] Commento :eliminato errore di compilazione legato alle modifiche in libreria dei commit di oggi 18/06 git-svn-id: svn://10.65.10.50/trunk@11241 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			177 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <config.h>
 | |
| #include <printer.h>
 | |
| #include <relapp.h>
 | |
| 
 | |
| #include "batbreg.h" 
 | |
| #include "tabreg.h" 
 | |
| #include "ba5200a.h"
 | |
| 
 | |
| #define REG_JOURNAL 5                
 | |
| 
 | |
| class TRegister_app : public TRelation_application
 | |
| {
 | |
|   TMask     *_msk;
 | |
|   TRelation *_rel; 
 | |
|   long       _oldditta;
 | |
|   int        _oldanno;
 | |
|   bool       _exist_journal;
 | |
|   bool       _stampa_intest;
 | |
| 
 | |
| protected:  // TRelation_application
 | |
|   virtual TMask* get_mask(int) { return _msk;}
 | |
|   virtual TRelation* get_relation() const { return _rel;}
 | |
|   virtual bool changing_mask(int) { return FALSE; }
 | |
|   virtual bool user_create() ;
 | |
|   virtual bool user_destroy();
 | |
|   virtual void init_insert_mode(TMask& m) ;
 | |
|   virtual void init_modify_mode(TMask& m);
 | |
|   virtual int rewrite(const TMask& m);
 | |
| 
 | |
|   static bool codsp_handler(TMask_field& f, KEY k);
 | |
| 
 | |
| public:
 | |
|   bool exist_journal() {return _exist_journal;}
 | |
|   
 | |
|   TRegister_app() : _exist_journal(FALSE), _stampa_intest(FALSE) {}
 | |
|   virtual ~TRegister_app() {}
 | |
| };
 | |
| 
 | |
| HIDDEN inline TRegister_app& app() { return (TRegister_app&) main_app();}
 | |
| 
 | |
| void TRegister_app::init_insert_mode(TMask& m) 
 | |
| {
 | |
|   const long ditta = get_firm();
 | |
|   const int anno = atoi(m.get(F_ANNO));
 | |
| 
 | |
|   m.set(F_STAMPA_INTESTAZIONE, _stampa_intest ? "X" : "");
 | |
| 
 | |
|   if (ditta != _oldditta || anno != _oldanno)
 | |
|   {
 | |
|     _oldditta = ditta;
 | |
|     _oldanno = anno;
 | |
|     
 | |
|     TLocalisamfile tabreg(LF_TABREG);
 | |
|     
 | |
|     tabreg.zero();
 | |
|     tabreg.put(DITTA, ditta);
 | |
|     tabreg.put(ANNO, anno);
 | |
| 
 | |
|     TRectype to(tabreg.curr());
 | |
|     _exist_journal = FALSE;
 | |
| 
 | |
|     for (tabreg.read(_isgteq); !_exist_journal && tabreg.good() && tabreg.curr() <= to; tabreg.next())
 | |
|       _exist_journal = (tabreg.get_long(TIPO) == REG_JOURNAL);
 | |
|   }  
 | |
| }
 | |
| 
 | |
| void TRegister_app::init_modify_mode(TMask& m) 
 | |
| {             
 | |
|   TRelation_application::init_modify_mode(m);
 | |
|   TString16 config;
 | |
|   config.format("REG%05ld", m.get_long(F_CODDITTA));
 | |
|   config << m.get(F_CODICE);
 | |
|   TConfig ini(CONFIG_STAMPE, config);              
 | |
|   const int what = ini.get_int("Type", NULL, -1, -1);
 | |
|   m.set(F_CONFIG, what >= 0 ? "X" : "");
 | |
|   m.enable(F_CONFIG, what >= 0);
 | |
| }  
 | |
| 
 | |
| HIDDEN bool tiporeg_handler(TMask_field& f, KEY k)
 | |
| {
 | |
|   if ((k == K_TAB || k == K_ENTER) && app().exist_journal() &&
 | |
|       (atoi(f.get()) == REG_JOURNAL)
 | |
|       )
 | |
|     return f.error_box(TR("Non e' possibile avere due registri giornale nello stesso anno"));
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| HIDDEN bool printer_handler(TMask_field& f, KEY k)
 | |
| {        
 | |
|   if (k == K_SPACE)
 | |
|   {                  
 | |
|     TMask& m = f.mask();
 | |
|     if (!m.query_mode())
 | |
|     {
 | |
|       TString16 config;
 | |
|       config.format("REG%05ld", m.get_long(F_CODDITTA));
 | |
|       config << m.get(F_CODICE);
 | |
|   
 | |
|       if (config.len() > 8)                   // REG+ANNO+CODICE di tre caratteri
 | |
|       {
 | |
|         TPrinter& p = printer();
 | |
|         p.set_printtype(winprinter);           // Force configuration update
 | |
|         p.read_configuration(config);
 | |
|         if (p.set())
 | |
|         {
 | |
|           m.enable(F_CONFIG);
 | |
|           m.set(F_CONFIG, "X");
 | |
|         }  
 | |
|         p.read_configuration();
 | |
|       }   
 | |
|       else 
 | |
|         return f.error_box(TR("Nessun registro selezionato")); 
 | |
|     }    
 | |
|   }                                    
 | |
|   return TRUE;  
 | |
| }
 | |
| 
 | |
| bool TRegister_app::user_create()
 | |
| {
 | |
|   _msk = new TMask("ba5200a");
 | |
|   _rel = new TRelation(LF_TABREG);
 | |
|   
 | |
|   _msk->set_handler(F_TIPO, tiporeg_handler);
 | |
|   _msk->set_handler(F_PRINTER, printer_handler);
 | |
|   _msk->set_handler(F_CODSPEC, codsp_handler);
 | |
|     
 | |
|   TConfig st(CONFIG_STUDIO, "cg");
 | |
|   _stampa_intest = st.get_bool("StiReg");
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TRegister_app::user_destroy()
 | |
| {
 | |
|   delete _msk ;
 | |
|   delete _rel ;
 | |
|   return TRUE ;
 | |
| }             
 | |
| 
 | |
| int TRegister_app::rewrite(const TMask& m)
 | |
| {
 | |
|   if (!m.get_bool(F_CONFIG))
 | |
|   {
 | |
|     TString16 config;
 | |
|     config.format("REG%05ld", m.get_long(F_CODDITTA));
 | |
|     config << m.get(F_CODICE);
 | |
|     TConfig ini(CONFIG_STAMPE, config);
 | |
|     const int what = ini.get_int("Type", NULL, -1, -1);
 | |
|     if (what >= 0)
 | |
|       ini.set("Type", -1);
 | |
|   }
 | |
|   
 | |
|   return TRelation_application::rewrite(m);
 | |
| }
 | |
| 
 | |
| bool TRegister_app::codsp_handler(TMask_field& f, KEY k)
 | |
| {                       
 | |
|   TMask & m = f.mask();
 | |
|   if (f.to_check(k) || !m.is_running())
 | |
|   { 
 | |
|     TString16 codsp(f.get());
 | |
|     const int len = codsp.len();
 | |
|     if (len == 1 || len == 3)
 | |
|     {   
 | |
|       codsp.insert(" ");    
 | |
|       f.set(codsp);
 | |
|     }
 | |
|   }          
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| int ba5200(int argc, char* argv[])
 | |
| {
 | |
|   TRegister_app a ;
 | |
|   a.run(argc, argv, TR("Gestione registri"));
 | |
|   return 0;
 | |
| }
 |