Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@20405 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			293 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			293 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <applicat.h>
 | 
						|
#include <automask.h>
 | 
						|
#include <progind.h>
 | 
						|
#include <reputils.h>
 | 
						|
#include <utility.h>
 | 
						|
 | 
						|
#include "../ce/ammce.h"
 | 
						|
#include "../ce/cespi.h"
 | 
						|
#include "../ce/salce.h"
 | 
						|
 | 
						|
#include "../cg/cglib01.h"
 | 
						|
 | 
						|
#include "lv4.h"
 | 
						|
#include "lv4100.h"
 | 
						|
#include "lv4300a.h"
 | 
						|
 | 
						|
#define CGC_DITTA								 0
 | 
						|
#define CGC_GRUPPO							 1
 | 
						|
#define CGC_SPECIE							 2
 | 
						|
#define CGC_CESPITE							 3
 | 
						|
#define CGC_CODPADRE						 4
 | 
						|
#define CGC_CEINCR							 5
 | 
						|
#define CGC_NPROGR							 6
 | 
						|
#define CGC_DESCR								 7
 | 
						|
#define CGC_CEALIQ1							 8
 | 
						|
#define CGC_PERCAMMANTIC				 9
 | 
						|
#define CGC_COSTOACQ						10
 | 
						|
#define CGC_COSTODAAMM					11
 | 
						|
#define CGC_RIVALUTAZIONE				12
 | 
						|
#define CGC_RETTIFICHE					13
 | 
						|
#define CGC_FONDOAMMORT					14
 | 
						|
#define CGC_TOTAMMANTIC					15
 | 
						|
#define CGC_RIVALUTAMM					16
 | 
						|
#define CGC_CEDIMRIVALUTAMM     17
 | 
						|
#define CGC_AMMORTINDEDUCIBILE	18
 | 
						|
#define CGC_CREDIMPOSTA					19
 | 
						|
#define CGC_VENDCOSTOACQ				20
 | 
						|
#define CGC_VENDFDOAMM					21
 | 
						|
#define CGC_PLUSREINVEST				22
 | 
						|
#define CGC_VALORVEN						23
 | 
						|
#define CGC_DATAINIZAMM					24
 | 
						|
#define CGC_DATAACCANTONAM			25
 | 
						|
#define CGC_DATAALIENAZIONE     26
 | 
						|
#define CGC_PERCDAAMM						27
 | 
						|
#define CGC_RIFERFATTVEN				28
 | 
						|
#define CGC_RIFERFATTACQ				29
 | 
						|
#define CGC_CODFOR							30
 | 
						|
#define CGC_CEDITFIL						31
 | 
						|
#define CGC_RIFERACQ						32
 | 
						|
#define CGC_CODCLI							33
 | 
						|
#define CGC_INAMMCOSTOES				34
 | 
						|
#define CGC_IMMATERIALI					35
 | 
						|
#define CGC_TIPOAMMORT					36
 | 
						|
#define CGC_CESSIONE						37
 | 
						|
#define CGC_RIFERVEN						38
 | 
						|
#define CGC_CEMANRIP						39
 | 
						|
#define CGC_PERCAMMSTD					40
 | 
						|
#define CGC_NQUOTEANTCALC				41
 | 
						|
#define CGC_NUMMOVCESP					42
 | 
						|
#define CGC_VENDFDOANT					43
 | 
						|
#define CGC_AMMDIPPADRE					44
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TAutomask
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TImporta_cesp_mask : public TAutomask
 | 
						|
{
 | 
						|
protected:
 | 
						|
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						|
 | 
						|
public:
 | 
						|
  TImporta_cesp_mask();
 | 
						|
};
 | 
						|
  
 | 
						|
TImporta_cesp_mask::TImporta_cesp_mask() :TAutomask ("lv4300a")
 | 
						|
{
 | 
						|
}  
 | 
						|
 | 
						|
bool TImporta_cesp_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("*.txt");	//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 TImporta_cesp : public TSkeleton_application
 | 
						|
{
 | 
						|
	TImporta_cesp_mask*	_msk;
 | 
						|
 | 
						|
protected:
 | 
						|
	bool log_error(TLog_report& log, const char* msg, const TRecordset& recset, const int err=NOERR);
 | 
						|
	bool search_gr_sp_ca(const int gruppo, const char* specie, const int categoria);
 | 
						|
 | 
						|
public:           
 | 
						|
  virtual bool create();
 | 
						|
  virtual bool destroy();
 | 
						|
  virtual void main_loop();
 | 
						|
	void transfer(const TFilename& file);
 | 
						|
};
 | 
						|
 | 
						|
