Skip to Content
मेन्यू
This question has been flagged
1 Reply
7952 Views

Hi Team,

In Openerp report object, such as "crm.lead.report", the generation of the view is from a sql query:

 cr.execute("""
        CREATE OR REPLACE VIEW crm_lead_report AS (
            SELECT
                id,

                to_char(c.date_deadline, 'YYYY') as deadline_year,
                to_char(c.date_deadline, 'MM') as deadline_month,
                to_char(c.date_deadline, 'YYYY-MM-DD') as deadline_day,

                to_char(c.create_date, 'YYYY') as creation_year,
                to_char(c.create_date, 'MM') as creation_month,
                to_char(c.create_date, 'YYYY-MM-DD') as creation_day,

                to_char(c.date_open, 'YYYY-MM-DD') as opening_date,
                to_char(c.date_closed, 'YYYY-mm-dd') as date_closed,

                c.state,
                c.user_id,
                c.probability,
                c.stage_id,
                c.type,
                c.company_id,
                c.priority,
                c.section_id,
                c.channel_id,
                c.type_id,
                c.partner_id,
                c.country_id,
                c.planned_revenue,
                c.planned_revenue*(c.probability/100) as probable_revenue,
                1 as nbr,
                date_trunc('day',c.create_date) as create_date,
                extract('epoch' from (c.date_closed-c.create_date))/(3600*24) as  delay_close,
                abs(extract('epoch' from (c.date_deadline - c.date_closed))/(3600*24)) as  delay_expected,
                extract('epoch' from (c.date_open-c.create_date))/(3600*24) as  delay_open
            FROM
                crm_lead c
            WHERE c.active = 'true'
        )""")

As a result, all the domain restriction cannot take effect here. And every user can view all company's data within the report no matter these companies have any connection. For example, user A is from Company A, but he can see company B,C,Ds' records in the report. Is there any workaround to fix the issue?

Regards Sage

Avatar
Discard
Best Answer

You can use domains also in osv.Memory objects without any restriction.

You can define a new access rule for "crm.lead.report" with domain

['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]

This should limit the access to data related to the users company.

Avatar
Discard
Author

Thanks. It works.

Related Posts Replies Views Activity
1
मार्च 15
4355
3
जुल॰ 25
4079
0
मई 25
791
0
अक्तू॰ 24
1608
0
अग॰ 24
1449