[Home] [Help]
PACKAGE BODY: APPS.PV_DIRECT_ASSIGN_WRAPPER_PUB
Source
1 package body PV_DIRECT_ASSIGN_WRAPPER_PUB as
2 /* $Header: pvxpdawb.pls 115.14 2004/06/29 16:32:45 dhii ship $*/
3
4
5 --=============================================================================+
6 --| Procedure |
7 --| |
8 --| Create_Assignment_Wrapper |
9 --| This procedure is a wrapper over the CreateAssignment procedure. |
10 --| It takes care of the Opportunites to be assigned when the |
11 --| opportunity comes from OTS. |
12 --| Parameters |
13 --| IN p_api_version_number - |
14 --| p_init_msg_list |
15 --| p_commit |
16 --| p_validation_level |
17 --| p_entity - 'OPPORUNITY' |
18 --| p_lead_id - Lead_id |
19 --| p_creating_username |
20 --| p_bypass_cm_ok_flag |
21 --| OUT |
22 --| x_return_status |
23 --| x_msg_count |
24 --| x_msg_data |
25 --| |
26 --| NOTES |
27 --| |
28 --| HISTORY |
29 --| |
30 --==============================================================================
31
32 Procedure Create_Assignment_Wrapper ( p_api_version_number IN NUMBER
33 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
34 ,p_commit IN VARCHAR2 := FND_API.G_TRUE
35 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
36 ,p_entity IN VARCHAR2
37 ,p_lead_id IN NUMBER
38 ,p_creating_username IN VARCHAR2
39 ,p_bypass_cm_ok_flag IN VARCHAR2
40 ,x_return_status OUT NOCOPY VARCHAR2
41 ,x_msg_count OUT NOCOPY NUMBER
42 ,x_msg_data OUT NOCOPY VARCHAR2
43 ) IS
44 Type assignment_rec is REF CURSOR;
45 assignment_cur assignment_rec;
46
47 --l_mode varchar2(10) := 'EMPLOYEE';
48 l_partner_id_tbl JTF_NUMBER_TABLE;
49 l_rank_tbl JTF_NUMBER_TABLE;
50 l_partner_source_tbl JTF_VARCHAR2_TABLE_100;
51
52 l_pt_flag boolean := false;
53 l_duplicate_pt boolean := false;
54 l_partnerid number;
55 l_partner_cnt_pt_id number;
56 l_party_reltn_type varchar2(100);
57 l_object_id number;
58 l_assignment_type varchar2(100);
59 l_assigned_partners varchar2(2000);
60 l_partner_count number := 1;
61
62 p_data varchar2(500);
63
64 l_api_name CONSTANT VARCHAR2(30) := 'Create_Assignment_Wrapper';
65 l_api_version_number CONSTANT NUMBER := 1.0;
66
67 Begin
68 SAVEPOINT Create_Assignment_Wrapper;
69
70 -- Standard call to check for call compatibility.
71 IF NOT FND_API.Compatible_API_Call (l_api_version_number,
72 p_api_version_number,
73 l_api_name,
74 G_PKG_NAME) THEN
75
76 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
77
78 END IF;
79
80 -- Initialize message list if p_init_msg_list is set to TRUE.
81 IF FND_API.to_Boolean( p_init_msg_list )
82 THEN
83 fnd_msg_pub.initialize;
84 END IF;
85
86 l_partner_id_tbl := JTF_NUMBER_TABLE();
87 l_rank_tbl := JTF_NUMBER_TABLE();
88 l_partner_source_tbl := JTF_VARCHAR2_TABLE_100();
89 x_return_status := FND_API.G_RET_STS_SUCCESS ;
90
91 IF ( p_lead_id is NULL ) THEN
92 fnd_message.SET_NAME('PV', 'PV_NULL_LEAD_ID');
93 fnd_msg_pub.ADD;
94 raise FND_API.G_EXC_ERROR;
95 END IF;
96
97 IF ( p_creating_username is NULL ) THEN
98 fnd_message.SET_NAME('PV', 'PV_NULL_CREATE_USER');
99 fnd_msg_pub.ADD;
100 raise FND_API.G_EXC_ERROR;
101 END IF;
102
103 IF ( p_bypass_cm_ok_flag is NULL ) THEN
104 fnd_message.SET_NAME('PV', 'PV_NULL_CMBYPASS_FLAG');
105 fnd_msg_pub.ADD;
106 RAISE FND_API.G_EXC_ERROR;
107 END IF;
108
109 --IF (p_entity is NULL) or p_entity not in ('LEAD', 'OPPORTUNITY') THEN
110 IF (p_entity is NULL) or p_entity <> 'OPPORTUNITY' THEN
111 fnd_message.SET_NAME('PV', 'PV_INVALID_ENTITY');
112 fnd_msg_pub.ADD;
113 RAISE FND_API.G_EXC_ERROR;
114 END IF;
115
116 l_assigned_partners := 'select asla.INCUMBENT_PARTNER_PARTY_ID ' ||
117 'from as_leads_all asla ' ||
118 'where asla.lead_id = :p_lead_id ';
119
120 open assignment_cur for l_assigned_partners using p_lead_id;
121 fetch assignment_cur into l_partnerid;
122
123 IF (assignment_cur%found AND l_partnerid is not NULL) then
124 l_partner_id_tbl.extend;
125 l_partner_id_tbl(l_partner_count) := l_partnerid;
126
127 l_rank_tbl.extend;
128 l_rank_tbl(l_partner_count) := l_partner_count;
129
130 l_partner_source_tbl.extend;
131 l_partner_source_tbl(l_partner_count) := 'SALESTEAM';
132
133 l_partner_count := l_partner_count + 1;
134 END IF;
135
136 CLOSE assignment_cur;
137
138 IF l_partner_id_tbl.count > 0 THEN
139
140 IF l_partner_id_tbl.count > 1 THEN
141 l_assignment_type := FND_PROFILE.VALUE('PV_DEFAULT_ASSIGNMENT_TYPE');
142 ELSE
143 l_assignment_type := 'SINGLE';
144 END IF;
145
146 PV_ASSIGNMENT_PUB.CREATEASSIGNMENT (
147 p_api_version_number => 1.0
148 ,p_init_msg_list => FND_API.G_TRUE
149 ,p_commit => FND_API.G_TRUE
150 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
151 ,p_entity => p_entity
152 ,p_lead_id => p_lead_id
153 ,p_creating_username => p_creating_username
154 ,p_assignment_type => l_assignment_type
155 ,p_bypass_cm_ok_flag => p_bypass_cm_ok_flag
156 ,p_partner_id_tbl => l_partner_id_tbl
157 ,p_rank_tbl => l_rank_tbl
158 ,p_partner_source_tbl => l_partner_source_tbl
159 ,p_process_rule_id => NULL
160 ,x_return_status => x_return_status
161 ,x_msg_count => x_msg_count
162 ,x_msg_data => x_msg_data
163 );
164
165 -- If API call returns Error raise Exception. Fix for Bug#2052029
166 IF x_return_status = FND_API.g_ret_sts_error THEN
167 RAISE FND_API.G_EXC_ERROR;
168 ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
169 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
170 END IF;
171 ELSE
172 fnd_message.SET_NAME('PV', 'PV_NO_PRTNR_TO_ROUTE');
173 fnd_msg_pub.ADD;
174 raise FND_API.G_EXC_ERROR;
175 END IF;
176
177 IF FND_API.To_Boolean ( p_commit ) THEN
178 COMMIT WORK;
179 END IF;
180
181 -- Standard call to get message count and if count is 1, get message info.
182 fnd_msg_pub.Count_And_Get( p_encoded => FND_API.G_FALSE,
183 p_count => x_msg_count,
184 p_data => x_msg_data);
185
186 EXCEPTION
187
188 WHEN FND_API.G_EXC_ERROR THEN
189
190 ROLLBACK TO Create_Assignment_Wrapper;
191 x_return_status := FND_API.G_RET_STS_ERROR ;
192
193 fnd_msg_pub.Count_And_Get( p_encoded => FND_API.G_FALSE,
194 p_count => x_msg_count,
195 p_data => x_msg_data);
196
197 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
198
199 ROLLBACK TO Create_Assignment_Wrapper;
200 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
201
202 fnd_msg_pub.Count_And_Get( p_encoded => FND_API.G_FALSE,
203 p_count => x_msg_count,
204 p_data => x_msg_data);
205
206 WHEN OTHERS THEN
207
208 ROLLBACK TO Create_Assignment_Wrapper;
209 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
210
211 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
212
213 fnd_msg_pub.Count_And_Get( p_encoded => FND_API.G_FALSE,
214 p_count => x_msg_count,
215 p_data => x_msg_data);
216
217
218 END Create_Assignment_Wrapper;
219 END PV_DIRECT_ASSIGN_WRAPPER_PUB;