balzanerie di GPF. git-svn-id: svn://10.65.10.50/trunk@3080 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			772 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			772 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| 
 | |
| #include <applicat.h>
 | |
| #include <tabapp.h>  
 | |
| #include <strings.h>
 | |
| #include <stdtypes.h>
 | |
| #include <tabutil.h>
 | |
| #include <utility.h> 
 | |
| #include <prefix.h>    
 | |
| #include <nditte.h>
 | |
| 
 | |
| #include "..\ba\batbind.h"
 | |
| #include "cglib04.h"
 | |
| 
 | |
| class Tabinv_application : public Tab_application
 | |
| {
 | |
| private:
 | |
|   TMask*         _msk;     
 | |
|   TString        _tabname;
 | |
|   TTransfer_file _tras_file;
 | |
|   
 | |
|   TString _trasf,_control_rec;                   
 | |
|   long    _ditta_tab, _ditta_tras;  
 | |
|   bool    _disable,_ditte_uguali,_salta_hnd,_messaggio;
 | |
|   
 | |
| public:
 | |
|   bool user_create();
 | |
|   virtual void init_query_mode(TMask&);
 | |
|   virtual void init_modify_mode(TMask&);
 | |
|   virtual void init_insert_mode(TMask&);
 | |
|   virtual int  write(const TMask& m);
 | |
|   virtual int  rewrite(const TMask& m);
 | |
| 
 | |
|   void leggi_trasfer();
 | |
|   char cerca_stato(long codditta);
 | |
|   
 | |
|   static bool controlli_hnd (TMask_field& f, KEY k);
 | |
|   
 | |
|   static bool nascosto_handler(TMask& m, KEY k);    
 | |
|   static bool stato_invio     (TMask_field& f, KEY k);
 | |
|   
 | |
|   static bool ditta_handler (TMask_field& f, KEY k); 
 | |
|   static bool almeno_un_flag(TMask_field& f, KEY k);
 | |
|   static bool clifo_comune  (TMask_field& f, KEY k);
 | |
|   static bool pcon_comune   (TMask_field& f, KEY k);    
 | |
|   static bool prima_nota    (TMask_field& f, KEY k);    
 | |
|   static bool iva           (TMask_field& f, KEY k);    
 | |
|   static bool saldaconto    (TMask_field& f, KEY k);        
 | |
|   static bool data_invio    (TMask_field& f, KEY k);
 | |
|   static bool sigla_file    (TMask_field& f, KEY k);    
 | |
|   static bool chiave_file   (TMask_field& f, KEY k);
 | |
| 
 | |
|   static bool nome_id       (TMask_field& f, KEY k);      
 | |
|   
 | |
|   void   setta_chiave       (TMask& m);
 | |
| 
 | |
|   Tabinv_application() {}
 | |
|   virtual ~Tabinv_application() {}
 | |
| };
 | |
| 
 | |
| HIDDEN inline Tabinv_application& app() {return (Tabinv_application&) main_app();}
 | |
| 
 | |
| char Tabinv_application::cerca_stato(long ditta)
 | |
