diff --git a/src/ve/velib.h b/src/ve/velib.h index 1d4803afa..8b3bdd819 100755 --- a/src/ve/velib.h +++ b/src/ve/velib.h @@ -563,7 +563,8 @@ class TConai : public TObject TAssoc_array _conais; public: - const TSpesa_prest& get_spesa(const TString& sottocat) { return (const TSpesa_prest &) _conais[sottocat]; } + bool exist_sottocat(const TString& sottocat) { return _conais.objptr(sottocat); } + const TSpesa_prest& get_spesa(const TString& sottocat) { return (const TSpesa_prest &)_conais[sottocat]; } const bool find(const TString& cod_spesa) { return _conais.objptr(cod_spesa) != NULL; } int get_lista_cod_spesa(TString_array & keys) { return _conais.get_keys(keys); } diff --git a/src/ve/velib01.cpp b/src/ve/velib01.cpp index 2a7b4bfd4..183d96d46 100755 --- a/src/ve/velib01.cpp +++ b/src/ve/velib01.cpp @@ -182,9 +182,8 @@ TSpesa_prest::TSpesa_prest(const char* codice, char tipo) if (codice && *codice) { const int err = read(codice); - /* -#ifdef DBG - if (err != NOERR) + + if (err != NOERR) switch (tipo) { case RIGA_SPESEDOC : @@ -203,8 +202,6 @@ TSpesa_prest::TSpesa_prest(const char* codice, char tipo) error_box("Spesa %s assente", codice); break; } -#endif - */ } } diff --git a/src/ve/velib03.cpp b/src/ve/velib03.cpp index 189772e28..ababb83c2 100755 --- a/src/ve/velib03.cpp +++ b/src/ve/velib03.cpp @@ -3120,62 +3120,70 @@ void TDocumento::update_conai() if (cli_add_conai) { const TString4 cod_iva_cli = codesiva(); - TConai conai; + TConai conai; - FOR_EACH_ASSOC_OBJECT(_conaiqta, o, key, item) - { - const TString cod_sottocat = key; + FOR_EACH_ASSOC_OBJECT(_conaiqta, o, key, item) + { + const TString8 cod_sottocat = key; - // Se l'ho già fatto skippo - if (conai_aggiornati.objptr(cod_sottocat) != NULL) - continue; + // Se l'ho già fatto skippo + if (conai_aggiornati.objptr(cod_sottocat) != NULL) + continue; - TSpesa_prest sp = conai.get_spesa(cod_sottocat); - - // Aggiungo la spesa - const real perc_esenz = cfven.get_real(get_cf_esenz(cod_sottocat.left(2))); - const bool cli_esente = (esponi_esenti) && (perc_esenz >= CENTO); - const real qta_lorda = *((real *) item); - real qta = qta_lorda; - if (!cli_esente && !qta_lorda.is_zero() && !perc_esenz.is_zero()) - { - qta = qta_lorda * (CENTO - perc_esenz) / CENTO; - qta.round(5); - } + if (conai.exist_sottocat(cod_sottocat)) + { + TSpesa_prest sp = conai.get_spesa(cod_sottocat); - if (qta > ZERO) - { - const TString4 tipo = sp.tipo_riga(); - TRiga_documento& riga = new_row(tipo); + // Aggiungo la spesa + const real perc_esenz = cfven.get_real(get_cf_esenz(cod_sottocat.left(2))); + const bool cli_esente = (esponi_esenti) && (perc_esenz >= CENTO); + const real qta_lorda = *((real *)item); + real qta = qta_lorda; + if (!cli_esente && !qta_lorda.is_zero() && !perc_esenz.is_zero()) + { + qta = qta_lorda * (CENTO - perc_esenz) / CENTO; + qta.round(5); + } - riga.put(RDOC_CODART, sp.codice()); - riga.generata(); - riga.put(RDOC_GENTIPO, 'C'); - static TString descrizione; - descrizione.cut(0) << sp.descrizione() << " (" << cod_sottocat << ")"; - riga.put(RDOC_DESCR, descrizione); - riga.put(RDOC_QTA, qta); + if (qta > ZERO) + { + TString4 tipo = sp.tipo_riga(); - // Mi salvo anche la sottocategoria in questione - riga.put(RDOC_TIPOCON, cod_sottocat); + if (tipo.blank()) + tipo = "03"; + TRiga_documento& riga = new_row(tipo); - const real cambio = get_real(DOC_CAMBIO); - const TString4 valuta = get(DOC_CODVAL); - real prezzo = cli_esente ? ZERO : sp.prezzo(); + riga.put(RDOC_CODART, sp.codice()); + riga.generata(); + riga.put(RDOC_GENTIPO, 'C'); + static TString descrizione; + descrizione.cut(0) << sp.descrizione() << " (" << cod_sottocat << ")"; + riga.put(RDOC_DESCR, descrizione); + riga.put(RDOC_QTA, qta); - sppr_calc(sp, valuta, cambio, prezzo); - if (this->tipo().calcolo_lordo()) - prezzo = riga.iva().lordo(prezzo, ALL_DECIMALS); - riga.put(RDOC_PREZZO, prezzo); - riga.put(RDOC_UMQTA, sp.um()); - if (cod_iva_cli.empty()) - riga.put(RDOC_CODIVA, sp.cod_iva()); - else - riga.put(RDOC_CODIVA, cod_iva_cli); - } - } - } + // Mi salvo anche la sottocategoria in questione + riga.put(RDOC_TIPOCON, cod_sottocat); + + const real cambio = get_real(DOC_CAMBIO); + const TString4 valuta = get(DOC_CODVAL); + real prezzo = cli_esente ? ZERO : sp.prezzo(); + + sppr_calc(sp, valuta, cambio, prezzo); + if (this->tipo().calcolo_lordo()) + prezzo = riga.iva().lordo(prezzo, ALL_DECIMALS); + riga.put(RDOC_PREZZO, prezzo); + riga.put(RDOC_UMQTA, sp.um()); + if (cod_iva_cli.empty()) + riga.put(RDOC_CODIVA, sp.cod_iva()); + else + riga.put(RDOC_CODIVA, cod_iva_cli); + } + } + else + error_box("Sottocategoria CONAI %s assente", (const char *) cod_sottocat); + } + } } }