campo-sirio/ps/ps0713200.cpp
alex ee80b6a6c0 Patch level : 4.0 911
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
2008-03-17 22:05:14 +00:00

245 lines
4.8 KiB
C++
Executable File
Raw Blame History

#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;
}