diff --git a/ve/ve0100.cpp b/ve/ve0100.cpp index 56bacf66b..16896e19f 100755 --- a/ve/ve0100.cpp +++ b/ve/ve0100.cpp @@ -402,9 +402,10 @@ void TMotore_application::do_elab( TDocumento& doc ) // C 90 default : break; } + TToken_string tipi; TToken_string stati; - el->stati_validi(stati); + el->tipi_stati_iniziali(tipi, stati); if (stati.find(doc.stato()) >= 0) { TDocumento newdoc(doc.get_char(DOC_PROVV), doc.get_int(DOC_ANNO), el->codice_numerazione_finale(), 0L); diff --git a/ve/ve6200.cpp b/ve/ve6200.cpp index bfd00e3b3..d01a63d5b 100755 --- a/ve/ve6200.cpp +++ b/ve/ve6200.cpp @@ -74,8 +74,7 @@ void TFatturazione_bolle_app::process_by_cli(const TMask& m) TElaborazione * e = elab(m.get(F_CODICE_ELAB)); TElaborazione & eld = *e; TToken_string tipidoc(24), statidoc(10); - eld.tipi_validi(tipidoc); - eld.stati_validi(statidoc); + eld.tipi_stati_iniziali(tipidoc, statidoc); TTipo_documento t(eld.tipo_iniziale(0)); char tipocf(t.tipocf()); @@ -127,8 +126,7 @@ void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m) TElaborazione * e = elab(m.get(F_CODICE_ELAB)); TElaborazione & eld = *e; TToken_string tipidoc(24), statidoc(10); - eld.tipi_validi(tipidoc); - eld.stati_validi(statidoc); + eld.tipi_stati_iniziali(tipidoc, statidoc); TTipo_documento t(eld.tipo_iniziale(0)); char tipocf(t.tipocf()); @@ -182,8 +180,7 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m) TElaborazione * e = elab(m.get(F_CODICE_ELAB)); TElaborazione & eld = *e; TToken_string tipidoc(24), statidoc(10); - eld.tipi_validi(tipidoc); - eld.stati_validi(statidoc); + eld.tipi_stati_iniziali(tipidoc, statidoc); TTipo_documento t(eld.tipo_iniziale(0)); char tipocf(t.tipocf()); @@ -240,8 +237,7 @@ void TFatturazione_bolle_app::process_by_fatt(const TMask& m) TElaborazione* e = elab(m.get(F_CODICE_ELAB)); TElaborazione& eld = *e; TToken_string tipidoc(24), statidoc(10); - eld.tipi_validi(tipidoc); - eld.stati_validi(statidoc); + eld.tipi_stati_iniziali(tipidoc, statidoc); const TTipo_documento t(eld.tipo_iniziale(0)); const char tipocffatt = t.tipocf() == 'C' ? 'F' : 'C'; diff --git a/ve/velib04.cpp b/ve/velib04.cpp index e8875d009..4c13cb6c8 100755 --- a/ve/velib04.cpp +++ b/ve/velib04.cpp @@ -463,35 +463,30 @@ int TElaborazione::read(const char* cod) return ok; } -void TElaborazione::tipi_validi(TToken_string& tipi) const +void TElaborazione::tipi_stati_iniziali(TToken_string& tipi, TToken_string& stati) const { - tipi.cut(0); TString4 t; - for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++) - { - t = tipo_iniziale(i); - if (t.full()) - tipi.add(t); - } - CHECK(!tipi.empty_items(), "Nessun tipo documento valido"); -} -void TElaborazione::stati_validi(TToken_string& stati) const -{ + tipi.cut(0); stati.cut(0); for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++) { + t = tipo_iniziale(i); const char s = stato_iniziale(i); - if (s != '\0' && s != ' ') - stati.add(s); + + if (t.blank() && s == '\0') + break; else - if (s == '\0') - break; - } + if (t.full() || s > ' ') + { + tipi.add(t); + stati.add(s); + } + } + CHECK(!tipi.empty_items(), "Nessun tipo documento valido"); CHECK(!stati.empty_items(), "Nessuno stato documento valido"); } - /////////////////////////////////////////////////////////// // TElaborazione_esterna /////////////////////////////////////////////////////////// diff --git a/ve/velib04.h b/ve/velib04.h index e5f76724a..7fd65ac55 100755 --- a/ve/velib04.h +++ b/ve/velib04.h @@ -165,8 +165,7 @@ public: const TString& descrizione() const { return get("S0"); } const TTipo_elaborazione tipo() const { return (TTipo_elaborazione) get_int("I0"); } - virtual void tipi_validi(TToken_string& tipi) const; - virtual void stati_validi(TToken_string& stati) const; + virtual void tipi_stati_iniziali(TToken_string& tipi, TToken_string& stati) const; bool doc_uguale(int u) const { return get("S1").mid(u, 1) == "X"; }