Files correlati : ve6.exe Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 979 git-svn-id: svn://10.65.10.50/trunk@15623 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			162 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <applicat.h>
 | |
| #include <automask.h>
 | |
| #include <execp.h>
 | |
| #include <progind.h>
 | |
| #include <recset.h>
 | |
| #include <relation.h>
 | |
| #include <reprint.h>
 | |
| #include <tabutil.h>
 | |
| 
 | |
| #include "../cg/cg2103.h"
 | |
| #include "../gv/gvlib.h"
 | |
| #include "velib.h"
 | |
| #include "velib07.h"
 | |
| 
 | |
| #include <nditte.h>
 | |
| 
 | |
| #include "ve8.h"
 | |
| #include "ve8100a.h"
 | |
| 
 | |
| ////////////////////////////////////////////////////////
 | |
| //	MASCHERA
 | |
| ////////////////////////////////////////////////////////
 | |
| class TListaRitFisc_mask : public TAutomask
 | |
| {
 | |
| protected:
 | |
|   bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | |
| 
 | |
| public:
 | |
|   TListaRitFisc_mask();
 | |
|   virtual ~TListaRitFisc_mask() {}
 | |
| };
 | |
| 
 | |
| bool TListaRitFisc_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | |
| { 
 | |
|   bool ok = true;
 | |
| 	/*
 | |
|   switch (o.dlg())
 | |
|   {
 | |
| 	case :
 | |
|     if (e == fe_init || e == fe_modify)
 | |
|     {
 | |
|     }
 | |
|     break;
 | |
|   default: break;
 | |
|   }
 | |
| 	*/
 | |
|   return ok;
 | |
| }
 | |
| 
 | |
| TListaRitFisc_mask::TListaRitFisc_mask():TAutomask("ve8100")
 | |
| {
 | |
| }
 | |
| 
 | |
| ////////////////////////////////////////////////////////
 | |
| //	APPLICAZIONE
 | |
| ////////////////////////////////////////////////////////
 | |
| class TListaRitFisc : public TSkeleton_application
 | |
| {
 | |
| protected:
 | |
|   virtual void main_loop();
 | |
| public:
 | |
| 	bool crea_righe(const TListaRitFisc_mask& m) const;
 | |
| };
 | |
| 
 | |
| 
 | |
| bool TListaRitFisc::crea_righe(const TListaRitFisc_mask& m) const
 | |
| {
 | |
|   // cerca abi e cab della ditta
 | |
|   const TString& abi = m.get(F_CODABI);
 | |
|   const TString& cab = m.get(F_CODCAB);
 | |
| 	const TDate datascad = m.get(F_DATASCAD);
 | |
| 
 | |
| 	int err=NOERR;
 | |
| 	TLocalisamfile righe(LF_RIGHEF24);
 | |
| 	TDocument_recordset rdoc("USE RDOC\nSELECT (TIPORIGA=='04')&&(110@->S10!='')&&(33.NDOC>=#DANUM)&&(33.NDOC<=#ANUM)\nJOIN SPP ALIAS 110 INTO CODTAB=CODART\nJOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM=CODNUM NDOC=NDOC\nFROM CODNUM=#NUM\nTO CODNUM=#NUM");
 | |
| 	TVariant var;
 | |
| 	var = m.get(F_NUMINI);
 | |
| 	rdoc.set_var("#DANUM", var);
 | |
| 	var = m.get(F_NUMFIN);
 | |
| 	rdoc.set_var("#ANUM", var);
 | |
| 	var = m.get(F_CODNUM);
 | |
| 	rdoc.set_var("#NUM", var);
 | |
| 	// calcolo importo e chiedo conferma all'operatore
 | |
| 	const TRecordset& curr = rdoc;
 | |
| 	real totale = ZERO;
 | |
| 	for (bool ok = rdoc.move_first(); ok; ok = rdoc.move_next())
 | |
| 		totale += curr.get("RDOC.RITENUTA").as_real();
 | |
| 	err = NOERR;
 | |
| 	if (yesno_box("Verranno generate %d righe per un importo di %s euro. Si desidera creare le righe?", rdoc.items(), totale.string()))
 | |
| 	{
 | |
| 		long cont = get_next_progr_f24();
 | |
| 		long numf24 = get_next_f24();
 | |
| 		// trucco per poter usare la get (nei TDocument_recordset la get ha 2 par. ed e' protected!)
 | |
| 		for (bool ok1 = rdoc.move_first(); ok1; ok1 = rdoc.move_next())
 | |
| 		{
 | |
| 			righe.zero();
 | |
| 			righe.put("PROGR", cont++);
 | |
| 			righe.put("F24", numf24++);	
 | |
| 			righe.put("TRIBUTO", curr.get("SPP.S10").as_string());
 | |
| 			righe.put("TIPOINTEST", 'C');
 | |
| 			righe.put("INTEST", curr.get("DOC.CODCF").as_int());
 | |
| 			righe.put("DESCR", "Riga generata");
 | |
| 			righe.put("IMPORTODEB", curr.get("RDOC.RITENUTA").as_real());
 | |
| 			righe.put("ABI", abi);
 | |
| 			righe.put("CAB", cab);
 | |
| 			righe.put("DATASCAD", datascad);
 | |
| 			err = righe.write();
 | |
| 		}	
 | |
| 	}
 | |
| 	return (err==NOERR);
 | |
| }
 | |
| 
 | |
| void TListaRitFisc::main_loop()
 | |
| {
 | |
| 	TListaRitFisc_mask m;
 | |
|   // cerca abi e cab della ditta
 | |
|   const TString& abi = prefix().firm().get(NDT_ABIBAN);
 | |
|   const TString& cab = prefix().firm().get(NDT_CABBAN);
 | |
| 	m.set(F_CODABI, abi);
 | |
| 	m.set(F_CODCAB, cab);
 | |
| 	KEY key = K_ENTER;
 | |
|   while (key != K_QUIT)
 | |
|   {
 | |
|     key = m.run();
 | |
| 		switch (key)
 | |
| 		{
 | |
| 			case K_SAVE:
 | |
| 				crea_righe(m);
 | |
| 			break;
 | |
| 			case K_QUIT:
 | |
| 			break;
 | |
| 			case K_ENTER:
 | |
| 			{
 | |
| 				//report e book dei report
 | |
| 				TDocument_report rep;
 | |
| 				rep.load("ve8100a");
 | |
| 				TRecordset * r = rep.recordset();
 | |
| 				if (r != NULL)
 | |
| 				{
 | |
| 					TVariant var;
 | |
| 					var = m.get(F_NUMINI);
 | |
| 					r->set_var("#DANUM", var);
 | |
| 					var = m.get(F_NUMFIN);
 | |
| 					r->set_var("#ANUM", var);
 | |
| 					var = m.get(F_CODNUM);
 | |
| 					r->set_var("#NUM", var);
 | |
| 				}
 | |
| 				TReport_book book;
 | |
| 				book.add(rep);
 | |
| 				book.print_or_preview();	//stampa il book dei report
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| int ve8100(int argc, char* argv[])
 | |
| {
 | |
|   TListaRitFisc a;
 | |
|   a.run(argc, argv, TR("Lista ritenute per F24"));
 | |
|   return 0;
 | |
| } |