Files correlati : Quelli delle patch 1.7 Ricompilazione Demo : [ ] Commento : Riportata la versione 1.7 A.G.A. e Partners alla patch 530 git-svn-id: svn://10.65.10.50/trunk@11331 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			186 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			5.8 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();
 | 
						|
 | 
						|
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();
 | 
						|
}
 | 
						|
 | 
						|
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->PAGATA != \"X\" && 29->TIPOC == \"C\"", 2);  // verificare la chiave 
 | 
						|
	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"; 
 | 
						|
  	scadtrr.ext("trr");
 | 
						|
	  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 from(LF_SCADENZE), to(LF_SCADENZE);
 | 
						|
	  //from.put(SCAD_DATASCAD, _datascadi);
 | 
						|
	  //to.put(SCAD_DATASCAD, _datascadf);
 | 
						|
	  //_cur->setregion(from, to);       
 | 
						|
	  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);
 | 
						|
			TPartita partita(recpartita);              
 | 
						|
			const int nriga = recscad.get_int(SCAD_NRIGA);
 | 
						|
			const int nrata = recscad.get_int(SCAD_NRATA); 
 | 
						|
			TRiga_scadenze scad = partita.rata(nriga, nrata);
 | 
						|
			TRiga_partite rigapartite = scad.riga();
 | 
						|
		  const int nrigp = rigapartite.get_int(PART_NRIGA);
 | 
						|
		  const char sez = rigapartite.sezione();
 | 
						|
  		const int  last = partita.last();     
 | 
						|
  		const TDate datapag = rigapartite.get_date(PART_DATAPAG);
 | 
						|
  		const bool rischio = dataanalisi != dataesposto; 
 | 
						|
      //const bool valuta = FALSE;
 | 
						|
      //const TRectype & pag = scad.row(nrigp);
 | 
						|
      //const TImporto imp(sez, pag.get_real(valuta ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO));
 | 
						|
      TDate data(scad.get(SCAD_DATASCAD));
 | 
						|
      const int lasts = scad.last();
 | 
						|
      bool esposto = FALSE;
 | 
						|
			bool sbf = FALSE;          
 | 
						|
      bool found_pag  = TRUE;
 | 
						|
      for (int p = scad.first(); p <= lasts; p = scad.succ(p)) 
 | 
						|
      {            
 | 
						|
        if (p != nrigp)
 | 
						|
        {             
 | 
						|
          const TRiga_partite & prow = partita.riga(p);
 | 
						|
          const int tp = prow.get_int(PART_TIPOPAG);
 | 
						|
          if (tp >= 2 && tp <= 7)
 | 
						|
          {
 | 
						|
            const TDate dataprow = prow.get(PART_DATAPAG);
 | 
						|
            if (dataprow < datapag)
 | 
						|
            {
 | 
						|
              data = datapag;
 | 
						|
              break;
 | 
						|
            }  
 | 
						|
          }
 | 
						|
        }
 | 
						|
      } 
 | 
						|
      if (rischio && data > dataesposto && data <= dataanalisi)
 | 
						|
      {
 | 
						|
        esposto = TRUE; 
 | 
						|
        sbf = TRUE;
 | 
						|
      }
 | 
						|
      else
 | 
						|
        if (data > dataanalisi)
 | 
						|
          esposto = TRUE;
 | 
						|
			TImporto pagato = scad.importo_pagato(FALSE);
 | 
						|
    	if (!scad.chiusa() || esposto && !pagato.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);
 | 
						|
				const int tipopag = recscad.get_int(SCAD_TIPOPAG);
 | 
						|
				if (tipopag >= 2 && tipopag <= 7)
 | 
						|
					filescad.put("TIPOPAG", "RB");
 | 
						|
				else
 | 
						|
					filescad.put("TIPOPAG", "RD");					
 | 
						|
				filescad.put("DATASCAD", recscad.get(SCAD_DATASCAD));
 | 
						|
				filescad.put("IMPORTO", importo.valore());
 | 
						|
				filescad.put("ESPOSTO", pagato.valore());
 | 
						|
				err = filescad.write();	
 | 
						|
				//if (err != NOERR)
 | 
						|
				//	error_box("Errore %d in scrittura file dbf", err);
 | 
						|
			}	
 | 
						|
		}	  
 | 
						|
		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;
 | 
						|
}
 |