Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Stampa scadenze per controlli git-svn-id: svn://10.65.10.50/trunk@6938 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									90f60de24d
								
							
						
					
					
						commit
						9a81d20aa7
					
				
							
								
								
									
										443
									
								
								at/at6700.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										443
									
								
								at/at6700.cpp
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,443 @@ | |||||||
|  | #include <form.h> | ||||||
|  | #include <mask.h> | ||||||
|  | #include <printapp.h> | ||||||
|  | #include <recarray.h> | ||||||
|  | #include <tabutil.h> | ||||||
|  | #include <utility.h> | ||||||
|  | 
 | ||||||
|  | #include "at6.h" | ||||||
|  | 
 | ||||||
|  | #define ALIAS_TCS	200 | ||||||
|  | #define ALIAS_LCPRES	101		// localita' postale di residenza
 | ||||||
|  | #define ALIAS_LCPDOM	100		// localita' postale di domicilio
 | ||||||
|  | #define ALIAS_COMRES 	502		// comune di residenza
 | ||||||
|  | #define ALIAS_COMDOM 	501		// comune di domicilio
 | ||||||
|  | #define ALIAS_COMNAS 	500		// comune di nascita
 | ||||||
|  | 
 | ||||||
|  | // nomi campi maschera
 | ||||||
|  | #include "at6700a.h" | ||||||
|  |            | ||||||
|  | // nomi dei campi
 | ||||||
|  | #include "soggetti.h" | ||||||
|  | #include "contsan.h" | ||||||
|  | #include "sezioni.h" | ||||||
|  | #include <comuni.h> | ||||||
|  | 
 | ||||||
|  | enum ts { undefined = 0, elenco = 1, etichette = 2 }; | ||||||
|  | 
 | ||||||
|  | // definizione form per etichette
 | ||||||
