Skip to Content
Menu
Dette spørgsmål er blevet anmeldt
1 Svar
8079 Visninger

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
Kassér
Bedste svar

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
Kassér
Forfatter

Thanks. It works.

Related Posts Besvarelser Visninger Aktivitet
1
mar. 15
4481
3
jul. 25
4417
0
maj 25
925
0
okt. 24
1766
0
aug. 24
1587