unis_crm/sql/20260702_opportunity_owners...

48 lines
1.8 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

-- 2026-07-02 商机业绩归属地与数据授权区域范围升级脚本
--
-- 本次升级内容:
-- 1. 为 crm_opportunity 增加 project_ownership_location 字段。
-- 2. 将已有业绩归属地文本值尽量规范为 cnarea.level = 1 的 area_code。
-- 3. 为 sys_user_data_scope_user 增加商机业绩归属地授权范围字段。
-- 4. 旧授权默认保持“全部归属地”,不会收窄已有可见范围。
begin;
alter table if exists crm_opportunity
add column if not exists project_ownership_location varchar(100);
comment on column crm_opportunity.project_ownership_location is '业绩归属地编码,对应 cnarea.area_code';
do $$
begin
if to_regclass('public.cnarea') is not null then
update crm_opportunity o
set project_ownership_location = c.area_code
from cnarea c
where c.level = 1
and coalesce(nullif(btrim(o.project_ownership_location), ''), '') <> ''
and (
o.project_ownership_location = c.short_name
or o.project_ownership_location = c.name
)
and o.project_ownership_location is distinct from c.area_code;
end if;
end $$;
alter table if exists sys_user_data_scope_user
add column if not exists area_scope_type varchar(20) not null default 'ALL';
alter table if exists sys_user_data_scope_user
add column if not exists area_codes varchar(100)[] not null default '{}'::varchar[];
update sys_user_data_scope_user
set area_scope_type = 'ALL',
area_codes = '{}'::varchar[]
where area_scope_type is null
or area_scope_type = '';
comment on column sys_user_data_scope_user.area_scope_type is '商机业绩归属地范围ALL全部归属地/CUSTOM指定归属地';
comment on column sys_user_data_scope_user.area_codes is '指定可见的商机业绩归属地编码列表,对应 cnarea.area_code';
commit;