campo-sirio/ha/ha1300.cpp
luca bed09775ba Patch level :10.0
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :riporto hardy dalla 11 (esportazione sospesivar)


git-svn-id: svn://10.65.10.50/branches/R_10_00@21010 c028cbd2-c16b-5b4b-a496-9718f37d4682
2010-10-14 13:15:43 +00:00

169 lines
4.4 KiB
C++
Executable File

#include <applicat.h>
#include <automask.h>
#include <progind.h>
#include <reputils.h>
#include "halib.h"
#include "ha1300a.h"
#define UPLOAD_FILE "upload.d"
///////////////////////////////////////////////////////////
// TAutomask
///////////////////////////////////////////////////////////
class TUpload2Campo_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TUpload2Campo_mask();
};
bool TUpload2Campo_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
TUpload2Campo_mask::TUpload2Campo_mask() : TAutomask ("ha1300a")
{
TConfig config(CONFIG_DITTA, "ha");
const TString& path = config.get("InputPath");
set(F_PATH, path);
}
///////////////////////////////////////
// TSkeleton_application
///////////////////////////////////////
class TUpload2Campo : public TSkeleton_application
{
TFilename _intput_dir;
protected:
void elabora_SU(THardy_upload_recordset& recset, TLog_report& log);
void elabora_BR(THardy_upload_recordset& recset, TLog_report& log);
void elabora_VC(THardy_upload_recordset& recset, TLog_report& log);
void elabora(const TMask& mask);
public:
virtual void main_loop();
virtual bool create();
};
void TUpload2Campo::elabora_SU(THardy_upload_recordset& recset, TLog_report& log)
{
const TString& cod_term = recset.get("CodiceTerminale").as_string();
const TString& cod_age = recset.get(AGE_CODAGE).as_string();
const TString& descr_age = recset.get(AGE_RAGSOC).as_string();
TString msg;
msg << "Scartati dati agente " << cod_term << " " << descr_age;
log.log(0, msg);
}
void TUpload2Campo::elabora_BR(THardy_upload_recordset& recset, TLog_report& log)
{
const TString& cod_term = recset.get("CodiceTerminale").as_string();
const long ndoc = recset.get("NumeroDoc").as_int();
TString msg;
msg << "Scartato movimento magazzino. Terminale: " << cod_term << " N.Doc: " << ndoc;
log.log(0, msg);
}
void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log)
{
const TString& cod_term = recset.get("CodiceTerminale").as_string();
const TString& codcf = recset.get(CLI_CODCF).as_string();
const TString& ragsoc = recset.get(CLI_RAGSOC).as_string();
TString msg;
msg << "Scartato nuovo cliente. Terminale: " << cod_term << " CodCli: " << codcf << " Ragsoc: " << ragsoc;
log.log(0, msg);
}
void TUpload2Campo::elabora(const TMask& mask)
{
TToken_string tipi_record("SU|TF|RF|SI|BR|VC");
//creazione del filename del file da importare
TFilename src_file = mask.get(F_PATH);
src_file.add(UPLOAD_FILE);
THardy_upload_recordset recset(src_file);
const long items = recset.items();
//creazione progind e log
TProgind pi(items, TR("Acquisizione dati in corso..."), true, true);
TLog_report log("Segnalazioni su acquisizione");
//giro su tutti i record del terribile recordset per l'acquisizione dei dati
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
{
if (!pi.addstatus(1))
break;
//acquisizione tipo record da riga corrente del file di input
const TString& tipo_record = recset.get(0u).as_string();
const int pos = tipi_record.get_pos(tipo_record);
//trattazione dei vari tracciati record
switch (pos)
{
case 0: //tipo record: SU (SetUp...ovvero agente)
elabora_SU(recset, log);
break;
case 1: //tipo record: TF (Testata Fattura)
//elabora_TF(recset, log);
break;
case 2: //tipo record: RF (Riga Fattura)
//elabora_RF(recset, log);
break;
case 3: //tipo record: SI (incasso documenti)
//elabora_SI(recset, log);
break;
case 4: //tipo record: BR (movimenti magazzino)
elabora_BR(recset, log);
break;
case 5: //tipo record: VC (Variazioni Cliente)
//elabora_VC(recset, log);
break;
default: //se il tipo record non esiste nella lista dei tipi record si incazza e lo scrive!
{
TString msg;
msg << "Tipo record non riconosciuto " << tipo_record;
log.log_error(msg);
}
break;
} //switch(pos)..
} //for (bool ok...
}
void TUpload2Campo::main_loop()
{
TUpload2Campo_mask mask;
_intput_dir = mask.get(F_PATH);
while (mask.run() == K_ENTER)
{
elabora(mask);
}
}
bool TUpload2Campo::create()
{
return TSkeleton_application::create();
}
int ha1300(int argc, char* argv[])
{
TUpload2Campo a;
a.run(argc, argv, "Importazione dati da file");
return 0;
}