|  | class TEti_scadenzectrl_form : public TForm | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	 | ||||||
|  | 	virtual TCursor* cursor() const; | ||||||
|  | 	virtual TRelation* relation() const; | ||||||
|  | 	TPrint_section& get_body() { return section('B'); } ; | ||||||
|  |   TEti_scadenzectrl_form(): TForm() {}; | ||||||
|  |   TEti_scadenzectrl_form(const char* form, const char * code = "", int editlevel = 0, const char* desc = "") | ||||||
|  |     						: TForm(form,code,editlevel,desc) {}; | ||||||
|  |   virtual ~TEti_scadenzectrl_form() {}; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | class TScadenzeControlli : public TPrintapp | ||||||
|  | { | ||||||
|  | 	TMask*						_msk; | ||||||
|  | 	TRelation*   			_rel; | ||||||
|  | 	TLocalisamfile*		_contsan; | ||||||
|  | 	TRecord_array* 		_scontrolli; | ||||||
|  |   TEti_scadenzectrl_form*	_form_eti; | ||||||
|  |   TAssoc_array		  _categorie; | ||||||
|  | 	int 							_cur;	 | ||||||
|  | 	int								_contatore, _totale; | ||||||
|  | 	TDate							_data_stampa, _dataini, _datafin; | ||||||
|  | 	TString16					_codsez, _codsot; | ||||||
|  | 	TString16					_tipo1; | ||||||
|  |   TString16					_lettini, _lettfin;	 | ||||||
|  |   TParagraph_string _cognome_nome, _rigastampa, _dencom; | ||||||
|  | 	ts 	      				_tipostampa; | ||||||
|  | 	int								_etlarghezza, _etcolonne; | ||||||
|  | 
 | ||||||
|  | 	static bool filter_func_scadenzectrl(const TRelation* rel); | ||||||
|  | 
 | ||||||
|  | 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 filtra_sezioni(); | ||||||
|  |   void crea_intestazione(); | ||||||
|  |   void header_sezione(const TString16 codsez, const TString16 codsot); | ||||||
|  |   void footer_sezione(); | ||||||
|  |   void fine_stampa(); | ||||||
|  | 	TScadenzeControlli() : _data_stampa(TODAY), _cognome_nome("",51), _rigastampa("", 71), _dencom("",51)  {} | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | HIDDEN inline TScadenzeControlli& app() { return (TScadenzeControlli&) main_app(); } | ||||||
|  | 
 | ||||||
|  | TCursor* TEti_scadenzectrl_form::cursor() const { return app().current_cursor(); } | ||||||
|  | 
 | ||||||
|  | TRelation* TEti_scadenzectrl_form::relation() const { return cursor()->relation(); } | ||||||
|  | 
 | ||||||
|  | print_action TScadenzeControlli::postprocess_print(int file, int counter) | ||||||
|  | {  | ||||||
|  | 	if (_contatore > 0) | ||||||
|  | 		footer_sezione(); | ||||||
|  | 	fine_stampa();				 | ||||||
|  | 	return NEXT_PAGE; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TScadenzeControlli::fine_stampa() | ||||||
|  | { | ||||||
|  | 	// stampa totale soggetti a fine stampa
 | ||||||
|  | 	reset_footer(); | ||||||
|  | 	TString sep(80); | ||||||
|  | 	sep.fill('-'); | ||||||
|  | 	set_footer(2, (const char *) sep); | ||||||
|  | 	if (_totale > 0) | ||||||
|  | 	{ | ||||||
|  | 		if (_totale != _contatore) | ||||||
|  | 		{ | ||||||
|  | 			set_footer(3,"TOTALE SOGGETTI SBLOCCATI %d", _totale); | ||||||
|  | 			printer().formfeed();		 | ||||||
|  | 		}			 | ||||||
|  | 	}			 | ||||||
|  | 	else		 | ||||||
|  | 	{ | ||||||
|  | 		set_footer(3,"NON CI SONO SOGGETTI SOSPESI DA SBLOCCARE");		 | ||||||
|  | 		printer().formfeed();		 | ||||||
|  | 	}		 | ||||||
|  | 	reset_footer();  | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TScadenzeControlli::footer_sezione() | ||||||
|  | { | ||||||
|  | 	if (_contatore > 0) | ||||||
|  | 	{ | ||||||
|  | 		reset_footer(); | ||||||
|  | 		TString sep(80); | ||||||
|  | 		sep.fill('-'); | ||||||
|  | 		set_footer(2, (const char *) sep); | ||||||
|  | 		set_footer(3,"TOTALE SOGGETTI STAMPATI %d", _contatore); | ||||||
|  | 		printer().formfeed();  | ||||||
|  | 		reset_footer(); | ||||||
|  | 	}				 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TScadenzeControlli::filtra_sezioni() | ||||||
|  | { | ||||||
|  |  	const TString16 sezini = _msk->get(F_SEZINI); | ||||||
|  |  	const TString16 sotini = _msk->get(F_SOTINI); | ||||||
|  |  	const TString16 sezfin = _msk->get(F_SEZFIN); | ||||||
|  |  	const TString16 sotfin = _msk->get(F_SOTFIN); | ||||||
|  |   TRectype da(LF_SOGGETTI); | ||||||
|  |   TRectype a(LF_SOGGETTI);    | ||||||
|  |   if (sezini.not_empty()) | ||||||
|  | 		da.put(SOG_CODSEZ, sezini); | ||||||
|  |   if (sotini.not_empty()) | ||||||
|  | 		da.put(SOG_CODSOT, sotini); | ||||||
|  |   if (sezfin.not_empty()) | ||||||
|  | 		a.put(SOG_CODSEZ, sezfin); | ||||||
|  |   if (sotfin.not_empty()) | ||||||
|  | 		a.put(SOG_CODSOT, sotfin); | ||||||
|  | 	current_cursor()->setregion(da, a); | ||||||
|  | }	 | ||||||
|  | 
 | ||||||
|  | bool TScadenzeControlli::preprocess_page(int file, int counter) | ||||||
|  | {  | ||||||
|  | 	if (_tipostampa == elenco) | ||||||
|  | 	{ | ||||||
|  | 		TRectype& recsog = current_cursor()->curr(); | ||||||
|  | 		TString80 nome = recsog.get(SOG_COGNOME); | ||||||
|  | 		nome << " "; | ||||||
|  | 		nome << recsog.get(SOG_NOME); | ||||||
|  | 		_cognome_nome = nome; | ||||||
|  | 		TString256 localita = ""; | ||||||
|  | 		localita << current_cursor()->curr(-ALIAS_LCPDOM).get("S6"); | ||||||
|  | 		if (localita.not_empty() && localita.ok()) | ||||||
|  | 		{ | ||||||
|  | 			localita << " "; | ||||||
|  | 			localita << current_cursor()->curr(-ALIAS_LCPDOM).get("S0"); | ||||||
|  | 			localita << " - ";		 | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			localita = current_cursor()->curr(-ALIAS_COMDOM).get(COM_CAPCOM); | ||||||
|  | 			localita << " "; | ||||||
|  | 		}			 | ||||||
|  | 		localita << current_cursor()->curr(-ALIAS_COMDOM).get(COM_DENCOM); | ||||||
|  | 		localita.trim(); | ||||||
|  | 		_dencom = localita; | ||||||
|  | 		 | ||||||
|  | 		TRectype* key = new TRectype(LF_CONTSAN); | ||||||
|  | 		long codice = recsog.get_long(SOG_CODICE); | ||||||
|  | 		key->put(CON_CODICE, codice); | ||||||
|  | 		int err = _scontrolli->read(key); | ||||||
|  | 		if ((err == NOERR) && (app()._scontrolli->rows()>0)) | ||||||
|  | 		{ | ||||||
|  | 			const TRectype& riga = app()._scontrolli->row(app()._scontrolli->rows()); | ||||||
|  | 			TDate prossdata = riga.get_date(CON_PROSSDATA); | ||||||
|  | 		 | ||||||
|  | 			TString80 rigastampa; | ||||||
|  | 			rigastampa = ""; | ||||||
|  | 			rigastampa << "@72g"<<prossdata<<" "; | ||||||
|  | 			rigastampa << riga.get(CON_RESPONSAB); | ||||||
|  | 			_rigastampa = rigastampa; | ||||||
|  | 		}			 | ||||||
|  | 		// salto pagina se cambio sezione
 | ||||||
|  | 		const TString16 codsez = recsog.get(SOG_CODSEZ);		 | ||||||
|  | 		const TString16 codsot = recsog.get(SOG_CODSOT);		 | ||||||
|  | 		if ((_codsez!=codsez)||(_codsot!=codsot)) | ||||||
|  | 		{ | ||||||
|  | 			if ((_codsez != "**") && (_contatore > 0)) | ||||||
|  | 				footer_sezione(); | ||||||
|  | 			_contatore = 0;			 | ||||||
|  | 			_codsez = codsez; | ||||||
|  | 			_codsot = codsot; | ||||||
|  | 			header_sezione(codsez, codsot); | ||||||
|  | 		} | ||||||
|  | 		if (printer().rows_left() < 4) | ||||||
|  | 			printer().formfeed(); | ||||||
|  | 	}		 | ||||||
|  | 	if (_tipostampa==etichette)		 | ||||||
|  | 		if (printer().rows_left() < _form_eti->get_body().height()) | ||||||
|  | 			printer().formfeed(); | ||||||
|  | 	_contatore++;			 | ||||||
|  | 	_totale++; | ||||||
|  |   return TRUE; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TScadenzeControlli::set_page(int file, int cnt) | ||||||
|  | {  | ||||||
|  | 	switch (_tipostampa) | ||||||
|  | 	{ | ||||||
|  | 		case etichette: | ||||||
|  | 		{ | ||||||
|  | 			TPrint_section& corpo = _form_eti->get_body(); | ||||||
|  | 			corpo.update(); | ||||||
|  |   		for (word i = 0; i < corpo.height(); i++) | ||||||
|  |   		{ | ||||||
|  |   			TPrintrow& riga = corpo.row(i); | ||||||
|  |   			set_row(i+1,riga); | ||||||
|  | 			}  			 | ||||||
|  | 			force_setpage(TRUE);	// serve perchè alla prossima etichetta rifaccia la setpage
 | ||||||
|  | 														// altrimenti stampa sempre la stessa etichetta
 | ||||||
|  | 		} | ||||||
|  | 		break; | ||||||
|  | 		case elenco: | ||||||
|  | 		{ | ||||||
|  | 			set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); | ||||||
|  | 			set_row(2,"@0g@S", FLD(LF_SOGGETTI,SOG_TESSAVIS)); | ||||||
|  | 			set_row(3,"@0g@S", FLD(LF_SOGGETTI,SOG_CATDON)); | ||||||
|  | 			 | ||||||
|  | 			set_row(1,"@9g#a", &_cognome_nome); | ||||||
|  | 			set_row(2,"@9g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); | ||||||
|  | 			set_row(3,"@9g#a", &_dencom); | ||||||
|  | 
 | ||||||
|  | 			set_row(1,"@61g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); | ||||||
|  | 			set_row(2,"@61g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0)); | ||||||
|  | 			set_row(2,"@66g@S", FLD(LF_SOGGETTI,SOG_RHANTID)); | ||||||
|  | 
 | ||||||
|  | 			set_row(1,"@72g@S", FLD(LF_SOGGETTI,SOG_TELABI)); | ||||||
|  | 			set_row(1,"@87g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); | ||||||
|  | 			set_row(1,"@102g@S", FLD(LF_SOGGETTI,SOG_TELALT)); | ||||||
|  | 			 | ||||||
|  | 			set_row(2,"@72g#a", &_rigastampa); | ||||||
|  | 			 | ||||||
|  | 			set_row(4,""); | ||||||
|  | 		}			 | ||||||
|  | 		break; | ||||||
|  | 	}		 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool TScadenzeControlli::filter_func_scadenzectrl(const TRelation* rel) | ||||||
|  | {    | ||||||
|  | 	bool filtrato = TRUE; | ||||||
|  | 	TRectype& recsog = rel->lfile().curr(); | ||||||
|  | 	// filtro per categorie
 | ||||||
|  | 	TAssoc_array& categorie = app()._categorie; | ||||||
|  | 	if (categorie.items() != 0) | ||||||
|  | 	{ | ||||||
|  | 		const TString16 cat = recsog.get(SOG_CATDON); | ||||||
|  | 		filtrato = categorie.is_key((const char*) cat); | ||||||
|  | 	}	 | ||||||
|  | 	// filtro per iniziale cognome		
 | ||||||
|  | 	if (filtrato && (!app()._lettini.blank()) && (!app()._lettfin.blank())) | ||||||
|  | 	{ | ||||||
|  | 		TString80 cognome = recsog.get(SOG_COGNOME); | ||||||
|  | 		int leni = app()._lettini.len(); | ||||||
|  | 		TString16 cognomei = cognome.left(leni); | ||||||
|  | 		int lenf = app()._lettfin.len(); | ||||||
|  | 		TString16 cognomef = cognome.left(lenf); | ||||||
|  | 		if (!(cognomei >= app()._lettini && cognomef <= app()._lettfin)) | ||||||
|  | 			filtrato = FALSE; | ||||||
|  | 	}	 | ||||||
|  | 	if (filtrato) | ||||||
|  | 	{ | ||||||
|  | 		TRectype* key = new TRectype(LF_CONTSAN); | ||||||
|  | 		long codice = recsog.get_long(SOG_CODICE); | ||||||
|  | 		key->put(CON_CODICE, codice); | ||||||
|  | 		int err = app()._scontrolli->read(key); | ||||||
|  | 		if ((err == NOERR) && (app()._scontrolli->rows()>0)) | ||||||
|  | 		{ | ||||||
|  | 			const TRectype& riga = app()._scontrolli->row(app()._scontrolli->rows()); | ||||||
|  | 			TString16 prosstipo = riga.get(CON_PROSSTIPO); | ||||||
|  | 			TDate prossdata = riga.get_date(CON_PROSSDATA); | ||||||
|  | 			if (!((prosstipo == app()._tipo1) && (prossdata >= app()._dataini) && (prossdata <= app()._datafin))) | ||||||
|  | 				filtrato = FALSE;				 | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 			filtrato = FALSE; | ||||||
|  | 	} | ||||||
|  | 	return filtrato; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TScadenzeControlli::header_sezione(const TString16 codsez, const TString16 codsot) | ||||||
|  | { | ||||||
|  | 	const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); | ||||||
|  | 	const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); | ||||||
|  | 	TString intestazione(132); | ||||||
|  | 	intestazione = "Sezione: "; | ||||||
|  | 	intestazione << codsez; | ||||||
|  | 	intestazione << "/"; | ||||||
|  | 	intestazione << codsot; | ||||||
|  | 	intestazione << " "; | ||||||
|  | 	intestazione << densez; | ||||||
|  | 	if ((densot.ok())&& (densot.not_empty())) | ||||||
|  | 	{ | ||||||
|  | 		intestazione << "/"; | ||||||
|  | 		intestazione << densot; | ||||||
|  | 	}		 | ||||||
|  | 	intestazione.center_just(); | ||||||
|  | 	set_header(1,"@0g%s", (const char*) intestazione); | ||||||
|  | 	return; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool TScadenzeControlli::set_print(int) | ||||||
|  | { | ||||||
|  | 	_tipostampa = undefined; | ||||||
|  |   KEY tasto; | ||||||
|  |   tasto = _msk->run(); | ||||||
|  |   switch (tasto) | ||||||
|  |   { | ||||||
|  |   case F_ELENCO: | ||||||
|  |   	_tipostampa = elenco; | ||||||
|  |   	_codsez = "**"; | ||||||
|  |   	_codsot = "**"; | ||||||
|  |   	break; | ||||||
|  |   case F_ETICHETTE: | ||||||
|  |   	_tipostampa = etichette;	 | ||||||
|  |   	break; | ||||||
|  |   }	 | ||||||
|  | 	if (_tipostampa != undefined) | ||||||
|  |   { | ||||||
|  | 		_tipo1 = _msk->get(F_TIPO1); | ||||||
|  | 		_dataini = _msk->get_date(F_DATAINI); | ||||||
|  | 		_datafin = _msk->get_date(F_DATAFIN); | ||||||
|  | 		_lettini = _msk->get(F_LETTINI); | ||||||
|  | 		_lettini.left(15); | ||||||
|  | 		_lettfin = _msk->get(F_LETTFIN); | ||||||
|  | 		_lettfin.left(15);		 | ||||||
|  | 		_contatore = 0; | ||||||
|  | 		_totale = 0; | ||||||
|  |     reset_files();  | ||||||
|  |     add_file(LF_SOGGETTI); | ||||||
|  | 		filtra_sezioni(); | ||||||
|  | 	  // filtro per categorie
 | ||||||
|  | 	  _categorie.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() && catpri.ok()) | ||||||
|  |   		_categorie.add((const char*) catpri); | ||||||
|  |   	if (catsec.not_empty() && catsec.ok()) | ||||||
|  |   		_categorie.add((const char*) catsec); | ||||||
|  |   	if (catter.not_empty() && catter.ok()) | ||||||
|  |   		_categorie.add((const char*) catter); | ||||||
|  |   	if (catqua.not_empty() && catqua.ok()) | ||||||
|  |   		_categorie.add((const char*) catqua); | ||||||
|  |   	if (catqui.not_empty() && catqui.ok()) | ||||||
|  |   		_categorie.add((const char*) catqui); | ||||||
|  |   	if (catses.not_empty() && catses.ok()) | ||||||
|  |   		_categorie.add((const char*) catses); | ||||||
|  | 		current_cursor()->set_filterfunction(filter_func_scadenzectrl,TRUE); | ||||||
|  | 		reset_print();		 | ||||||
|  |     crea_intestazione(); | ||||||
|  |     return TRUE; | ||||||
|  |   } | ||||||
|  |   else | ||||||
|  |     return FALSE; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TScadenzeControlli::crea_intestazione() | ||||||
|  | { | ||||||
|  | 	reset_header(); | ||||||
|  | 	TString sep(132); | ||||||
|  |  	sep = "STAMPA SCADENZE PER CONTROLLI SANITARI";	 | ||||||
|  | 	sep.center_just(); | ||||||
|  |  	set_header(2, "@0g%s", (const char*) sep); | ||||||
|  |  	TDate data_stampa = _data_stampa.string(); | ||||||
|  |   set_header(2,"@0g%10s", (const char*) data_stampa); | ||||||
|  |   sep = ""; | ||||||
|  |   sep << "Pag. @#"; | ||||||
|  |   set_header(2, "@125g%s", (const char*) sep);   | ||||||
|  |   	 | ||||||
|  |   sep = ""; | ||||||
|  |   sep.fill('-'); | ||||||
|  |   set_header(3, (const char *) sep); | ||||||
|  |  	set_header(4,"@0gCodice@9gCognome e nome@61gNato il@72gTelefono abit.@87gTelefono lav.@102gTelefono altro"); | ||||||
|  |  	set_header(5,"@0gTessera@9gIndirizzo"); | ||||||
|  | 	TString256 riga = "@0gCat.@61gGruppo Rh@72gData pros."; | ||||||
|  | 	//riga << _tipo1 << "@83gUltimo " << _tipo2 << "@94gUltimo " << _tipo3 << "@105gUltimo " << _tipo4 << "@116gUltimo " << _tipo5;
 | ||||||
|  |  	set_header(6,riga); | ||||||
|  |  	set_header(7,"@0g--------@9g---------------------------------------------------@61g----------@72g------------------------------------------------------"); | ||||||
|  |  	printer().footerlen(3); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool TScadenzeControlli::user_create() | ||||||
|  | { | ||||||
|  | 	_msk = new TMask("at6700a"); | ||||||
|  | 	_rel = new TRelation(LF_SOGGETTI); | ||||||
|  | 	_rel->add(LF_SEZIONI,"CODSEZ==CODSEZ|CODSOT==CODSOT"); | ||||||
|  |   _rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS); | ||||||
|  |   _rel->add("LCP", "CODTAB==RES_CODLOC",1,LF_SOGGETTI,ALIAS_LCPRES); | ||||||
|  |   _rel->add("LCP", "CODTAB==DOM_CODLOC",1,LF_SOGGETTI,ALIAS_LCPDOM); | ||||||
|  |   _rel->add(LF_COMUNI, "COM==RES_CODCOM",1,LF_SOGGETTI,ALIAS_COMRES); | ||||||
|  |   _rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,LF_SOGGETTI,ALIAS_COMDOM); | ||||||
|  |   _rel->add(LF_COMUNI, "COM==COMNASC",1,LF_SOGGETTI,ALIAS_COMNAS); | ||||||
|  |    | ||||||
|  | 	//cursore ordinamento per sezione+sottogruppo+cognome+nome  
 | ||||||
|  |   _cur = add_cursor(new TCursor(_rel, "", 3)); | ||||||
|  | 	_contsan = new TLocalisamfile(LF_CONTSAN); | ||||||
|  | 	_scontrolli = new TRecord_array(LF_CONTSAN, CON_PROGCON); | ||||||
|  |   TConfig config(CONFIG_STUDIO); | ||||||
|  |   TString16 etformato = config.get("EtFormato"); | ||||||
|  |   _etlarghezza = config.get_int("EtLarghezza"); | ||||||
|  |   _etcolonne = config.get_int("EtColonne"); | ||||||
|  | 	_form_eti = new TEti_scadenzectrl_form(etformato); | ||||||
|  | 	 | ||||||
|  | 	return TRUE; | ||||||
|  | }	 | ||||||
|  | 
 | ||||||
|  | bool TScadenzeControlli::user_destroy()	 | ||||||
|  | { | ||||||
|  | 	delete _form_eti; | ||||||
|  | 	delete _scontrolli; | ||||||
|  | 	delete _contsan; | ||||||
|  | 	delete _rel; | ||||||
|  | 	delete _msk; | ||||||
|  | 	return TRUE; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int at6700(int argc, char* argv[]) | ||||||
|  | { | ||||||
|  | 	TScadenzeControlli a; | ||||||
|  | 	a.run(argc, argv, "Stampa scadenze per controlli"); | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										34
									
								
								at/at6700a.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								at/at6700a.h
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | // stampa scadenze per controlli sanitari
 | ||||||
|  | // definizione campi per maschera di selezione
 | ||||||
|  | 
 | ||||||
|  | #define F_SEZINI    101 | ||||||
|  | #define F_D_SEZINI  102 | ||||||
|  | #define F_SOTINI    103 | ||||||
|  | #define F_D_SOTINI  104 | ||||||
|  | #define F_SEZFIN    105 | ||||||
|  | #define F_D_SEZFIN  106 | ||||||
|  | #define F_SOTFIN    107 | ||||||
|  | #define F_D_SOTFIN  108 | ||||||
|  | 
 | ||||||
|  | #define F_CAT1      201 | ||||||
|  | #define F_D_CAT1    202 | ||||||
|  | #define F_CAT2      203 | ||||||
|  | #define F_D_CAT2    204 | ||||||
|  | #define F_CAT3      205 | ||||||
|  | #define F_D_CAT3    206 | ||||||
|  | #define F_CAT4      207 | ||||||
|  | #define F_D_CAT4    208 | ||||||
|  | #define F_CAT5      209 | ||||||
|  | #define F_D_CAT5    210 | ||||||
|  | #define F_CAT6      211 | ||||||
|  | #define F_D_CAT6    212 | ||||||
|  | 
 | ||||||
|  | #define F_TIPO1         301 | ||||||
|  | #define F_D_TIPO1       302 | ||||||
|  | #define F_DATAINI       303 | ||||||
|  | #define F_DATAFIN       304 | ||||||
|  | #define F_LETTINI       305 | ||||||
|  | #define F_LETTFIN       306 | ||||||
|  | 
 | ||||||
|  | #define F_ELENCO    401 | ||||||
|  | #define F_ETICHETTE 402 | ||||||
							
								
								
									
										320
									
								
								at/at6700a.uml
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										320
									
								
								at/at6700a.uml
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,320 @@ | |||||||
|  | #include "at6700a.h" | ||||||
|  | 
 | ||||||
|  | TOOLBAR "" 0 20 0 2 | ||||||
|  | 
 | ||||||
|  | BUTTON F_ELENCO 9 2 | ||||||
|  | BEGIN | ||||||
|  |         PROMPT -13 -11 "~Elenco" | ||||||
|  |         MESSAGE EXIT,F_ELENCO | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | BUTTON F_ETICHETTE 9 2 | ||||||
|  | BEGIN | ||||||
|  |         PROMPT -23 -11 "E~tichette" | ||||||
|  |         MESSAGE EXIT,F_ETICHETTE | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | BUTTON DLG_QUIT 9 2 | ||||||
|  | BEGIN | ||||||
|  |         PROMPT -33 -11 "" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | ENDPAGE | ||||||
|  | 
 | ||||||
|  | PAGE "Scadenze per controlli sanitari" -1 -1 78 20 | ||||||
|  | 
 | ||||||
|  | GROUPBOX DLG_NULL 77 4 | ||||||
|  | BEGIN | ||||||
|  |         PROMPT 1 1 "Scelta sezioni/sottogruppi" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_SEZINI  2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 2 2 "Da " | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE LF_SEZIONI | ||||||
|  |   INPUT CODSEZ F_SEZINI | ||||||
|  |   INPUT CODSOT F_SOTINI | ||||||
|  |   DISPLAY "Cod.sez" CODSEZ | ||||||
|  |   DISPLAY "Cod.sot." CODSOT | ||||||
|  |   DISPLAY "Sezione@25" DENSEZ | ||||||
|  |   DISPLAY "Sottogruppo@25" DENSOT | ||||||
|  |   OUTPUT F_SEZINI CODSEZ | ||||||
|  |   OUTPUT F_D_SEZINI DENSEZ | ||||||
|  |   OUTPUT F_SOTINI CODSOT | ||||||
|  |   OUTPUT F_D_SOTINI DENSOT | ||||||
|  |   CHECKTYPE SEARCH | ||||||
|  |   HELP "Codice sezione da cui partire" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_SEZINI 25 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 11 2 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE LF_SEZIONI KEY 2 | ||||||
|  |   INPUT DENSEZ F_D_SEZINI | ||||||
|  |   DISPLAY "Sezione@25" DENSEZ | ||||||
|  |   DISPLAY "Sottogruppo@25" DENSOT | ||||||
|  |   DISPLAY "Cod.sez" CODSEZ | ||||||
|  |   DISPLAY "Cod.sot." CODSOT | ||||||
|  |   COPY OUTPUT F_SEZINI | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   HELP "Sezione da cui partire" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_SOTINI 2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 2 3 "   " | ||||||
|  |   COPY ALL F_SEZINI | ||||||
|  |   CHECKTYPE SEARCH | ||||||
|  |   HELP "Codice sottogruppo da cui partire" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_SOTINI 25 | ||||||
|  | BEGIN        	 | ||||||
|  |   PROMPT 11 3 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   COPY USE F_D_SEZINI | ||||||
|  |   INPUT DENSEZ F_D_SEZINI | ||||||
|  |   INPUT DENSOT F_D_SOTINI | ||||||
|  |   COPY DISPLAY F_D_SEZINI | ||||||
|  |   COPY OUTPUT F_D_SEZINI | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   HELP "Sottogruppo da cui partire" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_SEZFIN  2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 41 2 "A " | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE LF_SEZIONI | ||||||
|  |   INPUT CODSEZ F_SEZFIN | ||||||
|  |   INPUT CODSOT F_SOTFIN | ||||||
|  |   DISPLAY "Cod.sez" CODSEZ | ||||||
|  |   DISPLAY "Cod.sot." CODSOT | ||||||
|  |   DISPLAY "Sezione@25" DENSEZ | ||||||
|  |   DISPLAY "Sottogruppo@25" DENSOT | ||||||
|  |   OUTPUT F_SEZFIN CODSEZ | ||||||
|  |   OUTPUT F_D_SEZFIN DENSEZ | ||||||
|  |   OUTPUT F_SOTFIN CODSOT | ||||||
|  |   OUTPUT F_D_SOTFIN DENSOT | ||||||
|  |   CHECKTYPE SEARCH | ||||||
|  |   HELP "Codice sezione finale" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_SEZFIN 25 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 49 2 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE LF_SEZIONI KEY 2 | ||||||
|  |   INPUT DENSEZ F_D_SEZFIN | ||||||
|  |   DISPLAY "Sezione@25" DENSEZ | ||||||
|  |   DISPLAY "Sottogruppo@25" DENSOT | ||||||
|  |   DISPLAY "Cod.sez" CODSEZ | ||||||
|  |   DISPLAY "Cod.sot." CODSOT | ||||||
|  |   COPY OUTPUT F_SEZFIN | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   HELP "Sezione finale" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_SOTFIN 2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 41 3 "  " | ||||||
|  |   COPY ALL F_SEZFIN | ||||||
|  |   CHECKTYPE SEARCH | ||||||
|  |   HELP "Codice sottogruppo finale" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_SOTFIN 25 | ||||||
|  | BEGIN        	 | ||||||
|  |   PROMPT 49 3 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   COPY USE F_D_SEZFIN | ||||||
|  |   INPUT DENSEZ F_D_SEZFIN | ||||||
|  |   INPUT DENSOT F_D_SOTFIN | ||||||
|  |   COPY DISPLAY F_D_SEZFIN | ||||||
|  |   COPY OUTPUT F_D_SEZFIN | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   HELP "Sottogruppo finale" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | GROUPBOX DLG_NULL 77 5 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 1 5 "Categorie" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | STRING F_CAT1 2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 2 6 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE CTD | ||||||
|  |   INPUT CODTAB F_CAT1 | ||||||
|  |   DISPLAY "Codice" CODTAB | ||||||
|  |   DISPLAY "Descrizione@30" S0 | ||||||
|  |   OUTPUT F_CAT1 CODTAB | ||||||
|  |   OUTPUT F_D_CAT1 S0 | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   WARNING "Codice non presente" | ||||||
|  |   HELP "Categoria di appartenenza" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_CAT1 30 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 8 6 "" | ||||||
|  |   FLAGS "D" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_CAT2 2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 2 7 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE CTD | ||||||
|  |   INPUT CODTAB F_CAT2 | ||||||
|  |   COPY DISPLAY F_CAT1 | ||||||
|  |   OUTPUT F_CAT2 CODTAB | ||||||
|  |   OUTPUT F_D_CAT2 S0 | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   WARNING "Codice non presente" | ||||||
|  |   HELP "Categoria di appartenenza" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_CAT2 30 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 8 7 "" | ||||||
|  |   FLAGS "D" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_CAT3 2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 2 8 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE CTD | ||||||
|  |   INPUT CODTAB F_CAT3 | ||||||
|  |   COPY DISPLAY F_CAT1 | ||||||
|  |   OUTPUT F_CAT3 CODTAB | ||||||
|  |   OUTPUT F_D_CAT3 S0 | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   WARNING "Codice non presente" | ||||||
|  |   HELP "Categoria di appartenenza" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_CAT3 30 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 8 8 "" | ||||||
|  |   FLAGS "D" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_CAT4 2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 40 6 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE CTD | ||||||
|  |   INPUT CODTAB F_CAT4 | ||||||
|  |   COPY DISPLAY F_CAT1 | ||||||
|  |   OUTPUT F_CAT4 CODTAB | ||||||
|  |   OUTPUT F_D_CAT4 S0 | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   WARNING "Codice non presente" | ||||||
|  |   HELP "Categoria di appartenenza" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_CAT4 30 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 46 6 "" | ||||||
|  |   FLAGS "D" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_CAT5 2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 40 7 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE CTD | ||||||
|  |   INPUT CODTAB F_CAT5 | ||||||
|  |   COPY DISPLAY F_CAT1 | ||||||
|  |   OUTPUT F_CAT5 CODTAB | ||||||
|  |   OUTPUT F_D_CAT5 S0 | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   WARNING "Codice non presente" | ||||||
|  |   HELP "Categoria di appartenenza" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_CAT5 30 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 46 7 "" | ||||||
|  |   FLAGS "D" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_CAT6 2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 40 8 "" | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE CTD | ||||||
|  |   INPUT CODTAB F_CAT6 | ||||||
|  |   COPY DISPLAY F_CAT1 | ||||||
|  |   OUTPUT F_CAT6 CODTAB | ||||||
|  |   OUTPUT F_D_CAT6 S0 | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   WARNING "Codice non presente" | ||||||
|  |   HELP "Categoria di appartenenza" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_CAT6 30 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 46 8 "" | ||||||
|  |   FLAGS "D" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | GROUPBOX DLG_NULL 77 4 | ||||||
|  | BEGIN | ||||||
|  |         PROMPT 1 10 "Selezioni per la stampa" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_TIPO1 2 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 2 11 "Tipo controllo " | ||||||
|  |   FLAGS "U" | ||||||
|  |   USE TCS | ||||||
|  |   INPUT CODTAB F_TIPO1 | ||||||
|  |   DISPLAY "Codice" CODTAB | ||||||
|  |   DISPLAY "Descrizione@30" S0 | ||||||
|  |   OUTPUT F_TIPO1 CODTAB | ||||||
|  |   OUTPUT F_D_TIPO1 S0 | ||||||
|  |   CHECKTYPE NORMAL | ||||||
|  |   WARNING "Codice non presente" | ||||||
|  |   HELP "Tipo/Esito controllo sanitario" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_D_TIPO1 30 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 22 11 "" | ||||||
|  |   FLAGS "D" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | DATE F_DATAINI | ||||||
|  | BEGIN | ||||||
|  |    PROMPT 2 12 "Data iniziale  " | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | DATE F_DATAFIN | ||||||
|  | BEGIN | ||||||
|  |    PROMPT 30 12 "Data finale " | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_LETTINI 15 | ||||||
|  | BEGIN | ||||||
|  |    PROMPT 2 15 "Selezione iniziali cognome: da " | ||||||
|  |    FLAG "U" | ||||||
|  |    //PICTURE "!!" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_LETTFIN 15 | ||||||
|  | BEGIN | ||||||
|  |    PROMPT 50 15 "a " | ||||||
|  |    FLAG "U" | ||||||
|  |    //VALIDATE (#F_LETTINI<=#F_LETTFIN) | ||||||
|  |    //PICTURE "!!" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | ENDPAGE | ||||||
|  | ENDMASK | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user