Skip to Content
Odoo Меню
  • Увійти
  • Спробуйте це безкоштовно
  • Додатки
    Фінанси
    • Бухоблік
    • Виставлення рахунку
    • Витрати
    • Електронні таблиці (BI)
    • Документи
    • Підпис
    Продажі
    • CRM
    • Продажі
    • POS Магазин
    • POS Ресторан
    • Підписки
    • Оренда
    Веб-сайти
    • Конструктор веб-сайту
    • Електронна комерція
    • Блог
    • Форум
    • Живий чат
    • Електронне навчання
    Ланцюг поставок
    • Склад
    • Виробництво
    • PLM
    • Купівлі
    • Технічне обслуговування
    • Якість
    Кадри
    • Співробітники
    • Рекрутинг
    • Відпустки
    • Оцінювання
    • Рекомендації
    • Автотранспорт
    Маркетинг
    • Маркетинг соцмереж
    • Email-маркетинг
    • SMS-маркетинг
    • Події
    • Автом. маркетингу
    • Опитування
    Послуги
    • Проект
    • Табелі
    • Виїзне обслуговування
    • Служба підтримки
    • Планування
    • Призначення
    Продуктивність
    • Обговорення
    • Схвалення
    • IoT
    • IP-телефонія
    • База знань
    • WhatsApp
    Сторонні модулі Odoo Studio Платформа Odoo Cloud
  • Сфери
    Роздрібна торгівля
    • Книжковий магазин
    • Магазин одягу
    • Магазин меблів
    • Продуктовий магазин
    • Магазин будівельних матеріалів
    • Магазин іграшок
    Food & Hospitality
    • Бар та паб
    • Ресторан
    • Фастфуд
    • Guest House
    • Дистриб'ютор напоїв
    • Hotel
    Нерухомість
    • Real Estate Agency
    • Архітектурна фірма
    • Будівництво
    • Управління нерухомістю
    • Садівництво
    • Асоціація власників нерухомості
    Консалтинг
    • Бухгалтерська компанія
    • Партнер Odoo
    • Агенція маркетингу
    • Юридична фірма
    • Придбання Талантів
    • Аудит та сертифікація
    Виробництво
    • Textile
    • Metal
    • Меблі
    • Їжа
    • Brewery
    • Корпоративні подарунки
    Здоров'я & Фітнес
    • Спортивний клуб
    • Оптика
    • Фітнес-центр
    • Практики здоров'я
    • Аптека
    • Салон краси
    Trades
    • Ремонтник
    • IT-обладнання та Підтримка
    • Системи сонячної енергії
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Інші
    • Nonprofit Organization
    • Екологічна агенція
    • Оренда білбордів
    • Фотографія
    • Лізинг велосипедів
    • Реселлер програмного забезпечення
    Browse all Industries
  • Спільнота
    Навчання
    • Навчальний посібник
    • Документація
    • Сертифікації
    • Тренування
    • Блог
    • Подкаст
    Сприяйте Освіті
    • Програма навчання
    • Бізнес гра Scale Up!
    • Відвідайте Odoo
    Отримайте програмне забезпечення
    • Завантаження
    • Порівняйте версії
    • Релізи
    Співпрацюйте
    • Github
    • Форум
    • Події
    • Переклади
    • Стати партнером
    • Services for Partners
    • Зареєструйте вашу бухгалтерську фірму
    Отримайте послуги
    • Знайдіть партнера
    • Знайдіть бухгалтера
    • Зустріньтеся з консультантом
    • Послуги з впровадження
    • Референси клієнтів
    • Підтримка
    • Оновлення
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Отримати демо
  • Ціни
  • Допомога

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

  • CRM
  • e-Commerce
  • Бухоблік
  • Склад
  • PoS
  • Проект
  • MRP
All apps
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
All Posts Люди Значки
Мітки (View all)
odoo accounting v14 pos v15
Про цей форум
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
All Posts Люди Значки
Мітки (View all)
odoo accounting v14 pos v15
Про цей форум
Допомога

[V11]Override everything in existing views

Підписатися

Отримуйте сповіщення про активність щодо цієї публікації

Це запитання позначене
xmlviewbuttonoverride
3 Відповіді
9035 Переглядів
Аватар
Cayprol

Hi all,

I am trying to replace the position of smart button "Purchase" when viewing a product.

This smart button is injected by app "purchase" in the form view named "product.template.purchase.button.inherit"

Code is located in "purchase_views.xml" as below

