Files correlati : ve6.exe Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 979 git-svn-id: svn://10.65.10.50/trunk@15623 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			1103 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1103 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //////////////////////////////////////////
 | ||
| // 771200.cpp - Quadro A   771mod -7 A  //
 | ||
| //            - Quadro A1  771mod -7 1  //
 | ||
| //            - Quadro A2  771mod -7 2  //
 | ||
| //            - Quadro A3  771mod -7 3  // 
 | ||
| //            - Quadro AB  771mod -7 4  //
 | ||
| ////////////////////////////////////////// 
 | ||
| #include <relapp.h> 
 | ||
| #include <execp.h>  
 | ||
| #include <nditte.h>
 | ||
| #include <defmask.h>
 | ||
| 
 | ||
| #include "77lib.h"
 | ||
| #include "dipend.h"
 | ||
| #include "quadroa.h"
 | ||
| #include "quadroa3.h" 
 | ||
| #include "soctrasf.h"
 | ||
| #include "771200.h" 
 | ||
| #include "774200.h"
 | ||
| #include "77qaall.h"
 | ||
| 
 | ||
| bool QA_cerca_codA(const long codditta, const long coddip, const int curprog, TString16 ret, TString quadro);
 | ||
| 
 | ||
| bool QA_cerca_codA(const long codditta, const long coddip, const int curprog, TString16 ret, TString quadro)
 | ||
| {
 | ||
|   TLocalisamfile qq(quadro == "AB" ? LF_QUAAB : LF_QUAA2);  
 | ||
|   qq.zero();
 | ||
|   qq.put("CODDITTA", codditta);
 | ||
|   qq.put("CODDIP", coddip);
 | ||
|   TRectype dep(qq.curr());
 | ||
|   for (qq.read() ;!qq.eof() && qq.curr() == dep ; qq.next())
 | ||
|   {
 | ||
|     // non prendo in considerazione se stesso
 | ||
|     if (qq.get_int("NPROG") == curprog)
 | ||
|     	continue;    
 | ||
|     	
 | ||
|     // leggo rettifica conguaglio
 | ||
|     TString16 retx(qq.get("RETCON"));
 | ||
|     
 | ||
|     // se rettifica A controllo se esiste un record con rettifica A,C,D,E,F	
 | ||
|     if (ret == "A")
 | ||
|     	if (retx == "A" || retx == "C" || retx == "D" || retx == "E" || retx == "F")
 | ||
|       	return TRUE;                                                        
 | ||
|     // se rettifica C,D,E,F controllo se esiste un qualsiasi altro record
 | ||
|     if (ret == "C" || ret == "D" || ret == "E" || ret == "F")
 | ||
|      	return TRUE;                                                          
 | ||
|     // se senza rettifica controllo se esiste un record con rettifica C,D,E,F	
 | ||
|     if (ret == "")
 | ||
|     	if (retx == "C" || retx == "D" || retx == "E" || retx == "F")
 | ||
|       	return TRUE;                                                         	
 | ||
|   }
 | ||
|   return FALSE;
 | ||
| }
 | ||
| 
 | ||
| class TQuadroA : public TRelation_application
 | ||
| {
 | ||
|   private:                                             
 | ||
|     TString          _quadro;    // Codice del quadro in gestione        
 | ||
|     bool             _registra;  // Se TRUE fa i riporti
 | ||
|     TRelation*       _rel;
 | ||
|     TMask*           _msk[2];
 | ||
|     TMask*					 _mskAllegati;  // maschera allegati 730 (AB e A2)
 | ||
|     long             _coddip;
 | ||
|     char             _tipoq;
 | ||
|     int              _nproga;
 | ||
|     int              _mode;
 | ||
|     int              _anno_dic;  // anno dichiarazione
 | ||
|     TLocalisamfile*  _qd, *_base;
 | ||
|     TRiporti         _rip;
 | ||
|     int              _file;
 | ||
|     bool             _soc_trasf; 
 | ||
|     TString          _cognome,_nome;	// dati soc.trasf.
 | ||
|     
 | ||
|   private:                                    
 | ||
| // Handler relativi ai quadri A - A1 - A2 - A3 - AB  
 | ||
|     static bool nprog_handler     (TMask_field& f, KEY key);
 | ||
|     static bool codanagr_handler  (TMask_field& f, KEY key);
 | ||
|     static bool codditta_hnd      (TMask_field& f, KEY key);    
 | ||
|     static bool setta_nprog       (TMask_field& f);
 | ||
|     static bool QAA2alleg_handler (TMask_field& f, KEY key);    
 | ||
|     
 | ||
| // Handler relativi alla manutenzione quadro A              
 | ||
| 		static bool QA_qaqualif_hnd   (TMask_field& f, KEY key);
 | ||
|     static bool QA_cfdlprec_hnd   (TMask_field& f, KEY key);
 | ||
|     static bool QA_totdet_hnd 		(TMask_field& f, KEY key);
 | ||
|     static bool QA_ammritdov_hnd	(TMask_field& f, KEY k); 
 | ||
|     static bool QA_qatitolo_hnd		(TMask_field& f, KEY k);
 | ||
|     static bool QA_A2_check_58    (TMask_field& f, KEY key);
 | ||
| // Handler relativi alla manutenzione quadro A3      
 | ||
|     static bool QA3_codip_handler     (TMask_field& f, KEY key);
 | ||
|     static bool QA3_base_occupazionale(TMask_field& f, KEY key);     
 | ||
|     void 	AA3SettaCognomeNome(TMask& m);
 | ||
|     
 | ||
|   protected:
 | ||
|     TString			_sCognome, _sNome;  // dati dipendente
 | ||
|     int				_iNprog;
 | ||
|     long      _codditta,_codip;
 | ||
| 
 | ||
|     virtual bool user_create();
 | ||
|     virtual bool user_destroy();
 | ||
|     virtual int  rewrite(const TMask& m);
 | ||
|     virtual int  write  (const TMask& m);  
 | ||
|     virtual bool remove();
 | ||
|     virtual TRelation* get_relation() const { return _rel; }
 | ||
|     virtual TMask* get_mask(int mode);
 | ||
|     virtual bool changing_mask(int mode);  
 | ||
|     virtual void init_query_mode (TMask&);
 | ||
|     virtual void init_query_insert_mode (TMask&);    
 | ||
|     virtual void init_modify_mode (TMask&);  
 | ||
|     virtual void init_insert_mode(TMask& m);      
 | ||
|     virtual void on_config_change();    
 | ||
|     TMask* load_mask(int n);
 | ||
|     int 	anno_dic() const { return _anno_dic; }
 | ||
|     bool	QuadroA()  const { return _quadro == "A"; }      
 | ||
|     bool	QuadroA1() const { return _quadro == "A1"; }      
 | ||
|     bool	QuadroA2() const { return _quadro == "A2"; }      
 | ||
|     bool	QuadroA3() const { return _quadro == "A3"; }       
 | ||
|     bool	QuadroAB() const { return _quadro == "AB"; }      
 | ||
|             
 | ||
|   public:                    
 | ||
|     bool is_societa_trasformata(TMask& m);
 | ||
|     void carica_record2_A3(TMask& m);
 | ||
|     char tipo_trasformata(long codditta);
 | ||
|     void registra_record2_A3(const TMask& m);
 | ||
|     void cancella_record2_A3();
 | ||
|         
 | ||
|     TQuadroA(char tipo);
 | ||
|     virtual ~TQuadroA() {};
 | ||
| };                    
 | ||