bool TImporta_cesp::search_gr_sp_ca(const int gruppo, const char* specie, const int categoria)
 | 
						|
{
 | 
						|
	return true;
 | 
						|
}
 | 
						|
 | 
						|
bool TImporta_cesp::log_error(TLog_report& log, const char* msg, const TRecordset& recset, const int err)
 | 
						|
{
 | 
						|
  TString message;
 | 
						|
  message << recset.get(CGC_CESPITE) << ' ' << recset.get(CGC_DESCR)
 | 
						|
					<< " : " << msg << err;
 | 
						|
  log.log(2, message);
 | 
						|
  return false;
 | 
						|
}
 | 
						|
 | 
						|
void TImporta_cesp::transfer(const TFilename& file)
 | 
						|
{
 | 
						|
	TImporta_cogeco_recset recset(file);
 | 
						|
  TString caption; _msk->get_caption(caption);
 | 
						|
  TProgind pi(recset.items(), caption, true, true);
 | 
						|
	const long ditta = _msk->get_long(F_CODITTA);
 | 
						|
	const TEsercizi_contabili esc;
 | 
						|
	int lastesc = esc.last(); // uso ultimo esercizio contabile
 | 
						|
	long ntran = 1;
 | 
						|
  TLog_report log(caption);
 | 
						|
  TLocalisamfile cespi(LF_CESPI);
 | 
						|
	TLocalisamfile salce(LF_SALCE);
 | 
						|
	TLocalisamfile ammce(LF_AMMCE);
 | 
						|
  for (bool ok = recset.move_to(1); ok ; ok = recset.move_next())
 | 
						|
  {
 | 
						|
    if (!pi.addstatus(1)) 
 | 
						|
      break;
 | 
						|
		
 | 
						|
		const long dt = recset.get(CGC_DITTA).as_int();
 | 
						|
 | 
						|
		if (ditta != dt)
 | 
						|
			continue;
 | 
						|
 | 
						|
		TString16 codces = recset.get(CGC_NPROGR).as_string();
 | 
						|
		codces.right_just(10, '0');
 | 
						|
		// verifico il codice cespite padre
 | 
						|
		TString16 codpadre = recset.get(CGC_CODPADRE).as_string();
 | 
						|
    codpadre.right_just(10, '0');
 | 
						|
 | 
						|
    if (real::is_null(codpadre)) // nuovo cespite
 | 
						|
		{
 | 
						|
			// creo record anagrafica cespi
 | 
						|
			cespi.zero();
 | 
						|
			cespi.put(CESPI_IDCESPITE, codces);
 | 
						|
			const int gr = recset.get(CGC_GRUPPO).as_int();
 | 
						|
			const TString4 sp = recset.get(CGC_SPECIE).as_string();
 | 
						|
			const int ca = recset.get(CGC_CESPITE).as_int();
 | 
						|
 | 
						|
			if (search_gr_sp_ca(gr, sp, ca))
 | 
						|
			{
 | 
						|
				cespi.put(CESPI_CODCGRA, gr);
 | 
						|
				cespi.put(CESPI_CODSPA, sp);
 | 
						|
				cespi.put(CESPI_CODCAT, ca);
 | 
						|
				cespi.put(CESPI_CODCGR, gr);
 | 
						|
				cespi.put(CESPI_CODSP, sp);
 | 
						|
				cespi.put(CESPI_DESC, recset.get(CGC_DESCR).as_string());
 | 
						|
				if (TDate::isdate(recset.get(CGC_DATAINIZAMM).as_string()))
 | 
						|
				{
 | 
						|
					TDate data(recset.get(CGC_DATAINIZAMM).as_string());
 | 
						|
					cespi.put(CESPI_DTFUNZ, data);
 | 
						|
					cespi.put(CESPI_DTCOMP, data);
 | 
						|
				}
 | 
						|
				if (TDate::isdate(recset.get(CGC_DATAALIENAZIONE).as_string()))
 | 
						|
				{
 | 
						|
					TDate data(recset.get(CGC_DATAALIENAZIONE).as_string());
 | 
						|
					cespi.put(CESPI_DTALIEN, data);
 | 
						|
				}
 | 
						|
				cespi.put(CESPI_TPSPEMAN, 1);
 | 
						|
				cespi.put(CESPI_FLGTPVEI, 1);
 | 
						|
 | 
						|
				// scrivo i record dei cespiti
 | 
						|
				int err = cespi.write();
 | 
						|
				if (err != NOERR)
 | 
						|
					log_error(log, TR("Errore in scrittura anagrafica cespiti "), recset, err);
 | 
						|
				else
 | 
						|
				{
 | 
						|
					// creo record salce
 | 
						|
					salce.zero();
 | 
						|
					salce.put(SALCE_IDCESPITE, cespi.get(CESPI_IDCESPITE));
 | 
						|
					salce.put(SALCE_CODES, lastesc); // ultimo esercizio
 | 
						|
					salce.put(SALCE_TPSALDO, 1); // saldo iniziale
 | 
						|
					salce.put(SALCE_NUMELE, 1);
 | 
						|
					salce.put(SALCE_CSTO, recset.get_real(CGC_COSTOACQ));
 | 
						|
					salce.put(SALCE_NUMELE, 1);
 | 
						|
					salce.put(SALCE_ANNIAMM, 1);
 | 
						|
					err = salce.write();
 | 
						|
					if (err != NOERR)
 | 
						|
						log_error(log, TR("Errore in scrittura saldi cespiti "), recset, err);
 | 
						|
					else
 | 
						|
					{
 | 
						|
						// creo i records ammce
 | 
						|
						for (int i=1; i<=3; i++)
 | 
						|
						{
 | 
						|
							ammce.zero();
 | 
						|
							ammce.put(AMMCE_IDCESPITE, salce.get(CESPI_IDCESPITE));
 | 
						|
							ammce.put(AMMCE_CODES, salce.get(SALCE_CODES)); 
 | 
						|
							ammce.put(AMMCE_TPSALDO, salce.get(SALCE_TPSALDO)); 
 | 
						|
							ammce.put(AMMCE_TPAMM, i); // creo i tre tipi di ammortamento 
 | 
						|
							ammce.put(AMMCE_QNOR, recset.get_real(CGC_FONDOAMMORT));
 | 
						|
							ammce.put(AMMCE_QANT, recset.get_real(CGC_TOTAMMANTIC));
 | 
						|
							err = ammce.write();
 | 
						|
							if (err != NOERR)
 | 
						|
								log_error(log, TR("Errore in scrittura ammortamento cespiti "), recset, err);
 | 
						|
						}
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
			cespi.zero();
 | 
						|
			cespi.put(CESPI_IDCESPITE, codpadre);
 | 
						|
			int err = cespi.read();
 | 
						|
			if (err == NOERR)
 | 
						|
			{
 | 
						|
				TString256 descr = cespi.get(CESPI_DESC);
 | 
						|
				descr << '+' << recset.get(CGC_DESCR).as_string();
 | 
						|
				descr.cut(60);
 | 
						|
				cespi.put(CESPI_DESC, descr);
 | 
						|
				cespi.write();
 | 
						|
			}
 | 
						|
			else
 | 
						|
				log_error(log, TR("Errore nel cespite padre "), recset, err);
 | 
						|
		}
 | 
						|
	}
 | 
						|
  if (log.recordset()->items() > 0)
 | 
						|
    log.preview();
 | 
						|
}
 | 
						|
 | 
						|
bool TImporta_cesp::create()
 | 
						|
{
 | 
						|
  _msk = new TImporta_cesp_mask();       
 | 
						|
  return TSkeleton_application::create();
 | 
						|
}
 | 
						|
 | 
						|
bool TImporta_cesp::destroy()
 | 
						|
{
 | 
						|
	delete _msk;
 | 
						|
  return TApplication::destroy();
 | 
						|
}
 | 
						|
 | 
						|
void TImporta_cesp::main_loop()
 | 
						|
{
 | 
						|
  KEY	tasto;
 | 
						|
	tasto = _msk->run();
 | 
						|
  if (tasto == K_ENTER)
 | 
						|
  {
 | 
						|
    //genero il nome del file da caricare
 | 
						|
    TFilename name = _msk->get(F_PATH);
 | 
						|
    name.add(_msk->get(F_NAME));
 | 
						|
		transfer(name);
 | 
						|
  }   
 | 
						|
}
 | 
						|
 | 
						|
int lv4300 (int argc, char* argv[])
 | 
						|
{
 | 
						|
  TImporta_cesp main_app;
 | 
						|
  main_app.run(argc, argv, TR("Importazione cespiti COGECO"));
 | 
						|
  return true;
 | 
						|
} |