333 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			333 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
// 771290.cpp - Quadro H
 | 
						|
#include <applicat.h>
 | 
						|
#include <mask.h>
 | 
						|
#include <msksheet.h>
 | 
						|
#include <relapp.h>
 | 
						|
#include <relation.h>
 | 
						|
#include <tabutil.h>
 | 
						|
#include <urldefid.h>
 | 
						|
#include <config.h>      
 | 
						|
#include <utility.h>   
 | 
						|
#include <mailbox.h>
 | 
						|
#include <execp.h>
 | 
						|
 | 
						|
#include "771290.h"
 | 
						|
#include "771295.h"
 | 
						|
#include "77lib.h"  
 | 
						|
#include "774200.h"
 | 
						|
#include <nditte.h>
 | 
						|
 | 
						|
class TQuadro_H_app : public TRelation_application
 | 
						|
{
 | 
						|
  TRelation       * _rel;
 | 
						|
  TMask           * _msk; 
 | 
						|
  TRiporti        _rip;
 | 
						|
  
 | 
						|
  int     _mode;              // Modo maschera corrente
 | 
						|
  long    _codditta;
 | 
						|
  int     _anno;
 | 
						|
  TString _ente;
 | 
						|
  bool    _registra;   
 | 
						|
     
 | 
						|
protected:
 | 
						|
  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) {return FALSE; }
 | 
						|
  
 | 
						|
//  void init_mask(TMask&);
 | 
						|
  virtual void init_query_mode(TMask&);
 | 
						|
  virtual void init_modify_mode(TMask&);
 | 
						|
  virtual void init_insert_mode(TMask&);
 | 
						|
  virtual void init_query_insert_mode(TMask&);
 | 
						|
  virtual void on_config_change();
 | 
						|
  
 | 
						|
public:
 | 
						|
  bool almeno_un_dettaglio(TMask&);
 | 
						|
  void refresh(TMask& m);
 | 
						|
  static bool generazione (TMask_field& f , KEY k);
 | 
						|
  static bool dettaglio   (TMask_field& f , KEY k);
 | 
						|
  static bool desc_ente   (TMask_field& f , KEY k);  
 | 
						|
  static bool codditta_hnd(TMask_field& f , KEY k);
 | 
						|
  TQuadro_H_app() {}
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
HIDDEN TQuadro_H_app& app() { return (TQuadro_H_app&) main_app(); }
 | 
						|
                                          
 | 
						|
bool TQuadro_H_app::codditta_hnd(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_TAB && !(f.mask().is_running()) )
 | 
						|
  {
 | 
						|
    TString16 codditta; codditta << get_firm_770();
 | 
						|
    if (codditta != "0")        
 | 
						|
    {
 | 
						|
      f.set(codditta);
 | 
						|
      f.check();
 | 
						|
    }
 | 
						|
  }   
 | 
						|
 | 
						|
  return TRUE;                                           
 | 
						|
}         
 | 
						|
                                
 | 
						|
void TQuadro_H_app::refresh(TMask& m)
 | 
						|
{
 | 
						|
  TEdit_field& datore = _msk->efield(F_DAT);
 | 
						|
  TEdit_field& lavora = _msk->efield(F_LAV);
 | 
						|
                      
 | 
						|
  //datore.check();
 | 
						|
  //lavora.check();                    
 | 
						|
  datore.autoload(*_rel);
 | 
						|
  lavora.autoload(*_rel);
 | 
						|
 | 
						|
  if (almeno_un_dettaglio(m))
 | 
						|
    m.enable (F_BTG_GENERA);
 | 
						|
  else
 | 
						|
    m.disable(F_BTG_GENERA);
 | 
						|
    
 | 
						|
  m.enable (F_BTG_DETTAGLIO);
 | 
						|
}
 | 
						|
 | 
						|
bool TQuadro_H_app::generazione(TMask_field& f , KEY k)
 | 
						|
{
 | 
						|
  if (k == K_SPACE) 
 | 
						|
  {
 | 
						|
    TString appname = "775 -1";
 | 
						|
    TToken_string body;
 | 
						|
 | 
						|
    body.add(app()._codditta);
 | 
						|
    body.add(app()._anno);
 | 
						|
    body.add(app()._ente);
 | 
						|
    
 | 
						|
    TMessage msg (appname,"",(const char*) body);
 | 
						|
    
 | 
						|
    TMailbox mb;
 | 
						|
    mb.send(msg);
 | 
						|
    
 | 
						|
    TLocalisamfile& quaH = app().get_relation()->lfile();
 | 
						|
                 
 | 
						|
    quaH.setkey(1);
 | 
						|
    quaH.zero();
 | 
						|
    quaH.put("CODDITTA", app()._codditta);
 | 
						|
    quaH.put("H1ANNO",   app()._anno);
 | 
						|
    quaH.put("H1ENTE",   app()._ente);                 
 | 
						|
    quaH.read(_isequal,_unlock);
 | 
						|
    TExternal_app a(appname);
 | 
						|
    a.run();
 | 
						|
    quaH.read(_iscurr,_lock);
 | 
						|
    f.mask().set_focus();
 | 
						|
    app().refresh(f.mask());
 | 
						|
  }               
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
} 
 | 
						|
         
 | 
						|
