Ir al contenido
Odoo Menú
  • Identificarse
  • Pruébalo gratis
  • Aplicaciones
    Finanzas
    • Contabilidad
    • Facturación
    • Gastos
    • Hoja de cálculo (BI)
    • Documentos
    • Firma electrónica
    Ventas
    • CRM
    • Ventas
    • TPV para tiendas
    • TPV para restaurantes
    • Suscripciones
    • Alquiler
    Sitios web
    • Creador de sitios web
    • Comercio electrónico
    • Blog
    • Foro
    • Chat en directo
    • e-learning
    Cadena de suministro
    • Inventario
    • Fabricación
    • PLM
    • Compra
    • Mantenimiento
    • Calidad
    Recursos Humanos
    • Empleados
    • Reclutamiento
    • Ausencias
    • Evaluación
    • Referencias
    • Flota
    Marketing
    • Marketing social
    • Marketing por correo electrónico
    • Marketing por SMS
    • Eventos
    • Automatización de marketing
    • Encuestas
    Servicios
    • Proyecto
    • Partes de horas
    • Servicio de campo
    • Servicio de asistencia
    • Planificación
    • Citas
    Productividad
    • Conversaciones
    • Aprobaciones
    • IoT
    • VoIP
    • Conocimientos
    • WhatsApp
    Aplicaciones de terceros Studio de Odoo Plataforma de Odoo Cloud
  • Industrias
    Comercio al por menor
    • Librería
    • Tienda de ropa
    • Tienda de muebles
    • Tienda de ultramarinos
    • Ferretería
    • Juguetería
    Alimentación y hostelería
    • Bar y taberna
    • Restaurante
    • Comida rápida
    • Casa de huéspedes
    • Distribuidor de bebidas
    • Hotel
    Inmueble
    • Agencia inmobiliaria
    • Estudio de arquitectura
    • Construcción
    • Gestión inmobiliaria
    • Jardinería
    • Asociación de propietarios
    Consultoría
    • Empresa contable
    • Partner de Odoo
    • Agencia de marketing
    • Bufete de abogados
    • Adquisición de talentos
    • Auditorías y certificaciones
    Fabricación
    • Textil
    • Metal
    • Muebles
    • Alimentos
    • Brewery
    • Regalos de empresas
    Salud y bienestar
    • Club deportivo
    • Óptica
    • Gimnasio
    • Terapeutas
    • Farmacia
    • Peluquería
    Oficios
    • Handyman
    • Hardware y asistencia informática
    • Sistemas de energía solar
    • Zapatero
    • Servicios de limpieza
    • Servicios de calefacción, ventilación y aire acondicionado
    Otros
    • Organización sin ánimo de lucro
    • Agencia de protección del medio ambiente
    • Alquiler de paneles publicitarios
    • Estudio fotográfico
    • Alquiler de bicicletas
    • Distribuidor de software
    Explorar todos los sectores
  • Comunidad
    Aprender
    • Tutoriales
    • Documentación
    • Certificaciones
    • Formación
    • Blog
    • Podcast
    Potenciar la educación
    • Programa de formación
    • Scale Up! El juego empresarial
    • Visita Odoo
    Obtener el software
    • Descargar
    • Comparar ediciones
    • Versiones
    Colaborar
    • GitHub
    • Foro
    • Eventos
    • Traducciones
    • Convertirse en partner
    • Servicios para partners
    • Registrar tu empresa contable
    Obtener servicios
    • Encontrar un partner
    • Encontrar un asesor fiscal
    • Contacta con un experto
    • Servicios de implementación
    • Referencias de clientes
    • Ayuda
    • Actualizaciones
    GitHub YouTube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Solicitar una demostración
  • Precios
  • Ayuda

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Contabilidad
  • Inventario
  • PoS
  • Proyecto
  • MRP
All apps
Debe estar registrado para interactuar con la comunidad.
Todas las publicaciones Personas Insignias
Etiquetas (Ver todo)
odoo accounting v14 pos v15
Acerca de este foro
Debe estar registrado para interactuar con la comunidad.
Todas las publicaciones Personas Insignias
Etiquetas (Ver todo)
odoo accounting v14 pos v15
Acerca de este foro
Ayuda

How to override save & new button functionality ?

Suscribirse

Reciba una notificación cuando haya actividad en esta publicación

Se marcó esta pregunta
webbuttonjswebmoduleoverride
1 Responder
16541 Vistas
Avatar
nagarjuna

I would like to override the default save & new button functionality ?

the button view is located at web\static\src\xml\base.xml and button click functionality is web\static\src\js\view_form.js.

i manged to override view by adding new xml file at mymodule\static\src\xml\custom.xml

<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="AbstractFormPopup.buttons">
    <t t-if="! readonly">
        <t t-if="! multi_select">
            <button type="button" class="oe_button oe_abstractformpopup-form-save oe_highlight">Save</button>
        </t>
        <t t-if="multi_select">
            <button type="button" class="oe_button oe_abstractformpopup-form-save oe_highlight">Save &amp; Close</button>
            <button type="button" class="oe_button oe_abstractformpopup-form-save-new oe_highlight">My Own Button</button>
        </t>
        or
    </t>
    <a class="oe_abstractformpopup-form-close oe_bold oe_form_button_cancel" href="javascript:void(0)">
        <t t-if="! readonly">
            Discard
        </t>
        <t t-if="readonly">
            Close
        </t>
    </a>
