保单分配属性标记业务逻辑.txt
3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
参数:
p_branch_code 机构代码
p_policy_no 保单号
p_assign_rule 分单标记 ----01正常分单,02跨机构分单,03跨渠道分单
p_assign_branch_code 分单机构代码
p_assign_channel_type 分单渠道代码
后台校验
一:只有86总公司用户才有权限执行保单分配属性标记操作
二:p_assign_rule 在01,02,03范围内
获取保单基本信息:
select p.branch_code,
(
select bi.branch_level
from branch_info bi
where bi.branch_code = p.branch_code
),
(
select bi.parent_branch
from branch_info bi
where bi.branch_code = p.branch_code
),
p.channel_type,
nvl(r.assign_rule,'01'),
nvl(r.assign_branch_code,p.branch_code),
nvl(r.assign_channel_type,p.channel_type)
into v_branch_code,v_branch_level,v_branch_parent,v_channel_type,
v_earlier_rule,v_earlier_branch_code,v_earlier_channel_type
from policy p,rn_policy_service_info r
where p.policy_no = p_policy_no
and p.policy_no = r.policy_no;
三:
1;01正常分单
if v_earlier_rule = p_assign_rule then
return
原分单规则已经为正常分单
2;02跨机构分单
2.1
select count(1) into v_cnt from branch_info bi where bi.branch_code = p_assign_branch_code;
如果机构不存在,则return
2.2
select bi.branch_level
into v_branch_level_1
from branch_info bi
where bi.branch_code = p_assign_branch_code;
if v_branch_level_1 in ('01','02') then
return 不能调整到一级或者二级机构去
2.3
if v_branch_level = '04' and v_branch_level_1 = '03' then
if v_branch_parent = p_branch_code then
保单所属机构为' || v_branch_code || ',不能调整至' || p_branch_code;
return
PS:v_branch_parent ---上级机构
2.4
--分单机构不能跟保单所属机构一样
if p_assign_branch_code = v_branch_code then
return
2.5
原规则也是02时,校验:
if v_earlier_rule = '02' then
if p_assign_branch_code = v_earlier_branch_code then
return '跨分单机构' '不能与原跨分单机构' 一致
03 跨渠道分单-个经
3.1--校验p_assign_channel_type是否存在
select count(1) into v_cnt from channel_type_tbl where channel_type = p_assign_channel_type;
不存在则return
3.2
--分单渠道不能跟保单所属渠道一样
if p_assign_channel_type = v_channel_type then
return
3.3原规则也是03时,校验:
if v_earlier_rule = '03' then
if p_assign_channel_type = v_earlier_channel_type then
跨分单渠道 不能与原跨分单机构一致
return
3.4目前仅支持个险保单跨经代分单
if v_earlier_channel_type <> '01' or p_assign_channel_type <> '03' then
return
满足校验条件则开始做跟新操作
update rn_policy_service_info a
set a.assign_rule = p_assign_rule,
a.assign_branch_code = v_next_branch_code,
a.assign_channel_type = v_next_channel_type
where a.policy_no = p_policy_no;
--保存记录
insert into rn_assign_rule_chg_record
(policy_no,
branch_code,
earlier_assign_rule,
next_assign_rule,
earlier_branch_code,
next_branch_code,
earlier_channel_type,
next_channel_type,
change_user,
change_date)
values
(p_policy_no,
v_branch_code,
v_earlier_rule,
v_next_rule,
v_earlier_branch_code,
v_next_branch_code,
v_earlier_channel_type,
v_next_channel_type,
pub_sys_package.get_user,
sysdate);
sysdate);