Skip to Content
Odoo मेन्यू
  • साइन इन करें
  • मुफ़्त में आज़माएं
  • ऐप्लिकेशन
    फ़ाइनेंस
    • अकाउंटिंग
    • इनवॉइसिंग
    • एक्सपेंस
    • स्प्रेडशीट (बीआई)
    • डॉक्यूमेंट्स
    • साइन
    सेल्स
    • सीआरएम
    • सेल्स
    • पीओएस शॉप
    • पीओएस रेस्टोरेंट
    • सब्सक्रिप्शन
    • रेंटल
    वेबसाइट
    • वेबसाइट बिल्डर
    • ई-कॉमर्स
    • ब्लॉग
    • फ़ोरम
    • लाइव चैट
    • ई-लर्निंग
    सप्लाई चेन
    • इन्वेंट्री
    • मैन्युफ़ैक्चरिंग
    • पीएलएम
    • परचेज़
    • मेंटेनेंस
    • क्वालिटी
    मानव संसाधन
    • कर्मचारी
    • रिक्रूटमेंट
    • टाइम ऑफ़
    • अप्रेज़ल
    • रेफ़रल
    • फ़्लीट
    मार्केटिंग
    • सोशल मार्केटिंग
    • ईमेल मार्केटिंग
    • एसएमएस मार्केटिंग
    • इवेंट
    • मार्केटिंग ऑटोमेशन
    • सर्वे
    सेवाएं
    • प्रोजेक्ट
    • टाइमशीट
    • फ़ील्ड सर्विस
    • हेल्पडेस्क
    • प्लानिंग
    • अपॉइंटमेंट
    प्रॉडक्टिविटी
    • डिस्कस
    • आर्टिफ़िशियल इंटेलिजेंस
    • आईओटी
    • वीओआईपी
    • नॉलेज
    • WhatsApp
    तीसरे पक्ष के ऐप्लिकेशन Odoo स्टूडियो Odoo क्लाउड प्लेटफ़ॉर्म
  • इंडस्ट्री
    रीटेल
    • बुक स्टोर
    • क्लोदिंग स्टोर
    • फ़र्नीचर स्टोर
    • ग्रॉसरी स्टोर
    • हार्डवेयर स्टोर
    • टॉय स्टोर
    फ़ूड & हॉस्पिटैलिटी
    • बार और पब
    • रेस्टोरेंट
    • फ़ास्ट फ़ूड
    • Guest House
    • बेवरिज डिस्ट्रीब्यूटर
    • होटल
    रियल एस्टेट
    • Real Estate Agency
    • आर्किटेक्चर फ़र्म
    • कंसट्रक्शन
    • Property Management
    • गार्ड्निंग
    • प्रॉपर्टी ओनर असोसिएशन
    कंसल्टिंग
    • अकाउंटिंग फ़र्म
    • Odoo पार्टनर
    • मार्केटिंग एजेंसी
    • लॉ फ़र्म
    • टैलेंट ऐक्विज़िशन
    • ऑडिट & सर्टिफ़िकेशन
    मैन्युफ़ैक्चरिंग
    • टेक्सटाइल
    • Metal
    • फ़र्नीचर
    • फ़ूड
    • ब्रुअरी
    • कॉर्पोरेट गिफ़्ट
    हेल्थ & फिटनेस
    • स्पोर्ट्स क्लब
    • आईवियर स्टोर
    • फिटनेस सेंटर
    • वेलनेस प्रैक्टिशनर
    • फॉर्मेसी
    • हेयर सैलून
    Trades
    • Handyman
    • आईटी हॉर्डवेयर और सपोर्ट
    • Solar Energy Systems
    • Shoe Maker
    • साफ-सफाई से जुड़ी सेवाएं
    • HVAC Services
    अन्य
    • Nonprofit Organization
    • एन्वायरमेंटल एजेंसी
    • बिलबोर्ड रेंटल
    • फ़ोटोग्राफी
    • बाइक लीजिंग
    • सॉफ़्टवेयर रीसेलर
    सभी इंडस्ट्री को ब्राउज़ करें
  • कम्यूनिटी
    सीखें
    • ट्यूटोरियल्स
    • दस्तावेज़
    • सर्टिफ़िकेशन
    • ट्रेनिंग
    • ब्लॉग
    • पॉडकास्ट
    शिक्षा को बढ़ावा दें
    • एजुकेशन प्रोग्राम
    • स्केल अप! बिजनेस गेम
    • Odoo के ऑफ़िस में आएं
    सॉफ़्टवेयर पाएं
    • डाउनलोड
    • वर्शन की तुलना करें
    • रिलीज़
    साथ मिलकर काम करें
    • Github
    • फ़ोरम
    • इवेंट
    • अनुवाद
    • पार्टनर बनें
    • Services for Partners
    • अपना अकाउंटिंग फ़र्म रजिस्टर करें
    सेवाएं पाएं
    • पार्टनर ढूंढें
    • अकाउंटेंट खोजें
    • सलाहकार की मदद लें
    • इम्प्लिमेंटेशन सेवाएं
    • कस्टमर रेफ़रेंस
    • सहायता
    • अपग्रेड
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    डेमो देखें
  • कीमत
  • सहायता
