Files correlati : at6.exe Ricompilazione Demo : [ ] Commento : Stampa di ctrl. don.: aggiunto tot. don. x soggetto, solo in stampa normale (no breve e 80 col.) git-svn-id: svn://10.65.10.50/trunk@12588 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			673 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			673 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <form.h>
 | 
						|
#include <mask.h>
 | 
						|
#include <printapp.h>
 | 
						|
#include <recarray.h>
 | 
						|
#include <tabutil.h>
 | 
						|
#include <utility.h>
 | 
						|
 | 
						|
#include "donaz.h"
 | 
						|
#include "contsan.h"
 | 
						|
#include "soggetti.h"
 | 
						|
#include "sezioni.h"
 | 
						|
 | 
						|
#include "at6.h"
 | 
						|
#include "at6300a.h"
 | 
						|
 | 
						|
#define ALIAS_LDN	400
 | 
						|
 | 
						|
class TControlloDonazioni : public TPrintapp
 | 
						|
{
 | 
						|
  TRelation*					_rel;
 | 
						|
  TMask*      				_msk;
 | 
						|
  TLocalisamfile*			_contsan;
 | 
						|
  int									_contatore, _totfinestampa;
 | 
						|
  TDate								_dataold, _dataini, _datafin;
 | 
						|
  TString16						_tipodon, _luogodon, _luogoold, _sezold, _gruppoold, _gruppoazie;
 | 
						|
  TString16						_sezini, _sotini, _sezfin, _sotfin;
 | 
						|
  TString16						_tipostampa, _ordinamento, _controllo, _prima;
 | 
						|
	bool								_stampa80, _primedon, _breve;  
 | 
						|
  TParagraph_string 	_cognome_nome;
 | 
						|
  TArray							_giorni, _mesi, _giornifinale;
 | 
						|
  bool								_riepfinale, _pergruppo;
 | 
						|
  
 | 
						|
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 print_action postprocess_print(int file, int counter);
 | 
						|
 | 
						|
public:
 | 
						|
  void crea_intestazione();
 | 
						|
  void header_stampa(const TDate data, const TString16 luogo, const TString16 sezione, const TString16 sottog, const TString16 gruppoazie);
 | 
						|
  void footer_stampa();
 | 
						|
  void fine_stampa();
 | 
						|
  TMask& app_mask() { return *_msk; }
 | 
						|
  TControlloDonazioni() : _cognome_nome("",35) {}
 | 
						|
};
 | 
						|
 | 
						|
HIDDEN inline TControlloDonazioni& app() { return (TControlloDonazioni&) main_app(); }
 | 
						|
 | 
						|
