campo-sirio/ps/ps0713200.cpp
luca83 c6e659655d Patch level : 10.0 patch ???
Files correlati     : ps0713.exe ps0713100a.msk ps0713200a.msk ps0713400a.msk
Ricompilazione Demo : [ ]
Commento            :
Versione 10.0 dei programma; escudere da progetto ps0713300 e ps0713500 (verrano fatti in seguito)

Aggiungere al progetto calib01 e calib02 e la dipendenza a vedoc


git-svn-id: svn://10.65.10.50/trunk@20373 c028cbd2-c16b-5b4b-a496-9718f37d4682
2010-04-26 10:41:28 +00:00

161 lines
4.5 KiB
C++
Executable File

#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 "ps0713200a.h"
/////////////////////////////////
//// TIMPORTA_COMM_MSK ////
/////////////////////////////////
//Classe TImporta_comm_msk
class TImporta_comm_msk : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TImporta_comm_msk();
};
//ON_FIELD_EVENT: metodo che gestisce i comportamenti dei vari campi della maschera
//(per adesso segnaposto)
bool TImporta_comm_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
return true;
}
//metodo costruttore
TImporta_comm_msk::TImporta_comm_msk() : TAutomask("ps0713200a"){}
/////////////////////////////////
//// TIMPORTA_COMM_APP ////
/////////////////////////////////
//Classe TImporta_comm_app
class TImporta_comm_app : public TSkeleton_application
{
virtual bool check_autorization() const {return false;}
virtual const char * extra_modules() const {return "cg";}
TImporta_comm_msk* _msk;
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
bool transfer(const TFilename& file);
TImporta_comm_app() {};
};
TImporta_comm_app& app() { return (TImporta_comm_app&) main_app(); }
//TRASNFER: metodo che effettivamente svolge l'elaborazione di importazione
bool TImporta_comm_app::transfer(const TFilename& file)
{
TLog_report log("Importazione Commesse");
//Instazio lo scanner con cui leggerò il file di testo
//che contiene codcms|gr|co|stco
TScanner s(file);
TToken_string rec(50, ',');
rec = s.line();
//Instanzio la tabella che devo riempire
TTable comm("CMS");
TProgind pi(fsize(file), "Importazione Commesse in corso...", true, true);
//scorro tutto il file (per ogni riga devo riportare l'esito dell'importazione nel log)
while (s.ok())
{
if (!pi.addstatus(s.tellg()))
break;
TString codtab = rec.get(0); codtab.strip("\"");
//salto le righe vuote del file
if (codtab.empty())
continue;
//recupero i dati di interesse dal file
TString descr = "IDLAVORO "; descr << codtab;
//gruppo conto e sottoconto devono avere dei valori sensati
TString gr = rec.get(1); gr.strip("\""); (gr == "" || gr == "?") ? gr ="0" : gr = gr;
TString co = rec.get(2); co.strip("\""); (co == "" || co == "?") ? co ="0" : co = co;
TString sc = rec.get(3); sc.strip("\""); (sc == "" || sc == "?") ? sc ="0" : sc = gr;
comm.zero();
comm.put("CODTAB", codtab); //setto il campo CODTAB
comm.put("S0", descr); //setto il campo descrizione (S0)
comm.put("I1", gr); //setto il campo gruppo (I1)
comm.put("I2", co); //setto il campo conto (I2)
comm.put("I3", sc); //setto il campo sottoconto (I3)
//salvo ciò che ho appena importato
int err = comm.write();
//preparo il log con tutti i risultati delle operazioni svolte
TString str = "La commessa ";
switch(err)
{
case NOERR: str << codtab << " è stata inserita"; log.log(0, str); break;
case 224: str << codtab << " NON è stata inserita perchè esiste già"; log.log(2, str); break;
default: str << codtab << " NON è stata inserita. Errore = " << err; log.log(2, str); break;
}
//leggo la riga successiva
rec = s.line();
}
//stampo a video il log
TReport_book buc;
buc.add(log);
buc.preview();
return true;
}
bool TImporta_comm_app::create()
{
_msk = new TImporta_comm_msk();
return TSkeleton_application::create();
}
bool TImporta_comm_app::destroy()
{
delete _msk;
return TApplication::destroy();
}
void TImporta_comm_app::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));
TString str;
if (transfer(name))
message_box(TR("Importazione commesse completata"));
else
error_box(TR("L'importazione non è andata a buon fine"));
}
}
int ps0713200 (int argc, char* argv[])
{
TImporta_comm_app main_app;
main_app.run(argc, argv, TR("Importazione Commesse"));
return true;
}