Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.2 1010 git-svn-id: svn://10.65.10.50/trunk@16338 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			542 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			542 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <form.h>
 | 
						|
#include <mask.h>
 | 
						|
#include <printapp.h>
 | 
						|
#include <progind.h>
 | 
						|
#include <recarray.h>
 | 
						|
#include <tabutil.h>
 | 
						|
#include <utility.h>
 | 
						|
 | 
						|
#include "at1.h"
 | 
						|
 | 
						|
// nomi campi maschera
 | 
						|
#include "at1200a.h"
 | 
						|
          
 | 
						|
// nomi dei campi
 | 
						|
#include "soggetti.h"
 | 
						|
#include "donaz.h"
 | 
						|
#include "benem.h"
 | 
						|
#include "sezioni.h" 
 | 
						|
#include "atopera.h" 
 | 
						|
#include "atropera.h" 
 | 
						|
 | 
						|
#define ALIAS_GAZ 300
 | 
						|
 | 
						|
class TAttribuzioneBenemerenze : public TPrintapp
 | 
						|
{
 | 
						|
	TMask*						_msk;
 | 
						|
	TRelation*   			_rel;
 | 
						|
	TLocalisamfile*		_donaz;
 | 
						|
	TLocalisamfile* 	_benem;
 | 
						|
	TLocalisamfile* 	_atopera;
 | 
						|
	TLocalisamfile* 	_atropera;
 | 
						|
	TLocalisamfile* 	_sezioni;
 | 
						|
	TRecord_array*		_sdonazioni;
 | 
						|
	TRecord_array* 		_sbenemerenze;
 | 
						|
	TCursor*					_cur;
 | 
						|
  TAssoc_array			_catdon;
 | 
						|
  TAssoc_array			_tabben;
 | 
						|
  TString16 				_gruppoazie, _oldben;
 | 
						|
  int								_bonus;
 | 
						|
	TDate							_dataela, _datapre;
 | 
						|
	bool							_attgruppi,_anchegruppi, _prevista, _nuovicriteri;
 | 
						|
	bool							_definitiva;
 | 
						|
  TParagraph_string _cognome_nome;
 | 
						|
  int								_numdon;
 | 
						|
  int 							_contatore;
 | 
						|
  int 							_progope;
 | 
						|
  
 | 
						|
protected:
 | 
						|
	virtual bool user_create();
 | 
						|
	virtual bool user_destroy();
 | 
						|
	virtual bool set_print(int m);
 | 
						|
	virtual void set_page(int file, int cnt);
 | 
						|
	virtual bool preprocess_page(int file, int counter);
 | 
						|
  virtual void postclose_print();
 | 
						|
	
 | 
						|
public:
 | 
						|
  void crea_intestazione();
 | 
						|
  void header_ben(const TString16 tipoben);
 | 
						|
	TAttribuzioneBenemerenze() : _cognome_nome("",25) {}
 | 
						|
};
 | 
						|
 | 
						|
HIDDEN inline TAttribuzioneBenemerenze& app() { return (TAttribuzioneBenemerenze&) main_app(); }
 | 
						|
 | 
						|