You need to be registered to interact with the community.
All Posts People Badges
टैग (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
टैग (View all)
odoo accounting v14 pos v15
About this forum
सहायता

How to override FormController method?

Subscribe

Get notified when there's activity on this post

This question has been flagged
formodoo16features
1 Reply
4717 डेटा देखने का तरीका
अवतार
Enzo

Hello! I'm somewhat new to odoo and I have this problem:

I need to show a confirmation dialog box when there is no email in a specific model when saving a form, I achieved this by modifying the "saveButtonClicked" function and creating "saveConfirmationDialogProps" as shown below:


get saveConfirmationDialogProps() {

        return {            

​ ​body: this.env._t("¿Estas seguro que quieres guardar este registro sin ​ ​ ​email?"), 

           ​ confirm: async () => {                                

​ ​ ​const record = this.model.root;

​ ​ ​let saved = false;               

​ ​ ​ if (this.props.saveRecord) {                    

​ ​ ​ ​saved = await this.props.saveRecord(record, params);       

​ ​ ​} else {                   

​ ​ ​ ​ saved = await record.save();               

​ ​ ​}                

​ ​ ​if (saved && this.props.onSave) {     

​ ​ ​ ​this.props.onSave(record, params);                

​ ​ ​}            

​ ​},            

​ ​cancel: () => {},        

​};   

 }


async saveButtonClicked(params = {}) {       

​ const record = this.model.root;        

​ let saved = false;        

​ console.log(record);        

​ if (record.resModel === "res.partner" && record.data.email === "") {            ​ ​this.dialogService.add(ConfirmationDialog, ​ ​ ​ ​ ​ ​ ​this.saveConfirmationDialogProps);        

​} else {             

​ ​if (this.props.saveRecord) {                

​ ​ ​saved = await this.props.saveRecord(record, params);            

​ ​} else {               

​ ​ ​ saved = await record.save();            

​ ​}           

​ ​ if (saved && this.props.onSave) {                

​ ​ ​this.props.onSave(record, params);            

​ ​}        

​}       

​ return true;    

}  


This in the form_controller.js file in this path: "C:\Program Files\Odoo 16\server\odoo\addons\web\static\src\views\form\form_controller.js" where I have odoo installed


But I should not modify the odoo source file, I should overwrite it from a script that is in my custom module that is located in another path.


This is the code I implemented:


odoo.define('felsv_parameter.custom_script', function (require) {   

​"use strict";

    ​const FormController = require('web.FormController');   

​const ConfirmationDialog=require('@web/core/confirmation_dialog/confirmation_dialog');    ​alert("Script works")

    ​var CustomFormController = FormController.include({

  ​ ​async saveButtonClicked(params = {}) {            

​ ​ ​alert("save works")            

​ ​​const record = this.model.root;            

​ ​​let saved = false;            

​ ​​if (record.resModel === "res.partner" && record.data.email === "") {         

​ ​ ​​const confirmationDialogProps = {                   

​ ​ ​ ​​body: this.env._t("¿Estás seguro de que deseas guardar este registro sin ​ ​ ​ ​ ​ ​correo ​​electrónico?"),                    

​ ​ ​​ ​confirm: async () => {

​ ​ ​ ​ ​​if (this.props.saveRecord) {                            

​ ​ ​ ​ ​ ​​saved = await this.props.saveRecord(record, params);                

​ ​ ​ ​ ​ ​} else {                            

​ ​ ​ ​ ​ ​ ​saved = await record.save();                        

​ ​ ​ ​ ​​}                        

​ ​ ​ ​​​if (saved && this.props.onSave) {                            

​ ​ ​ ​ ​ ​​this.props.onSave(record, params);                        

​ ​ ​ ​​​}                    

​ ​ ​​​},                    

​ ​ ​ ​​cancel: () => {},                

​ ​​​};                

​ ​​​this.dialogService.add(ConfirmationDialog, confirmationDialogProps);            

​ ​​} else { 

​ ​ ​​if (this.props.saveRecord) {                    

​ ​ ​ ​​saved = await this.props.saveRecord(record, params);                

​ ​ ​​} else {                    

​ ​ ​ ​​saved = await record.save();                

​ ​ ​​}                

​ ​ ​​if (saved && this.props.onSave) {                    

​ ​ ​ ​​this.props.onSave(record, params);                

​ ​ ​​}            

​ ​​}            

​ ​​return true;        

​ ​},    

​});    ​

​console.log("finish");    

​return CustomFormController;

});


The script is executed because it shows me the alert and the console.log at the end but it doesn't overwrite the function because it doesn't show me the second alert("save works") and it doesn't have the behavior that I initially achieved by modifying the odoo file, I have already tried replacing "include" with "extend" but it still doesn't work. 

Does anyone know what I can do?


 




0
अवतार
खारिज करें
अवतार
Cybrosys Techno Solutions Pvt.Ltd
Best Answer

Hi,

Try this : export default class CustomFormController extends FormController {

        async saveButtonClicked(params = {}) {            


alert("save works")            


const record = this.model.root;            


let saved = false;            


if (record.resModel === "res.partner" && record.data.email === "") {        


const confirmationDialogProps = {                  


body: this.env._t("¿Estás seguro de que deseas guardar este registro sin correo electrónico?"),                    


confirm: async () => {


if (this.props.saveRecord) {                            


saved = await this.props.saveRecord(record, params);                


} else {                            


saved = await record.save();                        


}                        


if (saved && this.props.onSave) {                            


this.props.onSave(record, params);                        


}                    


},                    


cancel: () => {},                


};                


this.dialogService.add(ConfirmationDialog, confirmationDialogProps);            


} else {


if (this.props.saveRecord) {                    


saved = await this.props.saveRecord(record, params);                


} else {                    


saved = await record.save();                


}                


if (saved && this.props.onSave) {                    


this.props.onSave(record, params);                


}            


}            


return true;        


},    


});    


