DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_NOTES_MERGE_PKG

Source


1 PACKAGE BODY JTF_NOTES_MERGE_PKG  as
2 /* $Header: jtfntmgb.pls 115.5 2002/11/16 00:27:08 hbouten noship $ */
3 
4 PROCEDURE MERGE_NOTES
5 ( p_entity_name         IN            VARCHAR2
6 , p_from_id             IN            NUMBER
7 , x_to_id                  OUT NOCOPY NUMBER
8 , p_from_fk_id          IN            NUMBER
9 , p_to_fk_id            IN            NUMBER
10 , p_parent_entity_name  IN            VARCHAR2
11 , p_batch_id            IN            NUMBER
12 , p_batch_party_id      IN            NUMBER
13 , x_return_status          OUT NOCOPY VARCHAR2
14 )
15 IS
16 
17   l_merge_reason_code VARCHAR2(30);
18 
19   CURSOR 	c_duplicate
20   IS SELECT 	merge_reason_code
21      FROM   	hz_merge_batch
22      WHERE  	batch_id = p_batch_id;
23 
24 
25 BEGIN
26 
27   x_return_status := FND_API.G_RET_STS_SUCCESS;
28 
29   IF (  (p_entity_name <> 'JTF_NOTES_B')
30      OR (p_parent_entity_name NOT IN ('HZ_PARTIES','HZ_PARTY_SITES'))
31      )
32   THEN
33     FND_MESSAGE.SET_NAME ('JTF', 'NOTES_MSG');
34     FND_MSG_PUB.ADD;
35     RAISE FND_API.G_EXC_ERROR;
36   END IF;
37 
38 
39   OPEN 	c_duplicate;
40   FETCH	c_duplicate INTO l_merge_reason_code;
41   CLOSE	c_duplicate;
42 
43   IF l_merge_reason_code <> 'DUPLICATE'
44   THEN
45     -- if there are any validations to be done, include it in this section
46     -- if reason code is duplicate then allow the party merge to happen without
47     -- any validations.
48     NULL;
49   END IF;
50 
51   -- perform the merge operation
52   -- if the parent has NOT changed(i.e. parent  getting transferred)  then nothing
53   -- needs to be done. Set merged to id (x_to_id) the same as merged from id and return
54 
55   IF p_from_fk_id = p_to_fk_id
56   THEN
57     x_to_id := p_from_id;
58     RETURN;
59   END IF;
60 
61   -- If the parent has changed(ie. Parent is getting merged) then transfer the
62   -- dependent record to the new parent.
63   -- For example in  JTF_NOTES_B table, if party_id 1 got merged to party_id  2
64   -- then, we have to update all records with new_source_object_id  1 to 2
65   -- p_to_fk_id is the new value which has to be put
66   -- p_from_id is the jtf_note_id
67   IF (   (P_FROM_FK_ID  <> P_TO_FK_ID)
68      AND (p_parent_entity_name = 'HZ_PARTIES')
69      )
70   THEN
71     UPDATE jtf_notes_b
72     SET	source_object_id  = p_to_fk_id
73     ,   last_update_date  = hz_utility_pub.last_update_date
74     ,   last_updated_by   = hz_utility_pub.user_id
75     ,   last_update_login = hz_utility_pub.last_update_login
76 	WHERE source_object_code IN (SELECT ojt.object_code
77                                  FROM jtf_objects_b     ojt
78                                  ,    jtf_object_usages oue
79                                  WHERE ojt.object_code = oue.object_code
80                                  AND oue.object_user_code = 'NOTES'
81                                  AND ojt.from_table ='HZ_PARTIES'
82                                  )
83 	AND source_object_id = p_from_fk_id;
84 
85   ELSIF (   (P_FROM_FK_ID  <> P_TO_FK_ID)
86          AND (p_parent_entity_name = 'HZ_PARTY_SITES')
87          )
88   THEN
89     UPDATE jtf_notes_b
90     SET source_object_id  = p_to_fk_id
91     ,   last_update_date  = hz_utility_pub.last_update_date
92     ,   last_updated_by   = hz_utility_pub.user_id
93     ,	last_update_login = hz_utility_pub.last_update_login
94 	WHERE source_object_code IN (SELECT ojt.object_code
95                                  FROM jtf_objects_b     ojt
96                                  ,    jtf_object_usages oue
97                                  WHERE ojt.object_code = oue.object_code
98                                  AND oue.object_user_code = 'NOTES'
99                                  AND ojt.from_table ='HZ_PARTY_SITES'
100                                  )
101 	AND source_object_id  = p_from_fk_id;
102   END IF;
103 
104 EXCEPTION
105   WHEN OTHERS
106     THEN
107       IF (c_duplicate%ISOPEN)
108       THEN
109         CLOSE c_duplicate;
110       END IF;
111       FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
112       FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
113       FND_MSG_PUB.ADD;
114       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
115       x_to_id         := NULL;
116 
117 END MERGE_NOTES;
118 
119 PROCEDURE MERGE_CONTEXT
120 ( p_entity_name         IN            VARCHAR2
121 , p_from_id             IN            NUMBER
122 , x_to_id                  OUT NOCOPY NUMBER
123 , p_from_fk_id          IN            NUMBER
124 , p_to_fk_id            IN            NUMBER
125 , p_parent_entity_name  IN            VARCHAR2
126 , p_batch_id            IN            NUMBER
127 , p_batch_party_id      IN            NUMBER
128 , x_return_status          OUT NOCOPY VARCHAR2
129 )
130 IS
131 
132   l_merge_reason_code VARCHAR2(30);
133 
134   CURSOR c_duplicate
135   IS SELECT merge_reason_code
136      FROM   hz_merge_batch
137      WHERE  batch_id = p_batch_id;
138 
139 
140 BEGIN
141 
142   x_return_status := FND_API.G_RET_STS_SUCCESS;
143 
144   IF (  (p_entity_name <> 'JTF_NOTE_CONTEXTS')
145      OR (p_parent_entity_name NOT IN ('HZ_PARTIES','HZ_PARTY_SITES'))
146      )
147   THEN
148      FND_MESSAGE.SET_NAME('JTF', 'NOTES_MSG');
149      FND_MSG_PUB.ADD;
150      RAISE FND_API.G_EXC_ERROR;
151   END IF;
152 
153   OPEN 	c_duplicate;
154   FETCH	c_duplicate INTO l_merge_reason_code;
155   CLOSE	c_duplicate;
156 
157   IF l_merge_reason_code <> 'DUPLICATE'
158   THEN
159     -- if there are any validations to be done, include it in this section
160     -- if reason code is duplicate then allow the party merge to happen without
161     -- any validations.
162     NULL;
163   END IF;
164 
165   -- perform the merge operation
166   -- if the parent has NOT changed(i.e. parent  getting transferred)  then
167   -- nothing needs to be done. Set merged to id (x_to_id) the same as merged
168   -- from id and return
169 
170   IF p_from_fk_id = p_to_fk_id
171   THEN
172     x_to_id := p_from_id;
173     RETURN;
174   END IF;
175 
176   -- If the parent has changed(ie. Parent is getting merged) then transfer the
177   -- dependent record to the new parent.
178   -- For example in  JTF_NOTES_B table, if party_id 1 got merged to party_id  2
179   -- then, we have to update all records with new_source_object_id  1 to 2
180   -- p_to_fk_id is the new value which has to be put
181   -- p_from_id is the jtf_note_id
182 
183   IF (   (p_from_fk_id <> p_to_fk_id)
184      AND (p_parent_entity_name = 'HZ_PARTIES')
185      )
186   THEN
187     UPDATE jtf_note_contexts
188     SET	note_context_type_id   = p_to_fk_id
189     ,   last_update_date  = hz_utility_pub.last_update_date
190     ,   last_updated_by   = hz_utility_pub.user_id
191     ,   last_update_login = hz_utility_pub.last_update_login
192   	WHERE note_context_type IN (SELECT ojt.object_code
193                                 FROM jtf_objects_b ojt
194                                 ,    jtf_object_usages oue
195                                 WHERE ojt.object_code = oue.object_code
196                                 AND   oue.object_user_code = 'NOTES'
197                                 AND   ojt.from_table ='HZ_PARTIES'
198                                 )
199     AND note_context_type_id = p_from_fk_id;
200 
201   ELSIF (   (p_from_fk_id <> p_to_fk_id)
202         AND (p_parent_entity_name = 'HZ_PARTY_SITES')
203         )
204   THEN
205     UPDATE jtf_note_contexts
206     SET	note_context_type_id   = p_to_fk_id
207     ,   last_update_date  = hz_utility_pub.last_update_date
208     ,   last_updated_by   = hz_utility_pub.user_id
209     ,   last_update_login = hz_utility_pub.last_update_login
210   	WHERE note_context_type IN (SELECT ojt.object_code
211                                 FROM jtf_objects_b ojt
212                                 ,    jtf_object_usages oue
213                                 WHERE ojt.object_code = oue.object_code
214                                 AND   oue.object_user_code = 'NOTES'
215                                 AND   ojt.from_table ='HZ_PARTY_SITES'
216                                 )
217     AND note_context_type_id = p_from_fk_id;
218   END IF;
219 
220   EXCEPTION
221     WHEN OTHERS
222     THEN
223       IF (c_duplicate%ISOPEN)
224       THEN
225         CLOSE c_duplicate;
226       END IF;
227 
228       FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
229       FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
230       FND_MSG_PUB.ADD;
231       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
232       x_to_id         := NULL;
233 
234 END MERGE_CONTEXT;
235 
236 
237 END JTF_NOTES_MERGE_PKG;
238