콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다

I am working with Odoo 18 and have inherited the state field from account.move. I added a new state (to_approve) to the selection using selection_add. However, in the status bar, the states are not displayed in the correct order (draft → to_approve → posted). Instead, they appear as draft → posted → to_approve.

Here’s my code:

/python file snippet-----------------------

state = fields.Selection(

    selection_add=[("to_approve", "To Approve")],

    ondelete={'to_approve': 'set default'}

)

/xml file snippet-----------------------

<field name="state" position="attributes">

    <attribute name="statusbar_visible">draft,to_approve,posted</attribute>

</field>


아바타
취소
작성자 베스트 답변

By default, new states added with selection_add are appended to the end of the existing selection list, which disrupts the desired order.

You can explicitly reorder the states by including existing ones in your selection_add.

state = fields.Selection(

    selection_add=[("to_approve", "To Approve"), ("posted",)],

    ondelete={'to_approve': 'set default'}

)

("posted",) is an existing option from the original state field. By including it in selection_add, you are effectively redefining its position in the list.


In your XML file, ensure the statusbar_visible attribute aligns with the desired order:

<field name="state" position="attributes">

    <attribute name="statusbar_visible">draft,to_approve,posted</attribute>

</field>


The status bar will now display the states in the desired order: Draft → To Approve → Posted.


Best Regards,

NIZAMUDHEEN MJ
Accurates

아바타
취소
관련 게시물 답글 화면 활동
3
1월 24
15965
0
10월 23
2410
4
5월 19
12364
1
3월 15
7253
2
3월 15
6373