#include #include #include #include #include #include #include #include #include #include "tabutil.h" #include "ps0713.h" #include "ps0713300a.h" #include #include #include #include /////////////////////////////////////////////////////////// // 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; }