diff --git a/ve/velib03.cpp b/ve/velib03.cpp index 651791d8c..d303798e7 100755 --- a/ve/velib03.cpp +++ b/ve/velib03.cpp @@ -2206,26 +2206,23 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old, sh->destroy(i - 1); } } - TString4 cod_iva_cli; const int nspese = spese_aut.items(); if (nspese > 0) { - TLocalisamfile cfven(LF_CFVEN); + TString16 key; key.format("%c|%ld", get_char(DOC_TIPOCF), get_long(DOC_CODCF)); + const TString4 cod_iva_cli = cache().get(LF_CFVEN, key, "ASSFIS"); + TSpesa_prest sp; - cfven.put("TIPOCF", get("TIPOCF")); - cfven.put("CODCF", get("CODCF")); - if (cfven.read() == NOERR) - cod_iva_cli = cfven.get("ASSFIS"); for (i = 0; i < nspese; i++) { - const TString & s = spese_aut.row(i); + const TString& s = spese_aut.row(i); if (sp.read(s) != NOERR) message_box("Codice spesa %s assente", (const char *) s); else { - TString16 tipo(sp.tipo_riga()); - TRiga_documento & riga = new_row(tipo); + const TString4 tipo(sp.tipo_riga()); + TRiga_documento& riga = new_row(tipo); riga.put(RDOC_CODART, s); riga.generata(); @@ -2236,13 +2233,14 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old, { real qta = sp.qta(); if (qta == ZERO) - qta = 1.0; + qta = UNO; riga.put("QTA", qta); } + // Continua perche' e' quantita' e valore case 'V': { const real cambio = get_real(DOC_CAMBIO); - const TString16 valuta = get(DOC_CODVAL); + const TString4 valuta = get(DOC_CODVAL); const exchange_type controeuro = get_bool(DOC_CONTROEURO) ? _exchange_contro : _exchange_base; real prezzo = sp.prezzo(); @@ -2257,9 +2255,14 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old, break; } if (cod_iva_cli.empty()) - riga.put("CODIVA", sp.cod_iva()); + riga.put(RDOC_CODIVA, sp.cod_iva()); else - riga.put("CODIVA", cod_iva_cli); + riga.put(RDOC_CODIVA, cod_iva_cli); + + riga.put(RDOC_CODCOSTO, sp.cdc()); + riga.put(RDOC_CODCMS, sp.cms()); + riga.put(RDOC_FASCMS, sp.fase()); + if (interactive) { const int nrow = sh->insert(-1, FALSE);