</t>
</templates>

and adding

'qweb': [
        "static/src/xml/base.xml",
    ],

in _openerp_.py

now button name is changed but the functionality is default functionality. how can i change that default button functionality ?

0
Avatar
Descartar
Avatar
Axel Mendoza
Mejor respuesta

To do that you need to add this code in a loaded js file of your module defined in the backend assets template(search others posts for that), changing the code in bold for your needs

instance.web.form.AbstractFormPopup.include({

setup_form_view: function() {

var self = this;

if (this.row_id) {

this.dataset.ids = [this.row_id];

this.dataset.index = 0;

} else {

this.dataset.index = null;

}

var options = _.clone(self.options.form_view_options) || {};

if (this.row_id !== null) {

options.initial_mode = this.options.readonly ? "view" : "edit";

}

_.extend(options, {

$buttons: this.$buttonpane,

});

this.view_form = new instance.web.FormView(this, this.dataset, this.options.view_id || false, options);

if (this.options.alternative_form_view) {

this.view_form.set_embedded_view(this.options.alternative_form_view);

}

this.view_form.appendTo(this.$el.find(".oe_popup_form"));

this.view_form.on("form_view_loaded", self, function() {

var multi_select = self.row_id === null && ! self.options.disable_multiple_selection;

self.$buttonpane.html(QWeb.render("AbstractFormPopup.buttons", {

multi_select: multi_select,

readonly: self.row_id !== null && self.options.readonly,

}));

var $snbutton = self.$buttonpane.find(".oe_abstractformpopup-form-save-new");

$snbutton.click(function() {

alert('test');

$.when(self.view_form.save()).done(function() {

self.view_form.reload_mutex.exec(function() {

self.view_form.on_button_new();

});

});

});

var $sbutton = self.$buttonpane.find(".oe_abstractformpopup-form-save");

$sbutton.click(function() {

$.when(self.view_form.save()).done(function() {

self.view_form.reload_mutex.exec(function() {

self.check_exit();

});

});

});

var $cbutton = self.$buttonpane.find(".oe_abstractformpopup-form-close");

$cbutton.click(function() {

self.view_form.trigger('on_button_cancel');

self.check_exit();

});

self.view_form.do_show();

});

}

});

to what you need

0
Avatar
Descartar
nagarjuna
Autor

Thanks for the reply Axel, is it enough to add above part of the code in the local module js ? or do i need to add remaining js content from the view_form.js (which is located at web/static/js folder).

Axel Mendoza

I don't understand. You need to put that code in a js file that contains the odoo js declaration header and that file it's declared using template asset declaration. No need for add extra content from view_form.js

nagarjuna
Autor

Hi Axel, i did that, now i need to call a python method from the js by passing the arguments (cr,ids,uid etc...). i am able to call a plane method but unable to send these argument related to the form. do u have any idea?

Axel Mendoza

That is another question that you could find the answer in so many others post in the forum, don't mess up the question objetive

¿Le interesa esta conversación? ¡Participe en ella!

Cree una cuenta para poder utilizar funciones exclusivas e interactuar con la comunidad.

Inscribirse
Publicaciones relacionadas Respuestas Vistas Actividad
Could not find client action Resuelto
web webmodule
Avatar
Avatar
Avatar
Avatar
3
mar 15
21567
How to override the web module by custom module
web override
Avatar
Avatar
1
mar 15
13802
Overriding odoo javascript function (start.js file in web addon)
webclient web webmodule
Avatar
0
dic 24
2388
How to inherit js function in odoo v15.
js override v15
Avatar
1
ago 22
48
Odoo 14 Web Button
web button download
Avatar
Avatar
Avatar
2
mar 21
4632
Comunidad
  • Tutoriales
  • Documentación
  • Foro
Código abierto
  • Descargar
  • GitHub
  • Runbot
  • Traducciones
Servicios
  • Alojamiento Odoo.sh
  • Ayuda
  • Actualizar
  • Desarrollos personalizados
  • Educación
  • Encontrar un asesor fiscal
  • Encontrar un partner
  • Convertirse en partner
Sobre nosotros
  • Nuestra empresa
  • Activos de marca
  • Contacta con nosotros
  • Puestos de trabajo
  • Eventos
  • Podcast
  • Blog
  • Clientes
  • Información legal • Privacidad
  • Seguridad
الْعَرَبيّة 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 ภาษาไทย Türkçe українська Tiếng Việt

Odoo es un conjunto de aplicaciones de código abierto que cubren todas las necesidades de tu empresa: CRM, comercio electrónico, contabilidad, inventario, punto de venta, gestión de proyectos, etc.

La propuesta única de valor de Odoo es ser muy fácil de usar y totalmente integrado.

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