diff --git a/src/ve/velib03.cpp b/src/ve/velib03.cpp index be6d5c005..09e5e978d 100755 --- a/src/ve/velib03.cpp +++ b/src/ve/velib03.cpp @@ -987,7 +987,7 @@ void TDocumento::update_esenzione() else { const TCodiceIVA i(cod); - const bool plafond = i.get_int("S3") > 0; + const bool plafond = i.has_plafond(); if (plafond) { @@ -2848,11 +2848,21 @@ const real TDocumento::importo_plafond_salvato() const TLi_manager & TDocumento::plafond(bool force_reload) { - const char tipo = tipocf(); - const long codice = codcf(); + char tipo = tipocf(); + long codice = codcf(); const TDate data = get_date(DOC_DATADOC); const int anno = data.year(); + if (ini_get_bool(CONFIG_DITTA, "li", "CFORIGINAL")) + { + TToken_string key(get(DOC_CFORIG)); + + if (key.full()) + { + tipo = key.get()[0]; + codice = key.get_long(); + } + } if (_plafond == nullptr) _plafond = new TLi_manager(tipo, codice, anno); else diff --git a/src/ve/velib04a.cpp b/src/ve/velib04a.cpp index a11961947..63f794f9b 100755 --- a/src/ve/velib04a.cpp +++ b/src/ve/velib04a.cpp @@ -402,12 +402,14 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do TDocumento& campione = doc_in[id]; const char orig_t = campione.get_char(DOC_TIPOCF); const long orig_cod = campione.get_long(DOC_CODCF); + TToken_string cf_orig; if (change_clifo()) { const char t = campione.get_char(DOC_TIPOCFFATT); long codcf = campione.get_long(DOC_CODCFFATT); + if (t > ' ') { campione.put(DOC_TIPOCF, t); @@ -425,6 +427,11 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do if (interattivo) doc_out[0].put(DOC_CODCF, codcf); } + if (t > ' ' || codcf > 0L) + { + cf_orig = campione.get(DOC_TIPOCF); + cf_orig.add(orig_cod); + } } if (_lista_campi.full()) { @@ -504,6 +511,8 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do const TString4 codnum(out.get(DOC_CODNUM)); if (cached_numerazione(codnum).num_provv()) out.put(DOC_PROVV, 'P'); + if (cf_orig.full()) + out.put(DOC_CFORIG, cf_orig); } else { @@ -550,6 +559,10 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do new_doc->zero(DOC_SPESEUPD); // Senno' non aggiorna le spese automatiche new_doc->put(DOC_DATADOC, data_elab); new_doc->zero(DOC_IMPPAGATO); // 30 Luglio 2015 per Hardy + if (cf_orig.full()) + new_doc->put(DOC_CFORIG, cf_orig); + else + new_doc->zero(DOC_CFORIG); // Aggiungilo alla lista dei documenti in uscita od = doc_out.add(new_doc);