Files correlati :scp0.exe Ricompilazione Demo : [ ] Commento :personalizz. giuntoli git-svn-id: svn://10.65.10.50/trunk@11573 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 "scp0.h"
 | 
						|
#include "scp0100.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("scp0100a");
 | 
						|
  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("scp0100.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 = "oasis.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 scp0100(int argc, char** argv)
 | 
						|
{
 | 
						|
  TPartite2Euroasis app;
 | 
						|
  app.run(argc, argv, "Esportazione scadenzario");    
 | 
						|
  return 0;
 | 
						|
}
 |