diff --git a/ve/velib03.cpp b/ve/velib03.cpp index 4651d4ab7..fc41fa7f9 100755 --- a/ve/velib03.cpp +++ b/ve/velib03.cpp @@ -1234,15 +1234,22 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const const TRectype & caulav = cache().get("&LVCAU", codcauslav); if (!caulav.empty()) { - const real qta = r.get(RDOC_QTAGG1); - const TString & causcons = caulav.get("S2"); - - if (causcons.full()) - mov[LF_RMOVMAG][j - 1].put(RMOVMAG_CODCAUS, causcons); - - if (r_num == num_movmag && !qta.is_zero()) + if (!qta.is_zero()) + { + const TString & causcons = caulav.get("S2"); + + CHECK(j > 1, "Wrong row number"); + if (causcons.full()) + mov[LF_RMOVMAG][j - 1].put(RMOVMAG_CODCAUS, causcons); + else + mov.destroy_row(--j, true); + } + + const real qtarit = r.get(RDOC_QTAGG1); + const TString & causrit = caulav.get("S1"); + + if (r_num == num_movmag && !qtarit.is_zero() && causrit.full()) { - const TString & causrit = caulav.get("S1"); TRectype & rm = mov.insert_row(j++); rm.put(RMOVMAG_IMPIANTO, r.get(RDOC_IMPIANTO)); @@ -1259,7 +1266,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const rm.put(RMOVMAG_CODART, codart); rm.put(RMOVMAG_LIVGIAC, r.get(RDOC_LIVELLO)); rm.put(RMOVMAG_UM, r.get(RDOC_UMQTA)); - rm.put(RMOVMAG_QUANT, qta); + rm.put(RMOVMAG_QUANT, qtarit); rm.put(RMOVMAG_CODCAUS, causrit); rm.put(RMOVMAG_TIPORIGA, (char) riga_dadocumento); }