99 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| // stampa allegato soci
 | |
| #include "77stba.h"
 | |
| #include "soci.h"
 | |
| 
 | |
| bool AlleSoci_filter_function(const TRelation* rel)
 | |
| { 
 | |
|   TString qual(3);               
 | |
|   qual = rel->lfile(LF_SOCI).get(SOCI_RICQUAL); 
 | |
|   return (qual=="A" || qual=="B" || qual=="C");
 | |
| }
 | |
| 
 | |
| long TAlleSoci::filtra(const long codditta)
 | |
| {
 | |
|   TString filtro(24); 
 | |
|   _codditta=codditta;
 | |
|   
 | |
|   TLocalisamfile& fl = cursor()->file(LF_SOCI);
 | |
|   TRectype da(fl.curr());
 | |
|   TRectype a(fl.curr());   
 | |
|   da.zero();
 | |
|   a.zero();
 | |
|   da.put(SOCI_CODDITTA, codditta);
 | |
|   da.put(SOCI_ATTPREC, "A");
 | |
|   da.put(SOCI_TIPOASOC, "F");
 | |
|   a.put(SOCI_CODDITTA, codditta);
 | |
|   a.put(SOCI_ATTPREC, "A");
 | |
|   a.put(SOCI_TIPOASOC, "F");
 | |
|   cursor()->setregion(da, a);
 | |
| 
 | |
|   cursor()->set_filterfunction(AlleSoci_filter_function);
 | |
|   const long items = cursor()->items();
 | |
|   return items;
 | |
| }
 | |
| 
 | |
| void TAlleSoci::set_testata(TPrinter& pr)
 | |
| {
 | |
|   TPrint_section& header = section('H', first_page);
 | |
|   header.update();
 | |
|   const int header_righe = header.height();
 | |
|   for (int i = 0; i < header_righe; i++)
 | |
|   	pr.setheaderline(i, header.row(i));	
 | |
| }
 | |
| 
 | |
| void TAlleSoci::stampa_corpo(TPrinter& pr)
 | |
| {
 | |
|   TPrint_section& body = section('B', odd_page);
 | |
| 	_nprog++;  
 | |
|   TForm_item& item_nprog = body.find_field(1);
 | |
|   TString snprog(5);
 | |
|   snprog << _nprog;
 | |
|   item_nprog.set(snprog);
 | |
|   
 | |
|   body.update();       
 | |
|   const int body_righe = body.height();
 | |
|   for (int i = 0; i < body_righe; i++)
 | |
|   {
 | |
|     pr.print(body.row(i));
 | |
|     _RigaCorr++;
 | |
|   }
 | |
|   if (usa_progind())
 | |
|     progind()->addstatus(1);
 | |
| }
 | |
|  
 | |
| bool TAlleSoci::print(const long codditta, const long NumFis, const long NumNoFis)
 | |
| {  
 | |
|   TCursor* cur = cursor();
 | |
|   TPrinter& pr = printer();
 | |
|   
 | |
|   const long numsoci = filtra(codditta);
 | |
|   if (numsoci <= 12)
 | |
|   	return FALSE;
 | |
| 
 | |
|   (*cur)=0L;  
 | |
| 	set_testata(pr);  	
 | |
|   	
 | |
|   _RigaCorr=0;
 | |
|   _nprog=0;
 | |
| 
 | |
|   for ((*cur)=0L; cur->ok(); ++(*cur))
 | |
|   	stampa_corpo(pr);       
 | |
| 	pr.formfeed();
 | |
|   close_print();                                      
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TStampaAlleSoci::user_create()
 | |
| {
 | |
| 	_form = new TAlleSoci("77AS", quadro());
 | |
| 	_form->set_cursor(_form->TForm::cursor());
 | |
| 	_cur = _form->cursor();
 | |
| 	_rel = _form->relation();
 | |
| 	return TRUE;
 | |
| }  
 | |
| 
 | |
| bool TStampaAlleSoci::user_destroy()
 | |
| {
 | |
| 	delete _form;
 | |
| 	return TRUE;
 | |
| } |