bool TQuadro_H_app::dettaglio(TMask_field& f , KEY k)
 | 
						|
{
 | 
						|
  if (k == K_SPACE) 
 | 
						|
  {
 | 
						|
    TString appname = "771mod -4";
 | 
						|
    TToken_string body;
 | 
						|
 | 
						|
    body << F_DATAVERS << "|";
 | 
						|
    body << F_ANNO << "=" << f.mask().get(F_H1ANNO) << "|";
 | 
						|
    body << F_CODDITTA << "=" << f.mask().get(F_CODDITTA) << "|";
 | 
						|
    body << F_ENTE << "=" << f.mask().get(F_ENTE);
 | 
						|
    
 | 
						|
    TMessage msg (appname,MSG_FS,(const char*) body);
 | 
						|
    
 | 
						|
    TMailbox mb;
 | 
						|
    mb.send(msg);
 | 
						|
    
 | 
						|
    TLocalisamfile& quaH = app().get_relation()->lfile();
 | 
						|
                 
 | 
						|
    quaH.setkey(1);
 | 
						|
    quaH.zero();
 | 
						|
    quaH.put("CODDITTA", app()._codditta);
 | 
						|
    quaH.put("H1ANNO",   app()._anno);
 | 
						|
    quaH.put("H1ENTE",   app()._ente);                 
 | 
						|
    quaH.read(_isequal,_unlock);
 | 
						|
    TExternal_app a(appname);
 | 
						|
    a.run();
 | 
						|
    quaH.read(_iscurr,_lock);
 | 
						|
    f.mask().set_focus();
 | 
						|
    app().refresh(f.mask());
 | 
						|
  }               
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
} 
 | 
						|
 
 | 
						|
bool TQuadro_H_app::desc_ente(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_TAB && f.to_check(k) && f.mask().is_running())
 | 
						|
  { 
 | 
						|
    TTable ente ("%ENT");
 | 
						|
    TString descrizione;
 | 
						|
    
 | 
						|
    TString codice = f.get();
 | 
						|
    
 | 
						|
    ente.zero();
 | 
						|
    ente.put("CODTAB", codice);
 | 
						|
    if (ente.read() == NOERR)
 | 
						|
    {
 | 
						|
      descrizione = ente.get("S0");
 | 
						|
      f.mask().set(F_DESCENTE, descrizione);  
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      descrizione = "";
 | 
						|
      f.mask().set(F_DESCENTE, descrizione);  
 | 
						|
      return f.warning_box("Valore non presente in tabella Enti previdenziali");
 | 
						|
    }  
 | 
						|
    
 | 
						|
  }                                        
 | 
						|
                                          
 | 
						|
  return TRUE;  
 | 
						|
}
 | 
						|
 | 
						|
void TQuadro_H_app::on_config_change()
 | 
						|
{
 | 
						|
  TConfig conf(CONFIG_STUDIO);
 | 
						|
  _anno = (int) conf.get_long(ANNO_SEL);
 | 
						|
} 
 | 
						|
 | 
						|
TMask* TQuadro_H_app::get_mask(int mode)
 | 
						|
{
 | 
						|
  return _msk;
 | 
						|
}
 | 
						|
 | 
						|
bool TQuadro_H_app::almeno_un_dettaglio(TMask& m)
 | 
						|
{        
 | 
						|
  TLocalisamfile dett (LF_DETH);
 | 
						|
  
 | 
						|
  dett.setkey(1);
 | 
						|
  dett.zero();
 | 
						|
  dett.put("CODDITTA", _codditta);
 | 
						|
  dett.put("ANNO",     _anno);
 | 
						|
  dett.put("ENTE",     _ente);
 | 
						|
  for (dett.read();!dett.eof();dett.next())
 | 
						|
  {
 | 
						|
    long    codditta = dett.get_long("CODDITTA");
 | 
						|
    int     anno     = dett.get_int ("ANNO");
 | 
						|
    TString ente     = dett.get     ("ENTE");
 | 
						|
    
 | 
						|
    if (_codditta == codditta && _anno == anno && _ente == ente)
 | 
						|
      return TRUE;
 | 
						|
  }
 | 
						|
    
 | 
						|
  return FALSE;
 | 
						|
}
 | 
						|
 | 
						|
