Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Stampa per categorie: possibilita' di stampare le etichette per nucleo famigliare git-svn-id: svn://10.65.10.50/trunk@6954 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									93dd671c64
								
							
						
					
					
						commit
						02624f9694
					
				
							
								
								
									
										153
									
								
								at/at2700.cpp
									
									
									
									
									
								
							
							
						
						
									
										153
									
								
								at/at2700.cpp
									
									
									
									
									
								
							@ -8,6 +8,7 @@
 | 
				
			|||||||
#include "soggetti.h"
 | 
					#include "soggetti.h"
 | 
				
			||||||
#include "benem.h"
 | 
					#include "benem.h"
 | 
				
			||||||
#include "donaz.h"
 | 
					#include "donaz.h"
 | 
				
			||||||
 | 
					#include "famiglie.h"
 | 
				
			||||||
#include "sezioni.h"
 | 
					#include "sezioni.h"
 | 
				
			||||||
#include <comuni.h>
 | 
					#include <comuni.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -32,7 +33,7 @@
 | 
				
			|||||||
#define ALIAS_BNZ			600		// benemerenze
 | 
					#define ALIAS_BNZ			600		// benemerenze
 | 
				
			||||||
#define ALIAS_GAZ			300   // gruppi aziendale
 | 
					#define ALIAS_GAZ			300   // gruppi aziendale
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ETI_INDIRIZZO 4			// numero campo indirizzo in etichetta (deve essere sempre cosi')
 | 
					#define ETI_COGNOME 3			// numero campo cognome e nome in etichetta (deve essere sempre cosi') per famiglie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum ts { undefined=0, sintetico=1, completo=2, schede=3, etichette=4, cartoline=5, personale=6 };
 | 
					enum ts { undefined=0, sintetico=1, completo=2, schede=3, etichette=4, cartoline=5, personale=6 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -60,20 +61,23 @@ class TStampaPerCategorie : public TPrintapp
 | 
				
			|||||||
  TMask*            _msk;
 | 
					  TMask*            _msk;
 | 
				
			||||||
	TLocalisamfile* 	_benem;
 | 
						TLocalisamfile* 	_benem;
 | 
				
			||||||
	TLocalisamfile* 	_donaz;
 | 
						TLocalisamfile* 	_donaz;
 | 
				
			||||||
 | 
						TLocalisamfile* 	_famiglie;
 | 
				
			||||||
	TRecord_array*  	_sbenemerenze;
 | 
						TRecord_array*  	_sbenemerenze;
 | 
				
			||||||
 | 
						TRecord_array*  	_sfamiglia;
 | 
				
			||||||
  TEti_percat_form*	_form_eti;
 | 
					  TEti_percat_form*	_form_eti;
 | 
				
			||||||
  TEti_percat_form*	_form_car;
 | 
					  TEti_percat_form*	_form_car;
 | 
				
			||||||
  TEti_percat_form*	_form_sch;    
 | 
					  TEti_percat_form*	_form_sch;    
 | 
				
			||||||
  TEti_percat_form*	_form_per;    
 | 
					  TEti_percat_form*	_form_per;    
 | 
				
			||||||
  TAssoc_array			_catdon;
 | 
					  TAssoc_array			_catdon;
 | 
				
			||||||
  TAssoc_array			_catnondon;
 | 
					  TAssoc_array			_catnondon;
 | 
				
			||||||
 | 
					  TAssoc_array			_codfamiglie;
 | 
				
			||||||
  TParagraph_string _cognome_nome, _dencom, _benemerenza;
 | 
					  TParagraph_string _cognome_nome, _dencom, _benemerenza;
 | 
				
			||||||
  TString80					_rigastampa;
 | 
					  TString80					_rigastampa;
 | 
				
			||||||
  TDate 						_data_stampa;
 | 
					  TDate 						_data_stampa;
 | 
				
			||||||
  ts								_tipostampa;
 | 
					  ts								_tipostampa;
 | 
				
			||||||
  TString16					_lettini, _lettfin, _capini, _capfin; 
 | 
					  TString16					_lettini, _lettfin, _capini, _capfin; 
 | 
				
			||||||
  TString16					_gruppoazie, _gruppoold;
 | 
					  TString16					_gruppoazie, _gruppoold;
 | 
				
			||||||
  bool							_pergruppo;
 | 
					  bool							_pergruppo, _perfamiglie;
 | 
				
			||||||
  int 							_contatore;
 | 
					  int 							_contatore;
 | 
				
			||||||
	TString16					_codsez, _codsot, _orario, _datacart;
 | 
						TString16					_codsez, _codsot, _orario, _datacart;
 | 
				
			||||||
	TString80					_invitoper, _data, _presso1, _presso2, _presso3, _presso4;
 | 
						TString80					_invitoper, _data, _presso1, _presso2, _presso3, _presso4;
 | 
				
			||||||
@ -257,7 +261,19 @@ void TStampaPerCategorie::set_page(int file, int cnt)
 | 
				
			|||||||
			{                     
 | 
								{                     
 | 
				
			||||||
				if (current_cursor()->pos()<current_cursor()->items())
 | 
									if (current_cursor()->pos()<current_cursor()->items())
 | 
				
			||||||
				{ 
 | 
									{ 
 | 
				
			||||||
 | 
										bool avanza = TRUE;
 | 
				
			||||||
 | 
										while (avanza)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											if (current_cursor()->pos()<current_cursor()->items())
 | 
				
			||||||
 | 
												avanza = !(preprocess_page(file, cnt));
 | 
				
			||||||
 | 
											else
 | 
				
			||||||
 | 
												avanza = FALSE;
 | 
				
			||||||
 | 
											if (avanza)																				
 | 
				
			||||||
 | 
												++(*current_cursor());
 | 
				
			||||||
 | 
										}								
 | 
				
			||||||
					force_setpage(TRUE);
 | 
										force_setpage(TRUE);
 | 
				
			||||||
 | 
									  TForm_item& cognome = corpo.find_field(ETI_COGNOME);
 | 
				
			||||||
 | 
									  cognome.set(_cognome_nome);					
 | 
				
			||||||
					corpo.update();
 | 
										corpo.update();
 | 
				
			||||||
  				for (word i = 0; i < corpo.height(); i++)
 | 
					  				for (word i = 0; i < corpo.height(); i++)
 | 
				
			||||||
  				{
 | 
					  				{
 | 
				
			||||||
@ -271,10 +287,16 @@ void TStampaPerCategorie::set_page(int file, int cnt)
 | 
				
			|||||||
  					set_row(i+1,riga1);
 | 
					  					set_row(i+1,riga1);
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					if (r < _etcolonne)  			
 | 
										if (r < _etcolonne)  			
 | 
				
			||||||
 | 
										{   
 | 
				
			||||||
 | 
											bool avanza = TRUE;
 | 
				
			||||||
 | 
											while (avanza)
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							++(*current_cursor());
 | 
												++(*current_cursor());
 | 
				
			||||||
							if (current_cursor()->pos()<current_cursor()->items())
 | 
												if (current_cursor()->pos()<current_cursor()->items())
 | 
				
			||||||
							preprocess_page(file, cnt);
 | 
													avanza = !(preprocess_page(file, cnt));
 | 
				
			||||||
 | 
												else
 | 
				
			||||||
 | 
													avanza = FALSE;								
 | 
				
			||||||
 | 
											}								
 | 
				
			||||||
					}						
 | 
										}						
 | 
				
			||||||
				}					
 | 
									}					
 | 
				
			||||||
			}				
 | 
								}				
 | 
				
			||||||
