Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.2 1010 git-svn-id: svn://10.65.10.50/trunk@16333 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			245 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			245 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <applicat.h>
 | 
						||
#include <automask.h>
 | 
						||
#include <progind.h>
 | 
						||
#include <reputils.h>
 | 
						||
#include <utility.h>
 | 
						||
#include <relation.h>
 | 
						||
#include <reprint.h>
 | 
						||
 | 
						||
#include "tabutil.h"
 | 
						||
 | 
						||
#include "ps0713.h"
 | 
						||
#include "ps0713200a.h"
 | 
						||
 | 
						||
 | 
						||
 | 
						||
///////////////////////////////////////////////////////////
 | 
						||
// TAutomask
 | 
						||
///////////////////////////////////////////////////////////
 | 
						||
 | 
						||
class TImportaComm_mask : public TAutomask
 | 
						||
{
 | 
						||
protected:
 | 
						||
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						||
 | 
						||
public:
 | 
						||
  TImportaComm_mask();
 | 
						||
};
 | 
						||
  
 | 
						||
TImportaComm_mask::TImportaComm_mask() :TAutomask ("ps0713200a")
 | 
						||
{
 | 
						||
}  
 | 
						||
 | 
						||
bool TImportaComm_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
 | 
						||
{ 
 | 
						||
	switch (f.dlg())
 | 
						||
	{
 | 
						||
		//giochetto per avere la lista dei files validi nella directory di trasferimento!
 | 
						||
		case F_NAME:
 | 
						||
			if (e == fe_button)
 | 
						||
			{
 | 
						||
				TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"), 
 | 
						||
                           "File@32");
 | 
						||
				TFilename path = get(F_PATH);
 | 
						||
				path.add("*.csv");	//files delle testate
 | 
						||
				list_files(path, as.rows_array());
 | 
						||
				TFilename name;
 | 
						||
				FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
 | 
						||
				{
 | 
						||
					name = *row;
 | 
						||
					*row = name.name();
 | 
						||
				}
 | 
						||
				if (as.run() == K_ENTER)
 | 
						||
				{
 | 
						||
					f.set(as.row(as.selected()));
 | 
						||
				}
 | 
						||
			}
 | 
						||
			break;
 | 
						||
		default:
 | 
						||
			break;
 | 
						||
	}
 | 
						||
  return true;
 | 
						||
}
 | 
						||
 | 
						||
///////////////////////////////////////
 | 
						||
// TSkeleton_application
 | 
						||
///////////////////////////////////////
 | 
						||
class TCommCSV : public TSkeleton_application
 | 
						||
{
 | 
						||
  virtual bool check_autorization() const {return false;}
 | 
						||
  virtual const char * extra_modules() const {return "cg";}
 | 
						||
 | 
						||
	TImportaComm_mask*				_msk;
 | 
						||
	TConfig*							    _configfile;
 | 
						||
 | 
						||
public:           
 | 
						||
  virtual bool create();
 | 
						||
  virtual bool destroy();
 | 
						||
  virtual void main_loop();
 | 
						||
  virtual void ini2mask();
 | 
						||
  virtual void mask2ini();
 | 
						||
	bool transfer(const TFilename& file);
 | 
						||
 
 | 
						||
  TCommCSV() {};
 | 
						||
};
 | 
						||
 | 
						||
TCommCSV& app() { return (TCommCSV&) main_app(); }
 | 
						||
 | 
						||
/////////////////////////////////
 | 
						||
//		inserimento commesse
 | 
						||
/////////////////////////////////
 | 
						||
 | 
						||
