diff --git a/ve/velib03.cpp b/ve/velib03.cpp index 45b1b56dd..2b78f0345 100755 --- a/ve/velib03.cpp +++ b/ve/velib03.cpp @@ -2737,26 +2737,11 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old, real TDocumento::calc_conai_qta(TCONAI_class type) { real qta; - - if (type == CONAI_CARTA) - { - ofstream dbg("conai.caz"); - FOR_EACH_PHYSICAL_RDOC(*this, i, r) if (r->is_merce() || r->is_omaggio()) - { - const real row_qta = r->calc_conai_qta(type); - qta += row_qta; - dbg << i << '\t' << row_qta.string() << endl; - } + FOR_EACH_PHYSICAL_RDOC(*this, i, r) if (r->is_merce() || r->is_omaggio()) + { + const real row_qta = r->calc_conai_qta(type); + qta += row_qta; } - else - { - FOR_EACH_PHYSICAL_RDOC(*this, i, r) if (r->is_merce() || r->is_omaggio()) - { - const real row_qta = r->calc_conai_qta(type); - qta += row_qta; - } - } - return qta; } @@ -2802,8 +2787,7 @@ void TDocumento::update_conai() real qta = calc_conai_qta(pos); if (dataes.ok() && datadoc > dataes) perc_esenz = ZERO; - const bool cli_esente = (esponi_esenti) && (perc_esenz == CENTO); - + const bool cli_esente = esponi_esenti && (perc_esenz >= CENTO); if (!cli_esente && !perc_esenz.is_zero()) qta = qta * (CENTO - perc_esenz) / CENTO; // More precise if (qta > ZERO) @@ -2828,52 +2812,49 @@ void TDocumento::update_conai() const TString4 cod_iva_cli = codesiva() ; TSpesa_prest sp; - FOR_EACH_CONAI_CLASS(ct) + FOR_EACH_CONFIGURED_CONAI_CLASS(ct) if (!updated[ct]) { - if (!updated[ct]) + const real perc_esenz = cfven.get_real(__conai_cf_names[ct]); + const bool cli_esente = (esponi_esenti) && (perc_esenz == CENTO); + real qta = calc_conai_qta(ct); + if (!cli_esente && !qta.is_zero() && !perc_esenz.is_zero()) + qta = qta * (CENTO - perc_esenz) / CENTO; // More precise + if (qta > ZERO) { - const real perc_esenz = cfven.get_real(__conai_cf_names[ct]); - const bool cli_esente = (esponi_esenti) && (perc_esenz == CENTO); - real qta = calc_conai_qta(ct); - if (!cli_esente && !qta.is_zero() && !perc_esenz.is_zero()) - qta = qta * (CENTO - perc_esenz) / CENTO; // More precise - if (qta > ZERO) - { - const TString& s = conai_sp.row(ct); + const TString& s = conai_sp.row(ct); - if (sp.read(s) != NOERR) - message_box(FR("Il codice spesa CONAI %s specificato nei parametri ditta e' assente: '%s'"), - conai_material(ct), (const char*)s); - else - { - const TString4 tipo = sp.tipo_riga(); - TRiga_documento& riga = new_row(tipo); - - riga.put(RDOC_CODART, s); - riga.generata(); - riga.put("GENTIPO", "C"); - riga.put(RDOC_DESCR, sp.descrizione()); - riga.put(RDOC_QTA, qta); + if (sp.read(s) != NOERR) + message_box(FR("Il codice spesa CONAI %s specificato nei parametri ditta e' assente: '%s'"), + conai_material(ct), (const char*)s); + else + { + const TString4 tipo = sp.tipo_riga(); + TRiga_documento& riga = new_row(tipo); + + riga.put(RDOC_CODART, s); + riga.generata(); + riga.put("GENTIPO", "C"); + riga.put(RDOC_DESCR, sp.descrizione()); + riga.put(RDOC_QTA, qta); - const real cambio = get_real(DOC_CAMBIO); - const TString4 valuta = get(DOC_CODVAL); - const bool controeuro = get_bool(DOC_CONTROEURO); - real prezzo = cli_esente ? ZERO : sp.prezzo(); - - sppr_calc(sp, valuta, cambio, prezzo, controeuro ? _exchange_contro : _exchange_base); - 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); - } - } - } + const real cambio = get_real(DOC_CAMBIO); + const TString4 valuta = get(DOC_CODVAL); + const bool controeuro = get_bool(DOC_CONTROEURO); + real prezzo = cli_esente ? ZERO : sp.prezzo(); + + sppr_calc(sp, valuta, cambio, prezzo, controeuro ? _exchange_contro : _exchange_base); + 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); + } + } } - } + } } }