@ -612,6 +634,123 @@ bool TStampaPerCategorie::preprocess_page(int file, int counter)
 | 
				
			|||||||
	if (_tipostampa==etichette)		
 | 
						if (_tipostampa==etichette)		
 | 
				
			||||||
		if (printer().rows_left() < _form_eti->get_body().height())
 | 
							if (printer().rows_left() < _form_eti->get_body().height())
 | 
				
			||||||
			printer().formfeed();
 | 
								printer().formfeed();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if (_perfamiglie)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							TRectype& recfam = current_cursor()->curr(LF_FAMIGLIE);
 | 
				
			||||||
 | 
							const long codice = recsog.get_long(SOG_CODICE);
 | 
				
			||||||
 | 
							const long codsufam = recfam.get_long(FAM_CODFAM);
 | 
				
			||||||
 | 
							const int rigafamsog = recfam.get_int(FAM_PROGFAM);
 | 
				
			||||||
 | 
							if ( codsufam == codice)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								TRectype key = TRectype(LF_FAMIGLIE);
 | 
				
			||||||
 | 
								key.put(FAM_FAMIGLIA, recfam.get_long(FAM_FAMIGLIA));
 | 
				
			||||||
 | 
								const int err = _sfamiglia->read(key);
 | 
				
			||||||
 | 
								if (err == NOERR)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									current_cursor()->save_status();
 | 
				
			||||||
 | 
									// controllo se qualcuno che lo precede nella famiglia rientra
 | 
				
			||||||
 | 
									// nella selezione, in questo caso ho gia' stampato la famiglia
 | 
				
			||||||
 | 
									// che viene stampata quando incontro il primo componente che
 | 
				
			||||||
 | 
									// rientra nella famiglia
 | 
				
			||||||
 | 
									// se non l'ho ancora stampato, accodo tutti i nominativi
 | 
				
			||||||
 | 
									// della famiglia e stampo    
 | 
				
			||||||
 | 
									bool dastampare=TRUE;
 | 
				
			||||||
 | 
									for (int r=1; r<=_sfamiglia->rows(); r++)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										const TRectype& riga = _sfamiglia->row(r);
 | 
				
			||||||
 | 
										long codfam = riga.get_long(FAM_CODFAM);
 | 
				
			||||||
 | 
										if (!(codice == codfam))
 | 
				
			||||||
 | 
										{                                                  
 | 
				
			||||||
 | 
											TLocalisamfile sog(LF_SOGGETTI);
 | 
				
			||||||
 | 
											sog.setkey(1);
 | 
				
			||||||
 | 
											sog.put(SOG_CODICE, codfam);
 | 
				
			||||||
 | 
											if (sog.read() == NOERR)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												current_cursor()->curr().put(SOG_CODSEZ, sog.get(SOG_CODSEZ));
 | 
				
			||||||
 | 
												current_cursor()->curr().put(SOG_CODSOT, sog.get(SOG_CODSOT));
 | 
				
			||||||
 | 
												current_cursor()->curr().put(SOG_COGNOME, sog.get(SOG_COGNOME));
 | 
				
			||||||
 | 
												current_cursor()->curr().put(SOG_NOME, sog.get(SOG_NOME));
 | 
				
			||||||
 | 
												current_cursor()->curr().put(SOG_DATANASC, sog.get(SOG_DATANASC));
 | 
				
			||||||
 | 
												if (current_cursor()->test() == NOERR)
 | 
				
			||||||
 | 
													if (r < rigafamsog)
 | 
				
			||||||
 | 
														dastampare = FALSE;
 | 
				
			||||||
 | 
											}									
 | 
				
			||||||
 | 
										}						
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									//current_cursor()->restore_status();				
 | 
				
			||||||
 | 
									if (dastampare)
 | 
				
			||||||
 | 
									{                         
 | 
				
			||||||
 | 
										TString256 cognome = "";
 | 
				
			||||||
 | 
										for (int r=1; r<=_sfamiglia->rows(); r++)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											const TRectype& riga = _sfamiglia->row(r);
 | 
				
			||||||
 | 
											long codfam = riga.get_long(FAM_CODFAM);
 | 
				
			||||||
 | 
											if (codice == codfam)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												TLocalisamfile sog(LF_SOGGETTI);
 | 
				
			||||||
 | 
												sog.setkey(1);
 | 
				
			||||||
 | 
												sog.put(SOG_CODICE, codfam);
 | 
				
			||||||
 | 
												if (sog.read() == NOERR)
 | 
				
			||||||
 | 
												{
 | 
				
			||||||
 | 
													cognome << sog.get(SOG_COGNOME);
 | 
				
			||||||
 | 
													cognome << " ";
 | 
				
			||||||
 | 
													cognome << sog.get(SOG_NOME);
 | 
				
			||||||
 | 
												}								
 | 
				
			||||||
 | 
											}							
 | 
				
			||||||
 | 
											else						
 | 
				
			||||||
 | 
											{                             
 | 
				
			||||||
 | 
												TLocalisamfile sog(LF_SOGGETTI);
 | 
				
			||||||
 | 
												sog.setkey(1);
 | 
				
			||||||
 | 
												sog.put(SOG_CODICE, codfam);
 | 
				
			||||||
 | 
												if (sog.read() == NOERR)
 | 
				
			||||||
 | 
												{
 | 
				
			||||||
 | 
													current_cursor()->curr().put(SOG_CODSEZ, sog.get(SOG_CODSEZ));
 | 
				
			||||||
 | 
													current_cursor()->curr().put(SOG_CODSOT, sog.get(SOG_CODSOT));
 | 
				
			||||||
 | 
													current_cursor()->curr().put(SOG_COGNOME, sog.get(SOG_COGNOME));
 | 
				
			||||||
 | 
													current_cursor()->curr().put(SOG_NOME, sog.get(SOG_NOME));
 | 
				
			||||||
 | 
													current_cursor()->curr().put(SOG_DATANASC, sog.get(SOG_DATANASC));
 | 
				
			||||||
 | 
													if (current_cursor()->test() == NOERR)
 | 
				
			||||||
 | 
													{                   
 | 
				
			||||||
 | 
														//TLocalisamfile soggetti(LF_SOGGETTI);
 | 
				
			||||||
 | 
														//soggetti.setkey(1);
 | 
				
			||||||
 | 
														//soggetti.put(SOG_CODICE, codfam);
 | 
				
			||||||
 | 
														sog.put(SOG_CODICE, codfam);
 | 
				
			||||||
 | 
														if (sog.read() == NOERR)
 | 
				
			||||||
 | 
														{
 | 
				
			||||||
 | 
															cognome << ", ";
 | 
				
			||||||
 | 
															cognome << sog.get(SOG_COGNOME);
 | 
				
			||||||
 | 
															cognome << " ";
 | 
				
			||||||
 | 
															cognome << sog.get(SOG_NOME);							
 | 
				
			||||||
 | 
														}									
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												}						
 | 
				
			||||||
 | 
											}					
 | 
				
			||||||
 | 
											_cognome_nome = cognome;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}					
 | 
				
			||||||
 | 
									current_cursor()->restore_status();
 | 
				
			||||||
 | 
									if (!dastampare)
 | 
				
			||||||
 | 
										return FALSE;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} 
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								TString80 cognome= "";
 | 
				
			||||||
 | 
								cognome << recsog.get(SOG_COGNOME);
 | 
				
			||||||
 | 
								cognome << " ";
 | 
				
			||||||
 | 
								cognome << recsog.get(SOG_NOME);
 | 
				
			||||||
 | 
								_cognome_nome = cognome;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							TString80 cognome= "";
 | 
				
			||||||
 | 
							cognome << recsog.get(SOG_COGNOME);
 | 
				
			||||||
 | 
							cognome << " ";
 | 
				
			||||||
 | 
							cognome << recsog.get(SOG_NOME);
 | 
				
			||||||
 | 
							_cognome_nome = cognome;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	_contatore++;
 | 
						_contatore++;
 | 
				
			||||||
  return TRUE;
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -648,12 +787,15 @@ bool TStampaPerCategorie::set_print(int m)
 | 
				
			|||||||
  {                                        
 | 
					  {                                        
 | 
				
			||||||
  	if (_tipostampa == cartoline)
 | 
					  	if (_tipostampa == cartoline)
 | 
				
			||||||
  		dati_cartolina();
 | 
					  		dati_cartolina();
 | 
				
			||||||
 | 
							if (_tipostampa == etichette)
 | 
				
			||||||
 | 
								_cognome_nome.set_width(200);  		
 | 
				
			||||||
  	_codsez = "**";
 | 
					  	_codsez = "**";
 | 
				
			||||||
  	_codsot = "**";
 | 
					  	_codsot = "**";
 | 
				
			||||||
		_gruppoold = "**"; 
 | 
							_gruppoold = "**"; 
 | 
				
			||||||
		_contatore = 0; 
 | 
							_contatore = 0; 
 | 
				
			||||||
  	TString80 chiave = "";
 | 
					  	TString80 chiave = "";
 | 
				
			||||||
  	_pergruppo = _msk->get_bool(F_PERGRUPPO);
 | 
					  	_pergruppo = _msk->get_bool(F_PERGRUPPO);
 | 
				
			||||||
 | 
					  	_perfamiglie = _msk->get_bool(F_PERFAMIGLIE);
 | 
				
			||||||
		bool percap = _msk->get_bool(F_PERCAP);
 | 
							bool percap = _msk->get_bool(F_PERCAP);
 | 
				
			||||||
		_capini = _msk->get(F_CAPINI);
 | 
							_capini = _msk->get(F_CAPINI);
 | 
				
			||||||
		_capfin = _msk->get(F_CAPFIN);
 | 
							_capfin = _msk->get(F_CAPFIN);
 | 
				
			||||||
@ -861,6 +1003,7 @@ bool TStampaPerCategorie::user_create()
 | 
				
			|||||||
  _rel = new TRelation(LF_SOGGETTI);
 | 
					  _rel = new TRelation(LF_SOGGETTI);
 | 
				
			||||||
  _rel->add(LF_DONAZ, "CODICE==CODICE", 1);
 | 
					  _rel->add(LF_DONAZ, "CODICE==CODICE", 1);
 | 
				
			||||||
  _rel->add(LF_BENEM, "CODICE==CODICE", 1);
 | 
					  _rel->add(LF_BENEM, "CODICE==CODICE", 1);
 | 
				
			||||||
 | 
					  _rel->add(LF_FAMIGLIE, "CODFAM==CODICE", 2);
 | 
				
			||||||
  _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT");
 | 
					  _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT");
 | 
				
			||||||
  _rel->add("BNZ", "CODTAB==TIPOBEN", 1, LF_BENEM, ALIAS_BNZ);
 | 
					  _rel->add("BNZ", "CODTAB==TIPOBEN", 1, LF_BENEM, ALIAS_BNZ);
 | 
				
			||||||
  _rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD);
 | 
					  _rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD);
 | 
				
			||||||
