Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 650 git-svn-id: svn://10.65.10.50/trunk@14148 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			239 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			239 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <applicat.h>
 | |
| #include <automask.h>
 | |
| #include <defmask.h>
 | |
| #include <relation.h>
 | |
| #include <reprint.h>
 | |
| 
 | |
| #include "ps0872.h"
 | |
| #include "ps0872200a.h"
 | |
| 
 | |
| class TReportPs08722 : public TReport
 | |
| {
 | |
| protected:
 | |
|   virtual bool get_usr_val(const TString& name, TVariant& var) const;
 | |
| };
 | |
| 
 | |
| class TMaskPs08722 : public TAutomask
 | |
| {
 | |
|   TCursor_sheet  * _sht;
 | |
|   TCursor        * _cur;
 | |
| 	TReport        _rep;
 | |
| 	bool           _select_changed;
 | |
| 
 | |
| protected:
 | |
|   virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | |
| 	void update_sheet();
 | |
| 
 | |
| public:
 | |
| 	TCursor_sheet & sheet() const { return *_sht;}
 | |
|   TMaskPs08722();
 | |
|   virtual ~TMaskPs08722();
 | |
| };
 | |
| 
 | |
| TMaskPs08722::TMaskPs08722()
 | |
|              : TAutomask("ps0872200a"), _sht(NULL), _cur(NULL)
 | |
| {
 | |
|   // crea relazioni, cursori e cursor_sheets
 | |
| 	update_sheet();
 | |
| 	((TButton_field&) field(DLG_SELECT)).set_exit_key(0);
 | |
| 	_select_changed = false;
 | |
| }
 | |
| 
 | |
| TMaskPs08722::~TMaskPs08722()
 | |
| {  
 | |
| 	if (_sht != NULL)
 | |
| 		delete _sht;
 | |
| }             
 | |
| 
 | |