void TControlloDonazioni::set_page(int file, int cnt)
 | 
						|
{
 | 
						|
	if (_breve)
 | 
						|
	{
 | 
						|
		set_row(1,"@0g@ld", FLD(LF_DONAZ,DON_DATADON));
 | 
						|
		set_row(1,"@11g@S", FLD(LF_DONAZ, DON_LUOGODON));
 | 
						|
		set_row(1,"@20g@S", FLD(LF_DONAZ,DON_TIPODON));
 | 
						|
		set_row(1,"@25g#a", &_cognome_nome);
 | 
						|
		set_row(1,"@76g@S", FLD(LF_SOGGETTI,SOG_CODSEZ));
 | 
						|
		set_row(1,"@79g@S", FLD(LF_SOGGETTI,SOG_CODSOT));
 | 
						|
		set_row(1,"@82g@S", FLD(LF_SOGGETTI, SOG_GRUPPOAB0));
 | 
						|
		set_row(1,"@87g@S", FLD(LF_SOGGETTI, SOG_RHANTID));
 | 
						|
		set_row(1,"@91g@S", FLD(LF_SOGGETTI, SOG_FENOTIPORH));
 | 
						|
		set_row(1,"@98g@S", FLD(LF_SOGGETTI, SOG_KELL));
 | 
						|
		set_row(1,"@102g@S", FLD(LF_SOGGETTI, SOG_DU));
 | 
						|
		set_row(1,"@106g@pn", FLD(LF_DONAZ,DON_ETICHETTA,"#########"));
 | 
						|
		set_row(1,"@116g#t", &_prima);
 | 
						|
	}
 | 
						|
	else
 | 
						|
		if (_stampa80)
 | 
						|
		{
 | 
						|
			set_row(1,"@0g#D", &_contatore);
 | 
						|
			set_row(1,"@6g@pn", FLD(LF_DONAZ,DON_ETICHETTA,"#########"));
 | 
						|
			set_row(1,"@16g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
 | 
						|
			set_row(2,"@16g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
 | 
						|
			set_row(1,"@25g#a", &_cognome_nome);
 | 
						|
			set_row(2,"@25g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
 | 
						|
			set_row(1,"@61g@S", FLD(LF_SOGGETTI,SOG_CODSEZ));
 | 
						|
			set_row(2,"@64g@S", FLD(LF_SOGGETTI,SOG_CODSOT));
 | 
						|
			set_row(1,"@64g@ld", FLD(LF_DONAZ,DON_DATADON));
 | 
						|
			set_row(2,"@64g@S", FLD(LF_DONAZ,DON_TIPODON));
 | 
						|
			set_row(1,"@75g@S", FLD(LF_SOGGETTI, SOG_GRUPPOAB0));
 | 
						|
			set_row(2,"@75g@S", FLD(LF_SOGGETTI, SOG_RHANTID));
 | 
						|
			set_row(1,"@79g#t", &_controllo);
 | 
						|
			set_row(2,"@79g#t", &_prima);
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
			set_row(1,"@0g#D", &_contatore);
 | 
						|
			set_row(1,"@7g@pn", FLD(LF_DONAZ,DON_ETICHETTA,"#########"));
 | 
						|
			set_row(1,"@17g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
 | 
						|
			set_row(1,"@26g@S", FLD(LF_SOGGETTI,SOG_TESSAVIS));
 | 
						|
			set_row(1,"@34g#a", &_cognome_nome);
 | 
						|
			set_row(1,"@70g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
 | 
						|
			set_row(1,"@81g@S", FLD(LF_SOGGETTI,SOG_CODSEZ));
 | 
						|
			set_row(1,"@84g@S", FLD(LF_SOGGETTI,SOG_CODSOT));
 | 
						|
			set_row(1,"@87g@ld", FLD(LF_DONAZ,DON_DATADON));
 | 
						|
			set_row(1,"@98g@S", FLD(LF_DONAZ,DON_TIPODON));
 | 
						|
			set_row(1,"@104g@S", FLD(LF_DONAZ, DON_LUOGODON));
 | 
						|
			set_row(1,"@110g@S", FLD(LF_SOGGETTI, SOG_GRUPPOAB0));
 | 
						|
			set_row(1,"@114g@S", FLD(LF_SOGGETTI, SOG_RHANTID));
 | 
						|
			set_row(1,"@118g@S", FLD(LF_SOGGETTI, SOG_FENOTIPORH));
 | 
						|
			set_row(1,"@125g@S", FLD(LF_SOGGETTI, SOG_KELL));
 | 
						|
			set_row(1,"@129g@S", FLD(LF_SOGGETTI, SOG_DU));
 | 
						|
			set_row(1,"@133g@pn", FLD(LF_SOGGETTI, SOG_TOTDON, "###"));
 | 
						|
		}		
 | 
						|
}
 | 
						|
 | 
						|
bool TControlloDonazioni::preprocess_page(int file, int counter)
 | 
						|
{
 | 
						|
	TString80 nome = current_cursor()->curr(LF_SOGGETTI).get(SOG_COGNOME);
 | 
						|
	nome << " ";
 | 
						|
	nome << current_cursor()->curr(LF_SOGGETTI).get(SOG_NOME);
 | 
						|
	_cognome_nome = nome;
 | 
						|
	// verifico se ha un controllo sanitario nella data della donazione
 | 
						|
	TLocalisamfile contsan(LF_CONTSAN);
 | 
						|
	contsan.setkey(2);
 | 
						|
	contsan.zero();
 | 
						|
	contsan.put(CON_DATACON,current_cursor()->curr().get(DON_DATADON));
 | 
						|
	contsan.put(CON_CODICE,current_cursor()->curr().get(DON_CODICE));	
 | 
						|
	if (contsan.read() == NOERR)
 | 
						|
		_controllo = contsan.get(CON_TIPOCON);
 | 
						|
	else
 | 
						|
		_controllo = " ";		
 | 
						|
	bool prima = current_cursor()->curr().get_bool(DON_PRIMADON);
 | 
						|
	if (prima)
 | 
						|
		_prima = "X";
 | 
						|
	else
 | 
						|
		_prima = " ";		
 | 
						|
	// salto pagina se cambio punto di rottura
 | 
						|
	switch (_tipostampa[0])
 | 
						|
	{
 | 
						|
		case 'D':
 | 
						|
		{
 | 
						|
			const TDate datanew = current_cursor()->curr().get(DON_DATADON);		
 | 
						|
			if (datanew != _dataold )
 | 
						|
			{
 | 
						|
				if (_dataold.ok())
 | 
						|
					footer_stampa();
 | 
						|
				_dataold = datanew;				
 | 
						|
				header_stampa(datanew,"","","","");
 | 
						|
				_contatore = 0;
 | 
						|
			} 
 | 
						|
		}
 | 
						|
		break;
 | 
						|
		case 'L':
 | 
						|
		{
 | 
						|
			const TString16 luogonew = current_cursor()->curr().get(DON_LUOGODON);		
 | 
						|
			if (luogonew != _luogoold )
 | 
						|
			{
 | 
						|
				if (_luogoold != "****")
 | 
						|
					footer_stampa();
 | 
						|
				_luogoold = luogonew;				
 | 
						|
				header_stampa(NULLDATE,luogonew,"","","");
 | 
						|
				_contatore = 0;
 | 
						|
			} 
 | 
						|
		}
 | 
						|
		break;			
 | 
						|
		case 'S':
 | 
						|
		{ 
 | 
						|
			//TString16 sezione = current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSEZ);		
 | 
						|
			//TString16 sottog = current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSOT);		
 | 
						|
			TString16 sezione = current_cursor()->curr().get(DON_CODSEZ);		
 | 
						|
			TString16 sottog = current_cursor()->curr().get(DON_CODSOT);		
 | 
						|
			TString16 seznew = "";
 | 
						|
			seznew << sezione;
 | 
						|
			seznew << "/";
 | 
						|
			seznew << sottog;
 | 
						|
			if (seznew != _sezold )
 | 
						|
			{
 | 
						|
				if (_sezold != "****")
 | 
						|
					footer_stampa();
 | 
						|
				_sezold = seznew;				
 | 
						|
				header_stampa(NULLDATE,"",sezione,sottog,"");
 | 
						|
				_contatore = 0;
 | 
						|
			} 
 | 
						|
		}
 | 
						|
		break;			
 | 
						|
		case 'G':
 | 
						|
		{ 
 | 
						|
			TString16 grupponew = current_cursor()->curr(LF_SOGGETTI).get(SOG_GRUPPOAZIE);		
 | 
						|
			if (grupponew != _gruppoold )
 | 
						|
			{
 | 
						|
				if (_gruppoold != "****")
 | 
						|
					footer_stampa();
 | 
						|
				_gruppoold = grupponew;				
 | 
						|
				header_stampa(NULLDATE,"","","",grupponew);
 | 
						|
				_contatore = 0;
 | 
						|
			} 
 | 
						|
		}
 | 
						|
		break;			
 | 
						|
	}		
 | 
						|
	if (_riepfinale)
 | 
						|
	{
 | 
						|
		TDate datadon = current_cursor()->curr().get(DON_DATADON);
 | 
						|
		int giorno = datadon.day();
 | 
						|
		int mese = datadon.month();
 | 
						|
		if (mese == _dataini.month())
 | 
						|
		{
 | 
						|
			real* valore = (real*)_giorni.objptr(giorno-1);
 | 
						|
			*valore += 1;
 | 
						|
			real* valorefinale = (real*)_giornifinale.objptr(giorno-1);
 | 
						|
			*valorefinale += 1;
 | 
						|
		}			
 | 
						|
		real* valore1 = (real*)_mesi.objptr(mese-1);
 | 
						|
		*valore1 += 1;
 | 
						|
		if (!((datadon >= _dataini) && (datadon <= _datafin)))
 | 
						|
			return FALSE;
 | 
						|
	}		
 | 
						|
	// salto pagina se non ci sono abbastanza righe per il record
 | 
						|
	if ((_stampa80) && (printer().rows_left() < 2))
 | 
						|
		printer().formfeed();
 | 
						|
	_contatore++;
 | 
						|
	_totfinestampa++;
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
print_action TControlloDonazioni::postprocess_print(int file, int counter)
 | 
						|
{ 
 | 
						|
	if (_contatore > 0)
 | 
						|
		footer_stampa();
 | 
						|
	if (_totfinestampa > 0 && _contatore != _totfinestampa)
 | 
						|
		fine_stampa();				
 | 
						|
	return NEXT_PAGE;
 | 
						|
}
 | 
						|
 | 
						|
void TControlloDonazioni::footer_stampa()
 | 
						|
{
 | 
						|
	// stampa totale soggetti a fine pagina
 | 
						|
	if (_contatore > 0)
 | 
						|
	{
 | 
						|
		reset_footer();
 | 
						|
		TString sep(80);
 | 
						|
		sep.fill('-');
 | 
						|
		set_footer(1, (const char *) sep);
 | 
						|
		if (_dataini == _datafin)
 | 
						|
			set_footer(2,"TOTALE DONAZIONI DEL %s   %d", _dataini.string(), _contatore);
 | 
						|
		else                              
 | 
						|
		{
 | 
						|
			TString d1 = _dataini.string();
 | 
						|
			TString d2 = _datafin.string();
 | 
						|
			set_footer(2,"TOTALE DONAZIONI DAL %s AL %s   %d", (const char*)d1, (const char*)d2, _contatore);
 | 
						|
		}			
 | 
						|
		if (_riepfinale)
 | 
						|
		{     
 | 
						|
			TString16 valore;               
 | 
						|
			TString256 rigastampa = "GIO.   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31";
 | 
						|
			set_footer(3,rigastampa);
 | 
						|
			rigastampa = "TOT.";
 | 
						|
			int pos = 5;
 | 
						|
			for (int i=0;i<31;i++)
 | 
						|
			{
 | 
						|
				valore = "";
 | 
						|
				real* numero = (real*)_giorni.objptr(i);
 | 
						|
				real numero1 = *numero;
 | 
						|
				valore.format("%3d",numero1.integer());
 | 
						|
				rigastampa.overwrite((const char*)valore, pos);
 | 
						|
				pos=pos+4;
 | 
						|
			}
 | 
						|
			set_footer(4,rigastampa);
 | 
						|
			rigastampa = "MESE     GEN. FEB. MAR. APR. MAG. GIU. LUG. AGO. SET. OTT. NOV. DIC.  TOTALE";
 | 
						|
			set_footer(6,rigastampa);
 | 
						|
			rigastampa = "TOT.";
 | 
						|
			pos = 8;
 | 
						|
			real totale = ZERO;
 | 
						|
			for (int j=0;j<12;j++)
 | 
						|
			{
 | 
						|
				valore = "";
 | 
						|
				real* numero = (real*)_mesi.objptr(j);
 | 
						|
				real numero1 = *numero;
 | 
						|
				totale+=numero1;
 | 
						|
				valore.format("%4d",numero1.integer());
 | 
						|
				rigastampa.overwrite((const char*)valore, pos);
 | 
						|
				pos=pos+5;
 | 
						|
			}        
 | 
						|
		  pos=pos+4;
 | 
						|
			valore = "";
 | 
						|
			valore.format("%4d",totale.integer());
 | 
						|
			rigastampa.overwrite((const char*)valore, pos);
 | 
						|
			
 | 
						|
			set_footer(7,rigastampa);
 | 
						|
		}
 | 
						|
		printer().formfeed(); 
 | 
						|
		reset_footer();
 | 
						|
	}		
 | 
						|
	_giorni.destroy();
 | 
						|
	_mesi.destroy();
 | 
						|
	for (int i=0;i<31;i++)
 | 
						|
 		_giorni.add(new real(ZERO),i);
 | 
						|
	for (int j=0;j<12;j++)
 | 
						|
 		_mesi.add(new real(ZERO),j);
 | 
						|
}
 | 
						|
 | 
						|
void TControlloDonazioni::fine_stampa()
 | 
						|
{
 | 
						|
	// stampa totale soggetti a fine stampa
 | 
						|
	
 | 
						|
	reset_footer();
 | 
						|
 	printer().footerlen(20);
 | 
						|
	TString sep(80);
 | 
						|
	sep.fill('-');
 | 
						|
	set_footer(1, (const char *) sep);
 | 
						|
	set_footer(2,"DONAZIONI TOTALI STAMPATE %d", _totfinestampa);
 | 
						|
	if (_riepfinale)
 | 
						|
	{     
 | 
						|
		TString16 valore;               
 | 
						|
		TString256 rigastampa = "GIO.   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31";
 | 
						|
		set_footer(3,rigastampa);
 | 
						|
		rigastampa = "TOT.";
 | 
						|
		int pos = 5;
 | 
						|
		for (int i=0;i<31;i++)
 | 
						|
		{
 | 
						|
			valore = "";
 | 
						|
			real* numero = (real*)_giornifinale.objptr(i);
 | 
						|
			real numero1 = *numero;
 | 
						|
			valore.format("%3d",numero1.integer());
 | 
						|
			rigastampa.overwrite((const char*)valore, pos);
 | 
						|
			pos=pos+4;
 | 
						|
		}
 | 
						|
		set_footer(4,rigastampa);
 | 
						|
	}
 | 
						|
	printer().formfeed();
 | 
						|
	reset_footer();
 | 
						|
}
 | 
						|
 | 
						|
void TControlloDonazioni::header_stampa(const TDate data, const TString16 luogo, const TString16 sezione, const TString16 sottog, const TString16 gruppoazie)
 | 
						|
{
 | 
						|
	TString intestazione(132);
 | 
						|
	intestazione = "STAMPA DI CONTROLLO DONAZIONI ";
 | 
						|
	switch (_tipostampa[0])
 | 
						|
	{
 | 
						|
		case 'D':
 | 
						|
		{
 | 
						|
			intestazione << "PER DATA ";
 | 
						|
			intestazione << data;
 | 
						|
		}			
 | 
						|
		break;
 | 
						|
		case 'L':
 | 
						|
		{
 | 
						|
			intestazione << "PER PUNTO DI PRELIEVO ";
 | 
						|
			intestazione << luogo;
 | 
						|
			intestazione << " ";
 | 
						|
			intestazione << cache().get("LDN", luogo).get("S0");
 | 
						|
		}			
 | 
						|
		break;
 | 
						|
		case 'S':
 | 
						|
		{
 | 
						|
			intestazione << "PER SEZIONE ";
 | 
						|
			intestazione << sezione;
 | 
						|
			if (sottog.not_empty())
 | 
						|
			{
 | 
						|
				intestazione << "/";
 | 
						|
				intestazione << sottog;
 | 
						|
			}
 | 
						|
			TLocalisamfile sez(LF_SEZIONI);
 | 
						|
			sez.setkey(1);
 | 
						|
			TRectype& recsez = sez.curr();
 | 
						|
			recsez.zero();
 | 
						|
			recsez.put(SEZ_CODSEZ, sezione);
 | 
						|
			recsez.put(SEZ_CODSOT, sottog);
 | 
						|
			if (sez.read() == NOERR)
 | 
						|
			{
 | 
						|
				intestazione << " ";
 | 
						|
				intestazione << recsez.get(SEZ_DENSEZ);
 | 
						|
				TString80 densot = recsez.get(SEZ_DENSOT);
 | 
						|
				if (densot.not_empty())
 | 
						|
				{
 | 
						|
					intestazione << "/";
 | 
						|
					intestazione << densot;
 | 
						|
				}
 | 
						|
			}			
 | 
						|
		}			
 | 
						|
		break;
 | 
						|
		case 'G':
 | 
						|
		{
 | 
						|
			intestazione << "PER GRUPPO AZIENDALE ";
 | 
						|
			if (gruppoazie.not_empty())
 | 
						|
			{
 | 
						|
				intestazione << " ";
 | 
						|
 				TTable gaz("GAZ"); 
 | 
						|
				gaz.put("CODTAB",gruppoazie);
 | 
						|
				if (gaz.read() == NOERR)
 | 
						|
					intestazione << gaz.get("S0");
 | 
						|
			}		
 | 
						|
		}			
 | 
						|
		break;
 | 
						|
	}		
 | 
						|
	if (_stampa80)
 | 
						|
		intestazione.center_just(80);
 | 
						|
	else		
 | 
						|
		intestazione.center_just(132);	
 | 
						|
	set_header(1,"@0g%s", (const char*) intestazione);
 | 
						|
 	intestazione = "Pag. @#";
 | 
						|
 	if (_stampa80)
 | 
						|
 		set_header(1, "@73g%s", (const char*) intestazione);  				 	
 | 
						|
 	else
 | 
						|
 		set_header(1, "@110g%s", (const char*) intestazione);  
 | 
						|
	return;
 | 
						|
}
 | 
						|
 | 
						|
bool TControlloDonazioni::set_print(int m)
 | 
						|
{ 
 | 
						|
  KEY tasto;
 | 
						|
 	tasto = _msk->run();
 | 
						|
 	if (tasto == K_ENTER)
 | 
						|
 	{ 
 | 
						|
		_sezini = 	_msk->get(F_SEZINI);
 | 
						|
 		_sotini = 	_msk->get(F_SOTINI);
 | 
						|
		_sezfin = 	_msk->get(F_SEZFIN);
 | 
						|
 		_sotfin = 	_msk->get(F_SOTFIN);
 | 
						|
		_dataini = 	_msk->get_date(F_DATAINI);	
 | 
						|
		_datafin = 	_msk->get_date(F_DATAFIN);	
 | 
						|
		_tipodon = 	_msk->get(F_TIPODON);
 | 
						|
 		_luogodon =	_msk->get(F_LUOGODON);
 | 
						|
 		_primedon = _msk->get_bool(F_PRIMEDON);
 | 
						|
 		_breve    = _msk->get_bool(F_BREVE);
 | 
						|
		if (_breve)
 | 
						|
			_cognome_nome.set_width(50);
 | 
						|
  	_pergruppo = _msk->get_bool(F_PERGRUPPO);
 | 
						|
  	if (_pergruppo)
 | 
						|
  		_gruppoazie = _msk->get(F_GRUPPOAZIE);
 | 
						|
		_tipostampa = _msk->get(F_TIPOSTAMPA);
 | 
						|
		_ordinamento = _msk->get(F_ORDINAMENTO);
 | 
						|
 		_riepfinale = _msk->get_bool(F_RIEPFINALE);
 | 
						|
		TString80 chiave = "";
 | 
						|
		switch (_tipostampa[0])
 | 
						|
		{
 | 
						|
			case 'D':
 | 
						|
				chiave = "92->DATADON|";
 | 
						|
			break;
 | 
						|
			case 'L':
 | 
						|
				chiave = "92->LUOGODON|";
 | 
						|
			break;
 | 
						|
			case 'S':
 | 
						|
				chiave = "92->CODSEZ|92->CODSOT|";
 | 
						|
			break;
 | 
						|
			case 'G':
 | 
						|
				chiave = "90->GRUPPOAZIE|";
 | 
						|
			break;
 | 
						|
		}
 | 
						|
		switch (_ordinamento[0])
 | 
						|
		{
 | 
						|
			case 'C':
 | 
						|
				chiave << "92->DATADON|UPPER(90->COGNOME)|UPPER(90->NOME)";
 | 
						|
			break;
 | 
						|
			case 'I':
 | 
						|
				chiave << "92->DATADON|92->PROGINS";
 | 
						|
			break;
 | 
						|
			case 'E':
 | 
						|
				chiave << "92->DATADON|92->ETICHETTA";
 | 
						|
			break;
 | 
						|
			case 'X':
 | 
						|
				chiave << "UPPER(90->COGNOME)|UPPER(90->NOME)|92->DATADON";
 | 
						|
			break;
 | 
						|
			case 'Y':
 | 
						|
				chiave << "92->PROGINS|92->DATADON";
 | 
						|
			break;
 | 
						|
			case 'Z':
 | 
						|
				chiave << "92->ETICHETTA|92->DATADON";
 | 
						|
			break;
 | 
						|
		}
 | 
						|
		TString256 filtro = "";			
 | 
						|
		TString80 filtrotmp ="";
 | 
						|
		// filtro per tipo donazione			
 | 
						|
  	if (_tipodon.not_empty())
 | 
						|
  		filtro.format("(TIPODON == \"%s\")",(const char*)_tipodon);
 | 
						|
  	// filtro per luogo donazione
 | 
						|
  	if (_luogodon.not_empty())
 | 
						|
  	{
 | 
						|
  		filtrotmp.format("(LUOGODON == \"%s\")",(const char*)_luogodon);
 | 
						|
  		if (filtro.not_empty())	
 | 
						|
				filtro << " && ";
 | 
						|
			filtro << filtrotmp;
 | 
						|
		}				
 | 
						|
		// filtro per prime donazioni
 | 
						|
  	if (_primedon)
 | 
						|
  	{
 | 
						|
 			filtrotmp.format("(PRIMADON == \"X\")");
 | 
						|
  		if (filtro.not_empty())	
 | 
						|
				filtro << " && ";
 | 
						|
			filtro << filtrotmp;
 | 
						|
		}				              
 | 
						|
		// filtro per gruppo aziendale
 | 
						|
  	if (_pergruppo)
 | 
						|
  	{ 	
 | 
						|
  		if (_gruppoazie.not_empty())
 | 
						|
	  		filtrotmp.format("(90->GRUPPOAZIE == \"%s\")",(const char*)_gruppoazie);
 | 
						|
			else	  		
 | 
						|
	  		filtrotmp.format("(90->GRUPPOAZIE != \"\")");
 | 
						|
  		if (filtro.not_empty())	
 | 
						|
				filtro << " && ";
 | 
						|
			filtro << filtrotmp;
 | 
						|
		}		
 | 
						|
		// filtro per sezione/sottogruppo
 | 
						|
		TString16 inizio = "";
 | 
						|
		inizio << _sezini;
 | 
						|
		inizio << _sotini;
 | 
						|
		TString16 fine = "";
 | 
						|
		fine << _sezfin;
 | 
						|
		fine << _sotfin;
 | 
						|
		if (inizio.not_empty())
 | 
						|
		{
 | 
						|
  		if (filtro.empty())
 | 
						|
  			filtro = format("(92->CODSEZ+92->CODSOT >= \"%s\")",(const char*)inizio);
 | 
						|
			else
 | 
						|
			{
 | 
						|
				filtro << " && ";
 | 
						|
  			filtro << format("(92->CODSEZ+92->CODSOT >= \"%s\")",(const char*)inizio);
 | 
						|
			}				
 | 
						|
		}	
 | 
						|
		if (fine.not_empty())
 | 
						|
		{
 | 
						|
  		if (filtro.empty())
 | 
						|
  			filtro = format("(92->CODSEZ+92->CODSOT <= \"%s\")",(const char*)fine);
 | 
						|
			else
 | 
						|
			{
 | 
						|
				filtro  << " && ";
 | 
						|
  			filtro << format("(92->CODSEZ+92->CODSOT <= \"%s\")",(const char*)fine);
 | 
						|
			}				
 | 
						|
		}
 | 
						|
		// filtro per data
 | 
						|
	  TRectype da(LF_DONAZ);
 | 
						|
  	TRectype a (LF_DONAZ);
 | 
						|
		if (_riepfinale)
 | 
						|
		{
 | 
						|
			TDate inizio (_dataini);
 | 
						|
			TDate fine   (_datafin);
 | 
						|
			inizio.set_day(1);
 | 
						|
			inizio.set_month(1);
 | 
						|
			fine.set_end_month();
 | 
						|
			da.put(DON_DATADON, inizio);
 | 
						|
			a.put(DON_DATADON, fine);
 | 
						|
			
 | 
						|
			_giorni.destroy();
 | 
						|
			_mesi.destroy();
 | 
						|
			_giornifinale.destroy();
 | 
						|
			for (int i=0;i<31;i++)
 | 
						|
			{
 | 
						|
     		_giorni.add(new real(ZERO),i);
 | 
						|
     		_giornifinale.add(new real(ZERO),i);
 | 
						|
			}	     		
 | 
						|
			for (int j=0;j<12;j++)
 | 
						|
     		_mesi.add(new real(ZERO),j);
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{			
 | 
						|
	  	if (_dataini.ok())
 | 
						|
				da.put(DON_DATADON, _dataini);
 | 
						|
	  	if (_datafin.ok())
 | 
						|
				a.put(DON_DATADON, _datafin);
 | 
						|
		}	
 | 
						|
		current_cursor()->setregion(da, a);
 | 
						|
		current_cursor()->setfilter(filtro, TRUE);
 | 
						|
		((TSorted_cursor*)current_cursor())->change_order(chiave);
 | 
						|
 		_contatore = 0;
 | 
						|
 		_totfinestampa = 0;
 | 
						|
		_dataold = NULLDATE;
 | 
						|
		_luogoold = "****";
 | 
						|
		_sezold = "****";
 | 
						|
		_gruppoold = "****";
 | 
						|
	  reset_files(); 
 | 
						|
  	add_file(LF_DONAZ);
 | 
						|
		reset_print();
 | 
						|
		printer().footerlen(0);		
 | 
						|
		crea_intestazione();
 | 
						|
		return TRUE;
 | 
						|
  }	            
 | 
						|
 	else
 | 
						|
  	return FALSE;
 | 
						|
}
 | 
						|
 | 
						|
void TControlloDonazioni::crea_intestazione()
 | 
						|
{
 | 
						|
  reset_header();
 | 
						|
  TString sep(132);
 | 
						|
  if (_primedon)
 | 
						|
  	sep = "PRIME DONAZIONI EFFETTUATE ";
 | 
						|
  else
 | 
						|
  {
 | 
						|
		sep = "Selezioni della stampa: ";
 | 
						|
		if (_sezini.not_empty())
 | 
						|
		{
 | 
						|
			sep << "Sez. ";
 | 
						|
			sep << _sezini;
 | 
						|
			if (_sotini.not_empty())
 | 
						|
			{
 | 
						|
				sep << "/";
 | 
						|
				sep << _sotini;
 | 
						|
			}			
 | 
						|
			sep << "; ";
 | 
						|
		}
 | 
						|
	}		
 | 
						|
	if (_dataini.ok())
 | 
						|
	{
 | 
						|
		sep << "Dal ";
 | 
						|
		sep << _dataini.string();
 | 
						|
	}
 | 
						|
	if (_datafin.ok())
 | 
						|
	{
 | 
						|
		sep << " Al ";
 | 
						|
		sep << _datafin.string();
 | 
						|
	}
 | 
						|
	if (_dataini.ok() || _datafin.ok())
 | 
						|
		sep << "; ";	
 | 
						|
	if (_tipodon.not_empty())
 | 
						|
	{
 | 
						|
		sep << "Tipo ";
 | 
						|
		sep << _tipodon;
 | 
						|
		sep << "; ";
 | 
						|
	}
 | 
						|
	if (_luogodon.not_empty())
 | 
						|
	{		
 | 
						|
		sep << "Luogo ";
 | 
						|
		sep << _luogodon;
 | 
						|
		sep << "; ";
 | 
						|
	}		
 | 
						|
	if (_stampa80)
 | 
						|
		sep.center_just(80);
 | 
						|
	else
 | 
						|
		sep.center_just(132);			
 | 
						|
	set_header(2,"@0g%s", (const char*) sep);
 | 
						|
	if (_breve)
 | 
						|
	{	
 | 
						|
		set_header(3,"@0gData@11gPunto@20gTipo@25gCognome e nome@76gSe/So@82gAB0 Rh/A Fen.Rh Kell Du@106gEtichetta@116g1d");
 | 
						|
		set_header(4,"@0g----------@11g-----@20g----@25g--------------------------------------------------@76g-----@82g--- ---- ------ ---- --@106g---------@116g--");
 | 
						|
	}
 | 
						|
	else	
 | 
						|
		if (_stampa80)
 | 
						|
		{
 | 
						|
	 		set_header(3,"@0gProg.@6gEt.sacca@16gCodice@25gCognome e nome@61gSe@64gData don.@75gGr.@79gCo");
 | 
						|
	 		set_header(4,"@16gTessera@25gData nascita@61gSo@64gTipo don.@75gRh@79g1d");
 | 
						|
	 		set_header(5,"@0g-----@6g---------@16g--------@25g-----------------------------------@61g--@64g----------@75g---@79g--");
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
	 		set_header(3,"@0gProg.@7gEt.sacca@17gCodice@26gTessera@34gCognome e nome@70gNato il@81gSe/So@87gData don.@98gTipo@104gLuogo@110gGr.@114gRh@118gFen.Rh@125gKellDu Don.");
 | 
						|
	 		set_header(4,"@0g------@7g---------@17g--------@26g-------@34g-----------------------------------@70g----------@81g-----@87g----------@98g----@104g-----@110g---@114g---@118g------@125g--- --- ---");
 | 
						|
		} 		
 | 
						|
	if (_riepfinale)
 | 
						|
 		printer().footerlen(9);
 | 
						|
	else
 | 
						|
 		printer().footerlen(5);
 | 
						|
}
 | 
						|
 | 
						|
bool TControlloDonazioni::user_create()
 | 
						|
{
 | 
						|
  _rel = new TRelation(LF_DONAZ);
 | 
						|
  _rel->add(LF_SOGGETTI, "CODICE==CODICE");
 | 
						|
  _rel->add("LDN", "CODTAB==LUOGODON",1,0,ALIAS_LDN);
 | 
						|
  _msk = new TMask("at6300a");
 | 
						|
	_contsan 	= new TLocalisamfile(LF_CONTSAN);  
 | 
						|
  add_cursor(new TSorted_cursor(_rel,"","",2));
 | 
						|
  TConfig config(CONFIG_STUDIO);
 | 
						|
  _stampa80 = config.get_bool("Stampa80");
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TControlloDonazioni::user_destroy()
 | 
						|
{
 | 
						|
  delete _contsan;
 | 
						|
  delete _msk;
 | 
						|
  delete _rel;
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
int at6300(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TControlloDonazioni a;
 | 
						|
  a.run(argc, argv, "Stampa di controllo donazioni");
 | 
						|
  return 0;
 | 
						|
}
 |