void TAttribuzioneBenemerenze::postclose_print()
 | 
						|
{ 
 | 
						|
	TLocalisamfile atropera(LF_ATROPERA);
 | 
						|
	atropera.setkey(1);
 | 
						|
	atropera.zero();
 | 
						|
	atropera.put(ROP_PROGOPE, _progope);
 | 
						|
	TRectype r(atropera.curr());
 | 
						|
	for (atropera.read(); !atropera.eof(); atropera.next())
 | 
						|
	{
 | 
						|
		if (atropera.curr() != r) break;
 | 
						|
		atropera.remove();
 | 
						|
	}	
 | 
						|
	if (!_definitiva)
 | 
						|
	{
 | 
						|
		TLocalisamfile atopera(LF_ATOPERA);
 | 
						|
		atopera.setkey(1);
 | 
						|
		atopera.zero();
 | 
						|
		atopera.put(OPE_PROGOPE, _progope);
 | 
						|
		if (atopera.read() == NOERR)
 | 
						|
			atopera.remove();
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
bool TAttribuzioneBenemerenze::preprocess_page(int file, int counter)
 | 
						|
{ 
 | 
						|
	if (file==LF_ATROPERA)
 | 
						|
	{
 | 
						|
		TRectype& recsog = current_cursor()->curr(LF_SOGGETTI);
 | 
						|
		TString80 nome = recsog.get(SOG_COGNOME);
 | 
						|
		nome << " ";
 | 
						|
		nome << recsog.get(SOG_NOME);
 | 
						|
		_cognome_nome = nome;
 | 
						|
 | 
						|
		if (_prevista)
 | 
						|
		{     
 | 
						|
			int numdon = recsog.get_int(SOG_TOTDON);
 | 
						|
			if (_prevista)
 | 
						|
			{
 | 
						|
				// aggiungo le donazioni che puo' fare da oggi alla data elaborazione
 | 
						|
				const TDate oggi(TODAY);
 | 
						|
				const long giorni = _dataela - oggi;
 | 
						|
				int intervallo = 0;
 | 
						|
				if (giorni > 0)
 | 
						|
				{                   
 | 
						|
					const int intsi = recsog.get_int(SOG_INTSI);
 | 
						|
					const int intaf = recsog.get_int(SOG_INTAF);							
 | 
						|
					if (intsi == 0)
 | 
						|
						intervallo = intaf;
 | 
						|
					else              
 | 
						|
					{
 | 
						|
						if (intaf == 0)
 | 
						|
							intervallo = intsi;
 | 
						|
						else
 | 
						|
							intervallo = min(intsi, intaf);
 | 
						|
					}		
 | 
						|
					if (intervallo > 0)
 | 
						|
						numdon = numdon + int(giorni / intervallo);
 | 
						|
				}
 | 
						|
			} 
 | 
						|
			_numdon = numdon;
 | 
						|
		}
 | 
						|
		// salto pagina se cambio benemerenza
 | 
						|
		const TString16 tipoben = current_cursor()->curr().get(ROP_S0);
 | 
						|
		if (tipoben!=_oldben)
 | 
						|
		{
 | 
						|
			if (_oldben != "**")
 | 
						|
				printer().formfeed();
 | 
						|
			_oldben = tipoben;
 | 
						|
			header_ben(tipoben);
 | 
						|
		}
 | 
						|
		if (_definitiva)
 | 
						|
		{
 | 
						|
			const long codice = recsog.get_long(SOG_CODICE);
 | 
						|
			TRectype* key = new TRectype(LF_BENEM);
 | 
						|
			key->put(BEN_CODICE, codice);
 | 
						|
			int err = _sbenemerenze->read(key);
 | 
						|
			int r = _sbenemerenze->rows();
 | 
						|
			TRectype& rec = _sbenemerenze->row(r+1,TRUE);
 | 
						|
				
 | 
						|
			TString16 codsez = recsog.get(SOG_CODSEZ);
 | 
						|
			TString16 codsot = recsog.get(SOG_CODSOT);
 | 
						|
			TString16 gruppoazie = recsog.get(SOG_GRUPPOAZIE);
 | 
						|
				
 | 
						|
			rec.put(BEN_TIPOBEN, tipoben);
 | 
						|
			rec.put(BEN_DATAMAT, recsog.get(SOG_DATAULTDON));
 | 
						|
			rec.put(BEN_BONUS, 	 recsog.get(SOG_TOTDON)); 
 | 
						|
			rec.put(BEN_DATABEN, _dataela);
 | 
						|
			rec.put(BEN_DATACON, _datapre);
 | 
						|
			if (_attgruppi)
 | 
						|
				rec.put(BEN_GRUPPOAZIE, gruppoazie);
 | 
						|
			else					
 | 
						|
			{
 | 
						|
				rec.put(BEN_CODSEZ, codsez);
 | 
						|
				rec.put(BEN_CODSOT, codsot);
 | 
						|
			}	
 | 
						|
			err = _sbenemerenze->rewrite();
 | 
						|
		}		
 | 
						|
	}		
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
void TAttribuzioneBenemerenze::set_page(int file, int cnt)
 | 
						|
{                                      
 | 
						|
	if (file == LF_SOGGETTI)
 | 
						|
	{
 | 
						|
		set_row(1,"@0g#a", &_cognome_nome);
 | 
						|
		set_row(1,"@26g@S", FLD(LF_SOGGETTI,SOG_CATDON));
 | 
						|
		set_row(1,"@29g@S", FLD(LF_SOGGETTI,SOG_TESSAVIS));
 | 
						|
		set_row(1,"@39g@pn", FLD(LF_SOGGETTI,SOG_TOTDON,"###"));
 | 
						|
		set_row(1,"@48g@ld", FLD(LF_SOGGETTI,SOG_DATAISC));
 | 
						|
		if (_prevista)
 | 
						|
			set_row(1,"@59g#3d", &_numdon);
 | 
						|
	}				
 | 
						|
	else
 | 
						|
		set_row(1,"");	
 | 
						|
}
 | 
						|
 | 
						|
void TAttribuzioneBenemerenze::header_ben(const TString16 tipoben)
 | 
						|
{
 | 
						|
	TString intestazione(132);
 | 
						|
	intestazione = "Benemerenza ";
 | 
						|
	intestazione << tipoben;
 | 
						|
  intestazione << " ";
 | 
						|
	intestazione << cache().get("BNZ", tipoben).get("S0");
 | 
						|
	intestazione.center_just();
 | 
						|
	set_header(1,"@0g%s", (const char*) intestazione);
 | 
						|
	return;
 | 
						|
}
 | 
						|
 | 
						|
bool TAttribuzioneBenemerenze::set_print(int)
 | 
						|
{
 | 
						|
  KEY tasto;
 | 
						|
  tasto = _msk->run();
 | 
						|
	if (tasto == K_ENTER)
 | 
						|
	{  	 
 | 
						|
		const TDate datarif = TDate("16/05/2004");
 | 
						|
		_oldben = "**"; 
 | 
						|
		_contatore = 0;                 
 | 
						|
		_prevista = (_msk->get(F_SITUAZIONE)[0] == 'P');
 | 
						|
		_dataela = _msk->get(F_DATAELA);
 | 
						|
		_datapre = _msk->get(F_DATAPRE);
 | 
						|
		_attgruppi = _msk->get_bool(F_ATTGRUPPI);
 | 
						|
		_gruppoazie = _msk->get(F_GRUPPOAZIE);
 | 
						|
		_anchegruppi = _msk->get_bool(F_ANCHEGRUPPI);
 | 
						|
		_definitiva = _msk->get_bool(F_DEFINITIVA);
 | 
						|
		_nuovicriteri = _msk->get_bool(F_NUOVICRITERI);
 | 
						|
    _catdon.destroy();    
 | 
						|
	  const TString16 catpri = _msk->get(F_CAT1);
 | 
						|
	  const TString16 catsec = _msk->get(F_CAT2);
 | 
						|
	  const TString16 catter = _msk->get(F_CAT3);
 | 
						|
	  const TString16 catqua = _msk->get(F_CAT4);
 | 
						|
	  const TString16 catqui = _msk->get(F_CAT5);
 | 
						|
	  const TString16 catses = _msk->get(F_CAT6);
 | 
						|
	  if (catpri.not_empty())
 | 
						|
	  	_catdon.add((const char*) catpri);
 | 
						|
	  if (catsec.not_empty())
 | 
						|
	  	_catdon.add((const char*) catsec);
 | 
						|
	  if (catter.not_empty())
 | 
						|
	  	_catdon.add((const char*) catter);
 | 
						|
	  if (catqua.not_empty())
 | 
						|
	  	_catdon.add((const char*) catqua);
 | 
						|
	  if (catqui.not_empty())
 | 
						|
	  	_catdon.add((const char*) catqui);
 | 
						|
	  if (catses.not_empty())
 | 
						|
	  	_catdon.add((const char*) catses);
 | 
						|
		_tabben.destroy();
 | 
						|
		TTable ben("BNZ");
 | 
						|
	  for(ben.first(); !ben.eof(); ben.next())
 | 
						|
	  {             
 | 
						|
	  	TString16 codben = ben.get("CODTAB");
 | 
						|
	  	int numdonben = ben.get_int("I0");
 | 
						|
			int m_numdon = ben.get_int("I1");
 | 
						|
			int m_anni = ben.get_int("I2");
 | 
						|
			int solodim = ben.get_int("B0");
 | 
						|
			TToken_string* condizioni = new TToken_string();;
 | 
						|
			condizioni->add(numdonben);
 | 
						|
			condizioni->add(m_numdon);
 | 
						|
			condizioni->add(m_anni);
 | 
						|
			condizioni->add(solodim);
 | 
						|
	  	_tabben.add((const char*)codben, (TObject*) condizioni);
 | 
						|
	  }
 | 
						|
  	TString80 filtro;
 | 
						|
  	if (_attgruppi)
 | 
						|
  	{
 | 
						|
	  	if (_gruppoazie.not_empty())
 | 
						|
		  	filtro.format("(90->GRUPPOAZIE == \"%s\")",(const char*)_gruppoazie);
 | 
						|
			else		  	
 | 
						|
		  	filtro.format("(90->GRUPPOAZIE != \"\")");
 | 
						|
		}		  	
 | 
						|
		else
 | 
						|
			if (!_anchegruppi)
 | 
						|
				filtro.format("(90->GRUPPOAZIE == \"\")");			
 | 
						|
		if (filtro.not_empty())
 | 
						|
			filtro << " && ";
 | 
						|
		filtro << "(90->BENEM == \"X\")";							
 | 
						|
		// filtro per sezioni
 | 
						|
	 	const TString16 sezini = _msk->get(F_SEZINI);
 | 
						|
	 	const TString16 sotini = _msk->get(F_SOTINI);
 | 
						|
	  TRectype da(LF_SOGGETTI);
 | 
						|
		if (sezini.not_empty())  
 | 
						|
			da.put(SOG_CODSEZ, sezini);
 | 
						|
	  if (sotini.not_empty())
 | 
						|
			da.put(SOG_CODSOT, sotini);
 | 
						|
		_cur = new TCursor(_rel, "", 3, &da, &da);  
 | 
						|
		_cur->setfilter(filtro, TRUE);
 | 
						|
		
 | 
						|
		TLocalisamfile atopera(LF_ATOPERA);
 | 
						|
		atopera.last();
 | 
						|
		_progope = atopera.get_int(OPE_PROGOPE);
 | 
						|
		_progope++;
 | 
						|
		atopera.zero();
 | 
						|
		atopera.put(OPE_PROGOPE, _progope);
 | 
						|
		atopera.put(OPE_CODSEZ,sezini);
 | 
						|
		atopera.put(OPE_CODSOT,sotini);
 | 
						|
		atopera.put(OPE_GRUPPOAZIE,_gruppoazie);
 | 
						|
		atopera.put(OPE_DATA1,_dataela);
 | 
						|
		atopera.put(OPE_DATA2,_datapre);
 | 
						|
		atopera.put(OPE_FLAG1,_anchegruppi);
 | 
						|
		atopera.put(OPE_FLAG2,_attgruppi);
 | 
						|
		atopera.put(OPE_UTENTE,user());
 | 
						|
		atopera.put(OPE_TIPOOPE,'B');
 | 
						|
		atopera.write();
 | 
						|
		TLocalisamfile atropera(LF_ATROPERA);
 | 
						|
		TRectype& sog = _cur->curr();
 | 
						|
		long last = _cur->items();
 | 
						|
		_benem->setkey(3);
 | 
						|
		TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30);
 | 
						|
  	for ( *_cur=0; _cur->pos() < last; ++(*_cur) )
 | 
						|
  	{
 | 
						|
    	prg.addstatus(1);   
 | 
						|
			// controllare la categoria    	
 | 
						|
			bool filtrato = TRUE;
 | 
						|
			
 | 
						|
			long codice = sog.get_long(SOG_CODICE);
 | 
						|
			if (_catdon.items() != 0)
 | 
						|
			{
 | 
						|
				const TString16 cat = sog.get(SOG_CATDON);
 | 
						|
				filtrato = _catdon.is_key((const char*) cat);
 | 
						|
			}
 | 
						|
			if (filtrato)
 | 
						|
			{
 | 
						|
				const char sesso = sog.get(SOG_SESSO)[0];
 | 
						|
				const TDate datanasc = sog.get_date(SOG_DATANASC);
 | 
						|
				const TDate dataisc = sog.get_date(SOG_DATAISC);
 | 
						|
				TRectype* key = new TRectype(LF_DONAZ);
 | 
						|
				key->put(DON_CODICE, codice);
 | 
						|
				int err = _sdonazioni->read(key);
 | 
						|
				if (err == NOERR)
 | 
						|
				{             
 | 
						|
					int precsi = sog.get_int(SOG_DONPRECSI);
 | 
						|
					int precaf = sog.get_int(SOG_DONPRECAF);
 | 
						|
					int numdon = precsi + precaf;
 | 
						|
					int donxanno = 0;
 | 
						|
					int anno = 0;
 | 
						|
					for (int r=1; r<=_sdonazioni->rows(); r++)
 | 
						|
					{
 | 
						|
						const TRectype& riga = _sdonazioni->row(r);
 | 
						|
						const TDate datadon = riga.get_date(DON_DATADON);
 | 
						|
						const TString16 tipodon = riga.get(DON_TIPODON);
 | 
						|
						if (datadon<=_dataela)
 | 
						|
						{
 | 
						|
							if (_nuovicriteri && datadon>datarif) // 16/05/2004
 | 
						|
							{
 | 
						|
								if (anno != datadon.year())
 | 
						|
								{
 | 
						|
									if (donxanno > 4)
 | 
						|
										donxanno = 4;
 | 
						|
									numdon += donxanno;
 | 
						|
									donxanno = 0;
 | 
						|
								}
 | 
						|
								donxanno++;
 | 
						|
								int eta = datadon.year() - datanasc.year();
 | 
						|
								if (datadon.month() < datanasc.month())
 | 
						|
									eta--;
 | 
						|
								else 
 | 
						|
									if (datadon.month() == datanasc.month())
 | 
						|
										if (datadon.day() < datanasc.day())
 | 
						|
											eta--;
 | 
						|
								if ((tipodon == "SI" || tipodon=="SN") && (sesso == '2') && (eta < 50))
 | 
						|
									donxanno++;
 | 
						|
							}
 | 
						|
							else
 | 
						|
								numdon++;
 | 
						|
						}
 | 
						|
					}
 | 
						|
					if (_nuovicriteri)
 | 
						|
					{
 | 
						|
						if (donxanno > 4)
 | 
						|
							donxanno = 4;
 | 
						|
						numdon += donxanno;
 | 
						|
					}
 | 
						|
					if (_prevista)
 | 
						|
					{
 | 
						|
						// aggiungo le donazioni che puo' fare da oggi alla data elaborazione
 | 
						|
						const TDate oggi(TODAY);
 | 
						|
						const long giorni = _dataela - oggi;
 | 
						|
						int intervallo = 0;
 | 
						|
						if (giorni > 0)
 | 
						|
						{                   
 | 
						|
							const int intsi = sog.get_int(SOG_INTSI);
 | 
						|
							const int intaf = sog.get_int(SOG_INTAF);							
 | 
						|
							if (intsi == 0)
 | 
						|
								intervallo = intaf;
 | 
						|
							else              
 | 
						|
							{
 | 
						|
								if (intaf == 0)
 | 
						|
									intervallo = intsi;
 | 
						|
								else
 | 
						|
									intervallo = min(intsi, intaf);
 | 
						|
							}		
 | 
						|
							if (intervallo > 0)
 | 
						|
								numdon = numdon + int(giorni / intervallo);
 | 
						|
						}
 | 
						|
					}
 | 
						|
					TString16 ultben = "**";       
 | 
						|
					TRectype* key = new TRectype(LF_BENEM);
 | 
						|
					key->put(BEN_CODICE, codice);
 | 
						|
					int err = _sbenemerenze->read(key);
 | 
						|
					if (err == NOERR)    
 | 
						|
					{
 | 
						|
						for (int r=1; r<=_sbenemerenze->rows(); r++)
 | 
						|
						{
 | 
						|
							const TRectype& riga = _sbenemerenze->row(r);
 | 
						|
							ultben = riga.get(BEN_TIPOBEN);
 | 
						|
							if (ultben.empty())
 | 
						|
								ultben = "**";
 | 
						|
						}							
 | 
						|
					}
 | 
						|
					//long bonusctrl = 0;
 | 
						|
					int bonusctrl = 0;
 | 
						|
					int m_bonusctrl = 0;
 | 
						|
					int m_annictrl = 0;
 | 
						|
					if (ultben != "**")                                  
 | 
						|
					{
 | 
						|
						//real& ndonult = (real&) _tabben.find((const char*) ultben); 
 | 
						|
						//bonusctrl = ndonult.integer();
 | 
						|
						TToken_string& condizioni = (TToken_string&) _tabben.find((const char*) ultben); 
 | 
						|
						TString str = condizioni.get();
 | 
						|
						bonusctrl = atoi(str);
 | 
						|
						str = condizioni.get();
 | 
						|
						m_bonusctrl = atoi(str);
 | 
						|
						str = condizioni.get();
 | 
						|
						m_annictrl = atoi(str);
 | 
						|
						str = condizioni.get();
 | 
						|
					}						
 | 
						|
					_tabben.restart();
 | 
						|
					TToken_string* c;
 | 
						|
				  for (c = (TToken_string*) _tabben.first_item(); c != NULL; c = (TToken_string*) _tabben.succ_item())
 | 
						|
				  {
 | 
						|
 			  		const char* tipoben = _tabben.get_hashobj()->key();
 | 
						|
				  	//long bonus = c->integer();
 | 
						|
						TString str = c->get(0);
 | 
						|
						int bonus = atoi(str);
 | 
						|
						str = c->get();
 | 
						|
						int m_bonus = atoi(str);
 | 
						|
						str = c->get();
 | 
						|
						int m_anni = atoi(str);
 | 
						|
						str = c->get();
 | 
						|
				  	if (bonus > bonusctrl)
 | 
						|
				  	{
 | 
						|
							bool attribuisci = false;
 | 
						|
					  	if (numdon >= bonus) 
 | 
						|
								attribuisci = true;
 | 
						|
							if (_nuovicriteri && !attribuisci && (m_bonus > 0 || m_anni > 0))  // se uso nuovi criteri e non ne ha diritto col vecchio sistema quardo se ne ha diritto con i nuovi criteri
 | 
						|
							{
 | 
						|
								const int anniisc = (_dataela - dataisc)/360;
 | 
						|
								attribuisci = (numdon >= m_bonus) && (anniisc >= m_anni);
 | 
						|
							}
 | 
						|
							if (attribuisci)
 | 
						|
							{
 | 
						|
					  		// controllo che non abbia ricevuto la benemerenza
 | 
						|
					  		_benem->zero();
 | 
						|
					  		_benem->put(BEN_CODICE, codice);
 | 
						|
					  		_benem->put(BEN_TIPOBEN, tipoben);
 | 
						|
					  		_benem->read();
 | 
						|
					  		if (_benem->bad())
 | 
						|
					  		{
 | 
						|
					  			atropera.zero();
 | 
						|
					  			atropera.put(ROP_PROGOPE, _progope);
 | 
						|
									atropera.put(ROP_CODICE, codice);				  			
 | 
						|
									atropera.put(ROP_S0, tipoben);
 | 
						|
									atropera.write();
 | 
						|
					  		}
 | 
						|
					  	}       
 | 
						|
						}					  	
 | 
						|
					}				  	
 | 
						|
				}
 | 
						|
			}									
 | 
						|
    }
 | 
						|
    reset_files(); 
 | 
						|
		TRelation* relope = new TRelation(LF_ATROPERA);
 | 
						|
 	  relope->add(LF_SOGGETTI, "CODICE==CODICE");
 | 
						|
		TString80 chiave = "131->S0|UPPER(90->COGNOME)|UPPER(90->NOME)";
 | 
						|
		TString80 filtroope = format("131->PROGOPE==%d", _progope);
 | 
						|
	  int curope = add_cursor(new TSorted_cursor(relope, (const char*) chiave, "", 1));
 | 
						|
		current_cursor()->setfilter((const char*) filtroope, TRUE);
 | 
						|
		add_file(LF_ATROPERA);
 | 
						|
		add_file(LF_SOGGETTI,LF_ATROPERA);
 | 
						|
		reset_print();		
 | 
						|
    crea_intestazione();
 | 
						|
    return TRUE;
 | 
						|
  }
 | 
						|
  else
 | 
						|
    return FALSE;
 | 
						|
}
 | 
						|
 | 
						|
void TAttribuzioneBenemerenze::crea_intestazione()
 | 
						|
{
 | 
						|
	reset_header();
 | 
						|
 | 
						|
	TString sep(132);
 | 
						|
  sep = "ATTRIBUZIONE BENEMERENZE ";
 | 
						|
	if (_nuovicriteri)
 | 
						|
		sep << "CON NUOVI CRITERI ";
 | 
						|
  if (_prevista)
 | 
						|
  	sep << " PREVISTE ";
 | 
						|
  if (_definitiva)
 | 
						|
  	sep << "DEFINITIVA";
 | 
						|
  else
 | 
						|
  	sep << "PROVVISORIA";
 | 
						|
  sep << " ALLA DATA ";
 | 
						|
	sep << _dataela.string();;
 | 
						|
	sep.center_just();
 | 
						|
 	set_header(2, "@0g%s", (const char*) sep);
 | 
						|
  sep = "";
 | 
						|
  sep << "Pag. @#";
 | 
						|
  set_header(2, "@120g%s", (const char*) sep);  
 | 
						|
  	
 | 
						|
  sep = "";
 | 
						|
  sep.fill('-');
 | 
						|
  set_header(3, (const char *) sep);
 | 
						|
  if (_prevista)
 | 
						|
  {
 | 
						|
 		set_header(4,"@0gCognome e nome@26gC.@29gTessera@39gTot.don.@48gData isc.@59gDon.pre.");
 | 
						|
 		set_header(5,"@0-------------------------@26g--@29g--------@39g--------@48g----------@59g--------");
 | 
						|
 	}	
 | 
						|
  else
 | 
						|
  {
 | 
						|
 		set_header(4,"@0gCognome e nome@26gC.@29gTessera@39gTot.don.@48gData isc.");
 | 
						|
 		set_header(5,"@0-------------------------@26g--@29g--------@39g--------@48g----------");
 | 
						|
 	}	
 | 
						|
}
 | 
						|
 | 
						|
bool TAttribuzioneBenemerenze::user_create()
 | 
						|
{                             
 | 
						|
	_msk = new TMask("at1200a");
 | 
						|
	_rel = new TRelation(LF_SOGGETTI);
 | 
						|
	_rel->add(LF_SEZIONI,"CODSEZ==CODSEZ|CODSOT==CODSOT");
 | 
						|
	_rel->add("GAZ", "CODTAB==GRUPPOAZIE",1,0,ALIAS_GAZ);
 | 
						|
	_donaz = new TLocalisamfile(LF_DONAZ);
 | 
						|
	_benem = new TLocalisamfile(LF_BENEM);
 | 
						|
	_sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON);
 | 
						|
	_sbenemerenze = new TRecord_array(LF_BENEM, BEN_PROGBEN);
 | 
						|
	_atopera = new TLocalisamfile(LF_ATOPERA);
 | 
						|
	_atropera = new TLocalisamfile(LF_ATROPERA);
 | 
						|
	_sezioni = new TLocalisamfile(LF_SEZIONI);
 | 
						|
	return TRUE;
 | 
						|
}	
 | 
						|
 | 
						|
bool TAttribuzioneBenemerenze::user_destroy()	
 | 
						|
{
 | 
						|
	delete _sezioni;
 | 
						|
	delete _atropera;
 | 
						|
	delete _atopera;
 | 
						|
	delete _sbenemerenze;
 | 
						|
	delete _sdonazioni;
 | 
						|
	delete _benem;
 | 
						|
	delete _donaz;
 | 
						|
	delete _rel;
 | 
						|
	delete _msk;
 | 
						|
	return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
int at1200(int argc, char* argv[])
 | 
						|
{
 | 
						|
	TAttribuzioneBenemerenze a;
 | 
						|
	a.run(argc, argv, "Attribuzione complessiva");
 | 
						|
	return 0;
 | 
						|
} |