DBA Data[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;