void TQuadro_H_app::init_insert_mode(TMask& m)
 | 
						|
{
 | 
						|
  m.show(F_ENTE);
 | 
						|
  m.hide(F_ENTEBIS);
 | 
						|
 | 
						|
  m.disable(F_BTG_GENERA);
 | 
						|
  m.disable(F_BTG_DETTAGLIO);
 | 
						|
}
 | 
						|
                               
 | 
						|
void TQuadro_H_app::init_query_mode(TMask& m)
 | 
						|
{ 
 | 
						|
  on_config_change();
 | 
						|
  m.set(F_H1ANNO, _anno);
 | 
						|
//  m.field(F_H1ANNO).set_dirty(FALSE);
 | 
						|
  m.disable(F_BTG_GENERA);
 | 
						|
  m.disable(F_BTG_DETTAGLIO);
 | 
						|
  m.show(F_ENTE);
 | 
						|
  m.hide(F_ENTEBIS);
 | 
						|
}                                             
 | 
						|
 | 
						|
void TQuadro_H_app::init_query_insert_mode(TMask& m)
 | 
						|
{                        
 | 
						|
  m.set(F_H1ANNO, _anno);
 | 
						|
  
 | 
						|
  m.hide(F_ENTE);
 | 
						|
  m.show(F_ENTEBIS);
 | 
						|
 | 
						|
  m.disable(F_BTG_GENERA);
 | 
						|
  m.disable(F_BTG_DETTAGLIO);
 | 
						|
}
 | 
						|
 | 
						|
void TQuadro_H_app::init_modify_mode(TMask& m)
 | 
						|
{                               
 | 
						|
 | 
						|
  _codditta = m.get_long(F_CODDITTA);
 | 
						|
  _anno     = m.get_int (F_H1ANNO);
 | 
						|
  _ente     = m.get     (F_ENTE);
 | 
						|
  
 | 
						|
  if (almeno_un_dettaglio(m))
 | 
						|
    m.enable (F_BTG_GENERA);
 | 
						|
  else
 | 
						|
    m.disable(F_BTG_GENERA);
 | 
						|
    
 | 
						|
  m.enable (F_BTG_DETTAGLIO);
 | 
						|
  
 | 
						|
  m.show(F_ENTE);
 | 
						|
  m.hide(F_ENTEBIS);
 | 
						|
}
 | 
						|
 | 
						|
int TQuadro_H_app::rewrite(const TMask& m)
 | 
						|
{
 | 
						|
  m.autosave(*_rel);
 | 
						|
  _registra = TRUE;
 | 
						|
  return _rel->rewrite();
 | 
						|
}
 | 
						|
 | 
						|
int TQuadro_H_app::write(const TMask& m)
 | 
						|
{
 | 
						|
  m.autosave(*_rel);
 | 
						|
  _registra = TRUE;
 | 
						|
  return _rel->write();
 | 
						|
}
 | 
						|
 | 
						|
bool TQuadro_H_app::remove()
 | 
						|
{
 | 
						|
  _registra = TRUE;
 | 
						|
  return TRelation_application::remove();
 | 
						|
}
 | 
						|
 | 
						|
bool TQuadro_H_app::user_create()
 | 
						|
{
 | 
						|
  _rel = new TRelation (LF_QUAH);
 | 
						|
  _msk = new TMask("771290a");
 | 
						|
  
 | 
						|
  set_search_field(F_H1ANNO);
 | 
						|
  _msk->set_handler (F_CODDITTA,       codditta_hnd);
 | 
						|
  _msk->set_handler (F_BTG_GENERA,     generazione);        
 | 
						|
  _msk->set_handler (F_BTG_DETTAGLIO,  dettaglio);        
 | 
						|
  _msk->set_handler (F_ENTE,           desc_ente);
 | 
						|
  _msk->set_handler (F_ENTEBIS,        desc_ente);  
 | 
						|
  
 | 
						|
  _registra = FALSE;
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TQuadro_H_app::user_destroy()
 | 
						|
{                   
 | 
						|
  if (_registra)
 | 
						|
// 20.12.95 l'anno deve essere quello dei parametri
 | 
						|
//    _rip.set("H",_anno); 
 | 
						|
    _rip.set("H");
 | 
						|
    
 | 
						|
  delete _msk;
 | 
						|
  delete _rel;
 | 
						|
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
int m71290(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TQuadro_H_app a;
 | 
						|
  a.run(argc, argv, "Quadro H");
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 | 
						|
 |