Files correlati : Ricompilazione Demo : [ ] Commento : RIportata la verione 3.2 1167 git-svn-id: svn://10.65.10.50/trunk@16733 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			187 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
// gestione anagrafica soci cooperative
 | 
						|
#include <automask.h>
 | 
						|
#include <execp.h>
 | 
						|
#include <relapp.h>
 | 
						|
#include <pconti.h>
 | 
						|
#include <recarray.h>
 | 
						|
 | 
						|
#include "co0600a.h"
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////
 | 
						|
//MASCHERA
 | 
						|
////////////////////////////////////////////////////////////////////////
 | 
						|
class TCoop_soci_msk : public TAutomask
 | 
						|
{
 | 
						|
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						|
	
 | 
						|
public:
 | 
						|
	void calcola_dati_nascita(const TString& cf, TDate& datanasc, TString8& comnasc);
 | 
						|
  TCoop_soci_msk() : TAutomask("co0600a") {}
 | 
						|
};
 | 
						|
 | 
						|
void TCoop_soci_msk::calcola_dati_nascita(const TString& cf, TDate& datanasc, TString8& comnasc)
 | 
						|
{
 | 
						|
	comnasc = "";
 | 
						|
	datanasc = TDate(NULLDATE);
 | 
						|
	if (cf.not_empty())
 | 
						|
	{
 | 
						|
		comnasc = cf.sub(11,15);
 | 
						|
		int a = atoi(cf.sub(6,8));
 | 
						|
		a+=1900;
 | 
						|
		char mc = cf[8];
 | 
						|
		int m = 0;
 | 
						|
		switch (mc)
 | 
						|
		{
 | 
						|
			case 'A':	m = 1;	break;
 | 
						|
			case 'B':	m = 2;	break;
 | 
						|
			case 'C':	m = 3;	break;
 | 
						|
			case 'D':	m = 4;	break;
 | 
						|
			case 'E':	m = 5;	break;
 | 
						|
			case 'H':	m = 6;	break;
 | 
						|
			case 'L':	m = 7;	break;
 | 
						|
			case 'M':	m = 8;	break;
 | 
						|
			case 'P':	m = 9;	break;
 | 
						|
			case 'R':	m = 10;	break;
 | 
						|
			case 'S':	m = 11;	break;
 | 
						|
			case 'T':	m = 12;	break;
 | 
						|
			default: m = 0;		break;
 | 
						|
		}
 | 
						|
		int g = atoi(cf.sub(9,11));
 | 
						|
		if (g > 40)
 | 
						|
			g-=40;
 | 
						|
		if (g > 0 && m > 0 && a > 0)
 | 
						|
		{
 | 
						|
			datanasc.set_day(g);
 | 
						|
			datanasc.set_month(m);
 | 
						|
			datanasc.set_year(a);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
bool TCoop_soci_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) 
 | 
						|
{
 | 
						|
  switch (o.dlg())
 | 
						|
  {                             
 | 
						|
  case F_COFISOCIO:
 | 
						|
    if (e == fe_modify || e == fe_init)
 | 
						|
    {
 | 
						|
      TMask& m = o.mask();
 | 
						|
			TString80 cf = m.get(F_COFISOCIO);
 | 
						|
			TDate datanasc;
 | 
						|
			TString8 comnasc;
 | 
						|
			calcola_dati_nascita(cf, datanasc, comnasc);
 | 
						|
			if (datanasc.ok())
 | 
						|
			{
 | 
						|
				m.set(F_DATANASC, datanasc);		
 | 
						|
				m.set(F_COMNASC, comnasc);
 | 
						|
			}
 | 
						|
    }
 | 
						|
    break;
 | 
						|
	case F_DATALIC:
 | 
						|
    if (e == fe_modify)
 | 
						|
    {
 | 
						|
      TMask& m = o.mask();
 | 
						|
			TString16 data = o.get();
 | 
						|
			
 | 
						|
			if (data.full())
 | 
						|
			{
 | 
						|
				TDate datalic(data);
 | 
						|
 | 
						|
				datalic.addyear(6);
 | 
						|
			  m.set(F_DATASCALIC, datalic);		
 | 
						|
			}
 | 
						|
			else
 | 
						|
			  m.reset(F_DATASCALIC);		
 | 
						|
    }
 | 
						|
 | 
						|
  }  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
class TCoop_soci_application : public TRelation_application
 | 
						|
 | 
						|
{
 | 
						|
  TMask* _msk;
 | 
						|
  TRelation* _rel;
 | 
						|
 | 
						|
protected:
 | 
						|
  virtual TMask* get_mask(int mode = MODE_QUERY) { CHECK(_msk, "Null mask"); return _msk; }
 | 
						|
  virtual bool changing_mask(int mode) { return false; }
 | 
						|
  virtual TRelation* get_relation() const {  CHECK(_rel, "Null relation"); return _rel; }
 | 
						|
 | 
						|
  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);
 | 
						|
 | 
						|
	void show_socio(TMask& m, const bool show = true);
 | 
						|
 
 | 
						|
	virtual bool user_create() ;
 | 
						|
  virtual bool user_destroy() ;
 | 
						|
  
 | 
						|
public:
 | 
						|
  TCoop_soci_application() : _msk(NULL), _rel(NULL) { }
 | 
						|
  virtual ~TCoop_soci_application() {}
 | 
						|
};
 | 
						|
 | 
						|
void TCoop_soci_application::show_socio(TMask& m, const bool show)
 | 
						|
{
 | 
						|
	if (show)
 | 
						|
	{
 | 
						|
	  m.show(-1);
 | 
						|
		m.hide(-2);
 | 
						|
	}
 | 
						|
	else
 | 
						|
	{
 | 
						|
	  m.show(-2);
 | 
						|
		m.hide(-1);
 | 
						|
	}
 | 
						|
}
 | 
						|
void TCoop_soci_application::init_query_mode(TMask& m)
 | 
						|
{
 | 
						|
	show_socio(m);
 | 
						|
}
 | 
						|
 | 
						|
void TCoop_soci_application::init_query_insert_mode(TMask& m)
 | 
						|
{
 | 
						|
	show_socio(m, false);
 | 
						|
}
 | 
						|
 | 
						|
void TCoop_soci_application::init_insert_mode(TMask& m)
 | 
						|
{
 | 
						|
	show_socio(m, false);
 | 
						|
}
 | 
						|
 | 
						|
void TCoop_soci_application::init_modify_mode(TMask& m)
 | 
						|
{
 | 
						|
	show_socio(m);
 | 
						|
}
 | 
						|
 | 
						|
bool TCoop_soci_application::user_create()
 | 
						|
{
 | 
						|
	_rel = new TRelation(LF_SOCICOOP);
 | 
						|
  _msk = new TCoop_soci_msk; 
 | 
						|
  TString title;
 | 
						|
  _msk->get_caption(title);
 | 
						|
  set_title(title);
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
bool TCoop_soci_application::user_destroy() 
 | 
						|
{
 | 
						|
  if (_msk)
 | 
						|
		delete _msk;
 | 
						|
  if (_rel)
 | 
						|
		delete _rel;
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
int co0600(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TCoop_soci_application a;
 | 
						|
 | 
						|
  a.run(argc, argv, TR("Anagrafica soci"));
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 |