git-svn-id: svn://10.65.10.50/branches/R_10_00@22840 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			181 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <applicat.h>
 | |
| #include <automask.h>
 | |
| #include <defmask.h>
 | |
| #include <relation.h>
 | |
| #include <reprint.h>
 | |
| 
 | |
| #include "ps0920.h"
 | |
| #include "ps0920100a.h"
 | |
| 
 | |
| #include <rdoc.h>
 | |
| 
 | |
| class TMaskPs09201 : public TAutomask
 | |
| {
 | |
|   TCursor_sheet  * _sht;
 | |
| 	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;
 | |
|   TMaskPs09201();
 | |
|   virtual ~TMaskPs09201();
 | |
| };
 | |
| 
 | |
| TCursor_sheet& TMaskPs09201::sheet() const 
 | |
| { 
 | |
|   if (_sht == NULL) // Non si sa mai!
 | |
|     ((TMaskPs09201*)this)->update_sheet();
 | |
|   return *_sht;
 | |
| }
 | |
| 
 | |
| 
 | |
| TMaskPs09201::TMaskPs09201()
 | |
|             : TAutomask("ps0920100a"), _sht(NULL)
 | |
| {
 | |
| 	((TButton_field&) field(DLG_SELECT)).set_exit_key(0);
 | |
| 	_select_changed = true;
 | |
| }
 | |
| 
 | |
| TMaskPs09201::~TMaskPs09201()
 | |
| {  
 | |
| 	if (_sht != NULL)
 | |
| 		delete _sht;
 | |
| }             
 | |
| 
 | |
| bool TMaskPs09201::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | |
| {
 | |
| 	const int id = o.dlg();
 | |
| 	switch (id)
 | |
| 	{
 | |
| 		case F_NUM:
 | |
| 		case F_ANNO:
 | |
| 		case F_CODCLI:
 | |
| 			_select_changed = true;
 | |
| 			break;
 | |
| 		case DLG_SELECT:
 | |
| 			if (e == fe_button)
 | |
| 			{
 | |
| 				if (_select_changed)
 | |
| 					update_sheet();
 | |
| 				_select_changed = false;
 | |
| 				_sht->run();
 | |
| 			}
 | |
| 			break;
 | |
| 		default:
 | |
| 			break;
 | |
| 	}
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void TMaskPs09201::update_sheet()
 | |
| {
 | |
| 	
 | |
| 	if (_sht != NULL)
 | |
| 	{
 | |
| 		delete _sht;
 | |
| 		_sht = NULL;
 | |
| 	}
 | |
| 	
 | |
| 	_select_changed = false;
 | |
| 
 | |
| 	TRelation * r = new TRelation(LF_RIGHEDOC);
 | |
| 	TRectype from(r->curr());
 | |
| 	const long codcli = get_long(F_CODCLI);
 | |
| 	TString codartfrom; codartfrom.format("%03ld", codcli);
 | |
| 
 | |
| 	from.put(RDOC_CODNUM, get(F_NUM));
 | |
| 	from.put(RDOC_ANNO, get(F_ANNO));
 | |
| 	from.put(RDOC_PROVV, "D");
 | |
| 	from.put(RDOC_CODART, codartfrom);
 | |
| 
 | |
| 	TRectype to(from);
 | |
| 	
 | |
| 	TString codartto; codartto.format("%03ld", codcli + 1);
 | |
| 	to.put(RDOC_CODART, codartto);
 | |
| 	TCursor * c = new TSorted_cursor(r, "CODNUM|NDOC|NRIGA", "RIGAEVASA!=\"X\"", 2, &from, &to);
 | |
|   _sht = new TCursor_sheet(c, " |CODNUM|NDOC|NRIGA|DATACONS|CODART|DESCR", "Selezione articoli",
 | |
| 		                                    "@1|Ordine@6|N.Doc.@7|N.Riga@6|Data\nConsegna@10|Articolo@20|Descr@50",0,1);
 | |
| 	_sht->uncheck(-1);
 | |
| }
 | |
| 
 | |
| class TStampaProduzionePs0920 : public TSkeleton_application  
 | |
| {
 | |
|   virtual bool check_autorization() const { return false; }
 | |
|   virtual const char* extra_modules() const { return "ve"; }
 | |
| 
 | |
| protected:
 | |
|   virtual void main_loop();
 | |
|   virtual bool create();
 | |
| 
 | |
| public:
 | |
|   virtual ~TStampaProduzionePs0920();
 | |
| };
 | |
| 
 | |
| void TStampaProduzionePs0920::main_loop()
 | |
| {
 | |
|   TMaskPs09201 m;
 | |
| 
 | |
|   while (m.run() == K_ENTER)
 | |
|   {
 | |
| 		TCursor_sheet& s = m.sheet();
 | |
| 		
 | |
| 		if (s.one_checked())
 | |
| 		{
 | |
| 		  TReport_book book;
 | |
| 			TCursor & cur = *s.cursor();
 | |
| 			TReport rep;
 | |
| 
 | |
| 			if (m.get_bool(F_PAGEBREAK))
 | |
| 				rep.load("OrdineProdSP.rep"); 
 | |
| 			else
 | |
| 				rep.load("OrdineProd.rep"); 
 | |
| 			const long items = cur.items();
 | |
| 
 | |
| 			for (long pos = 0L; pos < items; pos++)
 | |
| 			{
 | |
| 				if (s.checked(pos))
 | |
| 				{
 | |
| 					cur = pos;
 | |
| 					const TRectype & rec = cur.curr();
 | |
| 					TRecordset & r = *rep.recordset();
 | |
| 					TVariant var;
 | |
| 
 | |
| 					var = rec.get(RDOC_CODNUM);
 | |
| 					r.set_var("#S_NUM", var);
 | |
| 					var = rec.get(RDOC_ANNO);
 | |
| 					r.set_var("#S_ANNO", var);
 | |
| 					var = rec.get(RDOC_NDOC);
 | |
| 					r.set_var("#S_NDOC", var);
 | |
| 					var = rec.get(RDOC_NRIGA);
 | |
| 					r.set_var("#S_NRIGA", var);
 | |
| 					var = rec.get(RDOC_IDRIGA);
 | |
| 					r.set_var("#S_IDRIGA", var);
 | |
| 					book.add(rep);
 | |
| 				}
 | |
| 			}
 | |
| 			book.print_or_preview();
 | |
| 		}
 | |
|   }
 | |
| }
 | |
| 
 | |
| bool TStampaProduzionePs0920::create()
 | |
| {
 | |
| 	return TSkeleton_application:: create();
 | |
| }
 | |
| 
 | |
| TStampaProduzionePs0920::~TStampaProduzionePs0920()
 | |
| {
 | |
| }
 | |
| 
 | |
| TStampaProduzionePs0920 & app() { return (TStampaProduzionePs0920&) main_app();}
 | |
| 
 | |
| int ps0920100(int argc, char* argv[])
 | |
| {
 | |
|   TStampaProduzionePs0920 a;
 | |
|   a.run(argc, argv, "Stampa ordini di produzione");
 | |
|   return 0;
 | |
| }
 |