İçereği Atla
Menü
Bu soru işaretlendi
2 Cevaplar
5974 Görünümler

When any control value is modified, close the view, and the current record will update the record. Some data here may be clicked at will rather than what is really needed, but the data is still updated. How to disable this function? Click Save manually instead

Avatar
Vazgeç
En İyi Yanıt

Hi,

By patching FormController, we can restrict auto-save in form views. So ater the patching the data will save only if we save the form manually.Try the following code for patching the form controller:

/** @odoo-module */

import { FormController } from "@web/views/form/form_controller";

import { patch } from "@web/core/utils/patch";

import { useSetupView } from "@web/views/view_hook";

patch(FormController.prototype, {

  setup(){

     super.setup(...arguments);

     this.beforeLeaveHook = false

     useSetupView({

         beforeLeave: () => this.beforeLeave(),

         beforeUnload: (ev) => this.beforeUnload(ev),

     });

  },

  async beforeLeave() {

  /* function will work before leave the form */

     if(this.model.root.isDirty && this.beforeLeaveHook == false){         if (this.env.searchModel && this.env.searchModel.resModel != 'your.model') {

             this.beforeLeaveHook = true

             await this.model.root.save({

                 reload: false,

                 onError: this.onSaveError.bind(this),

             });

         } else {

             this.beforeLeaveHook = true

             this.model.root.discard();

         }

     }

  },

  beforeUnload: async (ev) => {

      ev.preventDefault();

  }

});


Hope it helps.

Avatar
Vazgeç
İlgili Gönderiler Cevaplar Görünümler Aktivite
3
Ağu 25
2631
1
May 25
2653
1
Nis 25
3637
1
Nis 25
4499
1
Nis 25
1966