| bool TMaskPs08722::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | |
| {
 | |
| 	const int id = o.dlg();
 | |
| 	switch (id)
 | |
| 	{
 | |
| 		case F_NUM:
 | |
| 		case F_DACLI:
 | |
| 		case F_DAL:
 | |
| 			if (e == fe_modify)
 | |
| 				_select_changed = true;
 | |
| 			break;
 | |
| 		case F_ACLI:
 | |
| 			if (e == fe_close)
 | |
| 			{
 | |
| 				const long dacli = o.mask().get_long(F_DACLI);
 | |
| 				const long acli = atol(o.get());
 | |
| 				
 | |
| 				if (acli > 0  && acli < dacli)
 | |
| 					return error_box("Inserire un codice cliente maggiore o uguale a quello iniziale");
 | |
| 			}
 | |
| 			else 
 | |
| 				if (e == fe_modify)
 | |
| 					_select_changed = true;
 | |
| 			break;
 | |
| 		case F_AL:
 | |
| 			if (e == fe_close)
 | |
| 			{
 | |
| 				const TDate dal(o.mask().get_date(F_DAL));
 | |
| 				const TDate al(o.get());
 | |
| 				
 | |
| 				if (al.ok() && al < dal)
 | |
| 					return error_box("Inserire una data maggiore o uguale alla data iniziale");
 | |
| 			}
 | |
| 			else 
 | |
| 				if (e == fe_modify)
 | |
| 					_select_changed = true;
 | |
| 			break;
 | |
| 		case F_REPORT:
 | |
| 			if (e == fe_modify)
 | |
| 				enable(DLG_SELECT, _sht != NULL && o.get() == "StampaSchedProd");
 | |
| 			break;
 | |
| 		case DLG_SELECT:
 | |
| 			if (e == fe_button)
 | |
| 			{
 | |
| 				if (_select_changed)
 | |
| 					update_sheet();
 | |
| 				_select_changed = false;
 | |
| 				_sht->run();
 | |
| 			}
 | |
| 			break;
 | |
| 		default:
 | |
| 			break;
 | |
| 	}
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void TMaskPs08722::update_sheet()
 | |
| {
 | |
| 	
 | |
| 	if (_sht != NULL)
 | |
| 	{
 | |
| 		delete _sht;
 | |
| 		_sht = NULL;
 | |
| 	}
 | |
| 	else
 | |
| 	{
 | |
| 		TFilename name("StampaSchedProd.rep");
 | |
| 
 | |
| 		name.custom_path();
 | |
| 		_rep.load(name);
 | |
| 	}
 | |
| 	
 | |
| 	TISAM_recordset * r = (TISAM_recordset *) _rep.recordset();
 | |
| 
 | |
| 	if (r != NULL)
 | |
| 	{
 | |
| 		TVariant var;
 | |
| 
 | |
| 		var = get(F_NUM);
 | |
| 		r->set_var("#NUM", var);
 | |
| 		var = get(F_DACLI);
 | |
| 		r->set_var("#DACLI", var);
 | |
| 		var = get(F_ACLI);
 | |
| 		r->set_var("#ACLI", var);
 | |
| 		var = get_date(F_DAL);
 | |
| 		if (!var.as_date().ok())
 | |
| 			var = botime;
 | |
| 		r->set_var("#DAL", var);
 | |
| 		var = get_date(F_AL);
 | |
| 		if (!var.as_date().ok())
 | |
| 			var = eotime;
 | |
| 		r->set_var("#AL", var);
 | |
| 		var = "F";
 | |
| 		r->set_var("#F", var);
 | |
| 	}
 | |
| 	_select_changed = false;
 | |
| 	_sht = new TCursor_sheet(r->cursor(), " |33->DATADOC|NDOC|CODARTMAG|20->RAGSOC", "Selezione clienti per codice",
 | |
| 		                                    "@1|Data@10|Numero|Articolo@20|Ragione Sociale@50",0,1);
 | |
| 	_sht->check(-1);
 | |
| }
 | |
| 
 | |
| class TStampaProduzionePs0872 : public TSkeleton_application  
 | |
| {
 | |
|   TMaskPs08722 * _mask;
 | |
| 	virtual bool check_autorization() const {return false;}
 | |
|   virtual const char * extra_modules() const {return "ve";}
 | |
| 
 | |
| 
 | |
| protected:
 | |
|   virtual void main_loop();
 | |
|   virtual bool create();
 | |
| 
 | |
| public:
 | |
|   const TMaskPs08722 & mask() const {return *_mask;}
 | |
|   virtual ~TStampaProduzionePs0872();
 | |
| };
 | |
| 
 | |
| void TStampaProduzionePs0872::main_loop()
 | |
| {
 | |
|   while (_mask->run() == K_ENTER)
 | |
|   {
 | |
| 	  TReport_book book;
 | |
|     TReportPs08722 rep; 
 | |
| 		TFilename report_name(_mask->get(F_REPORT));
 | |
| 
 | |
| 		report_name.ext("rep");
 | |
| 		report_name.custom_path();
 | |
|     if (rep.load(report_name))
 | |
| 		{
 | |
| 	    TRecordset * r = rep.recordset();
 | |
| 
 | |
|       if (r != NULL)
 | |
| 			{
 | |
| 				TVariant var;
 | |
| 
 | |
| 				var = _mask->get(F_NUM);
 | |
| 				r->set_var("#NUM", var);
 | |
| 				var = _mask->get(F_DACLI);
 | |
| 				r->set_var("#DACLI", var);
 | |
| 				var = _mask->get(F_ACLI);
 | |
| 				r->set_var("#ACLI", var);
 | |
| 				var = _mask->get_date(F_DAL);
 | |
| 				if (!var.as_date().ok())
 | |
| 					var = botime;
 | |
| 				r->set_var("#DAL", var);
 | |
| 				var = _mask->get_date(F_AL);
 | |
| 				if (!var.as_date().ok())
 | |
| 					var = eotime;
 | |
| 				r->set_var("#AL", var);
 | |
| 				var = "F";
 | |
| 				r->set_var("#F", var);
 | |
| 			}
 | |
| 			book.add(rep);
 | |
| 		  if (book.pages() > 0)
 | |
| 			  book.print_or_preview();
 | |
| 		}
 | |
|   }
 | |
| }
 | |
| 
 | |
| bool TStampaProduzionePs0872::create()
 | |
| {
 | |
| 	_mask = new TMaskPs08722;
 | |
| 	return TSkeleton_application:: create();
 | |
| }
 | |
| 
 | |
| TStampaProduzionePs0872::~TStampaProduzionePs0872()
 | |
| {
 | |
| 	delete _mask;
 | |
| }
 | |
| 
 | |
| TStampaProduzionePs0872 & app() { return (TStampaProduzionePs0872&) main_app();}
 | |
| 
 | |
| bool TReportPs08722::get_usr_val(const TString& name, TVariant& var) const
 | |
| {
 | |
| 	if (name == "#TO_PRINT")
 | |
| 	{
 | |
| 		TISAM_recordset * r = (TISAM_recordset *) recordset();
 | |
| 		const long pos = r->cursor()->pos();
 | |
| 
 | |
| 		var = (long) (app().mask().sheet().checked(pos) ? 1 : 0);
 | |
| 		return true;
 | |
| 	}
 | |
| 	return TReport::get_usr_val(name, var);
 | |
| }
 | |
| 
 | |
| int ps0872200(int argc, char* argv[])
 | |
| {
 | |
|   TStampaProduzionePs0872 a;
 | |
|   a.run(argc, argv, "Stampa Produzione RealPlast");
 | |
|   return 0;
 | |
| }
 |