#include #include #include #include #include "halib.h" #include "ha1300a.h" #define UPLOAD_FILE "upload.d" /////////////////////////////////////////////////////////// // TAutomask /////////////////////////////////////////////////////////// class TUpload2Campo_mask : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TUpload2Campo_mask(); }; bool TUpload2Campo_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { return true; } TUpload2Campo_mask::TUpload2Campo_mask() : TAutomask ("ha1300a") { TConfig config(CONFIG_DITTA, "ha"); const TString& path = config.get("InputPath"); set(F_PATH, path); } /////////////////////////////////////// // TSkeleton_application /////////////////////////////////////// class TUpload2Campo : public TSkeleton_application { TFilename _intput_dir; protected: void elabora_SU(THardy_upload_recordset& recset, TLog_report& log); void elabora_BR(THardy_upload_recordset& recset, TLog_report& log); void elabora_VC(THardy_upload_recordset& recset, TLog_report& log); void elabora(const TMask& mask); public: virtual void main_loop(); virtual bool create(); }; void TUpload2Campo::elabora_SU(THardy_upload_recordset& recset, TLog_report& log) { const TString& cod_term = recset.get("CodiceTerminale").as_string(); const TString& cod_age = recset.get(AGE_CODAGE).as_string(); const TString& descr_age = recset.get(AGE_RAGSOC).as_string(); TString msg; msg << "Scartati dati agente " << cod_term << " " << descr_age; log.log(0, msg); } void TUpload2Campo::elabora_BR(THardy_upload_recordset& recset, TLog_report& log) { const TString& cod_term = recset.get("CodiceTerminale").as_string(); const long ndoc = recset.get("NumeroDoc").as_int(); TString msg; msg << "Scartato movimento magazzino. Terminale: " << cod_term << " N.Doc: " << ndoc; log.log(0, msg); } void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log) { const TString& cod_term = recset.get("CodiceTerminale").as_string(); const TString& codcf = recset.get(CLI_CODCF).as_string(); const TString& ragsoc = recset.get(CLI_RAGSOC).as_string(); TString msg; msg << "Scartato nuovo cliente. Terminale: " << cod_term << " CodCli: " << codcf << " Ragsoc: " << ragsoc; log.log(0, msg); } void TUpload2Campo::elabora(const TMask& mask) { TToken_string tipi_record("SU|TF|RF|SI|BR|VC"); //creazione del filename del file da importare TFilename src_file = mask.get(F_PATH); src_file.add(UPLOAD_FILE); THardy_upload_recordset recset(src_file); const long items = recset.items(); //creazione progind e log TProgind pi(items, TR("Acquisizione dati in corso..."), true, true); TLog_report log("Segnalazioni su acquisizione"); //giro su tutti i record del terribile recordset per l'acquisizione dei dati for (bool ok = recset.move_first(); ok; ok = recset.move_next()) { if (!pi.addstatus(1)) break; //acquisizione tipo record da riga corrente del file di input const TString& tipo_record = recset.get(0u).as_string(); const int pos = tipi_record.get_pos(tipo_record); //trattazione dei vari tracciati record switch (pos) { case 0: //tipo record: SU (SetUp...ovvero agente) elabora_SU(recset, log); break; case 1: //tipo record: TF (Testata Fattura) //elabora_TF(recset, log); break; case 2: //tipo record: RF (Riga Fattura) //elabora_RF(recset, log); break; case 3: //tipo record: SI (incasso documenti) //elabora_SI(recset, log); break; case 4: //tipo record: BR (movimenti magazzino) elabora_BR(recset, log); break; case 5: //tipo record: VC (Variazioni Cliente) //elabora_VC(recset, log); break; default: //se il tipo record non esiste nella lista dei tipi record si incazza e lo scrive! { TString msg; msg << "Tipo record non riconosciuto " << tipo_record; log.log_error(msg); } break; } //switch(pos).. } //for (bool ok... } void TUpload2Campo::main_loop() { TUpload2Campo_mask mask; _intput_dir = mask.get(F_PATH); while (mask.run() == K_ENTER) { elabora(mask); } } bool TUpload2Campo::create() { return TSkeleton_application::create(); } int ha1300(int argc, char* argv[]) { TUpload2Campo a; a.run(argc, argv, "Importazione dati da file"); return 0; }