{"id":1220,"date":"2024-07-06T14:21:07","date_gmt":"2024-07-06T14:21:07","guid":{"rendered":"https:\/\/sienna-manatee-218967.hostingersite.com\/blogs\/herencia-de-modelos-y-vistas-en-odoo-2\/"},"modified":"2026-05-03T23:47:22","modified_gmt":"2026-05-03T23:47:22","slug":"herencia-de-modelos-y-vistas-en-odoo","status":"publish","type":"post","link":"https:\/\/exdoo.mx\/blogs\/herencia-de-modelos-y-vistas-en-odoo\/","title":{"rendered":"Herencia de modelos y vistas en Odoo"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/herencia-logo-dJo47N85D0hR5DNv-2.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<div style=\"background:linear-gradient(135deg,#0A7099 0%,#0d8db8 100%);color:#fff;padding:28px 26px;border-radius:16px;margin:0 0 28px;box-shadow:0 4px 16px rgba(10,112,153,.2);\">\n<div style=\"display:inline-block;background:rgba(255,255,255,.18);padding:6px 14px;border-radius:20px;font-size:12px;font-weight:700;letter-spacing:.5px;margin-bottom:12px;color:#fff;\">\ud83d\udcd8 ART\u00cdCULO T\u00c9CNICO<\/div>\n<p style=\"font-size:16px;line-height:1.6;margin:0;color:#fff;opacity:.95;\">Para ese ejercicio agregaremos a ventas un campo llamado \u201cFecha promesa de entrega\u201d (tipo date) y a las l\u00edneas de la venta agregaremos el campo \u201cCosto del producto\u201d (tipo monetary) que ser\u00e1 el costo del producto seleccionado.<\/p>\n<\/div>\n<p class=\"body\" dir=\"auto\">Cuando se va a crear un m\u00f3dulo que agregara nueva funcionalidad o nuevos atributos a modelos base, debemos indicar en nuestro archivo <strong><em><a href=\"http:\/\/manifest.py\">manifest<\/a><\/em><\/strong><em><a href=\"http:\/\/manifest.py\">.py<\/a><\/em> en el atributo <strong><em>\u201cdepends\u201d<\/em><\/strong> los m\u00f3dulos que necesitaremos para que el nuestro funcione o los m\u00f3dulos donde agregaremos la funcionalidad o atributos extra.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_023758_pm-Aq2olN1R42cjKr7X-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<h3 style=\"color:#0A7099;margin-top:24px;\"><span>Para agregar nuevo atributo a modelos ya existentes, es necesario conocer el nombre del modelo, para obtenerlo tenemos 2 opciones<\/span><\/h3>\n<p class=\"body\" dir=\"auto\"><span>1.- C\u00f3digo base:<\/span><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_024044_pm-mjE9Z5LlNJUG444G-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<p class=\"body\" dir=\"auto\">2.- Dentro de odoo, utilizando las herramientas de modo desarrollador seleccionamos alg\u00fan campo dentro del modelo y nos mostrar\u00e1 un popup donde se ver\u00e1 el modelo.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_024245_pm-mp89k76XklcPl2Dw-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<p class=\"body\" dir=\"auto\">Para agregar un nuevo atributo, se declara la clase heredando el nombre del modelo y utilizando la palabra <strong><em>\u201cinherit\u201d.<\/em><\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_024419_pm-m5KbjrrvGjfKl71y-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<p class=\"body\" dir=\"auto\">Para agregar el campo en la vista formulario de la venta, debemos heredar la vista de <strong><em>sale.order<\/em><\/strong>.<\/p>\n<p class=\"body\" dir=\"auto\">Se crea una vista con los atributos b\u00e1sicos, pero adem\u00e1s se agrega el atributo \u201c<em>inherit<\/em>\u201d y como par\u00e1metro el nombre de la vista a heredar, compuesto por el nombre del m\u00f3dulo que creo la vista y el xml_id de la vista.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_024653_pm-AVLbnNb0BjhKp3Vr-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<h3 style=\"color:#0A7099;margin-top:24px;\">Para indicar donde queremos mostrar nuestro nuevo atributo en la vista, debemos saber el nombre de un atributo, en este ejercicio usamos <em>\u201chas_active_pricelit\u201d<\/em> y agregar el atributo position, es posible usar:<\/h3>\n<p class=\"body\" dir=\"auto\">&#8211; <strong><em>position=&#8221;before&#8221;:<\/em><\/strong> Inserta el nuevo campo antes del campo especificado.<\/p>\n<p class=\"body\" dir=\"auto\">&#8211; <strong><em>position=&#8221;after&#8221;:<\/em><\/strong> Inserta el nuevo campo despu\u00e9s del campo especificado.<\/p>\n<p class=\"body\" dir=\"auto\">&#8211; <strong><em>position=&#8221;replace&#8221;:<\/em><\/strong> Reemplaza el campo especificado con el nuevo contenido.<\/p>\n<p class=\"body\" dir=\"auto\">&#8211; <strong><em>position=&#8221;inside&#8221;:<\/em><\/strong> Inserta el nuevo contenido dentro del campo especificado, si es un contenedor.<\/p>\n<p class=\"body\" dir=\"auto\">As\u00ed es como se muestra el campo en la vista formulario:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_025204_pm-AE04VvPlojTpKDM0-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<p class=\"body\" dir=\"auto\">Para agregar el costo en la l\u00ednea de venta, usaremos la herencia en la vista por ruta.<\/p>\n<p class=\"body\" dir=\"auto\">Para esto agregamos el atributo a la l\u00ednea de la venta.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_025408_pm-ALpoVb2XQ6CyEPL5-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<p class=\"body\" dir=\"auto\">Para esta herencia debemos ver la ruta por etiquetas a las que debemos ingresar, para indicar donde encontrar el campo que necesitamos y poner nuestro nuevo atributo.<\/p>\n<p class=\"body\" dir=\"auto\">Si lo queremos agregar despu\u00e9s del precio unitario, debemos llegar hasta el campo <em>price_unit<\/em> y si buscamos la vista de las l\u00edneas, esta se encuentra embebida dentro de la vista formulario de ventas<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_025610_pm-Aq2olNbDEkIpBZkZ-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<p class=\"body\" dir=\"auto\"><span>Se debe seguir la ruta del campo \u201c<em>order_line\u201d<\/em> hasta la vista <em>tree<\/em> creada dentro del formulario de la venta<\/span><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_025808_pm-m7VKykGob5TVnPP5-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_030208_pm-dWxbP0gD7qc90DN1-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<p class=\"body\" dir=\"auto\">Utilizando la etiqueta <em>\u201cxpath\u201d<\/em> buscamos el campo \u201c<em>price_unit\u201d<\/em> para agregar el costo delante.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_030410_pm-Aq2olNPBlwu23WzL-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<p class=\"body\" dir=\"auto\">As\u00ed es como es muestra el campo de Costo de producto en la vista.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura_sin_tatulo_070624_030645_pm-mp89k72oyKhePO9o-2.jpg\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<p class=\"body\" dir=\"auto\"><span><strong>Si tiene dudas, no dude en ponerse en contacto con nosotros a trav\u00e9s del correo: <a href=\"mailto:info@exdoo.mx\">info@exdoo.mx<\/a>.<\/strong><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udcd8 ART\u00cdCULO T\u00c9CNICO Para ese ejercicio agregaremos a ventas un campo llamado \u201cFecha promesa de entrega\u201d (tipo date) y a las l\u00edneas de la venta agregaremos el campo\u2026<\/p>\n","protected":false},"author":5,"featured_media":1206,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-1220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/1220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/comments?post=1220"}],"version-history":[{"count":2,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/1220\/revisions"}],"predecessor-version":[{"id":1883,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/1220\/revisions\/1883"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/media\/1206"}],"wp:attachment":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/media?parent=1220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/categories?post=1220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/tags?post=1220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}