| {
 | |
|   TTable ind ("%IND");
 | |
|   TString dep;
 | |
|   char    stato = '\0';
 | |
|   
 | |
|   dep = format("%05d", ditta);
 | |
|   
 | |
|   ind.zero();
 | |
|   ind.put("CODTAB", dep);
 | |
|   if (ind.read() == NOERR)
 | |
|     stato = ind.get_char("S6");
 | |
|   
 | |
|   return stato;  
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::nascosto_handler(TMask& m, KEY k)
 | |
| {
 | |
|   if (k == K_SHIFT+K_F12)
 | |
|   { 
 | |
|     if (app()._tabname == "%IND")
 | |
|     {             
 | |
|       app()._disable = FALSE;
 | |
|       
 | |
|       m.enable(F_NUMULINV);
 | |
|       m.enable(F_DATAULIN);
 | |
|       m.enable(F_STATO);
 | |
| 
 | |
|       if ( (app()._ditta_tab == app()._ditta_tras) && m.mode() != MODE_INS)   
 | |
|       {
 | |
|         m.enable(F_USELAB);
 | |
|         m.enable(F_CHIAVE);
 | |
|       }
 | |
|     }
 | |
|     else
 | |
|       if (app()._tabname == "%INS")
 | |
|       {
 | |
|         m.enable(F_DITTAINV);
 | |
|         app()._salta_hnd = TRUE;
 | |
|       }
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::stato_invio(TMask_field& f, KEY k)
 | |
| {
 | |
|   if ( (k == K_ENTER || k == K_TAB) && f.mask().mode() != MODE_QUERY )
 | |
|   {                                
 | |
|     if ( k == K_ENTER)
 | |
|     {                  
 | |
|       TString stato = f.get();
 | |
|       int num = f.mask().get_int(F_NUMULINV);
 | |
|       TString sigla = f.mask().get(F_USELAB);
 | |
|       
 | |
|       if (num == 0 && stato != "")
 | |
|         return error_box("Numero ultimo invio NON INDICATO: impossibile indicare lo stato ultimo invio");  
 | |
|     
 | |
|       if ( (stato == "F" && sigla == "") || (stato == "D" && sigla != "") )
 | |
|         return error_box("La sigla ultimo file elaborato deve essere indicata se lo stato ultimo invio e' uguale a F");    
 | |
|     }
 | |
|     
 | |
|     if (k == K_TAB && app()._messaggio)
 | |
|     { 
 | |
|       long codditta = f.mask().get_long(F_DITTAINV);
 | |
|       
 | |
|       char stato = app().cerca_stato(codditta);
 | |
|       
 | |
|       if (stato != '\0' && app()._disable)
 | |
|       {
 | |
|         app()._messaggio = FALSE; 
 | |
|         return message_box("Rilevato STATO DI RIPARTENZA: prima concludere il trasferimento");    
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::ditta_handler(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_TAB && f.mask().mode() == MODE_QUERY)
 | |
|   { 
 | |
|     long codditta = f.mask().get_long(F_DITTAINV);
 | |
|     
 | |
|     if (codditta != 0)
 | |
|     {
 | |
|       if (!prefix().exist(codditta))
 | |
|       {
 | |
|         f.error_box("La ditta selezionata non e' abilitata per la contabilita' ");
 | |
|         return FALSE;
 | |
|       }
 | |
|     }  
 | |
|   }   
 | |
|   if (k == K_TAB)
 | |
|   {
 | |
|     TLocalisamfile ditte (LF_NDITTE);
 | |
|   
 | |
|     long ditta = f.mask().get_long(F_DITTAINV);
 | |
|   
 | |
|     ditte.setkey(1);
 | |
|     ditte.zero();
 | |
|     ditte.put(NDT_CODDITTA, ditta);
 | |
|     if (ditte.read() == NOERR)
 | |
|     {
 | |
|       TString ragsoc = ditte.get(NDT_RAGSOC);
 | |
|       f.mask().set(F_RAGSOC, ragsoc);
 | |
|     }  
 | |
|     else
 | |
|       f.mask().set(F_RAGSOC, "");
 | |
| 
 | |
|     app()._ditta_tab = f.mask().get_long(F_DITTAINV);
 | |
|     
 | |
|     if (app()._ditta_tab == app()._ditta_tras) 
 | |
|     { 
 | |
|       TTable ind ("%IND");
 | |
|       TString dep;
 | |
|   
 | |
|       dep = format("%05d", app()._ditta_tab);
 | |
|     
 | |
|       ind.zero();
 | |
|       ind.put("CODTAB", dep);
 | |
|       if (ind.read() == NOERR)
 | |
|       {                
 | |
|         TString uselab = app()._tras_file.ult_file();
 | |
|         TString chiave = app()._tras_file.key();
 | |
|                                                        
 | |
|         f.mask().set(F_USELAB, uselab);
 | |
|         f.mask().set(F_CHIAVE, chiave);
 | |
|       }
 | |
|       else
 | |
|       {
 | |
|         f.mask().set(F_USELAB, "");
 | |
|         f.mask().set(F_CHIAVE, "");
 | |
|       }
 | |
|       app()._ditte_uguali = TRUE;
 | |
|     }                      
 | |
|     else 
 | |
|     {
 | |
|       app()._ditte_uguali = FALSE;
 | |
|       f.mask().set(F_USELAB, "");
 | |
|       f.mask().set(F_CHIAVE, "");
 | |
|     }  
 | |
|   }   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::almeno_un_flag(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER && f.mask().mode() != MODE_QUERY) 
 | |
|   {          
 | |
|     bool cau   = f.mask().get_bool(F_CAUSALI);
 | |
|     bool clifo = f.mask().get_bool(F_CLIFO);
 | |
|     bool pcon  = f.mask().get_bool(F_PCON);
 | |
|     bool pn    = f.mask().get_bool(F_MOV);
 | |
|     bool iva   = f.mask().get_bool(F_IVA);
 | |
|     bool fat   = f.mask().get_bool(F_FATT);
 | |
|     
 | |
|     if (!cau && !clifo && !pcon && !pn && !iva && !fat)
 | |
|       return error_box("E' necessario indicare almeno una sigla file da trasferire");            
 | |
|     
 | |
|     long ditta = f.mask().get_long(F_DITTAINV);
 | |
|     
 | |
|     app().set_firm(ditta);            
 | |
|     
 | |
|     TConfig conf (CONFIG_DITTA);
 | |
| 
 | |
|     TString pcon_cau = conf.get("PcTcCm","cg");
 | |
|     
 | |
|     bool causali = f.mask().get_bool(F_CAUSALI);    
 | |
|     
 | |
|     if (causali && pcon_cau != "")
 | |
|       return error_box("Tabella causali in comune: impossibile trasferirla");
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::clifo_comune(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | |
|   {
 | |
|     long ditta = f.mask().get_long(F_DITTAINV);
 | |
|     
 | |
|     app().set_firm(ditta);            
 | |
|     
 | |
|     TConfig conf (CONFIG_DITTA);
 | |
| 
 | |
|     TString ana_com  = conf.get("AnCfCm","cg");
 | |
|     
 | |
|     bool clifo = f.mask().get_bool(F_CLIFO);
 | |
|     
 | |
|     if (clifo && ana_com != "")
 | |
|       return error_box("Anagrafica clienti / fornitori in comune: impossibile trasferirla");
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::pcon_comune(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | |
|   {
 | |
|     long ditta = f.mask().get_long(F_DITTAINV);
 | |
|     
 | |
|     app().set_firm(ditta);            
 | |
|     
 | |
|     TConfig conf (CONFIG_DITTA);
 | |
|     
 | |
|     TString pcon_cau = conf.get("PcTcCm","cg");
 | |
|     
 | |
|     bool pcon = f.mask().get_bool(F_PCON);
 | |
|     
 | |
|     if (pcon && pcon_cau != "")
 | |
|       return error_box("Anagrafica Piano dei conti in comune: impossibile trasferirla");
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::prima_nota(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_SPACE && f.mask().mode() != MODE_QUERY)
 | |
|   {
 | |
|     bool pn = f.mask().get_bool(F_MOV);
 | |
| 
 | |
|     if (!pn && f.mask().get_bool(F_IVA) )    
 | |
|     {
 | |
|       f.mask().set(F_MOV, "X");
 | |
|       return f.error_box("Se si vuole inviare l' iva e' obbligatorio inviare anche la primanota");            
 | |
|     }
 | |
|     if (!pn && f.mask().get_bool(F_FATT) )  
 | |
|     {
 | |
|       f.mask().set(F_MOV, "X");
 | |
|       return f.error_box("Se si vuole inviare il saldaconto e' obbligatorio inviare anche la primanota");            
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::iva(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_SPACE && f.mask().mode() != MODE_QUERY)
 | |
|   {
 | |
|     bool iva = f.mask().get_bool(F_IVA);
 | |
|     bool sc  = f.mask().get_bool(F_FATT);
 | |
| 
 | |
|     if (iva)
 | |
|       f.mask().set(F_MOV, "X");
 | |
|   }
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::saldaconto(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_SPACE && f.mask().mode() != MODE_QUERY)
 | |
|   {
 | |
|     bool iva = f.mask().get_bool(F_IVA);
 | |
|     bool sc  = f.mask().get_bool(F_FATT);
 | |
| 
 | |
|     if (sc)
 | |
|       f.mask().set(F_MOV, "X");
 | |
|   }
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::data_invio    (TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | |
|   {
 | |
|     int   num = f.mask().get_int(F_NUMULINV);
 | |
|     TDate data (f.get());
 | |
|     
 | |
|     if (num != 0 && !data.ok())
 | |
|       return error_box("Se indicato il numero deve essere indicata anche la data di invio");
 | |
|     
 | |
|     if (num == 0 && data.ok())
 | |
|       return error_box("Se non indicato il numero non puo' essere indicata la data di invio");
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::sigla_file(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | |
|   {
 | |
|     int     num   = f.mask().get_int(F_NUMULINV);
 | |
|     TString sigla = f.get();
 | |
|     
 | |
|     if (num == 0 && sigla != "")
 | |
|       return error_box("Numero ultimo invio NON INDICATO: impossibile indicare la sigla ultimo file elaborato");
 | |
| 
 | |
| //    TString stato = f.mask().get(F_STATO);
 | |
|     
 | |
| //    if ( (stato == "F" && sigla == "") || (stato == "D" && sigla != "") )
 | |
| //      return error_box("La sigla ultimo file elaborato deve essere indicata se lo stato ultimo invio e' uguale a F");  
 | |
|     
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::chiave_file(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | |
|   {
 | |
|     TString sigla  = f.mask().get(F_USELAB);
 | |
|     TString chiave = f.get();
 | |
|     
 | |
|     if (sigla == "" && chiave != "")
 | |
|       return error_box("Sigla ultimo file elaborato NON INDICATA: impossibile indicare la chiave ultimo record elaborato");
 | |
|     
 | |
|     TString stato = f.mask().get(F_STATO);
 | |
|     
 | |
|     if (stato != "F" && chiave == "" && sigla != "")
 | |
|       return error_box("La chiave ultimo record elaborato deve essere indicata obbligatoriamente");  
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void Tabinv_application::setta_chiave(TMask& m)
 | |
| {
 | |
|   m.set(F_CODICE, "INS");
 | |
|   m.field(F_CODICE).check();
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::nome_id(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_TAB)
 | |
|   {
 | |
|     TLocalisamfile ditte (LF_NDITTE);
 | |
|   
 | |
|     long ditta = f.mask().get_long(F_DITTAINV);
 | |
|     if (ditta != 0)
 | |
|     {
 | |
|       if (!prefix().exist(ditta))
 | |
|       {
 | |
|         f.error_box("La ditta selezionata non e' abilitata per la contabilita' ");
 | |
|         return FALSE;
 | |
|       }
 | |
|     }    
 | |
|   
 | |
|     ditte.setkey(1);
 | |
|     ditte.zero();
 | |
|     ditte.put(NDT_CODDITTA, ditta);
 | |
|     if (ditte.read() == NOERR)
 | |
|     {
 | |
|       TString ragsoc = ditte.get(NDT_RAGSOC);
 | |
|       f.mask().set(F_RAGSOC, ragsoc);
 | |
|     }
 | |
|     else
 | |
|       f.mask().set(F_RAGSOC, "");
 | |
|     
 | |
|     TTable ind ("%IND");
 | |
|     TString dep;
 | |
|   
 | |
|     if (ditta != 0)
 | |
|     {
 | |
|       dep = format("%05d", ditta);
 | |
|     
 | |
|       ind.zero();
 | |
|       ind.put("CODTAB", dep);
 | |
|       if (ind.read() == NOERR)
 | |
|       {
 | |
|         TString stato = ind.get     ("S6");
 | |
|         int     num   = ind.get_int ("I0");
 | |
|         TDate   data  = ind.get_date("D0");
 | |
|       
 | |
|         f.mask().set(F_STATO,    stato);
 | |
|         f.mask().set(F_NUMULINV, num);
 | |
|         f.mask().set(F_DATAULIN, data.string());
 | |
|       }                     
 | |
|       else
 | |
|       {
 | |
|         f.mask().set(F_STATO,    "");
 | |
|         f.mask().set(F_NUMULINV, "");
 | |
|         f.mask().set(F_DATAULIN, "");    
 | |
|         f.error_box("Codice ditta NON PRESENTE in tabella trasferimenti");
 | |
|       }
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       f.mask().set(F_STATO,    "");
 | |
|       f.mask().set(F_NUMULINV, "");
 | |
|       f.mask().set(F_DATAULIN, "");    
 | |
|     }
 | |
|     
 | |
|     app()._ditta_tab = f.mask().get_long(F_DITTAINV);
 | |
|   
 | |
|     if (app()._ditta_tab == app()._ditta_tras)
 | |
|     {
 | |
|       TString uselab = app()._tras_file.ult_file();
 | |
|       TString chiave = app()._tras_file.key();
 | |
|     
 | |
|       f.mask().set(F_USELAB, uselab);
 | |
|       f.mask().set(F_CHIAVE, chiave);
 | |
|       app()._ditte_uguali = TRUE;
 | |
|     }                      
 | |
|     else 
 | |
|     {
 | |
|       app()._ditte_uguali = FALSE;
 | |
|       f.mask().set(F_USELAB, "");
 | |
|       f.mask().set(F_CHIAVE, "");
 | |
|     } 
 | |
|   }
 | |
|   if (k == K_TAB && !app()._salta_hnd && f.mask().mode() != MODE_QUERY)
 | |
|   { 
 | |
|     long codditta = f.mask().get_long(F_DITTAINV);
 | |
|     
 | |
|     if (codditta != 0)  
 | |
|       return message_box("Rilevato STATO DI RIPARTENZA: prima concludere il trasferimento");
 | |
|   }
 | |
|         
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| //void Tabinv_application::esegui_controlli(TMask& m)
 | |
| bool Tabinv_application::controlli_hnd(TMask_field& f, KEY k)
 | |
| {                                                            
 | |
|   if (k == K_TAB && !f.mask().field(F_NUMULINV).enabled()) 
 | |
|   {
 | |
|     int   num  = f.mask().get_int(F_NUMULINV);
 | |
|     TDate data (f.mask().get(F_DATAULIN));
 | |
|     
 | |
|     if (num != 0 && !data.ok())
 | |
|       return error_box("Se indicato il numero deve essere indicata anche la data di invio");
 | |
|     
 | |
|     if (num == 0 && data.ok())
 | |
|       return error_box("Se non indicato il numero non puo' essere indicata la data di invio");
 | |
| 
 | |
|     TString sigla = f.mask().get(F_USELAB);
 | |
|     
 | |
|     if (num == 0 && sigla != "")
 | |
|       return error_box("Numero ultimo invio NON INDICATO: impossibile indicare la sigla ultimo file elaborato");
 | |
|     
 | |
|     TString stato = f.mask().get(F_STATO);
 | |
|     
 | |
|     if (stato != "F" && sigla != "")
 | |
|       return error_box("La sigla ultimo file elaborato puo' essere indicata solo se lo stato ultimo invio e' F");  
 | |
| 
 | |
|     TString chiave = f.mask().get(F_CHIAVE);
 | |
|     
 | |
|     if (sigla == "" && chiave != "")
 | |
|       return error_box("Sigla ultimo file elaborato NON INDICATA: impossibile indicare la chiave ultimo record elaborato");
 | |
|     
 | |
|     if (stato != "F" && chiave == "" && sigla != "")
 | |
|       return error_box("La chiave ultimo record elaborato deve essere indicata obbligatoriamente");  
 | |
|   }
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void Tabinv_application::leggi_trasfer()
 | |
| {                           
 | |
|   _trasf = ""; 
 | |
|   _trasf = firm2dir(0);
 | |
|   _trasf << HEADER;
 | |
|   
 | |
|   _tras_file.open(_trasf);
 | |
|   
 | |
|   if (_tras_file.exist())
 | |
|   {  
 | |
|     if (_tras_file.read_control_rec())  
 | |
|     {
 | |
|       _control_rec = _tras_file.record();
 | |
|       _ditta_tras  = _tras_file.ditta();
 | |
|     }
 | |
|     else
 | |
|       _ditta_tras = 0;
 | |
|   } 
 | |
|   else
 | |
|     _ditta_tras = 0;
 | |
| }
 | |
| 
 | |
| void Tabinv_application::init_query_mode(TMask& m)
 | |
| {
 | |
|   leggi_trasfer();
 | |
|   _disable = TRUE;
 | |
|   _messaggio = TRUE;    
 | |
| 
 | |
|   if (_tabname == "%INS")
 | |
|   {              
 | |
|     setta_chiave(m);        
 | |
|     m.send_key(K_AUTO_ENTER,0);  
 | |
|     
 | |
|     m.disable(F_DITTAINV);
 | |
|   }  
 | |
|   
 | |
|   m.disable(F_NUMULINV);
 | |
|   m.disable(F_DATAULIN);
 | |
|   m.disable(F_STATO);
 | |
|   m.disable(F_USELAB);
 | |
|   m.disable(F_CHIAVE);
 | |
| }
 | |
| 
 | |
| void Tabinv_application::init_modify_mode(TMask& m)
 | |
| {  
 | |
|   if (_tabname == "%IND")  
 | |
|   {
 | |
|     leggi_trasfer();
 | |
| 
 | |
|     long ditta = m.get_long(F_DITTAINV);
 | |
|     
 | |
|     if (ditta == _ditta_tras) 
 | |
|     { 
 | |
|       TString uselab = _tras_file.ult_file();
 | |
|       TString chiave = _tras_file.key();
 | |
|                                                        
 | |
|       m.set(F_USELAB, uselab);
 | |
|       m.set(F_CHIAVE, chiave);
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       m.set(F_USELAB, "");
 | |
|       m.set(F_CHIAVE, "");
 | |
|     }   
 | |
| 
 | |
|     char stato = app().cerca_stato(ditta);    
 | |
|     
 | |
|     if (stato == '\0')
 | |
|     {
 | |
|       m.enable(F_CAUSALI);
 | |
|       m.enable(F_CLIFO);
 | |
|       m.enable(F_PCON);
 | |
|       m.enable(F_MOV);
 | |
|       m.enable(F_IVA);
 | |
|       m.enable(F_FATT);
 | |
|       m.enable(F_BOLLATO);    
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       m.disable(F_CAUSALI);
 | |
|       m.disable(F_CLIFO);
 | |
|       m.disable(F_PCON);
 | |
|       m.disable(F_MOV);
 | |
|       m.disable(F_IVA);
 | |
|       m.disable(F_FATT);
 | |
|       m.disable(F_BOLLATO);
 | |
|     }
 | |
|   }
 | |
|   if (_tabname == "%INS")
 | |
|   {                 
 | |
|     setta_chiave(m);        
 | |
|   
 | |
|     m.disable(F_DITTAINV);
 | |
|     
 | |
|     long ditta = m.get_long(F_DITTAINV);
 | |
|     if (ditta == 0)
 | |
|       m.enable(F_NOMEID);
 | |
|     else
 | |
|       m.disable(F_NOMEID);
 | |
|   }
 | |
|   
 | |
|   m.disable(F_NUMULINV);
 | |
|   m.disable(F_DATAULIN);
 | |
|   m.disable(F_STATO);
 | |
|   m.disable(F_USELAB);
 | |
|   m.disable(F_CHIAVE);  
 | |
| }
 | |
| 
 | |
| void Tabinv_application::init_insert_mode(TMask& m)
 | |
| {  
 | |
|   if (_tabname == "%IND")
 | |
|     leggi_trasfer();
 | |
|   
 | |
|   if (_tabname == "%INS")
 | |
|     m.disable(F_DITTAINV);
 | |
|   
 | |
|   m.disable(F_NUMULINV);
 | |
|   m.disable(F_DATAULIN);
 | |
|   m.disable(F_STATO);
 | |
|   m.disable(F_USELAB);
 | |
|   m.disable(F_CHIAVE);  
 | |
| }
 | |
| 
 | |
| int Tabinv_application::write(const TMask& m)
 | |
| {                                            
 | |
|   if (_tabname == "%IND")
 | |
|   {  
 | |
|     if (m.mode() != MODE_INS)
 | |
|     {
 | |
|       TString str;
 | |
|     
 | |
|       TString std = m.get(F_STATO);
 | |
|       
 | |
|       TConfig conf (CONFIG_DITTA);
 | |
|       conf.set("FlStInv", std);
 | |
|     
 | |
|       int     num    = m.get_int(F_NUMULINV);
 | |
|       TString data   = m.get    (F_DATAULIN);
 | |
|       TString sigla  = m.get    (F_USELAB);        
 | |
|       TString chiave = m.get    (F_CHIAVE);
 | |
|     
 | |
|       if (sigla == "")
 | |
|         sigla = " ";
 | |
|     
 | |
|       if (_tras_file.read_control_rec())  
 | |
|       {                               
 | |
|         if (_ditte_uguali)
 | |
|         {
 | |
|           _control_rec = _tras_file.record();
 | |
|           str = format("%03d", num);
 | |
|           _control_rec.overwrite(str,75);
 | |
|           str = riconverti(data,TRUE);
 | |
|           _control_rec.overwrite(str,78);
 | |
|           _control_rec.overwrite(sigla,240);
 | |
|           str = format("%-60s", (const char*) chiave);
 | |
|           _control_rec.overwrite(str,241);
 | |
|         
 | |
|           _tras_file.write_control_rec(_control_rec,1024);
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }      
 | |
|   
 | |
|   return Tab_application::write(m);
 | |
| }
 | |
| 
 | |
| int Tabinv_application::rewrite(const TMask& m)
 | |
| {    
 | |
|   if (_tabname == "%IND")
 | |
|   {  
 | |
|     if (m.mode() != MODE_INS)
 | |
|     {
 | |
|       TString str;
 | |
|     
 | |
|       TString std = m.get(F_STATO);
 | |
|     
 | |
|       TConfig conf (CONFIG_DITTA);
 | |
|       conf.set("FlStInv", std);
 | |
|     
 | |
|       int     num    = m.get_int(F_NUMULINV);
 | |
|       TString data   = m.get    (F_DATAULIN);
 | |
|       TString sigla  = m.get    (F_USELAB);        
 | |
|       TString chiave = m.get    (F_CHIAVE);
 | |
|     
 | |
|       if (sigla == "")
 | |
|         sigla = " ";
 | |
|     
 | |
|       if (_tras_file.read_control_rec())  
 | |
|       {  
 | |
|         if (_ditte_uguali)
 | |
|         {
 | |
|           _control_rec = _tras_file.record();
 | |
|           str = format("%03d", num);
 | |
|           _control_rec.overwrite(str,75);
 | |
|           str = riconverti(data,TRUE);
 | |
|           _control_rec.overwrite(str,78);
 | |
|           _control_rec.overwrite(sigla,240);
 | |
|           str = format("%-60s", (const char*) chiave);
 | |
|           _control_rec.overwrite(str,241);
 | |
|         
 | |
|           _tras_file.write_control_rec(_control_rec,1024);
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }    
 | |
|   
 | |
|   return Tab_application::rewrite(m);  
 | |
| }
 | |
| 
 | |
| bool Tabinv_application::user_create()
 | |
| { 
 | |
|   Tab_application::user_create();
 | |
| 
 | |
|   _msk     = get_mask();
 | |
|   _tabname = get_tabname();
 | |
| 
 | |
|   if (_tabname == "%IND") 
 | |
|   {                    
 | |
|     _msk->set_handler(nascosto_handler);
 | |
|     _msk->set_handler(F_STATO,    stato_invio);                 
 | |
|     _msk->set_handler(F_DITTAINV, ditta_handler);
 | |
|     _msk->set_handler(F_CAUSALI,  almeno_un_flag);
 | |
|     _msk->set_handler(F_CLIFO,    clifo_comune);
 | |
|     _msk->set_handler(F_PCON,     pcon_comune);
 | |
|     _msk->set_handler(F_MOV,      prima_nota);
 | |
|     _msk->set_handler(F_IVA,      iva);
 | |
|     _msk->set_handler(F_FATT,     saldaconto);
 | |
|     _msk->set_handler(F_DATAULIN, data_invio);
 | |
|     _msk->set_handler(F_USELAB,   sigla_file);
 | |
|     _msk->set_handler(F_CHIAVE,   chiave_file);
 | |
|     _msk->set_handler(F_GHOST_FIELD, controlli_hnd);
 | |
|     //_msk->disable(F_FATT);     
 | |
|   }                               
 | |
|   
 | |
|   if (_tabname == "%INS")
 | |
|   {             
 | |
|     _msk->set_handler(nascosto_handler);  
 | |
|     _msk->set_handler(F_DITTAINV, nome_id);  
 | |
|     _salta_hnd = FALSE;
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| cg6500(int argc, char* argv[])
 | |
| {
 | |
|   Tabinv_application* a = new Tabinv_application;
 | |
|   
 | |
|   a->run(argc,argv, "Tabelle");
 | |
|   delete a;
 | |
|   return 0;
 | |
| }
 | |
| 
 | |
| 
 |