console.log("finish");    


}


Hope it helps

0
अवतार
खारिज करें
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

साइन अप करें
Related Posts Replies डेटा देखने का तरीका ऐक्टिविटी
Button in all modules
form odoo16features
अवतार
अवतार
अवतार
3
जून 23
4406
odoo 16 method that can be overriden when a form opens
form view odoo16features
अवतार
अवतार
1
मई 24
3417
Send an email automatically
mail form odoo16features
अवतार
1
सित॰ 23
3987
Reset some fields in a form to default value
form reset odoo16features
अवतार
अवतार
1
जून 23
5606
Submit button redirects to the first page of the notebook of form view
form backend odoo16features
अवतार
0
अप्रैल 23
3203
कम्यूनिटी
  • ट्यूटोरियल्स
  • दस्तावेज़
  • फ़ोरम
ओपन सोर्स
  • डाउनलोड
  • Github
  • रनबॉट
  • अनुवाद
सेवाएं
  • Odoo.sh Hosting
  • सहायता
  • अपग्रेड
  • कस्टम डेवलपमेंट्स
  • शिक्षा
  • अकाउंटेंट खोजें
  • पार्टनर ढूंढें
  • पार्टनर बनें
हमारे बारे में
  • हमारी कंपनी
  • ब्रांड ऐसेट
  • संपर्क करें
  • नौकरियां
  • इवेंट
  • पॉडकास्ट
  • ब्लॉग
  • ग्राहक
  • लीगल • गोपनीयता
  • सुरक्षा
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk Slovenščina Español (América Latina) Español Svenska ภาษาไทย Türkçe українська Tiếng Việt

Odoo, बिज़नेस से जुड़े ऐप्लिकेशन का एक कलेक्शन है जो ओपन सोर्स पर आधारित है. इसमें आपकी कंपनी की हर ज़रूरत के लिए ऐप्लिकेशन हैं. जैसे, सीआरएम, ई-कॉमर्स, अकाउंटिंग, इन्वेंट्री, पॉइंट ऑफ़ सेल, प्रोजेक्ट मैनेजमेंट वगैरह.

Odoo की सबसे बड़ी खासियत है कि यह इस्तेमाल करने में बहुत आसान है और यह पूरी तरह से इंटिग्रेट किया हुआ है.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now