<record id="view_product_template_purchase_buttons_from" model="ir.ui.view">

            <field name="name">product.template.purchase.button.inherit</field>
            <field name="model">product.template</field>
            <field name="inherit_id" ref="product.product_template_only_form_view"/>
            <field name="groups_id" eval="[(4, ref('purchase.group_purchase_user'))]"/>
            <field name="arch" type="xml">
                <button name="toggle_active" position="before">
                   <button class="oe_stat_button" name="%(purchase.action_purchase_line_product_tree)d"
                       type="action" icon="fa-shopping-cart">
                       <field string="Purchases" name="purchase_count" widget="statinfo"/>
                   </button>
                </button>
            </field>
</record>

Most smart buttons are placed by view inheritance with """ <button name="toggle_active" position="before"> """ in another module/app

I'd like to override everything in this view record by creating and loading a new xml file in my custom module. My understanding is that I need to refer to the right record id to override it.

My xml code:

 <?xml version="1.0" encoding="utf-8" ?>

<odoo>
 <data>
      <record id="purchase.view_product_template_purchase_buttons_from" model="ir.ui.view">
         <field name="name">product.template.purchase.button.inherit</field>
         <field name="model">product.template</field>
         <field name="inherit_id" ref="product.product_template_only_form_view"/>
         <field name="groups_id" eval="[(4, ref('purchase.group_purchase_user'))]"/>
         <field name="arch" type="xml">
            <button name="action_view_sales" position="after">
             <button class="oe_stat_button" name="%(purchase.action_purchase_line_product_tree)d" type="action" icon="fa-shopping-cart">
               <field string="Purchases" name="purchase_count" widget="statinfo"/>
             </button>
            </button>
         </field>
      </record>
 </data>
</odoo>

With my code, the error shows "purchase_count" is not found in model.

What is the correct way of replacing everything in existing view?

0
Аватар
Відмінити
Pujara Geet

Did You Taken Field "purchase_count" on .py File?.

Аватар
Zbik
Найкраща відповідь


 

In __manifest__.py (in your module), try this

'depends': ['purchase'],

0
Аватар
Відмінити
Аватар
Cayprol
Автор Найкраща відповідь

Hey guys, thank you for your help.

I did some testing today, though I am able to solve the problem by using Zbik's answer by including purchase module as dependency.
However, not every field needed to be addressed or CAN be addressed by adding module to dependencies.

I also tried to override record id "product_template_form_view_procurement_button" in the stock module(product.views.xml).
The button name to "Update Qty on Hand" cannot be found due to error shown as "Not being able to locate action_view_change_product_quantity", the original code:

<header position="inside">
    <button string="Update Qty On Hand"
            type="action" name="%(action_view_change_product_quantity)d"
            attrs="{'invisible': [('type', '!=', 'product')]}"/>
</header> 

In my override xml file, I solved the problem by changing this sector of code to:

<header position="inside">
    <button string="Update Qty On Hand"
            name="%(stock.action_view_change_product_quantity)d"             type="action"             attrs="{'invisible': [('type', '!=', 'product')]}"/>
</header>

With this, I don't need to include stock in 'depends' = ['stock'] in __manifest__.py

I am very curious why, but I suppose it has to do with the sequence of Odoo loading each module?


Here's all the override xml code

<?xml version="1.0" encoding="utf-8" ?>


