diff --git a/src/ve/ve0100.cpp b/src/ve/ve0100.cpp index 81081c5ff..b77492242 100755 --- a/src/ve/ve0100.cpp +++ b/src/ve/ve0100.cpp @@ -577,7 +577,7 @@ int TMotore_application::rewrite( const TMask& m ) // C 90 TDocumento_mask& mask = (TDocumento_mask&) m; int err = NOERR; - if (!d.bloccato()) + if (supervisor() || !d.bloccato()) { mask.mask2doc(); d = ((TDocumento_mask&)m).doc(); // Trasferisce il documento da maschera a record diff --git a/src/ve/velib03.cpp b/src/ve/velib03.cpp index 43cb41a10..39752ba42 100755 --- a/src/ve/velib03.cpp +++ b/src/ve/velib03.cpp @@ -1683,10 +1683,19 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const if (!dcons.ok()) r.put(RDOC_DATACONS, datacons); } - if (r.get(RDOC_CODCMS).blank()) r.put(RDOC_CODCMS, codcms); - if (r.get(RDOC_FASCMS).blank()) r.put(RDOC_FASCMS, fascms); - if (r.get(RDOC_CODCOSTO).blank()) r.put(RDOC_CODCOSTO, codcos); - } + if (r.is_descrizione()) + { + r.put(RDOC_CODCMS, codcms); + r.put(RDOC_FASCMS, fascms); + r.put(RDOC_CODCOSTO, codcos); + } + else + { + if (r.get(RDOC_CODCMS).blank()) r.put(RDOC_CODCMS, codcms); + if (r.get(RDOC_FASCMS).blank()) r.put(RDOC_FASCMS, fascms); + if (r.get(RDOC_CODCOSTO).blank()) r.put(RDOC_CODCOSTO, codcos); + } + } if (is_ordine()) ((TDocumento *)this)->put(DOC_DOCEVASO, docevaso); // Tutte le righe evase -> doc evaso } // Almeno una riga aperta -> doc aperto diff --git a/src/ve/velib06.cpp b/src/ve/velib06.cpp index 200f475d4..27c620437 100755 --- a/src/ve/velib06.cpp +++ b/src/ve/velib06.cpp @@ -972,12 +972,15 @@ bool TDocumento_mask::on_key(KEY key) if (key == K_SHIFT + K_F12) { TRelation r(LF_DOC); + r.curr()=doc(); + bool can_save = !doc().bloccato() && !doc().chiuso(); - if (can_save && ::user_can_write(&r)) + if (supervisor() || (can_save && ::user_can_write(&r))) { TMask_field& stato = field(F_STATO); + stato.enable(); enable(DLG_SAVEREC); enable(DLG_DELREC);