@ -876,7 +1019,9 @@ bool TStampaPerCategorie::user_create()
 | 
				
			|||||||
  _rel->add(LF_MEDICI, "CODMED==CODMED");
 | 
					  _rel->add(LF_MEDICI, "CODMED==CODMED");
 | 
				
			||||||
	_donaz 		= new TLocalisamfile(LF_DONAZ);
 | 
						_donaz 		= new TLocalisamfile(LF_DONAZ);
 | 
				
			||||||
	_benem 		=	new TLocalisamfile(LF_BENEM);
 | 
						_benem 		=	new TLocalisamfile(LF_BENEM);
 | 
				
			||||||
 | 
						_famiglie =	new TLocalisamfile(LF_FAMIGLIE);
 | 
				
			||||||
	_sbenemerenze = new TRecord_array(LF_BENEM,BEN_PROGBEN);	
 | 
						_sbenemerenze = new TRecord_array(LF_BENEM,BEN_PROGBEN);	
 | 
				
			||||||
 | 
						_sfamiglia = new TRecord_array(LF_FAMIGLIE,FAM_PROGFAM);	
 | 
				
			||||||
	add_cursor(new TSorted_cursor(_rel,"SOG_CODSEZ|SOG_CODSOT","",3));
 | 
						add_cursor(new TSorted_cursor(_rel,"SOG_CODSEZ|SOG_CODSOT","",3));
 | 
				
			||||||
  _msk = new TMask("at2700a");
 | 
					  _msk = new TMask("at2700a");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -904,7 +1049,9 @@ bool TStampaPerCategorie::user_destroy()
 | 
				
			|||||||
  delete _form_car;
 | 
					  delete _form_car;
 | 
				
			||||||
  delete _form_eti;
 | 
					  delete _form_eti;
 | 
				
			||||||
  delete _msk;
 | 
					  delete _msk;
 | 
				
			||||||
 | 
					  delete _sfamiglia;
 | 
				
			||||||
  delete _sbenemerenze;
 | 
					  delete _sbenemerenze;
 | 
				
			||||||
 | 
					  delete _famiglie;
 | 
				
			||||||
  delete _benem;
 | 
					  delete _benem;
 | 
				
			||||||
  delete _donaz;
 | 
					  delete _donaz;
 | 
				
			||||||
  delete _rel;
 | 
					  delete _rel;
 | 
				
			||||||
 | 
				
			|||||||
