Skip to Content
Menu
This question has been flagged
3 Replies
409 Views

I am using Odoo.sh in version 18.0, how can I modify the lost reason field in the crm module in a way, that it is required to fill before a user can mark the lead/opportunity as lost? 

I tried to change it with activated developer mode by going to the field options and ticking the box for "required" as shown in the picture below, but when I try to save the changes it says that I can not change it like this, I would need to change it with some python code preferably with an own module. Is that really necessary? It seeems that needing to make a own module in order to be able to make such a small change to the user experience feels like a bit over the top. 

Is there any faster/easier way to do this?

Thanks in advance. 

Avatar
Discard

Every time I have made optional things required in Odoo I end up with "." or some other entry that means "I don't know" or "I am just putting something there because it forces me to" - so be prepared for that.

The remark of Ray is true. It is difficult to ask users to add some valid reason to a required field. And the select box does categorize the reason already. So managing the list of reasons is probably the better way to go.

Best Answer

Hi,

1. From UI



When you enable Developer Mode in Odoo, you’ll see the bug icon, often referred to as the superuser or debug icon, appear in the top-left corner of forms and pop-ups.




Clicking this icon allows you to access technical tools. For example, if you click the superuser (bug) icon and then select "View: Form", Odoo will open the XML definition of the form view currently being displayed.


Add attribute required="True" to the field lost_reason_id



Then save the record. You can see that lost reason is mandatory before marking it as lost



2. By using Code


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

    <field name="name">crm.lead.lost.form</field>

    <field name="model">crm.lead.lost</field>

    <field name="inherit_id"

           ref="crm.crm_lead_lost_view_form"/>

    <field name="arch" type="xml">

          <xpath expr="//field[@name='lost_reason_id']" position="attributes">

            <attribute name="required">1</attribute>

        </xpath>

    </field>

</record>



Hope it helps.

Avatar
Discard
Author Best Answer

How am I able to modify that form with the Studio? If I open the crm module in the Studio I am only able to modify the standard view, not the window which opens after I click on "Lost". That form is not visible in Studio?

EDIT:
I managed to do it now with a inherited view, so I didn't have to change anything in the original form. I inherited the crm.lead.lost.form, copied the xml of that form and added <xpath expr="//form" position="replace"> in front of it, then I could add the parameter required="1" to the field. This works fine for me.

Avatar
Discard
Best Answer

The best way is probably with the Studio.

  • Open the form with studio.
  • Select the field or checkbox
  • Set the property required

Hope this helps


Ah this makes it a bit more complex maybe. But you can change the XML in the crm.lead.lost.form (line 5).



You can get there by go to:

  • Settings
  • Technical | Actions | Window actions
  • Search Mark Lost
  • Open the Window Action
  • Open the view ref (arrow to the right)

Add required="1" to the line and safe


You probably want to change some things to the message too.


Avatar
Discard
Related Posts Replies Views Activity
2
May 25
1268
1
Apr 25
1196
0
Mar 25
1346
0
Mar 25
1236
0
Jan 25
10