campo-sirio/ps/ps0713300.cpp
alex c4c9328557 Patch level : 10.0 67
Files correlati     :
Ricompilazione Demo : [ ]
Commento           :

RIportata la verione 3.2 1167


git-svn-id: svn://10.65.10.50/trunk@16716 c028cbd2-c16b-5b4b-a496-9718f37d4682
2008-06-11 10:16:22 +00:00

214 lines
4.6 KiB
C++
Executable File

#include <applicat.h>
#include <automask.h>
#include <execp.h>
#include <progind.h>
#include <reputils.h>
#include <utility.h>
#include <relation.h>
#include <reprint.h>
#include <textset.h>
#include "tabutil.h"
#include "ps0713.h"
#include "ps0713300a.h"
#include <causali.h>
#include <clifo.h>
#include <mov.h>
#include <rmoviva.h>
///////////////////////////////////////////////////////////
// TAutomask
///////////////////////////////////////////////////////////
class TImportaFat_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TImportaFat_mask();
};
TImportaFat_mask::TImportaFat_mask() :TAutomask ("ps0713300a")
{
}
bool TImportaFat_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;
}
///////////////////////////////////////////////
//// CLASSI DERIVATE PER IMPORTAZIONE DATI ////
///////////////////////////////////////////////
/////////////////////////////////////////////////////////////
// Recordset specifici per i dati da trasferire
/////////////////////////////////////////////////////////////
//Piano dei conti
class TImporta_fatt_recordset : public TCSV_recordset
{
public:
TImporta_fatt_recordset(const char * fileName);
};
TImporta_fatt_recordset::TImporta_fatt_recordset(const char * fileName)
: TCSV_recordset("CSV(\",\")")
{
load_file(fileName);
}
///////////////////////////////////////
// TSkeleton_application
///////////////////////////////////////
class TFattCSV : public TSkeleton_application
{
virtual bool check_autorization() const {return false;}
virtual const char * extra_modules() const {return "ve";}
TImportaFat_mask* _msk;
TConfig* _configfile;
//protected:
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
bool transfer(const TFilename& file);
TFattCSV() {};
};
bool TFattCSV::transfer(const TFilename& file)
{
TImporta_fatt_recordset s(file);
TProgind pi(s.items(),"Importazione fatture in corso ...",true,true);
_configfile->set_paragraph("Transaction"); //setto il paragrafo [Transaction] del file ini
_configfile->set("Action","INSERT");
_configfile->set("Mode","AUTO");
_configfile->set_paragraph("23"); //setto il paragrafo [23] del file ini (testata)
_configfile->set(MOV_TIPO,"F");
_configfile->set(MOV_CODCF, _msk->get(F_CODCF));
_configfile->set(MOV_CODCAUS, _msk->get(F_CODCAU));
_configfile->set(MOV_DATAREG, _msk->get(F_DATAREG));
int nriga = 1;
for (bool ok=s.move_first();ok;ok=s.move_next())
{
if (!pi.addstatus(1))
break;
TString8 paragraph;
paragraph.format("%d,%d",LF_RMOVIVA,nriga++);
_configfile->set_paragraph(paragraph);
TString16 codcom = s.get(0).as_string();
real imp = s.get(1).as_real();
_configfile->set(RMI_IMPONIBILE,imp.string());
_configfile->set(RMI_CODIVA,_msk->get(F_CODIVA));
_configfile->set(RMI_CODCMS,codcom);
}
_configfile->set_paragraph("Transaction");
return true;
}
const char* nomeini = "ps0713300fatt.ini";
bool TFattCSV::create()
{
xvt_fsys_removefile(nomeini);
_configfile = new TConfig(nomeini);
_msk = new TImportaFat_mask();
return TSkeleton_application::create();
}
bool TFattCSV::destroy()
{
delete _msk;
delete _configfile;
return TApplication::destroy();
}
void TFattCSV::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));
if (transfer(name))
{
TString app;
app << "cg2 -0 -i" << nomeini;
TExternal_app primanota(app);
primanota.run();
message_box(TR("Importazione fatture completata"));
}
}
}
TFattCSV& app() { return (TFattCSV&) main_app(); }
int ps0713300 (int argc, char* argv[])
{
TFattCSV main_app;
main_app.run(argc, argv, TR("Importazione Fatture"));
return true;
}