@ -45,6 +45,7 @@
 | 
				
			|||||||
#define F_LETTINI       407
 | 
					#define F_LETTINI       407
 | 
				
			||||||
#define F_LETTFIN       408
 | 
					#define F_LETTFIN       408
 | 
				
			||||||
#define F_NOTIZIARIO    409
 | 
					#define F_NOTIZIARIO    409
 | 
				
			||||||
 | 
					#define F_PERFAMIGLIE   410
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define F_SINTETICO  501
 | 
					#define F_SINTETICO  501
 | 
				
			||||||
#define F_COMPLETO   502
 | 
					#define F_COMPLETO   502
 | 
				
			||||||
 | 
				
			|||||||
@ -415,7 +415,7 @@ BEGIN
 | 
				
			|||||||
  FLAGS "D"
 | 
					  FLAGS "D"
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GROUPBOX DLG_NULL 77 6
 | 
					GROUPBOX DLG_NULL 77 7
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 14 "Opzioni di stampa"
 | 
					  PROMPT 1 14 "Opzioni di stampa"
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
@ -497,5 +497,10 @@ BEGIN
 | 
				
			|||||||
   //PICTURE "!!"
 | 
					   //PICTURE "!!"
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BOOLEAN F_PERFAMIGLIE
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					   PROMPT 2 19 "Raggruppa per famiglie (solo etichette)"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ENDPAGE
 | 
					ENDPAGE
 | 
				
			||||||
ENDMASK
 | 
					ENDMASK
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user