Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento : Riportata la versione 3.2 patch 1272 git-svn-id: svn://10.65.10.50/trunk@17725 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			362 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			362 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <applicat.h>
 | 
						|
#include <automask.h>
 | 
						|
#include <execp.h>
 | 
						|
#include <progind.h>
 | 
						|
#include <reprint.h>
 | 
						|
#include <reputils.h>
 | 
						|
#include <utility.h>
 | 
						|
 | 
						|
#include "pg0001.h"
 | 
						|
#include "pg0001600a.h"
 | 
						|
 | 
						|
#include "textset.h"
 | 
						|
 | 
						|
 | 
						|
#include "clifo.h"
 | 
						|
#include "cfven.h"
 | 
						|
#include "comuni.h"
 | 
						|
#include "doc.h"
 | 
						|
#include "rdoc.h"
 | 
						|
 | 
						|
#include "..\cg\cglib01.h"
 | 
						|
#include "..\ve\velib.h"
 | 
						|
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TCLienti_textset
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TClienti_recset : public TAS400_recordset
 | 
						|
{
 | 
						|
	TAssoc_array _index;
 | 
						|
 | 
						|
protected:
 | 
						|
  void add_field(const char* name = "Filler", char tipo = 'a', int len = 0, int from = -1, 
 | 
						|
								 const char* def = NULL);
 | 
						|
 | 
						|
public:
 | 
						|
  TClienti_recset(const char * query);
 | 
						|
};
 | 
						|
 | 
						|