bool TCommCSV::transfer(const TFilename& file)
 | 
						||
{
 | 
						||
  TLog_report log("Inserimento Commesse");
 | 
						||
 | 
						||
  TToken_string rec(50,',');
 | 
						||
 | 
						||
  TScanner s(file);
 | 
						||
  rec = s.line();
 | 
						||
  
 | 
						||
  
 | 
						||
  TTable comm("CMS");
 | 
						||
  
 | 
						||
  TProgind pi(fsize(file),"Inserimento Commesse in corso...",true,true);
 | 
						||
 | 
						||
  while (s.ok())
 | 
						||
  {
 | 
						||
    if (!pi.addstatus(s.tellg())) 
 | 
						||
      break;   
 | 
						||
 | 
						||
    TString str = "La commessa ";
 | 
						||
    TString codtab = rec.get(0);
 | 
						||
    codtab.strip("\"");
 | 
						||
 | 
						||
    //salto le righe vuote del file
 | 
						||
    if (codtab.empty())
 | 
						||
      continue;
 | 
						||
 | 
						||
    comm.zero();
 | 
						||
    comm.put("CODTAB", codtab); //setto il campo CODTAB
 | 
						||
    
 | 
						||
    TString tmp = "IDLAVORO ";
 | 
						||
    tmp << codtab;
 | 
						||
 | 
						||
    comm.put("S0", tmp);  //setto il campo descrizione (S0)
 | 
						||
 | 
						||
    TString gr = rec.get(1);
 | 
						||
    gr.strip("\"");
 | 
						||
    TString co = rec.get(2);
 | 
						||
    co.strip("\"");
 | 
						||
    TString sc = rec.get(3);
 | 
						||
    sc.strip("\"");
 | 
						||
 | 
						||
    //inserisco il gruppo, il conto e il sottoconto
 | 
						||
    //solo se esistono e/o hanno valori sensati
 | 
						||
    if (gr == "" || gr == "?")
 | 
						||
      gr = "0";
 | 
						||
 | 
						||
    comm.put("I1", gr);
 | 
						||
    
 | 
						||
    if (co == "" || co == "?")
 | 
						||
      co = "0";
 | 
						||
      
 | 
						||
    comm.put("I2", co);
 | 
						||
 | 
						||
    if (sc == "" || sc == "?")
 | 
						||
      sc = "0";
 | 
						||
 | 
						||
    comm.put("I3", sc);
 | 
						||
 | 
						||
    int err = comm.write();
 | 
						||
 | 
						||
    if (err == NOERR)
 | 
						||
    {
 | 
						||
      str << codtab << " <20> stata inserita";
 | 
						||
      log.log(0, str);
 | 
						||
    }
 | 
						||
    else
 | 
						||
    {
 | 
						||
      if (err == 224)
 | 
						||
        str << codtab << " NON <20> stata inserita perch<63> esiste gi<67>";
 | 
						||
      else
 | 
						||
        str << codtab << " NON <20> stata inserita. Errore = " << err;
 | 
						||
 | 
						||
      log.log(2, str);
 | 
						||
    }
 | 
						||
 | 
						||
    rec = s.line();
 | 
						||
 | 
						||
  }
 | 
						||
 | 
						||
  TReport_book buc;
 | 
						||
	buc.add(log);
 | 
						||
	buc.preview();
 | 
						||
 | 
						||
  return true;
 | 
						||
}
 | 
						||
 | 
						||
void TCommCSV::mask2ini()
 | 
						||
{
 | 
						||
	//carica i parametri del file di configurazione
 | 
						||
	_configfile->set_paragraph("MAIN");
 | 
						||
  for (int i = 0; i < _msk->fields() ; i++)
 | 
						||
	{
 | 
						||
		TMask_field& f = _msk->fld(i);
 | 
						||
		const TFieldref* fr = f.field();
 | 
						||
		if (fr != NULL)
 | 
						||
			_configfile->set(fr->name(), f.get());
 | 
						||
	}
 | 
						||
}
 | 
						||
 | 
						||
void TCommCSV::ini2mask()
 | 
						||
{
 | 
						||
	//carica i parametri del file di configurazione
 | 
						||
	_configfile->set_paragraph("MAIN");
 | 
						||
  for (int i = 0; i < _msk->fields() ; i++)
 | 
						||
	{
 | 
						||
		TMask_field& f = _msk->fld(i);
 | 
						||
		const TFieldref* fr = f.field();
 | 
						||
		if (fr != NULL)
 | 
						||
			f.set(_configfile->get(fr->name()));
 | 
						||
	}
 | 
						||
}
 | 
						||
 | 
						||
bool TCommCSV::create()
 | 
						||
{
 | 
						||
  _configfile = new TConfig("ps0713conf.ini");
 | 
						||
  _msk = new TImportaComm_mask();
 | 
						||
 | 
						||
         
 | 
						||
  return TSkeleton_application::create();
 | 
						||
}
 | 
						||
 | 
						||
bool TCommCSV::destroy()
 | 
						||
{
 | 
						||
	delete _msk;
 | 
						||
	delete _configfile;
 | 
						||
  return TApplication::destroy();
 | 
						||
}
 | 
						||
 | 
						||
void TCommCSV::main_loop()
 | 
						||
{
 | 
						||
  KEY	tasto;
 | 
						||
	ini2mask();
 | 
						||
  tasto = _msk->run();
 | 
						||
  if (tasto == K_ENTER)
 | 
						||
  {
 | 
						||
		mask2ini();
 | 
						||
 | 
						||
    //genero il nome del file da caricare
 | 
						||
    TFilename name = _msk->get(F_PATH);
 | 
						||
    name.add(_msk->get(F_NAME));
 | 
						||
		if (transfer(name))
 | 
						||
		{
 | 
						||
			message_box(TR("Importazione documenti completata"));
 | 
						||
		}
 | 
						||
  }   
 | 
						||
}
 | 
						||
 | 
						||
int ps0713200 (int argc, char* argv[])
 | 
						||
{
 | 
						||
  TCommCSV main_app;
 | 
						||
  main_app.run(argc, argv, TR("Importazione Commesse"));
 | 
						||
  return true;
 | 
						||
} |