Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 873 git-svn-id: svn://10.65.10.50/trunk@15151 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			559 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			559 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <applicat.h>
 | 
						||
#include <mask.h>
 | 
						||
#include <progind.h>
 | 
						||
#include <relation.h>
 | 
						||
#include <urldefid.h>
 | 
						||
 | 
						||
#include "at8.h"
 | 
						||
#include "at8200a.h"
 | 
						||
 | 
						||
// nomi campi maschera
 | 
						||
#include "atlib.h"
 | 
						||
          
 | 
						||
// nomi dei campi
 | 
						||
#include "soggetti.h"
 | 
						||
#include "donaz.h"
 | 
						||
#include "contsan.h"
 | 
						||
#include "idoneita.h"
 | 
						||
#include "benem.h"
 | 
						||
#include "famiglie.h"
 | 
						||
 | 
						||
class TAggConSan : public TApplication
 | 
						||
{
 | 
						||
	TMask*					_msk;
 | 
						||
	TRelation*   		_rel;
 | 
						||
  TLocalisamfile* _soggetti;
 | 
						||
	TLocalisamfile* _donaz;
 | 
						||
	TLocalisamfile* _contsan;
 | 
						||
	TLocalisamfile* _idoneita;
 | 
						||
	TLocalisamfile* _benem;
 | 
						||
	TLocalisamfile* _famiglie;
 | 
						||
	TRecord_array*	_sdonazioni; 
 | 
						||
	TRecord_array*	_scontrolli;
 | 
						||
	TRecord_array*	_sidoneita;
 | 
						||
	TRecord_array*	_sbenem;
 | 
						||
	TRecord_array*	_sfamiglie;
 | 
						||
	// parametri di sezione
 | 
						||
  int							_intsi_f1, _intsi_f2, _intsi_m, _intaf_m, _etadonne;
 | 
						||
	int							_numdon1, _numdon2;
 | 
						||
	TString16				_catini1, _catfin1, _catini2, _catfin2, _motivoid;
 | 
						||
	bool						_sttess2, _dataisc, _nomessage, _autoid;
 | 
						||
 | 
						||
protected:
 | 
						||
	virtual bool create();
 | 
						||
	virtual bool destroy();
 | 
						||
  virtual bool menu(MENU_TAG m);
 | 
						||
	virtual TMask& get_mask() { return *_msk; }
 | 
						||
	virtual TRelation* get_relation() const { return _rel; }
 | 
						||
	int write(TSheet_field& s);
 | 
						||
 | 
						||
public:
 | 
						||
	TAggConSan() {}
 | 
						||
};
 | 
						||
 | 
						||
HIDDEN inline TAggConSan& app() { return (TAggConSan&) main_app(); }
 | 
						||
 | 
						||
bool TAggConSan::create()
 | 
						||
{
 | 
						||
	TApplication::create();
 | 
						||
	_msk = new TMask("at8200a");
 | 
						||
	_rel = new TRelation(LF_SOGGETTI);
 | 
						||
  //_rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD);
 | 
						||
	_soggetti = new TLocalisamfile(LF_SOGGETTI);
 | 
						||
	_donaz = new TLocalisamfile(LF_DONAZ);
 | 
						||
	_contsan = new TLocalisamfile(LF_CONTSAN);
 | 
						||
	_idoneita = new TLocalisamfile(LF_IDONEITA);
 | 
						||
	_benem = new TLocalisamfile(LF_BENEM);
 | 
						||
	_famiglie = new TLocalisamfile(LF_FAMIGLIE);
 | 
						||
	_sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON);
 | 
						||
	_scontrolli = new TRecord_array(LF_CONTSAN,CON_PROGCON);
 | 
						||
	_sidoneita = new TRecord_array(LF_IDONEITA,IDO_PROGIDO);
 | 
						||
	_sbenem = new TRecord_array(LF_BENEM,BEN_PROGBEN);
 | 
						||
	_sfamiglie = new TRecord_array(LF_FAMIGLIE,FAM_PROGFAM);
 | 
						||
  TConfig config(CONFIG_STUDIO);
 | 
						||
  _numdon1 = config.get_int("NumDon1");
 | 
						||
  _numdon2 = config.get_int("NumDon2");
 | 
						||
  _catini1 = config.get("CatIni1");
 | 
						||
  _catfin1 = config.get("CatFin1");
 | 
						||
  _catini2 = config.get("CatIni2");
 | 
						||
  _catfin2 = config.get("CatFin2");
 | 
						||
  _sttess2 = config.get_bool("StTess2");
 | 
						||
  _dataisc = config.get_bool("DataIsc");
 | 
						||
  _nomessage = config.get_bool("NoMessage");
 | 
						||
  _etadonne = config.get_int("EtaDonne");
 | 
						||
  _intsi_f1 = config.get_int("IntSI_F1");
 | 
						||
  _intsi_f2 = config.get_int("IntSI_F2");
 | 
						||
  _intsi_m = config.get_int("IntSI_M");
 | 
						||
  _intaf_m = config.get_int("IntAF_M");
 | 
						||
  dispatch_e_menu(BAR_ITEM(1));
 | 
						||
	return TRUE;
 | 
						||
}	
 | 
						||
 | 
						||
