Overslaan naar inhoud
Menu
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Deze vraag is gerapporteerd
1 Beantwoorden
7909 Weergaven

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
Annuleer
Beste antwoord

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
Annuleer
Auteur

Thanks. It works.

Gerelateerde posts Antwoorden Weergaven Activiteit
1
mrt. 15
4318
3
jul. 25
3957
0
mei 25
764
0
okt. 24
1575
0
aug. 24
1407