diff --git a/lv/lv2900.cpp b/lv/lv2900.cpp index 3cfbfdfea..35bccc60e 100755 --- a/lv/lv2900.cpp +++ b/lv/lv2900.cpp @@ -2,6 +2,8 @@ #include #include #include +#include +#include #include #include "lvlib.h" @@ -138,20 +140,20 @@ TBuoni_cache::TBuoni_cache() : TCache(17) //classe TConta_pulito_msk class TConta_pulito_msk: public TAutomask { - TString4 _auto; - TString4 _giri; - bool _percli; - bool _permag; - long _codcf; - TString4 _print; + TString4 _auto; + TString4 _giri; + bool _percli; + bool _permag; + long _codcf; + TString4 _print; protected: virtual bool on_field_event(TOperable_field& o,TField_event e,long jolly); - bool elabora_file(const TFilename& file); + bool elabora_file(const TFilename& file, TLog_report& logrep); void sposta_file(const TFilename& file); - bool genera_documenti(const TFilename& file, TAssoc_array& documenti); - void prepara_movimenti(const TFilename& file, TAssoc_array& movimenti); + bool genera_documenti(const TFilename& file, TAssoc_array& documenti, TLog_report& logrep); + void prepara_movimenti(const TFilename& file, TAssoc_array& movimenti, TLog_report& logrep); bool genera_movmag(TAssoc_array& movimenti); public: @@ -170,13 +172,15 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo TAssoc_array documenti; TAssoc_array movimenti; + TLog_report logrep(""); + //a seconda del bottone premuto esegui un metodo diverso switch (f.dlg()) { case DLG_IMPORT: if(e == fe_button) { - if (elabora_file(file)) + if (elabora_file(file, logrep)) { sposta_file(file); message_box(TR("Importazione dei dati terminata")); @@ -186,7 +190,7 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo case DLG_PACKTCLI: if(e == fe_button) { - genera_documenti(file, documenti); + genera_documenti(file, documenti, logrep); if (documenti.items() > 0) { @@ -222,34 +226,57 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo message_box(TR("Generazione dei documenti terminata")); } else - message_box(TR("Non è stato possibile generare nessun documento con i parametri fissati")); + if (_auto == "A") + logrep.log(2, "Non è stato possibile generare nessun documento con i parametri fissati"); + else + message_box(TR("Non è stato possibile generare nessun documento con i parametri fissati")); } break; case DLG_PACKTMAG: if(e == fe_button) { - prepara_movimenti(file, movimenti); + prepara_movimenti(file, movimenti, logrep); if (movimenti.items() > 0) { genera_movmag(movimenti); message_box(TR("Generazione dei movimenti di magazzino terminata")); } else - message_box(TR("Non è stato possibile generare nessun documento con i parametri fissati")); + if (_auto == "A") + logrep.log(2, "Non è stato possibile generare nessun documento con i parametri fissati"); + else + message_box(TR("Non è stato possibile generare nessun documento con i parametri fissati")); } break; default: break; } + TReport_book buc; + buc.add(logrep); + + //genero il file .log che contiene gli errori + if (buc.pages() > 0) + { + TString str = file.name_only(); + str << ".log"; + + TFilename log = file.path(); + log.add(str); + + buc.export_text(log, false); + } return true; } //ELABORA_FILE: metodo che importa il file e prepara la tabella pacchi -bool TConta_pulito_msk::elabora_file(const TFilename& file) +bool TConta_pulito_msk::elabora_file(const TFilename& file, TLog_report& logrep) { if (!file.exist()) { - warning_box(TR("ATTENZIONE: il file che si desidera importare non esiste!")); + if (_auto == "A") + logrep.log(2, "ATTENZIONE: il file che si desidera importare non esiste!"); + else + warning_box(TR("ATTENZIONE: il file che si desidera importare non esiste!")); return false; } @@ -299,7 +326,10 @@ bool TConta_pulito_msk::elabora_file(const TFilename& file) { TString str; str << "ATTENZIONE: non è stata trovata nessuna unità di misura valida per l'articolo " << codart; - warning_box(str); + if (_auto == "A") + logrep.log(2, str); + else + warning_box(str); } else { @@ -331,12 +361,12 @@ void TConta_pulito_msk::sposta_file(const TFilename& file) } //GENERA_DOCUMENTI: metodo che genera i documenti partendo dal file pacchi -bool TConta_pulito_msk::genera_documenti(const TFilename& file, TAssoc_array& documenti) +bool TConta_pulito_msk::genera_documenti(const TFilename& file, TAssoc_array& documenti, TLog_report& logrep) { //se esite un file da importare, lo importo e lo sposto if (file.exist()) { - elabora_file(file); + elabora_file(file, logrep); sposta_file(file); } @@ -541,12 +571,12 @@ bool TConta_pulito_msk::genera_documenti(const TFilename& file, TAssoc_array& do } //PREPARA_MOVIMENTI: questo metodo prepara il TAssoc_array che contiene i movimenti da generare -void TConta_pulito_msk::prepara_movimenti(const TFilename& file, TAssoc_array& movimenti) +void TConta_pulito_msk::prepara_movimenti(const TFilename& file, TAssoc_array& movimenti, TLog_report& logrep) { //se esite un file da importare, lo importo e lo sposto if (file.exist()) { - elabora_file(file); + elabora_file(file, logrep); sposta_file(file); } @@ -803,7 +833,7 @@ bool TConta_pulito_app::create() case 'M': _cliormag = 'M'; break; case 'I': _cliormag = 'I'; break; default: break; - } + } } else { @@ -825,8 +855,7 @@ bool TConta_pulito_app::destroy() //TRANSFER: metodo che decide cosa effettivamente far fare al programma a seconda delle indicazioni ricevute bool TConta_pulito_app::transfer() -{ - +{ return true; }