<odoo>
 <data>

  <!-- Override view_product_template_purchase_buttons_from in purchase -->
        <record id="purchase.view_product_template_purchase_buttons_from" model="ir.ui.view">
         <field name="name">product.template.purchase.button.inherit</field>
         <field name="model">product.template</field>
         <field name="inherit_id" ref="product.product_template_only_form_view"/>
         <field name="groups_id" eval="[(4, ref('purchase.group_purchase_user'))]"/>
         <field name="arch" type="xml">
    <button name="action_view_sales" position="after">
     <button class="oe_stat_button" name="%(purchase.action_purchase_line_product_tree)d" type="action" icon="fa-shopping-cart">
      <field string="Purchases" name="purchase_count" widget="statinfo"/>
     </button>
    </button>
   </field>
  </record>

  <!-- Override product_template_form_view_procurement_button in stock -->
  <record id="stock.product_template_form_view_procurement_button" model="ir.ui.view">
   <field name="name">product.template_procurement</field>
   <field name="model">product.template</field>
   <field name="inherit_id" ref="product.product_template_only_form_view"/>
   <field name="arch" type="xml">
    <data>

     <header position="inside">
      <button name="%(stock.action_view_change_product_quantity)d" string="Update Qty On Hand" type="action" attrs="{'invisible': [('type', '!=', 'product')]}"/>
     </header>

     <button name="toggle_active" position="before">

      <button type="object" name="action_open_quants" attrs="{'invisible':[('type', '!=', 'product')]}" class="oe_stat_button" icon="fa-building-o">
       <field name="qty_available" widget="statinfo" string="On Hand"/>
      </button>

      <button string="Product Moves" type="object" name= "action_view_stock_move_lines" attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}" class="oe_stat_button" icon="fa-arrows-v" groups="stock.group_stock_user"/>
      <button type="object"
                      name="action_view_orderpoints"
                      attrs="{'invisible':['|',('type', '!=', 'product'),('nbr_reordering_rules', '==', 1)]}"
                      class="oe_stat_button"
                      icon="fa-refresh">
       <field name="nbr_reordering_rules" widget="statinfo"/>
      </button>

      <button type="object" name="action_view_orderpoints" attrs="{'invisible':['|',('type', '!=', 'product'),('nbr_reordering_rules', '!=', 1)]}" class="oe_stat_button" icon="fa-refresh">
       <div class="o_field_widget o_stat_info mr4">
        <span class="o_stat_text">Min:</span>
        <span class="o_stat_text">Max:</span>
       </div>
       <div class="o_field_widget o_stat_info">
        <span class="o_stat_value"><field name="reordering_min_qty"/></span>
        <span class="o_stat_value"><field name="reordering_max_qty"/></span>
       </div>
      </button>

      <button string="Routes" type="object" name="action_view_routes" attrs="{'invisible':[('type', '!=', 'product')]}" class="oe_stat_button" icon="fa-cogs" groups="base.group_no_one"/>

      <button string="Lot/Serial Number" type="object" name="action_open_product_lot" attrs="{'invisible': [('tracking', '=', 'none')]}" class="oe_stat_button" icon="fa-bars" groups="stock.group_production_lot"/>

     </button>

     <button name="toggle_active" position="after">
      <button type="action" name="%(stock.action_stock_level_forecast_report_template)d" attrs="{'invisible':[('type', '!=', 'product')]}" class="oe_stat_button" icon="fa-building-o">
       <div class="o_field_widget o_stat_info">
        <span class="o_stat_value"><field name="virtual_available" widget="statinfo" nolabel="1"/>
         <span attrs="{'invisible':[('outgoing_qty', '=', 0),('incoming_qty','=',0)]}" groups="base.group_no_one">
                                  (-<field name="outgoing_qty" widget="statinfo" nolabel="1"/>+<field name="incoming_qty" widget="statinfo" nolabel="1"/>)
         </span>
        </span>
        <span class="o_stat_text">Forecasted</span>
       </div>
      </button>
     </button>


     <xpath expr="//group[@name='group_lots_and_weight']" position="attributes">
      <attribute name="attrs">{'invisible':['|', ('type', 'not in', ['product', 'consu']), ('product_variant_count', '&gt;', 1)]}</attribute>
     </xpath>

     <xpath expr="//group[@name='group_lots_and_weight']" position="inside">
      <field name="responsible_id"/>
     </xpath>

          </data>
      </field>
  </record>

 </data>
</odoo>
Link to final result screenshot: https://imgur.com/h19PeLI

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 Відповіді Переглядів Дія
[8.0] How to put a button at the label position? Вирішено
xml view button
Аватар
Аватар
1
квіт. 17
4693
Dear Odoo, Can You Please Add "disabled" Attribute? Вирішено
attrs xml view button attributes
Аватар
Аватар
Аватар
2
вер. 24
5437
how shall I put a button in the center of its line? Вирішено
xml button
Аватар
Аватар
Аватар
2
лип. 19
9868
How do I remove a button from the sale.order.form? Вирішено
xml view
Аватар
Аватар
Аватар
Аватар
Аватар
6
вер. 17
9414
display view if user is anonymous
xml view
Аватар
Аватар
1
бер. 15
5178
Спільнота
  • Навчальний посібник
  • Документація
  • Форум
Open Source
  • Завантаження
  • Github
  • Runbot
  • Переклади
Послуги
  • Хостинг Odoo.sh
  • Підтримка
  • Оновлення
  • Кастомні доробки
  • Навчання
  • Знайдіть бухгалтера
  • Знайдіть партнера
  • Стати партнером
Про нас
  • Наша компанія
  • Торгові активи
  • Зв'яжіться з нами
  • Вакансії
  • Події
  • Подкаст
  • Блог
  • Клієнти
  • Юридичні документи • Конфіденційність
  • Безпека
الْعَرَبيّة 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 - це набір програм для роботи з відкритим кодом, які охоплюють всі ваші потреби компанії: CRM, електронна комерція, бухгалтерський облік, склад, точка продажу, управління проектами тощо.

Унікальна пропозиція 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