diff --git a/src/ve01/ve0100.cpp b/src/ve01/ve0100.cpp index 1430369cf..e3a4759f0 100644 --- a/src/ve01/ve0100.cpp +++ b/src/ve01/ve0100.cpp @@ -618,7 +618,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/ve01/velib03.cpp b/src/ve01/velib03.cpp index 97e50336a..daed38352 100644 --- a/src/ve01/velib03.cpp +++ b/src/ve01/velib03.cpp @@ -1713,9 +1713,18 @@ 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 @@ -3237,6 +3246,7 @@ TRecord_array& TDocumento::body(int logicnum) const { TRectype& rec = r[i]; TRecfield dcons(rec, RDOC_DATACONS); + if (order && datacons == dcons) dcons = ""; if (can_reset_ca) diff --git a/src/ve01/velib06.cpp b/src/ve01/velib06.cpp index 5d04eaef5..e9084f381 100644 --- a/src/ve01/velib06.cpp +++ b/src/ve01/velib06.cpp @@ -1177,12 +1177,14 @@ 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); @@ -4472,12 +4474,15 @@ bool tip_filter(const TRelation* r) { if (__codnum.blank()) return true; + const TCodice_numerazione & cod_num = cached_numerazione(__codnum); const TString4 tipo = r->curr().get("CODTAB"); const int last = cod_num.ntipi_doc(); + for (int i = 0; i < last; i++ ) { const TString& curtipo = cod_num.tipo_doc(i); + if (curtipo == tipo && is_tipodoc_ok(curtipo)) return true; }