|               
 | ||
| // Implementazione classe TQuadroA              
 | ||
|               
 | ||
| inline TQuadroA& app() { return (TQuadroA&) main_app(); }
 | ||
| 
 | ||
| TQuadroA::TQuadroA(char tipo): _rel(NULL), _mode(0), _tipoq(tipo)
 | ||
| {  
 | ||
|   memset(_msk, 0, sizeof(_msk));  
 | ||
| }
 | ||
| 
 | ||
| bool TQuadroA::changing_mask(int mode)
 | ||
| {
 | ||
|  if ((mode == MODE_MOD) && (_mode == MODE_INS))
 | ||
| 	return FALSE; 
 | ||
|  else	              
 | ||
|   return _mode != mode;
 | ||
| }
 | ||
|         
 | ||
| TMask* TQuadroA::get_mask(int mode)
 | ||
| {
 | ||
|   const int m = (mode == MODE_QUERY) ? 0 : 1;
 | ||
|   _mode = mode;
 | ||
|   return load_mask(m);
 | ||
| }
 | ||
| 
 | ||
| TMask* TQuadroA::load_mask(int n)
 | ||
| {
 | ||
|   if (_msk[n] != NULL) 
 | ||
|     return _msk[n]; 
 | ||
|     
 | ||
|   TFilename name("771200"); 
 | ||
|   
 | ||
|   if (n == 0) 
 | ||
|   { 
 | ||
|     switch (_tipoq) 
 | ||
|     {
 | ||
|       case 'A':       // Manutenzione quadro A
 | ||
|         name << 'a';  
 | ||
|         break; 
 | ||
|       case '1':       // Manutenzione quadro A1
 | ||
|         name << 'c';  
 | ||
|         break;
 | ||
|       case '2':       // Manutenzione quadro A2
 | ||
|         name << 'e';  
 | ||
|         break;        
 | ||
|       case '3':       // Manutenzione quadro A3
 | ||
|         name << 'g';  
 | ||
|         break;                                 
 | ||
|       case '4':       // Manutenzione quadro AB
 | ||
|         name << 'l';  
 | ||
|         break;                  
 | ||
|       default:
 | ||
|         break;
 | ||
|     }
 | ||
|   }
 | ||
|   else 
 | ||
|   {
 | ||
|     switch (_tipoq)
 | ||
|     {
 | ||
|       case 'A':       // Manutenzione quadro A
 | ||
|         name << 'b';
 | ||
|         break;
 | ||
|       case '1':       // Manutenzione quadro A1
 | ||
|         name << 'd';
 | ||
|         break;
 | ||
|       case '2':       // Manutenzione quadro A2
 | ||
|         name << 'f';
 | ||
|         break;
 | ||
|       case '3':       // Manutenzione quadro A3
 | ||
|         name << 'h';
 | ||
|         break;                                 
 | ||
|       case '4':       // Manutenzione quadro AB
 | ||
|         name << 'm';
 | ||
|         break;          
 | ||
|       default:
 | ||
|         break;
 | ||
|     }
 | ||
|   }  
 | ||
|   
 | ||
|   TMask* m = new TMask(name);
 | ||
| 
 | ||
|   switch (n)
 | ||
|   {                                   
 | ||
|     case 0:
 | ||
|       if (m)
 | ||
|       {        
 | ||
|         m->set_handler(QAF_CODDITTA,   codditta_hnd); 
 | ||
|         if (QuadroA3())
 | ||
|         {
 | ||
|           m->set_handler(F_CODANAGDIP,  QA3_codip_handler); 
 | ||
|           m->set_handler(F_CODIPQUADRO, QA3_codip_handler);
 | ||
|           m->set_handler(F_BASEOCCUPA, QA3_base_occupazionale);
 | ||
|         }                                                       
 | ||
|         else 
 | ||
|         { 
 | ||
|           if (QuadroAB())
 | ||
|             m->set_handler(QAF_ALLEG_A,   QAA2alleg_handler);
 | ||
|           if (QuadroA2())
 | ||
|             m->set_handler(QA2F_ALLEG_A2, QAA2alleg_handler);
 | ||
|           m->set_handler(QAF_NPROG,         nprog_handler);
 | ||
|           m->set_handler(F_CODANAGDIP,      codanagr_handler);  
 | ||
|           m->set_handler(F_CODANAGDIPQA,    codanagr_handler);  
 | ||
|         }
 | ||
|       }
 | ||
|       break;
 | ||
|     case 1:                                 
 | ||
|       m->disable(DLG_FINDREC);    
 | ||
|       if (m)
 | ||
|       { 
 | ||
|         if (QuadroA2())
 | ||
|           m->set_handler(QA2F_RETCON,  QA_A2_check_58);    
 | ||
|         if (QuadroAB())
 | ||
|           m->set_handler(F_RETCON56,  QA_A2_check_58);         
 | ||
|           
 | ||
|         if (QuadroA())
 | ||
|         {
 | ||
|           m->set_handler(F_CODFISDL,   QA_cfdlprec_hnd);    
 | ||
|           m->set_handler(F_QAQUALIF,   QA_qaqualif_hnd);
 | ||
|           m->set_handler(F_DETCC,      QA_totdet_hnd);    
 | ||
|           m->set_handler(F_DETFC,      QA_totdet_hnd);    
 | ||
|           m->set_handler(F_DETAF,      QA_totdet_hnd);    
 | ||
|           m->set_handler(F_DETLD,      QA_totdet_hnd);    
 | ||
|           m->set_handler(F_DETO,       QA_totdet_hnd);
 | ||
| 			    m->set_handler(F_AMRIOT37,	 QA_ammritdov_hnd);
 | ||
| 			    m->set_handler(F_AMRIODL38,  QA_ammritdov_hnd);           
 | ||
| 			    m->set_handler(F_ECCRITRIMB, QA_ammritdov_hnd); 
 | ||
| 			    m->set_handler(F_COBBDIP44,	 QA_qatitolo_hnd); 
 | ||
| 			    m->set_handler(F_AMMIMP45,	 QA_qatitolo_hnd); 
 | ||
| 			    m->set_handler(F_DETIMPOS46, QA_qatitolo_hnd); 
 | ||
| 			    m->set_handler(F_RITESEG47,  QA_qatitolo_hnd);
 | ||
|         }
 | ||
|       }
 | ||
|       break;
 | ||
|     default:
 | ||
|       break;  
 | ||
|   }           
 | ||
|   if (QuadroA3()) 
 | ||
|     set_search_field(F_CODIPQUADRO);
 | ||
|   else
 | ||
|     set_search_field(QAF_NPROG);
 | ||
|   return _msk[n] = m;
 | ||
| }
 | ||
