campo-sirio/ha/hacnv500.cpp
cris 9e8908845c Patch level :
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@22288 c028cbd2-c16b-5b4b-a496-9718f37d4682
2011-06-20 13:28:50 +00:00

212 lines
5.3 KiB
C++
Executable File

#include "halib.h"
#include "hacnvlib.h"
#include "hacnv500a.h"
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <execp.h>
#include <progind.h>
#include <reprint.h>
#include <reputils.h>
#include <tabutil.h>
#include <utility.h>
#include "../ce/cespi.h"
#include "../ce/salce.h"
#include "../ce/ammce.h"
const char* const APPNAME = TR("Conversione cespiti");
///////////////////////////////////////////////////////////
// Cespiti
///////////////////////////////////////////////////////////
class THardy_cespiti : public THardy_transfer
{
int _anno; // parametri per la query
public:
virtual bool trasferisci();
THardy_cespiti(const int anno);
};
// procedura principale di conversione
bool THardy_cespiti::trasferisci()
{
// trasferisce anagrafica cespiti (cespi)
TString query =
"SELECT * "
"FROM dbo.SchedeCespiti ";
TRecordset& recset = create_recordset(query);
TSystemisamfile cespi(LF_CESPI);
cespi.open(_lock);
TRectype& rec = cespi.curr();
TConfig& ini = config();
TString_array lista_campi;
THardy_iterator hi(this);
while (++hi)
{
rec.zero();
rec.put(CESPI_IDCESPITE, recset.get("IdScheda").as_string());
rec.put(CESPI_DESC, recset.get("DsScheda1").as_string());
rec.put(CESPI_DTFUNZ, recset.get("DataInizioAmm").as_string());
rec.put(CESPI_DTALIEN, recset.get("DataCessione").as_string());
TString8 idcat = recset.get("IdCategoriaF").as_string();
const int codcat = ini.get_int("CategorieCespiti", idcat);
rec.put(CESPI_CODCAT, codcat);
if (codcat <= 40)
{
rec.put(CESPI_CODCGRA, ini.get("CODCGRA", "Cespiti"));
TString8 codsp = ini.get("CODSPA", "Cespiti");
codsp.lpad(4);
rec.put(CESPI_CODSPA, codsp);
rec.put(CESPI_CODCGR, ini.get("CODCGR", "Cespiti"));
codsp = ini.get("CODSP", "Cespiti");
codsp.lpad(4);
rec.put(CESPI_CODSP, codsp);
}
test_write(cespi);
}
cespi.close();
// trasferisce saldi cespiti (SALCE)
if (write_enabled())
{
TString query =
"SELECT * "
"FROM dbo.TotaliCespiti "
"WHERE Esercizio = ";
query << _anno;
TRecordset& recset = create_recordset(query);
TSystemisamfile salce(LF_SALCE);
salce.open(_lock);
TRectype& rec = salce.curr();
THardy_iterator hi(this);
while (++hi)
{
rec.zero();
rec.put(SALCE_IDCESPITE, recset.get("IdScheda").as_string());
rec.put(SALCE_CODES, recset.get("Esercizio").as_string());
rec.put(SALCE_TPSALDO, 1);
rec.put(SALCE_NUMELE, 1);
rec.put(SALCE_CSTO, recset.get("Totale01").as_real() - recset.get("Totale02").as_real());
rec.put(SALCE_VNONAMM, recset.get("Totale13").as_real());
rec.put(SALCE_RIVGF, recset.get("Totale07").as_real());
rec.put(SALCE_RIVGC, recset.get("Totale07C").as_real());
rec.put(SALCE_VNONAMMC, recset.get("Totale13C").as_real());
test_write(salce);
}
salce.close();
}
return write_enabled();
}
THardy_cespiti::THardy_cespiti(const int anno) : _anno(anno)
{
}
///////////////////////////////////////////////////////////
// TConvCespitiHardy_mask
///////////////////////////////////////////////////////////
class TConvCespitiHardy_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void serialize(bool bSave);
public:
void trasferisci();
TConvCespitiHardy_mask();
virtual ~TConvCespitiHardy_mask();
};
// Funzione di trasferimento dati da/verso file .ini con lo stesso nome della maschera
// Andrebbe messo in libreria
void TConvCespitiHardy_mask::serialize(bool bSave)
{
TFilename n = source_file(); n.ext("ini"); // Construisce il nome del .ini in base al .msk
TConfig cfg(n, "Main"); // Crea il file di configurazione
TString4 id;
for (int i = fields()-1; i >= 0; i--) // Scandisce tutti i campi della maschera ...
{
TMask_field& f = fld(i);
if (f.active() && f.is_loadable()) // ... selezionando solo quelli editabili
{
id.format("%d", f.dlg());
if (bSave) // A seconda del flag di scrittura ...
cfg.set(id, f.get()); // ... o scrive sul .ini
else
f.set(cfg.get(id)); // ... o legge dal .ini
}
}
}
void TConvCespitiHardy_mask::trasferisci()
{
TString query_header;
query_header << "ODBC(" << get(F_DSN) << ',' << get(F_USR) << ',' << get(F_PWD) << ")\n";
const int anno = get_int(F_ANNO);
if (anno!=0)
{
THardy_log log;
THardy_cespiti pc(anno);
pc.init(TR("Cespiti"), query_header, log);
pc.trasferisci();
}
}
bool TConvCespitiHardy_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case DLG_OK:
if (e == fe_button)
serialize(true);
break;
default:
break;
}
return true;
}
TConvCespitiHardy_mask::TConvCespitiHardy_mask() : TAutomask("hacnv500a")
{
serialize(false);
}
TConvCespitiHardy_mask::~TConvCespitiHardy_mask()
{
}
///////////////////////////////////////////////////////////
// TConvCespitiHardy
///////////////////////////////////////////////////////////
class TConvCespitiHardy : public TSkeleton_application
{
protected:
virtual void main_loop();
};
void TConvCespitiHardy::main_loop()
{
TConvCespitiHardy_mask mask;
while (mask.run() == K_ENTER)
mask.trasferisci();
}
int hacnv500(int argc, char* argv[])
{
TConvCespitiHardy ih;
ih.run(argc, argv, APPNAME);
return 0;
}