Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
1 Odpowiedz
8278 Widoki

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

Awatar
Odrzuć
Najlepsza odpowiedź

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.

Awatar
Odrzuć
Autor

Thanks. It works.

Powiązane posty Odpowiedzi Widoki Czynność
1
mar 15
4687
3
lip 25
4716
0
maj 25
1137
0
paź 24
1945
0
sie 24
1737