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
		
			
				
	
	
		
			187 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <config.h>
 | |
| #include <currency.h>
 | |
| #include <execp.h>
 | |
| #include <mask.h>
 | |
| #include <printapp.h>
 | |
| #include <progind.h>
 | |
| #include <utility.h>
 | |
| 
 | |
| #include "../cg/cgsaldac.h"
 | |
| #include "../cg/cglib02.h"
 | |
| #include "pd1890.h"
 | |
| #include "pd1890100.h"    
 | |
| 
 | |
| #include <clifo.h> 
 | |
| #include <nditte.h>
 | |
| #include <pconti.h>
 | |
| 
 | |
| class TPartite2Euroasis : public TSkeleton_application
 | |
| { 
 | |
|   TMask* _msk;
 | |
|                                             
 | |
| protected:
 | |
|   virtual bool create();
 | |
|   virtual bool destroy();  
 | |
|   virtual void main_loop();
 | |
|   int calcola_esposto(const TRiga_scadenze& scad, const TDate& dataanalisi, const TDate& dataesposto, 
 | |
|   										TDate& datascad, TImporto& esposto) const;
 | |
| 
 | |
| public:
 | |
|   TMask& mask() { return *_msk; }
 | |
|   TPartite2Euroasis() {};
 | |
|   virtual ~TPartite2Euroasis() {}
 | |
| };
 | |
| 
 | |
| bool TPartite2Euroasis::create()
 | |
| {      
 | |
| 	open_files(LF_SCADENZE, LF_PARTITE, LF_CLIFO, 0);
 | |
| 	_msk = new TMask("pd1890100a");
 | |
|   return TSkeleton_application::create();
 | |
| }
 | |
| 
 | |
| bool TPartite2Euroasis::destroy()
 | |
| { 
 | |
|   delete _msk;
 | |
|   return TSkeleton_application::destroy();
 | |
| }
 | |
| 
 | |
| int TPartite2Euroasis::calcola_esposto(const TRiga_scadenze& scad, const TDate& dataanalisi, const TDate& dataesposto, 
 | |
| 																			TDate& datascad, TImporto& esposto) const
 | |
| {     
 | |
| 	const bool rischio = dataanalisi != dataesposto;
 | |
| 	int tipo = scad.get_int(SCAD_TIPOPAG);
 | |
| 	datascad = scad.get_date(SCAD_DATASCAD);
 | |
| 	for (int i=scad.last(); i>0; i= scad.pred(i))
 | |
| 	{
 | |
| 		const TRiga_partite& pag = scad.partita().riga(i);
 | |
| 		const int tp = pag.get_int(PART_TIPOPAG);
 | |
| 		if (tp >= 2 && tp <= 7)
 | |
| 		{
 | |
| 			tipo = tp;
 | |
| 			const TDate datapag = pag.get_date(PART_DATAPAG);
 | |
| 			bool is_esposto = FALSE;
 | |
|       if (rischio && datapag > dataesposto && datapag <= dataanalisi)
 | |
|         is_esposto = TRUE; 
 | |
|       else
 | |
|         if (datapag > dataanalisi)
 | |
|           is_esposto = TRUE;
 | |
| 			if (is_esposto)
 | |
| 			{        
 | |
| 				const char sez = pag.sezione();
 | |
|         const TImporto imp(sez, scad.row(i).get_real(PAGSCA_IMPORTO));
 | |
|         esposto+=imp;
 | |
| 			}
 | |
| 			if (datapag > datascad)
 | |
| 				datascad = datapag;
 | |
| 		}
 | |
| 	}
 | |
| 	return tipo;
 | |
| }                                                     
 | |
| 
 | |
| void TPartite2Euroasis::main_loop()
 | |