bool TAggConSan::destroy()	
 | 
						||
{                          
 | 
						||
	delete _sfamiglie;
 | 
						||
	delete _sbenem;
 | 
						||
	delete _sidoneita;
 | 
						||
	delete _scontrolli;
 | 
						||
	delete _sdonazioni;
 | 
						||
	delete _famiglie;
 | 
						||
	delete _benem;
 | 
						||
	delete _idoneita;
 | 
						||
	delete _contsan;
 | 
						||
	delete _donaz;	
 | 
						||
	delete _soggetti;
 | 
						||
	delete _rel;
 | 
						||
	delete _msk;
 | 
						||
	return TApplication::destroy();
 | 
						||
}
 | 
						||
 | 
						||
bool TAggConSan::menu(MENU_TAG m)
 | 
						||
{ 
 | 
						||
 	KEY tasto = _msk->run();
 | 
						||
  TPrinter& pr = printer();
 | 
						||
 	  
 | 
						||
 	if (tasto == K_ENTER)
 | 
						||
 	{                    
 | 
						||
 		if (!pr.open())
 | 
						||
 			return error_box("Errore in apertura stampante.");	
 | 
						||
 			
 | 
						||
 		bool anagrafica = _msk->get_bool(F_ANAGRAFICA);
 | 
						||
 		bool controlli = _msk->get_bool(F_CONTROLLI);
 | 
						||
 		bool benemerenze = _msk->get_bool(F_BENEMERENZE);
 | 
						||
 		bool famiglie = _msk->get_bool(F_FAMIGLIE);
 | 
						||
 		TLocalisamfile& soggetti = _rel->lfile();
 | 
						||
		_rel->lfile().setkey(2);
 | 
						||
		bool modificato = FALSE;
 | 
						||
		TDate oggi(TODAY);
 | 
						||
		TPrintrow row;
 | 
						||
		TString256 rigastampa;
 | 
						||
		rigastampa = "SOGGETTI NON TROVATI SU ARCHIVIO PROVINCIALE ";
 | 
						||
		rigastampa << oggi.string();
 | 
						||
		rigastampa.center_just(120);
 | 
						||
		row.put(rigastampa);
 | 
						||
  	row.put("@>", 1);
 | 
						||
  	row.put("Pag. @#", 105);
 | 
						||
  	printer().setheaderline(2, row);
 | 
						||
		rigastampa = "";
 | 
						||
		rigastampa.fill('-',120);
 | 
						||
		row.reset();
 | 
						||
		row.put(rigastampa);
 | 
						||
		printer().setheaderline(3, row);
 | 
						||
		TRectype recsog = _rel->curr();
 | 
						||
 | 
						||
    if (anagrafica)
 | 
						||
    {   
 | 
						||
			TExternisamfile* fs = new TExternisamfile("$portasog");	 		
 | 
						||
	  	TProgind *pi;
 | 
						||
	  	pi = new TProgind(fs->eod(),"Aggiornamento dati anagrafici", FALSE, TRUE, 10);
 | 
						||
	  	pi->setstatus(1);
 | 
						||
		  for(fs->first(); !fs->eof(); fs->next())
 | 
						||
		  {     
 | 
						||
	   	  pi->addstatus(1);
 | 
						||
				modificato = FALSE;	  
 | 
						||
				const TString80 cognome = fs->get("COGNOME");	  	             
 | 
						||
				const TString80 nome = fs->get("NOME");
 | 
						||
				const TDate datanasc = fs->get_date("DATANASC");	  	             
 | 
						||
				recsog.zero();
 | 
						||
				recsog.put(SOG_COGNOME, cognome);
 | 
						||
				recsog.put(SOG_NOME, nome);			
 | 
						||
				recsog.put(SOG_DATANASC, datanasc);			
 | 
						||
				if (recsog.read(_rel->lfile())==NOERR)
 | 
						||
				{                                    
 | 
						||
					if (fs->get("DATAISC").not_empty())
 | 
						||
						recsog.put(SOG_DATAISC, fs->get("DATAISC"));
 | 
						||
					recsog.put(SOG_TESSAVIS, fs->get("TESSAVIS"));
 | 
						||
					recsog.put(SOG_COGNOME_SP, fs->get("COGNOME_SP"));
 | 
						||
					recsog.put(SOG_DOM_INDIR, fs->get("DOM_INDIR"));
 | 
						||
					recsog.put(SOG_DOM_CODCOM, fs->get("DOM_CODCOM"));
 | 
						||
					recsog.put(SOG_DOM_CODLOC, fs->get("DOM_CODLOC"));
 | 
						||
					recsog.put(SOG_DOM_STRADA, fs->get("DOM_STRADA"));
 | 
						||
					recsog.put(SOG_DOM_DISTRI, fs->get("DOM_DISTRI"));
 | 
						||
					recsog.put(SOG_DOM_CAP, fs->get("DOM_CAP"));
 | 
						||
					recsog.put(SOG_RES_INDIR, fs->get("RES_INDIR"));
 | 
						||
					recsog.put(SOG_RES_CODCOM, fs->get("RES_CODCOM"));
 | 
						||
					recsog.put(SOG_RES_CODLOC, fs->get("RES_CODLOC"));
 | 
						||
					recsog.put(SOG_RES_CAP, fs->get("RES_CAP"));
 | 
						||
					recsog.put(SOG_COMNASC, fs->get("COMNASC"));
 | 
						||
					recsog.put(SOG_SESSO, fs->get("SESSO"));
 | 
						||
					recsog.put(SOG_CF, fs->get("CF"));
 | 
						||
					recsog.put(SOG_DOCID, fs->get("DOCID"));
 | 
						||
					recsog.put(SOG_TELABI, fs->get("TELABI"));
 | 
						||
					recsog.put(SOG_TELLAV, fs->get("TELLAV"));
 | 
						||
					recsog.put(SOG_TELALT, fs->get("TELALT"));
 | 
						||
					recsog.put(SOG_TITINDIR, fs->get("TITINDIR"));
 | 
						||
					recsog.put(SOG_CATNOND1, fs->get("CATNOND1"));
 | 
						||
					recsog.put(SOG_CATNOND2, fs->get("CATNOND2"));
 | 
						||
					recsog.put(SOG_CODMED, fs->get("CODMED"));
 | 
						||
					recsog.put(SOG_NOTIZIARIO, fs->get("NOTIZIARIO"));
 | 
						||
					recsog.put(SOG_BENEM, fs->get("BENEM"));
 | 
						||
					recsog.put(SOG_CONSENSO, fs->get("CONSENSO"));
 | 
						||
					recsog.put(SOG_MODCONV, fs->get("MODCONV"));
 | 
						||
					recsog.put(SOG_GIOPREDON, fs->get("GIOPREDON"));
 | 
						||
					recsog.put(SOG_GIOPRECON, fs->get("GIOPRECON"));
 | 
						||
					recsog.put(SOG_CONDOCC, fs->get("CONDOCC"));
 | 
						||
					recsog.put(SOG_POSPROF, fs->get("POSPROF"));
 | 
						||
					recsog.put(SOG_RAMOATT, fs->get("RAMOATT"));
 | 
						||
					recsog.put(SOG_TITSTUD, fs->get("TITSTUD"));
 | 
						||
					recsog.put(SOG_PROFESS, fs->get("PROFESS"));
 | 
						||
					recsog.put(SOG_ESCLUSO, fs->get("ESCLUSO"));
 | 
						||
					recsog.put(SOG_TERMESCL, fs->get("TERMESCL"));
 | 
						||
					recsog.put(SOG_MOTESCL, fs->get("MOTESCL"));
 | 
						||
					recsog.put(SOG_DATAULTAGG, oggi);
 | 
						||
					recsog.put(SOG_UTENULTAGG, "PORT.");
 | 
						||
					recsog.rewrite(_rel->lfile());
 | 
						||
				}
 | 
						||
				else
 | 
						||
				{
 | 
						||
					rigastampa = "";
 | 
						||
					rigastampa << cognome;
 | 
						||
					rigastampa << " " << nome;
 | 
						||
					rigastampa << " " << datanasc.string();
 | 
						||
					const char* catdon = recsog.get(SOG_CATDON);
 | 
						||
					if (yesno_box("%s %s %s %s\nIl soggetto non esiste nell'archivio provinciale. Inserire?", (const char*) cognome,(const char*) nome, (const char*) datanasc.string(), catdon))
 | 
						||
					{
 | 
						||
						soggetti.setkey(1);
 | 
						||
						soggetti.last();
 | 
						||
						long lastcod = soggetti.get_long(SOG_CODICE);
 | 
						||
						soggetti.zero();
 | 
						||
						for (int i=0;i<recsog.items();i++)
 | 
						||
							soggetti.put(recsog.fieldname(i), fs->get(recsog.fieldname(i)));
 | 
						||
						soggetti.put(SOG_CODICE, lastcod+1);
 | 
						||
						soggetti.put(SOG_DATAULTAGG, oggi);
 | 
						||
						soggetti.put(SOG_UTENULTAGG, "PORT.-inserimento autom.");
 | 
						||
						soggetti.write();
 | 
						||
						rigastampa << " " << "*** INSERITO codice " << soggetti.get(SOG_CODICE);
 | 
						||
						soggetti.setkey(2);
 | 
						||
					}
 | 
						||
					row.reset();
 | 
						||
					row.put((const char*) rigastampa);
 | 
						||
					printer().print(row);			
 | 
						||
				}
 | 
						||
			}
 | 
						||
	  	delete pi;
 | 
						||
	  	delete fs;
 | 
						||
  	}	
 | 
						||
		if (controlli)
 | 
						||
		{
 | 
						||
			TExternisamfile* fc = new TExternisamfile("$portacon");	 		
 | 
						||
	  	TProgind *pi;
 | 
						||
	  	pi = new TProgind(fc->eod(),"Aggiornamento controlli sanitari", FALSE, TRUE, 10);
 | 
						||
	  	pi->setstatus(1);
 | 
						||
		  for(fc->first(); !fc->eof(); fc->next())
 | 
						||
		  {     
 | 
						||
	   	  pi->addstatus(1);
 | 
						||
				modificato = FALSE;	  
 | 
						||
				const TString80 cognome = fc->get("COGNOME");	  	             
 | 
						||
				const TString80 nome = fc->get("NOME");
 | 
						||
				const TDate datanasc = fc->get_date("DATANASC");	  	             
 | 
						||
				recsog.zero();
 | 
						||
				recsog.put(SOG_COGNOME, cognome);
 | 
						||
				recsog.put(SOG_NOME, nome);			
 | 
						||
				recsog.put(SOG_DATANASC, datanasc);			
 | 
						||
				if (recsog.read(_rel->lfile())==NOERR)
 | 
						||
				{   
 | 
						||
					TDate datacon = fc->get_date("DATACON");
 | 
						||
					bool esiste = FALSE;
 | 
						||
					TRectype* key = new TRectype(LF_CONTSAN);
 | 
						||
					key->put(CON_CODICE, recsog.get(SOG_CODICE));
 | 
						||
					_scontrolli->read(key);
 | 
						||
					for (int r=1; r<=_scontrolli->rows(); r++)
 | 
						||
					{
 | 
						||
						const TRectype& riga = _scontrolli->row(r);
 | 
						||
						TDate datacon1 = riga.get(CON_DATACON);
 | 
						||
						if (datacon==datacon1)
 | 
						||
							esiste = TRUE;
 | 
						||
					}
 | 
						||
					if (!esiste)
 | 
						||
					{
 | 
						||
						int progcon = _scontrolli->rows()+1;
 | 
						||
						TRectype& reccon = _contsan->curr();
 | 
						||
						reccon.zero();
 | 
						||
						reccon.put(CON_CODICE, recsog.get(SOG_CODICE));
 | 
						||
						reccon.put(CON_PROGCON, progcon);
 | 
						||
	  				reccon.put(CON_DATACON, datacon);							
 | 
						||
						reccon.put(CON_TIPOCON, fc->get("TIPOCON"));
 | 
						||
						reccon.put(CON_IDON1, fc->get("IDON1"));
 | 
						||
						reccon.put(CON_IDON2, fc->get("IDON2"));
 | 
						||
						reccon.put(CON_IDON3, fc->get("IDON3"));
 | 
						||
						reccon.put(CON_IDON4, fc->get("IDON4"));
 | 
						||
						reccon.put(CON_INTSI, fc->get("INTSI"));
 | 
						||
						reccon.put(CON_INTAF, fc->get("INTAF"));
 | 
						||
						reccon.put(CON_PROSSTIPO, fc->get("PROSSTIPO"));
 | 
						||
						reccon.put(CON_PROSSDATA, fc->get("PROSSDATA"));
 | 
						||
						reccon.put(CON_MOTIVO, fc->get("MOTIVO"));
 | 
						||
						TString80 resp = "port.-" ;
 | 
						||
						resp << fc->get("RESPONSAB");
 | 
						||
						reccon.put(CON_RESPONSAB, resp);
 | 
						||
						modificato = TRUE;
 | 
						||
						_scontrolli->insert_row(reccon);
 | 
						||
						_scontrolli->write(TRUE);
 | 
						||
					}
 | 
						||
					if (modificato)
 | 
						||
					{
 | 
						||
						TRectype* key = new TRectype(LF_IDONEITA);
 | 
						||
						key->put(IDO_CODICE, recsog.get(SOG_CODICE));
 | 
						||
						_sidoneita->read(key);
 | 
						||
						con_reord(recsog,_scontrolli,_sidoneita);
 | 
						||
						//Verifico se la categoria del donatore <20> aggiornata al numero di donazioni dello stesso
 | 
						||
						//se non lo <20> eseguo tutti i controlli per il salto automatico di categoria
 | 
						||
						TString16 catdon = recsog.get(SOG_CATDON);
 | 
						||
						const int totdon = recsog.get_int(SOG_TOTDON);
 | 
						||
						if ((catdon == _catini1 || _catini1.empty()) && (totdon>=_numdon1) && _catfin1.not_empty())
 | 
						||
								recsog.put(SOG_CATDON, _catfin1);
 | 
						||
						const bool tstampata = recsog.get_bool(SOG_T_STAMPATA);
 | 
						||
						if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || tstampata))
 | 
						||
								recsog.put(SOG_CATDON, _catfin2);
 | 
						||
						recsog.put(SOG_DATAULTAGG, oggi);
 | 
						||
						recsog.put(SOG_UTENULTAGG, "PORT.");
 | 
						||
						recsog.rewrite(_rel->lfile());
 | 
						||
					}				
 | 
						||
				}
 | 
						||
				else
 | 
						||
				{              
 | 
						||
					rigastampa = "";
 | 
						||
					rigastampa << cognome;
 | 
						||
					rigastampa << " " << nome;
 | 
						||
					rigastampa << " " << datanasc.string();
 | 
						||
					row.reset();
 | 
						||
					row.put(rigastampa);
 | 
						||
					printer().print(row);			
 | 
						||
				}
 | 
						||
			}
 | 
						||
	  	delete pi;
 | 
						||
	  	delete fc;
 | 
						||
			TExternisamfile* fi = new TExternisamfile("$portaido");	 		
 | 
						||
	  	TProgind *pi1;
 | 
						||
	  	pi1 = new TProgind(fi->eod(),"Aggiornamento idoneita'", FALSE, TRUE, 10);
 | 
						||
	  	pi1->setstatus(1);
 | 
						||
		  for(fi->first(); !fi->eof(); fi->next())
 | 
						||
		  {     
 | 
						||
	   	  pi1->addstatus(1);
 | 
						||
				modificato = FALSE;	  
 | 
						||
				const TString80 cognome = fi->get("COGNOME");	  	             
 | 
						||
				const TString80 nome = fi->get("NOME");
 | 
						||
				const TDate datanasc = fi->get_date("DATANASC");	  	             
 | 
						||
				recsog.zero();
 | 
						||
				recsog.put(SOG_COGNOME, cognome);
 | 
						||
				recsog.put(SOG_NOME, nome);			
 | 
						||
				recsog.put(SOG_DATANASC, datanasc);			
 | 
						||
				if (recsog.read(_rel->lfile())==NOERR)
 | 
						||
				{   
 | 
						||
					TDate dataido = fi->get_date("DATAIDO");
 | 
						||
					bool esiste = FALSE;
 | 
						||
					TRectype* key = new TRectype(LF_IDONEITA);
 | 
						||
					key->put(IDO_CODICE, recsog.get(SOG_CODICE));
 | 
						||
					_sidoneita->read(key);
 | 
						||
					for (int r=1; r<=_sidoneita->rows(); r++)
 | 
						||
					{
 | 
						||
						const TRectype& riga = _sidoneita->row(r);
 | 
						||
						TDate dataido1 = riga.get(IDO_DATAIDO);
 | 
						||
						if (dataido==dataido1)
 | 
						||
							esiste = TRUE;
 | 
						||
					}
 | 
						||
					if (!esiste)
 | 
						||
					{
 | 
						||
						int progido = _sidoneita->rows()+1;
 | 
						||
						TRectype& recido = _idoneita->curr();
 | 
						||
						recido.zero();
 | 
						||
						recido.put(IDO_CODICE, recsog.get(SOG_CODICE));
 | 
						||
						recido.put(IDO_PROGIDO, progido);
 | 
						||
	  				recido.put(IDO_DATAIDO, dataido);							
 | 
						||
						recido.put(IDO_TIPOIDO, fi->get("TIPOIDO"));
 | 
						||
						recido.put(IDO_IDO_SOS, fi->get("IDO_SOS"));
 | 
						||
						recido.put(IDO_INTERVALLO, fi->get("INTERVALLO"));
 | 
						||
						recido.put(IDO_FINESOS, fi->get("FINESOS"));
 | 
						||
						recido.put(IDO_MOTIVO, fi->get("MOTIVO"));
 | 
						||
						TString80 resp = "port.-" ;
 | 
						||
						resp << fi->get("RESPONSAB");
 | 
						||
						recido.put(IDO_RESPONSAB, resp);
 | 
						||
						modificato = TRUE;
 | 
						||
						_sidoneita->insert_row(recido);
 | 
						||
						_sidoneita->write(TRUE);
 | 
						||
					}
 | 
						||
					if (modificato)
 | 
						||
					{
 | 
						||
						TRectype* key = new TRectype(LF_CONTSAN);
 | 
						||
						key->put(CON_CODICE, recsog.get(SOG_CODICE));
 | 
						||
						_scontrolli->read(key);
 | 
						||
						con_reord(recsog,_scontrolli,_sidoneita);
 | 
						||
						//Verifico se la categoria del donatore <20> aggiornata al numero di donazioni dello stesso
 | 
						||
						//se non lo <20> eseguo tutti i controlli per il salto automatico di categoria
 | 
						||
						TString16 catdon = recsog.get(SOG_CATDON);
 | 
						||
						const int totdon = recsog.get_int(SOG_TOTDON);
 | 
						||
						if ((catdon == _catini1 || _catini1.empty()) && (totdon>=_numdon1) && _catfin1.not_empty())
 | 
						||
								recsog.put(SOG_CATDON, _catfin1);
 | 
						||
						const bool tstampata = recsog.get_bool(SOG_T_STAMPATA);
 | 
						||
						if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || tstampata))
 | 
						||
								recsog.put(SOG_CATDON, _catfin2);
 | 
						||
						recsog.put(SOG_DATAULTAGG, oggi);
 | 
						||
						recsog.put(SOG_UTENULTAGG, "PORT.");
 | 
						||
						recsog.rewrite(_rel->lfile());
 | 
						||
					}				
 | 
						||
				}
 | 
						||
				else
 | 
						||
				{
 | 
						||
					rigastampa = "";
 | 
						||
					rigastampa << cognome;
 | 
						||
					rigastampa << " " << nome;
 | 
						||
					rigastampa << " " << datanasc.string();
 | 
						||
					row.reset();
 | 
						||
					row.put(rigastampa);
 | 
						||
					printer().print(row);			
 | 
						||
				}
 | 
						||
			}
 | 
						||
	  	delete pi1;
 | 
						||
	  	delete fi;
 | 
						||
    }
 | 
						||
    if (benemerenze)
 | 
						||
    {
 | 
						||
			TExternisamfile* fc = new TExternisamfile("$portaben");	 		
 | 
						||
	  	TProgind *pi;
 | 
						||
	  	pi = new TProgind(fc->eod(),"Aggiornamento benemerenze", FALSE, TRUE, 10);
 | 
						||
	  	pi->setstatus(1);
 | 
						||
		  for(fc->first(); !fc->eof(); fc->next())
 | 
						||
		  {     
 | 
						||
	   	  pi->addstatus(1);
 | 
						||
				modificato = FALSE;	  
 | 
						||
				const TString80 cognome = fc->get("COGNOME");	  	             
 | 
						||
				const TString80 nome = fc->get("NOME");
 | 
						||
				const TDate datanasc = fc->get_date("DATANASC");	  	             
 | 
						||
				recsog.zero();
 | 
						||
				recsog.put(SOG_COGNOME, cognome);
 | 
						||
				recsog.put(SOG_NOME, nome);			
 | 
						||
				recsog.put(SOG_DATANASC, datanasc);			
 | 
						||
				if (recsog.read(_rel->lfile())==NOERR)
 | 
						||
				{   
 | 
						||
					TString16 tipoben = fc->get("TIPOBEN");
 | 
						||
					bool esiste = FALSE;
 | 
						||
					TRectype* key = new TRectype(LF_BENEM);
 | 
						||
					key->put(BEN_CODICE, recsog.get(SOG_CODICE));
 | 
						||
					_sbenem->read(key);
 | 
						||
					for (int r=1; r<=_sbenem->rows(); r++)
 | 
						||
					{
 | 
						||
						const TRectype& riga = _sbenem->row(r);
 | 
						||
						TString16 tipoben1 = riga.get(BEN_TIPOBEN);
 | 
						||
						if (tipoben==tipoben1)
 | 
						||
							esiste = TRUE;
 | 
						||
					}
 | 
						||
					if (!esiste)
 | 
						||
					{
 | 
						||
						int progben = _sbenem->rows()+1;
 | 
						||
						TRectype& recben = _benem->curr();
 | 
						||
						recben.zero();
 | 
						||
						recben.put(BEN_CODICE,     recsog.get(SOG_CODICE));
 | 
						||
						recben.put(BEN_PROGBEN,    progben);
 | 
						||
						recben.put(BEN_TIPOBEN,    fc->get("TIPOBEN"));
 | 
						||
						recben.put(BEN_DATAMAT,    fc->get("DATAMAT"));
 | 
						||
						recben.put(BEN_BONUS, 	   fc->get("BONUS"));
 | 
						||
						recben.put(BEN_DATABEN,    fc->get("DATABEN"));
 | 
						||
						recben.put(BEN_DATACON,    fc->get("DATACON"));
 | 
						||
						recben.put(BEN_RITIRATA,   fc->get("RITIRATA"));
 | 
						||
						recben.put(BEN_CODSEZ,	   fc->get("CODSEZ"));
 | 
						||
						recben.put(BEN_CODSOT,	   fc->get("CODSOT"));
 | 
						||
						recben.put(BEN_GRUPPOAZIE, fc->get("GRUPPOAZIE"));
 | 
						||
						modificato = TRUE;
 | 
						||
						_sbenem->insert_row(recben);
 | 
						||
						_sbenem->write(TRUE);
 | 
						||
					}
 | 
						||
					if (modificato)
 | 
						||
					{
 | 
						||
						recsog.put(SOG_DATAULTAGG, oggi);
 | 
						||
						recsog.put(SOG_UTENULTAGG, "PORT.");
 | 
						||
						recsog.rewrite(_rel->lfile());
 | 
						||
					}				
 | 
						||
				}
 | 
						||
				else
 | 
						||
				{
 | 
						||
					rigastampa = "";
 | 
						||
					rigastampa << cognome;
 | 
						||
					rigastampa << " " << nome;
 | 
						||
					rigastampa << " " << datanasc.string();
 | 
						||
					row.reset();
 | 
						||
					row.put(rigastampa);
 | 
						||
					printer().print(row);			
 | 
						||
				}
 | 
						||
			}
 | 
						||
	  	delete pi;
 | 
						||
	  	delete fc;
 | 
						||
  	}
 | 
						||
    if (famiglie)
 | 
						||
    {            
 | 
						||
    	TString16 codsez = _msk->get(F_SEZINI);
 | 
						||
    	TString16 codsot = _msk->get(F_SOTINI);
 | 
						||
		  for(_famiglie->first(); !_famiglie->eof(); _famiglie->next())
 | 
						||
		  {                    
 | 
						||
		  	soggetti.setkey(1);
 | 
						||
		  	soggetti.zero();
 | 
						||
		  	soggetti.put(SOG_CODICE, _famiglie->get(FAM_CODFAM));
 | 
						||
		  	if (soggetti.read() == NOERR)
 | 
						||
		  	{
 | 
						||
		  		if (soggetti.get_long(SOG_CODICE) == _famiglie->get_long(FAM_CODFAM) && soggetti.get(SOG_CODSEZ) == codsez && soggetti.get(SOG_CODSOT))  
 | 
						||
    			_famiglie->remove();
 | 
						||
    		}	
 | 
						||
    	}	
 | 
						||
    	_famiglie->last();
 | 
						||
			_rel->lfile().setkey(2);
 | 
						||
    	long ultfam = _famiglie->get_long(FAM_FAMIGLIA);
 | 
						||
    	long actfam = 0, prevfam = -1;
 | 
						||
			TExternisamfile* fc = new TExternisamfile("$portafam");	 		
 | 
						||
	  	TProgind *pi;
 | 
						||
	  	pi = new TProgind(fc->eod(),"Aggiornamento famiglie", FALSE, TRUE, 10);
 | 
						||
	  	pi->setstatus(1);
 | 
						||
		  for(fc->first(); !fc->eof(); fc->next())
 | 
						||
		  {     
 | 
						||
	   	  pi->addstatus(1);
 | 
						||
				modificato = FALSE;	  
 | 
						||
				const TString80 cognome = fc->get("COGNOME");	  	             
 | 
						||
				const TString80 nome = fc->get("NOME");
 | 
						||
				const TDate datanasc = fc->get_date("DATANASC");	  	             
 | 
						||
				recsog.zero();
 | 
						||
				recsog.put(SOG_COGNOME, cognome);
 | 
						||
				recsog.put(SOG_NOME, nome);			
 | 
						||
				recsog.put(SOG_DATANASC, datanasc);			
 | 
						||
				if (recsog.read(_rel->lfile())==NOERR)
 | 
						||
				{   
 | 
						||
					TRectype& recfam = fc->curr();
 | 
						||
					recfam.put(FAM_CODFAM, recsog.get(SOG_CODICE));
 | 
						||
					actfam = recfam.get_long(FAM_FAMIGLIA);
 | 
						||
					if (actfam != prevfam)
 | 
						||
					{
 | 
						||
						ultfam++;
 | 
						||
						prevfam = actfam;
 | 
						||
					}	
 | 
						||
					recfam.put(FAM_FAMIGLIA, ultfam);
 | 
						||
					recfam.put(FAM_PROGFAM, fc->get("PROGFAM"));
 | 
						||
					recfam.put(FAM_GRADOPAR, fc->get("GRADOPAR"));
 | 
						||
					_famiglie->write(recfam);       
 | 
						||
				}
 | 
						||
				else
 | 
						||
				{
 | 
						||
					rigastampa = "";
 | 
						||
					rigastampa << cognome;
 | 
						||
					rigastampa << " " << nome;
 | 
						||
					rigastampa << " " << datanasc.string();
 | 
						||
					row.reset();
 | 
						||
					row.put(rigastampa);
 | 
						||
					printer().print(row);			
 | 
						||
				}
 | 
						||
			}
 | 
						||
	  	delete pi;
 | 
						||
	  	delete fc;
 | 
						||
  	}
 | 
						||
  	pr.formfeed();
 | 
						||
  	pr.close();
 | 
						||
 	}
 | 
						||
  return FALSE;
 | 
						||
}  
 | 
						||
 | 
						||
int TAggConSan::write(TSheet_field& s)
 | 
						||
{ 
 | 
						||
	return NOERR;	
 | 
						||
}
 | 
						||
		
 | 
						||
int at8200(int argc, char* argv[])
 | 
						||
{
 | 
						||
	TAggConSan a;
 | 
						||
	a.run(argc, argv, "Aggiorna archivi da altra sezione");
 | 
						||
	return 0;
 | 
						||
} |