diff --git a/ca/ca3200.cpp b/ca/ca3200.cpp index 6688c603c..6aeebc5c7 100755 --- a/ca/ca3200.cpp +++ b/ca/ca3200.cpp @@ -5,6 +5,7 @@ #include "../cg/cglib01.h" +#include "commesse.h" #include "pconana.h" #include "movana.h" #include "rmovana.h" @@ -194,7 +195,7 @@ bool TPrint_mastrini_ca_recordset::valid_record(const TRelation& rel) const { case 'P': tipomov_int = 2; break; case 'V': tipomov_int = 4; break; - default: tipomov_int = 1; break; + default : tipomov_int = 1; break; } if ((_tipimov & tipomov_int) == 0) return false; @@ -447,7 +448,7 @@ void TPrint_mastrini_ca_alternative_recordset::set_filter(const TPrint_mastrini_ _dadata, _adata, _tipimov, _tipoconti==1, _tipoconti==2); const long pconana_items = pconana.items(); - TProgind pi(pconana_items, "Scansione conti..."); + TProgind pi(pconana_items, TR("Scansione conti...")); TRelation rel_rmovana(LF_RMOVANA); rel_rmovana.add(LF_MOVANA, "NUMREG==NUMREG"); //aggiunge le testate x avere i tipi mov. @@ -474,9 +475,10 @@ void TPrint_mastrini_ca_alternative_recordset::set_filter(const TPrint_mastrini_ } //scandisce il piano dei conti.. - for (TRecnotype j = 0; pconana.move_to(j); j++) + for (bool pok = pconana.move_first(); pok; pok = pconana.move_next()) { - pi.addstatus(1); + if (!pi.addstatus(1)) + break; const TString& conto = pconana.get(PCONANA_CODCONTO).as_string(); //..crea un cursore su rmovana per vedere se i conti selezionati hanno veri movimenti che soddisfano @@ -486,10 +488,10 @@ void TPrint_mastrini_ca_alternative_recordset::set_filter(const TPrint_mastrini_ TCursor cur_rmovana(&rel_rmovana, filtro, 2, &da_rmovana, &a_rmovana); const long rmovana_items = cur_rmovana.items(); - cur_rmovana.freeze(); bool almeno_uno_aggiunto = false; if (rmovana_items > 0) { + cur_rmovana.freeze(); for (cur_rmovana = 0; cur_rmovana.pos() < rmovana_items; ++cur_rmovana) { //deve coincidere anche il tipomov! sarebbe stato troppo semplice... @@ -507,6 +509,7 @@ void TPrint_mastrini_ca_alternative_recordset::set_filter(const TPrint_mastrini_ almeno_uno_aggiunto = true; } } + cur_rmovana.freeze(false); } //se non ha aggiunto nemmeno un record valido.. //crea un record di rmovana con il solo conto,datacomp e lo aggiunge al file temporaneo @@ -527,7 +530,6 @@ void TPrint_mastrini_ca_alternative_recordset::set_filter(const TPrint_mastrini_ //////////////////////////////////////////////////////// class TPrint_mastrini_ca_rep : public TAnal_report { - protected: virtual bool set_recordset(const TString& sql); @@ -549,7 +551,7 @@ void TPrint_mastrini_ca_rep::set_filter(const TPrint_mastrini_ca_mask& msk, int TPrint_mastrini_ca_recordset* recset = NULL; - const char* query ="USE RMOVANA KEY 2\nJOIN MOVANA INTO NUMREG==NUMREG"; + const char* const query ="USE RMOVANA KEY 2\nJOIN MOVANA INTO NUMREG==NUMREG"; switch (tipoconti) { case 1: @@ -570,7 +572,6 @@ class TPrint_mastrini_ca : public TSkeleton_application { protected: virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM - virtual void main_loop(); }; @@ -596,18 +597,27 @@ void TPrint_mastrini_ca::main_loop() //stabilisce quale è il primo livello (tra CDC e CMS).. const TMultilevel_code_info& liv1 = *ca_multilevel_code_info_by_index(0); - TISAM_recordset set(liv1.logic() == LF_CDC ? "USE CDC" : "USE COMMESSE"); //..e di conseguenza scrive la use giusta + const int logic1 = liv1.logic(); + TISAM_recordset set(logic1 == LF_CDC ? "USE CDC" : "USE COMMESSE"); //..e di conseguenza scrive la use giusta + + bool skip_closed = false; + if (logic1 == LF_COMMESSE) + skip_closed = !yesno_box(TR("E' stata richiesta la stampa di tutte le commesse:\n" + "Si desidera includere anche le commesse chiuse?")); TProgind pi(set.items(), video_string, true, true); - for (int i = 0; set.move_to(i); i++) //fighissimo metodo per scandire un file in 1 riga! + for (bool sok = set.move_first(); sok; sok = set.move_next()) //fighissimo metodo per scandire un file in 1 riga! { - pi.addstatus(1); - if (pi.iscancelled()) + if (!pi.addstatus(1)) break; - row = set.get((unsigned int)0).as_string(); //prende il valore del primo campo del file (CDC o CMS code) + + if (skip_closed && set.get(COMMESSE_CHIUSA).as_bool()) + continue; + + row = set.get(0u).as_string(); //prende il valore del primo campo del file (CDC o CMS code) - video_string = TR("Scansione"); - video_string << " " << row; //completa la stringa da visualizzare sulla progind + //completa la stringa da visualizzare sulla progind + video_string.cut(0) << row << '\n' << set.get(1u); pi.set_text(video_string); for (int l = liv1.levels()-2; l >= 0; l--) //se la struttura è a più livelli costruisce la tokenstring diff --git a/ca/ca3200a.rep b/ca/ca3200a.rep index 3239d2006..3ae1cb9fc 100755 --- a/ca/ca3200a.rep +++ b/ca/ca3200a.rep @@ -65,7 +65,8 @@ MESSAGE RESET,F2.202 - MESSAGE ISAMREAD,PCONANA,CODCONTO=CODCONTO,DESCR + CODCONTO + CA_FORMAT_CONTO_DESCR