| {                  
 | |
| 	TRelation rel(LF_SCADENZE);
 | |
| 	rel.add(LF_PARTITE,"TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO=ANNO|NUMPART==NUMPART",1,0);
 | |
| 	rel.add(LF_PAGSCA, "TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO==ANNO|NUMPART==NUMPART|NRIGA==NRIGA|NRATA==NRATA");
 | |
| 	TCursor cur(&rel, "29->TIPOC == \"C\"", 2);  // verificare la chiave 
 | |
|   TMask& m = mask();
 | |
| 	TConfig config("pd1890100.ini");
 | |
| 	TString80 exe = config.get("EXE");
 | |
| 	m.set(F_PATH, config.get("PATH"));
 | |
|   while (m.run() != K_QUIT)
 | |
|   {
 | |
|     const TString& path = m.get(F_PATH);
 | |
|     config.set("PATH", path);
 | |
| 	  TFilename scadname = path;
 | |
| 	  scadname.ext("dbf");
 | |
|   	TFilename scadtrr = "pd1890.trr"; 
 | |
|   	scadtrr.custom_path();
 | |
| 	  TExternisamfile filescad(scadname, scadtrr);
 | |
| 		filescad.zap();
 | |
|     const TDate oggi(TODAY);
 | |
|     TString16 ora;
 | |
| 	  time_t tempo; 
 | |
|   	time(&tempo);
 | |
|   	const struct tm* d = localtime(&tempo);
 | |
|   	ora.format("%02d:%02d:%02d", d->tm_hour, d->tm_min, d->tm_sec);
 | |
|     const TDate dataanalisi = m.get_date(F_DATA);
 | |
|     const int giorni = m.get_int(F_GIORNI);      
 | |
|     const TDate dataesposto = dataanalisi - (long) giorni;
 | |
| 	  TRectype& recscad = cur.curr();
 | |
| 	  const TRectype& recpartita = cur.curr(LF_PARTITE);
 | |
| 	  const long items = cur.items();
 | |
| 	  TProgind p(items, "Elaborazione scadenze in corso ...", TRUE, TRUE, 10);
 | |
| 	  p.setstatus(1);
 | |
| 	  int err = NOERR;
 | |
| 	  
 | |
| 		for (cur=0; cur.pos()<items && !p.iscancelled() && err==NOERR; ++(cur))    
 | |
| 		{
 | |
| 			p.addstatus(1);        
 | |
| 			const int nriga = recscad.get_int(SCAD_NRIGA);
 | |
| 			const int nrata = recscad.get_int(SCAD_NRATA);
 | |
| 			
 | |
| 			const long codcli = recscad.get_long(SCAD_SOTTOCONTO);
 | |
| 			if (codcli == 11062)
 | |
| 			{
 | |
| 				int i = 0;
 | |
| 				i++;
 | |
| 			}	
 | |
| 						
 | |
| 			TPartita partita(recpartita);
 | |
| 			const TRiga_scadenze& scad = partita.rata(nriga, nrata);
 | |
| 			const TRiga_partite& rigapartite = scad.riga();
 | |
|       TDate datascad = scad.get(SCAD_DATASCAD);
 | |
|       TImporto esposto;
 | |
|       const int tipop = calcola_esposto(scad, dataanalisi, dataesposto, datascad, esposto);
 | |
|     	if (!scad.chiusa() || !esposto.is_zero())
 | |
| 			{
 | |
| 				TImporto importo = scad.residuo(FALSE);
 | |
| 				importo.normalize('D');                                                
 | |
| 				filescad.zero();
 | |
| 				filescad.put("DATAGEN", oggi); 
 | |
| 				filescad.put("ORAGEN", ora); 
 | |
| 				filescad.put("GIORNI", giorni); 
 | |
| 				filescad.put("DATA", dataanalisi);
 | |
| 				filescad.put("CLIENTE", recscad.get(SCAD_SOTTOCONTO));
 | |
| 				TString16 tipodoc = "  ";
 | |
| 				if (rigapartite.is_fattura())
 | |
| 					tipodoc = "FV";
 | |
| 				else if	(rigapartite.is_nota_credito())
 | |
| 					tipodoc = "NC";
 | |
| 				filescad.put("TIPODOC", tipodoc);
 | |
| 				filescad.put("NUMDOC", recpartita.get(PART_NUMDOC));
 | |
| 				TString16 strpartita = recpartita.get(PART_ANNO);
 | |
| 				strpartita << "/";
 | |
| 				strpartita << recpartita.get(PART_NUMPART);
 | |
| 				filescad.put("PARTITA", strpartita);
 | |
| 				if (tipop >= 2 && tipop <= 7)
 | |
| 					filescad.put("TIPOPAG", "RB");
 | |
| 				else
 | |
| 					filescad.put("TIPOPAG", "RD");					
 | |
| 				filescad.put("DATASCAD", datascad);
 | |
| 				filescad.put("IMPORTO", importo.valore());
 | |
| 				filescad.put("ESPOSTO", esposto.valore());
 | |
| 				err = filescad.write();	
 | |
| 			}	
 | |
| 		}	  
 | |
| 		
 | |
| 		if (err == NOERR)
 | |
| 		{
 | |
| 			if (exe.not_empty())
 | |
| 			{
 | |
| 				TExternal_app oasis(exe);
 | |
| 				if (oasis.can_run())
 | |
| 					oasis.run();
 | |
| 			}	
 | |
| 		}
 | |
| 		else
 | |
| 			error_box("Errore %d in scrittura file dbf. Elaborazione non terminata.", err);	
 | |
|   }
 | |
| }                
 | |
| int pd1890100(int argc, char** argv)
 | |
| {
 | |
|   TPartite2Euroasis app;
 | |
|   app.run(argc, argv, "Esportazione scadenzario");    
 | |
|   return 0;
 | |
| }
 |