2004-03-02 16:48:16 +00:00
|
|
|
#include <applicat.h>
|
|
|
|
#include <filetext.h>
|
|
|
|
#include <mask.h>
|
|
|
|
#include <progind.h>
|
|
|
|
#include <utility.h>
|
|
|
|
|
2004-04-28 22:15:29 +00:00
|
|
|
#include "../mg/umart.h"
|
|
|
|
#include "../mg/anamag.h"
|
2004-03-02 16:48:16 +00:00
|
|
|
|
|
|
|
#include "ve7.h"
|
|
|
|
#include "ve7500a.h"
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
// Classe TLis2fil: filetext //
|
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
class TLis2fil_txt: public TFile_text
|
|
|
|
{
|
|
|
|
public:
|
2004-03-03 11:26:01 +00:00
|
|
|
void save_price(const TRecord_text& rec, const TString& um);
|
2004-03-02 16:48:16 +00:00
|
|
|
TLis2fil_txt(const TString& file_name, const TString& config_name);
|
|
|
|
virtual ~TLis2fil_txt() { }
|
|
|
|
};
|
|
|
|
|
|
|
|
TLis2fil_txt::TLis2fil_txt(const TString& file_name, const TString& config_name)
|
|
|
|
: TFile_text(file_name, config_name)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2004-03-03 11:26:01 +00:00
|
|
|
//validate per sistemare il prezzo nel file UMART
|
|
|
|
void TLis2fil_txt::save_price(const TRecord_text& rec, const TString& um)
|
|
|
|
{
|
|
|
|
const TString80 codart = rec.get(0);
|
|
|
|
const TPrice prezzo = real(rec.get(2));
|
|
|
|
|
|
|
|
TLocalisamfile umart(LF_UMART);
|
|
|
|
TRectype& curr = umart.curr();
|
|
|
|
curr.put(UMART_CODART, codart);
|
|
|
|
curr.put(UMART_NRIGA, 1);
|
|
|
|
curr.put(UMART_UM, um);
|
|
|
|
curr.put(UMART_PREZZO, prezzo);
|
|
|
|
|
|
|
|
if (umart.rewrite() != NOERR)
|
|
|
|
umart.write();
|
|
|
|
}
|
2004-03-02 16:48:16 +00:00
|
|
|
|
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
// Classe TLis2fil: applicazione principale //
|
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
class TLis2fil: public TSkeleton_application
|
|
|
|
{
|
|
|
|
TMask* _msk;
|
2004-03-03 11:26:01 +00:00
|
|
|
TString4 _um;
|
2004-03-02 16:48:16 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual bool create(void);
|
|
|
|
virtual void main_loop();
|
|
|
|
virtual bool destroy(void);
|
|
|
|
void transfer(void);
|
|
|
|
static bool annulla_handler(TMask_field& f, KEY k);
|
|
|
|
const char * get_ini_name(const TString& filename) const;
|
|
|
|
void import(const TString& filename);
|
|
|
|
|
|
|
|
public:
|
|
|
|
const TMask& msk() const { return *_msk; }
|
|
|
|
TLis2fil() {}
|
|
|
|
virtual ~TLis2fil() {}
|
|
|
|
};
|
|
|
|
|
|
|
|
const char * TLis2fil::get_ini_name (const TString& filename) const
|
|
|
|
{
|
|
|
|
TScanner scan_line(filename);
|
|
|
|
const TString& line = scan_line.line();
|
|
|
|
return line[0] == '"' ? "ve7500p.ini" : "ve7500m.ini";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TLis2fil::import(const TString& filename)
|
|
|
|
{
|
|
|
|
//stabilisce quale tipo di listino e' il file corrente (M o P),carica il .ini relativo
|
|
|
|
//lo parsa in modo read
|
|
|
|
const char * ini = get_ini_name (filename);
|
|
|
|
TLis2fil_txt trasfile(filename, ini);
|
|
|
|
trasfile.open(filename,'r');
|
|
|
|
const long dimension = fsize(filename);
|
|
|
|
TString msg;
|
|
|
|
msg << "Acquisizione del file " << filename << " in corso...";
|
|
|
|
TProgind pi(dimension, msg, false, true);
|
|
|
|
|
|
|
|
TRelation rel(LF_ANAMAG);
|
|
|
|
|
|
|
|
TRecord_text curr;
|
|
|
|
while (trasfile.read(curr) == NOERR)
|
|
|
|
{
|
|
|
|
pi.setstatus(trasfile.read_file()->tellg());
|
|
|
|
trasfile.autosave(rel, curr);
|
2004-03-03 11:26:01 +00:00
|
|
|
trasfile.save_price(curr, _um);
|
2004-03-02 16:48:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
trasfile.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
// creazione dell'applicazione
|
|
|
|
bool TLis2fil::create()
|
|
|
|
{
|
|
|
|
open_files(LF_ANAMAG, LF_UMART, 0);
|
|
|
|
|
|
|
|
_msk = new TMask("ve7500a");
|
|
|
|
TString default_dir = "A:\\";
|
|
|
|
_msk->set(F_DIRNAME, default_dir);
|
2004-03-03 11:26:01 +00:00
|
|
|
TString4 default_um = "PZ";
|
|
|
|
_msk->set(F_UM, default_um);
|
2004-03-02 16:48:16 +00:00
|
|
|
|
|
|
|
return TSkeleton_application::create();
|
|
|
|
}
|
|
|
|
|
|
|
|
// distruzione dell'applicazione
|
|
|
|
bool TLis2fil::destroy()
|
|
|
|
{
|
|
|
|
delete _msk;
|
|
|
|
return TSkeleton_application::destroy();
|
|
|
|
}
|
|
|
|
|
|
|
|
// carica la maschera
|
|
|
|
void TLis2fil::main_loop()
|
|
|
|
{
|
|
|
|
// Preimposta gli eventuali valori specificati sulla riga di comando
|
|
|
|
KEY key = K_ENTER;
|
|
|
|
while (key != K_QUIT)
|
|
|
|
{
|
|
|
|
key = _msk->run();
|
|
|
|
if (key == K_ENTER)
|
|
|
|
{
|
|
|
|
TString_array dir_files;
|
2004-03-03 11:26:01 +00:00
|
|
|
TFilename path = _msk->get(F_DIRNAME); //da maschera si seleziona la directory di importazione..
|
|
|
|
_um = _msk->get(F_UM);
|
2004-03-02 16:48:16 +00:00
|
|
|
path.add("*.txt");
|
2004-03-03 11:26:01 +00:00
|
|
|
list_files(path, dir_files); //..poi si mettono tutti i nomi dei files .txt presenti nella dir in un TString_array..
|
2004-03-02 16:48:16 +00:00
|
|
|
FOR_EACH_ARRAY_ROW(dir_files, i, row)
|
2004-03-03 11:26:01 +00:00
|
|
|
import(*row); //..e per ogni file (riga del TString-array) si procede all'upload dei record
|
2004-03-02 16:48:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// handler per gestire la conferma dell'annullamento dei dati inseriti
|
|
|
|
// nella maschera
|
|
|
|
bool TLis2fil::annulla_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
TMask &m = f.mask();
|
|
|
|
if (k == K_SPACE)
|
|
|
|
{
|
|
|
|
if (yesno_box("Vuoi veramente annullare i dati inseriti"))
|
|
|
|
m.reset();
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int ve7500(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
TLis2fil a ;
|
2004-03-25 09:41:56 +00:00
|
|
|
a.run(argc, argv, TR("Importazione listino"));
|
2004-03-02 16:48:16 +00:00
|
|
|
return 0;
|
|
|
|
}
|