| 			
 | ||
|         
 | ||
| bool TQuadroA::is_societa_trasformata(TMask& m)
 | ||
| {
 | ||
|   TLocalisamfile soc (LF_SOCTRASF);
 | ||
|   soc.setkey(1);
 | ||
|   soc.zero();
 | ||
|   soc.put(SOC_CODDITTA, m.get_long(QAF_CODDITTA));
 | ||
|   if (soc.read() == NOERR)
 | ||
|   {
 | ||
|     _cognome = soc.get(SOC_DENOMIN);
 | ||
|     _nome    = soc.get(SOC_NOME);
 | ||
|     return TRUE;
 | ||
|   }
 | ||
|   return FALSE;
 | ||
| }
 | ||
| 
 | ||
| // Ricerca e output dell'ultimo nprog del percipiente scelto
 | ||
| bool TQuadroA::setta_nprog(TMask_field& f)
 | ||
| {
 | ||
|   long  nprog = 0L;
 | ||
|   const long coddip   = atol(f.get());
 | ||
|   const long codditta = get_firm_770();
 | ||
|   
 | ||
|   TLocalisamfile quadro(app()._file);
 | ||
|     
 | ||
|   quadro.zero();
 | ||
|   quadro.put("CODDITTA", codditta);
 | ||
|   quadro.put("CODDIP",    coddip);
 | ||
|     
 | ||
|   TRectype rec(quadro.curr());
 | ||
|     
 | ||
|   quadro.read();
 | ||
|     
 | ||
|   if (quadro.curr() > rec) 
 | ||
|   {
 | ||
|     f.mask().set(QAF_NPROG, nprog+1);
 | ||
|     return TRUE;
 | ||
|   }
 | ||
|       
 | ||
|   for ( ; !quadro.eof(); quadro.next())   
 | ||
|   {
 | ||
|     if (quadro.curr() > rec) break;
 | ||
|     nprog = quadro.get_long("NPROG");
 | ||
|   }
 | ||
| 
 | ||
|   if ( (is_erede(codditta,coddip)) && (nprog + 1) > 1)
 | ||
|     return f.error_box("Il dipendente selezionato e' un erede: non e'\n possibile indicare piu' di un rigo");
 | ||
|     
 | ||
|   f.mask().set(QAF_NPROG, nprog+1);
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| bool TQuadroA::codditta_hnd(TMask_field& f, KEY k)
 | ||
| {         
 | ||
|   if (k == K_TAB && !f.mask().is_running())
 | ||
|   {
 | ||
|     TString16 codditta; codditta << app()._codditta;
 | ||
|     if (codditta != "0")        
 | ||
|     {
 | ||
|       f.set(codditta);
 | ||
|       f.check();
 | ||
|     }
 | ||
|   }   
 | ||
|   return TRUE;                                           
 | ||
| }
 | ||
| 
 | ||
| bool TQuadroA::codanagr_handler(TMask_field& f, KEY k)
 | ||
| {
 | ||
|   if (!f.mask().is_running())
 | ||
|     return TRUE;
 | ||
|   
 | ||
|   if (k == K_TAB && f.focusdirty())
 | ||
|   {
 | ||
|     const long coddip   = atol(f.get());
 | ||
|     if (coddip != 0L)   
 | ||
|     {
 | ||
|       const long codditta = get_firm_770();
 | ||
|       if (!esiste_dipendente(codditta, coddip))
 | ||
|         return f.warning_box("Dipendente inesistente");
 | ||
|       else
 | ||
|         setta_nprog(f);
 | ||
|     }
 | ||
|   }
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| void TQuadroA::AA3SettaCognomeNome(TMask& m)
 | ||
| {
 | ||
|   const int iDlgCognome = QAF_COGNOME;
 | ||
|   const int iDlgNome    = QAF_NOME;
 | ||
|   const int iDlgNProg   = QAF_NPROG;
 | ||
|   const int iProg  = m.get_int(iDlgNProg);
 | ||
|   TString sCognome(m.get(iDlgCognome));
 | ||
|   TString sNome;
 | ||
|   if (app()._codip != 0L) 
 | ||
|   {
 | ||
|     TLocalisamfile dip (LF_DIPEND);
 | ||
|     dip.zero();
 | ||
|     dip.put(DIP_CODDITTA, app()._codditta);
 | ||
|     dip.put(DIP_CODIP,    app()._codip);
 | ||
|     if (dip.read() == NOERR)
 | ||
|     {
 | ||
|       sCognome = dip.get("COGNOME");
 | ||
|       sNome    = dip.get("NOME");    
 | ||
|       app()._sCognome = sCognome;
 | ||
|       app()._sNome    = sNome;
 | ||
|       app()._iNprog   = iProg;
 | ||
|       m.set(iDlgCognome, sCognome);
 | ||
|       m.set(iDlgNome,    sNome);
 | ||
|     }
 | ||
|   }  
 | ||
| }
 | ||
| 
 | ||
| bool TQuadroA::QAA2alleg_handler(TMask_field& f, KEY k)
 | ||
| {
 | ||
|   if (k==K_SPACE)       
 | ||
|   {        
 | ||
|     KEY kAll;
 | ||
|     if (app().QuadroAB())  
 | ||
|     {
 | ||
|       const long lNumAllA = app()._base->get_long("N730ALLA");
 | ||
|       TString sNumAll; sNumAll << lNumAllA;      
 | ||
|       app()._mskAllegati->hide(QA2_ANNO_ALL);
 | ||
|       app()._mskAllegati->show(QA_ANNO_ALL);      
 | ||
|       app()._mskAllegati->hide(QA2_NUM_ALL);
 | ||
|       app()._mskAllegati->set(QA_NUM_ALL, sNumAll);                    
 | ||
|       app()._mskAllegati->show(QA_NUM_ALL);                              
 | ||
|     }
 | ||
|     else                                                       
 | ||
|     {
 | ||
|       const long lNumAllA2 = app()._base->get_long("N730ALLA2");    
 | ||
|       TString sNumAll; sNumAll << lNumAllA2;
 | ||
|       app()._mskAllegati->hide(QA_ANNO_ALL);
 | ||
|       app()._mskAllegati->show(QA2_ANNO_ALL);      
 | ||
|       app()._mskAllegati->hide(QA_NUM_ALL);    
 | ||
|       app()._mskAllegati->set(QA2_NUM_ALL, sNumAll);                    
 | ||
|       app()._mskAllegati->show(QA2_NUM_ALL);              
 | ||
|     }
 | ||
|     app()._mskAllegati->open_modal(); 
 | ||
|     kAll = app()._mskAllegati->run();    
 | ||
|     
 | ||
|     if (kAll == K_ESC && 
 | ||
|     		app()._mskAllegati->dirty() &&
 | ||
|     		!yesno_box("Annullare i dati inseriti"))
 | ||
| 			kAll = K_ENTER;   
 | ||
| 			 
 | ||
|     if (kAll==K_ENTER)
 | ||
|     {
 | ||
|       if (app().QuadroAB())
 | ||
|       {
 | ||
|         TString sAll (app()._mskAllegati->get(QA_NUM_ALL));
 | ||
|         app()._base->put("N730ALLA", sAll);
 | ||
|       }                                                    
 | ||
|       else
 | ||
|       {
 | ||
|         TString sAll (app()._mskAllegati->get(QA2_NUM_ALL));
 | ||
|         app()._base->put("N730ALLA2", sAll);
 | ||
|       }
 | ||
|       app()._base->rewrite();
 | ||
|     }
 | ||
|     app()._mskAllegati->close_modal(); 
 | ||
|   }
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| // Passa al modo inserimento/modifica.
 | ||
| bool TQuadroA::nprog_handler(TMask_field& f, KEY key)
 | ||
| {
 | ||
|   if (!f.mask().is_running()) return TRUE;
 | ||
| 
 | ||
|   if (key == K_CTRL+K_TAB)
 | ||
|   {
 | ||
|     f.set_dirty();
 | ||
|     return TRUE;
 | ||
|   }
 | ||
|   
 | ||
|   if (key == K_TAB)   
 | ||
|   {
 | ||
|     const int nprog = atoi(f.get());
 | ||
|     if (nprog==0) 
 | ||
|       return TRUE;
 | ||
| 
 | ||
|     const long coddip   = f.mask().get_long(F_CODIP);
 | ||
|     const long codditta = get_firm_770();
 | ||
| 
 | ||
|     if ( (is_erede(codditta,coddip)) && nprog > 1)
 | ||
|       return f.error_box("Il dipendente selezionato e' un erede: non e'\n possibile indicare piu' di un rigo");
 | ||
|     else                            
 | ||
|     {       
 | ||
|       app()._codip = coddip;
 | ||
|     }                                   
 | ||
|   }                                   
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| bool TQuadroA::QA3_codip_handler(TMask_field& f, KEY key)
 | ||
| {
 | ||
|   if (!f.mask().is_running()) return TRUE;
 | ||
|     
 | ||
|   if ((key == K_TAB) && f.shown())   
 | ||
|   {
 | ||
|     const long coddip   = atol(f.get());
 | ||
|     if (coddip==0) return TRUE;    
 | ||
|     const long codditta = get_firm_770();
 | ||
|     if (!esiste_dipendente(codditta, coddip))
 | ||
|       return f.warning_box("Dipendente inesistente");
 | ||
|     f.mask().set(QAF_NPROG, 1);                           
 | ||
|   }                                   
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| // handler QAQUALIF
 | ||
| bool TQuadroA::QA_qaqualif_hnd(TMask_field& f, KEY k)
 | ||
| {
 | ||
|   // forzo qualifica 11 se il dipendente ha indicato il deceduto 
 | ||
|   // e disabilito il campo
 | ||
|   if (k == K_TAB) 
 | ||
|   {
 | ||
|     TLocalisamfile dip(LF_DIPEND);
 | ||
|     dip.setkey(1);
 | ||
|     dip.zero();
 | ||
|     dip.put("CODDITTA", app()._codditta);
 | ||
|     dip.put("CODDIP", app()._codip);
 | ||
|     long dipdec = 0L;
 | ||
|     if (dip.read() == NOERR)
 | ||
|       dipdec = dip.get_long("CODDIPDEC");
 | ||
|     if (dipdec)
 | ||
|     {
 | ||
|     	f.set(11); 
 | ||
|     	f.disable();
 | ||
|     }	
 | ||
|   }  	   
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| // handler CFDLPREC
 | ||
| bool TQuadroA::QA_cfdlprec_hnd(TMask_field& f, KEY k)
 | ||
| {
 | ||
|   // obbligatorio se qualifica 11
 | ||
|   if (k == K_TAB)
 | ||
|     if (f.mask().get_int(F_QAQUALIF) == 11)
 | ||
|     {
 | ||
|     	TString tmp = f.get();
 | ||
|     	if (tmp.empty())
 | ||
|       	return f.warning_box("Codice fiscale precedente datore di lavoro obbligatorio");                
 | ||
|     }   
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| // handler AMMRITDOV
 | ||
| bool TQuadroA::QA_ammritdov_hnd(TMask_field& f, KEY k)
 | ||
| {
 | ||
|   if (k==K_TAB)
 | ||
|   { 
 | ||
|     TMask& m = f.mask();
 | ||
|     real c39 = m.get_real(F_AMRIOT37);
 | ||
|     real c40 = m.get_real(F_AMRIODL38);           
 | ||
|     real c41 = m.get_real(F_ECCRITRIMB);    
 | ||
|     real c42 = c39 + c40 - c41;
 | ||
|     if (c42 < ZERO) c42 = ZERO;
 | ||
|     m.set(F_AMMRITDOV, c42);
 | ||
|   }
 | ||
|   return TRUE;
 | ||
| }
 | ||
|                     
 | ||
| // handler QATITOLO
 | ||
| bool TQuadroA::QA_qatitolo_hnd(TMask_field& f, KEY k)
 | ||
| {
 | ||
|   if (k==K_TAB)
 | ||
|   { 
 | ||
|     TMask& m = f.mask();
 | ||
|     real A45 = m.get_real(F_COBBDIP44);
 | ||
|     real A46 = m.get_real(F_AMMIMP45);           
 | ||
|     real A47 = m.get_real(F_DETIMPOS46);     
 | ||
|     real A48 = m.get_real(F_RITESEG47);    
 | ||
|     real TOT = A45 + A46 + A47 + A48;
 | ||
|     if (TOT != ZERO)
 | ||
|     	m.enable(F_QATITOLO);
 | ||
|     else
 | ||
|     	m.disable(F_QATITOLO);
 | ||
|   }
 | ||
|   return TRUE;
 | ||
| }                    
 | ||
| 
 | ||
| bool TQuadroA::QA_A2_check_58(TMask_field& f, KEY k)
 | ||
| {          
 | ||
| 	TMask& m = f.mask();     
 | ||
| 	TString16 cod(f.get());                  
 | ||
| 	           
 | ||
| 	// forzo a dirty il campo se sono in immissione e arriva un K_ENTER
 | ||
| 	if (m.mode() == MODE_INS && k == K_ENTER)  
 | ||
| 		f.set_dirty();
 | ||
| 
 | ||
|   if (f.to_check(k,TRUE))
 | ||
|   {  
 | ||
|     // controllo se rettifica <20> congrua con altri record
 | ||
|     const long codditta = m.get_long(QAF_CODDITTA);
 | ||
|     const long coddip   = m.get_long(F_CODIP);     
 | ||
|     const int  curprog	= m.get_int(QAF_NPROG);	
 | ||
|     
 | ||
|     // controllo se st<73> immettendo un quadro con rettifica A
 | ||
|     // che non ne esista gi<67> uno con rettifica A,C,D,E,F
 | ||
|     if (cod == "A")
 | ||
|       if (QA_cerca_codA(codditta, coddip, curprog, cod, app()._quadro))
 | ||
|         return f.error_box("Esiste gi<67> un quadro con rettifica A,C,D,E oppure F per questo dipendente");
 | ||
|       
 | ||
|     // controllo se st<73> immettendo un quadro con rettifica C,D,E,F
 | ||
|     // che non ne esista nessun altro record
 | ||
|     if (cod == "C" || cod == "D" || cod == "E" || cod == "F")
 | ||
|       if (QA_cerca_codA(codditta, coddip, curprog, cod, app()._quadro))
 | ||
|         return f.error_box("Esiste gi<67> un altro quadro per questo dipendente");
 | ||
|     
 | ||
|     // controllo se st<73> immettendo un quadro con senza rettifica
 | ||
|     // che non ne esista gi<67> uno con rettifica C,D,E,F
 | ||
|     if (cod == "")
 | ||
|       if (QA_cerca_codA(codditta, coddip, curprog, cod, app()._quadro))
 | ||
|         return f.error_box("Esiste gi<67> un quadro con rettifica C,D,E oppure F per questo dipendente");
 | ||
|     
 | ||
|     // per quadro Abis
 | ||
|     if (app().QuadroAB())
 | ||
|     	// se rettifica A abilito pagina relativa operazioni di conguaglio 
 | ||
|     	if (cod == "A") 
 | ||
|     	{
 | ||
|     		m.enable_page(5);	
 | ||
|     		// controllo se compilato pagina operazioni di conguaglio
 | ||
|     		real ABB19 = m.get_real(F_QABRCB19);   
 | ||
|     		real ABB20 = m.get_real(F_QABRCB20);  
 | ||
|     		real ABB21 = m.get_real(F_QABRCB21);  
 | ||
|     		real ABB22 = m.get_real(F_QABRCB22);  
 | ||
|     		real ABB23 = m.get_real(F_QABRCB23);  
 | ||
|     		real ABB24 = m.get_real(F_QABRCB24);  
 | ||
|     		real ABB25 = m.get_real(F_QABRCB25);  
 | ||
|     		real ABB26 = m.get_real(F_QABRCB26);  
 | ||
|     		real ABB27 = m.get_real(F_QABRCB27);  
 | ||
|     		real ABB28 = m.get_real(F_QABRCB28);  
 | ||
|     		real ABB29 = m.get_real(F_QABRCB29);
 | ||
|     		real ABBTOT = ZERO;   
 | ||
|     		ABBTOT += ABB19+ABB20+ABB21+ABB22+ABB23+ABB24;  
 | ||
|       	ABBTOT += ABB25+ABB26+ABB27+ABB28+ABB29; 
 | ||
|       	if (ABBTOT == ZERO)
 | ||
|       		f.warning_box("Compilare la pagina relativa alle operazioni di conguaglio"); 
 | ||
|     	}
 | ||
|     	else 
 | ||
|     		m.disable_page(5);  
 | ||
|     		
 | ||
|     // per quadro A2
 | ||
|     if (app().QuadroA2())
 | ||
|     	// se rettifica A abilito pagina relativa operazioni di conguaglio 
 | ||
|     	if (cod == "A") 
 | ||
|     	{
 | ||
|     		m.enable_page(3);	
 | ||
|     		// controllo se compilato pagina operazioni di conguaglio
 | ||
|     		real A2B10 = m.get_real(F_QA2RCB10);   
 | ||
|     		real A2B11 = m.get_real(F_QA2RCB11);  
 | ||
|     		real A2B12 = m.get_real(F_QA2RCB12);  
 | ||
|     		real A2B13 = m.get_real(F_QA2RCB13);  
 | ||
|     		real A2B14 = m.get_real(F_QA2RCB14);  
 | ||
|     		real A2B15 = m.get_real(F_QA2RCB15);  
 | ||
|     		real A2B16 = m.get_real(F_QA2RCB16);  
 | ||
|     		real A2B17 = m.get_real(F_QA2RCB17);
 | ||
|     		real A2BTOT = ZERO;   
 | ||
|     		A2BTOT += A2B10+A2B11+A2B12+A2B13+A2B14;  
 | ||
|       	A2BTOT += A2B15+A2B16+A2B17; 
 | ||
|       	if (A2BTOT == ZERO)
 | ||
|       		f.warning_box("Compilare la pagina relativa alle operazioni di conguaglio"); 
 | ||
|     	}
 | ||
|     	else 
 | ||
|     		m.disable_page(3);		    	 
 | ||
|   }
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| // handler TOTDET
 | ||
| bool TQuadroA::QA_totdet_hnd  (TMask_field& f, KEY k)
 | ||
| {
 | ||
|   if (k == K_TAB)
 | ||
|   {
 | ||
|     TMask& m = f.mask();
 | ||
|     real totdet36 = m.get_real(F_TOTDET36);
 | ||
|     real detcc = m.get_real(F_DETCC);
 | ||
|     real detfc = m.get_real(F_DETFC);
 | ||
|     real detaf = m.get_real(F_DETAF);
 | ||
|     real detld = m.get_real(F_DETLD);
 | ||
|     real deto  = m.get_real(F_DETO);
 | ||
|     totdet36 = detcc + detfc + detaf + detld + deto;
 | ||
|     m.set(F_TOTDET36, totdet36);
 | ||
| 		
 | ||
| 		// disabilita il totale se almeno un dettaglio <20> compilato
 | ||
|     if (totdet36 != ZERO)
 | ||
|       m.disable(F_TOTDET36);
 | ||
|     else                    
 | ||
|       m.enable(F_TOTDET36);   
 | ||
|   }
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| bool TQuadroA::QA3_base_occupazionale(TMask_field& f , KEY k)
 | ||
| {
 | ||
|   if (k == K_SPACE) 
 | ||
|   {
 | ||
|     TString appname(30);
 | ||
|     appname.format("773mod -1 771200i 37 \"%s\" 0", "Base occupazionale");
 | ||
|     TExternal_app a(appname);
 | ||
|     a.run();
 | ||
|   }               
 | ||
|   return TRUE;
 | ||
| } 
 | ||
| 
 | ||
| void TQuadroA::registra_record2_A3(const TMask& m)
 | ||
| {
 | ||
|   TLocalisamfile quaa3 (LF_QUAA3);      
 | ||
|   TDate di;      
 | ||
|   long  ng1,ng2;
 | ||
|   real  rd1,rd2;
 | ||
| 
 | ||
|   di  = m.get_date(F_DIRAPTI_2);
 | ||
|   ng1 = m.get_long(F_NGINC15_2);
 | ||
|   ng2 = m.get_long(F_NGINC17_2);
 | ||
|   rd1 = m.get_real(F_REDCOR16_2);
 | ||
|   rd2 = m.get_real(F_REDCOR18_2);
 | ||
|   
 | ||
|   long codditta = m.get_long(QAF_CODDITTA);
 | ||
|   long codip    = m.get_long(F_CODIP);
 | ||
|   
 | ||
|   quaa3.setkey(1);
 | ||
|   quaa3.zero();
 | ||
|   quaa3.put(QA3_CODDITTA, codditta);
 | ||
|   quaa3.put(QA3_NPROG,    2);
 | ||
|   quaa3.put(QA3_CODIP,    codip);
 | ||
|   if (quaa3.read() == NOERR)
 | ||
|   {
 | ||
|     quaa3.put(QA3_CODDITTA, codditta);
 | ||
|     quaa3.put(QA3_NPROG,    2);
 | ||
|     quaa3.put(QA3_CODIP,    codip);
 | ||
|     quaa3.put(QA3_DIRAPTI,  di);
 | ||
|     quaa3.put(QA3_NGINC15,  ng1);
 | ||
|     quaa3.put(QA3_REDCOR16, rd1);
 | ||
|     quaa3.put(QA3_NGINC17,  ng2);
 | ||
|     quaa3.put(QA3_REDCOR18, rd2);
 | ||
|     quaa3.rewrite();
 | ||
|   }
 | ||
|   else
 | ||
|   {
 | ||
|     quaa3.put(QA3_CODDITTA, codditta);
 | ||
|     quaa3.put(QA3_NPROG,    2);
 | ||
|     quaa3.put(QA3_CODIP,    codip);
 | ||
|     quaa3.put(QA3_DIRAPTI,  di);
 | ||
|     quaa3.put(QA3_NGINC15,  ng1);
 | ||
|     quaa3.put(QA3_REDCOR16, rd1);
 | ||
|     quaa3.put(QA3_NGINC17,  ng2);
 | ||
|     quaa3.put(QA3_REDCOR18, rd2);
 | ||
|     quaa3.write();  
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| int TQuadroA::rewrite(const TMask& m)
 | ||
| {                     
 | ||
|   if (QuadroA3() && _soc_trasf)       
 | ||
|     registra_record2_A3(m);
 | ||
|     
 | ||
|   // azzero campi operazioni di conguaglio
 | ||
|   // se rettifica diversa da A
 | ||
|   TMask& mx = (TMask&)m;
 | ||
|   if (QuadroAB())
 | ||
|   	if (m.get(F_RETCON56) != "A") 
 | ||
|     	mx.reset(-G_OPECONG); 
 | ||
|   if (QuadroA2())
 | ||
|   	if (m.get(QA2F_RETCON) != "A") 
 | ||
|     	mx.reset(-G_OPECONG);  	
 | ||
|                                   
 | ||
|   m.autosave(*_rel);
 | ||
|   const int err = _rel->rewrite();
 | ||
|   _registra = TRUE;
 | ||
| 
 | ||
|   return err;
 | ||
| }
 | ||
| 
 | ||
| int TQuadroA::write(const TMask& m)
 | ||
| {
 | ||
|   if (QuadroA3() && _soc_trasf)       
 | ||
|     registra_record2_A3(m);
 | ||
|                                           
 | ||
| 	// azzero campi operazioni di conguaglio
 | ||
|   // se rettifica diversa da A
 | ||
|   TMask& mx = (TMask&)m;
 | ||
|   if (QuadroAB())
 | ||
|   	if (m.get(F_RETCON56) != "A") 
 | ||
|     	mx.reset(-G_OPECONG); 
 | ||
|   if (QuadroA2())
 | ||
|   	if (m.get(QA2F_RETCON) != "A") 
 | ||
|     	mx.reset(-G_OPECONG);  	
 | ||
|     	                                          
 | ||
|   m.autosave(*_rel);
 | ||
|   const int err = _rel->write();
 | ||
|   _registra = TRUE;
 | ||
|   
 | ||
|   return err;
 | ||
| }
 | ||
| 
 | ||
| void TQuadroA::cancella_record2_A3()
 | ||
| {
 | ||
|   TLocalisamfile quaa3 (LF_QUAA3);      
 | ||
|   
 | ||
|   quaa3.setkey(1);
 | ||
|   quaa3.zero();
 | ||
|   quaa3.put(QA3_CODDITTA, _codditta);
 | ||
|   quaa3.put(QA3_NPROG,    2);
 | ||
|   quaa3.put(QA3_CODIP,    _codip);
 | ||
|   if (quaa3.read() == NOERR)
 | ||
|     quaa3.remove();
 | ||
| }
 | ||
| 
 | ||
| bool TQuadroA::remove()
 | ||
| {
 | ||
|   if (QuadroA3() && _soc_trasf)       
 | ||
|     cancella_record2_A3();
 | ||
|   _registra = TRUE;
 | ||
|   return TRelation_application::remove();
 | ||
| }
 | ||
| 
 | ||
| bool TQuadroA::user_create()
 | ||
| {                      
 | ||
|   switch (_tipoq)
 | ||
|   {
 | ||
|     case 'A':
 | ||
|       _file   = LF_QUAA;
 | ||
|       _quadro = "A";
 | ||
|       break;
 | ||
|     case '1':
 | ||
|       _file   = LF_QUAA1;
 | ||
|       _quadro = "A1";
 | ||
|       break;
 | ||
|     case '2':
 | ||
|       _file   = LF_QUAA2;
 | ||
|       _quadro = "A2";
 | ||
|       break;
 | ||
|     case '3':
 | ||
|       _file   = LF_QUAA3;
 | ||
|       _quadro = "A3";
 | ||
|       break;            
 | ||
|     case '4':
 | ||
|       _file   = LF_QUAAB;
 | ||
|       _quadro = "AB";
 | ||
|       break;        
 | ||
|     default:
 | ||
|       break;
 | ||
|   }
 | ||
|      
 | ||
|   _qd   = new TLocalisamfile(_file);
 | ||
|   _rel  = new TRelation(_file);
 | ||
|   _base = new TLocalisamfile(LF_BASE);
 | ||
|   _codditta = get_firm_770();
 | ||
| 
 | ||
| // posiziona il base (per leggere allegati)
 | ||
|   _base->zero();
 | ||
|   _base->put("CODDITTA", _codditta);
 | ||
|   _base->read();
 | ||
| 
 | ||
|   set_search_field(F_CODANAGDIP);
 | ||
|   _registra = FALSE;
 | ||
| 
 | ||
|   load_mask(0); 
 | ||
| 
 | ||
|   if (QuadroAB() || QuadroA2())
 | ||
|     _mskAllegati = new TMask("77qaall");
 | ||
| 
 | ||
|   _soc_trasf = FALSE;                                  
 | ||
| 
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| bool TQuadroA::user_destroy()
 | ||
| { 
 | ||
|   if (_msk[1] != NULL) delete _msk[1];
 | ||
|   if (_msk[0] != NULL) delete _msk[0];
 | ||
| 
 | ||
|   if (QuadroAB() || QuadroA2()) 
 | ||
|     delete _mskAllegati;
 | ||
|     
 | ||
|   delete _base;
 | ||
|   
 | ||
|   TString16 quadro = "";
 | ||
|   
 | ||
|   switch (_tipoq)
 | ||
|   {
 | ||
|     case 'A':
 | ||
|       quadro << "A";
 | ||
|       break;
 | ||
|     case '1':
 | ||
|       quadro << "A1";
 | ||
|       break;
 | ||
|     case '2':
 | ||
|       quadro << "A2";
 | ||
|       break;
 | ||
|     case '3':
 | ||
|       quadro << "A3";
 | ||
|       break; 
 | ||
|     case '4':
 | ||
|       quadro << "AB";
 | ||
|       break;        
 | ||
|     default:
 | ||
|       break;
 | ||
|   }
 | ||
|   
 | ||
|   if (_registra)
 | ||
|     _rip.set(quadro);
 | ||
| 
 | ||
|   delete _rel; 
 | ||
|   delete _qd;
 | ||
|   
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| void TQuadroA::on_config_change()
 | ||
| {                                
 | ||
|   TConfig conf(CONFIG_STUDIO);
 | ||
|   _anno_dic = (int)conf.get_long(ANNO_SEL, NULL); 
 | ||
| }
 | ||
| 
 | ||
| char TQuadroA::tipo_trasformata(long codditta)
 | ||
| { 
 | ||
|   TLocalisamfile ditta (LF_NDITTE);         
 | ||
|   char tipo;
 | ||
|   
 | ||
|   ditta.setkey(1);
 | ||
|   ditta.zero();
 | ||
|   ditta.put(NDT_CODDITTA, codditta);
 | ||
|   if (ditta.read() == NOERR)
 | ||
|     tipo = ditta.get_char(NDT_TIPOA);
 | ||
|       
 | ||
|   return tipo;
 | ||
| }
 | ||
| 
 | ||
| void TQuadroA::carica_record2_A3(TMask& m)
 | ||
| { 
 | ||
|   TLocalisamfile quaa3 (LF_QUAA3);      
 | ||
|   TDate di;      
 | ||
|   char  tipo;
 | ||
|   long  ng1,ng2;
 | ||
|   real  rd1,rd2;
 | ||
|   
 | ||
|   ng1 = 0;
 | ||
|   ng2 = 0;
 | ||
|   rd1 = ZERO;
 | ||
|   rd2 = ZERO;
 | ||
|   
 | ||
|   long codditta = m.get_long(QAF_CODDITTA);
 | ||
|   long codip    = m.get_long(F_CODIP);
 | ||
|   
 | ||
|   quaa3.setkey(1);
 | ||
|   quaa3.zero();
 | ||
|   quaa3.put(QA3_CODDITTA, codditta);
 | ||
|   quaa3.put(QA3_NPROG,    2);
 | ||
|   quaa3.put(QA3_CODIP,    codip);
 | ||
|   if (quaa3.read() == NOERR)
 | ||
|   {
 | ||
|     di  = quaa3.get_date(QA3_DIRAPTI);
 | ||
|     ng1 = quaa3.get_long(QA3_NGINC15);
 | ||
|     rd1 = quaa3.get_real(QA3_REDCOR16);
 | ||
|     ng2 = quaa3.get_long(QA3_NGINC17);
 | ||
|     rd2 = quaa3.get_real(QA3_REDCOR18);
 | ||
|   }
 | ||
|          
 | ||
|   tipo = tipo_trasformata(codditta);
 | ||
|   
 | ||
|   if (tipo == 'F')
 | ||
|   { 
 | ||
|     m.hide(F_DENTRASF);
 | ||
|     m.show(F_COGNTRASF);
 | ||
|     m.show(F_NOMETRASF);
 | ||
|     m.set(F_COGNTRASF, _cognome);
 | ||
|     m.set(F_NOMETRASF, _nome);
 | ||
|   }
 | ||
|   else
 | ||
|     if (tipo == 'G')
 | ||
|     {
 | ||
|       m.show(F_DENTRASF);
 | ||
|       m.hide(F_COGNTRASF);
 | ||
|       m.hide(F_NOMETRASF);
 | ||
|       m.set(F_DENTRASF, _cognome);
 | ||
|     }                 
 | ||
|     
 | ||
|   m.set(F_NPROG_2,    2);
 | ||
|   m.set(F_DIRAPTI_2,  di);
 | ||
|   m.set(F_NGINC15_2,  ng1);
 | ||
|   m.set(F_REDCOR16_2, rd1);
 | ||
|   m.set(F_NGINC17_2,  ng2);
 | ||
|   m.set(F_REDCOR18_2, rd2);
 | ||
| }
 | ||
| 
 | ||
| void TQuadroA::init_query_mode(TMask& m)
 | ||
| { 
 | ||
|   m.set(QAF_ANNODIC, _anno_dic); 
 | ||
|   if (QuadroA3())
 | ||
|   {
 | ||
|     _soc_trasf = is_societa_trasformata(m);
 | ||
|     if (_soc_trasf)
 | ||
|       carica_record2_A3(m);
 | ||
|   }
 | ||
|   else                               
 | ||
|   {                           
 | ||
|     // forza il ricalcolo dell'ultimo numero disponibile
 | ||
|     TString16 dummy(m.get(QAF_NPROG));
 | ||
|     if (dummy.not_empty())
 | ||
|       setta_nprog(m.field(F_CODIP));   
 | ||
|   }                                                                   
 | ||
|   m.hide(-1);  // hide group 1 -nasconde DIPEND.
 | ||
|   m.show(-2);  // show group 2 -Ricerca su QUADRO A
 | ||
| }
 | ||
| 
 | ||
| void TQuadroA::init_query_insert_mode(TMask& m)
 | ||
| { 
 | ||
|   m.set(QAF_ANNODIC, _anno_dic); 
 | ||
|   m.hide(-2);  // group 2 Nasconde ricerca su QUADROA
 | ||
|   m.show(-1);  // group 1 Ricerca su ANAGR.DIPENDENTI
 | ||
| }
 | ||
| 
 | ||
| void TQuadroA::init_modify_mode(TMask& m)
 | ||
| {                  
 | ||
|   if (QuadroA1())
 | ||
|     m.set(QA1F_ANNORIF, _anno_dic);       
 | ||
|     
 | ||
|   if (QuadroAB())
 | ||
|   { 
 | ||
|     TLocalisamfile dip(LF_DIPEND);
 | ||
|     dip.setkey(1);
 | ||
|     dip.zero();
 | ||
|     dip.put("CODDITTA", _codditta);
 | ||
|     dip.put("CODDIP", _codip);
 | ||
|     int assfis = 0;
 | ||
|     if (dip.read() == NOERR)
 | ||
|       assfis = dip.get_int("ASSFIS");      
 | ||
|     if (!assfis)  
 | ||
|     	warning_box("Dipendente che non si <20> avvalso dell'assistenza fiscale nel 1997");
 | ||
|   } 
 | ||
|   
 | ||
|   if (QuadroA3())
 | ||
|   { 
 | ||
|     _codditta = m.get_long(QAF_CODDITTA);
 | ||
|     _codip    = m.get_long(F_CODIP);
 | ||
| 
 | ||
|     _soc_trasf = is_societa_trasformata(m);
 | ||
|     if (_soc_trasf)        
 | ||
|     {
 | ||
|       carica_record2_A3(m); 
 | ||
|       m.enable_page(1);
 | ||
|     }
 | ||
|     else
 | ||
|       m.disable_page(1);
 | ||
|   }             
 | ||
| }
 | ||
| 
 | ||
| void TQuadroA::init_insert_mode(TMask& m)
 | ||
| { 
 | ||
|   if (QuadroA())
 | ||
|   { 
 | ||
|   	TLocalisamfile dip(LF_DIPEND);
 | ||
|     dip.setkey(1);
 | ||
|     dip.zero();
 | ||
|     dip.put("CODDITTA", _codditta);
 | ||
|     dip.put("CODDIP", _codip);
 | ||
|     int qualifica = 0;
 | ||
|     if (dip.read() == NOERR)
 | ||
|       qualifica = dip.get_int("QUALIFICA");
 | ||
|     if (qualifica)
 | ||
|     	m.set(F_QAQUALIF, qualifica);
 | ||
|   }  		
 | ||
|   
 | ||
|   if (QuadroA1())
 | ||
|     m.set(QA1F_ANNORIF, _anno_dic);
 | ||
| 
 | ||
|   if (QuadroAB())
 | ||
|   { 
 | ||
|     TLocalisamfile dip(LF_DIPEND);
 | ||
|     dip.setkey(1);
 | ||
|     dip.zero();
 | ||
|     dip.put("CODDITTA", _codditta);
 | ||
|     dip.put("CODDIP", _codip);
 | ||
|     int assfis = 0;
 | ||
|     if (dip.read() == NOERR)
 | ||
|       assfis = dip.get_int("ASSFIS");      
 | ||
|     if (!assfis)  
 | ||
|     	warning_box("Dipendente che non si <20> avvalso dell'assistenza fiscale nel 1997");
 | ||
|   }             
 | ||
|   
 | ||
|   if (QuadroA3())
 | ||
|   { 
 | ||
|     _codditta = m.get_long(QAF_CODDITTA);
 | ||
|     _codip    = m.get_long(F_CODIP);
 | ||
| 
 | ||
|     _soc_trasf = is_societa_trasformata(m);
 | ||
|     if (_soc_trasf)        
 | ||
|     {
 | ||
|       carica_record2_A3(m); 
 | ||
|       m.enable_page(1);
 | ||
|     }
 | ||
|     else
 | ||
|       m.disable_page(1);
 | ||
|   }             
 | ||
| }
 | ||
| 
 | ||
| int quadriA_A3(int argc, char* argv[])
 | ||
| {
 | ||
|   const char tipo = toupper(*argv[2]); 
 | ||
|   const char* title = "";
 | ||
|   TQuadroA a(tipo);
 | ||
|   switch (tipo)
 | ||
|   {
 | ||
|     case 'A':
 | ||
|       title = "Quadro A";
 | ||
|       break;
 | ||
|     case '1':
 | ||
|       title = "Quadro A1";
 | ||
|       break;
 | ||
|     case '2':
 | ||
|       title = "Quadro A2";
 | ||
|       break;
 | ||
|     case '3':
 | ||
|       title = "Quadro A3";
 | ||
|       break; 
 | ||
|     case '4':
 | ||
|       title = "Quadro A bis";
 | ||
|       break;        
 | ||
|     default:
 | ||
|       break;    
 | ||
|   }
 | ||
|   a.run(argc, argv, title);
 | ||
|   return TRUE;
 | ||
| }
 |