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

Hello, please help. I wanted to filter the drop down list of many2one field base in the current user. My objective is, inside the sales order form, i've added a field called salesperson_code which is a many2one field where the source is a customize table I have created:

class SalesPersonCode(models.Model):
_name = 'sale.person.code'
_rec_name = 'salesperson_code'

salesperson = fields.Many2one('res.users', string='Salesman')
salesperson_code = fields.Char(string='Code')
Added field in sale.order table:

class SalesSampleCode(models.Model):
_inherit = 'sale.order'
    salesperson_code = fields.Many2one('sale.person.code', string='Salesman Code')

XML code:

<xpath expr="//field[@name='payment_term_id']" position="after">
<field name="salesperson_code" options="{'no_create': True, 'no_create_edit':True}"/>
</xpath>

Now I only want the many2one drop down, to list the salesman code that is assigned to a particular salesman, so my filter should be domain = [( 'salesperson' , '=', user.id )]. What is the right way to implement this.?

I was able to make it work using onchange but what I really want is, if he/she create or edit the form, it should be the right salesman code be given to the drop down list of the many2one field. Any help will be high appreciated. Thank you.

아바타
취소
베스트 답변

Hi,

I suggest you to use ir.rule, record rules are conditions that records must satisfy for an operation (create, read, write or delete) to be allowed. 

See the example in the below code : 

<record id="salesperson_groups_rule" model="ir.rule">
<field
name="name">Sales person: Access own sales person only</field>
<field
name="model_id" ref="model_sale_person_code"/>
<field
name="domain_force">[('salesperson', '=', user.id)]
</field>
</record>

Best regards!

아바타
취소
작성자

Best solution. Thank you very much brother Sylvain. God bless.

You're welcome! God bless you!

베스트 답변

Right answer

아바타
취소
관련 게시물 답글 화면 활동
3
8월 25
2253
3
7월 24
4798
3
11월 20
4463
1
11월 18
5990
5
2월 18
5068