void TClienti_recset::add_field(const char* name, char tipo, int len, int from, 
 | 
						|
								 const char* def)
 | 
						|
{
 | 
						|
	const bool required = false;
 | 
						|
  const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
 | 
						|
  const int pos = from - 1;
 | 
						|
  if (def && *def)
 | 
						|
  {
 | 
						|
    CHECKS(def == NULL || (int)strlen(def) <= len, "Invalid default value ", def);
 | 
						|
    TVariant var(def); var.convert_to(t);
 | 
						|
    create_field(name, pos, len, t, required, var);
 | 
						|
  }
 | 
						|
  else
 | 
						|
    create_field(name, pos, len, t, required);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
TClienti_recset::TClienti_recset(const char * query)
 | 
						|
             : TAS400_recordset(TString("AS400(2138)\n") << query)
 | 
						|
{
 | 
						|
  const char a = 'a';
 | 
						|
  const char n = 'n';
 | 
						|
  const bool o = true;
 | 
						|
  const bool f = false;
 | 
						|
  
 | 
						|
	add_field("FLD001",	n,	4,	1); 	// 	codice azienda
 | 
						|
	add_field("FLD002",	a,	2,	5); 	// 	filiale
 | 
						|
	add_field("FLD003",	a,	1,	7); 	// 	stato record se A annullata
 | 
						|
	add_field(CLI_TIPOPERS,	n,	1,	8); 	// 	società = 2 persona fisica = 1
 | 
						|
	add_field(CLI_RAGSOC,	a,	45,	9); 	// 	Ragione sociale
 | 
						|
	add_field("FLD006",	a,	30,	54); 	// 	indirizzo
 | 
						|
	add_field("FLD007",	a,	25,	84); 	// 	Comune di residenza
 | 
						|
	add_field("FLD008",	a,	2,	109); // 	Provincia di residenza
 | 
						|
	add_field("FLD009",	a,	5,	121); // 	C.a.p.
 | 
						|
	add_field(CLI_COFI,	a,	16,	126); // 	Codice fiscale o partita I.v.a
 | 
						|
	add_field(CLI_PAIV,	a,	11,	142); // 	Partita I.v.a.
 | 
						|
	add_field("FLD012",	a,	30,	153); // 	Indirizzo domicilio fiscale
 | 
						|
	add_field("FLD013",	a,	25,	183); // 	Comune domicilio fiscale
 | 
						|
	add_field("FLD014",	a,	2,	208); // 	Provincia domicilio fiscale
 | 
						|
	add_field("FLD015",	a,	5,	220); // 	C.a.p. domicilio fiscale
 | 
						|
	add_field("FLD016",	a,	1,	241); // 	Sesso
 | 
						|
	add_field("FLD017",	a,	4,	242); //	anno di nascita 	o costituzione
 | 
						|
	add_field("FLD018",	a,	2,	246); //	mese di nascita 	o costituzione
 | 
						|
	add_field("FLD019",	a,	2,	248); //	giorno di nascita 	o costituzione
 | 
						|
	add_field("FLD020",	a,	25,	250); //	comune di nascita 	o costituzione
 | 
						|
	add_field("FLD021",	a,	2,	275); //	provincia di nascita 	o costituzione
 | 
						|
	add_field("FLD022",	a,	20,	277); // 	Cognome ditta individuale
 | 
						|
	add_field("FLD023",	a,	15,	297); // 	Nome ditta individuale
 | 
						|
	add_field("FLD024",	a,	30,	312); // 	Indirizzo domicilio fiscale
 | 
						|
	add_field("FLD025",	a,	23,	342); // 	Comune domicilio fiscale
 | 
						|
	add_field("FLD026",	a,	5,	375); // 	C.a.p. domicilio fiscale
 | 
						|
	add_field(CLI_INDCF,	a,	30,	394); // 	Indirizzo sede legale
 | 
						|
	add_field(CLI_COMCF,	a,	25,	424); // 	comune sede legale
 | 
						|
	add_field("FLD029",	a,	2,	449); // 	provincia sede legale
 | 
						|
	add_field(CLI_CAPCF,	a,	5,	461); // 	c..a.p. sede legale
 | 
						|
	add_field(CLI_PTEL,	a,	4,	466); // 	prefisso telefonico sede legale
 | 
						|
	add_field(CLI_TEL,	a,	10,	470); // 	numero telefonico sede legale
 | 
						|
	add_field("FLD033",	a,	2,	480); // 	provincia costituzione
 | 
						|
	add_field("FLD034",	n,	1,	494); //	Domicilio fiscale diverso da legale se c'è 1 è diverso 0 è uguale}
 | 
						|
	add_field("FILLER",	n,	1642,	495); //	Domicilio fiscale diverso da legale se c'è 1 è diverso 0 è uguale}
 | 
						|
}
 | 
						|
 | 
						|
// TAutomask
 | 
						|
 | 
						|
class TPaghe2mov_mask : public TAutomask
 | 
						|
{
 | 
						|
  void serialize(bool bSave);
 | 
						|
protected:
 | 
						|
  bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						|
public:
 | 
						|
  TPaghe2mov_mask();
 | 
						|
  virtual ~TPaghe2mov_mask();
 | 
						|
};
 | 
						|
 | 
						|
TPaghe2mov_mask::TPaghe2mov_mask() : TAutomask("pg0001600a")
 | 
						|
{
 | 
						|
  serialize(false);
 | 
						|
}
 | 
						|
 | 
						|
TPaghe2mov_mask::~TPaghe2mov_mask()
 | 
						|
{
 | 
						|
  serialize(true);
 | 
						|
}
 | 
						|
  
 | 
						|
bool TPaghe2mov_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
 | 
						|
{ 
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
void TPaghe2mov_mask::serialize(bool bSave)
 | 
						|
{
 | 
						|
  const char* defpar = "MAIN";
 | 
						|
  TConfig ini("pg0001conf.ini", defpar);
 | 
						|
  for (int i = fields()-1; i >= 0; i--)
 | 
						|
  {
 | 
						|
    TMask_field& f = fld(i);
 | 
						|
    const TFieldref* fr = f.field();
 | 
						|
    if (fr != NULL)
 | 
						|
    {
 | 
						|
      if (bSave)
 | 
						|
        fr->write(ini, defpar, f.get());
 | 
						|
      else
 | 
						|
        f.set(fr->read(ini, defpar));
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
HIDDEN bool browse_file_handler(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_F9)
 | 
						|
  {  
 | 
						|
    FILE_SPEC fs; memset(&fs, 0, sizeof(FILE_SPEC));
 | 
						|
    strcpy(fs.type, "");
 | 
						|
    strcpy(fs.name, f.get());
 | 
						|
    xvt_fsys_get_default_dir(&fs.dir);
 | 
						|
    xvt_fsys_save_dir();
 | 
						|
    if (xvt_dm_post_file_open(&fs, TR("Selezione file")) == FL_OK)
 | 
						|
    {       
 | 
						|
      TFilename n;
 | 
						|
      xvt_fsys_convert_dir_to_str(&fs.dir, n.get_buffer(n.size()), n.size());
 | 
						|
      n.add(fs.name);
 | 
						|
      f.set(n);
 | 
						|
    }
 | 
						|
    xvt_fsys_restore_dir();
 | 
						|
    f.set_focus();
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TPaghe2mov application
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TPaghe2mov : public TSkeleton_application
 | 
						|
{
 | 
						|
	TPaghe2mov_mask*	_m;
 | 
						|
  TLog_report*			_log;
 | 
						|
 | 
						|
protected:
 | 
						|
  virtual const char * extra_modules() const {return "ba";}
 | 
						|
 | 
						|
public:           
 | 
						|
	virtual bool create();
 | 
						|
  virtual bool destroy();
 | 
						|
  virtual void main_loop();
 | 
						|
	void load_cli();
 | 
						|
  TPaghe2mov() {}
 | 
						|
};
 | 
						|
 | 
						|
TPaghe2mov& app() { return (TPaghe2mov&) main_app(); }
 | 
						|
 | 
						|
                                
 | 
						|
bool TPaghe2mov::create()
 | 
						|
{
 | 
						|
  _m = new TPaghe2mov_mask();
 | 
						|
	_m->set_handler(F_INPATH, browse_file_handler);
 | 
						|
	return TSkeleton_application::create ();
 | 
						|
}
 | 
						|
 | 
						|
bool TPaghe2mov::destroy()
 | 
						|
{
 | 
						|
	delete _m;
 | 
						|
  return TApplication::destroy();
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
void TPaghe2mov::load_cli()
 | 
						|
{
 | 
						|
	TString query("SELECT * FROM ");
 | 
						|
	TFilename name = _m->get(F_INPATH);
 | 
						|
	const bool aggcli = _m->get_bool(F_AGGCLI);
 | 
						|
	
 | 
						|
	name.add("utenti.txt");
 | 
						|
	if (name.exist())
 | 
						|
	{
 | 
						|
		TLocalisamfile clifo(LF_CLIFO);
 | 
						|
		TLocalisamfile cfven(LF_CFVEN);
 | 
						|
 | 
						|
		query << name;
 | 
						|
	
 | 
						|
		TClienti_recset clienti(query);
 | 
						|
    TProgind pi(clienti.items(), TR("Scansione clienti"), true, true);
 | 
						|
 | 
						|
    for (bool ok = clienti.move_first(); ok; ok = clienti.move_next())
 | 
						|
    {
 | 
						|
      if (!pi.addstatus(1))
 | 
						|
        break;
 | 
						|
	
 | 
						|
			clifo.zero();
 | 
						|
			clifo.put(CLI_TIPOCF, "C");
 | 
						|
 | 
						|
			TString cf(clienti.get(CLI_COFI).as_string());
 | 
						|
			TString paiv(clienti.get(CLI_PAIV).as_string());
 | 
						|
 | 
						|
			cf.trim();
 | 
						|
			paiv.trim();
 | 
						|
 | 
						|
			if (clienti.get("FLD003").as_string() != "A")
 | 
						|
			{
 | 
						|
				bool found = false;
 | 
						|
 | 
						|
				if (cf.full())
 | 
						|
				{
 | 
						|
					clifo.setkey(4);
 | 
						|
					clifo.put(CLI_COFI, cf);
 | 
						|
					found = clifo.read(_isequal) == NOERR;
 | 
						|
				}
 | 
						|
				if (!found && paiv.full())
 | 
						|
				{
 | 
						|
					clifo.setkey(5);
 | 
						|
					clifo.put(CLI_PAIV, paiv);
 | 
						|
					found = clifo.read(_isequal) == NOERR;
 | 
						|
				}
 | 
						|
				clifo.setkey(1);
 | 
						|
				if (!found)
 | 
						|
				{
 | 
						|
					long codcf = 1L;
 | 
						|
  
 | 
						|
					clifo.zero();
 | 
						|
					clifo.put(CLI_TIPOCF, "F");
 | 
						|
					if (clifo.read(_isgteq) == NOERR)
 | 
						|
						clifo.prev() ;
 | 
						|
					if (clifo.get(CLI_TIPOCF) == "C")
 | 
						|
						codcf += clifo.get_long(CLI_CODCF);
 | 
						|
					clifo.zero();
 | 
						|
					clifo.put(CLI_TIPOCF, "C");
 | 
						|
					clifo.put(CLI_CODCF, codcf);
 | 
						|
					cfven.zero();
 | 
						|
					cfven.put(CFV_TIPOCF, "C");
 | 
						|
					cfven.put(CFV_CODCF, codcf);
 | 
						|
					cfven.rewrite();
 | 
						|
				}
 | 
						|
				else
 | 
						|
					if (!aggcli)
 | 
						|
						continue;
 | 
						|
 | 
						|
				clifo.put(CLI_TIPOPERS, clienti.get(CLI_TIPOPERS).as_string());
 | 
						|
				clifo.put(CLI_RAGSOC, clienti.get(CLI_RAGSOC).as_string());
 | 
						|
				clifo.put(CLI_INDCF, clienti.get(CLI_INDCF).as_string());
 | 
						|
				clifo.put(CLI_CAPCF, clienti.get(CLI_CAPCF).as_string());
 | 
						|
				
 | 
						|
				const TString8 cap(clienti.get(CLI_CAPCF).as_string());
 | 
						|
				TString80 comune(clienti.get(CLI_COMCF).as_string());
 | 
						|
 | 
						|
				comune.trim();
 | 
						|
 | 
						|
				const TString& codcom = cap2comune(cap, comune);
 | 
						|
 | 
						|
				clifo.put(CLI_COMCF, cap);
 | 
						|
				if (codcom.full())
 | 
						|
					comune.cut(0);
 | 
						|
				clifo.put(CLI_LOCCF, comune);
 | 
						|
				clifo.put(CLI_COMCF, codcom);
 | 
						|
				clifo.put(CLI_COFI, cf);
 | 
						|
				clifo.put(CLI_PAIV, paiv);
 | 
						|
				if (found)
 | 
						|
				{
 | 
						|
					const int err = clifo.rewrite();
 | 
						|
					TString msg("Aggiornamento cliente ");
 | 
						|
 | 
						|
					msg << clifo.get(CLI_CODCF) << " - " << clienti.get(CLI_RAGSOC).as_string();
 | 
						|
					if (err == NOERR)
 | 
						|
						_log->log(0, msg);
 | 
						|
					else
 | 
						|
					{
 | 
						|
						msg << " - errore n. " << err;
 | 
						|
						_log->log(2, msg);
 | 
						|
					}
 | 
						|
				}
 | 
						|
				else
 | 
						|
				{
 | 
						|
					const int err = clifo.write();
 | 
						|
					TString msg("Inserimento cliente ");
 | 
						|
 | 
						|
					msg << clifo.get(CLI_CODCF) << " - " << clienti.get(CLI_RAGSOC).as_string();
 | 
						|
					if (err == NOERR)
 | 
						|
						_log->log(0, msg);
 | 
						|
					else
 | 
						|
					{
 | 
						|
						msg << " - errore n. " << err;
 | 
						|
						_log->log(2, msg);
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
    }
 | 
						|
  }                 
 | 
						|
}
 | 
						|
 | 
						|
void TPaghe2mov::main_loop()
 | 
						|
{
 | 
						|
	// eliminazione files delle elaborazioni precedenti
 | 
						|
  TString_array transactions;
 | 
						|
	TFilename pgfiles; pgfiles.tempdir();
 | 
						|
	pgfiles.add("conde*.ini");
 | 
						|
  list_files(pgfiles, transactions);
 | 
						|
  FOR_EACH_ARRAY_ROW(transactions, row, name)
 | 
						|
    remove_file(*name);
 | 
						|
	// main
 | 
						|
  if (_m->run() == K_ENTER)
 | 
						|
  {
 | 
						|
    const char* const title = TR("Importazione clienti");
 | 
						|
 | 
						|
    _log = new TLog_report(title);
 | 
						|
		load_cli();
 | 
						|
    TReport_book book;
 | 
						|
    book.add(*_log);
 | 
						|
    book.preview();
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int pg0001600(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TPaghe2mov app;
 | 
						|
  app.run(argc, argv, TR("Ricezione clienti e fatture da paghe"));
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
 |