DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_EVENTOFFER_PVT

Source


1 PACKAGE BODY AMS_EventOffer_PVT AS
2 /*$Header: amsvevob.pls 120.13 2006/10/26 01:06:17 batoleti ship $*/
3 g_pkg_name   CONSTANT VARCHAR2(30):='AMS_EventOffer_PVT';
4 
5 AMS_DEBUG_HIGH_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
6 AMS_DEBUG_LOW_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
7 AMS_DEBUG_MEDIUM_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
8 
9 PROCEDURE Check_Dates_Range (
10    p_evo_rec          IN  evo_rec_type,
11    x_return_status  OUT NOCOPY   VARCHAR2
12 );
13 
14 PROCEDURE Check_Parent_Active (
15    p_evo_rec          IN  evo_rec_type,
16    x_return_status  OUT NOCOPY   VARCHAR2
17 );
18 
19 
20 PROCEDURE Update_Metrics (
21    p_evo_rec          IN  evo_rec_type,
22    x_return_status  OUT NOCOPY   VARCHAR2,
23    x_msg_count OUT NOCOPY VARCHAR2,
24    x_msg_data OUT NOCOPY VARCHAR2
25 );
26 
27 FUNCTION check_association_exists(
28    p_obj_type               IN VARCHAR2,
29    p_obj_id                  IN NUMBER,
30    p_association_with         IN VARCHAR2,
31    p_additional_where_clause   IN VARCHAR2 := NULL
32 )
33 Return VARCHAR2
34 IS
35 
36    l_sql   VARCHAR2(4000);
37    l_count NUMBER;
38    l_type_col  VARCHAR2(100);
39    l_id_col    VARCHAR2(100);
40    l_table_name VARCHAR2(200);
41    l_additional_where_clause  VARCHAR2(1000) := p_additional_where_clause;
42 
43 BEGIN
44 
45    if (p_association_with IN ('DELV', 'CAMP')) then
46       l_table_name := 'AMS_OBJECT_ASSOCIATIONS';
47       l_type_col := 'MASTER_OBJECT_TYPE';
48       l_id_col := 'MASTER_OBJECT_ID';
49       if l_additional_where_clause is null then
50       /*
51          l_additional_where_clause := ' USING_OBJECT_TYPE = ''' || p_association_with || '''';
52       */
53       -- SQL Bind Project
54       -- Use Bind Variables
55          l_additional_where_clause := 'USING_OBJECT_TYPE = :b1 ';
56       else
57       /*
58          l_additional_where_clause := l_additional_where_clause ||
59                         ' AND USING_OBJECT_TYPE = ''' || p_association_with || '''';
60       */
61       -- Use Bind Variables
62          l_additional_where_clause := l_additional_where_clause || ' AND USING_OBJECT_TYPE = :b1 ';
63       end if;
64    end if;
65 /*
66    if (p_association_with = 'CAMP') then
67       l_table_name := 'AMS_OBJECT_ASSOCIATIONS';
68       l_type_col := 'MASTER_OBJECT_TYPE';
69       l_id_col := 'MASTER_OBJECT_ID';
70       if l_additional_where_clause is null then
71          l_additional_where_clause := ' USING_OBJECT_TYPE = ''' || p_association_with || '''';
72       else
73          l_additional_where_clause := l_additional_where_clause ||
74                         ' AND USING_OBJECT_TYPE = ''' || p_association_with || '''';
75       end if;
76    end if;
77 */
78    if (p_association_with = 'MESG') then
79       l_table_name := 'AMS_ACT_MESSAGES';
80       l_type_col := 'MESSAGE_USED_BY';
81       l_id_col := 'MESSAGE_USED_BY_ID';
82    end if;
83 
84    if (p_association_with = 'PROD') then
85       l_table_name := 'AMS_ACT_PRODUCTS';
86       l_type_col := 'ARC_ACT_PRODUCT_USED_BY';
87       l_id_col := 'ACT_PRODUCT_USED_BY_ID';
88    end if;
89 
90    if (p_association_with = 'RESC') then
91       l_table_name := 'AMS_ACT_RESOURCES';
92       l_type_col := 'ARC_ACT_RESOURCE_USED_BY';
93       l_id_col := 'ACT_RESOURCE_USED_BY_ID';
94    end if;
95 
96    if (p_association_with = 'CELL') then
97       l_table_name := 'AMS_ACT_MARKET_SEGMENTS';
98       l_type_col := 'ARC_ACT_MARKET_SEGMENT_USED_BY';
99       l_id_col := 'ACT_MARKET_SEGMENT_USED_BY_ID';
100    end if;
101 
102    if (p_association_with = 'ATCH') then
103       l_table_name := 'JTF_AMV_ATTACHMENTS';
104       l_type_col := 'ATTACHMENT_USED_BY';
105       l_id_col := 'ATTACHMENT_USED_BY_ID';
106    end if;
107 
108    if (p_association_with = 'TEAM') then
109       l_table_name := 'AMS_ACT_ACCESS';
110       l_type_col := 'ARC_ACT_ACCESS_TO_OBJECT';
111       l_id_col := 'ACT_ACCESS_TO_OBJECT_ID';
112    end if;
113 
114    if (p_association_with = 'NOTE') then
115       l_table_name := 'JTF_NOTES_VL';
116       l_type_col := 'SOURCE_OBJECT_CODE';
117       l_id_col := 'SOURCE_OBJECT_ID';
118    end if;
119 
120    if (p_association_with = 'TASK') then
121       l_table_name := 'JTF_TASKS_VL';
122       l_type_col := 'SOURCE_OBJECT_TYPE_CODE';
123       l_id_col := 'SOURCE_OBJECT_ID';
124    end if;
125 
126    -- Commented and replaced for SQL Bind Project
127    /*
128    l_sql := 'SELECT count(*) FROM ' || l_table_name;
129    l_sql := l_sql || ' WHERE ' || l_type_col || ' = ''' || p_obj_type ||'''';
130    l_sql := l_sql || ' AND ' || l_id_col || ' = ' || p_obj_id;
131    */
132 
133    l_sql := 'SELECT count(*) FROM ' || l_table_name || ' WHERE ' || l_type_col || ' = :b2 AND ';
134    l_sql := l_sql || l_id_col || ' = :b3 ';
135 
136 
137 
138    IF l_additional_where_clause IS NOT NULL THEN
139       l_sql := l_sql || ' AND ' || l_additional_where_clause;
140    END IF;
141 
142    IF (AMS_DEBUG_HIGH_ON) THEN
143 
144        AMS_Utility_PVT.debug_message('SQL statement: '||l_sql);
145 
146    END IF;
147 
148    IF l_additional_where_clause IS NOT NULL THEN
149      -- We need to bind 3 vars for DELV and CAMP
150      EXECUTE IMMEDIATE l_sql INTO l_count
151      USING p_obj_type, p_obj_id, p_association_with;
152    ELSE
153      -- We need to bind 2 vars for all others
154      EXECUTE IMMEDIATE l_sql INTO l_count
155      USING p_obj_type, p_obj_id;
156    END IF;
157 
158    IF l_count = 0 THEN
159       RETURN FND_API.g_false;
160    ELSE
161       RETURN FND_API.g_true;
162    END IF;
163 
164 END check_association_exists;
165 
166 ---------------------------------------------------------------------
167 -- PROCEDURE
168 --    create_inv_item
169 --
170 -- HISTORY
171 --    03/05/2000  sugupta   Create.
172 ---------------------------------------------------------------------
173 PROCEDURE create_inv_item
174 (
175   p_commit              IN  VARCHAR2 := FND_API.g_false,
176   p_inv_item_number     IN  VARCHAR2,
177   p_inv_item_desc       IN  VARCHAR2,
178   p_inv_long_desc      IN  VARCHAR2,
179   x_return_status       OUT NOCOPY VARCHAR2,
180   x_msg_count         OUT NOCOPY NUMBER,
181   x_msg_data         OUT NOCOPY VARCHAR2,
182   x_item_id            OUT NOCOPY NUMBER,
183   x_org_id          OUT NOCOPY NUMBER
184 );
185 
186 ---------------------------------------------------------------------
187 -- PROCEDURE
188 --    create_pricelist_header
189 --
190 -- HISTORY
191 --    03/05/2000  sugupta     Create.
192 ---------------------------------------------------------------------
193 
194 PROCEDURE create_pricelist_header
195 (
196   p_api_version             IN  NUMBER,
197   p_init_msg_list           IN  VARCHAR2 := FND_API.g_false,
198   p_return_values           IN  VARCHAR2 := FND_API.g_false,
199   p_commit                  IN  VARCHAR2 := FND_API.g_false,
200   p_evo_rec               IN  evo_rec_type,
201   x_return_status           OUT NOCOPY VARCHAR2,
202   x_msg_count               OUT NOCOPY NUMBER,
203   x_msg_data                OUT NOCOPY VARCHAR2,
204   x_pricelist_header_id     OUT NOCOPY NUMBER
205 );
206 
207 ---------------------------------------------------------------------
208 -- PROCEDURE
209 --    create_pricelist_line
210 --
211 -- HISTORY
212 --    03/05/2000  sugupta     Create.
213 ---------------------------------------------------------------------
214 
215 PROCEDURE create_pricelist_line
216 (
217   p_api_version             IN  NUMBER,
218   p_init_msg_list           IN  VARCHAR2 := FND_API.g_false,
219   p_return_values           IN  VARCHAR2 := FND_API.g_false,
220   p_commit                  IN  VARCHAR2 := FND_API.g_false,
221   p_price_hdr_id            IN  NUMBER,
222   p_evo_rec                 IN   evo_rec_type,
223   x_return_status           OUT NOCOPY VARCHAR2,
224   x_msg_count               OUT NOCOPY NUMBER,
225   x_msg_data                OUT NOCOPY VARCHAR2,
226   x_pricelist_line_id       OUT NOCOPY NUMBER
227 );
228 
229 PROCEDURE copy_ev_header_to_offer(
230       p_api_version         IN       NUMBER,
231       p_init_msg_list       IN       VARCHAR2 := fnd_api.g_false,
232       x_return_status       OUT NOCOPY      VARCHAR2,
233       x_msg_count           OUT NOCOPY      NUMBER,
234       x_msg_data            OUT NOCOPY      VARCHAR2,
235       x_evo_rec             OUT NOCOPY      evo_rec_type,
236       p_src_evh_id         IN       NUMBER,
237       p_evo_rec            IN       evo_rec_type
238 );
239 
240 PROCEDURE copy_ev_header_associations(
241       p_api_version         IN        NUMBER,
242       p_init_msg_list       IN        VARCHAR2 := fnd_api.g_false,
243        p_commit             IN        VARCHAR2 := fnd_api.g_false,
244       p_validation_level    IN        NUMBER   := FND_API.g_valid_level_full,
245       x_return_status       OUT NOCOPY       VARCHAR2,
246       x_msg_count           OUT NOCOPY       NUMBER,
247       x_msg_data            OUT NOCOPY       VARCHAR2,
248      x_transaction_id       OUT NOCOPY       NUMBER,
249       p_src_evh_id          IN        NUMBER,
250       p_evo_id              IN        NUMBER,
251      p_setup_id             IN        NUMBER
252 );
253 
254 PROCEDURE check_evo_update(
255    p_evo_rec       IN OUT NOCOPY  AMS_EVENTOFFER_PVT.evo_rec_type,
256    x_return_status  OUT NOCOPY VARCHAR2
257 );
258 PROCEDURE check_evo_inter_entity(
259    p_evo_rec        IN  evo_rec_type,
260    p_complete_rec    IN  evo_rec_type,
261    p_validation_mode IN  VARCHAR2,
262    x_return_status   OUT NOCOPY VARCHAR2
263 );
264 
265 PROCEDURE create_global_pricing(
266    p_evo_rec        IN OUT NOCOPY evo_rec_type,
267    x_return_status  OUT NOCOPY VARCHAR2
268 );
269 ---------------------------------------------------------------------
270 -- PROCEDURE
271 --    create_event_offer
272 --
273 -- HISTORY
274 --    11/23/1999  sugupta  Created.
275 --     01/20/2000  gdeodhar Added the reg_required_flag column to create stmt.
276 --                     Also added the user_status_id = 1 and system_status_code = 'NEW'
277 --                     in the create statement.
278 --    07/20/2000  sugupta  user_status_id equal to 1 only for event_level=MAIN
279 ---------------------------------------------------------------------
280 PROCEDURE create_event_offer(
281    p_api_version       IN  NUMBER,
282    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
283    p_commit            IN  VARCHAR2  := FND_API.g_false,
284    p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
285 
286    p_evo_rec            IN  evo_rec_type,
287 
288    x_return_status     OUT NOCOPY VARCHAR2,
289    x_msg_count         OUT NOCOPY NUMBER,
290    x_msg_data          OUT NOCOPY VARCHAR2,
291 
292    x_evo_id            OUT NOCOPY NUMBER
293 )
294 IS
295 
296    l_api_version CONSTANT NUMBER       := 1.0;
297    l_api_name    CONSTANT VARCHAR2(30) := 'create_event_offer';
298    l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
299 
300    l_return_status VARCHAR2(1);
301    l_evo_rec       evo_rec_type;
302    l_dlv_rec      AMS_ActDelvMethod_PVT.act_DelvMethod_rec_type;
303  --  location_rec      hz_location_pub.location_rec_type;
304    location_rec      hz_location_v2pub.location_rec_type;
305    l_dlv_id       NUMBER := null;
306    l_evo_count     NUMBER;
307    l_start_time   DATE;
308    l_end_time       DATE;
309    l_reg_start_time DATE;
310    l_reg_end_time   DATE;
311    l_copy_flag  VARCHAR2(1);
312    l_setup_id   NUMBER := nvl(p_evo_rec.custom_setup_id,1006);
313    l_org_id  NUMBER := null;
314    l_source_code_id  NUMBER;
315    l_user_id  NUMBER;
316    l_res_id   NUMBER;
317    l_cs_count  NUMBER;
318  -- will need to pass this transaction id back to screen.. todo later
319    x_transaction_id   NUMBER;
320    l_ou_id     NUMBER;
321    l_ovn       NUMBER(9) := 1;
322 
323    CURSOR get_res_id(l_user_id IN NUMBER) IS
324    SELECT resource_id
325    FROM ams_jtf_rs_emp_v
326    WHERE user_id = l_user_id;
327 
328    CURSOR c_evo_seq IS
329    SELECT ams_event_offers_all_b_s.NEXTVAL
330      FROM DUAL;
331 
332    CURSOR c_evo_count(evo_id IN NUMBER) IS
333    SELECT count(*)
334      FROM ams_event_offers_all_b
335     WHERE event_offer_id = evo_id;
336 
337    CURSOR c_evo_status_evagd(ust_id IN NUMBER) IS
338    SELECT system_status_code
339    FROM ams_user_statuses_b
340    WHERE user_status_id = ust_id
341      AND system_status_type = 'AMS_EVENT_AGENDA_STATUS';
342 
343    CURSOR c_list_YN(id_in IN NUMBER) IS
344    SELECT count(*) FROM ams_custom_setup_attr
345    WHERE custom_setup_id = id_in
346    AND object_attribute = 'ILST'
347    AND ATTR_AVAILABLE_FLAG = 'Y';
348 
349 BEGIN
350 
351    --------------------- initialize -----------------------
352    SAVEPOINT create_event_offer;
353 
354    IF (AMS_DEBUG_HIGH_ON) THEN
355 
356 
357 
358        AMS_Utility_PVT.debug_message(l_full_name||': start');
359 
360    END IF;
361 
362    IF FND_API.to_boolean(p_init_msg_list) THEN
363       FND_MSG_PUB.initialize;
364    END IF;
365 
366    IF NOT FND_API.compatible_api_call(
367          l_api_version,
368          p_api_version,
369          l_api_name,
370          g_pkg_name
371    ) THEN
372       RAISE FND_API.g_exc_unexpected_error;
373    END IF;
374 
375    x_return_status := FND_API.g_ret_sts_success;
376 
377    --------------------API CODE--------------------------
378 
379    ----------------- copy stuff from headers before validation--------
380 -- sugupta 03/20/2000 get the profile option..todo
381 -- if profile option indicates Copying from header to  offer, make a call to
382 -- copy_ev_header_to_offer procedure to copy appropriate fields from header to offer.
383 -- associations of header will be copied
384 
385    l_copy_flag := FND_PROFILE.Value('AMS_COPY_EVH_TO_EVO');--'Y';
386 
387    IF (p_evo_rec.event_level = 'MAIN' and l_copy_flag = 'Y' and p_evo_rec.event_object_type = 'EVEO') then
388       IF (AMS_DEBUG_HIGH_ON) THEN
389 
390           AMS_Utility_PVT.debug_message(l_full_name ||': copy header to offer');
391       END IF;
392       copy_ev_header_to_offer(
393          p_api_version       => l_api_version,
394          p_init_msg_list     => FND_API.g_false,
395          x_return_status     => l_return_status,
396          x_msg_count         => x_msg_count,
397          x_msg_data          => x_msg_data,
398          x_evo_rec           => l_evo_rec,
399          p_src_evh_id        => p_evo_rec.event_header_id,
400          p_evo_rec           => p_evo_rec
401       );
402       IF l_return_status = FND_API.g_ret_sts_error THEN
403          RAISE FND_API.g_exc_error;
404       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
405          RAISE FND_API.g_exc_unexpected_error;
406       END IF;
407    ELSE
408       l_evo_rec := p_evo_rec;
409       IF l_evo_rec.event_object_type = 'EONE' THEN
410          l_evo_rec.event_standalone_flag := 'Y';
411       ELSIF l_evo_rec.event_object_type = 'EVEO' THEN
412          l_evo_rec.event_standalone_flag := 'N';
413       ELSE
414          FND_MESSAGE.set_name('AMS', 'AMS_DM_SRC_NO_ARC_USED_FOR_OBJ');
415          FND_MSG_PUB.add;
416          RAISE FND_API.g_exc_error;
417       END IF;
418    END IF;
419 
420 -----------ADDED CODE to populate task id----------------------
421    IF (p_evo_rec.event_level = 'MAIN') THEN
422       null;
423       /* Hornet :call task creation API */
424    END IF;
425 
426 -- associations for the event header will be copied after creating the event_offer
427 -- FROM HERE ON ITS L_EVO_REC, NOT P_EVO_REC
428 
429 --------------- calendar----------------------------
430 -- added sugupta 08/28/20000--------------
431 -- default event calendar, present;y defailting it to be same as campaigns calendar.. SHOULD CHANGE
432 -- not sure about the logic, should it be defaulted only for MAIN events, not the agenda..
433 
434 -- IF l_evo_rec.event_calendar IS NULL THEN
435       l_evo_rec.event_calendar := FND_PROFILE.value('AMS_CAMPAIGN_DEFAULT_CALENDER');
436 -- END IF;
437 ----------------------------user status and system status---------------------
438 
439 -- added sugupta 07/20/2000 for event agenda, stastuses shouldnt be defaulted to 1/NEW
440 -- for main event, while creation.. user status shud always be 1, system status always NEW
441 
442    IF l_evo_rec.event_level = 'MAIN' then
443       l_evo_rec.user_status_id := ams_utility_pvt.get_default_user_status('AMS_EVENT_STATUS','NEW');
444       l_evo_rec.system_status_code := 'NEW';
445    ELSE
446       -- pick up the correct system_status_code
447       IF l_evo_rec.user_status_id IS NOT NULL THEN
448          OPEN c_evo_status_evagd(l_evo_rec.user_status_id);
449          FETCH c_evo_status_evagd INTO l_evo_rec.system_status_code;
450          CLOSE c_evo_status_evagd;
451       END IF;
452    END IF;
453 
454    ----------------------- validate -----------------------
455    IF (AMS_DEBUG_HIGH_ON) THEN
456 
457        AMS_Utility_PVT.debug_message(l_full_name ||': validate');
458    END IF;
459 
460 
461    validate_event_offer(
462       p_api_version        => l_api_version,
463       p_init_msg_list      => p_init_msg_list,
464       p_validation_level   => p_validation_level,
465       p_evo_rec           => l_evo_rec,
466       x_return_status      => l_return_status,
467       x_msg_count          => x_msg_count,
468       x_msg_data           => x_msg_data
469    );
470    IF l_return_status = FND_API.g_ret_sts_error THEN
471       RAISE FND_API.g_exc_error;
472    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
473       RAISE FND_API.g_exc_unexpected_error;
474    END IF;
475 
476    --------------- CHECK ACCESS FOR THE USER ONLY FOR EVENT AGENDA-------------------
477    ----------added sugupta 07/25/2000
478    IF l_evo_rec.event_level = 'SUB' THEN
479       l_user_id := FND_GLOBAL.User_Id;
480       IF (AMS_DEBUG_HIGH_ON) THEN
481 
482           AMS_Utility_PVT.debug_message(' CHECK ACCESS l_user_id is ' ||l_user_id );
483       END IF;
484       IF l_user_id IS NOT NULL then
485          open get_res_id(l_user_id);
486          fetch get_res_id into l_res_id;
487          close get_res_id;
488       END IF;
489       IF AMS_ACCESS_PVT.check_update_access(l_evo_rec.parent_event_offer_id, l_evo_rec.event_object_type, l_res_id, 'USER') = 'N' then
490          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
491             FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_UPDATE_ACCESS');-- reusing the message
492             FND_MSG_PUB.add;
493          END IF;
494          RAISE FND_API.g_exc_error;
495       END IF;
496    END IF;
497 
498    -------------------------- insert --------------------------
499    IF (AMS_DEBUG_HIGH_ON) THEN
500 
501        AMS_Utility_PVT.debug_message(l_full_name ||': insert');
502    END IF;
503    -- ==========================================================
504    -- Following code is added by mukumar on 10/30/2000
505    -- the code will convert the transaction currency in to
506    -- functional currency.
507    -- ==========================================================
508    IF l_evo_rec.fund_amount_tc IS NOT NULL THEN
509       AMS_EvhRules_PVT.Convert_Evnt_Currency(
510          p_tc_curr     => l_evo_rec.currency_code_tc,
511          p_tc_amt      => l_evo_rec.fund_amount_tc,
512          x_fc_curr     => l_evo_rec.currency_code_fc,
513          x_fc_amt      => l_evo_rec.fund_amount_fc
514       ) ;
515    END IF ;
516 
517    -------------------------event offer id----------------------
518    IF l_evo_rec.event_offer_id IS NULL THEN
519       LOOP
520          OPEN c_evo_seq;
521          FETCH c_evo_seq INTO l_evo_rec.event_offer_id;
522          CLOSE c_evo_seq;
523 
524          OPEN c_evo_count(l_evo_rec.event_offer_id);
525          FETCH c_evo_count INTO l_evo_count;
526          CLOSE c_evo_count;
527 
528          EXIT WHEN l_evo_count = 0;
529        END LOOP;
530     END IF;
531 
532 
533 ----------------------------source code---------------------
534 -- if event level is SUB, source_code should be null
535 -- if incoming source_code is NULL, it is defaulted.
536 
537 -- Global flag if not passed from the screen, default it as N
538    IF l_evo_rec.global_flag IS NULL THEN
539       l_evo_rec.global_flag := 'N';
540    END IF;
541 
542    IF l_evo_rec.event_level = 'SUB' THEN
543       l_evo_rec.source_code := null;
544    ELSE
545       IF l_evo_rec.source_code IS NULL THEN
546           l_evo_rec.source_code := AMS_SourceCode_PVT.get_new_source_code (
547                             -- replace object type  with table's value once implemented
548                            p_object_type => l_evo_rec.event_object_type,
549                            p_custsetup_id => l_evo_rec.custom_setup_id,
550                            -- replace global_flag with table's value once implemented
551                            p_global_flag => l_evo_rec.global_flag
552                            );
553       END IF;
554    END IF;
555 
556 
557    /* Code Added By GMadana for date/time validation */
558    IF l_evo_rec.event_start_date_time > l_evo_rec.event_end_date_time THEN
559       IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error)
560       THEN
561           Fnd_Message.set_name('AMS', 'AMS_EVO_START_TM_GT_END_TM');
562           Fnd_Msg_Pub.ADD;
563         END IF;
564       x_return_status := Fnd_Api.g_ret_sts_error;
565       RAISE Fnd_Api.g_exc_error;
566    END IF; -- st tm > end tm
567 
568 /****************EVENT_DELIVERY_METHOD_ID**********************/
569 -- l_evo_rec will bring in delivery_method_code.. a l_dlv_rec record type is
570 -- constructed and passed to Create_Act_DelvMethod which creates a row in
571 -- AMS_ACT_DELIVERY_METHODS table and returns delivery_method_id which is then
572 -- inserted into ams_event_offers table.
573 -- Caution is advised that while retrieving records from event offers table,
574 -- delivery_method_id is retrieved and not delivery_method_code..
575 -- ams_event_offers_v takes care of that and returns delivery_method_code though
576 -- sugupta 3/27/00 change of plans... delivery method will always be passed to update procedure, not create..
577 -- adding call to Create_Act_DelvMethod in update_event_offer procedure now
578 -- dlv method code will neevr be passed for event agenda... so no need to put an if loop for event level
579 
580    IF (l_evo_rec.EVENT_DELIVERY_METHOD_CODE IS NOT NULL OR
581       l_evo_rec.EVENT_DELIVERY_METHOD_CODE <> FND_API.g_miss_char) THEN
582       -- This new if statment added to support one of event
583       IF l_evo_rec.EVENT_STANDALONE_FLAG = 'Y' THEN
584          l_dlv_rec.ARC_ACT_DELIVERY_USED_BY := 'EONE';
585          l_dlv_rec.ACT_DELIVERY_METHOD_USED_BY_ID :=  l_evo_rec.event_offer_id;
586          l_dlv_rec.DELIVERY_MEDIA_TYPE_CODE := l_evo_rec.EVENT_DELIVERY_METHOD_CODE;
587       ELSE
588          l_dlv_rec.ARC_ACT_DELIVERY_USED_BY := 'EVEO';
589          l_dlv_rec.ACT_DELIVERY_METHOD_USED_BY_ID :=  l_evo_rec.event_offer_id;
590          l_dlv_rec.DELIVERY_MEDIA_TYPE_CODE := l_evo_rec.EVENT_DELIVERY_METHOD_CODE;
591       END IF;
592       AMS_ActDelvMethod_PVT.Create_Act_DelvMethod(
593             p_api_version => l_api_version,
594             p_init_msg_list => FND_API.g_false,
595             p_commit => FND_API.g_false,
596             p_validation_level =>  FND_API.g_valid_level_full,
597             x_return_status => l_return_status,
598             x_msg_count => x_msg_count,
599             x_msg_data => x_msg_data,
600             p_act_DelvMethod_rec => l_dlv_rec,
601             x_act_DelvMethod_id => l_dlv_id);
602 
603       IF l_return_status = FND_API.g_ret_sts_error THEN
604          RAISE FND_API.g_exc_error;
605       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
606          RAISE FND_API.g_exc_unexpected_error;
607       END IF;
608    END IF;
609 
610 
611    /* Code Added by GMADANA for Date validation for attaching Program as Parent */
612    /* Check_Dates_Range has date validation for MAIN level and SUB level events
613       as agenda for Event Schedule has Start date on the GUI.
614    */
615 
616 
617    -- soagrawa added if clause on 24-feb-2003 for INTERNAL bug# 2816673
618    IF(l_evo_rec.event_object_type = 'EONE' AND l_evo_rec.parent_type = 'CAMP')
619    THEN
620       -- dont check for date range
621       NULL;
622    ELSE
623      Check_Dates_Range(
624          p_evo_rec    => p_evo_rec,
625          x_return_status      => x_return_status
626       );
627 
628       IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
629          RAISE Fnd_Api.g_exc_unexpected_error;
630       ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
631          RAISE Fnd_Api.g_exc_error;
632       END IF;
633    END IF;
634 
635 
636 -- integration with inventory and pricing api's happens at update level..
637 --the user enters inventory number from reg set up screen..
638 -- 05/09/2000 however setting up the organization id here from profile option...
639    l_org_id := FND_PROFILE.Value('AMS_ITEM_ORGANIZATION_ID');
640 -- 05/10/2000  based on values of city, state, country passed, call hz_loc API
641 -- to create a new loc_id to be inserted into offers table
642 -- city/state/country will never be passed for event agenda... so no need to put an if loop for event level
643 
644    IF  (l_evo_rec.CITY IS NULL AND l_evo_rec.STATE IS NULL AND l_evo_rec.COUNTRY IS NULL)
645    THEN
646       l_evo_rec.event_location_id := null;
647    ELSE
648       location_rec.country := l_evo_rec.COUNTRY;
649       location_rec.state := l_evo_rec.STATE;
650       location_rec.city := l_evo_rec.CITY;
651       location_rec.address1 := ' ';
652       location_rec.ORIG_SYSTEM_REFERENCE := -1;
653       location_rec.content_source_type := 'USER_ENTERED';
654       location_rec.created_by_module := 'AMS_EVENT';
655       hz_location_v2pub.create_location(
656             p_init_msg_list     => p_init_msg_list,
657             p_location_rec => location_rec,
658             x_return_status => l_return_status,
659             x_msg_count => x_msg_count,
660             x_msg_data => x_msg_data,
661             x_location_id => l_evo_rec.event_location_id
662             );
663       IF l_return_status = FND_API.g_ret_sts_error THEN
664          RAISE FND_API.g_exc_error;
665       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
666          RAISE FND_API.g_exc_unexpected_error;
667       END IF;
668    END IF;
669 
670    -- Added by rmajumda (09/15/05). MOAC changes
671    l_ou_id := fnd_profile.value('DEFAULT_ORG_ID');
672 
673 
674          IF l_evo_rec.object_version_number = 2 THEN -- copy
675             l_ovn := 2;
676          END IF;
677 
678    insert into ams_event_offers_all_b(
679       event_offer_id
680       ,setup_type_id
681       ,last_update_date
682       ,last_updated_by
683       ,creation_date
684       ,created_by
685       ,last_update_login
686       ,object_version_number
687       ,application_id
688       ,event_header_id
689       ,private_flag
690       ,active_flag
691       ,source_code
692       ,event_level
693       ,user_status_id
694       ,last_status_date
695       ,system_status_code
696       ,event_type_code
697       ,event_delivery_method_id
698       ,event_required_flag
699       ,event_language_code
700       ,event_location_id
701       ,overflow_flag
702       ,partner_flag
703       ,event_standalone_flag
704       ,reg_frozen_flag
705       ,reg_required_flag
706       ,reg_charge_flag
707       ,reg_invited_only_flag
708       ,reg_waitlist_allowed_flag
709       ,reg_overbook_allowed_flag
710       ,parent_event_offer_id
711       ,event_duration
712       ,event_duration_uom_code
713       ,event_start_date
714       ,event_start_date_time
715       ,event_end_date
716       ,event_end_date_time
717       ,reg_start_date
718       ,reg_start_time
719       ,reg_end_date
720       ,reg_end_time
721       ,reg_maximum_capacity
722       ,reg_overbook_pct
723       ,reg_effective_capacity
724       ,reg_waitlist_pct
725       ,reg_minimum_capacity
726       ,reg_minimum_req_by_date
727       ,inventory_item_id
728       ,organization_id
729       ,pricelist_header_id
730       ,pricelist_line_id
731       ,org_id
732       ,waitlist_action_type_code
733       ,stream_type_code
734       ,owner_user_id
735       ,event_full_flag
736       ,forecasted_revenue
737       ,actual_revenue
738       ,forecasted_cost
739       ,actual_cost
740       ,fund_source_type_code
741       ,fund_source_id
742       ,cert_credit_type_code
743       ,certification_credits
744       ,coordinator_id
745       ,priority_type_code
746       ,cancellation_reason_code
747       ,auto_register_flag
748       ,email
749       ,phone
750       ,fund_amount_tc
751       ,fund_amount_fc
752       ,currency_code_tc
753       ,currency_code_fc
754       ,url
755       ,timezone_id
756       ,event_venue_id
757       ,inbound_script_name
758       ,attribute_category
759       ,attribute1
760       ,attribute2
761       ,attribute3
762       ,attribute4
763       ,attribute5
764       ,attribute6
765       ,attribute7
766       ,attribute8
767       ,attribute9
768       ,attribute10
769       ,attribute11
770       ,attribute12
771       ,attribute13
772       ,attribute14
773       ,attribute15
774       ,country_code
775       ,business_unit_id
776       ,event_calendar
777       ,start_period_name
778       ,end_period_name
779       ,global_flag
780       ,task_id  -- Hornet
781       --,program_id  -- Hornet
782       ,parent_type  -- Hornet
783       ,parent_id  -- Hornet
784       ,CREATE_ATTENDANT_LEAD_FLAG  --hornet
785       ,CREATE_REGISTRANT_LEAD_FLAG  --hornet
786       ,event_object_type   --hornet
787       ,reg_timezone_id   -- hornet
788       ,event_password /* Hornet : added for imeeting integration*/
789       ,record_event_flag   /* Hornet : added for imeeting integration*/
790       ,allow_register_in_middle_flag  /* Hornet : added for imeeting integration*/
791       ,publish_attendees_flag  /* Hornet : added for imeeting integration*/
792       ,direct_join_flag   /* Hornet : added for imeeting integration*/
793       ,event_notification_method  /* Hornet : added for imeeting integration*/
794       ,actual_start_time  /* Hornet : added for imeeting integration*/
795       ,actual_end_time  /* Hornet : added for imeeting integration*/
796       ,server_id   /* Hornet : added for imeeting integration*/
797       ,OWNER_FND_USER_ID
798       ,MEETING_DIAL_IN_INFO
799       ,MEETING_EMAIL_SUBJECT
800       ,MEETING_SCHEDULE_TYPE
801       , MEETING_STATUS
802       ,PUBLISH_FLAG
803       ,MEETING_ENCRYPTION_KEY_CODE
804       ,MEETING_MISC_INFO
805       ,NUMBER_OF_ATTENDEES
806       ,EVENT_PURPOSE_CODE
807       )
808    VALUES(
809       l_evo_rec.event_offer_id,
810       l_evo_rec.custom_setup_id,
811       SYSDATE,
812       FND_GLOBAL.user_id,
813       SYSDATE,
814       FND_GLOBAL.user_id,
815       FND_GLOBAL.conc_login_id,
816       l_ovn,  -- object_version_number Bug 5171873 can be 2 for copy
817       l_evo_rec.application_id,
818       l_evo_rec.event_header_id,         -- will come from Interface
819       NVL(l_evo_rec.private_flag,'N'),      -- Value will come from the User Interface.
820       NVL(l_evo_rec.active_flag, 'Y'),      -- 'N' when active_flag is NULL
821       l_evo_rec.source_code,            -- If the incoming value is NULL, it must be generated.
822       l_evo_rec.event_level,            -- MAIN (event offer), SUB (agenda item)
823       l_evo_rec.user_status_id,
824       NVL(l_evo_rec.last_status_date,SYSDATE),
825       l_evo_rec.system_status_code,
826       l_evo_rec.event_type_code,
827       l_dlv_id,
828       NVL(l_evo_rec.event_required_flag,'N'),
829       l_evo_rec.event_language_code,
830       l_evo_rec.event_location_id,
831       NVL(l_evo_rec.overflow_flag,'N'),
832       NVL(l_evo_rec.partner_flag,'N'),
833       NVL(l_evo_rec.event_standalone_flag,'N'),      -- Value will come from the User Interface.
834       NVL(l_evo_rec.reg_frozen_flag,'N'),
835       NVL(l_evo_rec.reg_required_flag,'Y'),         -- Value will come from the User Interface.
836       NVL(l_evo_rec.reg_charge_flag,'Y'),         -- Value will come from the UserInterface.
837       NVL(l_evo_rec.reg_invited_only_flag,'N'),      -- Value will come from the User Interface.
838       NVL(l_evo_rec.reg_waitlist_allowed_flag,'N'),
839       NVL(l_evo_rec.reg_overbook_allowed_flag,'N'),
840       l_evo_rec.parent_event_offer_id,
841       l_evo_rec.event_duration,
842       l_evo_rec.event_duration_uom_code,
843       l_evo_rec.event_start_date,
844       NVL(l_evo_rec.event_start_date_time,l_evo_rec.event_start_date),
845       l_evo_rec.event_end_date,
846       NVL(l_evo_rec.event_end_date_time,l_evo_rec.event_end_date),
847       l_evo_rec.reg_start_date,
848       l_reg_start_time,
849       l_evo_rec.reg_end_date,
850       l_reg_end_time,
851       l_evo_rec.reg_maximum_capacity,
852       l_evo_rec.reg_overbook_pct,
853       l_evo_rec.reg_effective_capacity,
854       l_evo_rec.reg_waitlist_pct,
855       l_evo_rec.reg_minimum_capacity,
856       l_evo_rec.reg_minimum_req_by_date,
857       null, -- l_evo_rec.inventory_item_id, in fact, I should be getting inv item id here as well if evo_rec.inv_num is not null... todo
858       l_org_id,
859       l_evo_rec.pricelist_header_id,
860       l_evo_rec.pricelist_line_id,
861       --TO_NUMBER(SUBSTRB(userenv('CLIENT_INFO'),1,10)),    -- org_id
862       l_ou_id,
863       l_evo_rec.waitlist_action_type_code,
864       l_evo_rec.stream_type_code,
865       l_evo_rec.owner_user_id,
866       NVL(l_evo_rec.event_full_flag,'N'),
867       l_evo_rec.forecasted_revenue,
868       l_evo_rec.actual_revenue,
869       l_evo_rec.forecasted_cost,
870       l_evo_rec.actual_cost,
871       l_evo_rec.fund_source_type_code,
872       l_evo_rec.fund_source_id,
873       l_evo_rec.cert_credit_type_code,
874       l_evo_rec.certification_credits,
875       l_evo_rec.coordinator_id,
876       l_evo_rec.priority_type_code,
877       l_evo_rec.cancellation_reason_code,
878       NVL(l_evo_rec.auto_register_flag, nvl(FND_PROFILE.value('AMS_AUTO_REGISTER_FLAG'), 'Y')),
879       l_evo_rec.email,
880       l_evo_rec.phone,
881       l_evo_rec.fund_amount_tc,
882       l_evo_rec.fund_amount_fc,
883       l_evo_rec.currency_code_tc,
884       l_evo_rec.currency_code_fc,
885       l_evo_rec.url,
886       l_evo_rec.timezone_id,
887       l_evo_rec.event_venue_id,
888       l_evo_rec.inbound_script_name,
889       l_evo_rec.attribute_category,
890       l_evo_rec.attribute1,
891       l_evo_rec.attribute2,
892       l_evo_rec.attribute3,
893       l_evo_rec.attribute4,
894       l_evo_rec.attribute5,
895       l_evo_rec.attribute6,
896       l_evo_rec.attribute7,
897       l_evo_rec.attribute8,
898       l_evo_rec.attribute9,
899       l_evo_rec.attribute10,
900       l_evo_rec.attribute11,
901       l_evo_rec.attribute12,
902       l_evo_rec.attribute13,
903       l_evo_rec.attribute14,
904       l_evo_rec.attribute15,
905 --      l_evo_rec.country_code,
906 --      The above will require the JSP to send the country_code as part of the rec.
907 --      This is not needed the API can pick it up as follows:
908       NVL(l_evo_rec.country_code, TO_NUMBER(FND_PROFILE.value('AMS_SRCGEN_USER_CITY'))),
909 --      The above picks up the country code from the Profile option if the one sent in
910 --      by the JSP page is null.
911       l_evo_rec.business_unit_id,
912 --      The JSPs are expected to send the value of the business_unit_id. It is nullable.
913       l_evo_rec.event_calendar,
914       l_evo_rec.start_period_name,
915       l_evo_rec.end_period_name,
916       nvl(l_evo_rec.global_flag, 'N'),
917 --      above 4 fields added to be in synch with campaigns
918       l_evo_rec.task_id,  -- Hornet
919       --l_evo_rec.program_id, -- Hornet
920       l_evo_rec.parent_type,  -- Hornet
921       l_evo_rec.parent_id  -- Hornet
922       ,l_evo_rec.CREATE_ATTENDANT_LEAD_FLAG  --hornet
923       ,l_evo_rec.CREATE_REGISTRANT_LEAD_FLAG --hornet
924       ,l_evo_rec.event_object_type
925       ,l_evo_rec.reg_timezone_id
926       ,l_evo_rec.event_password /* Hornet : added for imeeting integration*/
927       ,l_evo_rec.record_event_flag   /* Hornet : added for imeeting integration*/
928       ,l_evo_rec.allow_register_in_middle_flag  /* Hornet : added for imeeting integration*/
929       ,l_evo_rec.publish_attendees_flag  /* Hornet : added for imeeting integration*/
930       ,l_evo_rec.direct_join_flag   /* Hornet : added for imeeting integration*/
931       ,l_evo_rec.event_notification_method  /* Hornet : added for imeeting integration*/
932       ,l_evo_rec.actual_start_time  /* Hornet : added for imeeting integration*/
933       ,l_evo_rec.actual_end_time  /* Hornet : added for imeeting integration*/
934       ,l_evo_rec.server_id  /* Hornet : added for imeeting integration*/
935       ,l_evo_rec.OWNER_FND_USER_ID /* Hornet : added for imeeting integration*/
936       ,l_evo_rec.MEETING_DIAL_IN_INFO /* Hornet : added for imeeting integration*/
937       ,l_evo_rec.MEETING_EMAIL_SUBJECT /* Hornet : added for imeeting integration*/
938       ,l_evo_rec.MEETING_SCHEDULE_TYPE /* Hornet : added for imeeting integration*/
939       ,l_evo_rec.MEETING_STATUS /* Hornet : added for imeeting integration*/
940       ,l_evo_rec.PUBLISH_FLAG /* Hornet : added for imeeting integration*/
941       ,l_evo_rec.MEETING_ENCRYPTION_KEY_CODE /* Hornet : added for imeeting integration*/
942       ,l_evo_rec.MEETING_MISC_INFO /* Hornet : added for imeeting integration*/
943       ,l_evo_rec.NUMBER_OF_ATTENDEES /* Hornet : added for imeeting integration*/
944       ,l_evo_rec.EVENT_PURPOSE_CODE /* Hornet */
945    );
946 
947    INSERT INTO ams_event_offers_all_tl(
948       event_offer_id,
949       language,
950       last_update_date,
951       last_updated_by,
952       creation_date,
953       created_by,
954       last_update_login,
955       source_lang,
956       event_offer_name,
957       event_mktg_message,
958       description
959    )
960    SELECT
961       l_evo_rec.event_offer_id,
962       l.language_code,
963       SYSDATE,
964       FND_GLOBAL.user_id,
965       SYSDATE,
966       FND_GLOBAL.user_id,
967       FND_GLOBAL.conc_login_id,
968       USERENV('LANG'),
969       l_evo_rec.event_offer_name,
970       l_evo_rec.event_mktg_message,
971       l_evo_rec.description
972    FROM fnd_languages l
973    WHERE l.installed_flag in ('I', 'B')
974    AND NOT EXISTS(
975          SELECT NULL
976          FROM ams_event_offers_all_tl t
977          WHERE t.event_offer_id = l_evo_rec.event_offer_id
978          AND t.language = l.language_code );
979 
980    x_evo_id := l_evo_rec.event_offer_id;
981 
982    --modified sugupta Should do it only for 'MAIN' event level
983    IF l_evo_rec.event_level = 'MAIN'  THEN
984       --IF p_evo_rec.source_code is NOT NULL THEN
985          AMS_EvhRules_PVT.push_source_code(
986          l_evo_rec.source_code,
987          l_evo_rec.event_object_type,
988          l_evo_rec.event_offer_id
989          );
990       --END IF;
991       OPEN c_list_YN(l_evo_rec.custom_setup_id);
992       FETCH c_list_YN INTO l_cs_count;
993       IF c_list_YN%NOTFOUND THEN
994          CLOSE c_list_YN;
995       else
996          CLOSE c_list_YN;
997          AMS_EvhRules_PVT.Create_list(
998                            p_evo_id     => x_evo_id,
999                            p_evo_name   => l_evo_rec.event_offer_name,
1000                            p_obj_type  => l_evo_rec.event_object_type,
1001                            p_owner_id    => l_evo_rec.owner_user_id
1002                         );
1003       END IF;
1004       AMS_EvhRules_PVT.Add_Update_Access_record(p_object_type => l_evo_rec.event_object_type, -- 'EVEO'
1005                     p_object_id => l_evo_rec.event_offer_id,
1006                     p_Owner_user_id => l_evo_rec.owner_user_id,
1007                     x_return_status => l_return_status,
1008                     x_msg_count          => x_msg_count,
1009                    x_msg_data           => x_msg_data);
1010    END IF;
1011 
1012 --
1013 -- call to copy_ev_header_associations to copy associations from header to offer
1014 -- presently hardcoding setup_id to 1006 and not using it in the procedure..
1015 -- but will use the setup_id passed from evo_rec to get what object_attributes
1016 -- needs to be copied from header to offer based on setup_id associated with new offer_id..
1017 
1018    IF (l_evo_rec.event_level = 'MAIN' and l_copy_flag = 'Y' and l_evo_rec.event_object_type = 'EVEO') then
1019       copy_ev_header_associations(
1020         p_api_version       => l_api_version,
1021         p_init_msg_list     => FND_API.g_false,
1022          p_commit            => FND_API.g_false,
1023         p_validation_level  => FND_API.g_valid_level_full,
1024         x_return_status     => l_return_status,
1025         x_msg_count         => x_msg_count,
1026         x_msg_data          => x_msg_data,
1027           x_transaction_id     => x_transaction_id,
1028         p_src_evh_id        => p_evo_rec.event_header_id,
1029         p_evo_id           =>  x_evo_id,
1030         p_setup_id        =>  l_setup_id
1031       );
1032       IF l_return_status = FND_API.g_ret_sts_error THEN
1033          --RAISE FND_API.g_exc_error;
1034          null;
1035       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1036          --RAISE FND_API.g_exc_unexpected_error;
1037          null;
1038       ELSE
1039          IF (AMS_DEBUG_HIGH_ON) THEN
1040 
1041              AMS_Utility_PVT.debug_message(l_full_name ||': transaction id for copy :'|| x_transaction_id );
1042          END IF;
1043       END IF;
1044    END IF;
1045 
1046 --
1047 -- The AMS_SourceCode_PVT takes care of inserting the newly generated
1048 -- Source Code in ams_source_codes table.
1049 --
1050 --
1051 --
1052 -- sugupta 22-May-2000
1053 -- Added call to AMS_SourceCode_PVT.create_sourcecode.
1054 -- modified sugupta Should do it only for 'MAIN' event level
1055 -- I don't know why he is generating another source code at the end
1056    IF l_evo_rec.event_level = 'MAIN'  THEN
1057       -- attach seeded metrics
1058       AMS_RefreshMetric_PVT.copy_seeded_metric(
1059         p_api_version => l_api_version,
1060         x_return_status => l_return_status,
1061         x_msg_count => x_msg_count,
1062         x_msg_data => x_msg_data,
1063         p_arc_act_metric_used_by => l_evo_rec.event_object_type, --'EVEO'
1064         p_act_metric_used_by_id => x_evo_id,
1065         p_act_metric_used_by_type => NULL
1066       );
1067       IF l_return_status = FND_API.g_ret_sts_error THEN
1068          RAISE FND_API.g_exc_error;
1069       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1070          RAISE FND_API.g_exc_unexpected_error;
1071       END IF;
1072    END IF; -- check for event level MAIN
1073 
1074    ------------------------- finish -------------------------------
1075 
1076    IF FND_API.to_boolean(p_commit) THEN
1077       COMMIT;
1078    END IF;
1079 
1080    FND_MSG_PUB.count_and_get(
1081          p_encoded => FND_API.g_false,
1082          p_count   => x_msg_count,
1083          p_data    => x_msg_data
1084    );
1085 
1086    IF (AMS_DEBUG_HIGH_ON) THEN
1087 
1088 
1089 
1090        AMS_Utility_PVT.debug_message(l_full_name ||': end');
1091 
1092    END IF;
1093 
1094 EXCEPTION
1095 
1096    WHEN FND_API.g_exc_error THEN
1097       ROLLBACK TO create_event_offer;
1098       x_return_status := FND_API.g_ret_sts_error;
1099       FND_MSG_PUB.count_and_get(
1100             p_encoded => FND_API.g_false,
1101             p_count   => x_msg_count,
1102             p_data    => x_msg_data
1103       );
1104 
1105    WHEN FND_API.g_exc_unexpected_error THEN
1106       ROLLBACK TO create_event_offer;
1107       x_return_status := FND_API.g_ret_sts_unexp_error ;
1108       FND_MSG_PUB.count_and_get(
1109             p_encoded => FND_API.g_false,
1110             p_count   => x_msg_count,
1111             p_data    => x_msg_data
1112       );
1113 
1114 
1115    WHEN OTHERS THEN
1116 
1117      IF (c_evo_seq%ISOPEN) THEN
1118       CLOSE c_evo_seq;
1119      END IF;
1120      IF (c_evo_count%ISOPEN) THEN
1121       CLOSE c_evo_count;
1122      END IF;
1123 
1124       ROLLBACK TO create_event_offer;
1125       x_return_status := FND_API.g_ret_sts_unexp_error ;
1126 
1127       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
1128       THEN
1129          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1130       END IF;
1131 
1132       FND_MSG_PUB.count_and_get(
1133             p_encoded => FND_API.g_false,
1134             p_count   => x_msg_count,
1135             p_data    => x_msg_data
1136       );
1137 
1138 END create_event_offer;
1139 
1140 
1141 ---------------------------------------------------------------
1142 -- PROCEDURE
1143 --    delete_event_offer
1144 --
1145 -- HISTORY
1146 --    11/23/1999  sugupta  Created.
1147 ---------------------------------------------------------------
1148 PROCEDURE delete_event_offer(
1149    p_api_version       IN  NUMBER,
1150    p_init_msg_list     IN  VARCHAR2 := FND_API.g_false,
1151    p_commit            IN  VARCHAR2 := FND_API.g_false,
1152 
1153    p_evo_id            IN  NUMBER,
1154    p_object_version    IN  NUMBER,
1155 
1156    x_return_status     OUT NOCOPY VARCHAR2,
1157    x_msg_count         OUT NOCOPY NUMBER,
1158    x_msg_data          OUT NOCOPY VARCHAR2
1159 )
1160 IS
1161 
1162    l_api_version CONSTANT NUMBER       := 1.0;
1163    l_api_name    CONSTANT VARCHAR2(30) := 'delete_event_offer';
1164    l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1165    l_offer_id NUMBER;
1166    l_level  VARCHAR2(30);
1167    l_user_id  NUMBER;
1168    l_res_id   NUMBER;
1169    l_object_type VARCHAR2(30);
1170 
1171    CURSOR get_event_object_type(id_in in NUMBER) is
1172    SELECT event_object_type
1173    FROM AMS_EVENT_OFFERS_ALL_B
1174    WHERE EVENT_OFFER_ID = id_in;
1175 
1176    CURSOR get_res_id(l_user_id IN NUMBER) IS
1177    SELECT resource_id
1178    FROM ams_jtf_rs_emp_v
1179    WHERE user_id = l_user_id;
1180 
1181    CURSOR get_parent_offer_info(l_evo_id IN NUMBER) IS
1182    SELECT event_level,parent_event_offer_id
1183    FROM ams_event_offers_all_b
1184    WHERE event_offer_id = l_evo_id
1185    and   event_level = 'SUB';
1186 
1187 BEGIN
1188 
1189    --------------------- initialize -----------------------
1190    SAVEPOINT delete_event_offer;
1191 
1192    IF (AMS_DEBUG_HIGH_ON) THEN
1193 
1194 
1195 
1196        AMS_Utility_PVT.debug_message(l_full_name||': start');
1197 
1198    END IF;
1199 
1200    IF FND_API.to_boolean(p_init_msg_list) THEN
1201       FND_MSG_PUB.initialize;
1202    END IF;
1203 
1204    IF NOT FND_API.compatible_api_call(
1205          l_api_version,
1206          p_api_version,
1207          l_api_name,
1208          g_pkg_name
1209    ) THEN
1210       RAISE FND_API.g_exc_unexpected_error;
1211    END IF;
1212 
1213    x_return_status := FND_API.G_RET_STS_SUCCESS;
1214    --------------- CHECK ACCESS FOR THE USER-------------------
1215    ----------added sugupta 07/25/2000
1216    l_user_id := FND_GLOBAL.User_Id;
1217    IF (AMS_DEBUG_HIGH_ON) THEN
1218 
1219        AMS_Utility_PVT.debug_message(' CHECK ACCESS l_user_id is ' ||l_user_id );
1220    END IF;
1221    IF l_user_id IS NOT NULL then
1222       open get_res_id(l_user_id);
1223       fetch get_res_id into l_res_id;
1224       close get_res_id;
1225    END IF;
1226 
1227    open get_parent_offer_info(p_evo_id);
1228    fetch get_parent_offer_info into l_level, l_offer_id;
1229    close get_parent_offer_info;
1230 
1231    open get_event_object_type(p_evo_id);
1232    fetch get_event_object_type into l_object_type;
1233    close get_event_object_type;
1234 
1235    IF (l_level <> 'SUB' OR l_level IS NULL ) THEN
1236       l_offer_id := p_evo_id;
1237    END IF;
1238    if AMS_ACCESS_PVT.check_update_access(l_offer_id, l_object_type, l_res_id, 'USER') = 'N' then
1239       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1240          FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_UPDATE_ACCESS'); --reusing the message
1241          FND_MSG_PUB.add;
1242       END IF;
1243       RAISE FND_API.g_exc_error;
1244    end if;
1245 
1246    ------------------------ delete ------------------------
1247    IF (AMS_DEBUG_HIGH_ON) THEN
1248 
1249        AMS_Utility_PVT.debug_message(l_full_name ||': delete');
1250    END IF;
1251 
1252    UPDATE ams_event_offers_all_b
1253    SET active_flag = 'N'
1254    WHERE event_offer_id = p_evo_id
1255    AND object_version_number = p_object_version;
1256 
1257    IF (SQL%NOTFOUND) THEN
1258       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1259       THEN
1260          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1261          FND_MSG_PUB.add;
1262       END IF;
1263       RAISE FND_API.g_exc_error;
1264    END IF;
1265 
1266    -------------------- finish --------------------------
1267    IF FND_API.to_boolean(p_commit) THEN
1268       COMMIT;
1269    END IF;
1270 
1271    FND_MSG_PUB.count_and_get(
1272          p_encoded => FND_API.g_false,
1273          p_count   => x_msg_count,
1274          p_data    => x_msg_data
1275    );
1276 
1277    IF (AMS_DEBUG_HIGH_ON) THEN
1278 
1279 
1280 
1281        AMS_Utility_PVT.debug_message(l_full_name ||': end');
1282 
1283    END IF;
1284 
1285 EXCEPTION
1286 
1287    WHEN FND_API.g_exc_error THEN
1288       ROLLBACK TO delete_event_offer;
1289       x_return_status := FND_API.g_ret_sts_error;
1290       FND_MSG_PUB.count_and_get(
1291             p_encoded => FND_API.g_false,
1292             p_count   => x_msg_count,
1293             p_data    => x_msg_data
1294       );
1295 
1296    WHEN FND_API.g_exc_unexpected_error THEN
1297       ROLLBACK TO delete_event_offer;
1298       x_return_status := FND_API.g_ret_sts_unexp_error ;
1299       FND_MSG_PUB.count_and_get(
1300             p_encoded => FND_API.g_false,
1301             p_count   => x_msg_count,
1302             p_data    => x_msg_data
1303       );
1304 
1305    WHEN OTHERS THEN
1306       ROLLBACK TO delete_event_offer;
1307       x_return_status := FND_API.g_ret_sts_unexp_error ;
1308 
1309       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
1310       THEN
1311          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1312       END IF;
1313 
1314       FND_MSG_PUB.count_and_get(
1315             p_encoded => FND_API.g_false,
1316             p_count   => x_msg_count,
1317             p_data    => x_msg_data
1318       );
1319 
1320 END delete_event_offer;
1321 
1322 
1323 -------------------------------------------------------------------
1324 -- PROCEDURE
1325 --    lock_event_offer
1326 --
1327 -- HISTORY
1328 --    11/23/1999  sugupta  Created
1329 --------------------------------------------------------------------
1330 PROCEDURE lock_event_offer(
1331    p_api_version       IN  NUMBER,
1332    p_init_msg_list     IN  VARCHAR2 := FND_API.g_false,
1333 
1334    p_evo_id           IN  NUMBER,
1335    p_object_version    IN  NUMBER,
1336 
1337    x_return_status     OUT NOCOPY VARCHAR2,
1338    x_msg_count         OUT NOCOPY NUMBER,
1339    x_msg_data          OUT NOCOPY VARCHAR2
1340 )
1341 IS
1342 
1343    l_api_version  CONSTANT NUMBER       := 1.0;
1344    l_api_name     CONSTANT VARCHAR2(30) := 'lock_event_offer';
1345    l_full_name    CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1346 
1347    l_evo_id      NUMBER;
1348 
1349    CURSOR c_evo_b IS
1350    SELECT event_offer_id
1351      FROM ams_event_offers_all_b
1352     WHERE event_offer_id = p_evo_id
1353       AND object_version_number = p_object_version
1354    FOR UPDATE OF event_offer_id NOWAIT;
1355 
1356    CURSOR c_evo_tl IS
1357    SELECT event_offer_id
1358      FROM ams_event_offers_all_tl
1359     WHERE event_offer_id = p_evo_id
1360       AND USERENV('LANG') IN (language, source_lang)
1361    FOR UPDATE OF event_offer_id NOWAIT;
1362 
1363 BEGIN
1364 
1365    -------------------- initialize ------------------------
1366    IF (AMS_DEBUG_HIGH_ON) THEN
1367 
1368        AMS_Utility_PVT.debug_message(l_full_name||': start');
1369    END IF;
1370 
1371    IF FND_API.to_boolean(p_init_msg_list) THEN
1372       FND_MSG_PUB.initialize;
1373    END IF;
1374 
1375    IF NOT FND_API.compatible_api_call(
1376          l_api_version,
1377          p_api_version,
1378          l_api_name,
1379          g_pkg_name
1380    ) THEN
1381       RAISE FND_API.g_exc_unexpected_error;
1382    END IF;
1383 
1384    x_return_status := FND_API.G_RET_STS_SUCCESS;
1385 
1386    ------------------------ lock -------------------------
1387    IF (AMS_DEBUG_HIGH_ON) THEN
1388 
1389        AMS_Utility_PVT.debug_message(l_full_name||': lock');
1390    END IF;
1391 
1392    OPEN c_evo_b;
1393    FETCH c_evo_b INTO l_evo_id;
1394    IF (c_evo_b%NOTFOUND) THEN
1395       CLOSE c_evo_b;
1396       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1397          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1398          FND_MSG_PUB.add;
1399       END IF;
1400       RAISE FND_API.g_exc_error;
1401    END IF;
1402    CLOSE c_evo_b;
1403 
1404    OPEN c_evo_tl;
1405    CLOSE c_evo_tl;
1406 
1407    -------------------- finish --------------------------
1408    FND_MSG_PUB.count_and_get(
1409          p_encoded => FND_API.g_false,
1410          p_count   => x_msg_count,
1411          p_data    => x_msg_data
1412    );
1413 
1414    IF (AMS_DEBUG_HIGH_ON) THEN
1415 
1416 
1417 
1418        AMS_Utility_PVT.debug_message(l_full_name ||': end');
1419 
1420    END IF;
1421 
1422 EXCEPTION
1423 
1424    WHEN AMS_Utility_PVT.resource_locked THEN
1425       x_return_status := FND_API.g_ret_sts_error;
1426       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1427          FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
1428          FND_MSG_PUB.add;
1429       END IF;
1430 
1431       FND_MSG_PUB.count_and_get(
1432             p_encoded => FND_API.g_false,
1433             p_count   => x_msg_count,
1434             p_data    => x_msg_data
1435       );
1436 
1437    WHEN FND_API.g_exc_error THEN
1438       x_return_status := FND_API.g_ret_sts_error;
1439       FND_MSG_PUB.count_and_get(
1440             p_encoded => FND_API.g_false,
1441             p_count   => x_msg_count,
1442             p_data    => x_msg_data
1443       );
1444 
1445    WHEN FND_API.g_exc_unexpected_error THEN
1446       x_return_status := FND_API.g_ret_sts_unexp_error ;
1447       FND_MSG_PUB.count_and_get(
1448             p_encoded => FND_API.g_false,
1449             p_count   => x_msg_count,
1450             p_data    => x_msg_data
1451       );
1452 
1453    WHEN OTHERS THEN
1454       x_return_status := FND_API.g_ret_sts_unexp_error ;
1455       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
1456       THEN
1457          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1458       END IF;
1459 
1460       FND_MSG_PUB.count_and_get(
1461             p_encoded => FND_API.g_false,
1462             p_count   => x_msg_count,
1463             p_data    => x_msg_data
1464       );
1465 
1466 END lock_event_offer;
1467 
1468 
1469 ---------------------------------------------------------------------
1470 -- PROCEDURE
1471 --    update_event_offer
1472 --
1473 -- HISTORY
1474 --    11/23/1999  sugupta  Created
1475 --    01/25/2000  gdeodhar  Added code to pick up the system_status_code
1476 --                     from ams_user_statuses_b table. The UI will
1477 --                     never pass this code.
1478 --   07/07/2000   sugupta  modified call inv and pricing api's based on profile option
1479 --   08/01/2000   sugupta   added access code
1480 --   11-feb-2003  soagrawa  fixed access related bug for INTERNAL bug# 2795823
1481 --   02-jun-2003  dbiswas   modified a cursor for bug# 2983031
1482 --   19-aug-2003  soagrawa  fixed bug# 3100382
1483 ----------------------------------------------------------------------
1484 PROCEDURE update_event_offer(
1485    p_api_version       IN  NUMBER,
1486    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
1487    p_commit            IN  VARCHAR2  := FND_API.g_false,
1488    p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
1489 
1490    p_evo_rec          IN  evo_rec_type,
1491 
1492    x_return_status     OUT NOCOPY VARCHAR2,
1493    x_msg_count         OUT NOCOPY NUMBER,
1494    x_msg_data          OUT NOCOPY VARCHAR2
1495 )
1496 IS
1497 
1498    l_api_version CONSTANT NUMBER := 1.0;
1499    l_api_name    CONSTANT VARCHAR2(30) := 'update_event_offer';
1500    l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1501 
1502    l_evo_rec        evo_rec_type;
1503    l_global_flag    VARCHAR2(25);
1504    l_source_code    VARCHAR2(30);
1505    l_dlv_rec       AMS_ActDelvMethod_PVT.act_DelvMethod_rec_type;
1506 --   location_rec      hz_location_pub.location_rec_type;
1507    location_rec      hz_location_v2pub.location_rec_type;
1508    l_dlv_code      VARCHAR2(30);
1509    l_dlv_id      NUMBER := null;
1510    l_dlv_ver    NUMBER;
1511    l_return_status  VARCHAR2(1);
1512    l_traget_list_exists VARCHAR2(1);
1513 
1514    l_inventory_item_id        NUMBER;
1515    l_org_id         NUMBER;
1516    l_inv_item_number    VARCHAR2(40);
1517    l_inv_item_desc      VARCHAR2(240);
1518    l_inv_long_desc      VARCHAR2(4000);
1519    l_pricelist_header_id  NUMBER;
1520    l_inv_profile   VARCHAR2(1);
1521    l_qp_profile    VARCHAR2(1);
1522    ------------------- REMOVE THESE 3 VAR
1523    l_count       NUMBER;
1524    l_msg         VARCHAR2(2000);
1525    l_msg_count   NUMBER;
1526    ------
1527    l_user_id  NUMBER;
1528    l_res_id   NUMBER;
1529    l_evo_id   NUMBER;
1530    l_dummy    NUMBER;
1531    l_resource_id NUMBER;
1532    l_obj_num  NUMBER;
1533 
1534  -- l_location_rec   HZ_LOCATION_PUB.Location_Rec_Type;
1535   l_location_rec   HZ_LOCATION_V2PUB.Location_Rec_Type;
1536    l_location_id  NUMBER;
1537    l_address1     VARCHAR2(240);
1538    l_address2     VARCHAR2(240);
1539    l_city         VARCHAR2(60);
1540    l_state        VARCHAR2(60);
1541    l_country      VARCHAR2(60);
1542 
1543 
1544    l_sys_st_code    VARCHAR2(30);
1545 
1546    l_oldStDate      DATE;
1547    l_oldEdDate      DATE;
1548    l_actres_id      NUMBER;
1549    l_obj_ver        NUMBER;
1550    l_system_status_code  VARCHAR2(30);
1551    l_min_session_time       DATE;
1552    l_max_session_time       DATE;
1553 
1554 /* Following code is modified by ptendulk to move to 1:1 ffm
1555    l_bind_values      AMF_REQUEST.string_tbl_type;
1556 */
1557    --l_bind_names       JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
1558    --l_bind_values      JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
1559 
1560    -- added by soagrawa for bug# 2761612 21-jan-2003
1561    l_dummy_source_code   VARCHAR2(30);
1562 
1563 -- Somewhere it must be checked however if certain fields can be or
1564 --cannot be updated by the user based on the status of the event.
1565 -- For example, if the event is in active stage, the user will not
1566 --be able to update the Marketing Message or budget related columns.
1567 -- appid, ev_header_id, source_code cannot not be updated by the user.
1568 
1569    CURSOR c_evo_status_evo IS
1570    SELECT system_status_code
1571    FROM ams_user_statuses_b
1572    WHERE user_status_id = p_evo_rec.user_status_id
1573      AND system_status_type = 'AMS_EVENT_STATUS';
1574 
1575    CURSOR c_evo_status_evagd IS
1576    SELECT system_status_code
1577    FROM ams_user_statuses_b
1578    WHERE user_status_id = p_evo_rec.user_status_id
1579    AND system_status_type = 'AMS_EVENT_AGENDA_STATUS';
1580 
1581 -- dbiswas modified cursor for bug# 2983031 on 02-jun-2003
1582    CURSOR c_evo_status IS
1583    SELECT system_status_code
1584    FROM ams_user_statuses_b
1585    WHERE user_status_id = l_evo_rec.user_status_id --p_evo_rec.user_status_id
1586    AND system_status_type = 'AMS_EVENT_STATUS';
1587 
1588    CURSOR c_evo_dlv_mthd IS
1589    SELECT dlv.delivery_media_type_code, dlv.activity_delivery_method_id, dlv.object_version_number
1590    FROM Ams_act_delivery_methods dlv, ams_event_offers_all_b off
1591    WHERE dlv.activity_delivery_method_id = off.event_delivery_method_id
1592    and off.event_offer_id = p_evo_rec.event_offer_id;
1593 
1594    CURSOR c_pricelist_header_id(curr_code IN VARCHAR2) IS
1595    SELECT distinct(pricelist_header_id)
1596    FROM ams_event_offers_all_b evo, qp_price_lists_v qph
1597    WHERE evo.pricelist_header_id = qph.price_list_id
1598    AND   qph.currency_code = curr_code;
1599 
1600    CURSOR get_res_id(l_user_id IN NUMBER) IS
1601    SELECT resource_id
1602    FROM ams_jtf_rs_emp_v
1603    WHERE user_id = l_user_id;
1604 
1605    CURSOR c_location(id_in IN NUMBER) IS
1606    SELECT loc.address1, loc.address2, loc.city, loc.state, loc.country
1607    FROM   hz_locations loc, ams_event_offers_all_b evo
1608    WHERE  loc.location_id = evo.event_location_id
1609    and    evo.event_offer_id = id_in;
1610 
1611 
1612    CURSOR c_bdgt_line_yn(id_in IN NUMBER, objtype_in IN VARCHAR2) IS
1613    SELECT count(*)
1614    FROM OZF_ACT_BUDGETS --anchaudh: changed call from ams_act_budgets to ozf_act_budgets : bug#3453430
1615    WHERE arc_act_budget_used_by = objtype_in
1616    AND act_budget_used_by_id =id_in;
1617 
1618    CURSOR c_evo IS
1619    SELECT global_flag,source_code
1620    FROM ams_event_offers_all_b
1621    WHERE event_offer_id = p_evo_rec.event_offer_id;
1622 
1623    CURSOR c_resources IS
1624    SELECT activity_resource_id, object_version_number
1625    FROM ams_act_resources
1626    WHERE act_resource_used_by_id = p_evo_rec.event_offer_id;
1627 
1628 /*
1629    CURSOR c_venue_id IS
1630    SELECT event_venue_id, event_start_date, event_end_date, system_status_code
1631    FROM ams_event_offers_all_b
1632    WHERE event_offer_id = p_evo_rec.event_offer_id;
1633 */
1634 
1635    CURSOR c_old_dates IS
1636    SELECT event_start_date_time, event_end_date_time
1637    FROM ams_event_offers_all_b
1638    WHERE event_offer_id = p_evo_rec.event_offer_id;
1639 
1640    CURSOR C_get_event_resources(id_in IN NUMBER) IS
1641    SELECT activity_resource_id, object_version_number
1642    FROM   ams_act_resources
1643    WHERE  act_resource_used_by_id = id_in;
1644 
1645    CURSOR C_get_session_resources(id_in IN NUMBER) IS
1646    SELECT activity_resource_id, object_version_number
1647    FROM ams_act_resources
1648    WHERE  arc_act_resource_used_by = 'SESSION'
1649    AND    act_resource_used_by_id IN ( SELECT agenda_id
1650                                        FROM ams_agendas_b
1651                                        WHERE agenda_type = 'SESSION'
1652                                        AND   active_flag = 'Y'
1653                                        AND   parent_id IN ( SELECT agenda_id
1654                                                             FROM ams_agendas_b
1655                                                             WHERE parent_id =  id_in ) );
1656 
1657 -- VMODUR Added 4371624
1658    CURSOR c_get_min_max_session_time(id_in IN NUMBER, type_in in VARCHAR2) IS
1659    select min(s.start_date_time), max(s.end_date_time)
1660      from ams_agendas_b s, ams_agendas_b h
1661     where s.agenda_type = 'SESSION'
1662      and s.active_flag = 'Y'
1663      and s.parent_id = h.agenda_id
1664      and h.parent_id = id_in
1665      and h.parent_type = type_in;
1666 
1667 BEGIN
1668 
1669    IF (AMS_DEBUG_HIGH_ON) THEN
1670 
1671 
1672 
1673        AMS_Utility_PVT.debug_message(l_full_name||': entered update');
1674 
1675    END IF;
1676 
1677   -------------------- initialize -------------------------
1678    SAVEPOINT update_event_offer;
1679 
1680    IF (AMS_DEBUG_HIGH_ON) THEN
1681 
1682        AMS_Utility_PVT.debug_message(l_full_name||': start');
1683 
1684    END IF;
1685 
1686    IF FND_API.to_boolean(p_init_msg_list) THEN
1687       FND_MSG_PUB.initialize;
1688    END IF;
1689 
1690    IF NOT FND_API.compatible_api_call(
1691          l_api_version,
1692          p_api_version,
1693          l_api_name,
1694          g_pkg_name
1695    ) THEN
1696       RAISE FND_API.g_exc_unexpected_error;
1697    END IF;
1698 
1699    x_return_status := FND_API.G_RET_STS_SUCCESS;
1700 
1701    ----------------------- validate ----------------------
1702 
1703    IF (AMS_DEBUG_HIGH_ON) THEN
1704 
1705 
1706 
1707        AMS_Utility_PVT.debug_message(l_full_name ||': validate');
1708 
1709    END IF;
1710      IF (AMS_DEBUG_HIGH_ON) THEN
1711 
1712          AMS_Utility_PVT.debug_message(p_evo_rec.event_offer_id ||': validate1');
1713      END IF;
1714   -- replace g_miss_char/num/date with current column values
1715    complete_evo_rec(p_evo_rec, l_evo_rec);
1716 
1717    IF (AMS_DEBUG_HIGH_ON) THEN
1718 
1719 
1720 
1721        AMS_Utility_PVT.debug_message(l_full_name ||': check items');
1722 
1723    END IF;
1724    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1725       check_evo_items(
1726          p_evo_rec        => l_evo_rec,
1727          p_validation_mode => JTF_PLSQL_API.g_update,
1728          x_return_status   => l_return_status
1729       );
1730 
1731       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1732          RAISE FND_API.g_exc_unexpected_error;
1733       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1734          RAISE FND_API.g_exc_error;
1735       END IF;
1736    END IF;
1737 
1738    IF (AMS_DEBUG_HIGH_ON) THEN
1739 
1740 
1741 
1742        AMS_Utility_PVT.debug_message(l_full_name ||': check records');
1743 
1744    END IF;
1745 
1746    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
1747       check_evo_record(
1748          p_evo_rec        => p_evo_rec,
1749          p_complete_rec   => l_evo_rec,
1750          x_return_status  => l_return_status
1751       );
1752 
1753       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1754          RAISE FND_API.g_exc_unexpected_error;
1755       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1756          RAISE FND_API.g_exc_error;
1757       END IF;
1758    END IF;
1759      -- inter-entity level
1760    IF (AMS_DEBUG_HIGH_ON) THEN
1761 
1762        AMS_Utility_PVT.debug_message(l_full_name ||': check inter-entity');
1763    END IF;
1764    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_inter_entity THEN
1765       check_evo_inter_entity(
1766          p_evo_rec        => p_evo_rec,
1767          p_complete_rec    => l_evo_rec,
1768          p_validation_mode => JTF_PLSQL_API.g_update,
1769          x_return_status   => l_return_status
1770       );
1771       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1772          RAISE FND_API.g_exc_unexpected_error;
1773       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1774          RAISE FND_API.g_exc_error;
1775       END IF;
1776    END IF;
1777 
1778    -- Check if (budget lines are available added 06/04/2001 murali)
1779 
1780    IF (p_evo_rec.currency_code_tc <> FND_API.g_miss_char) THEN
1781       IF (p_evo_rec.currency_code_tc <> nvl(l_evo_rec.currency_code_tc, '1') ) THEN
1782          OPEN c_bdgt_line_yn(l_evo_rec.event_offer_id, l_evo_rec.event_object_type);
1783          FETCH c_bdgt_line_yn INTO l_dummy;
1784          IF c_bdgt_line_yn%NOTFOUND THEN
1785             CLOSE c_bdgt_line_yn;
1786          ELSE
1787             CLOSE c_bdgt_line_yn;
1788             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1789                FND_MESSAGE.set_name('AMS', 'AMS_EVENT_BUD_PRESENT');
1790                FND_MSG_PUB.add;
1791             END IF;
1792             RAISE FND_API.g_exc_error;
1793          END IF;
1794       END IF;
1795    END IF;
1796 
1797 -- check rules specific to update evo.. eg. status id should trigger approval workflow
1798 -- other checks regarding dates and numbers are included in check_evo_record
1799    IF (AMS_DEBUG_HIGH_ON) THEN
1800 
1801        AMS_Utility_PVT.debug_message(l_full_name ||': check update level');
1802    END IF;
1803 
1804      check_evo_update(
1805        p_evo_rec       => l_evo_rec,
1806          x_return_status  => l_return_status
1807       );
1808 
1809       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1810          RAISE FND_API.g_exc_unexpected_error;
1811       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1812          RAISE FND_API.g_exc_error;
1813       END IF;
1814 
1815    -- handle source code update
1816    IF (AMS_DEBUG_HIGH_ON) THEN
1817 
1818        AMS_Utility_PVT.debug_message(l_full_name ||': update source code');
1819    END IF;
1820    -- only for main and non active events
1821 
1822 
1823    /* Changed the p_evo_rec.source_code to l_evo_rec.source_code in the following line
1824       p_evo_rec.source_code will be g_miss_char which will give OSO Exception
1825       Bug # 2233024
1826     */
1827 
1828    IF (AMS_DEBUG_HIGH_ON) THEN
1829 
1830 
1831 
1832        AMS_Utility_PVT.debug_message('The value of p_source_code is ' || l_evo_rec.source_code);
1833 
1834    END IF;
1835 
1836 l_traget_list_exists := FND_API.G_TRUE;
1837    /* Added by GMADANA */
1838    OPEN c_evo;
1839      FETCH c_evo INTO l_global_flag, l_source_code;
1840    CLOSE c_evo;
1841      IF (AMS_DEBUG_HIGH_ON) THEN
1842 
1843          AMS_Utility_PVT.debug_message('The value of p_source_code is ' || l_evo_rec.event_offer_id ||l_evo_rec.event_object_type );
1844      END IF;
1845    l_traget_list_exists := AMS_ScheduleRules_PVT.Target_Group_Exist( p_schedule_id => l_evo_rec.event_offer_id
1846                              , p_obj_type => l_evo_rec.event_object_type);
1847    if (l_traget_list_exists = FND_API.G_FALSE) THEN
1848       IF (AMS_DEBUG_HIGH_ON) THEN
1849 
1850           AMS_Utility_PVT.debug_message('l_traget_list_exists is false' );
1851       END IF;
1852    end if;
1853 
1854    IF p_evo_rec.source_code <> FND_API.g_miss_char
1855    THEN
1856       IF p_evo_rec.source_code <> l_source_code
1857       THEN
1858          IF l_evo_rec.event_level = 'MAIN' AND l_evo_rec.system_status_code = 'NEW' AND l_traget_list_exists = FND_API.G_FALSE
1859          THEN
1860             IF l_evo_rec.event_object_type = 'EVEO' THEN
1861                -- extracting out source code modified by soagrawa
1862                -- 21-jan-2003 bug# 2761612
1863                AMS_EvhRules_PVT.update_evo_source_code(
1864                l_evo_rec.event_offer_id,
1865                l_evo_rec.source_code,
1866                l_evo_rec.global_flag,
1867                l_dummy_source_code,
1868                l_return_status
1869             );
1870             l_evo_rec.source_code := l_dummy_source_code;
1871             ELSE
1872                /* this new procedure needed  for one of event take this comment once the code is ready*/
1873                -- extracting out source code modified by soagrawa
1874                -- 21-jan-2003 bug# 2761612
1875                AMS_EvhRules_PVT.update_eone_source_code(
1876                l_evo_rec.event_offer_id,
1877                l_evo_rec.source_code,
1878                l_evo_rec.global_flag,
1879                l_dummy_source_code,
1880                l_return_status
1881             );
1882             l_evo_rec.source_code := l_dummy_source_code;
1883             END IF;
1884             IF l_return_status = FND_API.g_ret_sts_error THEN
1885                RAISE FND_API.g_exc_error;
1886             ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1887                RAISE FND_API.g_exc_unexpected_error;
1888             END IF;
1889          ELSE
1890             if l_traget_list_exists = FND_API.G_TRUE
1891             THEN
1892                FND_MESSAGE.set_name('AMS', 'AMS_EVEO_SRCCD_NO_CHNG');
1893                FND_MSG_PUB.add;
1894                RAISE FND_API.g_exc_error;
1895             else
1896                FND_MESSAGE.set_name('AMS', 'AMS_CAMP_UPDATE_SRC_STAT');
1897                FND_MSG_PUB.add;
1898                RAISE FND_API.g_exc_error;
1899             END IF;
1900          END IF;
1901       END IF;
1902    ELSIF  p_evo_rec.source_code IS NULL  /* added by musman for bug 2618242 fix*/
1903    THEN
1904       l_evo_rec.source_code := l_source_code;
1905    END IF;
1906 
1907    IF  p_evo_rec.global_flag <> FND_API.g_miss_char
1908     OR p_evo_rec.global_flag is NULL
1909    THEN
1910      IF p_evo_rec.global_flag <> l_global_flag
1911      THEN
1912          IF l_evo_rec.event_level = 'MAIN' AND l_evo_rec.system_status_code = 'NEW' AND l_traget_list_exists = FND_API.G_FALSE
1913          THEN
1914             IF l_evo_rec.event_object_type = 'EVEO' THEN
1915                IF (AMS_DEBUG_HIGH_ON) THEN
1916 
1917                    AMS_Utility_PVT.debug_message('Entered AMS_EvhRules_PVT.update_evo_source_code');
1918                END IF;
1919                -- extracting out source code modified by soagrawa
1920                -- 21-jan-2003 bug# 2761612
1921                AMS_EvhRules_PVT.update_evo_source_code(
1922                l_evo_rec.event_offer_id,
1923                l_evo_rec.source_code,
1924                l_evo_rec.global_flag,
1925                l_dummy_source_code,
1926                l_return_status
1927             );
1928             l_evo_rec.source_code := l_dummy_source_code;
1929             ELSE
1930                /* this new procedure needed  for one of event take this comment once the code is ready*/
1931                -- extracting out source code modified by soagrawa
1932                -- 21-jan-2003 bug# 2761612
1933                AMS_EvhRules_PVT.update_eone_source_code(
1934                l_evo_rec.event_offer_id,
1935                l_evo_rec.source_code,
1936                l_evo_rec.global_flag,
1937                l_dummy_source_code,
1938                l_return_status
1939             );
1940             l_evo_rec.source_code := l_dummy_source_code;
1941             END IF;
1942             IF l_return_status = FND_API.g_ret_sts_error THEN
1943                RAISE FND_API.g_exc_error;
1944             ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1945                RAISE FND_API.g_exc_unexpected_error;
1946             END IF;
1947          ELSE
1948             if l_traget_list_exists = FND_API.G_TRUE
1949             THEN
1950                FND_MESSAGE.set_name('AMS', 'AMS_EVEO_GLFLAG_NO_CHANG');
1951                FND_MSG_PUB.add;
1952                RAISE FND_API.g_exc_error;
1953             else
1954                FND_MESSAGE.set_name('AMS', 'AMS_EVNT_UPDATE_GFLG_STAT');
1955                FND_MSG_PUB.add;
1956                RAISE FND_API.g_exc_error;
1957             END IF;
1958          END IF;
1959       END IF;
1960    END IF;
1961 
1962    --------------- CHECK ACCESS FOR THE USER-------------------
1963    ----------added sugupta 07/25/2000
1964    l_user_id := FND_GLOBAL.User_Id;
1965    IF (AMS_DEBUG_HIGH_ON) THEN
1966 
1967        AMS_Utility_PVT.debug_message(' CHECK ACCESS l_user_id is ' ||l_user_id );
1968    END IF;
1969    if l_user_id IS NOT NULL then
1970       open get_res_id(l_user_id);
1971       fetch get_res_id into l_res_id;
1972       close get_res_id;
1973    end if;
1974    IF l_evo_rec.event_level = 'SUB' THEN
1975       l_evo_id := l_evo_rec.parent_event_offer_id;
1976    ELSE
1977       l_evo_id := l_evo_rec.event_offer_id;
1978    END IF;
1979       IF (AMS_DEBUG_HIGH_ON) THEN
1980 
1981           AMS_Utility_PVT.debug_message(l_evo_id || l_evo_rec.event_object_type || l_user_id ||': CHECK ACCESS');
1982       END IF;
1983 
1984 
1985    -- soagrawa added if clause on 11-feb-2003 for INTERNAL bug# 2795823
1986    IF(l_evo_rec.event_object_type = 'EONE' AND l_evo_rec.parent_type = 'CAMP')
1987    THEN
1988       -- dont check for access
1989       NULL;
1990    ELSE
1991       -- check for access
1992       if AMS_ACCESS_PVT.check_update_access(l_evo_id, l_evo_rec.event_object_type, l_res_id, 'USER') = 'N' then
1993          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1994             FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_UPDATE_ACCESS');
1995             FND_MSG_PUB.add;
1996          END IF;
1997          RAISE FND_API.g_exc_error;
1998       end if;
1999    END IF;
2000 
2001 
2002 -----------------------update---------------------------------------
2003    IF l_evo_rec.user_status_id <> FND_API.g_miss_num
2004    THEN
2005 
2006       -- pick up the correct system_status_code first.
2007       IF l_evo_rec.event_level = 'MAIN'
2008       THEN
2009          OPEN c_evo_status_evo;
2010          FETCH c_evo_status_evo INTO l_evo_rec.system_status_code;
2011          CLOSE c_evo_status_evo;
2012       ELSIF l_evo_rec.event_level = 'SUB'
2013       THEN
2014          OPEN c_evo_status_evagd;
2015          FETCH c_evo_status_evagd INTO l_evo_rec.system_status_code;
2016          CLOSE c_evo_status_evagd;
2017       END IF;
2018    END IF;
2019 
2020 -- Have to confirm that delivery_method code has not changed for this offer.
2021 -- If it has, call the Update_Act_DelvMethod api to change the delv_method
2022 -- corresponding to the delv_method_id stored in the offers table.
2023 -- open the cursor and retrive values for l_dlv_id.. if l_dlv_id exists before
2024 -- that l_dlv_id is always inserted back
2025 -- Please NOTE THAT EVENT_DELIVERY_METHOD_CODE is not updated
2026 -- in complete_evo_rec procedure.. so iis either NULL or it has a new value
2027 -- No code has been added for the case if l_dlv_id does not exist -- added craete_dlv then
2028 -- update_event_offer proceddure is called.. in that case, have to add a
2029 -- proceudre call to Create_Act_DelvMethod if l_dlv_id is null after cursor call
2030 -- sugupta 3/27/00 change of plans.. delivery method code will alwyas be passed to update_event_offer
2031 -- call and not create procedure.. hence adding the code to call Create_Act_DelvMethod
2032 -- dlv method code will neevr be passed for event agenda... so no need to put an if loop for event level
2033 
2034    OPEN c_evo_dlv_mthd;
2035     FETCH c_evo_dlv_mthd INTO l_dlv_code, l_dlv_id, l_dlv_ver;
2036     CLOSE c_evo_dlv_mthd;
2037 
2038 
2039     IF (AMS_DEBUG_HIGH_ON) THEN
2040 
2041 
2042 
2043 
2044 
2045         AMS_Utility_PVT.debug_message( 'delv meth code from cursor ' || l_dlv_code);
2046 
2047 
2048     END IF;
2049     IF (AMS_DEBUG_HIGH_ON) THEN
2050 
2051         AMS_Utility_PVT.debug_message( 'delv meth Code in the Rec ' || l_evo_rec.event_delivery_method_code);
2052     END IF;
2053 
2054     IF (AMS_DEBUG_HIGH_ON) THEN
2055 
2056 
2057 
2058         AMS_Utility_PVT.debug_message( 'delv meth id from cursor ' || l_dlv_id);
2059 
2060     END IF;
2061 
2062    IF l_evo_rec.event_delivery_method_code <> FND_API.g_miss_char
2063       AND l_evo_rec.event_delivery_method_code IS NOT NULL THEN
2064 
2065       IF l_dlv_id is NOT NULL then
2066          IF l_evo_rec.EVENT_DELIVERY_METHOD_CODE <> l_dlv_code THEN
2067             AMS_ActDelvMethod_PVT.init_act_DelvMethod_rec (l_dlv_rec);
2068             l_dlv_rec.ACTIVITY_DELIVERY_METHOD_ID := l_dlv_id;
2069             l_dlv_rec.DELIVERY_MEDIA_TYPE_CODE := l_evo_rec.EVENT_DELIVERY_METHOD_CODE;
2070             l_dlv_rec.object_version_number := l_dlv_ver;
2071 
2072             AMS_ActDelvMethod_PVT.Update_Act_DelvMethod(
2073                          p_api_version => l_api_version,
2074                          p_init_msg_list => FND_API.g_false,
2075                          p_commit => FND_API.g_false,
2076                          p_validation_level => FND_API.g_valid_level_full,
2077                          x_return_status => l_return_status,
2078                          x_msg_count => x_msg_count,
2079                          x_msg_data => x_msg_data,
2080                          p_act_DelvMethod_rec => l_dlv_rec);
2081 
2082             IF l_return_status = FND_API.g_ret_sts_error THEN
2083                   RAISE FND_API.g_exc_error;
2084             ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2085                  RAISE FND_API.g_exc_unexpected_error;
2086             END IF;
2087         END IF;
2088       ELSE
2089          IF l_evo_rec.EVENT_STANDALONE_FLAG = 'Y' THEN
2090             l_dlv_rec.ARC_ACT_DELIVERY_USED_BY := 'EONE';
2091             l_dlv_rec.ACT_DELIVERY_METHOD_USED_BY_ID :=  l_evo_rec.event_offer_id;
2092             l_dlv_rec.DELIVERY_MEDIA_TYPE_CODE := l_evo_rec.EVENT_DELIVERY_METHOD_CODE;
2093          ELSE
2094             l_dlv_rec.ARC_ACT_DELIVERY_USED_BY := 'EVEO';
2095             l_dlv_rec.ACT_DELIVERY_METHOD_USED_BY_ID :=  l_evo_rec.event_offer_id;
2096             l_dlv_rec.DELIVERY_MEDIA_TYPE_CODE := l_evo_rec.EVENT_DELIVERY_METHOD_CODE;
2097          END IF;
2098          AMS_ActDelvMethod_PVT.Create_Act_DelvMethod(
2099                          p_api_version => l_api_version,
2100                          p_init_msg_list => FND_API.g_false,
2101                          p_commit => FND_API.g_false,
2102                          p_validation_level => FND_API.g_valid_level_full,
2103                          x_return_status => l_return_status,
2104                          x_msg_count => x_msg_count,
2105                          x_msg_data => x_msg_data,
2106                          p_act_DelvMethod_rec => l_dlv_rec,
2107                          x_act_DelvMethod_id => l_dlv_id);
2108          IF l_return_status = FND_API.g_ret_sts_error THEN
2109             RAISE FND_API.g_exc_error;
2110          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2111             RAISE FND_API.g_exc_unexpected_error;
2112          END IF;
2113       END IF;
2114   -- ELSE -- meaning delv method code passed as null
2115    -- The following if condition is added for bug # 2376741
2116 
2117      ELSIF(l_evo_rec.event_delivery_method_code IS NULL)
2118      THEN
2119    -- added sugupta 07/26/2000 if delv code passed as null and delv id exists, then we delete act_del_id
2120    -- from both act_delv table as well as eveo table
2121 
2122       IF l_dlv_id is NOT NULL then
2123          AMS_ActDelvMethod_PVT.Delete_Act_DelvMethod(
2124                  p_api_version => l_api_version,
2125                          p_init_msg_list => FND_API.g_false,
2126                          p_commit => FND_API.g_false,
2127                          p_validation_level => FND_API.g_valid_level_full,
2128                          x_return_status => l_return_status,
2129                          x_msg_count => x_msg_count,
2130                          x_msg_data => x_msg_data,
2131                    p_act_DelvMethod_id => l_dlv_id,
2132                    p_object_version => l_dlv_ver);
2133          IF l_return_status = FND_API.g_ret_sts_error THEN
2134             RAISE FND_API.g_exc_error;
2135          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2136             RAISE FND_API.g_exc_unexpected_error;
2137          END IF;
2138          -- now that dlv_id has been deleted from act_delv table, null it from evo table as well
2139          l_dlv_id := null;
2140       END IF;
2141    END IF;
2142 
2143 
2144 ----------INV AND PRICING INTEGRATION /* Added by GMADANA */--------------------
2145 
2146     IF l_evo_rec.INVENTORY_ITEM_ID IS NULL THEN
2147        IF l_evo_rec.INVENTORY_ITEM <> FND_API.g_miss_char
2148           AND l_evo_rec.INVENTORY_ITEM IS NOT NULL THEN
2149           IF (AMS_DEBUG_HIGH_ON) THEN
2150 
2151               AMS_Utility_PVT.debug_message(l_full_name ||':  calling create inv item');
2152           END IF;
2153           l_inv_item_number :=  l_evo_rec.INVENTORY_ITEM;
2154           l_inv_item_desc   :=  l_evo_rec.EVENT_OFFER_NAME;
2155           l_inv_long_desc   :=  l_evo_rec.DESCRIPTION;
2156 
2157 
2158           AMS_EvhRules_PVT.create_inventory_item(
2159                   p_item_number => l_inv_item_number,
2160                   p_item_desc  => l_inv_item_desc,
2161                   p_item_long_desc => l_inv_long_desc,
2162                   p_user_id => l_evo_rec.owner_user_id,
2163                   x_org_id => l_org_id,
2164                   x_inv_item_id => l_inventory_item_id,
2165                   x_return_status  => l_return_status,
2166                   x_msg_count => x_msg_count,
2167                   x_msg_data => x_msg_data);
2168 
2169          l_evo_rec.INVENTORY_ITEM_ID := l_inventory_item_id;
2170          l_evo_rec.ORGANIZATION_ID := l_org_id;
2171 
2172           IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2173              RAISE FND_API.g_exc_unexpected_error;
2174           ELSIF l_return_status = FND_API.g_ret_sts_error THEN
2175              RAISE FND_API.g_exc_error;
2176           END IF;
2177 
2178 
2179           create_global_pricing(
2180                      p_evo_rec   => l_evo_rec,
2181                      x_return_status => l_return_status
2182                      );
2183 
2184           IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2185              RAISE FND_API.g_exc_unexpected_error;
2186           ELSIF l_return_status = FND_API.g_ret_sts_error THEN
2187              RAISE FND_API.g_exc_error;
2188           END IF;
2189 
2190        END IF; -- end if for l_evo_rec.INVENTORY_ITEM <> FND_API.g_miss_char
2191   ELSE
2192       create_global_pricing(
2193               p_evo_rec   => l_evo_rec,
2194               x_return_status => l_return_status
2195               );
2196 
2197       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2198          RAISE FND_API.g_exc_unexpected_error;
2199       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
2200          RAISE FND_API.g_exc_error;
2201       END IF;
2202 
2203   END IF; -- end if for IF l_evo_rec.INVENTORY_ITEM_ID IS NULL
2204 
2205 ----------------END OF INV/PRICING INTEGRATION-----------------------
2206   -- calculate reg_effective_capacity if maximum capacity is not null
2207 
2208    IF l_evo_rec.reg_maximum_capacity IS NOT NULL then
2209       IF l_evo_rec.reg_overbook_pct IS NOT NULL then
2210          l_evo_rec.reg_effective_capacity := round((1 + (l_evo_rec.reg_overbook_pct/100)) * l_evo_rec.reg_maximum_capacity);
2211       ELSE
2212          l_evo_rec.reg_effective_capacity := l_evo_rec.reg_maximum_capacity;
2213       END IF;
2214    ELSE
2215       l_evo_rec.reg_effective_capacity := 0;
2216    END IF;
2217 
2218 --  check if city, state,country has been passed. If they are passed, create a new loc_id
2219 -- THESE will never be passed for event agenda... so no need to put an if loop for event level
2220      -- ==========================================================
2221      -- Following code is added by mukumar on 10/30/2000
2222      -- the code will convert the transaction currency in to
2223      -- functional currency.
2224      -- ==========================================================
2225      IF p_evo_rec.fund_amount_tc IS NOT NULL THEN
2226         IF p_evo_rec.fund_amount_tc <> FND_API.g_miss_num THEN
2227            AMS_EvhRules_PVT.Convert_Evnt_Currency(
2228               p_tc_curr     => l_evo_rec.currency_code_tc,
2229               p_tc_amt      => l_evo_rec.fund_amount_tc,
2230               x_fc_curr     => l_evo_rec.currency_code_fc,
2231               x_fc_amt      => l_evo_rec.fund_amount_fc
2232            ) ;
2233         END IF ;
2234      ELSE
2235         l_evo_rec.fund_amount_fc := null ;
2236      END IF;
2237    -------------------------- check locations --------------------
2238 -- CHECK FOR WHETHER NEW LOCATION NEEDS TO BE CREATED
2239    IF (l_evo_rec.event_location_id IS NOT NULL
2240      AND (nvl(l_evo_rec.CITY, ' ') = ' ' OR l_evo_rec.CITY = FND_API.g_miss_char)
2241       AND (nvl(l_evo_rec.STATE, ' ') = ' ' OR l_evo_rec.STATE = FND_API.g_miss_char)
2242      AND (nvl(l_evo_rec.COUNTRY, ' ') = ' ' OR l_evo_rec.COUNTRY = FND_API.g_miss_char ))
2243    THEN
2244       l_evo_rec.event_location_id := NULL;
2245    ELSE
2246       IF l_evo_rec.event_location_id IS NOT NULL THEN
2247          OPEN c_location(l_evo_rec.event_offer_id);
2248          FETCH c_location INTO l_address1, l_address2, l_city, l_state, l_country;
2249          IF c_location%NOTFOUND THEN
2250             CLOSE c_location;
2251             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
2252                FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
2253                FND_MSG_PUB.add;
2254             END IF;
2255             RAISE FND_API.g_exc_error;
2256          END IF;
2257          CLOSE c_location;
2258       END IF;
2259       IF (nvl(l_evo_rec.city, ' ') <> nvl(l_city, ' ') OR
2260          nvl(l_evo_rec.state, ' ') <> nvl(l_state, ' ') OR
2261          nvl(l_evo_rec.country, ' ') <> nvl(l_country, ' ')) THEN
2262             l_location_rec.address1 := ' ';
2263             l_location_rec.city := l_evo_rec.city;
2264             l_location_rec.state := l_evo_rec.state;
2265             l_location_rec.country := l_evo_rec.country;
2266             l_location_rec.ORIG_SYSTEM_REFERENCE := -1;
2267             l_location_rec.CONTENT_SOURCE_TYPE := 'USER_ENTERED';
2268 	    l_location_rec.created_by_module := 'AMS_EVENT';
2269             HZ_LOCATION_V2PUB.Create_Location(
2270                p_init_msg_list     => FND_API.g_false,
2271                p_location_rec      => l_location_rec,
2272                x_return_status     => l_return_status,
2273                x_msg_count         => x_msg_count,
2274                x_msg_data          => x_msg_data,
2275                x_location_id       => l_evo_rec.event_location_id
2276                );
2277             --IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
2278             --  l_venue_rec.location_id := l_location_id;
2279             --END IF;
2280             IF l_return_status = FND_API.g_ret_sts_error THEN
2281                RAISE FND_API.g_exc_error;
2282             ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2283                RAISE FND_API.g_exc_unexpected_error;
2284             END IF;
2285       END IF; --check for addr1, city, state, country
2286     END IF; -- check for NULL
2287 
2288 
2289     /* Code Added by GMADANA for checking whether parent is active or not */
2290 
2291    -- soagrawa added if clause on 24-feb-2003 for INTERNAL bug# 2816673
2292    IF(l_evo_rec.event_object_type = 'EONE' AND l_evo_rec.parent_type = 'CAMP')
2293    THEN
2294       -- dont check for parent being active
2295       NULL;
2296    ELSE
2297 
2298      Check_Parent_Active(
2299          p_evo_rec    => l_evo_rec,
2300          x_return_status      => x_return_status
2301       );
2302 
2303       IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2304          RAISE Fnd_Api.g_exc_unexpected_error;
2305       ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
2306          RAISE Fnd_Api.g_exc_error;
2307       END IF;
2308    END IF;
2309 
2310      /* Code Added by GMADANA for Date validation for attaching Program as Parent */
2311      /* Check_Dates_Range has date validation for MAIN level and SUB level events
2312         as agenda for Event Schedule has Start date on the GUI.
2313      */
2314 
2315    -- soagrawa added if clause on 24-feb-2003 for INTERNAL bug# 2816673
2316    IF(l_evo_rec.event_object_type = 'EONE' AND l_evo_rec.parent_type = 'CAMP')
2317    THEN
2318       -- dont check for date range
2319       NULL;
2320    ELSE
2321      Check_Dates_Range(
2322          p_evo_rec    => l_evo_rec,
2323          x_return_status      => x_return_status
2324       );
2325 
2326       IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2327          RAISE Fnd_Api.g_exc_unexpected_error;
2328       ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
2329          RAISE Fnd_Api.g_exc_error;
2330       END IF;
2331 
2332    END IF;
2333 
2334 -- VMODUR Added for Bug 4371624
2335    IF l_evo_rec.event_level = 'MAIN' THEN
2336      OPEN c_get_min_max_session_time(l_evo_rec.event_offer_id, l_evo_rec.event_object_type);
2337      FETCH c_get_min_max_session_time INTO l_min_session_time, l_max_session_time;
2338      CLOSE c_get_min_max_session_time;
2339 
2340     IF l_min_session_time IS NOT NULL AND l_max_session_time IS NOT NULL THEN
2341      IF (AMS_DEBUG_HIGH_ON) THEN
2342        AMS_Utility_PVT.debug_message('l_min_session_time: '||to_char(l_min_session_time,'DD-MON-YYYY HH24:MI:SS'));
2343        AMS_Utility_PVT.debug_message('l_max_session_time: '||to_char(l_max_session_time,'DD-MON-YYYY HH24:MI:SS'));
2344      END IF;
2345     END IF;
2346 
2347      IF l_min_session_time IS NOT NULL AND l_min_session_time < l_evo_rec.event_start_date_time THEN
2348         IF (AMS_DEBUG_HIGH_ON) THEN
2349           AMS_Utility_PVT.debug_message('Event Start is after Min Session Start');
2350         END IF;
2351          Fnd_Message.set_name('AMS', 'AMS_EVT_SESS_STDT_CONFLICT');
2352          Fnd_Msg_Pub.ADD;
2353          x_return_status := Fnd_Api.g_ret_sts_error;
2354          RETURN;
2355      END IF;
2356 
2357      IF l_max_session_time IS NOT NULL AND l_max_session_time > l_evo_rec.event_end_date_time THEN
2358         IF (AMS_DEBUG_HIGH_ON) THEN
2359           AMS_Utility_PVT.debug_message('Event End is before Max Session End');
2360         END IF;
2361          Fnd_Message.set_name('AMS', 'AMS_EVT_SESS_EDDT_CONFLICT');
2362          Fnd_Msg_Pub.ADD;
2363          x_return_status := Fnd_Api.g_ret_sts_error;
2364          RETURN;
2365      END IF;
2366 
2367    END IF;
2368 -- VMODUR End of Addition
2369 
2370     /* Call to Metrics If Progam name has chnaged. Only EONEs have program as parent, not EVEO */
2371     IF( l_evo_rec.event_object_type = 'EONE') THEN
2372        Update_Metrics (
2373           p_evo_rec => l_evo_rec,
2374           x_return_status  => x_return_status,
2375           x_msg_count  => x_msg_count,
2376           x_msg_data  =>x_msg_data
2377         );
2378     END IF;
2379 
2380     IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2381          RAISE Fnd_Api.g_exc_unexpected_error;
2382     ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
2383          RAISE Fnd_Api.g_exc_error;
2384     END IF;
2385 
2386    /* If the owner user id cahnges call AMS_EvhRules_PVT.Update_Owner */
2387      -- Change the owner in Access table if the owner is changed.
2388 
2389    IF  p_evo_rec.owner_user_id <> FND_API.g_miss_num
2390    THEN
2391       AMS_EvhRules_PVT.Update_Owner(
2392            p_api_version       => p_api_version,
2393            p_init_msg_list     => p_init_msg_list,
2394            p_commit            => p_commit,
2395            p_validation_level  => p_validation_level,
2396            x_return_status     => l_return_status,
2397            x_msg_count         => x_msg_count,
2398            x_msg_data          => x_msg_data,
2399            p_object_type       => l_evo_rec.event_object_type,
2400            p_event_id          => l_evo_rec.event_offer_id,
2401            p_owner_id          => p_evo_rec.owner_user_id
2402            );
2403 
2404       IF l_return_status = FND_API.g_ret_sts_error THEN
2405          RAISE FND_API.g_exc_error;
2406       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2407          RAISE FND_API.g_exc_unexpected_error;
2408       END IF;
2409    END IF ;
2410 
2411    OPEN  c_old_dates;
2412    FETCH c_old_dates INTO l_oldStDate, l_oldEdDate;
2413    CLOSE c_old_dates;
2414 
2415    IF( l_oldStDate <> l_evo_rec.event_start_date_time
2416        OR l_oldEdDate <> l_evo_rec.event_end_date_time)
2417    THEN
2418 
2419        -- Get all the resources attached to the event (event level)
2420        -- and make them unconfirmed.
2421 
2422        OPEN  C_get_event_resources(l_evo_rec.event_offer_id);
2423        FETCH C_get_event_resources INTO l_actres_id, l_obj_ver;
2424 
2425        WHILE C_get_event_resources%FOUND LOOP
2426 
2427             UPDATE ams_act_resources
2428             SET  object_version_number = l_obj_ver + 1,
2429                  system_status_code = 'UNCONFIRMED',
2430                  user_status_id = ( SELECT user_status_id
2431                                     FROM AMS_USER_STATUSES_B
2432                                     WHERE SYSTEM_STATUS_CODE = 'UNCONFIRMED'
2433                                     AND  SYSTEM_STATUS_TYPE = 'AMS_EVENT_AGENDA_STATUS'
2434                                     -- added by soagrawa on 25-feb-2003 for bug# 2820297
2435                                     AND  DEFAULT_FLAG = 'Y')
2436             WHERE activity_resource_id = l_actres_id;
2437 
2438             FETCH C_get_event_resources INTO l_actres_id, l_obj_ver;
2439 
2440        END LOOP;
2441 
2442 
2443        -- Get all the resources attached to the event (Session level)
2444        -- and make them unconfirmed.
2445        OPEN  C_get_session_resources(l_evo_rec.event_offer_id);
2446        FETCH C_get_session_resources INTO l_actres_id, l_obj_ver;
2447 
2448        WHILE C_get_session_resources%FOUND LOOP
2449 
2450             UPDATE ams_act_resources
2451             SET  object_version_number = l_obj_ver + 1,
2452                  system_status_code = 'UNCONFIRMED',
2453                  user_status_id = ( SELECT user_status_id
2454                                        FROM AMS_USER_STATUSES_B
2455                                        WHERE SYSTEM_STATUS_CODE = 'UNCONFIRMED'
2456                                        AND  SYSTEM_STATUS_TYPE = 'AMS_EVENT_AGENDA_STATUS'
2457                                        -- added by soagrawa on 25-feb-2003 for bug# 2820297
2458                                        AND  DEFAULT_FLAG = 'Y')
2459             WHERE activity_resource_id = l_actres_id;
2460 
2461             FETCH C_get_session_resources INTO l_actres_id, l_obj_ver;
2462 
2463        END LOOP;
2464 
2465    END IF;
2466 
2467 
2468 
2469 
2470   /* Get the Old venue id, old start date and old end date
2471      for event fulfilment which will be called at the end of
2472      update
2473   */
2474   /*
2475    OPEN  c_venue_id;
2476    FETCH c_venue_id INTO l_venue_id, l_start_date, l_end_date, l_system_status_code;
2477    CLOSE c_venue_id;
2478   */
2479 
2480 -------------------------- update --------------------
2481    IF (AMS_DEBUG_HIGH_ON) THEN
2482 
2483        AMS_Utility_PVT.debug_message(l_full_name ||': update');
2484    END IF;
2485    IF (AMS_DEBUG_HIGH_ON) THEN
2486 
2487        AMS_Utility_PVT.debug_message('obj-ver number'||l_evo_rec.object_version_number);
2488    END IF;
2489    IF (AMS_DEBUG_HIGH_ON) THEN
2490 
2491        AMS_Utility_PVT.debug_message('obj-id'||l_evo_rec.event_offer_id);
2492    END IF;
2493    IF (AMS_DEBUG_HIGH_ON) THEN
2494 
2495        AMS_Utility_PVT.debug_message('obj-flag'||l_evo_rec.overflow_flag);
2496    END IF;
2497 
2498 -- GDEODHAR : Sept. 26, 2000 added two separate update statements.
2499 -- One for the main events where the workflow has to be kicked off for status change
2500 -- and hence the update of the base table should not update the status related fields.
2501 -- The other update statement is needed for the Agenda items for which the status change
2502 -- is straight-forward.
2503 
2504    IF  l_evo_rec.event_level = 'MAIN' THEN
2505       UPDATE ams_event_offers_all_b SET
2506          last_update_date = SYSDATE,
2507          last_updated_by = FND_GLOBAL.user_id,
2508          last_update_login = FND_GLOBAL.conc_login_id,
2509          object_version_number = l_evo_rec.object_version_number + 1,
2510          private_flag = l_evo_rec.private_flag,
2511          active_flag = l_evo_rec.active_flag,
2512          source_code = l_evo_rec.source_code,
2513          event_level = l_evo_rec.event_level,
2514          event_type_code = l_evo_rec.event_type_code,
2515          event_delivery_method_id = l_dlv_id,
2516          event_language_code = l_evo_rec.event_language_code,
2517          event_location_id = l_evo_rec.event_location_id,
2518          overflow_flag = l_evo_rec.overflow_flag,
2519          partner_flag = l_evo_rec.partner_flag,
2520          event_standalone_flag = l_evo_rec.event_standalone_flag,
2521          reg_frozen_flag = l_evo_rec.reg_frozen_flag,
2522          reg_required_flag = l_evo_rec.reg_required_flag,
2523          reg_charge_flag = l_evo_rec.reg_charge_flag,
2524          reg_invited_only_flag = l_evo_rec.reg_invited_only_flag,
2525          reg_waitlist_allowed_flag = l_evo_rec.reg_waitlist_allowed_flag,
2526          reg_overbook_allowed_flag = l_evo_rec.reg_overbook_allowed_flag,
2527          parent_event_offer_id = l_evo_rec.parent_event_offer_id,
2528          event_duration = l_evo_rec.event_duration,
2529          event_duration_uom_code = l_evo_rec.event_duration_uom_code,
2530         -- event_start_date = l_evo_rec.event_start_date,
2531          event_start_date_time = l_evo_rec.event_start_date_time,
2532         -- event_end_date = l_evo_rec.event_end_date,
2533          event_end_date_time = l_evo_rec.event_end_date_time,
2534          reg_start_date = l_evo_rec.reg_start_date,
2535          reg_start_time = to_date(to_char(l_evo_rec.reg_start_time,'HH24:MI'),'HH24:MI'),
2536          reg_end_date = l_evo_rec.reg_end_date,
2537          reg_end_time = to_date(to_char(l_evo_rec.reg_end_time,'HH24:MI'),'HH24:MI'),
2538          reg_maximum_capacity = l_evo_rec.reg_maximum_capacity,
2539          reg_overbook_pct = l_evo_rec.reg_overbook_pct,
2540          reg_effective_capacity = l_evo_rec.reg_effective_capacity,
2541          reg_waitlist_pct = l_evo_rec.reg_waitlist_pct,
2542          reg_minimum_capacity = l_evo_rec.reg_minimum_capacity,
2543          reg_minimum_req_by_date = l_evo_rec.reg_minimum_req_by_date,
2544          inventory_item_id = l_evo_rec.INVENTORY_ITEM_ID,
2545          organization_id = l_evo_rec.ORGANIZATION_ID,
2546          pricelist_header_id = l_evo_rec.pricelist_header_id,
2547          pricelist_line_id = l_evo_rec.pricelist_line_id,
2548          waitlist_action_type_code = l_evo_rec.waitlist_action_type_code,
2549          stream_type_code = l_evo_rec.stream_type_code,
2550          owner_user_id = l_evo_rec.owner_user_id,
2551          event_full_flag = l_evo_rec.event_full_flag,
2552          forecasted_revenue = l_evo_rec.forecasted_revenue,
2553          actual_revenue = l_evo_rec.actual_revenue,
2554          forecasted_cost = l_evo_rec.forecasted_cost,
2555          actual_cost = l_evo_rec.actual_cost,
2556          fund_source_type_code = l_evo_rec.fund_source_type_code,
2557          fund_source_id = l_evo_rec.fund_source_id,
2558          cert_credit_type_code = l_evo_rec.cert_credit_type_code,
2559          certification_credits = l_evo_rec.certification_credits,
2560          coordinator_id = l_evo_rec.coordinator_id,
2561          priority_type_code = l_evo_rec.priority_type_code,
2562          cancellation_reason_code = l_evo_rec.cancellation_reason_code,
2563          email = l_evo_rec.email,
2564          phone = l_evo_rec.phone,
2565          fund_amount_tc = l_evo_rec.fund_amount_tc,
2566          fund_amount_fc = l_evo_rec.fund_amount_fc,
2567          currency_code_tc = l_evo_rec.currency_code_tc,
2568          currency_code_fc = l_evo_rec.currency_code_fc,
2569          url = l_evo_rec.url,
2570          timezone_id = l_evo_rec.timezone_id,
2571          --event_venue_id = l_evo_rec.event_venue_id,
2572          inbound_script_name = l_evo_rec.inbound_script_name,
2573          auto_register_flag = NVL(l_evo_rec.auto_register_flag, nvl(FND_PROFILE.value('AMS_AUTO_REGISTER_FLAG'), 'Y')),
2574          attribute_category = l_evo_rec.attribute_category,
2575          attribute1 = l_evo_rec.attribute1,
2576          attribute2 = l_evo_rec.attribute2,
2577          attribute3 = l_evo_rec.attribute3,
2578          attribute4 = l_evo_rec.attribute4,
2579          attribute5 = l_evo_rec.attribute5,
2580          attribute6 = l_evo_rec.attribute6,
2581          attribute7 = l_evo_rec.attribute7,
2582          attribute8 = l_evo_rec.attribute8,
2583          attribute9 = l_evo_rec.attribute9,
2584          attribute10 = l_evo_rec.attribute10,
2585          attribute11 = l_evo_rec.attribute11,
2586          attribute12 = l_evo_rec.attribute12,
2587          attribute13 = l_evo_rec.attribute13,
2588          attribute14 = l_evo_rec.attribute14,
2589          attribute15 = l_evo_rec.attribute15,
2590          country_code = l_evo_rec.country_code,
2591          business_unit_id = l_evo_rec.business_unit_id,
2592          event_calendar  = l_evo_rec.event_calendar,
2593          start_period_name = l_evo_rec.start_period_name,
2594          end_period_name = l_evo_rec.end_period_name,
2595          global_flag = nvl(l_evo_rec.global_flag, 'N'),
2596          task_id = l_evo_rec.task_id,  --Hornet
2597          --program_id = l_evo_rec.program_id, --Hornet
2598          parent_type = l_evo_rec.parent_type,  --Hornet
2599          parent_id = l_evo_rec.parent_id  --Hornet
2600          ,CREATE_ATTENDANT_LEAD_FLAG = l_evo_rec.CREATE_ATTENDANT_LEAD_FLAG /*hornet*/
2601          ,CREATE_REGISTRANT_LEAD_FLAG = l_evo_rec.CREATE_REGISTRANT_LEAD_FLAG /*hornet*/
2602          --,EVENT_OBJECT_TYPE = l_evo_rec.event_object_type /* hornet*/
2603          ,reg_timezone_id = l_evo_rec.reg_timezone_id
2604          ,event_password = l_evo_rec.event_password /* Hornet : added for imeeting integration*/
2605          ,record_event_flag = l_evo_rec.record_event_flag   /* Hornet : added for imeeting integration*/
2606          ,allow_register_in_middle_flag = l_evo_rec.allow_register_in_middle_flag  /* Hornet : added for imeeting integration*/
2607          ,publish_attendees_flag = l_evo_rec.publish_attendees_flag  /* Hornet : added for imeeting integration*/
2608          ,direct_join_flag = l_evo_rec.direct_join_flag   /* Hornet : added for imeeting integration*/
2609          ,event_notification_method = l_evo_rec.event_notification_method  /* Hornet : added for imeeting integration*/
2610          ,actual_start_time = l_evo_rec.actual_start_time  /* Hornet : added for imeeting integration*/
2611          ,actual_end_time = l_evo_rec.actual_end_time  /* Hornet : added for imeeting integration*/
2612          ,server_id = l_evo_rec.server_id  /* Hornet : added for imeeting integration*/
2613          ,OWNER_FND_USER_ID = l_evo_rec.OWNER_FND_USER_ID /* Hornet : added for imeeting integration*/
2614          ,MEETING_DIAL_IN_INFO = l_evo_rec.MEETING_DIAL_IN_INFO /* Hornet : added for imeeting integration*/
2615          ,MEETING_EMAIL_SUBJECT = l_evo_rec.MEETING_EMAIL_SUBJECT /* Hornet : added for imeeting integration*/
2616          ,MEETING_SCHEDULE_TYPE = l_evo_rec.MEETING_SCHEDULE_TYPE /* Hornet : added for imeeting integration*/
2617          ,MEETING_STATUS = l_evo_rec.MEETING_STATUS /* Hornet : added for imeeting integration*/
2618          ,PUBLISH_FLAG = l_evo_rec.PUBLISH_FLAG /* Hornet : added for imeeting integration*/
2619          ,MEETING_ENCRYPTION_KEY_CODE = l_evo_rec.MEETING_ENCRYPTION_KEY_CODE /* Hornet : added for imeeting integration*/
2620          ,MEETING_MISC_INFO = l_evo_rec.MEETING_MISC_INFO /* Hornet : added for imeeting integration*/
2621          ,NUMBER_OF_ATTENDEES = l_evo_rec.NUMBER_OF_ATTENDEES /* Hornet : added for imeeting integration*/
2622          ,EVENT_PURPOSE_CODE = l_evo_rec.EVENT_PURPOSE_CODE /* Hornet */
2623       WHERE event_offer_id = l_evo_rec.event_offer_id
2624       AND object_version_number = l_evo_rec.object_version_number;
2625    ELSIF l_evo_rec.event_level = 'SUB' THEN
2626       UPDATE ams_event_offers_all_b SET
2627          last_update_date = SYSDATE,
2628          last_updated_by = FND_GLOBAL.user_id,
2629          last_update_login = FND_GLOBAL.conc_login_id,
2630          object_version_number = l_evo_rec.object_version_number + 1,
2631          private_flag = l_evo_rec.private_flag,
2632          active_flag = l_evo_rec.active_flag,
2633          source_code = l_evo_rec.source_code,
2634          event_level = l_evo_rec.event_level,
2635          user_status_id = l_evo_rec.user_status_id,
2636          system_status_code = l_evo_rec.system_status_code,
2637          last_status_date = l_evo_rec.last_status_date,
2638          event_type_code = l_evo_rec.event_type_code,
2639          event_delivery_method_id = l_dlv_id,
2640          event_language_code = l_evo_rec.event_language_code,
2641          event_location_id = l_evo_rec.event_location_id,
2642          overflow_flag = l_evo_rec.overflow_flag,
2643          partner_flag = l_evo_rec.partner_flag,
2644          event_standalone_flag = l_evo_rec.event_standalone_flag,
2645          reg_frozen_flag = l_evo_rec.reg_frozen_flag,
2646          reg_required_flag = l_evo_rec.reg_required_flag,
2647          reg_charge_flag = l_evo_rec.reg_charge_flag,
2648          reg_invited_only_flag = l_evo_rec.reg_invited_only_flag,
2649          reg_waitlist_allowed_flag = l_evo_rec.reg_waitlist_allowed_flag,
2650          reg_overbook_allowed_flag = l_evo_rec.reg_overbook_allowed_flag,
2651          parent_event_offer_id = l_evo_rec.parent_event_offer_id,
2652          event_duration = l_evo_rec.event_duration,
2653          event_duration_uom_code = l_evo_rec.event_duration_uom_code,
2654          --event_start_date = l_evo_rec.event_start_date,
2655          event_start_date_time = l_evo_rec.event_start_date_time,
2656          --event_end_date = l_evo_rec.event_end_date,
2657          event_end_date_time = l_evo_rec.event_end_date_time,
2658          reg_start_date = l_evo_rec.reg_start_date,
2659          reg_start_time = to_date(to_char(l_evo_rec.reg_start_time,'HH24:MI'),'HH24:MI'),
2660          reg_end_date = l_evo_rec.reg_end_date,
2661          reg_end_time = to_date(to_char(l_evo_rec.reg_end_time,'HH24:MI'),'HH24:MI'),
2662          reg_maximum_capacity = l_evo_rec.reg_maximum_capacity,
2663          reg_overbook_pct = l_evo_rec.reg_overbook_pct,
2664          reg_effective_capacity = l_evo_rec.reg_effective_capacity,
2665          reg_waitlist_pct = l_evo_rec.reg_waitlist_pct,
2666          reg_minimum_capacity = l_evo_rec.reg_minimum_capacity,
2667          reg_minimum_req_by_date = l_evo_rec.reg_minimum_req_by_date,
2668          inventory_item_id = l_evo_rec.INVENTORY_ITEM_ID,
2669          organization_id = l_evo_rec.ORGANIZATION_ID,
2670          pricelist_header_id = l_evo_rec.pricelist_header_id,
2671          pricelist_line_id = l_evo_rec.pricelist_line_id,
2672          waitlist_action_type_code = l_evo_rec.waitlist_action_type_code,
2673          stream_type_code = l_evo_rec.stream_type_code,
2674          owner_user_id = l_evo_rec.owner_user_id,
2675          event_full_flag = l_evo_rec.event_full_flag,
2676          forecasted_revenue = l_evo_rec.forecasted_revenue,
2677          actual_revenue = l_evo_rec.actual_revenue,
2678          forecasted_cost = l_evo_rec.forecasted_cost,
2679          actual_cost = l_evo_rec.actual_cost,
2680          fund_source_type_code = l_evo_rec.fund_source_type_code,
2681          fund_source_id = l_evo_rec.fund_source_id,
2682          cert_credit_type_code = l_evo_rec.cert_credit_type_code,
2683          certification_credits = l_evo_rec.certification_credits,
2684          coordinator_id = l_evo_rec.coordinator_id,
2685          priority_type_code = l_evo_rec.priority_type_code,
2686          cancellation_reason_code = l_evo_rec.cancellation_reason_code,
2687          email = l_evo_rec.email,
2688          phone = l_evo_rec.phone,
2689          fund_amount_tc = l_evo_rec.fund_amount_tc,
2690          fund_amount_fc = l_evo_rec.fund_amount_fc,
2691          currency_code_tc = l_evo_rec.currency_code_tc,
2692          currency_code_fc = l_evo_rec.currency_code_fc,
2693          url = l_evo_rec.url,
2694          timezone_id = l_evo_rec.timezone_id,
2695         -- event_venue_id = l_evo_rec.event_venue_id,
2696          inbound_script_name = l_evo_rec.inbound_script_name,
2697          auto_register_flag = NVL(l_evo_rec.auto_register_flag, nvl(FND_PROFILE.value('AMS_AUTO_REGISTER_FLAG'), 'Y')),
2698          attribute_category = l_evo_rec.attribute_category,
2699          attribute1 = l_evo_rec.attribute1,
2700          attribute2 = l_evo_rec.attribute2,
2701          attribute3 = l_evo_rec.attribute3,
2702          attribute4 = l_evo_rec.attribute4,
2703          attribute5 = l_evo_rec.attribute5,
2704          attribute6 = l_evo_rec.attribute6,
2705          attribute7 = l_evo_rec.attribute7,
2706          attribute8 = l_evo_rec.attribute8,
2707          attribute9 = l_evo_rec.attribute9,
2708          attribute10 = l_evo_rec.attribute10,
2709          attribute11 = l_evo_rec.attribute11,
2710          attribute12 = l_evo_rec.attribute12,
2711          attribute13 = l_evo_rec.attribute13,
2712          attribute14 = l_evo_rec.attribute14,
2713          attribute15 = l_evo_rec.attribute15,
2714          country_code = l_evo_rec.country_code,
2715          business_unit_id = l_evo_rec.business_unit_id,
2716          event_calendar  = l_evo_rec.event_calendar,
2717          start_period_name = l_evo_rec.start_period_name,
2718          end_period_name = l_evo_rec.end_period_name,
2719          global_flag = nvl(l_evo_rec.global_flag, 'N')
2720          ,reg_timezone_id = l_evo_rec.reg_timezone_id
2721          ,event_password = l_evo_rec.event_password /* Hornet : added for imeeting integration*/
2722          ,record_event_flag = l_evo_rec.record_event_flag   /* Hornet : added for imeeting integration*/
2723          ,allow_register_in_middle_flag = l_evo_rec.allow_register_in_middle_flag  /* Hornet : added for imeeting integration*/
2724          ,publish_attendees_flag = l_evo_rec.publish_attendees_flag  /* Hornet : added for imeeting integration*/
2725          ,direct_join_flag = l_evo_rec.direct_join_flag   /* Hornet : added for imeeting integration*/
2726          ,event_notification_method = l_evo_rec.event_notification_method  /* Hornet : added for imeeting integration*/
2727          ,actual_start_time = l_evo_rec.actual_start_time  /* Hornet : added for imeeting integration*/
2728          ,actual_end_time = l_evo_rec.actual_end_time  /* Hornet : added for imeeting integration*/
2729          ,server_id = l_evo_rec.server_id  /* Hornet : added for imeeting integration*/
2730          ,OWNER_FND_USER_ID = l_evo_rec.OWNER_FND_USER_ID /* Hornet : added for imeeting integration*/
2731          ,MEETING_DIAL_IN_INFO = l_evo_rec.MEETING_DIAL_IN_INFO /* Hornet : added for imeeting integration*/
2732          ,MEETING_EMAIL_SUBJECT = l_evo_rec.MEETING_EMAIL_SUBJECT /* Hornet : added for imeeting integration*/
2733          ,MEETING_SCHEDULE_TYPE = l_evo_rec.MEETING_SCHEDULE_TYPE /* Hornet : added for imeeting integration*/
2734          ,MEETING_STATUS = l_evo_rec.MEETING_STATUS /* Hornet : added for imeeting integration*/
2735          ,PUBLISH_FLAG = l_evo_rec.PUBLISH_FLAG /* Hornet : added for imeeting integration*/
2736          ,MEETING_ENCRYPTION_KEY_CODE = l_evo_rec.MEETING_ENCRYPTION_KEY_CODE /* Hornet : added for imeeting integration*/
2737          ,MEETING_MISC_INFO = l_evo_rec.MEETING_MISC_INFO /* Hornet : added for imeeting integration*/
2738          ,NUMBER_OF_ATTENDEES = l_evo_rec.NUMBER_OF_ATTENDEES /* Hornet : added for imeeting integration*/
2739          ,EVENT_PURPOSE_CODE = l_evo_rec.EVENT_PURPOSE_CODE /* Hornet */
2740 
2741       WHERE event_offer_id = l_evo_rec.event_offer_id
2742       AND object_version_number = l_evo_rec.object_version_number;
2743    END IF;
2744 -- GDEODHAR : End of changes. Sept. 26th 2000.
2745    IF (SQL%NOTFOUND) THEN
2746       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
2747          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
2748          FND_MSG_PUB.add;
2749       END IF;
2750       RAISE FND_API.g_exc_error;
2751    END IF;
2752 
2753 -- GDEODHAR : Sept. 26th, 2000 : Note that for MAIN Events and Agenda (SUB) items, the
2754 -- update of the TL table is the same.
2755 
2756    update ams_event_offers_all_tl set
2757       event_offer_name = l_evo_rec.event_offer_name,
2758       event_mktg_message = l_evo_rec.event_mktg_message,
2759       description = l_evo_rec.description,
2760       last_update_date = SYSDATE,
2761       last_updated_by = FND_GLOBAL.user_id,
2762       last_update_login = FND_GLOBAL.conc_login_id,
2763       source_lang = USERENV('LANG')
2764    WHERE event_offer_id = l_evo_rec.event_offer_id
2765    AND USERENV('LANG') IN (language, source_lang);
2766 
2767    IF (SQL%NOTFOUND) THEN
2768       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
2769          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
2770          FND_MSG_PUB.add;
2771       END IF;
2772       RAISE FND_API.g_exc_error;
2773    END IF;
2774 
2775 ---murali call "update_event_status 09/26/00 S
2776 -- GDEODHAR : Added a condition. (Sept. 26th 2000)
2777 
2778 --Added by ANSKUMAR FOR FULFILMENT FIX : 4676049
2779  fulfill_event_offer(l_evo_rec, l_return_status);
2780 
2781       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2782          RAISE FND_API.g_exc_unexpected_error;
2783       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
2784           RAISE FND_API.g_exc_error;
2785       END IF;
2786 
2787    UPDATE ams_event_offers_all_b SET
2788          event_start_date = l_evo_rec.event_start_date,
2789          event_end_date = l_evo_rec.event_end_date,
2790          event_venue_id = l_evo_rec.event_venue_id
2791    WHERE event_offer_id = l_evo_rec.event_offer_id;
2792 
2793    IF (SQL%NOTFOUND) THEN
2794       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
2795          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
2796          FND_MSG_PUB.add;
2797       END IF;
2798       RAISE FND_API.g_exc_error;
2799    END IF;
2800 
2801 --End Adding
2802 
2803    IF l_evo_rec.event_level = 'MAIN' THEN
2804       AMS_EvhRules_PVT.update_event_status(
2805             p_event_id            => l_evo_rec.event_offer_id,
2806             p_event_activity_type => l_evo_rec.event_object_type, --'EVEO',
2807             p_user_status_id      => l_evo_rec.user_status_id,
2808             p_fund_amount_tc      => l_evo_rec.fund_amount_tc,
2809             p_currency_code_tc    => l_evo_rec.currency_code_tc
2810            );
2811 
2812       AMS_EvhRules_PVT.Add_Update_Access_record(p_object_type => l_evo_rec.event_object_type, --'EVEO',
2813          p_object_id          => l_evo_rec.event_offer_id,
2814          p_Owner_user_id      => l_evo_rec.owner_user_id,
2815          x_return_status      => l_return_status,
2816          x_msg_count          => x_msg_count,
2817          x_msg_data           => x_msg_data);
2818 
2819          IF l_return_status = FND_API.g_ret_sts_error THEN
2820             RAISE FND_API.g_exc_error;
2821          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2822             RAISE FND_API.g_exc_unexpected_error;
2823          END IF;
2824 
2825  END IF;
2826 
2827 
2828 
2829 /* If the Event Schedule is canclled, make all the resources attached to it
2830    and aswell to its sessions  cancelled.
2831 */
2832 
2833 OPEN c_evo_status_evo;
2834 FETCH c_evo_status_evo INTO l_sys_st_code;
2835 CLOSE c_evo_status_evo;
2836 
2837 IF(l_sys_st_code = 'CANCELLED'
2838    OR
2839    l_sys_st_code = 'COMPLETED'
2840    OR
2841    l_sys_st_code = 'ARCHIVED')
2842 THEN
2843      OPEN c_resources;
2844      FETCH c_resources INTO l_resource_id, l_obj_num;
2845 
2846      WHILE c_resources%FOUND LOOP
2847 
2848         UPDATE ams_act_resources
2849         SET system_status_code = 'CANCELLED',
2850         object_version_number = l_obj_num+1,
2851         user_status_id = (SELECT user_status_id
2852                           FROM ams_user_statuses_b
2853                           WHERE system_status_type = 'AMS_EVENT_AGENDA_STATUS'
2854                           AND system_status_code = 'CANCELLED'
2855                           -- added by soagrawa on 25-feb-2003 for bug# 2820297
2856                           AND  DEFAULT_FLAG = 'Y')
2857         WHERE activity_resource_id = l_resource_id;
2858 
2859      FETCH c_resources INTO l_resource_id, l_obj_num;
2860 
2861      END LOOP; -- WHILE(c_resources%FOUND)
2862      CLOSE c_resources;
2863 
2864      UPDATE ams_act_resources
2865      SET system_status_code = 'CANCELLED',
2866      object_version_number = l_obj_num+1,
2867      user_status_id = (SELECT user_status_id
2868                        FROM ams_user_statuses_b
2869                        WHERE system_status_type = 'AMS_EVENT_AGENDA_STATUS'
2870                        AND system_status_code = 'CANCELLED'
2871                        -- added by soagrawa on 25-feb-2003 for bug# 2820297
2872                        AND  DEFAULT_FLAG = 'Y')
2873      WHERE activity_resource_id IN (SELECT activity_resource_id
2874                                     FROM ams_act_resources
2875                                     WHERE act_resource_used_by_id IN ( SELECT agenda_id
2876                                                                        FROM ams_agendas_b
2877                                                                        WHERE parent_id IN (SELECT agenda_id
2878                                                                                            FROM ams_agendas_b
2879                                                                                            WHERE parent_id = l_evo_rec.event_offer_id)));
2880 
2881 
2882 END IF;
2883 
2884 -------------------- finish --------------------------
2885    IF FND_API.to_boolean(p_commit) THEN
2886       COMMIT;
2887    END IF;
2888 
2889    FND_MSG_PUB.count_and_get(
2890          p_encoded => FND_API.g_false,
2891          p_count   => x_msg_count,
2892          p_data    => x_msg_data
2893    );
2894 
2895    IF (AMS_DEBUG_HIGH_ON) THEN
2896 
2897 
2898 
2899        AMS_Utility_PVT.debug_message(l_full_name ||': end');
2900 
2901    END IF;
2902 
2903 EXCEPTION
2904 
2905    WHEN FND_API.g_exc_error THEN
2906       ROLLBACK TO update_event_offer;
2907       x_return_status := FND_API.g_ret_sts_error;
2908       FND_MSG_PUB.count_and_get(
2909             p_encoded => FND_API.g_false,
2910             p_count   => x_msg_count,
2911             p_data    => x_msg_data
2912       );
2913 
2914    WHEN FND_API.g_exc_unexpected_error THEN
2915       ROLLBACK TO update_event_offer;
2916       x_return_status := FND_API.g_ret_sts_unexp_error ;
2917       FND_MSG_PUB.count_and_get(
2918             p_encoded => FND_API.g_false,
2919             p_count   => x_msg_count,
2920             p_data    => x_msg_data
2921       );
2922 
2923    WHEN OTHERS THEN
2924    IF (c_evo_status_evo%ISOPEN) THEN
2925       CLOSE c_evo_status_evo;
2926    END IF;
2927    IF (c_evo_status_evagd%ISOPEN) THEN
2928       CLOSE c_evo_status_evagd;
2929    END IF;
2930    IF (c_evo_dlv_mthd%ISOPEN) THEN
2931       CLOSE c_evo_dlv_mthd;
2932    END IF;
2933    IF (c_pricelist_header_id%ISOPEN) THEN
2934       CLOSE c_pricelist_header_id;
2935    END IF;
2936 
2937       ROLLBACK TO update_event_offer;
2938       x_return_status := FND_API.g_ret_sts_unexp_error ;
2939 
2940       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
2941       THEN
2942          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
2943       END IF;
2944 
2945       FND_MSG_PUB.count_and_get(
2946             p_encoded => FND_API.g_false,
2947             p_count   => x_msg_count,
2948             p_data    => x_msg_data
2949       );
2950 
2951 END update_event_offer;
2952 
2953 
2954 --------------------------------------------------------------------
2955 -- PROCEDURE
2956 --    validate_event_offer
2957 --
2958 -- HISTORY
2959 --    11/23/1999  sugupta  Created.
2960 --------------------------------------------------------------------
2961 PROCEDURE validate_event_offer(
2962    p_api_version       IN  NUMBER,
2963    p_init_msg_list     IN  VARCHAR2 := FND_API.g_false,
2964    p_validation_level  IN  NUMBER   := FND_API.g_valid_level_full,
2965 
2966    p_evo_rec          IN  evo_rec_type,
2967 
2968    x_return_status     OUT NOCOPY VARCHAR2,
2969    x_msg_count         OUT NOCOPY NUMBER,
2970    x_msg_data          OUT NOCOPY VARCHAR2
2971 )IS
2972    l_api_version CONSTANT NUMBER       := 1.0;
2973    l_api_name    CONSTANT VARCHAR2(30) := 'validate_event_offer';
2974    l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
2975    l_return_status VARCHAR2(1);
2976 
2977 BEGIN
2978 
2979    ----------------------- initialize --------------------
2980    IF (AMS_DEBUG_HIGH_ON) THEN
2981 
2982        AMS_Utility_PVT.debug_message(l_full_name||': start');
2983    END IF;
2984 
2985    IF FND_API.to_boolean(p_init_msg_list) THEN
2986       FND_MSG_PUB.initialize;
2987    END IF;
2988 
2989    IF NOT FND_API.compatible_api_call(
2990          l_api_version,
2991          p_api_version,
2992          l_api_name,
2993          g_pkg_name
2994    ) THEN
2995       RAISE FND_API.g_exc_unexpected_error;
2996    END IF;
2997 
2998    x_return_status := FND_API.g_ret_sts_success;
2999 
3000    ---------------------- validate ------------------------
3001    IF (AMS_DEBUG_HIGH_ON) THEN
3002 
3003        AMS_Utility_PVT.debug_message(l_full_name||': check items');
3004    END IF;
3005 
3006    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
3007       check_evo_items(
3008          p_evo_rec        => p_evo_rec,
3009          p_validation_mode => JTF_PLSQL_API.g_create,
3010          x_return_status   => l_return_status
3011       );
3012       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
3013          RAISE FND_API.g_exc_unexpected_error;
3014       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
3015          RAISE FND_API.g_exc_error;
3016       END IF;
3017    END IF;
3018 
3019    IF (AMS_DEBUG_HIGH_ON) THEN
3020 
3021 
3022 
3023        AMS_Utility_PVT.debug_message(l_full_name||': check record');
3024 
3025    END IF;
3026 
3027    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
3028       check_evo_record(
3029          p_evo_rec       => p_evo_rec,
3030          p_complete_rec   => NULL,
3031          x_return_status  => l_return_status
3032       );
3033       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
3034          RAISE FND_API.g_exc_unexpected_error;
3035       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
3036           RAISE FND_API.g_exc_error;
3037       END IF;
3038    END IF;
3039 
3040    IF (AMS_DEBUG_HIGH_ON) THEN
3041 
3042 
3043 
3044        AMS_Utility_PVT.debug_message(l_full_name||': check inter-entity');
3045 
3046    END IF;
3047 
3048    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_inter_entity THEN
3049       IF p_evo_rec.event_level = 'MAIN' THEN
3050          check_evo_inter_entity(
3051             p_evo_rec        => p_evo_rec,
3052             p_complete_rec    => p_evo_rec,
3053             p_validation_mode => JTF_PLSQL_API.g_create,
3054             x_return_status   => l_return_status
3055          );
3056          IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
3057             RAISE FND_API.g_exc_unexpected_error;
3058          ELSIF l_return_status = FND_API.g_ret_sts_error THEN
3059             RAISE FND_API.g_exc_error;
3060          END IF;
3061       END IF;
3062    END IF;
3063    -------------------- finish --------------------------
3064    FND_MSG_PUB.count_and_get(
3065          p_encoded => FND_API.g_false,
3066          p_count   => x_msg_count,
3067          p_data    => x_msg_data
3068    );
3069 
3070    IF (AMS_DEBUG_HIGH_ON) THEN
3071 
3072 
3073 
3074        AMS_Utility_PVT.debug_message(l_full_name ||': end');
3075 
3076    END IF;
3077 
3078 EXCEPTION
3079 
3080    WHEN FND_API.g_exc_error THEN
3081       x_return_status := FND_API.g_ret_sts_error;
3082       FND_MSG_PUB.count_and_get(
3083             p_encoded => FND_API.g_false,
3084             p_count   => x_msg_count,
3085             p_data    => x_msg_data
3086       );
3087 
3088    WHEN FND_API.g_exc_unexpected_error THEN
3089       x_return_status := FND_API.g_ret_sts_unexp_error ;
3090       FND_MSG_PUB.count_and_get(
3091             p_encoded => FND_API.g_false,
3092             p_count   => x_msg_count,
3093             p_data    => x_msg_data
3094       );
3095 
3096    WHEN OTHERS THEN
3097       x_return_status := FND_API.g_ret_sts_unexp_error;
3098       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
3099       THEN
3100          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
3101       END IF;
3102 
3103       FND_MSG_PUB.count_and_get(
3104             p_encoded => FND_API.g_false,
3105             p_count   => x_msg_count,
3106             p_data    => x_msg_data
3107       );
3108 
3109 END validate_event_offer;
3110 
3111 
3112 ---------------------------------------------------------------------
3113 -- PROCEDURE
3114 --    check_evo_update_ok_items
3115 --
3116 -- HISTORY
3117 --    11/23/1999  sugupta  Created.
3118 ---------------------------------------------------------------------
3119 PROCEDURE check_evo_update_ok_items(
3120    p_evo_rec        IN  evo_rec_type,
3121    x_return_status  OUT NOCOPY VARCHAR2
3122 )
3123 IS
3124 
3125 BEGIN
3126    x_return_status := FND_API.g_ret_sts_success;
3127 
3128 -- add code
3129 -- For example, if the event is in active stage, the user will not
3130 --be able to update the Marketing Message or budget related columns.
3131 -- appid, ev_header_id, source_code cannot not be updated by the user.
3132 
3133 -- ALL THIS IS TAKEN CARE OF IN CHEKC_EVO_UPDATE PROC.. THINK THIS PROCEDURE IS NOT NEEDED..
3134 
3135 END check_evo_update_ok_items;
3136 
3137 
3138 ---------------------------------------------------------------------
3139 -- PROCEDURE
3140 --    check_evo_req_items
3141 --
3142 -- HISTORY
3143 --    11/23/1999  sugupta  Created.
3144 ---------------------------------------------------------------------
3145 PROCEDURE check_evo_req_items(
3146    p_evo_rec       IN  evo_rec_type,
3147    x_return_status  OUT NOCOPY VARCHAR2
3148 )
3149 IS
3150 BEGIN
3151 
3152    x_return_status := FND_API.g_ret_sts_success;
3153    ------------------------ owner_user_id --------------------------
3154    IF (p_evo_rec.owner_user_id IS NULL OR p_evo_rec.owner_user_id = FND_API.g_miss_num) THEN
3155       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3156          FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_OWNER_ID');
3157          FND_MSG_PUB.add;
3158       END IF;
3159       x_return_status := FND_API.g_ret_sts_error;
3160       RETURN;
3161    END IF;
3162 
3163    ------------------------ user_status_id --------------------------
3164    IF (p_evo_rec.user_status_id IS NULL OR p_evo_rec.user_status_id = FND_API.g_miss_num) THEN
3165       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3166          FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_USER_STATUS_ID');
3167          FND_MSG_PUB.add;
3168       END IF;
3169       x_return_status := FND_API.g_ret_sts_error;
3170       RETURN;
3171    END IF;
3172 
3173     ------------------------ application_id --------------------------
3174    IF (p_evo_rec.application_id IS NULL OR p_evo_rec.application_id = FND_API.g_miss_num) THEN
3175       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3176          FND_MESSAGE.set_name('AMS', 'AMS_API_NO_APPLICATION_ID');
3177          FND_MSG_PUB.add;
3178       END IF;
3179       x_return_status := FND_API.g_ret_sts_error;
3180       RETURN;
3181    END IF;
3182     ------------------------ parent_event_offer_id--------------------------
3183    IF p_evo_rec.EVENT_LEVEL = 'SUB' THEN
3184       IF (p_evo_rec.parent_event_offer_id IS NULL OR p_evo_rec.parent_event_offer_id = FND_API.g_miss_num) THEN
3185          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3186             FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_PARENT_OFFER_ID');
3187             FND_MSG_PUB.add;
3188          END IF;
3189          x_return_status := FND_API.g_ret_sts_error;
3190          RETURN;
3191       END IF;
3192    END IF;
3193   -- commenting NEEDS TO BE UNCOMMENTED
3194     ------------------------ custom_setup_id --------------------------
3195    IF (p_evo_rec.event_level = 'MAIN' AND p_evo_rec.parent_type <> 'CSCH' AND
3196       (p_evo_rec.custom_setup_id IS NULL OR p_evo_rec.custom_setup_id = FND_API.g_miss_num)) THEN
3197       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3198          FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_SETUP_ID');
3199          FND_MSG_PUB.add;
3200       END IF;
3201       x_return_status := FND_API.g_ret_sts_error;
3202       RETURN;
3203    END IF;
3204    -- check other required items.
3205 END check_evo_req_items;
3206 
3207 ---------------------------------------------------------------------
3208 -- PROCEDURE
3209 --    check_evo_uk_items
3210 --
3211 -- HISTORY
3212 --    11/23/1999  sugupta  Created.
3213 ---------------------------------------------------------------------
3214 PROCEDURE check_evo_uk_items(
3215    p_evo_rec        IN  evo_rec_type,
3216    p_validation_mode IN  VARCHAR2 := JTF_PLSQL_API.g_create,
3217    x_return_status   OUT NOCOPY VARCHAR2
3218 )
3219 IS
3220    l_valid_flag  VARCHAR2(1);
3221    l_dummy NUMBER;
3222    cursor c_src_code(src_code_in IN VARCHAR2) IS
3223    SELECT 1 FROM DUAL WHERE EXISTS (select 1 from ams_source_codes
3224           where SOURCE_CODE = src_code_in);
3225 BEGIN
3226    x_return_status := FND_API.g_ret_sts_success;
3227 
3228    -- For create_event_offer, when event_offer_id is passed in, we need to
3229    -- check if this event_offer_id is unique.
3230    IF p_validation_mode = JTF_PLSQL_API.g_create
3231      AND p_evo_rec.event_offer_id IS NOT NULL
3232    THEN
3233       IF AMS_Utility_PVT.check_uniqueness(
3234             'ams_event_offers_all_b',
3235             'event_offer_id = ' || p_evo_rec.event_offer_id
3236             ) = FND_API.g_false
3237       THEN
3238          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3239             FND_MESSAGE.set_name('AMS', 'AMS_EVO_DUPLICATE_ID');
3240             FND_MSG_PUB.add;
3241          END IF;
3242          x_return_status := FND_API.g_ret_sts_error;
3243          RETURN;
3244       END IF;
3245    END IF;
3246 -- todo- add a check for uniqueness for name... actually as long as user has at least one
3247 -- of name, venue and dates/time different.. it should be fine
3248 
3249    -- For create_event_offer, when source_code is passed in, we need to
3250    -- check if this source_code is unique.
3251    IF p_validation_mode = JTF_PLSQL_API.g_create
3252       AND p_evo_rec.source_code IS NOT NULL
3253    THEN
3254    /*
3255       IF AMS_Utility_PVT.check_uniqueness(
3256             'ams_event_offers_vl',
3257             'source_code = ''' || p_evo_rec.source_code || ''''
3258          ) = FND_API.g_false
3259      */
3260       open c_src_code(p_evo_rec.source_code);
3261       fetch c_src_code into l_dummy;
3262       close c_src_code;
3263       IF l_dummy <> 1 THEN
3264          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3265             FND_MESSAGE.set_name('AMS', 'AMS_EVO_DUPE_SOURCE');
3266             FND_MSG_PUB.add;
3267          END IF;
3268          x_return_status := FND_API.g_ret_sts_error;
3269          RETURN;
3270       END IF;
3271    END IF;
3272    -- check other unique items
3273 
3274 END check_evo_uk_items;
3275 
3276 
3277 ---------------------------------------------------------------------
3278 -- PROCEDURE
3279 --    check_evo_fk_items
3280 --
3281 -- HISTORY
3282 --    11/23/1999  sugupta  Created.
3283 ---------------------------------------------------------------------
3284 PROCEDURE check_evo_fk_items(
3285    p_evo_rec        IN  evo_rec_type,
3286    x_return_status  OUT NOCOPY VARCHAR2
3287 )
3288 IS
3289   l_table_name                  VARCHAR2(30);
3290    l_pk_name                     VARCHAR2(30);
3291    l_pk_value                    VARCHAR2(30);
3292    l_pk_data_type                NUMBER;
3293    l_additional_where_clause     VARCHAR2(4000);
3294    l_where_clause VARCHAR2(80) := null;
3295 BEGIN
3296    x_return_status := FND_API.g_ret_sts_success;
3297 
3298    ----------------------- owner_user_id ------------------------
3299    -- modified sugupta use ams_jtf_rs_emp_v instead of ams_jtf_rs_emp_v
3300    IF p_evo_rec.owner_user_id <> FND_API.g_miss_num AND
3301      p_evo_rec.owner_user_id is NOT NULL
3302    THEN
3303       IF AMS_Utility_PVT.check_fk_exists(
3304          'ams_jtf_rs_emp_v',
3305          'resource_id',
3306          p_evo_rec.owner_user_id
3307       ) = FND_API.g_false
3308       THEN
3309          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3310          THEN
3311             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_OWNER_USER');
3312             FND_MSG_PUB.add;
3313          END IF;
3314          x_return_status := FND_API.g_ret_sts_error;
3315          RETURN;
3316       END IF;
3317    END IF;
3318    --------------------- application_id ------------------------
3319    IF p_evo_rec.application_id <> FND_API.g_miss_num AND
3320       p_evo_rec.application_id is NOT NULL
3321    THEN
3322       IF AMS_Utility_PVT.check_fk_exists(
3323             'fnd_application',
3324             'application_id',
3325             p_evo_rec.application_id
3326       ) = FND_API.g_false
3327       THEN
3328          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3329          THEN
3330             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_APP_ID');
3331             FND_MSG_PUB.add;
3332          END IF;
3333          x_return_status := FND_API.g_ret_sts_error;
3334          RETURN;
3335       END IF;
3336    END IF;
3337    --------------------- inbound_script_name ------------------------
3338    IF p_evo_rec.inbound_script_name <> FND_API.g_miss_char
3339       AND p_evo_rec.inbound_script_name IS NOT NULL
3340    THEN
3341       IF AMS_Utility_PVT.check_fk_exists(
3342             'ies_deployed_scripts',
3343             'dscript_name',
3344             p_evo_rec.inbound_script_name,
3345          AMS_Utility_PVT.g_varchar2
3346       ) = FND_API.g_false
3347       THEN
3348          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3349          THEN
3350             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_INBOUND_SCRIPT');
3351             FND_MSG_PUB.add;
3352          END IF;
3353          x_return_status := FND_API.g_ret_sts_error;
3354          RETURN;
3355       END IF;
3356    END IF;
3357  ----------------------- event_header_id ------------------------
3358    IF p_evo_rec.event_header_id <> FND_API.g_miss_num AND
3359      p_evo_rec.event_header_id is NOT NULL THEN
3360       IF p_evo_rec.EVENT_STANDALONE_FLAG = 'N'THEN
3361          IF AMS_Utility_PVT.check_fk_exists(
3362             'ams_event_headers_all_b',
3363             'event_header_id',
3364             p_evo_rec.event_header_id
3365          ) = FND_API.g_false
3366          THEN
3367             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3368             THEN
3369                FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_PARENT_HEADER');
3370                FND_MSG_PUB.add;
3371              END IF;
3372             x_return_status := FND_API.g_ret_sts_error;
3373             RETURN;
3374          END IF;
3375       END IF;
3376    END IF;
3377    ----------------------- parent_event_offer_id ------------------------
3378    IF p_evo_rec.parent_event_offer_id <> FND_API.g_miss_num
3379      AND p_evo_rec.parent_event_offer_id IS NOT NULL  THEN
3380       IF p_evo_rec.EVENT_STANDALONE_FLAG = 'Y'THEN
3381          IF AMS_Utility_PVT.check_fk_exists(
3382             'ams_event_offers_all_b',
3383             'event_offer_id',
3384             p_evo_rec.parent_event_offer_id
3385          ) = FND_API.g_false
3386          THEN
3387             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3388             THEN
3389                FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_PARENT_OFFER');
3390                FND_MSG_PUB.add;
3391             END IF;
3392             x_return_status := FND_API.g_ret_sts_error;
3393             RETURN;
3394          END IF;
3395       END IF;
3396    END IF;
3397          ----------------------- parent_id ------------------------
3398    IF p_evo_rec.parent_id <> FND_API.g_miss_num THEN
3399       IF AMS_Utility_PVT.check_fk_exists(
3400             'AMS_CAMPAIGNS_ALL_B',
3401             'CAMPAIGN_ID',
3402             p_evo_rec.parent_id
3403          ) = FND_API.g_false
3404       THEN
3405          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3406          THEN
3407             FND_MESSAGE.set_name('AMS', 'AMS_EVH_BAD_PARENT_EVEH');
3408             FND_MSG_PUB.add;
3409          END IF;
3410          x_return_status := FND_API.g_ret_sts_error;
3411          RETURN;
3412       END IF;
3413    END IF;
3414 ----------------------- duration_uom_code ------------------------
3415    IF p_evo_rec.event_duration_uom_code <> FND_API.g_miss_char
3416       AND p_evo_rec.event_duration_uom_code IS NOT NULL  THEN
3417       IF AMS_Utility_PVT.check_fk_exists(
3418             'mtl_units_of_measure_tl',
3419             'uom_code',
3420             p_evo_rec.event_duration_uom_code,
3421          AMS_Utility_PVT.g_varchar2
3422         ) = FND_API.g_false
3423       THEN
3424          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3425          THEN
3426             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_DUR_UOM_CODE');
3427             FND_MSG_PUB.add;
3428          END IF;
3429          x_return_status := FND_API.g_ret_sts_error;
3430          RETURN;
3431       END IF;
3432    END IF;
3433 ----------------------- PRICELIST_HEADER_ID ------------------------
3434    IF p_evo_rec.pricelist_header_id <> FND_API.g_miss_num
3435      AND p_evo_rec.pricelist_header_id IS NOT NULL  THEN
3436       IF AMS_Utility_PVT.check_fk_exists(
3437             'qp_list_headers_v',
3438             'list_header_id',
3439             p_evo_rec.pricelist_header_id
3440         ) = FND_API.g_false
3441       THEN
3442          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3443          THEN
3444             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_PRICE_HEADER_ID');
3445             FND_MSG_PUB.add;
3446          END IF;
3447          x_return_status := FND_API.g_ret_sts_error;
3448          RETURN;
3449       END IF;
3450    END IF;
3451 ----------------------- PRICELIST_LINE_ID ------------------------
3452    IF p_evo_rec.pricelist_line_id <> FND_API.g_miss_num
3453        AND p_evo_rec.pricelist_line_id IS NOT NULL  THEN
3454       IF AMS_Utility_PVT.check_fk_exists(
3455             'qp_list_lines_v',
3456             'list_line_id',
3457             p_evo_rec.pricelist_line_id
3458       ) = FND_API.g_false
3459       THEN
3460          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3461          THEN
3462             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_PRICE_LINE_ID');
3463             FND_MSG_PUB.add;
3464          END IF;
3465          x_return_status := FND_API.g_ret_sts_error;
3466          RETURN;
3467       END IF;
3468    END IF;
3469 ----------------------- TIMEZONE_ID ------------------------
3470    IF p_evo_rec.timezone_id <> FND_API.g_miss_num
3471      AND p_evo_rec.timezone_id IS NOT NULL  THEN
3472       IF AMS_Utility_PVT.check_fk_exists(
3473             'fnd_timezones_b',
3474          'upgrade_tz_id',
3475             p_evo_rec.timezone_id
3476         ) = FND_API.g_false
3477       THEN
3478          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3479          THEN
3480             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_TIMEZONE_ID');
3481             FND_MSG_PUB.add;
3482          END IF;
3483          x_return_status := FND_API.g_ret_sts_error;
3484          RETURN;
3485       END IF;
3486    END IF;
3487 ----------------------- REG_TIMEZONE_ID ------------------------
3488    IF p_evo_rec.reg_timezone_id <> FND_API.g_miss_num
3489      AND p_evo_rec.reg_timezone_id IS NOT NULL  THEN
3490       IF AMS_Utility_PVT.check_fk_exists(
3491             'fnd_timezones_b',
3492          'upgrade_tz_id',
3493             p_evo_rec.reg_timezone_id
3494         ) = FND_API.g_false
3495       THEN
3496          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3497          THEN
3498             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_TIMEZONE_ID');
3499             FND_MSG_PUB.add;
3500          END IF;
3501          x_return_status := FND_API.g_ret_sts_error;
3502          RETURN;
3503       END IF;
3504    END IF;
3505 ----------------------- event_venue_id ------------------------
3506    IF p_evo_rec.event_venue_id <> FND_API.g_miss_num
3507      AND p_evo_rec.event_venue_id IS NOT NULL  THEN
3508       IF AMS_Utility_PVT.check_fk_exists(
3509             'ams_venues_vl',
3510          'venue_id',
3511             p_evo_rec.event_venue_id
3512         ) = FND_API.g_false
3513       THEN
3514          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3515          THEN
3516             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_VENUE_ID');
3517             FND_MSG_PUB.add;
3518          END IF;
3519          x_return_status := FND_API.g_ret_sts_error;
3520          RETURN;
3521       END IF;
3522    END IF;
3523 ----------------------- event_language_code ------------------------
3524    IF p_evo_rec.event_language_code <> FND_API.g_miss_char
3525      AND p_evo_rec.event_language_code IS NOT NULL THEN
3526       IF AMS_Utility_PVT.check_fk_exists(
3527             'fnd_languages',
3528          'language_code',
3529             p_evo_rec.event_language_code,
3530          AMS_Utility_PVT.g_varchar2
3531         ) = FND_API.g_false
3532       THEN
3533          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3534          THEN
3535             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_LANG_CODE');
3536             FND_MSG_PUB.add;
3537          END IF;
3538          x_return_status := FND_API.g_ret_sts_error;
3539          RETURN;
3540       END IF;
3541    END IF;
3542 ----------------------- event_location_id ------------------------
3543    IF p_evo_rec.event_location_id <> FND_API.g_miss_num
3544      AND p_evo_rec.event_location_id IS NOT NULL THEN
3545       IF AMS_Utility_PVT.check_fk_exists(
3546             'hz_locations',
3547          'location_id',
3548             p_evo_rec.event_location_id
3549         ) = FND_API.g_false
3550       THEN
3551          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3552          THEN
3553             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_LOCATION_ID');
3554             FND_MSG_PUB.add;
3555          END IF;
3556          x_return_status := FND_API.g_ret_sts_error;
3557          RETURN;
3558       END IF;
3559    END IF;
3560 -----------------------Country Code ---------------------------------
3561    /*   Since from hornet country code contains country id  we need to have
3562     followinfg validation
3563 */
3564    IF p_evo_rec.country_code <> FND_API.g_miss_num AND
3565       p_evo_rec.country_code IS NOT NULL THEN
3566 
3567       l_table_name              := 'jtf_loc_hierarchies_b';
3568       l_pk_name                 := 'location_hierarchy_id' ;
3569       l_pk_data_type            := AMS_Utility_PVT.G_NUMBER ;
3570       l_pk_value                := to_number(p_evo_rec.country_code);
3571       l_additional_where_clause := null ;
3572 
3573       IF AMS_Utility_PVT.check_fk_exists(
3574                    p_table_name              => l_table_name,
3575                    p_pk_name                 => l_pk_name,
3576                    p_pk_value                => l_pk_value,
3577                    p_pk_data_type            => l_pk_data_type,
3578                    p_additional_where_clause => l_additional_where_clause
3579          ) = FND_API.g_false
3580       THEN
3581          AMS_Utility_Pvt.Error_Message(p_message_name => 'AMS_CSCH_BAD_COUNTRY') ;
3582          x_return_status := FND_API.g_ret_sts_error;
3583          RETURN;
3584       END IF;
3585    END IF;
3586 ----------------------- user_status_id ------------------------
3587    IF p_evo_rec.user_status_id <> FND_API.g_miss_num
3588     AND p_evo_rec.user_status_id IS NOT NULL THEN
3589       IF AMS_Utility_PVT.check_fk_exists(
3590             'ams_user_statuses_b',
3591          'user_status_id',
3592             p_evo_rec.user_status_id
3593          ) = FND_API.g_false
3594       THEN
3595          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3596          THEN
3597             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_USER_ST_ID');
3598             FND_MSG_PUB.add;
3599          END IF;
3600 
3601          x_return_status := FND_API.g_ret_sts_error;
3602          RETURN;
3603       END IF;
3604    END IF;
3605 /* we dont need this validation for inv_id here now as we dont use inv_id
3606 in evo_rec to update/create any more.. we have inv_num, which is always validated for
3607 uniqueness in call to create_inv_item procedure call
3608    ----------------------- inventory_item_id ------------------------
3609    -- gdeodhar: There was a WHERE in the following clause. Took it out
3610    -- This was Ravi's instruction.
3611    -- looks like AMS_Utility_PVT takes care of adding WHERE and AND accordingly.
3612    l_where_clause := ' organization_id = ' || p_evo_rec.organization_id;
3613 
3614    IF p_evo_rec.inventory_item_id <> FND_API.g_miss_num
3615      AND p_evo_rec.inventory_item_id IS NOT NULL AND p_evo_rec.organization_id IS NOT NULL THEN
3616       IF AMS_Utility_PVT.check_fk_exists(
3617             'mtl_system_items_b',
3618          'inventory_item_id',
3619             p_evo_rec.inventory_item_id,
3620          AMS_UTILITY_PVT.g_number,
3621          l_where_clause
3622          ) = FND_API.g_false
3623       THEN
3624          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3625          THEN
3626             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_INV_ITEM_ID');
3627             FND_MSG_PUB.add;
3628          END IF;
3629 
3630          x_return_status := FND_API.g_ret_sts_error;
3631          RETURN;
3632       END IF;
3633    END IF;
3634 */
3635  -- no need to check system_status_code as we are
3636 -- storing it in the offer table just to ease the reporting.
3637 
3638 END check_evo_fk_items;
3639 
3640 ---------------------------------------------------------------------
3641 -- PROCEDURE
3642 --    check_evo_lookup_items
3643 --
3644 -- HISTORY
3645 --    11/23/1999  sugupta  Created.
3646 ---------------------------------------------------------------------
3647 PROCEDURE check_evo_lookup_items(
3648    p_evo_rec        IN  evo_rec_type,
3649    x_return_status  OUT NOCOPY VARCHAR2
3650 )
3651 IS
3652 BEGIN
3653 
3654    x_return_status := FND_API.g_ret_sts_success;
3655 
3656   --  system_status_code derived from user_status_id always....
3657 
3658    -- event_level must be checked here. (MAIN or SUB)
3659 
3660    ----------------------- event_type_code ------------------------
3661    IF p_evo_rec.event_type_code <> FND_API.g_miss_char
3662       AND p_evo_rec.event_type_code IS NOT NULL
3663    THEN
3664       IF AMS_Utility_PVT.check_lookup_exists(
3665             p_lookup_type => 'AMS_EVENT_TYPE',
3666             p_lookup_code => p_evo_rec.event_type_code
3667          ) = FND_API.g_false
3668       THEN
3669          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3670          THEN
3671             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_TYPE');
3672             FND_MSG_PUB.add;
3673          END IF;
3674          x_return_status := FND_API.g_ret_sts_error;
3675          RETURN;
3676       END IF;
3677    END IF;
3678     ----------------------- event_level ------------------------
3679    IF p_evo_rec.event_level <> FND_API.g_miss_char
3680       AND p_evo_rec.event_level IS NOT NULL
3681    THEN
3682       IF AMS_Utility_PVT.check_lookup_exists(
3683             p_lookup_type => 'AMS_EVENT_LEVEL',
3684             p_lookup_code => p_evo_rec.event_level
3685          ) = FND_API.g_false
3686       THEN
3687          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3688          THEN
3689             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_LEVEL');
3690             FND_MSG_PUB.add;
3691          END IF;
3692          x_return_status := FND_API.g_ret_sts_error;
3693          RETURN;
3694       END IF;
3695    END IF;
3696   ----------------------- waitlist_action_type_code ------------------------
3697    IF p_evo_rec.waitlist_action_type_code <> FND_API.g_miss_char
3698       AND p_evo_rec.waitlist_action_type_code IS NOT NULL
3699    THEN
3700       IF AMS_Utility_PVT.check_lookup_exists(
3701             p_lookup_type => 'AMS_EVENT_WAITLIST_ACTION',
3702             p_lookup_code => p_evo_rec.waitlist_action_type_code
3703          ) = FND_API.g_false
3704       THEN
3705          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3706          THEN
3707             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_WAILIST_ACTION');
3708             FND_MSG_PUB.add;
3709          END IF;
3710          x_return_status := FND_API.g_ret_sts_error;
3711          RETURN;
3712       END IF;
3713    END IF;
3714     ----------------------- stream_type_code ------------------------
3715    IF p_evo_rec.stream_type_code <> FND_API.g_miss_char
3716       AND p_evo_rec.stream_type_code IS NOT NULL
3717    THEN
3718       IF AMS_Utility_PVT.check_lookup_exists(
3719             p_lookup_type => 'AMS_EVENT_STREAM_TYPE',
3720             p_lookup_code => p_evo_rec.stream_type_code
3721          ) = FND_API.g_false
3722       THEN
3723          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3724          THEN
3725             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_STREAM_TYPE');
3726             FND_MSG_PUB.add;
3727          END IF;
3728          x_return_status := FND_API.g_ret_sts_error;
3729          RETURN;
3730       END IF;
3731    END IF;
3732     ----------------------- fund_source_type_code ------------------------
3733    IF p_evo_rec.fund_source_type_code <> FND_API.g_miss_char
3734       AND p_evo_rec.fund_source_type_code IS NOT NULL
3735    THEN
3736       IF AMS_Utility_PVT.check_lookup_exists(
3737             p_lookup_type => 'AMS_FUND_SOURCE',
3738             p_lookup_code => p_evo_rec.fund_source_type_code
3739          ) = FND_API.g_false
3740       THEN
3741          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3742          THEN
3743             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_FUND_SOURCE');
3744             FND_MSG_PUB.add;
3745          END IF;
3746          x_return_status := FND_API.g_ret_sts_error;
3747          RETURN;
3748       END IF;
3749    END IF;
3750    ----------------------- priority ------------------------
3751    IF p_evo_rec.priority_type_code <> FND_API.g_miss_char
3752       AND p_evo_rec.priority_type_code IS NOT NULL
3753    THEN
3754       IF AMS_Utility_PVT.check_lookup_exists(
3755             p_lookup_type => 'AMS_PRIORITY',
3756             p_lookup_code => p_evo_rec.priority_type_code
3757          ) = FND_API.g_false
3758       THEN
3759          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3760          THEN
3761             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_PRIORITY');
3762             FND_MSG_PUB.add;
3763          END IF;
3764          x_return_status := FND_API.g_ret_sts_error;
3765          RETURN;
3766       END IF;
3767    END IF;
3768 
3769    ----------------------- certification_credit_type ------------------------
3770    IF p_evo_rec.cert_credit_type_code <> FND_API.g_miss_char
3771       AND p_evo_rec.cert_credit_type_code IS NOT NULL
3772    THEN
3773       IF AMS_Utility_PVT.check_lookup_exists(
3774             p_lookup_type => 'AMS_EVENT_CERT_CREDIT_TYPE',
3775             p_lookup_code => p_evo_rec.cert_credit_type_code
3776          ) = FND_API.g_false
3777       THEN
3778          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3779          THEN
3780             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_CREDIT_TYPE');
3781             FND_MSG_PUB.add;
3782          END IF;
3783          x_return_status := FND_API.g_ret_sts_error;
3784          RETURN;
3785       END IF;
3786    END IF;
3787 
3788    ----------------------- cancellation_reason_code ------------------------
3789    IF p_evo_rec.cancellation_reason_code <> FND_API.g_miss_char
3790       AND p_evo_rec.cancellation_reason_code IS NOT NULL
3791    THEN
3792       IF AMS_Utility_PVT.check_lookup_exists(
3793             p_lookup_type => 'AMS_EVENT_CANCEL_REASON',
3794             p_lookup_code => p_evo_rec.cancellation_reason_code
3795          ) = FND_API.g_false
3796       THEN
3797          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3798          THEN
3799             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_CANCEL_REASON');
3800             FND_MSG_PUB.add;
3801          END IF;
3802          x_return_status := FND_API.g_ret_sts_error;
3803          RETURN;
3804       END IF;
3805    END IF;
3806 
3807 END check_evo_lookup_items;
3808 
3809 ---------------------------------------------------------------------
3810 -- PROCEDURE
3811 --    check_evo_flag_items
3812 --
3813 -- HISTORY
3814 --    11/23/1999  sugupta  Created
3815 --    11/19/1999  rvaka     updated
3816 ---------------------------------------------------------------------
3817 PROCEDURE check_evo_flag_items(
3818    p_evo_rec        IN  evo_rec_type,
3819    x_return_status  OUT NOCOPY VARCHAR2
3820 )
3821 IS
3822 BEGIN
3823 
3824    x_return_status := FND_API.g_ret_sts_success;
3825 
3826 
3827    ----------------------- active_flag ------------------------
3828    IF p_evo_rec.active_flag <> FND_API.g_miss_char
3829       AND p_evo_rec.active_flag IS NOT NULL
3830    THEN
3831       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.active_flag) = FND_API.g_false
3832       THEN
3833          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3834          THEN
3835             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_ACTIVE_FLAG');
3836             FND_MSG_PUB.add;
3837          END IF;
3838          x_return_status := FND_API.g_ret_sts_error;
3839          RETURN;
3840       END IF;
3841    END IF;
3842 
3843 
3844    ----------------------- private_flag ------------------------
3845    IF p_evo_rec.private_flag <> FND_API.g_miss_char
3846       AND p_evo_rec.private_flag IS NOT NULL
3847    THEN
3848       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.private_flag) = FND_API.g_false
3849       THEN
3850          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3851          THEN
3852             FND_MESSAGE.set_name('AMS', 'AMS_evo_BAD_PRIVATE_FLAG');
3853             FND_MSG_PUB.add;
3854          END IF;
3855          x_return_status := FND_API.g_ret_sts_error;
3856          RETURN;
3857       END IF;
3858    END IF;
3859      ----------------------- event_full_flag ------------------------
3860    IF p_evo_rec.event_full_flag <> FND_API.g_miss_char
3861       AND p_evo_rec.event_full_flag IS NOT NULL
3862    THEN
3863       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.event_full_flag) = FND_API.g_false
3864       THEN
3865          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3866          THEN
3867             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_FULL_FLAG');
3868             FND_MSG_PUB.add;
3869          END IF;
3870 
3871          x_return_status := FND_API.g_ret_sts_error;
3872          RETURN;
3873       END IF;
3874    END IF;
3875       ----------------------- auto_register_flag ------------------------
3876    IF p_evo_rec.auto_register_flag <> FND_API.g_miss_char
3877       AND p_evo_rec.auto_register_flag IS NOT NULL
3878    THEN
3879       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.auto_register_flag) = FND_API.g_false
3880       THEN
3881          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3882          THEN
3883             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_AUTOREG_FLAG');
3884             FND_MSG_PUB.add;
3885          END IF;
3886 
3887          x_return_status := FND_API.g_ret_sts_error;
3888          RETURN;
3889       END IF;
3890    END IF;
3891     ----------------------- event_standalone_flag ------------------------
3892    IF p_evo_rec.event_standalone_flag <> FND_API.g_miss_char
3893       AND p_evo_rec.event_standalone_flag IS NOT NULL
3894    THEN
3895       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.event_standalone_flag) = FND_API.g_false
3896       THEN
3897          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3898          THEN
3899             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_STANDALONE_FLAG');
3900             FND_MSG_PUB.add;
3901          END IF;
3902 
3903          x_return_status := FND_API.g_ret_sts_error;
3904          RETURN;
3905       END IF;
3906    END IF;
3907  ----------------------- reg_required_flag ------------------------
3908    IF p_evo_rec.reg_required_flag <> FND_API.g_miss_char
3909       AND p_evo_rec.reg_required_flag IS NOT NULL
3910    THEN
3911       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.reg_required_flag) = FND_API.g_false
3912       THEN
3913          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3914          THEN
3915             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_REG_REQUIRED_FLAG');
3916             FND_MSG_PUB.add;
3917          END IF;
3918 
3919          x_return_status := FND_API.g_ret_sts_error;
3920          RETURN;
3921       END IF;
3922    END IF;
3923 
3924    ----------------------- reg_invited_only_flag ------------------------
3925    IF p_evo_rec.reg_invited_only_flag <> FND_API.g_miss_char
3926       AND p_evo_rec.reg_invited_only_flag IS NOT NULL
3927    THEN
3928       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.reg_invited_only_flag) = FND_API.g_false
3929       THEN
3930          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3931          THEN
3932             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_REG_INVITED_ONLY_FLAG');
3933             FND_MSG_PUB.add;
3934          END IF;
3935 
3936          x_return_status := FND_API.g_ret_sts_error;
3937          RETURN;
3938       END IF;
3939    END IF;
3940       ----------------------- reg_waitlist_allowed_flag ------------------------
3941    IF p_evo_rec.reg_waitlist_allowed_flag <> FND_API.g_miss_char
3942       AND p_evo_rec.reg_waitlist_allowed_flag IS NOT NULL
3943    THEN
3944       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.reg_waitlist_allowed_flag) = FND_API.g_false
3945       THEN
3946          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3947          THEN
3948             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_REG_WAITLIST_ALLOWED_FLAG');
3949             FND_MSG_PUB.add;
3950          END IF;
3951 
3952          x_return_status := FND_API.g_ret_sts_error;
3953          RETURN;
3954       END IF;
3955    END IF;
3956       ----------------------- reg_overbook_allowed_flag ------------------------
3957    IF p_evo_rec.reg_overbook_allowed_flag <> FND_API.g_miss_char
3958       AND p_evo_rec.reg_overbook_allowed_flag IS NOT NULL
3959    THEN
3960       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.reg_overbook_allowed_flag) = FND_API.g_false
3961       THEN
3962          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3963          THEN
3964             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_REG_OVERBOOK_ALLOWED_FLAG');
3965             FND_MSG_PUB.add;
3966          END IF;
3967 
3968          x_return_status := FND_API.g_ret_sts_error;
3969          RETURN;
3970       END IF;
3971    END IF;
3972    ----------------------- reg_charge_flag ------------------------
3973    IF p_evo_rec.reg_charge_flag <> FND_API.g_miss_char
3974       AND p_evo_rec.reg_charge_flag IS NOT NULL
3975    THEN
3976       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.reg_charge_flag) = FND_API.g_false
3977       THEN
3978          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3979          THEN
3980             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_REG_CHARGE_FLAG');
3981             FND_MSG_PUB.add;
3982          END IF;
3983 
3984          x_return_status := FND_API.g_ret_sts_error;
3985          RETURN;
3986       END IF;
3987    END IF;
3988 ----------------------- reg_frozen_flag ------------------------
3989    IF p_evo_rec.reg_frozen_flag <> FND_API.g_miss_char
3990       AND p_evo_rec.reg_frozen_flag IS NOT NULL
3991    THEN
3992       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.reg_frozen_flag) = FND_API.g_false
3993       THEN
3994          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3995          THEN
3996             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_REG_FROZEN_FLAG');
3997             FND_MSG_PUB.add;
3998          END IF;
3999 
4000          x_return_status := FND_API.g_ret_sts_error;
4001          RETURN;
4002       END IF;
4003    END IF;
4004 
4005    ----------------------- overflow_flag ------------------------
4006    IF p_evo_rec.overflow_flag <> FND_API.g_miss_char
4007       AND p_evo_rec.overflow_flag IS NOT NULL
4008    THEN
4009       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.overflow_flag) = FND_API.g_false
4010       THEN
4011          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4012          THEN
4013             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_OVERFLOW_FLAG');
4014             FND_MSG_PUB.add;
4015          END IF;
4016 
4017          x_return_status := FND_API.g_ret_sts_error;
4018          RETURN;
4019       END IF;
4020    END IF;
4021  ----------------------- partner_flag ------------------------
4022    IF p_evo_rec.partner_flag <> FND_API.g_miss_char
4023       AND p_evo_rec.partner_flag IS NOT NULL
4024    THEN
4025       IF AMS_Utility_PVT.is_Y_or_N(p_evo_rec.partner_flag) = FND_API.g_false
4026       THEN
4027          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4028          THEN
4029             FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_PARTNER_FLAG');
4030             FND_MSG_PUB.add;
4031          END IF;
4032 
4033          x_return_status := FND_API.g_ret_sts_error;
4034          RETURN;
4035       END IF;
4036    END IF;
4037    -- check other flags
4038 
4039 END check_evo_flag_items;
4040 
4041 ---------------------------------------------------------------------
4042 -- PROCEDURE
4043 --    check_evo_items
4044 --
4045 -- HISTORY
4046 --    11/23/1999  sugupta  Created.
4047 ---------------------------------------------------------------------
4048 PROCEDURE check_evo_items(
4049    p_evo_rec         IN  evo_rec_type,
4050    p_validation_mode IN  VARCHAR2 := JTF_PLSQL_API.g_create,
4051    x_return_status   OUT NOCOPY VARCHAR2
4052 )
4053 IS
4054 BEGIN
4055 
4056    -------------------------- Update Mode ----------------------------
4057    -- check if the p_evo_rec has any columns that should not be updated at this stage as per the business logic.
4058    -- for example, changes to source_code should not be allowed at any update.
4059    -- Also when the event is in active stage, changes to marketing message and budget related columns should not be allowed.
4060 IF (AMS_DEBUG_HIGH_ON) THEN
4061 
4062     AMS_UTILITY_PVT.debug_message('before ok_items');
4063 END IF;
4064    IF p_validation_mode = JTF_PLSQL_API.g_update THEN
4065         check_evo_update_ok_items(
4066             p_evo_rec        => p_evo_rec,
4067             x_return_status  => x_return_status
4068         );
4069 
4070         IF x_return_status <> FND_API.g_ret_sts_success THEN
4071              RETURN;
4072         END IF;
4073 
4074     END IF;
4075 --------------------------------------Create mode--------------------------
4076 IF (AMS_DEBUG_HIGH_ON) THEN
4077 
4078     AMS_UTILITY_PVT.debug_message('before uk_items');
4079 END IF;
4080 
4081    check_evo_uk_items(
4082       p_evo_rec         => p_evo_rec,
4083       p_validation_mode => p_validation_mode,
4084       x_return_status   => x_return_status
4085    );
4086 
4087    -------------------------- Create or Update Mode ----------------------------
4088 IF (AMS_DEBUG_HIGH_ON) THEN
4089 
4090     AMS_UTILITY_PVT.debug_message('before req_items');
4091 END IF;
4092 
4093    check_evo_req_items(
4094       p_evo_rec        => p_evo_rec,
4095       x_return_status  => x_return_status
4096    );
4097 
4098    IF x_return_status <> FND_API.g_ret_sts_success THEN
4099       RETURN;
4100    END IF;
4101 
4102    IF x_return_status <> FND_API.g_ret_sts_success THEN
4103       RETURN;
4104    END IF;
4105 IF (AMS_DEBUG_HIGH_ON) THEN
4106 
4107     AMS_UTILITY_PVT.debug_message('before fk_items');
4108 END IF;
4109 
4110    check_evo_fk_items(
4111       p_evo_rec        => p_evo_rec,
4112       x_return_status  => x_return_status
4113    );
4114 
4115    IF x_return_status <> FND_API.g_ret_sts_success THEN
4116       RETURN;
4117    END IF;
4118 IF (AMS_DEBUG_HIGH_ON) THEN
4119 
4120     AMS_UTILITY_PVT.debug_message('before lookup_items');
4121 END IF;
4122 
4123    check_evo_lookup_items(
4124       p_evo_rec         => p_evo_rec,
4125       x_return_status   => x_return_status
4126    );
4127 
4128    IF x_return_status <> FND_API.g_ret_sts_success THEN
4129       RETURN;
4130    END IF;
4131 IF (AMS_DEBUG_HIGH_ON) THEN
4132 
4133     AMS_UTILITY_PVT.debug_message('before flag_items');
4134 END IF;
4135 
4136    check_evo_flag_items(
4137       p_evo_rec         => p_evo_rec,
4138       x_return_status   => x_return_status
4139    );
4140 
4141    IF x_return_status <> FND_API.g_ret_sts_success THEN
4142       RETURN;
4143    END IF;
4144 
4145 END check_evo_items;
4146 
4147 
4148 ---------------------------------------------------------------------
4149 -- PROCEDURE
4150 --    check_evo_record
4151 --
4152 -- HISTORY
4153 --    11/23/1999  sugupta  Created.
4154 ---------------------------------------------------------------------
4155 PROCEDURE check_evo_record(
4156    p_evo_rec        IN  evo_rec_type,
4157    p_complete_rec   IN  evo_rec_type,
4158    x_return_status  OUT NOCOPY VARCHAR2
4159 )
4160 IS
4161    -- The following needs to be checked:
4162    -- 1. Event end date follows start date
4163    --    if start dtae and end date are same(added 07/20/2000 OR event level = SUB), then check for
4164    --    end time follows start time
4165    -- 2. evo start date follows reg start date
4166    -- 3. evo end date follows reg end date
4167    -- 4. reg. for agenda (SUB) events not supported yet...
4168 
4169    -- 5. reg_maximum_cap shud be greater than reg_min_cap
4170    -- 6. Duration and its UOM should be together
4171 
4172    l_evo_start_date  DATE := p_evo_rec.event_start_date;
4173    l_reg_start_date  DATE := p_evo_rec.reg_start_date;
4174    l_evo_start_date_time  DATE := p_evo_rec.event_start_date_time;
4175    l_reg_start_time  DATE := p_evo_rec.reg_start_time;
4176 
4177 
4178    l_evo_end_date    DATE := p_evo_rec.event_end_date;
4179    l_reg_end_date    DATE := p_evo_rec.reg_end_date;
4180    l_evo_end_date_time  DATE := p_evo_rec.event_end_date_time;
4181    l_reg_end_time  DATE := p_evo_rec.reg_end_time;
4182    l_max_cap NUMBER  := p_evo_rec.REG_MAXIMUM_CAPACITY;
4183    l_min_cap NUMBER  := p_evo_rec.REG_MINIMUM_CAPACITY;
4184    l_parent_start_date DATE;
4185    l_parent_end_date DATE;
4186 
4187    cursor get_parent_date (id_in in NUMBER)is
4188    select ACTUAL_EXEC_START_DATE, ACTUAL_EXEC_END_DATE
4189    from AMS_CAMPAIGNS_ALL_B
4190    where CAMPAIGN_ID = id_in
4191    and  ROLLUP_TYPE = 'RCAM';
4192 
4193 BEGIN
4194 
4195    x_return_status := FND_API.g_ret_sts_success;
4196 
4197    IF p_evo_rec.event_start_date <> FND_API.g_miss_date
4198       OR p_evo_rec.event_end_date <> FND_API.g_miss_date
4199    THEN
4200       IF p_evo_rec.event_start_date = FND_API.g_miss_date THEN
4201          l_evo_start_date := p_complete_rec.event_start_date;
4202       END IF;
4203 
4204       IF p_evo_rec.event_end_date = FND_API.g_miss_date THEN
4205          l_evo_end_date := p_complete_rec.event_end_date;
4206       END IF;
4207 
4208       IF l_evo_start_date > l_evo_end_date THEN
4209          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4210          THEN
4211             FND_MESSAGE.set_name('AMS', 'AMS_EVO_START_DT_GT_END_DT');
4212             FND_MSG_PUB.add;
4213          END IF;
4214          x_return_status := FND_API.g_ret_sts_error;
4215          return;
4216       END IF;
4217 
4218       IF p_evo_rec.parent_type = 'RCAM' THEN
4219          open get_parent_date(p_evo_rec.parent_id);
4220          fetch get_parent_date into l_parent_start_date, l_parent_end_date;
4221          close get_parent_date;
4222          IF l_evo_start_date < l_parent_start_date THEN
4223             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
4224                FND_MESSAGE.set_name('AMS', 'AMS_EVO_SD_GT_PRNT_SD');
4225                FND_MSG_PUB.add;
4226             END IF;
4227             x_return_status := FND_API.g_ret_sts_error;
4228             return;
4229          END IF;
4230          IF l_evo_start_date > l_parent_end_date THEN
4231             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
4232                FND_MESSAGE.set_name('AMS', 'AMS_EVO_SD_LT_PRNT_ED');
4233                FND_MSG_PUB.add;
4234             END IF;
4235             x_return_status := FND_API.g_ret_sts_error;
4236             return;
4237          END IF;
4238          IF l_evo_end_date < l_parent_start_date THEN
4239             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
4240                FND_MESSAGE.set_name('AMS', 'AMS_EVO_ED_GT_PRNT_SD');
4241                FND_MSG_PUB.add;
4242             END IF;
4243             x_return_status := FND_API.g_ret_sts_error;
4244             return;
4245          END IF;
4246          IF l_evo_end_date > l_parent_end_date THEN
4247             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
4248                FND_MESSAGE.set_name('AMS', 'AMS_EVO_ED_LT_PRNT_ED');
4249                FND_MSG_PUB.add;
4250             END IF;
4251             x_return_status := FND_API.g_ret_sts_error;
4252             return;
4253          END IF;
4254       END IF;
4255 
4256 
4257       --  useful for agendas as well(for agenda, st dt = end dt)
4258       IF l_evo_start_date = l_evo_end_date OR p_complete_rec.event_level = 'SUB' THEN
4259          IF p_evo_rec.event_start_date_time <> FND_API.g_miss_date
4260             OR p_evo_rec.event_end_date_time <> FND_API.g_miss_date
4261          THEN
4262             IF p_evo_rec.event_start_date_time = FND_API.g_miss_date THEN
4263                l_evo_start_date_time := p_complete_rec.event_start_date_time;
4264             END IF;
4265 
4266             IF p_evo_rec.event_end_date_time = FND_API.g_miss_date THEN
4267                l_evo_end_date_time := p_complete_rec.event_end_date_time;
4268             END IF;
4269 
4270             IF(to_char(l_evo_end_date_time,'HH24:MI') = '00:00')
4271             THEN
4272                 l_evo_end_date_time := to_date(to_char(l_evo_end_date_time, 'DD-MM-YYYY') || '23:59','DD-MM-YYYY HH24:MI');
4273             END IF;
4274             IF (AMS_DEBUG_HIGH_ON) THEN
4275 
4276                 AMS_UTILITY_PVT.debug_message('End Date Time is ' ||to_char(l_evo_end_date_time, 'DD-MM-YYYY HH24:MI'));
4277             END IF;
4278             IF (AMS_DEBUG_HIGH_ON) THEN
4279 
4280                 AMS_UTILITY_PVT.debug_message('Start Date Time is ' ||to_char(l_evo_start_date_time,'DD-MM-YYYY HH24:MI') );
4281             END IF;
4282 
4283            IF l_evo_start_date_time > l_evo_end_date_time THEN
4284               IF (AMS_DEBUG_HIGH_ON) THEN
4285 
4286                   AMS_UTILITY_PVT.debug_message('Entered the loop');
4287               END IF;
4288 
4289                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4290                THEN
4291                   FND_MESSAGE.set_name('AMS', 'AMS_EVO_START_TM_GT_END_TM');
4292                   FND_MSG_PUB.add;
4293                END IF;
4294                x_return_status := FND_API.g_ret_sts_error;
4295                return;
4296             END IF; -- st tm > end tm
4297          END IF; -- check time for miss_dates
4298       END IF; -- st dt = end dt
4299    END IF; -- check dt for miss_date
4300 
4301    IF p_evo_rec.EVENT_DURATION <> FND_API.g_miss_num
4302       OR p_complete_rec.EVENT_DURATION IS NOT NULL
4303    THEN
4304       IF (AMS_DEBUG_HIGH_ON) THEN
4305 
4306           AMS_Utility_PVT.debug_message('Entered Here1');
4307       END IF;
4308 
4309       IF ( p_evo_rec.EVENT_DURATION_UOM_CODE IS NULL
4310           OR
4311          (p_evo_rec.EVENT_DURATION_UOM_CODE = FND_API.g_miss_char  AND
4312           p_complete_rec.EVENT_DURATION_UOM_CODE IS NULL) )
4313 
4314       THEN
4315          IF (AMS_DEBUG_HIGH_ON) THEN
4316 
4317              AMS_Utility_PVT.debug_message('Entered Here2');
4318          END IF;
4319          AMS_Utility_PVT.error_message('AMS_EVO_NO_DUR_UOM_CODE');
4320          x_return_status := FND_API.g_ret_sts_error;
4321          return;
4322       END IF;
4323    END IF;
4324 
4325    IF p_evo_rec.EVENT_DURATION_UOM_CODE <> FND_API.g_miss_char
4326       OR p_complete_rec.EVENT_DURATION_UOM_CODE IS NOT NULL
4327    THEN
4328       IF p_evo_rec.EVENT_DURATION = FND_API.g_miss_num
4329          AND p_complete_rec.EVENT_DURATION IS NULL
4330       THEN
4331          AMS_Utility_PVT.error_message('AMS_EVO_NO_DUR_WITH_CODE');
4332            x_return_status := FND_API.g_ret_sts_error;
4333          return;
4334       END IF;
4335    END IF;
4336 -- added sugupta 07/20/2000 if budget amount's there, there has to be currency code
4337 
4338    IF p_evo_rec.FUND_AMOUNT_TC <> FND_API.g_miss_num
4339       OR p_complete_rec.FUND_AMOUNT_TC IS NOT NULL
4340    THEN
4341       IF p_evo_rec.CURRENCY_CODE_TC = FND_API.g_miss_char
4342          AND p_complete_rec.CURRENCY_CODE_TC IS NULL
4343       THEN
4344          AMS_Utility_PVT.error_message('AMS_CAMP_BUDGET_NO_CURRENCY'); -- reusing campaign message
4345            x_return_status := FND_API.g_ret_sts_error;
4346          return;
4347       END IF;
4348    END IF;
4349 
4350    -- Code Added by GMADANA
4351    IF p_complete_rec.event_start_date_time IS  NULL   -- coming from create
4352    THEN
4353        l_evo_start_date_time := p_evo_rec.event_start_date_time;
4354        l_evo_end_date_time := p_evo_rec.event_end_date_time;
4355    ELSE  -- coming from update
4356        l_evo_start_date_time := p_complete_rec.event_start_date_time;
4357        l_evo_end_date_time := p_complete_rec.event_end_date_time;
4358    END IF;
4359 
4360    -- Donot make the end time as 23:59, if the end time is 12:00 AM.
4361 /* IF(to_char(l_evo_end_date_time,'HH24:MI') = '00:00')
4362    THEN
4363       l_evo_end_date_time := to_date(to_char(l_evo_end_date_time, 'DD-MM-YYYY') || '23:59','DD-MM-YYYY HH24:MI');
4364    END IF;
4365 */
4366 
4367  IF (AMS_DEBUG_HIGH_ON) THEN
4368 
4369 
4370 
4371      AMS_UTILITY_PVT.debug_message('End Date Time is ' ||to_char(l_evo_end_date_time, 'DD-MM-YYYY HH24:MI'));
4372 
4373  END IF;
4374  IF (AMS_DEBUG_HIGH_ON) THEN
4375 
4376      AMS_UTILITY_PVT.debug_message('Start Date Time is ' ||to_char(l_evo_start_date_time,'DD-MM-YYYY HH24:MI') );
4377  END IF;
4378 
4379 
4380    IF l_evo_start_date_time > l_evo_end_date_time
4381    THEN
4382       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4383       THEN
4384          FND_MESSAGE.set_name('AMS', 'AMS_EVO_START_TM_GT_END_TM');
4385          FND_MSG_PUB.add;
4386       END IF;
4387       x_return_status := FND_API.g_ret_sts_error;
4388       return;
4389    END IF;
4390 
4391 
4392 END check_evo_record;
4393 
4394 ---------------------------------------------------------------------
4395 -- PROCEDURE
4396 --    check_evo_update
4397 --
4398 -- HISTORY
4399 --    03/31/00 sugupta  Created.
4400 ---------------------------------------------------------------------
4401 PROCEDURE check_evo_update(
4402    p_evo_rec       IN OUT NOCOPY  AMS_EVENTOFFER_PVT.evo_rec_type,
4403    x_return_status  OUT NOCOPY VARCHAR2
4404 )
4405 IS
4406    CURSOR c_evo IS
4407    SELECT *
4408      FROM ams_event_offers_vl
4409     WHERE event_offer_id = p_evo_rec.event_offer_id;
4410 
4411    CURSOR c_source_code IS
4412    SELECT 1
4413      FROM ams_source_codes
4414     WHERE source_code = p_evo_rec.source_code
4415     AND active_flag = 'Y';
4416 
4417    l_track_id   NUMBER;
4418    l_session_id   NUMBER;
4419 
4420 
4421    CURSOR c_get_track_id(id_in in NUMBER) IS
4422    SELECT agenda_id
4423    FROM ams_agendas_b
4424    WHERE parent_id = id_in;
4425 
4426    CURSOR c_get_session_id(id_in in NUMBER) IS
4427    SELECT agenda_id
4428    FROM ams_agendas_b
4429    WHERE parent_id = id_in;
4430 
4431 
4432    l_msg_data  VARCHAR2(2000);
4433    l_msg_count NUMBER;
4434    l_dummy     NUMBER;
4435    l_evo_rec  c_evo%ROWTYPE;
4436    l_evo_start_date DATE := p_evo_rec.event_start_date;
4437    l_evo_end_date DATE := p_evo_rec.event_end_date;
4438    l_max_cap NUMBER := p_evo_rec.REG_MAXIMUM_CAPACITY;
4439    l_source_code VARCHAR2(30);
4440    l_event_availability NUMBER;
4441    l_event_waitlisted NUMBER;
4442    l_reg_overbook_allowed_flag VARCHAR2(1) := p_evo_rec.reg_overbook_allowed_flag;
4443    l_reg_overbook_pct NUMBER := p_evo_rec.reg_overbook_pct;
4444    l_effective_capacity NUMBER;
4445    l_num_registered NUMBER;
4446    l_auto_register_flag VARCHAR2(1) := p_evo_rec.auto_register_flag;
4447    l_invited_only_flag VARCHAR2(1) := p_evo_rec.reg_invited_only_flag;
4448 BEGIN
4449 
4450     IF (AMS_DEBUG_HIGH_ON) THEN
4451 
4452 
4453 
4454         AMS_Utility_PVT.debug_message(p_evo_rec.event_offer_id ||': check evo_update');
4455 
4456     END IF;
4457    x_return_status := FND_API.g_ret_sts_success;
4458 
4459    OPEN c_evo;
4460    FETCH c_evo INTO l_evo_rec;
4461    IF c_evo%NOTFOUND THEN
4462       CLOSE c_evo;
4463       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
4464          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
4465          FND_MSG_PUB.add;
4466       END IF;
4467       RAISE FND_API.g_exc_error;
4468    END IF;
4469    CLOSE c_evo;
4470 
4471 ------ check some validation stuff for updates-----------------
4472    -- Check if the above logic will work if either of the dates are NULL.
4473    IF p_evo_rec.reg_start_date <> FND_API.g_miss_date
4474       AND p_evo_rec.reg_end_date <> FND_API.g_miss_date
4475    THEN
4476       IF p_evo_rec.event_start_date = FND_API.g_miss_date THEN
4477          l_evo_start_date := l_evo_rec.event_start_date;
4478       END IF;
4479 
4480       IF p_evo_rec.event_end_date = FND_API.g_miss_date THEN
4481          l_evo_end_date := l_evo_rec.event_end_date;
4482       END IF;
4483       /* *** BATOLETI   Ref bug# 4404567
4484              Bypassing the registration date valication in case of conc job
4485              updation process...
4486       *** */
4487       IF p_evo_rec.system_status_code <> 'COMPLETED' THEN   ----batoleti Ref Bug# 4404567
4488          IF p_evo_rec.reg_start_date > l_evo_end_date  THEN
4489             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4490             THEN
4491               FND_MESSAGE.set_name('AMS', 'AMS_EVO_REGST_DT_GT_START_DT');
4492               FND_MSG_PUB.add;
4493             END IF;
4494             x_return_status := FND_API.g_ret_sts_error;
4495           END IF;
4496 
4497 
4498          IF p_evo_rec.reg_end_date > l_evo_end_date THEN
4499             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4500             THEN
4501                FND_MESSAGE.set_name('AMS', 'AMS_EVO_REGED_DT_GT_END_DT');
4502                FND_MSG_PUB.add;
4503             END IF;
4504             x_return_status := FND_API.g_ret_sts_error;
4505          END IF;
4506       END IF;  --batoleti  Ref Bug# 4404567
4507       END IF;
4508 -- 03/31/00 sugupta added
4509    IF p_evo_rec.REG_MINIMUM_REQ_BY_DATE <> FND_API.g_miss_date
4510       AND p_evo_rec.reg_end_date <> FND_API.g_miss_date
4511    THEN
4512       IF (p_evo_rec.REG_MINIMUM_REQ_BY_DATE > p_evo_rec.reg_end_date or
4513             p_evo_rec.REG_MINIMUM_REQ_BY_DATE < p_evo_rec.reg_start_date)THEN
4514          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4515          THEN
4516             FND_MESSAGE.set_name('AMS', 'AMS_EVO_REQ_DT_GT_RGEND_DT');
4517             FND_MSG_PUB.add;
4518          END IF;
4519          x_return_status := FND_API.g_ret_sts_error;
4520       END IF;
4521    END IF;
4522 -- 07/13/00 sugupta added Bug 1333032
4523    IF p_evo_rec.reg_start_date <> FND_API.g_miss_date
4524       AND p_evo_rec.reg_end_date <> FND_API.g_miss_date
4525    THEN
4526       IF p_evo_rec.reg_start_date > p_evo_rec.reg_end_date THEN
4527          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4528          THEN
4529             FND_MESSAGE.set_name('AMS', 'AMS_EVO_RGSTDT_GT_RGEND_DT');
4530             FND_MSG_PUB.add;
4531          END IF;
4532          x_return_status := FND_API.g_ret_sts_error;
4533       ELSIF p_evo_rec.reg_start_date = p_evo_rec.reg_end_date THEN
4534 --  test for reg times
4535          IF p_evo_rec.reg_start_time <> FND_API.g_miss_date
4536                OR p_evo_rec.reg_end_time <> FND_API.g_miss_date
4537             THEN
4538             IF p_evo_rec.reg_start_time > p_evo_rec.reg_end_time THEN
4539                   IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4540                   THEN
4541                      FND_MESSAGE.set_name('AMS', 'AMS_EVO_RGSTTM_GT_RGEND_TM');
4542                      FND_MSG_PUB.add;
4543                   END IF;
4544                   x_return_status := FND_API.g_ret_sts_error;
4545             END IF; -- st tm > end tm
4546          END IF; -- check time for miss_dates
4547       END IF; -- reg st dt > reg end dt
4548    END IF;
4549 
4550 -- 03/31/00 sugupta added to make sure reg_min_capacity is not less than reg_max_capacity
4551 -- IF p_evo_rec.REG_MINIMUM_CAPACITY <> FND_API.g_miss_num THEN
4552 
4553       IF (p_evo_rec.reg_invited_only_flag = FND_API.g_miss_char)
4554       THEN
4555          l_invited_only_flag := l_evo_rec.reg_invited_only_flag;
4556       END IF;
4557       IF (nvl(l_invited_only_flag, 'Y') <> 'Y')
4558       THEN
4559          IF p_evo_rec.REG_MAXIMUM_CAPACITY = FND_API.g_miss_num
4560          THEN
4561             l_max_cap := l_evo_rec.REG_MAXIMUM_CAPACITY;
4562          END IF;
4563 
4564          IF l_max_cap IS NOT NULL
4565          THEN
4566             IF (    (p_evo_rec.REG_MINIMUM_CAPACITY <> FND_API.g_miss_num)
4567                 AND (p_evo_rec.REG_MINIMUM_CAPACITY > l_max_cap)
4568                )
4569             THEN
4570                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4571                THEN
4572                   FND_MESSAGE.set_name('AMS', 'AMS_EVO_MINCAP_GT_MAXCAP');
4573                   FND_MSG_PUB.add;
4574                END IF;
4575                x_return_status := FND_API.g_ret_sts_error;
4576             END IF;
4577          END IF;
4578 
4579          IF p_evo_rec.reg_overbook_allowed_flag = FND_API.g_miss_char
4580          THEN
4581             l_reg_overbook_allowed_flag := l_evo_rec.reg_overbook_allowed_flag;
4582          END IF;
4583          IF p_evo_rec.reg_overbook_pct = FND_API.g_miss_num
4584          THEN
4585             l_reg_overbook_pct := l_evo_rec.reg_overbook_pct;
4586          END IF;
4587 
4588          IF (AMS_DEBUG_HIGH_ON) THEN
4589 
4590 
4591 
4592              AMS_Utility_Pvt.Debug_Message('l_reg_overbook_allowed_flag ' || l_reg_overbook_allowed_flag);
4593 
4594          END IF;
4595          IF (AMS_DEBUG_HIGH_ON) THEN
4596 
4597              AMS_Utility_Pvt.Debug_Message('l_max_cap: ' || l_max_cap);
4598          END IF;
4599          IF l_reg_overbook_allowed_flag <> 'Y'
4600          THEN
4601             l_effective_capacity := l_max_cap;
4602          ELSE
4603             IF (AMS_DEBUG_HIGH_ON) THEN
4604 
4605                 AMS_Utility_Pvt.Debug_Message('l_reg_overbook_pct ' || l_reg_overbook_pct);
4606             END IF;
4607             l_effective_capacity := round((1 + (l_reg_overbook_pct/100)) * l_max_cap);
4608          END IF;
4609          l_num_registered := AMS_EvtRegs_PVT.check_number_registered(p_event_offer_id => l_evo_rec.event_offer_id);
4610          l_event_availability := l_effective_capacity - l_num_registered;
4611          IF (AMS_DEBUG_HIGH_ON) THEN
4612 
4613              AMS_Utility_Pvt.Debug_Message('Slots available: ' || l_event_availability);
4614          END IF;
4615          IF nvl(l_event_availability, 1) < 0
4616          THEN
4617             -- Capacity is too small - error
4618             AMS_Utility_PVT.Error_Message(  p_message_name => 'AMS_EVO_REG_CAP_LT_ROSTER'
4619                                           , p_token_name   => 'REGCNT'
4620                                           , p_token_value  => to_char(l_num_registered)
4621                                          );
4622             x_return_status := FND_API.g_ret_sts_error;
4623          ELSE
4624             -- There may be room in the event now for people on the waitlist
4625             IF (p_evo_rec.auto_register_flag = FND_API.g_miss_char)
4626             THEN
4627                l_auto_register_flag := l_evo_rec.auto_register_flag;
4628             END IF;
4629 
4630             IF (nvl(l_auto_register_flag, 'Y') = 'Y')
4631             THEN
4632                l_event_waitlisted := AMS_EvtRegs_PVT.check_number_waitlisted(p_event_offer_id => l_evo_rec.event_offer_id);
4633                IF (  (l_event_availability IS NULL)
4634                    OR
4635                      (l_event_availability > l_event_waitlisted)
4636                   )
4637                THEN
4638                   -- Take everyone off the waitlist.
4639                   l_event_availability := l_event_waitlisted;
4640                END IF;
4641                --RAISE FND_API.g_exc_error;
4642                FOR l_i IN 1..l_event_availability LOOP
4643                   AMS_EvtRegs_PVT.prioritize_waitlist(  p_api_version_number => 1.0
4644                                                       , p_Init_Msg_List => FND_API.G_FALSE
4645                                                       , p_Commit => FND_API.G_FALSE
4646                                                       , p_override_availability => FND_API.G_TRUE
4647                                                       , p_event_offer_id => p_evo_rec.event_offer_id
4648                                                       , x_return_status => x_return_status
4649                                                       , x_msg_count => l_msg_count
4650                                                       , x_msg_data => l_msg_data
4651                                                      );
4652                   IF (x_return_status = FND_API.g_ret_sts_error)
4653                   THEN
4654                      AMS_Utility_PVT.Error_Message(  p_message_name => 'AMS_EVO_REG_WAITLIST_CAP');
4655                   END IF;
4656                END LOOP;
4657             END IF; -- auto_register_flag
4658          END IF;
4659          --RAISE FND_API.g_exc_error;
4660       END IF; -- invite only flag
4661 
4662       IF p_evo_rec.event_venue_id is NULL
4663       THEN
4664           OPEN c_get_track_id(p_evo_rec.event_offer_id);
4665           fetch c_get_track_id into l_track_id;
4666           WHILE c_get_track_id%FOUND LOOP
4667               OPEN c_get_session_id(l_track_id);
4668               fetch c_get_session_id into l_session_id;
4669                    WHILE c_get_session_id%FOUND LOOP
4670              update ams_agendas_b
4671              set room_id = null
4672                  ,object_version_number = object_version_number + 1
4673              where agenda_id = l_session_id;
4674                        fetch c_get_session_id into l_session_id;
4675          END LOOP;
4676          close c_get_session_id;
4677          fetch c_get_track_id into l_track_id;
4678           END LOOP;
4679           close c_get_track_id;
4680       END IF;
4681 -- END IF;
4682 
4683  ---------------------------- status codes-----------------------
4684    -- change status through workflow
4685    -- modified sugupta 07/20/2000
4686    --NOT NEEDED FOR EVENT AGENDAS
4687 
4688    -- Commented the old style of approval process call.
4689    -- gdeodhar : Oct 06, 2000.
4690 /*
4691  if l_evo_rec.event_level = 'MAIN' then
4692    IF p_evo_rec.user_status_id <> FND_API.g_miss_num
4693       AND p_evo_rec.user_status_id <> l_evo_rec.user_status_id
4694    THEN
4695       AMS_WFCmpApr_PVT.StartProcess(
4696          p_approval_for => 'EVEO',
4697          p_approval_for_id => p_evo_rec.event_offer_id,
4698          p_object_version_number => p_evo_rec.object_version_number,
4699          p_orig_stat_id => l_evo_rec.user_status_id,
4700          p_new_stat_id => p_evo_rec.user_status_id,
4701          p_requester_userid => FND_GLOBAL.user_id
4702       );
4703    END IF;
4704 
4705   -- need more specific rules on locking columns at different statuses
4706 
4707    -- the following will be locked after theme approval
4708    IF l_evo_rec.system_status_code <> 'NEW' THEN
4709       IF p_evo_rec.event_offer_name <> FND_API.g_miss_char
4710          AND p_evo_rec.event_offer_name <> l_evo_rec.event_offer_name
4711       THEN
4712          AMS_Utility_PVT.error_message('AMS_EVO_UPDATE_OFFER_NAME');
4713          x_return_status := FND_API.g_ret_sts_error;
4714       END IF;
4715 
4716       IF p_evo_rec.event_type_code <> fnd_api.g_miss_char
4717          and p_evo_rec.event_type_code <> l_evo_rec.event_type_code
4718          and (p_evo_rec.event_type_code IS NOT NULL
4719             OR l_evo_rec.event_type_code IS NOT NULL)
4720       THEN
4721          AMS_Utility_PVT.error_message('AMS_EVO_UPDATE_EVENT_TYPE');
4722          x_return_status := FND_API.g_ret_sts_error;
4723       END IF;
4724 
4725       IF p_evo_rec.event_start_date <> fnd_api.g_miss_date
4726          and p_evo_rec.event_start_date <> l_evo_rec.event_start_date
4727          and (p_evo_rec.event_start_date IS NOT NULL
4728             OR l_evo_rec.event_start_date IS NOT NULL)
4729       THEN
4730          AMS_Utility_PVT.error_message('AMS_EVO_UPDATE_START_DATE');
4731          x_return_status := FND_API.g_ret_sts_error;
4732       END IF;
4733 
4734       IF p_evo_rec.event_end_date <> fnd_api.g_miss_date
4735          and p_evo_rec.event_end_date <> l_evo_rec.event_end_date
4736          and (p_evo_rec.event_end_date IS NOT NULL
4737             OR l_evo_rec.event_end_date IS NOT NULL)
4738       THEN
4739          AMS_Utility_PVT.error_message('AMS_EVO_UPDATE_END_DATE');
4740          x_return_status := FND_API.g_ret_sts_error;
4741       END IF;
4742    END IF; -- status code <> new
4743  end if; -- event_level MAIN
4744 */
4745    -- Commented part for the old style of approval process call ends.
4746    -- Locking of fields will be added later.
4747    -- gdeodhar : Oct 06, 2000.
4748 
4749 END check_evo_update;
4750 
4751 ---------------------------------------------------------------------
4752 -- PROCEDURE
4753 --    check_evo_inter_entity
4754 --
4755 -- HISTORY
4756 --    03/31/00  sugupta  Created.
4757 ---------------------------------------------------------------------
4758 PROCEDURE check_evo_inter_entity(
4759    p_evo_rec        IN  evo_rec_type,
4760    p_complete_rec    IN  evo_rec_type,
4761    p_validation_mode IN  VARCHAR2,
4762    x_return_status   OUT NOCOPY VARCHAR2
4763 )
4764 IS
4765 
4766    l_return_status  VARCHAR2(1);
4767    l_dummy   number;
4768    l_src_code varchar2(30);
4769 
4770 /*    cursor c_src_code(id_in) IS
4771       select source_code from ams_event_offers_all_b
4772       where event_offer_id = id_in;
4773 */
4774 BEGIN
4775 
4776    x_return_status := FND_API.g_ret_sts_success;
4777 
4778    ------------------- check fund source ----------------------
4779    -- no need to check for event_level = MAIN
4780    IF p_evo_rec.fund_source_type_code <> FND_API.g_miss_char
4781       OR p_evo_rec.fund_source_id <> FND_API.g_miss_num
4782    THEN
4783       AMS_EvhRules_PVT.check_evh_fund_source(
4784          p_complete_rec.fund_source_type_code,
4785          p_complete_rec.fund_source_id,
4786          l_return_status
4787       );
4788       IF l_return_status <> FND_API.g_ret_sts_success THEN
4789          x_return_status := l_return_status;
4790       END IF;
4791    END IF;
4792 /* 04/01/2000 we will not be enforcing that event offering dates lie between
4793  event header dates
4794    ------------------- check dates ------------------------------
4795    IF p_evo_rec.event_start_date <> FND_API.g_miss_date
4796       OR p_evo_rec.event_end_date <> FND_API.g_miss_date
4797    THEN
4798       check_evo_header_dates(
4799          p_complete_rec.event_header_id,
4800          p_complete_rec.event_start_date,
4801          p_complete_rec.event_end_date,
4802          l_return_status
4803       );
4804       IF l_return_status <> FND_API.g_ret_sts_success THEN
4805          x_return_status := l_return_status;
4806       END IF;
4807    END IF;
4808 */
4809 -- added sugupta 31/8/2000
4810    ------------------- check calendar ----------------------
4811    IF p_evo_rec.event_calendar <> FND_API.g_miss_char
4812       OR p_evo_rec.start_period_name <> FND_API.g_miss_char
4813       OR p_evo_rec.end_period_name <> FND_API.g_miss_char
4814       OR p_evo_rec.event_start_date <> FND_API.g_miss_date
4815       OR p_evo_rec.event_end_date <> FND_API.g_miss_date
4816    THEN
4817       AMS_EvhRules_PVT.check_evh_calendar(
4818          p_complete_rec.event_calendar,
4819          p_complete_rec.start_period_name,
4820          p_complete_rec.end_period_name,
4821          p_complete_rec.event_start_date,
4822          p_complete_rec.event_end_date,
4823          l_return_status
4824       );
4825       IF l_return_status <> FND_API.g_ret_sts_success THEN
4826          x_return_status := l_return_status;
4827       END IF;
4828    END IF;
4829 
4830 /*   IF p_validation_mode = JTF_PLSQL_API.g_update
4831    THEN
4832         IF p_evo_rec.event_venue_id <> p_complete_rec.event_venue_id
4833         IF p_complete_rec.event_venue_id is NULL
4834    THEN
4835           OPEN c_get_track_id(p_evo_rec.event_offer_id);
4836           fetch c_get_track_id into l_track_id;
4837           WHILE c_get_track_id%FOUND LOOP
4838               OPEN c_get_session_id(l_track_id);
4839               fetch c_get_session_id into l_session_id;
4840                    WHILE c_get_session_id%FOUND LOOP
4841              update ams_agendas_b
4842              set room_id = null
4843                  ,object_version_number = object_version_number + 1
4844              where agenda_id = l_session_id;
4845                        fetch c_get_session_id into l_session_id;
4846          END LOOP;
4847          close c_get_session_id
4848          fetch c_get_track_id into l_track_id;
4849           END LOOP;
4850           close c_get_track_id;
4851         END IF;
4852    END IF;
4853    */
4854 END check_evo_inter_entity;
4855 
4856 ---------------------------------------------------------------------
4857 -- PROCEDURE
4858 --    init_evo_rec
4859 --
4860 -- HISTORY
4861 --    11/23/1999  sugupta  Create.
4862 ---------------------------------------------------------------------
4863 PROCEDURE init_evo_rec(
4864    x_evo_rec  OUT NOCOPY  evo_rec_type
4865 )
4866 IS
4867 BEGIN
4868 /* commented by murali looks like not matching with the record type
4869    x_evo_rec.event_offer_id := FND_API.g_miss_num;
4870    x_evo_rec.last_update_date := FND_API.g_miss_date;
4871    x_evo_rec.last_updated_by := FND_API.g_miss_num;
4872    x_evo_rec.creation_date := FND_API.g_miss_date;
4873    x_evo_rec.created_by := FND_API.g_miss_num;
4874    x_evo_rec.last_update_login := FND_API.g_miss_num;
4875    x_evo_rec.object_version_number := FND_API.g_miss_num;
4876    x_evo_rec.event_level := FND_API.g_miss_char;
4877    x_evo_rec.application_id := FND_API.g_miss_num;
4878    x_evo_rec.event_type_code := FND_API.g_miss_char;
4879    x_evo_rec.EVENT_DELIVERY_METHOD_ID :=  FND_API.g_miss_num;
4880    x_evo_rec.EVENT_DELIVERY_METHOD_CODE :=  FND_API.g_miss_char;
4881    x_evo_rec.event_header_id :=  FND_API.g_miss_num;
4882    x_evo_rec.active_flag := FND_API.g_miss_char;
4883    x_evo_rec.private_flag := FND_API.g_miss_char;
4884    x_evo_rec.user_status_id := FND_API.g_miss_num;
4885    x_evo_rec.system_status_code := FND_API.g_miss_char;
4886    x_evo_rec.last_status_date := FND_API.g_miss_date;
4887    x_evo_rec.stream_type_code := FND_API.g_miss_char;
4888    x_evo_rec.source_code := FND_API.g_miss_char;
4889    x_evo_rec.event_standalone_flag := FND_API.g_miss_char;
4890    x_evo_rec.reg_required_flag := FND_API.g_miss_char;
4891    x_evo_rec.reg_charge_flag := FND_API.g_miss_char;
4892    x_evo_rec.reg_invited_only_flag := FND_API.g_miss_char;
4893    x_evo_rec.partner_flag := FND_API.g_miss_char;
4894    x_evo_rec.overflow_flag := FND_API.g_miss_char;
4895    x_evo_rec.parent_event_offer_id := FND_API.g_miss_num;
4896    x_evo_rec.reg_frozen_flag := FND_API.g_miss_char;
4897    x_evo_rec.auto_register_flag := FND_API.g_miss_char;
4898    x_evo_rec.event_full_flag := FND_API.g_miss_char;
4899    x_evo_rec.REG_OVERBOOK_ALLOWED_FLAG := FND_API.g_miss_char;
4900    x_evo_rec.REG_CHARGE_FLAG := FND_API.g_miss_char;
4901    x_evo_rec.REG_INVITED_ONLY_FLAG := FND_API.g_miss_char;
4902    x_evo_rec.REG_WAITLIST_ALLOWED_FLAG := FND_API.g_miss_char;
4903    x_evo_rec.EVENT_VENUE_ID := FND_API.g_miss_num;
4904    x_evo_rec.FUND_AMOUNT_TC := FND_API.g_miss_num;
4905    x_evo_rec.FUND_AMOUNT_FC := FND_API.g_miss_num;
4906    x_evo_rec.CURRENCY_CODE_TC := FND_API.g_miss_char;
4907    x_evo_rec.CURRENCY_CODE_FC := FND_API.g_miss_char;
4908    x_evo_rec.event_duration := FND_API.g_miss_num;
4909    x_evo_rec.event_duration_uom_code := FND_API.g_miss_char;
4910    x_evo_rec.reg_maximum_capacity := FND_API.g_miss_num;
4911    x_evo_rec.reg_minimum_capacity := FND_API.g_miss_num;
4912    x_evo_rec.cert_credit_type_code := FND_API.g_miss_char;
4913    x_evo_rec.certification_credits := FND_API.g_miss_num;
4914    x_evo_rec.inventory_item_id := FND_API.g_miss_num;
4915    x_evo_rec.inventory_item := FND_API.g_miss_char;
4916    x_evo_rec.organization_id := FND_API.g_miss_num;
4917    x_evo_rec.actual_revenue := FND_API.g_miss_num;
4918    x_evo_rec.forecasted_cost := FND_API.g_miss_num;
4919    x_evo_rec.actual_cost := FND_API.g_miss_num;
4920    x_evo_rec.coordinator_id := FND_API.g_miss_num;
4921    x_evo_rec.fund_source_type_code := FND_API.g_miss_char;
4922    x_evo_rec.fund_source_id := FND_API.g_miss_num;
4923    x_evo_rec.owner_user_id := FND_API.g_miss_num;
4924    x_evo_rec.timezone_id := FND_API.g_miss_num;
4925    x_evo_rec.url := FND_API.g_miss_char;
4926    x_evo_rec.priority_type_code := FND_API.g_miss_char;
4927    x_evo_rec.cancellation_reason_code := FND_API.g_miss_char;
4928    x_evo_rec.inbound_script_name := FND_API.g_miss_char;
4929    x_evo_rec.PRICELIST_HEADER_CURRENCY_CODE := FND_API.g_miss_char;
4930    x_evo_rec.PRICELIST_LIST_PRICE := FND_API.g_miss_num;
4931    x_evo_rec.attribute_category := FND_API.g_miss_char;
4932    x_evo_rec.attribute1 := FND_API.g_miss_char;
4933    x_evo_rec.attribute2 := FND_API.g_miss_char;
4934    x_evo_rec.attribute3 := FND_API.g_miss_char;
4935    x_evo_rec.attribute4 := FND_API.g_miss_char;
4936    x_evo_rec.attribute5 := FND_API.g_miss_char;
4937    x_evo_rec.attribute6 := FND_API.g_miss_char;
4938    x_evo_rec.attribute7 := FND_API.g_miss_char;
4939    x_evo_rec.attribute8 := FND_API.g_miss_char;
4940    x_evo_rec.attribute9 := FND_API.g_miss_char;
4941    x_evo_rec.attribute10 := FND_API.g_miss_char;
4942    x_evo_rec.attribute11 := FND_API.g_miss_char;
4943    x_evo_rec.attribute12 := FND_API.g_miss_char;
4944    x_evo_rec.attribute13 := FND_API.g_miss_char;
4945    x_evo_rec.attribute14 := FND_API.g_miss_char;
4946    x_evo_rec.attribute15 := FND_API.g_miss_char;
4947       x_evo_rec.EVENT_OFFER_NAME := FND_API.g_miss_char;
4948       x_evo_rec.EVENT_MKTG_MESSAGE := FND_API.g_miss_char;
4949       x_evo_rec.description := FND_API.g_miss_char;
4950    x_evo_rec.custom_setup_id := FND_API.g_miss_num;
4951       x_evo_rec.country_code := FND_API.g_miss_char;
4952       x_evo_rec.business_unit_id := FND_API.g_miss_num;
4953    x_evo_rec.event_calendar := FND_API.g_miss_char;
4954    x_evo_rec.start_period_name := FND_API.g_miss_char;
4955    x_evo_rec.end_period_name := FND_API.g_miss_char;
4956    x_evo_rec.global_flag := FND_API.g_miss_char;
4957 */
4958 
4959 x_evo_rec.EVENT_OFFER_ID            := FND_API.g_miss_num;
4960 x_evo_rec.LAST_UPDATE_DATE          := FND_API.g_miss_date;
4961 x_evo_rec.LAST_UPDATED_BY           := FND_API.g_miss_num;
4962 x_evo_rec.CREATION_DATE             := FND_API.g_miss_date;
4963 x_evo_rec.CREATED_BY                := FND_API.g_miss_num;
4964 x_evo_rec.LAST_UPDATE_LOGIN         := FND_API.g_miss_num;
4965 x_evo_rec.OBJECT_VERSION_NUMBER     := FND_API.g_miss_num;
4966 x_evo_rec.APPLICATION_ID            := FND_API.g_miss_num;
4967 x_evo_rec.EVENT_HEADER_ID           := FND_API.g_miss_num;
4968 x_evo_rec.PRIVATE_FLAG              := FND_API.g_miss_char;
4969 x_evo_rec.ACTIVE_FLAG               := FND_API.g_miss_char;
4970 x_evo_rec.SOURCE_CODE               := FND_API.g_miss_char;
4971 x_evo_rec.EVENT_LEVEL               := FND_API.g_miss_char;
4972 x_evo_rec.USER_STATUS_ID            := FND_API.g_miss_num;
4973 x_evo_rec.LAST_STATUS_DATE          := FND_API.g_miss_date;
4974 x_evo_rec.SYSTEM_STATUS_CODE        := FND_API.g_miss_char;
4975 x_evo_rec.EVENT_TYPE_CODE           := FND_API.g_miss_char;
4976 x_evo_rec.EVENT_DELIVERY_METHOD_ID  := FND_API.g_miss_num;
4977 x_evo_rec.EVENT_DELIVERY_METHOD_CODE := FND_API.g_miss_char;
4978 x_evo_rec.EVENT_REQUIRED_FLAG      := FND_API.g_miss_char;
4979 x_evo_rec.EVENT_LANGUAGE_CODE       := FND_API.g_miss_char;
4980 x_evo_rec.EVENT_LOCATION_ID         := FND_API.g_miss_num;
4981 x_evo_rec.CITY                  := FND_API.g_miss_char;
4982 x_evo_rec.STATE                  := FND_API.g_miss_char;
4983 x_evo_rec.PROVINCE               := FND_API.g_miss_char;
4984 x_evo_rec.COUNTRY               := FND_API.g_miss_char;
4985 x_evo_rec.OVERFLOW_FLAG             := FND_API.g_miss_char;
4986 x_evo_rec.PARTNER_FLAG              := FND_API.g_miss_char;
4987 x_evo_rec.EVENT_STANDALONE_FLAG     := FND_API.g_miss_char;
4988 x_evo_rec.REG_FROZEN_FLAG           := FND_API.g_miss_char;
4989 x_evo_rec.REG_REQUIRED_FLAG         := FND_API.g_miss_char;
4990 x_evo_rec.REG_CHARGE_FLAG           := FND_API.g_miss_char;
4991 x_evo_rec.REG_INVITED_ONLY_FLAG     := FND_API.g_miss_char;
4992 x_evo_rec.REG_WAITLIST_ALLOWED_FLAG := FND_API.g_miss_char;
4993 x_evo_rec.REG_OVERBOOK_ALLOWED_FLAG := FND_API.g_miss_char;
4994 x_evo_rec.PARENT_EVENT_OFFER_ID     := FND_API.g_miss_num;
4995 x_evo_rec.EVENT_DURATION            := FND_API.g_miss_num;
4996 x_evo_rec.EVENT_DURATION_UOM_CODE   := FND_API.g_miss_char;
4997 x_evo_rec.EVENT_START_DATE          := FND_API.g_miss_date;
4998 x_evo_rec.EVENT_START_DATE_TIME     := FND_API.g_miss_date;
4999 x_evo_rec.EVENT_END_DATE            := FND_API.g_miss_date;
5000 x_evo_rec.EVENT_END_DATE_TIME       := FND_API.g_miss_date;
5001 x_evo_rec.REG_START_DATE            := FND_API.g_miss_date;
5002 x_evo_rec.REG_START_TIME            := FND_API.g_miss_date;
5003 x_evo_rec.REG_END_DATE              := FND_API.g_miss_date;
5004 x_evo_rec.REG_END_TIME              := FND_API.g_miss_date;
5005 x_evo_rec.REG_MAXIMUM_CAPACITY      := FND_API.g_miss_num;
5006  x_evo_rec.REG_OVERBOOK_PCT          := FND_API.g_miss_num;
5007 x_evo_rec.REG_EFFECTIVE_CAPACITY    := FND_API.g_miss_num;
5008 x_evo_rec.REG_WAITLIST_PCT          := FND_API.g_miss_num;
5009 x_evo_rec.REG_MINIMUM_CAPACITY      := FND_API.g_miss_num;
5010 x_evo_rec.REG_MINIMUM_REQ_BY_DATE   := FND_API.g_miss_date;
5011 x_evo_rec.INVENTORY_ITEM_ID        := FND_API.g_miss_num;
5012 x_evo_rec.INVENTORY_ITEM            := FND_API.g_miss_char;
5013 x_evo_rec.ORGANIZATION_ID         := FND_API.g_miss_num;
5014 x_evo_rec.PRICELIST_HEADER_ID       := FND_API.g_miss_num;
5015 x_evo_rec.PRICELIST_LINE_ID         := FND_API.g_miss_num;
5016 x_evo_rec.ORG_ID                    := FND_API.g_miss_num;
5017 x_evo_rec.WAITLIST_ACTION_TYPE_CODE := FND_API.g_miss_char;
5018 x_evo_rec.STREAM_TYPE_CODE          := FND_API.g_miss_char;
5019 x_evo_rec.OWNER_USER_ID             := FND_API.g_miss_num;
5020 x_evo_rec.EVENT_FULL_FLAG           := FND_API.g_miss_char;
5021 x_evo_rec.FORECASTED_REVENUE        := FND_API.g_miss_num;
5022 x_evo_rec.ACTUAL_REVENUE            := FND_API.g_miss_num;
5023 x_evo_rec.FORECASTED_COST           := FND_API.g_miss_num;
5024 x_evo_rec.ACTUAL_COST               := FND_API.g_miss_num;
5025 x_evo_rec.FUND_SOURCE_TYPE_CODE     := FND_API.g_miss_char;
5026 x_evo_rec.FUND_SOURCE_ID            := FND_API.g_miss_num;
5027 x_evo_rec.CERT_CREDIT_TYPE_CODE     := FND_API.g_miss_char;
5028 x_evo_rec.CERTIFICATION_CREDITS     := FND_API.g_miss_num;
5029 x_evo_rec.COORDINATOR_ID            := FND_API.g_miss_num;
5030 x_evo_rec.PRIORITY_TYPE_CODE        := FND_API.g_miss_char;
5031 x_evo_rec.CANCELLATION_REASON_CODE  := FND_API.g_miss_char;
5032 x_evo_rec.AUTO_REGISTER_FLAG        := FND_API.g_miss_char;
5033 x_evo_rec.EMAIL                  := FND_API.g_miss_char;
5034 x_evo_rec.PHONE                     := FND_API.g_miss_char;
5035 x_evo_rec.FUND_AMOUNT_TC            := FND_API.g_miss_num;
5036 x_evo_rec.FUND_AMOUNT_FC            := FND_API.g_miss_num;
5037 x_evo_rec.CURRENCY_CODE_TC          := FND_API.g_miss_char;
5038 x_evo_rec.CURRENCY_CODE_FC          := FND_API.g_miss_char;
5039 x_evo_rec.URL                       := FND_API.g_miss_char;
5040 x_evo_rec.TIMEZONE_ID               := FND_API.g_miss_num;
5041 x_evo_rec.EVENT_VENUE_ID           :=  FND_API.g_miss_num;
5042 x_evo_rec.PRICELIST_HEADER_CURRENCY_CODE := FND_API.g_miss_char;
5043 x_evo_rec.PRICELIST_LIST_PRICE      := FND_API.g_miss_num;
5044 x_evo_rec.INBOUND_SCRIPT_NAME       := FND_API.g_miss_char;
5045 x_evo_rec.ATTRIBUTE_CATEGORY        := FND_API.g_miss_char;
5046 x_evo_rec.ATTRIBUTE1                := FND_API.g_miss_char;
5047 x_evo_rec.ATTRIBUTE2                := FND_API.g_miss_char;
5048 x_evo_rec.ATTRIBUTE3                := FND_API.g_miss_char;
5049 x_evo_rec.ATTRIBUTE4                := FND_API.g_miss_char;
5050 x_evo_rec.ATTRIBUTE5                := FND_API.g_miss_char;
5051 x_evo_rec.ATTRIBUTE6                := FND_API.g_miss_char;
5052 x_evo_rec.ATTRIBUTE7                := FND_API.g_miss_char;
5053 x_evo_rec.ATTRIBUTE8                := FND_API.g_miss_char;
5054 x_evo_rec.ATTRIBUTE9                := FND_API.g_miss_char;
5055 x_evo_rec.ATTRIBUTE10               := FND_API.g_miss_char;
5056 x_evo_rec.ATTRIBUTE11               := FND_API.g_miss_char;
5057 x_evo_rec.ATTRIBUTE12               := FND_API.g_miss_char;
5058 x_evo_rec.ATTRIBUTE13               := FND_API.g_miss_char;
5059 x_evo_rec.ATTRIBUTE14               := FND_API.g_miss_char;
5060 x_evo_rec.ATTRIBUTE15               := FND_API.g_miss_char;
5061 x_evo_rec.EVENT_OFFER_NAME         := FND_API.g_miss_char;
5062 x_evo_rec.EVENT_MKTG_MESSAGE         := FND_API.g_miss_char;
5063 x_evo_rec.DESCRIPTION            := FND_API.g_miss_char;
5064 x_evo_rec.CUSTOM_SETUP_ID         := FND_API.g_miss_num;
5065 x_evo_rec.COUNTRY_CODE              := FND_API.g_miss_char;
5066 x_evo_rec.BUSINESS_UNIT_ID          := FND_API.g_miss_num;
5067 x_evo_rec.EVENT_CALENDAR            := FND_API.g_miss_char;
5068 x_evo_rec.START_PERIOD_NAME         := FND_API.g_miss_char;
5069 x_evo_rec.END_PERIOD_NAME           := FND_API.g_miss_char;
5070 x_evo_rec.GLOBAL_FLAG               := FND_API.g_miss_char;
5071 x_evo_rec.task_id := FND_API.g_miss_num;
5072 x_evo_rec.parent_id := FND_API.g_miss_num;
5073 x_evo_rec.parent_type := FND_API.g_miss_char;
5074 x_evo_rec.CREATE_ATTENDANT_LEAD_FLAG := FND_API.g_miss_char; /*hornet*/
5075 x_evo_rec.CREATE_REGISTRANT_LEAD_FLAG := FND_API.g_miss_char;/*hornet*/
5076 x_evo_rec.event_object_type := FND_API.g_miss_char;/*hornet*/
5077 x_evo_rec.REG_TIMEZONE_ID := FND_API.g_miss_num;  /*hornet */
5078 x_evo_rec.event_password := FND_API.g_miss_char;/* Hornet : added for imeeting integration*/
5079 x_evo_rec.record_event_flag := FND_API.g_miss_char; /* Hornet : added for imeeting integration*/
5080 x_evo_rec.allow_register_in_middle_flag := FND_API.g_miss_char; /* Hornet : added for imeeting integration*/
5081 x_evo_rec.publish_attendees_flag := FND_API.g_miss_char;/* Hornet : added for imeeting integration*/
5082 x_evo_rec.direct_join_flag := FND_API.g_miss_char; /* Hornet : added for imeeting integration*/
5083 x_evo_rec.event_notification_method := FND_API.g_miss_char; /* Hornet : added for imeeting integration*/
5084 x_evo_rec.actual_start_time := FND_API.g_miss_date; /* Hornet : added for imeeting integration*/
5085 x_evo_rec.actual_end_time := FND_API.g_miss_date;/* Hornet : added for imeeting integration*/
5086 x_evo_rec.server_id := FND_API.g_miss_NUM;/* Hornet : added for imeeting integration*/
5087 x_evo_rec.owner_fnd_user_id := FND_API.g_miss_NUM;/* Hornet : added for imeeting integration  aug13*/
5088 x_evo_rec.meeting_dial_in_info := FND_API.g_miss_char;  /* Hornet : added for imeeting integration aug13*/
5089 x_evo_rec.meeting_email_subject := FND_API.g_miss_char;  /* Hornet : added for imeeting integration  aug13*/
5090 x_evo_rec.meeting_schedule_type := FND_API.g_miss_char;  /* Hornet : added for imeeting integration  aug13*/
5091 x_evo_rec.meeting_status        := FND_API.g_miss_char;  /* Hornet : added for imeeting integration  aug13*/
5092 x_evo_rec.meeting_misc_info     := FND_API.g_miss_char;  /* Hornet : added for imeeting integration  aug13*/
5093 x_evo_rec.publish_flag          := FND_API.g_miss_char;  /* Hornet : added for imeeting integration  aug13*/
5094 x_evo_rec.meeting_encryption_key_code := FND_API.g_miss_char;  /* Hornet : added for imeeting integration  aug13*/
5095 x_evo_rec.number_of_attendees   := FND_API.g_miss_NUM;/* Hornet : added for imeeting integration  aug13*/
5096 x_evo_rec.event_purpose_code := FND_API.g_miss_char;/* Hornet : added aug13*/
5097 END init_evo_rec;
5098 
5099 
5100 ---------------------------------------------------------------------
5101 -- PROCEDURE
5102 --    complete_evo_rec
5103 --
5104 -- HISTORY
5105 --    11/23/1999  sugupta  Created.
5106 --    01/27/2000  gdeodhar Added event_header_id copy to complete_rec.
5107 --    01/27/2000  gdeodhar Added application_id copy to complete_rec.
5108 ---------------------------------------------------------------------
5109 PROCEDURE complete_evo_rec(
5110    p_evo_rec       IN  evo_rec_type,
5111    x_complete_rec  OUT NOCOPY evo_rec_type
5112 )
5113 IS
5114 
5115    CURSOR c_evo IS
5116    SELECT *
5117      FROM ams_event_offers_vl
5118      WHERE event_offer_id = p_evo_rec.event_offer_id;
5119 
5120  CURSOR c_location(loc_id IN NUMBER) IS
5121    SELECT   city, state, country
5122    FROM     hz_locations
5123    WHERE    location_id = loc_id;
5124 
5125    l_evo_rec  c_evo%ROWTYPE;
5126    l_city       VARCHAR2(60);
5127    l_state       VARCHAR2(60);
5128    l_country    VARCHAR2(60);
5129 
5130 BEGIN
5131 IF (AMS_DEBUG_HIGH_ON) THEN
5132 
5133     AMS_UTILITY_PVT.debug_message('complete_evo_rec :'|| p_evo_rec.event_offer_id);
5134 END IF;
5135 
5136    x_complete_rec := p_evo_rec;
5137 
5138    OPEN c_evo;
5139    FETCH c_evo INTO l_evo_rec;
5140    IF c_evo%NOTFOUND THEN
5141       CLOSE c_evo;
5142       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
5143          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
5144          FND_MSG_PUB.add;
5145       END IF;
5146       RAISE FND_API.g_exc_error;
5147    END IF;
5148    CLOSE c_evo;
5149 
5150    IF l_evo_rec.event_location_id IS NOT NULL THEN
5151       OPEN c_location(l_evo_rec.event_location_id);
5152       FETCH c_location INTO l_city, l_state, l_country;
5153       IF c_location%NOTFOUND THEN
5154          CLOSE c_location;
5155          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
5156             FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
5157             FND_MSG_PUB.add;
5158          END IF;
5159          RAISE FND_API.g_exc_error;
5160       END IF;
5161       CLOSE c_location;
5162     END IF;
5163 
5164    -- This procedure should complete the record by going through all the items in the incoming record.
5165   -- adding code to complete setup_type_id ( custom_setup_id in evo_rec)
5166    IF p_evo_rec.custom_setup_id = FND_API.g_miss_num THEN
5167       x_complete_rec.custom_setup_id := l_evo_rec.setup_type_id;
5168    END IF;
5169 
5170    IF p_evo_rec.created_by = FND_API.g_miss_num THEN
5171       x_complete_rec.created_by := l_evo_rec.created_by;
5172    END IF;
5173 
5174    IF p_evo_rec.event_level = FND_API.g_miss_char THEN
5175       x_complete_rec.event_level := l_evo_rec.event_level;
5176    END IF;
5177 
5178    IF p_evo_rec.event_type_code = FND_API.g_miss_char THEN
5179       x_complete_rec.event_type_code := l_evo_rec.event_type_code;
5180    END IF;
5181 
5182    IF p_evo_rec.active_flag = FND_API.g_miss_char THEN
5183       x_complete_rec.active_flag := l_evo_rec.active_flag;
5184    END IF;
5185 
5186    IF p_evo_rec.private_flag = FND_API.g_miss_char THEN
5187       x_complete_rec.private_flag := l_evo_rec.private_flag;
5188    END IF;
5189 
5190    IF p_evo_rec.user_status_id = FND_API.g_miss_num THEN
5191       x_complete_rec.user_status_id := l_evo_rec.user_status_id;
5192    END IF;
5193 --   IF p_evo_rec.event_delivery_method_code = FND_API.g_miss_char THEN
5194 --      x_complete_rec.event_delivery_method_code := l_evo_rec.event_delivery_method_code;
5195 --   END IF;
5196 
5197    if p_evo_rec.event_required_flag = fnd_api.g_miss_char then
5198       x_complete_rec.event_required_flag := l_evo_rec.event_required_flag;
5199    END IF;
5200    if p_evo_rec.event_language_code = fnd_api.g_miss_char then
5201       x_complete_rec.event_language_code := l_evo_rec.event_language_code;
5202    END IF;
5203 
5204    if p_evo_rec.event_location_id = fnd_api.g_miss_num then
5205       x_complete_rec.event_location_id := l_evo_rec.event_location_id;
5206    end if;
5207    IF p_evo_rec.system_status_code = FND_API.g_miss_char THEN
5208       x_complete_rec.system_status_code := l_evo_rec.system_status_code;
5209    END IF;
5210 
5211 --IF p_evo_rec.last_status_date = FND_API.g_miss_date THEN
5212 --   x_complete_rec.last_status_date := l_evo_rec.last_status_date;
5213 --END IF;
5214 
5215    IF p_evo_rec.last_status_date = FND_API.g_miss_date
5216       OR p_evo_rec.last_status_date IS NULL
5217    THEN
5218       IF p_evo_rec.user_status_id = l_evo_rec.user_status_id THEN
5219       -- no status change, set it to be the original value
5220          x_complete_rec.last_status_date := l_evo_rec.last_status_date;
5221       ELSE
5222       -- status changed, set it to be SYSDATE
5223          x_complete_rec.last_status_date := SYSDATE;
5224       END IF;
5225    END IF;
5226 
5227    IF p_evo_rec.stream_type_code = FND_API.g_miss_char THEN
5228       x_complete_rec.stream_type_code := l_evo_rec.stream_type_code;
5229    END IF;
5230 
5231    IF p_evo_rec.source_code = FND_API.g_miss_char THEN
5232       x_complete_rec.source_code := l_evo_rec.source_code;
5233    END IF;
5234 
5235    IF p_evo_rec.event_standalone_flag = FND_API.g_miss_char THEN
5236       x_complete_rec.event_standalone_flag := l_evo_rec.event_standalone_flag;
5237    END IF;
5238    if p_evo_rec.reg_frozen_flag = fnd_api.g_miss_char then
5239       x_complete_rec.reg_frozen_flag := l_evo_rec.reg_frozen_flag;
5240    END IF;
5241    IF p_evo_rec.reg_required_flag = FND_API.g_miss_char THEN
5242       x_complete_rec.reg_required_flag := l_evo_rec.reg_required_flag;
5243    END IF;
5244    if p_evo_rec.reg_waitlist_allowed_flag = fnd_api.g_miss_char then
5245       x_complete_rec.reg_waitlist_allowed_flag := l_evo_rec.reg_waitlist_allowed_flag;
5246    END IF;
5247    if p_evo_rec.reg_overbook_allowed_flag = fnd_api.g_miss_char then
5248       x_complete_rec.reg_overbook_allowed_flag := l_evo_rec.reg_overbook_allowed_flag;
5249    END IF;
5250    IF p_evo_rec.reg_charge_flag = FND_API.g_miss_char THEN
5251       x_complete_rec.reg_charge_flag := l_evo_rec.reg_charge_flag;
5252    END IF;
5253 
5254    IF p_evo_rec.reg_invited_only_flag = FND_API.g_miss_char THEN
5255       x_complete_rec.reg_invited_only_flag := l_evo_rec.reg_invited_only_flag;
5256    END IF;
5257 
5258    IF p_evo_rec.partner_flag = FND_API.g_miss_char THEN
5259       x_complete_rec.partner_flag := l_evo_rec.partner_flag;
5260    END IF;
5261    IF p_evo_rec.overflow_flag = FND_API.g_miss_char THEN
5262       x_complete_rec.overflow_flag := l_evo_rec.overflow_flag;
5263    END IF;
5264    IF p_evo_rec.parent_event_offer_id = FND_API.g_miss_num THEN
5265       x_complete_rec.parent_event_offer_id := l_evo_rec.parent_event_offer_id;
5266    END IF;
5267 
5268    IF p_evo_rec.event_duration = FND_API.g_miss_num THEN
5269       x_complete_rec.event_duration := l_evo_rec.event_duration;
5270    END IF;
5271 
5272    IF p_evo_rec.event_duration_uom_code = FND_API.g_miss_char THEN
5273       x_complete_rec.event_duration_uom_code := l_evo_rec.event_duration_uom_code;
5274    END IF;
5275 
5276    IF p_evo_rec.event_start_date = FND_API.g_miss_date THEN
5277       x_complete_rec.event_start_date := l_evo_rec.event_start_date;
5278    END IF;
5279    if p_evo_rec.event_start_date_time = fnd_api.g_miss_date then
5280       x_complete_rec.event_start_date_time := l_evo_rec.event_start_date_time;
5281    END IF;
5282    if p_evo_rec.event_end_date = fnd_api.g_miss_date then
5283       x_complete_rec.event_end_date    := l_evo_rec.event_end_date;
5284    END IF;
5285    if p_evo_rec.event_end_date_time = fnd_api.g_miss_date then
5286       x_complete_rec.event_end_date_time    := l_evo_rec.event_end_date_time;
5287    end if;
5288    IF p_evo_rec.REG_START_DATE = FND_API.g_miss_date THEN
5289       x_complete_rec.REG_START_DATE := l_evo_rec.REG_START_DATE;
5290    END IF;
5291    if p_evo_rec.REG_START_TIME = fnd_api.g_miss_date then
5292       x_complete_rec.REG_START_TIME := l_evo_rec.REG_START_TIME;
5293    END IF;
5294    if p_evo_rec.REG_END_DATE = fnd_api.g_miss_date then
5295       x_complete_rec.REG_END_DATE    := l_evo_rec.REG_END_DATE;
5296    END IF;
5297    if p_evo_rec.REG_END_TIME = fnd_api.g_miss_date then
5298       x_complete_rec.REG_END_TIME    := l_evo_rec.REG_END_TIME;
5299    end if;
5300    IF p_evo_rec.reg_maximum_capacity = FND_API.g_miss_num THEN
5301       x_complete_rec.reg_maximum_capacity := l_evo_rec.reg_maximum_capacity;
5302    END IF;
5303 
5304    IF p_evo_rec.reg_minimum_capacity = FND_API.g_miss_num THEN
5305       x_complete_rec.reg_minimum_capacity := l_evo_rec.reg_minimum_capacity;
5306    END IF;
5307   IF p_evo_rec.REG_OVERBOOK_PCT = FND_API.g_miss_num THEN
5308       x_complete_rec.REG_OVERBOOK_PCT := l_evo_rec.REG_OVERBOOK_PCT;
5309    END IF;
5310   IF p_evo_rec.REG_EFFECTIVE_CAPACITY = FND_API.g_miss_num THEN
5311       x_complete_rec.REG_EFFECTIVE_CAPACITY := l_evo_rec.REG_EFFECTIVE_CAPACITY;
5312    END IF;
5313     IF p_evo_rec.REG_WAITLIST_PCT = FND_API.g_miss_num THEN
5314       x_complete_rec.REG_WAITLIST_PCT := l_evo_rec.REG_WAITLIST_PCT;
5315    END IF;
5316    IF p_evo_rec.REG_MINIMUM_REQ_BY_DATE = FND_API.g_miss_date THEN
5317       x_complete_rec.REG_MINIMUM_REQ_BY_DATE := l_evo_rec.REG_MINIMUM_REQ_BY_DATE;
5318    END IF;
5319    IF p_evo_rec.event_language_code = FND_API.g_miss_char THEN
5320       x_complete_rec.event_language_code := l_evo_rec.event_language_code;
5321    END IF;
5322 
5323    IF p_evo_rec.cert_credit_type_code = FND_API.g_miss_char THEN
5324       x_complete_rec.cert_credit_type_code := l_evo_rec.cert_credit_type_code;
5325    END IF;
5326 
5327    IF p_evo_rec.certification_credits = FND_API.g_miss_num THEN
5328       x_complete_rec.certification_credits := l_evo_rec.certification_credits;
5329    END IF;
5330 
5331    IF p_evo_rec.inventory_item_id = FND_API.g_miss_num THEN
5332       x_complete_rec.inventory_item_id := l_evo_rec.inventory_item_id;
5333    END IF;
5334    IF p_evo_rec.organization_id = fnd_api.g_miss_num then
5335       x_complete_rec.organization_id := l_evo_rec.organization_id;
5336    END IF;
5337       IF p_evo_rec.PRICELIST_LINE_ID = FND_API.g_miss_num THEN
5338       x_complete_rec.PRICELIST_LINE_ID := l_evo_rec.PRICELIST_LINE_ID;
5339    END IF;
5340       IF p_evo_rec.PRICELIST_HEADER_ID = FND_API.g_miss_num THEN
5341       x_complete_rec.PRICELIST_HEADER_ID := l_evo_rec.PRICELIST_HEADER_ID;
5342    END IF;
5343    IF p_evo_rec.WAITLIST_ACTION_TYPE_CODE = FND_API.g_miss_char THEN
5344       x_complete_rec.WAITLIST_ACTION_TYPE_CODE := l_evo_rec.WAITLIST_ACTION_TYPE_CODE;
5345    END IF;
5346    IF p_evo_rec.EVENT_FULL_FLAG = FND_API.g_miss_char THEN
5347       x_complete_rec.EVENT_FULL_FLAG := l_evo_rec.EVENT_FULL_FLAG;
5348    END IF;
5349    IF p_evo_rec.AUTO_REGISTER_FLAG = FND_API.g_miss_char THEN
5350       x_complete_rec.AUTO_REGISTER_FLAG := l_evo_rec.AUTO_REGISTER_FLAG;
5351    END IF;
5352    IF p_evo_rec.forecasted_revenue = FND_API.g_miss_num THEN
5353       x_complete_rec.forecasted_revenue := l_evo_rec.forecasted_revenue;
5354    END IF;
5355 
5356    IF p_evo_rec.actual_revenue = FND_API.g_miss_num THEN
5357       x_complete_rec.actual_revenue := l_evo_rec.actual_revenue;
5358    END IF;
5359 
5360    IF p_evo_rec.forecasted_cost = FND_API.g_miss_num THEN
5361       x_complete_rec.forecasted_cost := l_evo_rec.forecasted_cost;
5362    END IF;
5363 
5364    IF p_evo_rec.actual_cost = FND_API.g_miss_num THEN
5365       x_complete_rec.actual_cost := l_evo_rec.actual_cost;
5366    END IF;
5367 
5368    IF p_evo_rec.coordinator_id = FND_API.g_miss_num THEN
5369       x_complete_rec.coordinator_id := l_evo_rec.coordinator_id;
5370    END IF;
5371 
5372    IF p_evo_rec.fund_source_type_code = FND_API.g_miss_char THEN
5373       x_complete_rec.fund_source_type_code := l_evo_rec.fund_source_type_code;
5374    END IF;
5375 
5376    IF p_evo_rec.fund_source_id = FND_API.g_miss_num THEN
5377       x_complete_rec.fund_source_id := l_evo_rec.fund_source_id;
5378    END IF;
5379 
5380    IF p_evo_rec.owner_user_id = FND_API.g_miss_num THEN
5381       x_complete_rec.owner_user_id := l_evo_rec.owner_user_id;
5382    END IF;
5383 
5384    IF p_evo_rec.url = FND_API.g_miss_char THEN
5385       x_complete_rec.url := l_evo_rec.url;
5386    END IF;
5387 
5388    IF p_evo_rec.email = FND_API.g_miss_char THEN
5389       x_complete_rec.email := l_evo_rec.email;
5390    END IF;
5391 
5392    IF p_evo_rec.phone = FND_API.g_miss_char THEN
5393       x_complete_rec.phone := l_evo_rec.phone;
5394    END IF;
5395 
5396    IF p_evo_rec.fund_amount_tc = FND_API.g_miss_num THEN
5397       x_complete_rec.fund_amount_tc := l_evo_rec.fund_amount_tc;
5398    END IF;
5399 
5400    IF p_evo_rec.fund_amount_fc = FND_API.g_miss_num THEN
5401       x_complete_rec.fund_amount_fc := l_evo_rec.fund_amount_fc;
5402    END IF;
5403 
5404    IF p_evo_rec.currency_code_tc = FND_API.g_miss_char THEN
5405       x_complete_rec.currency_code_tc := l_evo_rec.currency_code_tc;
5406    END IF;
5407 
5408    IF p_evo_rec.currency_code_fc = FND_API.g_miss_char THEN
5409       x_complete_rec.currency_code_fc := l_evo_rec.currency_code_fc;
5410    END IF;
5411 
5412    IF p_evo_rec.TIMEZONE_ID = FND_API.g_miss_num THEN
5413       x_complete_rec.TIMEZONE_ID := l_evo_rec.TIMEZONE_ID;
5414    END IF;
5415    IF p_evo_rec.event_venue_id = FND_API.g_miss_num THEN
5416       x_complete_rec.event_venue_id := l_evo_rec.event_venue_id;
5417    END IF;
5418    IF p_evo_rec.priority_type_code = FND_API.g_miss_char THEN
5419       x_complete_rec.priority_type_code := l_evo_rec.priority_type_code;
5420    END IF;
5421 
5422    IF p_evo_rec.cancellation_reason_code = FND_API.g_miss_char THEN
5423       x_complete_rec.cancellation_reason_code := l_evo_rec.cancellation_reason_code;
5424    END IF;
5425 
5426    IF p_evo_rec.inbound_script_name = FND_API.g_miss_char THEN
5427       x_complete_rec.inbound_script_name := l_evo_rec.inbound_script_name;
5428    END IF;
5429 
5430    IF p_evo_rec.attribute_category = FND_API.g_miss_char THEN
5431       x_complete_rec.attribute_category := l_evo_rec.attribute_category;
5432    END IF;
5433 
5434    IF p_evo_rec.attribute1 = FND_API.g_miss_char THEN
5435       x_complete_rec.attribute1 := l_evo_rec.attribute1;
5436    END IF;
5437 
5438    IF p_evo_rec.attribute2 = FND_API.g_miss_char THEN
5439       x_complete_rec.attribute2 := l_evo_rec.attribute2;
5440    END IF;
5441 
5442    IF p_evo_rec.attribute3 = FND_API.g_miss_char THEN
5443       x_complete_rec.attribute3 := l_evo_rec.attribute3;
5444    END IF;
5445 
5446    IF p_evo_rec.attribute4 = FND_API.g_miss_char THEN
5447       x_complete_rec.attribute4 := l_evo_rec.attribute4;
5448    END IF;
5449 
5450    IF p_evo_rec.attribute5 = FND_API.g_miss_char THEN
5451       x_complete_rec.attribute5 := l_evo_rec.attribute5;
5452    END IF;
5453 
5454    IF p_evo_rec.attribute6 = FND_API.g_miss_char THEN
5455       x_complete_rec.attribute6 := l_evo_rec.attribute6;
5456    END IF;
5457 
5458    IF p_evo_rec.attribute7 = FND_API.g_miss_char THEN
5459       x_complete_rec.attribute7 := l_evo_rec.attribute7;
5460    END IF;
5461 
5462    IF p_evo_rec.attribute8 = FND_API.g_miss_char THEN
5463       x_complete_rec.attribute8 := l_evo_rec.attribute8;
5464    END IF;
5465 
5466    IF p_evo_rec.attribute9 = FND_API.g_miss_char THEN
5467       x_complete_rec.attribute9 := l_evo_rec.attribute9;
5468    END IF;
5469 
5470    IF p_evo_rec.attribute10 = FND_API.g_miss_char THEN
5471       x_complete_rec.attribute10 := l_evo_rec.attribute10;
5472    END IF;
5473 
5474    IF p_evo_rec.attribute11 = FND_API.g_miss_char THEN
5475       x_complete_rec.attribute11 := l_evo_rec.attribute11;
5476    END IF;
5477 
5478    IF p_evo_rec.attribute12 = FND_API.g_miss_char THEN
5479       x_complete_rec.attribute12 := l_evo_rec.attribute12;
5480    END IF;
5481 
5482    IF p_evo_rec.attribute13 = FND_API.g_miss_char THEN
5483       x_complete_rec.attribute13 := l_evo_rec.attribute13;
5484    END IF;
5485 
5486    IF p_evo_rec.attribute14 = FND_API.g_miss_char THEN
5487       x_complete_rec.attribute14 := l_evo_rec.attribute14;
5488    END IF;
5489 
5490    IF p_evo_rec.attribute15 = FND_API.g_miss_char THEN
5491       x_complete_rec.attribute15 := l_evo_rec.attribute15;
5492    END IF;
5493 
5494    IF p_evo_rec.event_offer_name = FND_API.g_miss_char THEN
5495       x_complete_rec.event_offer_name := l_evo_rec.event_offer_name;
5496    END IF;
5497 
5498    IF p_evo_rec.event_mktg_message = FND_API.g_miss_char THEN
5499       x_complete_rec.event_mktg_message := l_evo_rec.event_mktg_message;
5500    END IF;
5501 
5502    IF p_evo_rec.description = FND_API.g_miss_char THEN
5503       x_complete_rec.description := l_evo_rec.description;
5504    END IF;
5505 
5506    -- gdeodhar : Added the following. As when we update the event offer agenda
5507    -- records, we may not pass the event_header_id.
5508    IF p_evo_rec.event_header_id = FND_API.g_miss_num THEN
5509       x_complete_rec.event_header_id := l_evo_rec.event_header_id;
5510    END IF;
5511    -- gdeodhar. Added the following.
5512    IF p_evo_rec.application_id = FND_API.g_miss_num THEN
5513       x_complete_rec.application_id := l_evo_rec.application_id;
5514    END IF;
5515 
5516    -- gdeodhar : added the following to support the new fields.
5517    IF p_evo_rec.country_code = FND_API.g_miss_char THEN
5518       x_complete_rec.country_code := l_evo_rec.country_code;
5519    END IF;
5520    -- added by murali for location
5521    IF p_evo_rec.country = FND_API.g_miss_char THEN
5522       x_complete_rec.country := l_country;
5523    END IF;
5524    IF p_evo_rec.city = FND_API.g_miss_char THEN
5525       x_complete_rec.city := l_city;
5526    END IF;
5527    IF p_evo_rec.state = FND_API.g_miss_char THEN
5528       x_complete_rec.state := l_state;
5529    END IF;
5530 
5531    IF p_evo_rec.business_unit_id = FND_API.g_miss_num THEN
5532       x_complete_rec.business_unit_id := l_evo_rec.business_unit_id;
5533    END IF;
5534  -- sugupta added calendar fields
5535    IF p_evo_rec.event_calendar = FND_API.g_miss_char THEN
5536       x_complete_rec.event_calendar := FND_PROFILE.value('AMS_CAMPAIGN_DEFAULT_CALENDER');
5537    END IF;
5538 
5539    IF p_evo_rec.start_period_name = FND_API.g_miss_char THEN
5540       x_complete_rec.start_period_name := l_evo_rec.start_period_name;
5541    END IF;
5542 
5543    IF p_evo_rec.end_period_name = FND_API.g_miss_char THEN
5544       x_complete_rec.end_period_name := l_evo_rec.end_period_name;
5545    END IF;
5546 
5547    IF p_evo_rec.global_flag = FND_API.g_miss_char THEN
5548       x_complete_rec.global_flag := l_evo_rec.global_flag;
5549    END IF;
5550 
5551    IF p_evo_rec.task_id = FND_API.g_miss_num THEN
5552       x_complete_rec.task_id := l_evo_rec.task_id;
5553    END IF;
5554       IF p_evo_rec.parent_id = FND_API.g_miss_num THEN
5555       x_complete_rec.parent_id := l_evo_rec.parent_id;
5556    END IF;
5557       IF p_evo_rec.parent_type = FND_API.g_miss_char THEN
5558       x_complete_rec.parent_type := l_evo_rec.parent_type;
5559    END IF;
5560       IF p_evo_rec.CREATE_ATTENDANT_LEAD_FLAG = FND_API.g_miss_char THEN
5561       x_complete_rec.CREATE_ATTENDANT_LEAD_FLAG := l_evo_rec.CREATE_ATTENDANT_LEAD_FLAG;
5562    END IF;
5563       IF p_evo_rec.CREATE_REGISTRANT_LEAD_FLAG = FND_API.g_miss_char THEN
5564       x_complete_rec.CREATE_REGISTRANT_LEAD_FLAG := l_evo_rec.CREATE_REGISTRANT_LEAD_FLAG;
5565    END IF;
5566       IF p_evo_rec.event_object_type = FND_API.g_miss_char THEN
5567       x_complete_rec.event_object_type := l_evo_rec.event_object_type;
5568    END IF;
5569    IF p_evo_rec.REG_TIMEZONE_ID = FND_API.g_miss_num THEN
5570       x_complete_rec.REG_TIMEZONE_ID := l_evo_rec.REG_TIMEZONE_ID;
5571    END IF;
5572 
5573    IF p_evo_rec.event_password = FND_API.g_miss_char THEN
5574       x_complete_rec.event_password := l_evo_rec.event_password;/* Hornet : added for imeeting integration*/
5575    END IF;
5576 
5577    IF p_evo_rec.record_event_flag = FND_API.g_miss_char THEN
5578       x_complete_rec.record_event_flag := l_evo_rec.record_event_flag;/* Hornet : added for imeeting integration*/
5579    END IF;
5580 
5581    IF p_evo_rec.allow_register_in_middle_flag = FND_API.g_miss_char THEN
5582       x_complete_rec.allow_register_in_middle_flag := l_evo_rec.allow_register_in_middle_flag;/* Hornet : added for imeeting integration*/
5583    END IF;
5584 
5585    IF p_evo_rec.publish_attendees_flag = FND_API.g_miss_char THEN
5586       x_complete_rec.publish_attendees_flag := l_evo_rec.publish_attendees_flag;/* Hornet : added for imeeting integration*/
5587    END IF;
5588 
5589    IF p_evo_rec.direct_join_flag = FND_API.g_miss_char THEN
5590       x_complete_rec.direct_join_flag := l_evo_rec.direct_join_flag;/* Hornet : added for imeeting integration*/
5591    END IF;
5592 
5593    IF p_evo_rec.event_notification_method = FND_API.g_miss_char THEN
5594       x_complete_rec.event_notification_method := l_evo_rec.event_notification_method;/* Hornet : added for imeeting integration*/
5595    END IF;
5596 
5597    IF p_evo_rec.actual_start_time = FND_API.g_miss_date THEN
5598       x_complete_rec.actual_start_time := l_evo_rec.actual_start_time;/* Hornet : added for imeeting integration*/
5599    END IF;
5600 
5601    IF p_evo_rec.actual_end_time = FND_API.g_miss_date THEN
5602       x_complete_rec.actual_end_time := l_evo_rec.actual_end_time;/* Hornet : added for imeeting integration*/
5603    END IF;
5604 
5605    IF p_evo_rec.server_id = FND_API.g_miss_num THEN
5606       x_complete_rec.server_id := l_evo_rec.server_id;/* Hornet : added for imeeting integration*/
5607    END IF;
5608 
5609    IF p_evo_rec.owner_fnd_user_id = FND_API.g_miss_NUM THEN
5610    x_complete_rec.owner_fnd_user_id := l_evo_rec.owner_fnd_user_id;/* Hornet : added for imeeting integration  aug13*/
5611    END IF;
5612    IF p_evo_rec.meeting_dial_in_info = FND_API.g_miss_char THEN
5613       x_complete_rec.meeting_dial_in_info := l_evo_rec.meeting_dial_in_info;  /* Hornet : added for imeeting integration aug13*/
5614    END IF;
5615    IF p_evo_rec.meeting_email_subject = FND_API.g_miss_char THEN
5616       x_complete_rec.meeting_email_subject := l_evo_rec.meeting_email_subject;  /* Hornet : added for imeeting integration  aug13*/
5617    END IF;
5618    IF p_evo_rec.meeting_schedule_type = FND_API.g_miss_char  THEN
5619       x_complete_rec.meeting_schedule_type := l_evo_rec.meeting_schedule_type;  /* Hornet : added for imeeting integration  aug13*/
5620    END IF;
5621    IF p_evo_rec.meeting_status = FND_API.g_miss_char  THEN
5622       x_complete_rec.meeting_status := l_evo_rec.meeting_status;  /* Hornet : added for imeeting integration  aug13*/
5623    END IF;
5624    IF p_evo_rec.meeting_misc_info = FND_API.g_miss_char  THEN
5625       x_complete_rec.meeting_misc_info := l_evo_rec.meeting_misc_info;  /* Hornet : added for imeeting integration  aug13*/
5626    END IF;
5627    IF p_evo_rec.publish_flag   = FND_API.g_miss_char  THEN
5628       x_complete_rec.publish_flag := l_evo_rec.publish_flag;  /* Hornet : added for imeeting integration  aug13*/
5629    END IF;
5630    IF p_evo_rec.meeting_encryption_key_code = FND_API.g_miss_char  THEN
5631       x_complete_rec.meeting_encryption_key_code := l_evo_rec.meeting_encryption_key_code;  /* Hornet : added for imeeting integration  aug13*/
5632    END IF;
5633    IF p_evo_rec.number_of_attendees   = FND_API.g_miss_NUM  THEN
5634       x_complete_rec.number_of_attendees := l_evo_rec.number_of_attendees;/* Hornet : added for imeeting integration  aug13*/
5635    END IF;
5636    IF p_evo_rec.event_purpose_code = FND_API.g_miss_char  THEN
5637       x_complete_rec.event_purpose_code := l_evo_rec.event_purpose_code;  /* Hornet : added  aug13*/
5638    END IF;
5639 
5640 END complete_evo_rec;
5641 
5642 ---------------------------------------------------------------------
5643 -- PROCEDURE
5644 --    create_inv_item
5645 --
5646 -- HISTORY
5647 --    03/04/2000  sugupta  Create.
5648 --    07/07/2000  sugupta  modified Bug 1346165- Added Exception code to print out
5649 --                           an error message if inv api call returns err status
5650 ---------------------------------------------------------------------
5651 PROCEDURE create_inv_item
5652 (
5653   p_commit              IN  VARCHAR2 := FND_API.g_false,
5654   p_inv_item_number     IN  VARCHAR2,
5655   p_inv_item_desc       IN  VARCHAR2,
5656   p_inv_long_desc      IN  VARCHAR2,
5657   x_return_status       OUT NOCOPY VARCHAR2,
5658   x_msg_count         OUT NOCOPY NUMBER,
5659   x_msg_data         OUT NOCOPY VARCHAR2,
5660   x_item_id          OUT NOCOPY NUMBER,
5661   x_org_id          OUT NOCOPY NUMBER
5662 )
5663 IS
5664    l_api_name           CONSTANT VARCHAR2(30) := 'create_inv_item';
5665    l_full_name          CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
5666 
5667    l_commit             VARCHAR2(1);
5668    l_validation_level   NUMBER;
5669    l_return_status      VARCHAR2(1);
5670    l_msg_count          NUMBER;
5671    l_item_rec           INV_Item_GRP.Item_rec_type;
5672    x_item_rec           INV_Item_GRP.Item_rec_type;
5673    x_error_tbl          INV_Item_GRP.Error_tbl_type;
5674    inv_item_creation_error  EXCEPTION;
5675    l_err_txt         VARCHAR2(4000);
5676 
5677 BEGIN
5678 
5679    null;
5680 
5681 /*
5682 --DBMS_OUTPUT.put_line('calling INV_Item_GRP.Create_Item...');
5683    x_return_status := FND_API.g_ret_sts_success;
5684 
5685    l_commit := p_commit;
5686    l_validation_level := fnd_api.g_VALID_LEVEL_FULL;
5687    l_item_rec.SEGMENT1 := p_inv_item_number;
5688    l_item_rec.ORGANIZATION_ID := FND_PROFILE.Value('AMS_ITEM_ORGANIZATION_ID');
5689 --204;
5690    l_item_rec.DESCRIPTION := p_inv_item_desc;
5691    l_item_rec.LONG_DESCRIPTION := p_inv_long_desc;
5692    l_item_rec.event_flag := 'Y';
5693    l_item_rec.ORDERABLE_ON_WEB_FLAG := 'Y';
5694    l_item_rec.CUSTOMER_ORDER_FLAG := 'Y';
5695    l_item_rec.CUSTOMER_ORDER_ENABLED_FLAG := 'Y';
5696    l_item_rec.web_status := 'PUBLISHED';
5697 
5698     INV_Item_GRP.Create_Item
5699     (
5700          l_commit
5701         ,l_validation_level
5702         ,l_item_rec
5703         ,x_item_rec
5704         ,l_return_status
5705         ,x_error_tbl
5706     );
5707 
5708    x_item_id := x_item_rec.inventory_item_id;
5709     x_org_id  := x_item_rec.ORGANIZATION_ID;
5710 
5711     x_return_status := l_return_status;
5712 
5713  --  DBMS_OUTPUT.put_line('***********************************');
5714  --  DBMS_OUTPUT.put_line('Return status = ' || x_return_status);
5715  --  DBMS_OUTPUT.put_line('***********************************');
5716 
5717    FOR i IN 1 .. x_error_tbl.count LOOP
5718    --    DBMS_OUTPUT.put_line('i = ' || i);
5719    --    DBMS_OUTPUT.put_line('Return err name = ' || x_error_tbl(i).message_name);
5720    --    DBMS_OUTPUT.put_line('Return err msg = ' || x_error_tbl(i).message_text);
5721    --    DBMS_OUTPUT.put_line('Return err table = ' || x_error_tbl(i).table_name);
5722    --    DBMS_OUTPUT.put_line('Return err column = ' || x_error_tbl(i).column_name);
5723     --   DBMS_OUTPUT.put_line('Return err org_id = ' || x_error_tbl(i).organization_id);
5724    --    DBMS_OUTPUT.put_line('***********************************');
5725    NULL;
5726    END LOOP;
5727 
5728 
5729     IF l_return_status <> FND_API.g_ret_sts_success THEN
5730       RAISE inv_item_creation_error;
5731     END IF;
5732 
5733 EXCEPTION
5734 
5735 --   WHEN OTHERS THEN
5736 --    NULL;
5737  --DBMS_OUTPUT.put_line('-- caught here');
5738 
5739    WHEN inv_item_creation_error THEN
5740       --x_return_status := FND_API.g_ret_sts_error;
5741       --l_msg_count := x_error_tbl.count;
5742       FOR i IN 1 .. x_error_tbl.count LOOP
5743       l_err_txt := l_err_txt || x_error_tbl(i).message_text;
5744      END LOOP;
5745      FND_MSG_PUB.add_exc_msg(p_error_text => l_err_txt);
5746           FND_MSG_PUB.count_and_get(
5747                 p_encoded => FND_API.g_false,
5748                 p_count   => x_msg_count,
5749                 p_data    => x_msg_data
5750       );
5751 
5752    WHEN FND_API.g_exc_unexpected_error THEN
5753       --x_return_status := FND_API.g_ret_sts_unexp_error ;
5754       l_msg_count := x_error_tbl.count;
5755       FOR i IN 1 .. x_error_tbl.count LOOP
5756           FND_MSG_PUB.count_and_get(
5757                 p_encoded => FND_API.g_false,
5758                 p_count   => l_msg_count,
5759                 p_data    => x_error_tbl(i).message_text
5760           );
5761       END LOOP;
5762 
5763    WHEN OTHERS THEN
5764      -- x_return_status := FND_API.g_ret_sts_unexp_error;
5765       l_msg_count := x_error_tbl.count;
5766       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
5767       THEN
5768         FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
5769       END IF;
5770 
5771       FOR i IN 1 .. x_error_tbl.count LOOP
5772           FND_MSG_PUB.count_and_get(
5773                 p_encoded => FND_API.g_false,
5774                 p_count   => l_msg_count,
5775                 p_data    => x_msg_data
5776           );
5777       END LOOP;
5778 
5779    */
5780 
5781 END create_inv_item;
5782 
5783 ---------------------------------------------------------------------
5784 -- PROCEDURE
5785 --    create_pricelist_header
5786 --
5787 -- HISTORY
5788 --    03/04/2000  sugupta  Create.
5789 --    05/17/2000  sugupta  modified
5790 ---------------------------------------------------------------------
5791 
5792 PROCEDURE create_pricelist_header
5793 (
5794   p_api_version             IN  NUMBER,
5795   p_init_msg_list           IN  VARCHAR2 := FND_API.g_false,
5796   p_return_values           IN  VARCHAR2 := FND_API.g_false,
5797   p_commit                  IN  VARCHAR2 := FND_API.g_false,
5798   p_evo_rec               IN  evo_rec_type,
5799   x_return_status           OUT NOCOPY VARCHAR2,
5800   x_msg_count               OUT NOCOPY NUMBER,
5801   x_msg_data                OUT NOCOPY VARCHAR2,
5802   x_pricelist_header_id     OUT NOCOPY NUMBER
5803 )
5804 
5805 IS
5806    l_api_version            CONSTANT NUMBER       := 1.0;
5807    l_api_name               CONSTANT VARCHAR2(30) := 'create_pricelist_header';
5808    l_full_name              CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
5809 
5810    l_return_status          VARCHAR2(1);
5811    l_msg_count              NUMBER;
5812    l_msg_data               VARCHAR2(2000);
5813 
5814    p_price_list_rec         qp_price_list_pub.price_list_rec_type;
5815    p_price_list_val_rec      qp_price_list_pub.price_list_val_rec_type;
5816    p_price_list_line_tbl          qp_price_list_pub.price_list_line_tbl_type;
5817    p_price_list_line_val_tbl      qp_price_list_pub.price_list_line_val_tbl_type;
5818    p_qualifiers_tbl         qp_qualifier_rules_pub.qualifiers_tbl_type;
5819    p_qualifiers_val_tbl     qp_qualifier_rules_pub.qualifiers_val_tbl_type;
5820    p_pricing_attr_tbl       qp_price_list_pub.pricing_attr_tbl_type;
5821    p_pricing_attr_val_tbl   qp_price_list_pub.pricing_attr_val_tbl_type;
5822 
5823    l_price_list_rec         qp_price_list_pub.price_list_rec_type;
5824    l_price_list_val_rec      qp_price_list_pub.price_list_val_rec_type;
5825    l_price_list_line_tbl          qp_price_list_pub.price_list_line_tbl_type;
5826    l_price_list_line_val_tbl      qp_price_list_pub.price_list_line_val_tbl_type;
5827    l_qualifiers_tbl         qp_qualifier_rules_pub.qualifiers_tbl_type;
5828    l_qualifiers_val_tbl     qp_qualifier_rules_pub.qualifiers_val_tbl_type;
5829    l_pricing_attr_tbl       qp_price_list_pub.pricing_attr_tbl_type;
5830    l_pricing_attr_val_tbl   qp_price_list_pub.pricing_attr_val_tbl_type;
5831 
5832 BEGIN
5833 
5834    -- dbms_output.put_line('create List header called');
5835    x_return_status := FND_API.g_ret_sts_success;
5836 -- todo- get Header name from profile option AMS_PRICELIST_HEADER_NAME
5837    p_price_list_rec.name := FND_PROFILE.value('AMS_PRICELIST_HEADER_NAME');
5838    --'Event Registration Pricing';
5839    p_price_list_rec.created_by := p_evo_rec.owner_user_id;
5840    p_price_list_rec.creation_date := sysdate;
5841    p_price_list_rec.currency_code := p_evo_rec.pricelist_header_currency_code;
5842    p_price_list_rec.list_type_code := 'PRL';
5843   p_price_list_rec.description := 'Event Registration Pricing';
5844   p_price_list_rec.start_date_active := p_evo_rec.event_start_date;
5845   p_price_list_rec.end_date_active := p_evo_rec.event_end_date;
5846   p_price_list_rec.operation :=QP_GLOBALS.G_OPR_CREATE;
5847 
5848   --p_price_list_rec.active_flag := 'Y';
5849  -- p_price_list_rec.automatic_flag := 'Y';
5850 
5851 
5852    IF (AMS_DEBUG_HIGH_ON) THEN
5853 
5854 
5855 
5856 
5857 
5858        AMS_Utility_PVT.debug_message(l_full_name ||': create pricelist header...');
5859 
5860 
5861    END IF;
5862 
5863    QP_PRICE_LIST_PUB.Process_Price_List(
5864            p_api_version_number      => 1.0,
5865            p_init_msg_list           => FND_API.G_TRUE,
5866            p_return_values           => FND_API.G_TRUE,
5867            p_commit                  => FND_API.G_TRUE,
5868            x_return_status           => l_return_status,
5869            x_msg_count               => l_msg_count,
5870            x_msg_data                => l_msg_data,
5871          p_PRICE_LIST_rec         => p_price_list_rec,
5872          p_PRICE_LIST_val_rec        => p_PRICE_LIST_val_rec,
5873          p_PRICE_LIST_LINE_tbl       => p_PRICE_LIST_LINE_tbl ,
5874          p_PRICE_LIST_LINE_val_tbl   => p_PRICE_LIST_LINE_val_tbl  ,
5875          p_QUALIFIERS_tbl            => p_QUALIFIERS_tbl,
5876          p_QUALIFIERS_val_tbl        => p_QUALIFIERS_val_tbl,
5877          p_PRICING_ATTR_tbl          => p_PRICING_ATTR_tbl,
5878          p_PRICING_ATTR_val_tbl      => p_PRICING_ATTR_val_tbl,
5879          x_PRICE_LIST_rec            => l_PRICE_LIST_rec,
5880          x_PRICE_LIST_val_rec        => l_PRICE_LIST_val_rec,
5881          x_PRICE_LIST_LINE_tbl       => l_PRICE_LIST_LINE_tbl ,
5882          x_PRICE_LIST_LINE_val_tbl   => l_PRICE_LIST_LINE_val_tbl  ,
5883          x_QUALIFIERS_tbl            => l_QUALIFIERS_tbl,
5884          x_QUALIFIERS_val_tbl        => l_QUALIFIERS_val_tbl,
5885          x_PRICING_ATTR_tbl          => l_PRICING_ATTR_tbl,
5886          x_PRICING_ATTR_val_tbl      => l_PRICING_ATTR_val_tbl
5887    );
5888 
5889    x_pricelist_header_id := l_PRICE_LIST_rec.list_header_id;
5890     x_return_status := l_return_status;
5891 
5892    -- dbms_output.put_line('The value of x_pricelist_header_id is ' || x_pricelist_header_id);
5893 
5894 
5895    IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
5896        RAISE FND_API.g_exc_unexpected_error;
5897    ELSIF l_return_status = FND_API.g_ret_sts_error THEN
5898        RAISE FND_API.g_exc_error;
5899    END IF;
5900 
5901 EXCEPTION
5902 
5903    WHEN FND_API.g_exc_error THEN
5904       x_return_status := FND_API.g_ret_sts_error;
5905       FND_MSG_PUB.count_and_get(
5906             p_encoded => FND_API.g_false,
5907             p_count   => x_msg_count,
5908             p_data    => x_msg_data
5909       );
5910 
5911    WHEN FND_API.g_exc_unexpected_error THEN
5912       x_return_status := FND_API.g_ret_sts_unexp_error ;
5913       FND_MSG_PUB.count_and_get(
5914             p_encoded => FND_API.g_false,
5915             p_count   => x_msg_count,
5916             p_data    => x_msg_data
5917       );
5918 
5919    WHEN OTHERS THEN
5920       x_return_status := FND_API.g_ret_sts_unexp_error;
5921       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
5922       THEN
5923          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
5924       END IF;
5925       FND_MSG_PUB.count_and_get(
5926             p_encoded => FND_API.g_false,
5927             p_count   => x_msg_count,
5928             p_data    => x_msg_data
5929       );
5930 
5931 END create_pricelist_header;
5932 
5933 ---------------------------------------------------------------------
5934 -- PROCEDURE
5935 --    create_pricelist_line
5936 --
5937 -- HISTORY
5938 --    03/04/2000  sugupta  Create.
5939 --    05/17/2000  sugupta   modifed
5940 ---------------------------------------------------------------------
5941 
5942 PROCEDURE create_pricelist_line
5943 (
5944   p_api_version             IN  NUMBER,
5945   p_init_msg_list           IN  VARCHAR2 := FND_API.g_false,
5946   p_return_values           IN  VARCHAR2 := FND_API.g_false,
5947   p_commit                  IN  VARCHAR2 := FND_API.g_false,
5948   p_price_hdr_id            IN  NUMBER,
5949   p_evo_rec               IN   evo_rec_type,
5950   x_return_status           OUT NOCOPY VARCHAR2,
5951   x_msg_count               OUT NOCOPY NUMBER,
5952   x_msg_data                OUT NOCOPY VARCHAR2,
5953   x_pricelist_line_id       OUT NOCOPY NUMBER
5954 )
5955 IS
5956    l_api_version            CONSTANT NUMBER       := 1.0;
5957    l_api_name               CONSTANT VARCHAR2(30) := 'create_pricelist_line';
5958    l_full_name              CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
5959 
5960    l_return_status          VARCHAR2(1);
5961    l_msg_count              NUMBER;
5962    l_msg_data               VARCHAR2(2000);
5963 
5964    p_price_list_rec         qp_price_list_pub.price_list_rec_type;
5965    p_price_list_val_rec      qp_price_list_pub.price_list_val_rec_type;
5966    p_price_list_line_tbl          qp_price_list_pub.price_list_line_tbl_type;
5967    p_price_list_line_val_tbl      qp_price_list_pub.price_list_line_val_tbl_type;
5968    p_qualifiers_tbl         qp_qualifier_rules_pub.qualifiers_tbl_type;
5969    p_qualifiers_val_tbl     qp_qualifier_rules_pub.qualifiers_val_tbl_type;
5970    p_pricing_attr_tbl       qp_price_list_pub.pricing_attr_tbl_type;
5971    p_pricing_attr_val_tbl   qp_price_list_pub.pricing_attr_val_tbl_type;
5972 
5973    l_price_list_rec         qp_price_list_pub.price_list_rec_type;
5974    l_price_list_val_rec      qp_price_list_pub.price_list_val_rec_type;
5975    l_price_list_line_tbl          qp_price_list_pub.price_list_line_tbl_type;
5976    l_price_list_line_val_tbl      qp_price_list_pub.price_list_line_val_tbl_type;
5977    l_qualifiers_tbl         qp_qualifier_rules_pub.qualifiers_tbl_type;
5978    l_qualifiers_val_tbl     qp_qualifier_rules_pub.qualifiers_val_tbl_type;
5979    l_pricing_attr_tbl       qp_price_list_pub.pricing_attr_tbl_type;
5980    l_pricing_attr_val_tbl   qp_price_list_pub.pricing_attr_val_tbl_type;
5981 
5982 BEGIN
5983 
5984    --dbms_output.put_line('create List line called');
5985    x_return_status := FND_API.g_ret_sts_success;
5986 
5987    p_price_list_line_tbl(1).list_header_id := p_price_hdr_id;
5988    --dbms_output.put_line('p_price_hdr_id: '||p_price_hdr_id);
5989    p_price_list_line_tbl(1).list_line_type_code := 'PLL';
5990    p_price_list_line_tbl(1).base_uom_code := 'EA';
5991    p_price_list_line_tbl(1).created_by := p_evo_rec.owner_user_id;
5992    p_price_list_line_tbl(1).inventory_item_id := p_evo_rec.inventory_item_id;
5993    p_price_list_line_tbl(1).start_date_active := p_evo_rec.event_start_date;
5994    p_price_list_line_tbl(1).end_date_active := p_evo_rec.event_end_date;
5995    p_price_list_line_tbl(1).organization_id := p_evo_rec.organization_id;
5996    p_price_list_line_tbl(1).operation :=QP_GLOBALS.G_OPR_CREATE;
5997    --p_price_list_line_tbl(1).automatic_flag := 'Y';
5998    -- modified sugupta 4th of July 2000
5999    if p_evo_rec.PRICELIST_LIST_PRICE is NULL or p_evo_rec.PRICELIST_LIST_PRICE = FND_API.g_miss_num then
6000       p_price_list_line_tbl(1).operand := 0;
6001    else
6002       p_price_list_line_tbl(1).operand := p_evo_rec.PRICELIST_LIST_PRICE;
6003    end if;
6004 
6005     p_price_list_line_tbl(1).arithmetic_operator := 'UNIT_PRICE';
6006    /* as per pricing team, usage of list_price column and percent_price column is obsolete.
6007    if p_evo_rec.PRICELIST_LIST_PRICE is NULL or p_evo_rec.PRICELIST_LIST_PRICE = FND_API.g_miss_num then
6008       p_price_list_line_tbl(1).list_price := 0;
6009    else
6010       p_price_list_line_tbl(1).list_price := p_evo_rec.PRICELIST_LIST_PRICE;
6011    end if;
6012 */
6013 -- modified sugupta 06/21/2000 added code to populate pricing attributes tbl
6014 
6015    p_pricing_attr_tbl(1).product_attribute_context:= 'ITEM';
6016    p_pricing_attr_tbl(1).product_attribute:= 'PRICING_ATTRIBUTE1';
6017    p_pricing_attr_tbl(1).product_attr_value:= p_evo_rec.inventory_item_id;
6018    p_pricing_attr_tbl(1).product_uom_code:= 'Ea';
6019    p_pricing_attr_tbl(1).excluder_flag:= 'N';
6020    p_pricing_attr_tbl(1).comparison_operator_code:= '=';
6021    p_pricing_attr_tbl(1).PRICE_LIST_LINE_index :=1;
6022    p_pricing_attr_tbl(1).operation := QP_GLOBALS.G_OPR_CREATE;
6023 
6024    IF (AMS_DEBUG_HIGH_ON) THEN
6025 
6026 
6027 
6028        AMS_Utility_PVT.debug_message(l_full_name ||': create pricelist line...');
6029 
6030    END IF;
6031 
6032    QP_PRICE_LIST_PUB.Process_Price_List(
6033            p_api_version_number      => 1.0,
6034            p_init_msg_list           => FND_API.G_TRUE,
6035            p_return_values           => FND_API.G_TRUE,
6036            p_commit                  => FND_API.G_TRUE,
6037            x_return_status           => l_return_status,
6038            x_msg_count               => l_msg_count,
6039            x_msg_data                => l_msg_data,
6040          p_PRICE_LIST_rec         => p_price_list_rec,
6041          p_PRICE_LIST_val_rec        => p_PRICE_LIST_val_rec,
6042          p_PRICE_LIST_LINE_tbl       => p_PRICE_LIST_LINE_tbl ,
6043          p_PRICE_LIST_LINE_val_tbl   => p_PRICE_LIST_LINE_val_tbl  ,
6044          p_QUALIFIERS_tbl            => p_QUALIFIERS_tbl,
6045          p_QUALIFIERS_val_tbl        => p_QUALIFIERS_val_tbl,
6046          p_PRICING_ATTR_tbl          => p_PRICING_ATTR_tbl,
6047          p_PRICING_ATTR_val_tbl      => p_PRICING_ATTR_val_tbl,
6048          x_PRICE_LIST_rec            => l_PRICE_LIST_rec,
6049          x_PRICE_LIST_val_rec        => l_PRICE_LIST_val_rec,
6050          x_PRICE_LIST_LINE_tbl       => l_PRICE_LIST_LINE_tbl ,
6051          x_PRICE_LIST_LINE_val_tbl   => l_PRICE_LIST_LINE_val_tbl  ,
6052          x_QUALIFIERS_tbl            => l_QUALIFIERS_tbl,
6053          x_QUALIFIERS_val_tbl        => l_QUALIFIERS_val_tbl,
6054          x_PRICING_ATTR_tbl          => l_PRICING_ATTR_tbl,
6055          x_PRICING_ATTR_val_tbl      => l_PRICING_ATTR_val_tbl
6056    );
6057 
6058    x_pricelist_line_id := l_PRICE_LIST_LINE_tbl(1).list_line_id;
6059    x_return_status := l_return_status;
6060 
6061    IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
6062        RAISE FND_API.g_exc_unexpected_error;
6063    ELSIF l_return_status = FND_API.g_ret_sts_error THEN
6064        RAISE FND_API.g_exc_error;
6065    END IF;
6066 
6067 EXCEPTION
6068 
6069    WHEN FND_API.g_exc_error THEN
6070       x_return_status := FND_API.g_ret_sts_error;
6071       FND_MSG_PUB.count_and_get(
6072             p_encoded => FND_API.g_false,
6073             p_count   => x_msg_count,
6074             p_data    => x_msg_data
6075       );
6076 
6077    WHEN FND_API.g_exc_unexpected_error THEN
6078       x_return_status := FND_API.g_ret_sts_unexp_error ;
6079       FND_MSG_PUB.count_and_get(
6080             p_encoded => FND_API.g_false,
6081             p_count   => x_msg_count,
6082             p_data    => x_msg_data
6083       );
6084 
6085    WHEN OTHERS THEN
6086       x_return_status := FND_API.g_ret_sts_unexp_error;
6087       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
6088       THEN
6089          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
6090       END IF;
6091 
6092       FND_MSG_PUB.count_and_get(
6093             p_encoded => FND_API.g_false,
6094             p_count   => x_msg_count,
6095             p_data    => x_msg_data
6096       );
6097 
6098 END create_pricelist_line;
6099 
6100 /*=================================================*/
6101 
6102 PROCEDURE copy_ev_header_to_offer(
6103       p_api_version         IN       NUMBER,
6104       p_init_msg_list       IN       VARCHAR2 := fnd_api.g_false,
6105       x_return_status       OUT NOCOPY      VARCHAR2,
6106       x_msg_count           OUT NOCOPY      NUMBER,
6107       x_msg_data            OUT NOCOPY      VARCHAR2,
6108       x_evo_rec             OUT NOCOPY      evo_rec_type,
6109       p_src_evh_id         IN       NUMBER,
6110       p_evo_rec            IN       evo_rec_type
6111 ) IS
6112      -- p_eveo_elements_rec   IN       eveo_elements_rec_type,
6113       l_api_version   CONSTANT NUMBER       := 1.0;
6114       l_api_name      CONSTANT VARCHAR2(30) := 'copy_ev_header_to_offer';
6115       l_full_name     CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
6116       l_return_status          VARCHAR2(1);
6117       -- variables for the OUT parameters of the called create procedures
6118       --l_eveo_ele_rec           eveo_elements_rec_type;
6119       l_name                   VARCHAR2(80);
6120       l_msg_count              NUMBER;   -- variables for the OUT parameters of the called create procedures
6121       l_msg_data               VARCHAR2(512);   -- variables for the OUT parameters of the called create procedures
6122 
6123       l_evo_rec               ams_eventoffer_pvt.evo_rec_type := p_evo_rec;
6124 
6125       l_mesg_text              VARCHAR2(2000);
6126       p_errmsg                 VARCHAR2(3000);
6127       l_eventheader_rec         ams_event_headers_vl%ROWTYPE;
6128 
6129       l_lookup_meaning         VARCHAR2(80);
6130      l_dummy   VARCHAR2(1);
6131 
6132      CURSOR c_get_header_info IS
6133         SELECT *
6134          FROM ams_event_headers_vl
6135          WHERE event_header_id = p_src_evh_id;
6136 
6137       CURSOR c_setup_resp(id_in IN NUMBER) IS
6138          SELECT 'x'
6139          FROM ams_custom_setup_attr
6140          WHERE custom_setup_id = nvl(id_in, 1006)
6141        and OBJECT_ATTRIBUTE = 'RESP';
6142    BEGIN
6143       SAVEPOINT copy_ev_header_to_offer;
6144       IF (AMS_DEBUG_HIGH_ON) THEN
6145 
6146           ams_utility_pvt.debug_message(l_full_name || ': start');
6147       END IF;
6148 
6149       IF fnd_api.to_boolean(p_init_msg_list)
6150       THEN
6151          fnd_msg_pub.initialize;
6152       END IF;
6153 
6154       IF NOT fnd_api.compatible_api_call(
6155             l_api_version,
6156             p_api_version,
6157             l_api_name,
6158             g_pkg_name)
6159       THEN
6160          RAISE fnd_api.g_exc_unexpected_error;
6161       END IF;
6162 
6163       x_return_status := fnd_api.g_ret_sts_success;
6164       ----------------------- insert -----------------------
6165       IF (AMS_DEBUG_HIGH_ON) THEN
6166 
6167           ams_utility_pvt.debug_message(l_full_name || ': start');
6168       END IF;
6169 
6170          ams_utility_pvt.get_lookup_meaning(
6171             'AMS_SYS_ARC_QUALIFIER',
6172             'EVEH',
6173             l_return_status,
6174             l_lookup_meaning);
6175 --  General Message saying copying has started
6176          fnd_message.set_name('AMS', 'AMS_COPY_ELEMENTS');
6177          fnd_message.set_token('ELEMENTS', l_lookup_meaning, TRUE);
6178          l_mesg_text := fnd_message.get;
6179 -- Writing to the Pl/SQLtable
6180          ams_cpyutility_pvt.write_log_mesg('EVEH', p_src_evh_id, l_mesg_text, 'GENERAL');
6181          l_return_status := NULL;
6182          l_msg_count := 0;
6183          l_msg_data := NULL;
6184 -- selects the event offers to copy
6185 
6186       OPEN c_get_header_info;
6187       FETCH c_get_header_info into l_eventheader_rec;
6188       IF (c_get_header_info%NOTFOUND) THEN
6189            CLOSE c_get_header_info;
6190            IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6191              FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
6192              FND_MSG_PUB.add;
6193            END IF;
6194            RAISE FND_API.g_exc_error;
6195        END IF;
6196 
6197       CLOSE c_get_header_info;
6198 
6199          --l_evo_rec.object_version_number := 1;
6200          --l_evo_rec.application_id := l_eventheader_rec.application_id;
6201          --l_evo_rec.event_header_id := p_src_evh_id;
6202            l_evo_rec.private_flag := l_eventheader_rec.private_flag;
6203 
6204          --l_evo_rec.event_level := l_eventheader_rec.event_level;
6205          --l_evo_rec.user_status_id := l_eventheader_rec.user_status_id;
6206          --l_evo_rec.system_status_code := 'NEW';
6207          --l_evo_rec.event_type_code := l_eventheader_rec.event_type_code;
6208 
6209          if l_evo_rec.event_language_code is NULL then
6210             l_evo_rec.event_language_code := l_eventheader_rec.main_language_code;
6211          end if;
6212 
6213          l_evo_rec.overflow_flag := l_eventheader_rec.overflow_flag;
6214          l_evo_rec.partner_flag := l_eventheader_rec.partner_flag;
6215          l_evo_rec.event_standalone_flag := l_eventheader_rec.event_standalone_flag;
6216          l_evo_rec.event_object_type := 'EVEO';
6217          l_evo_rec.reg_required_flag := 'Y';
6218 
6219 
6220          -- Bug # 2452649 as the following flags were removed from Event Header
6221         --  l_evo_rec.reg_charge_flag := l_eventheader_rec.reg_charge_flag;
6222         --  l_evo_rec.reg_invited_only_flag := l_eventheader_rec.reg_invited_only_flag;
6223 
6224          if l_evo_rec.event_duration is NULL then
6225             l_evo_rec.event_duration := l_eventheader_rec.duration;
6226          end if;
6227 
6228          if l_evo_rec.event_duration_uom_code is NULL then
6229             l_evo_rec.event_duration_uom_code := l_eventheader_rec.duration_uom_code;
6230          end if;
6231 
6232          l_evo_rec.reg_maximum_capacity := l_eventheader_rec.reg_maximum_capacity;
6233          l_evo_rec.reg_minimum_capacity := l_eventheader_rec.reg_minimum_capacity;
6234          l_evo_rec.organization_id := l_eventheader_rec.organization_id;
6235          l_evo_rec.org_id := l_eventheader_rec.org_id;
6236          l_evo_rec.stream_type_code := l_eventheader_rec.stream_type_code;
6237 
6238          l_evo_rec.event_full_flag := 'N';
6239          -- source code will be uniquely generated if its passed a snull from the screen
6240          --l_evo_rec.source_code := p_source_code;
6241 
6242          l_evo_rec.cert_credit_type_code := l_eventheader_rec.cert_credit_type_code;
6243          l_evo_rec.certification_credits := l_eventheader_rec.certification_credits;
6244          l_evo_rec.coordinator_id := l_eventheader_rec.coordinator_id;
6245 
6246          if l_evo_rec.priority_type_code is NULL then
6247             l_evo_rec.priority_type_code := l_eventheader_rec.priority_type_code;
6248         end if;
6249 
6250     open c_setup_resp(p_evo_rec.custom_setup_id);
6251     fetch c_setup_resp into l_dummy;
6252     if (l_dummy = 'x') then
6253        l_evo_rec.email := l_eventheader_rec.email;
6254        l_evo_rec.phone := l_eventheader_rec.phone;
6255        l_evo_rec.url := l_eventheader_rec.url;
6256        l_evo_rec.inbound_script_name := l_eventheader_rec.inbound_script_name;
6257    end if;
6258 
6259    close c_setup_resp;
6260 
6261    if l_evo_rec.DESCRIPTION is NULL then
6262       l_evo_rec.DESCRIPTION := l_eventheader_rec.DESCRIPTION;
6263    end if;
6264 
6265          l_evo_rec.attribute_category := l_eventheader_rec.attribute_category;
6266          l_evo_rec.attribute1 := l_eventheader_rec.attribute1;
6267          l_evo_rec.attribute2 := l_eventheader_rec.attribute2;
6268          l_evo_rec.attribute3 := l_eventheader_rec.attribute3;
6269          l_evo_rec.attribute4 := l_eventheader_rec.attribute4;
6270          l_evo_rec.attribute5 := l_eventheader_rec.attribute5;
6271          l_evo_rec.attribute6 := l_eventheader_rec.attribute6;
6272          l_evo_rec.attribute7 := l_eventheader_rec.attribute7;
6273          l_evo_rec.attribute8 := l_eventheader_rec.attribute8;
6274          l_evo_rec.attribute9 := l_eventheader_rec.attribute9;
6275          l_evo_rec.attribute10 := l_eventheader_rec.attribute10;
6276          l_evo_rec.attribute11 := l_eventheader_rec.attribute11;
6277          l_evo_rec.attribute12 := l_eventheader_rec.attribute12;
6278          l_evo_rec.attribute13 := l_eventheader_rec.attribute13;
6279          l_evo_rec.attribute14 := l_eventheader_rec.attribute14;
6280          l_evo_rec.attribute15 := l_eventheader_rec.attribute15;
6281 
6282    x_evo_rec := l_evo_rec;
6283 
6284       EXCEPTION
6285       WHEN fnd_api.g_exc_error
6286       THEN
6287          ROLLBACK TO copy_ev_header_to_offer;
6288          x_return_status := fnd_api.g_ret_sts_error;
6289          fnd_msg_pub.count_and_get(
6290             p_encoded => fnd_api.g_false,
6291             p_count => x_msg_count,
6292             p_data => x_msg_data);
6293       WHEN fnd_api.g_exc_unexpected_error
6294       THEN
6295          ROLLBACK TO copy_ev_header_to_offer;
6296          x_return_status := fnd_api.g_ret_sts_unexp_error;
6297          IF (AMS_DEBUG_HIGH_ON) THEN
6298 
6299              ams_utility_pvt.debug_message(l_full_name || ': debug');
6300          END IF;
6301          fnd_msg_pub.count_and_get(
6302             p_encoded => fnd_api.g_false,
6303             p_count => x_msg_count,
6304             p_data => x_msg_data);
6305       WHEN OTHERS THEN
6306       IF (c_get_header_info%ISOPEN) THEN
6307             CLOSE c_get_header_info;
6308       END IF;
6309       IF (c_setup_resp%ISOPEN) THEN
6310             CLOSE c_setup_resp;
6311       END IF;
6312 
6313          ROLLBACK TO copy_ev_header_to_offer;
6314          x_return_status := fnd_api.g_ret_sts_unexp_error;
6315 
6316          IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error)
6317          THEN
6318             fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
6319          END IF;
6320 
6321          fnd_msg_pub.count_and_get(
6322             p_encoded => fnd_api.g_false,
6323             p_count => x_msg_count,
6324             p_data => x_msg_data);
6325    END copy_ev_header_to_offer;
6326 
6327 /*======================================================================*/
6328      PROCEDURE copy_ev_header_associations(
6329       p_api_version         IN       NUMBER,
6330       p_init_msg_list       IN       VARCHAR2 := fnd_api.g_false,
6331      p_commit            IN       VARCHAR2 := fnd_api.g_false,
6332       p_validation_level    IN       NUMBER   := FND_API.g_valid_level_full,
6333      x_return_status       OUT NOCOPY      VARCHAR2,
6334       x_msg_count           OUT NOCOPY      NUMBER,
6335       x_msg_data            OUT NOCOPY      VARCHAR2,
6336      x_transaction_id      OUT NOCOPY       NUMBER,
6337       p_src_evh_id         IN       NUMBER,
6338       p_evo_id            IN       NUMBER,
6339      p_setup_id         IN       NUMBER)
6340      -- p_eveo_elements_rec   IN       eveo_elements_rec_type,
6341    IS
6342       l_api_version   CONSTANT NUMBER       := 1.0;
6343       l_api_name      CONSTANT VARCHAR2(30) := 'copy_ev_header_associations';
6344       l_full_name     CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
6345       l_return_status          VARCHAR2(1);
6346       -- variables for the OUT parameters of the called create procedures
6347       l_eveo_ele_rec           ams_copyactivities_pvt.eveo_elements_rec_type;
6348       l_msg_count              NUMBER;   -- variables for the OUT parameters of the called create procedures
6349       l_msg_data               VARCHAR2(512);   -- variables for the OUT parameters of the called create procedures
6350 
6351       l_mesg_text              VARCHAR2(2000);
6352       p_errmsg                 VARCHAR2(3000);
6353 
6354       l_errcode                VARCHAR2(80);
6355       l_errnum                 NUMBER;
6356       l_errmsg                 VARCHAR2(3000);
6357       l_eveo_ele_rec2         ams_copyactivities_pvt.eveo_elements_rec_type;
6358       x_sub_evo_id            NUMBER;   -- variables for the OUT parameters of the called copy campaign procedures while copying sub_campaign
6359       l_evo_count             NUMBER;
6360       l_lookup_meaning         VARCHAR2(80);
6361 
6362      CURSOR sub_eveh_cur
6363       IS
6364          SELECT event_header_id
6365          FROM ams_event_headers_vl
6366          WHERE parent_event_header_id = p_src_evh_id;
6367 
6368    CURSOR c_header_resp IS
6369       SELECT attribute_defined_flag
6370       FROM ams_object_attributes
6371       WHERE object_type = 'EVEH'
6372       AND   object_id  = p_src_evh_id
6373       AND     object_attribute = 'RESP';
6374 
6375 
6376    CURSOR c_get_attr(l_setup_id IN NUMBER) IS
6377    SELECT object_attribute
6378    FROM  ams_custom_setup_attr
6379    WHERE  custom_setup_id = l_setup_id;
6380 
6381    TYPE t_obj_attr IS TABLE OF c_get_attr%ROWTYPE
6382    INDEX BY BINARY_INTEGER;
6383 
6384    l_obj_attr t_obj_attr;
6385    l_attr   c_get_attr%ROWTYPE;
6386    l_total   NUMBER;
6387    l_association_copied NUMBER := 0;
6388    l_header_resp  VARCHAR2(1);
6389    l_object_type VARCHAR2(4) := 'EVEO';
6390    l_object_id NUMBER := p_evo_id;
6391 
6392    BEGIN
6393       SAVEPOINT copy_ev_header_associations;
6394       IF (AMS_DEBUG_HIGH_ON) THEN
6395 
6396           ams_utility_pvt.debug_message(l_full_name || ': start');
6397       END IF;
6398 
6399       IF fnd_api.to_boolean(p_init_msg_list)
6400       THEN
6401          fnd_msg_pub.initialize;
6402       END IF;
6403 
6404       IF NOT fnd_api.compatible_api_call(
6405             l_api_version,
6406             p_api_version,
6407             l_api_name,
6408             g_pkg_name)
6409       THEN
6410          RAISE fnd_api.g_exc_unexpected_error;
6411       END IF;
6412 
6413       x_return_status := fnd_api.g_ret_sts_success;
6414       ----------------------- insert -----------------------
6415 
6416       IF (AMS_DEBUG_HIGH_ON) THEN
6417 
6418 
6419 
6420           ams_utility_pvt.debug_message(l_full_name || ': start');
6421 
6422       END IF;
6423      -- refresh the log
6424 
6425      AMS_CPYutility_pvt.refresh_log_mesg;
6426 
6427          ams_utility_pvt.get_lookup_meaning(
6428             'AMS_SYS_ARC_QUALIFIER',
6429             'EVEH',
6430             l_return_status,
6431             l_lookup_meaning);
6432 --  General Message saying copying has started
6433          fnd_message.set_name('AMS', 'AMS_COPY_ELEMENTS');
6434          fnd_message.set_token('ELEMENTS', l_lookup_meaning, TRUE);
6435          l_mesg_text := fnd_message.get;
6436 -- Writing to the Pl/SQLtable
6437          ams_cpyutility_pvt.write_log_mesg('EVEH', p_src_evh_id, l_mesg_text, 'GENERAL');
6438          l_return_status := NULL;
6439          l_msg_count := 0;
6440          l_msg_data := NULL;
6441 
6442    l_total := 0;
6443 
6444    OPEN c_get_attr(p_setup_id);
6445    LOOP
6446        FETCH c_get_attr INTO l_attr ;
6447        EXIT WHEN c_get_attr%NOTFOUND ;
6448        l_obj_attr(l_total) := l_attr ;
6449        l_total := l_total + 1 ;
6450    END LOOP;
6451    CLOSE c_get_attr;
6452 
6453    if l_total = 0 then
6454       return;
6455    end if;
6456 
6457    FOR i in 1..l_total LOOP
6458      if l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'MESG' then
6459             l_errcode := NULL;
6460             l_errnum := 0;
6461             l_errmsg := NULL;
6462             ams_copyelements_pvt.copy_act_messages(
6463                            'EVEH',
6464                            'EVEO',
6465                            p_src_evh_id,
6466                            p_evo_id,
6467                            l_errnum,
6468                            l_errcode,
6469                            l_errmsg);
6470 
6471          if (AMS_EventOffer_PVT.check_association_exists(l_object_type,l_object_id,'MESG',NULL)
6472                = FND_API.g_true) then
6473 
6474                     AMS_ObjectAttribute_PVT.modify_object_attribute(
6475                        p_api_version        => p_api_version,
6476                        p_init_msg_list      => p_init_msg_list,
6477                        p_commit             => p_commit,
6478                        p_validation_level   => p_validation_level,
6479 
6480                        x_return_status      => x_return_status,
6481                        x_msg_count          => x_msg_count,
6482                        x_msg_data           => x_msg_data,
6483 
6484                        p_object_type        => l_object_type,
6485                        p_object_id          => l_object_id,
6486                        p_attr               => 'MESG',
6487                        p_attr_defined_flag  => 'Y'
6488                      );
6489        end if;
6490       end if;
6491      if l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'PROD' then
6492             l_errcode := NULL;
6493             l_errnum := 0;
6494             l_errmsg := NULL;
6495             ams_copyelements_pvt.copy_act_prod(
6496                            'EVEH',
6497                            'EVEO',
6498                            p_src_evh_id,
6499                            p_evo_id,
6500                            l_errnum,
6501                            l_errcode,
6502                            l_errmsg);
6503 
6504          if (AMS_EventOffer_PVT.check_association_exists(l_object_type,l_object_id,'PROD',NULL)
6505                = FND_API.g_true) then
6506 
6507                     AMS_ObjectAttribute_PVT.modify_object_attribute(
6508                        p_api_version        => p_api_version,
6509                        p_init_msg_list      => p_init_msg_list,
6510                        p_commit             => p_commit,
6511                        p_validation_level   => p_validation_level,
6512 
6513                        x_return_status      => x_return_status,
6514                        x_msg_count          => x_msg_count,
6515                        x_msg_data           => x_msg_data,
6516 
6517                        p_object_type        => l_object_type,
6518                        p_object_id          => l_object_id,
6519                        p_attr               => 'PROD',
6520                        p_attr_defined_flag  => 'Y'
6521                      );
6522        end if;
6523       end if;
6524      if ((l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'CAMP') OR (l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'DELV')) then
6525       if (l_association_copied = 0) then
6526             l_errcode := NULL;
6527             l_errnum := 0;
6528             l_errmsg := NULL;
6529             ams_copyelements_pvt.copy_object_associations(
6530                            'EVEH',
6531                            'EVEO',
6532                            p_src_evh_id,
6533                            p_evo_id,
6534                            l_errnum,
6535                            l_errcode,
6536                            l_errmsg);
6537          l_association_copied := l_association_copied + 1;
6538       end if;
6539       if l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'CAMP' then
6540          if (AMS_EventOffer_PVT.check_association_exists(l_object_type,l_object_id,'CAMP',NULL)
6541                = FND_API.g_true) then
6542 
6543                     AMS_ObjectAttribute_PVT.modify_object_attribute(
6544                        p_api_version        => p_api_version,
6545                        p_init_msg_list      => p_init_msg_list,
6546                        p_commit             => p_commit,
6547                        p_validation_level   => p_validation_level,
6548 
6549                        x_return_status      => x_return_status,
6550                        x_msg_count          => x_msg_count,
6551                        x_msg_data           => x_msg_data,
6552 
6553                        p_object_type        => l_object_type,
6554                        p_object_id          => l_object_id,
6555                        p_attr               => 'CAMP',
6556                        p_attr_defined_flag  => 'Y'
6557                      );
6558          end if;
6559       elsif l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'DELV' then
6560          if (AMS_EventOffer_PVT.check_association_exists(l_object_type,l_object_id,'DELV',NULL)
6561                = FND_API.g_true) then
6562 
6563                     AMS_ObjectAttribute_PVT.modify_object_attribute(
6564                        p_api_version        => p_api_version,
6565                        p_init_msg_list      => p_init_msg_list,
6566                        p_commit             => p_commit,
6567                        p_validation_level   => p_validation_level,
6568 
6569                        x_return_status      => x_return_status,
6570                        x_msg_count          => x_msg_count,
6571                        x_msg_data           => x_msg_data,
6572 
6573                        p_object_type        => l_object_type,
6574                        p_object_id          => l_object_id,
6575                        p_attr               => 'DELV',
6576                        p_attr_defined_flag  => 'Y'
6577                      );
6578          end if;
6579       end if;
6580       end if;
6581      if l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'ATCH' then
6582             l_errcode := NULL;
6583             l_errnum := 0;
6584             l_errmsg := NULL;
6585             ams_copyelements_pvt.copy_act_attachments(
6586                            'EVEH',
6587                            'EVEO',
6588                            p_src_evh_id,
6589                            p_evo_id,
6590                            l_errnum,
6591                            l_errcode,
6592                            l_errmsg);
6593 
6594          if (AMS_EventOffer_PVT.check_association_exists(l_object_type,l_object_id,'ATCH',NULL)
6595                = FND_API.g_true) then
6596 
6597                     AMS_ObjectAttribute_PVT.modify_object_attribute(
6598                        p_api_version        => p_api_version,
6599                        p_init_msg_list      => p_init_msg_list,
6600                        p_commit             => p_commit,
6601                        p_validation_level   => p_validation_level,
6602 
6603                        x_return_status      => x_return_status,
6604                        x_msg_count          => x_msg_count,
6605                        x_msg_data           => x_msg_data,
6606 
6607                        p_object_type        => l_object_type,
6608                        p_object_id          => l_object_id,
6609                        p_attr               => 'ATCH',
6610                        p_attr_defined_flag  => 'Y'
6611                      );
6612        end if;
6613       end if;
6614       /*Commented by mukemar on may14 2002 we are not supporting the resource copy
6615      if l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'RESC' then
6616             l_errcode := NULL;
6617             l_errnum := 0;
6618             l_errmsg := NULL;
6619             ams_copyelements_pvt.copy_act_resources(
6620                            'EVEH',
6621                            'EVEO',
6622                            p_src_evh_id,
6623                            p_evo_id,
6624                            l_errnum,
6625                            l_errcode,
6626                            l_errmsg);
6627 
6628          if (AMS_EventOffer_PVT.check_association_exists(l_object_type,l_object_id,'RESC',NULL)
6629                = FND_API.g_true) then
6630 
6631                     AMS_ObjectAttribute_PVT.modify_object_attribute(
6632                        p_api_version        => p_api_version,
6633                        p_init_msg_list      => p_init_msg_list,
6634                        p_commit             => p_commit,
6635                        p_validation_level   => p_validation_level,
6636 
6637                        x_return_status      => x_return_status,
6638                        x_msg_count          => x_msg_count,
6639                        x_msg_data           => x_msg_data,
6640 
6641                        p_object_type        => l_object_type,
6642                        p_object_id          => l_object_id,
6643                        p_attr               => 'RESC',
6644                        p_attr_defined_flag  => 'Y'
6645                      );
6646        end if;
6647       end if;
6648       */
6649      if l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'CELL' then
6650             l_errcode := NULL;
6651             l_errnum := 0;
6652             l_errmsg := NULL;
6653             ams_copyelements_pvt.copy_act_market_segments(
6654                            'EVEH',
6655                            'EVEO',
6656                            p_src_evh_id,
6657                            p_evo_id,
6658                            l_errnum,
6659                            l_errcode,
6660                            l_errmsg);
6661 
6662          if (AMS_EventOffer_PVT.check_association_exists(l_object_type,l_object_id,'CELL',NULL)
6663                = FND_API.g_true) then
6664 
6665                     AMS_ObjectAttribute_PVT.modify_object_attribute(
6666                        p_api_version        => p_api_version,
6667                        p_init_msg_list      => p_init_msg_list,
6668                        p_commit             => p_commit,
6669                        p_validation_level   => p_validation_level,
6670 
6671                        x_return_status      => x_return_status,
6672                        x_msg_count          => x_msg_count,
6673                        x_msg_data           => x_msg_data,
6674 
6675                        p_object_type        => l_object_type,
6676                        p_object_id          => l_object_id,
6677                        p_attr               => 'CELL',
6678                        p_attr_defined_flag  => 'Y'
6679                      );
6680        end if;
6681       end if;
6682      if l_obj_attr(i-1).OBJECT_ATTRIBUTE = 'RESP' then
6683    -- resources would already have been copied in copy_ev_header_to_offer procedure..
6684    -- update object attribute if  ATTRIBUTE_DEFINED_FLAG  is Y for p_src_evh_id in ams_object_attributes
6685             open c_header_resp;
6686          fetch c_header_resp into l_header_resp;
6687          close c_header_resp;
6688 
6689          if l_header_resp = 'Y' then
6690                     AMS_ObjectAttribute_PVT.modify_object_attribute(
6691                        p_api_version        => p_api_version,
6692                        p_init_msg_list      => p_init_msg_list,
6693                        p_commit             => p_commit,
6694                        p_validation_level   => p_validation_level,
6695 
6696                        x_return_status      => x_return_status,
6697                        x_msg_count          => x_msg_count,
6698                        x_msg_data           => x_msg_data,
6699 
6700                        p_object_type        => l_object_type,
6701                        p_object_id          => l_object_id,
6702                        p_attr               => 'RESP',
6703                        p_attr_defined_flag  => 'Y'
6704                      );
6705          end if;
6706       end if;
6707    END LOOP;
6708 
6709 /*
6710          IF l_eveo_ele_rec.p_sub_eveh = 'Y'
6711          THEN
6712             FOR sub_eveh_rec IN sub_eveh_cur
6713             LOOP
6714                BEGIN
6715                   l_return_status := NULL;
6716                   l_msg_count := 0;
6717                   l_msg_data := NULL;
6718                   copy_event_header(
6719                      p_api_version => 1,
6720                      p_init_msg_list => fnd_api.g_true,
6721                      x_return_status => l_return_status,
6722                      x_msg_data => l_msg_data,
6723                      x_msg_count => l_msg_count,
6724                      p_src_evh_id => sub_eveh_rec.event_header_id,
6725                      p_new_eveh_name => NULL,
6726                      p_par_eveh_id => x_eveh_id,
6727                      x_eveh_id => x_sub_eveh_id,
6728                     --??? p_eveh_elements_rec => l_eveh_elements_rec,
6729                      p_start_date => p_start_date);
6730                END;
6731             END LOOP;
6732          END IF;
6733 
6734 */
6735        AMS_CPYutility_pvt.insert_log_mesg(x_transaction_id);
6736 
6737        EXCEPTION
6738       WHEN fnd_api.g_exc_error
6739       THEN
6740          ROLLBACK TO copy_ev_header_associations;
6741          x_return_status := fnd_api.g_ret_sts_error;
6742          fnd_msg_pub.count_and_get(
6743             p_encoded => fnd_api.g_false,
6744             p_count => x_msg_count,
6745             p_data => x_msg_data);
6746       WHEN fnd_api.g_exc_unexpected_error
6747       THEN
6748          ROLLBACK TO copy_ev_header_associations;
6749          x_return_status := fnd_api.g_ret_sts_unexp_error;
6750          IF (AMS_DEBUG_HIGH_ON) THEN
6751 
6752              ams_utility_pvt.debug_message(l_full_name || ': debug');
6753          END IF;
6754          fnd_msg_pub.count_and_get(
6755             p_encoded => fnd_api.g_false,
6756             p_count => x_msg_count,
6757             p_data => x_msg_data);
6758       WHEN OTHERS
6759       THEN
6760       IF (c_header_resp%ISOPEN) THEN
6761             CLOSE c_header_resp;
6762       END IF;
6763 
6764          ROLLBACK TO copy_ev_header_associations;
6765          x_return_status := fnd_api.g_ret_sts_unexp_error;
6766 
6767          IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error)
6768          THEN
6769             fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
6770          END IF;
6771 
6772          fnd_msg_pub.count_and_get(
6773             p_encoded => fnd_api.g_false,
6774             p_count => x_msg_count,
6775             p_data => x_msg_data);
6776    END copy_ev_header_associations;
6777 
6778 /*********************** server side TEST CASE *****************************************/
6779 
6780 -- Start of Comments
6781 --
6782 -- NAME
6783 --   Unit_Test_Insert
6784 --   Unit_Test_Delete
6785 --   Unit_Test_Update
6786 --   Unit_Test_Lock
6787 --
6788 -- PURPOSE
6789 --   These procedures are to test each procedure that satisfy caller needs
6790 --
6791 -- NOTES
6792 -- End of Comments
6793 
6794 --********************************************************
6795 PROCEDURE Unit_Test_Insert
6796 IS
6797 
6798    -- local variables
6799       l_evo_rec         AMS_EVENTOFFER_PVT.evo_rec_type;
6800         l_return_status         VARCHAR2(1);
6801         l_msg_count         NUMBER;
6802         l_msg_data         VARCHAR2(200);
6803         l_evo_id      AMS_event_offers_all_b.event_offer_id%type;
6804 
6805   BEGIN
6806 --AMS_EVENTOFFER_PVT.init_evo_rec(l_evo_rec);
6807 --   l_evo_rec.source_code:= 'CAMP101';
6808    L_EVO_REC.EVENT_OFFER_NAME := 'HIJACK CRISIS OVER NO PARTY';
6809    l_evo_rec.event_level := 'MAIN';
6810    l_evo_rec.user_status_id := 100;
6811      l_evo_rec.event_start_date_time := to_date('15:30', 'HH24:MI');
6812      l_evo_rec.event_end_date_time := to_date('18:55', 'HH24:MI');
6813    l_evo_rec.reg_maximum_capacity := 100;
6814    l_evo_rec.reg_minimum_capacity := 10;
6815    l_evo_rec.reg_overbook_pct := 10;
6816    l_evo_rec.reg_waitlist_pct := 10;
6817    l_evo_rec.stream_type_code := 'A';
6818    l_evo_rec.owner_user_id := 101;
6819    l_evo_rec.system_status_code := 'PLANNING';
6820  l_evo_rec.application_id := 530;
6821    l_evo_rec.event_type_code := 'SEMINAR';
6822    l_evo_rec.priority_type_code := 'HIGH';
6823 --  l_evo_rec.object_version_number := 5;
6824   l_evo_rec.event_header_id := 1001;
6825 
6826    --dbms_output.put_line('Call AMS_EVENTOFFER_PVT.UPDATE_offer');
6827 
6828         AMS_EVENTOFFER_PVT.create_event_offer(
6829          p_api_version         => 1.0 -- p_api_version
6830         ,p_init_msg_list      => FND_API.G_FALSE
6831         ,p_commit         => FND_API.G_FALSE
6832         ,p_validation_level      => FND_API.G_VALID_LEVEL_FULL
6833       ,p_evo_rec         => l_evo_rec
6834         ,x_return_status      => l_return_status
6835         ,x_msg_count         => l_msg_count
6836         ,x_msg_data         => l_msg_data
6837         ,x_evo_id         => l_evo_id
6838         );
6839 
6840        IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
6841       --dbms_output.put_line(l_return_status);
6842       --dbms_output.put_line(l_msg_count);
6843       AMS_UTILITY_PVT.display_messages;
6844       --dbms_output.put_line('AMS_EVENTOFFER_PVT.update ERROR');
6845        ELSE
6846       commit work;
6847       --dbms_output.put_line(l_return_status);
6848       AMS_UTILITY_PVT.display_messages;
6849       END IF;
6850 
6851 END Unit_Test_Insert;
6852 
6853 --********************************************************
6854 
6855 PROCEDURE create_global_pricing(
6856    p_evo_rec        IN OUT NOCOPY evo_rec_type,
6857    x_return_status  OUT NOCOPY VARCHAR2
6858 )
6859 IS
6860    l_api_version CONSTANT NUMBER := 1.0;
6861    l_qp_profile    VARCHAR2(1);
6862    l_evo_rec        evo_rec_type;
6863    l_return_status VARCHAR2(1);
6864    l_pricelist_header_id  NUMBER;
6865    l_msg_count     NUMBER;
6866    l_msg_data      VARCHAR2(512);
6867 
6868 
6869    CURSOR c_pricelist_header_id(curr_code IN VARCHAR2) IS
6870    SELECT distinct(pricelist_header_id)
6871    FROM ams_event_offers_all_b evo, qp_price_lists_v qph
6872    WHERE evo.pricelist_header_id = qph.price_list_id
6873    AND   qph.currency_code = curr_code;
6874 
6875 BEGIN
6876    l_qp_profile := FND_PROFILE.Value('AMS_USE_GLOBAL_PRICING');
6877    l_evo_rec := p_evo_rec;
6878 
6879    -- Remove the following line once the testing is done.
6880    l_qp_profile := 'N';
6881 
6882    IF l_qp_profile = 'N' AND
6883       l_evo_rec.PRICELIST_HEADER_CURRENCY_CODE <> FND_API.g_miss_char AND
6884       l_evo_rec.PRICELIST_HEADER_CURRENCY_CODE IS NOT NULL THEN
6885 
6886      -- DBMS_OUTPUT.put_line('calling Cursor for pricelist_header');
6887 
6888 
6889       OPEN c_pricelist_header_id(l_evo_rec.PRICELIST_HEADER_CURRENCY_CODE);
6890       FETCH c_pricelist_header_id INTO l_pricelist_header_id;
6891       CLOSE c_pricelist_header_id;
6892 
6893       -- DBMS_OUTPUT.put_line('The value of  pricelist_header is ' || l_pricelist_header_id);
6894 
6895 
6896       -- if pricelist header has been created for any event already
6897       -- 1.populate this header id to pricelist_header_id,
6898       -- 2.create pricelist line and store the line id
6899 
6900       IF (l_pricelist_header_id IS NOT NULL) THEN
6901          l_evo_rec.pricelist_header_id := l_pricelist_header_id;
6902          -- DBMS_OUTPUT.put_line('Calling create_pricelist_line');
6903          create_pricelist_line(
6904             p_api_version             => l_api_version,
6905             p_init_msg_list           => FND_API.g_false,
6906             p_return_values           => FND_API.g_false,
6907             p_commit                  => FND_API.g_false,
6908             p_price_hdr_id         => l_evo_rec.pricelist_header_id,
6909             p_evo_rec               => l_evo_rec,
6910             x_return_status         => l_return_status,
6911             x_msg_count            => l_msg_count,
6912             x_msg_data            => l_msg_data,
6913             x_pricelist_line_id     => l_evo_rec.pricelist_line_id
6914          );
6915 
6916          -- DBMS_OUTPUT.put_line('The value of  pricelist_header is ' || l_evo_rec.pricelist_header_id);
6917         --  DBMS_OUTPUT.put_line('The value of  pricelist_line_id  is ' || l_evo_rec.pricelist_line_id);
6918 
6919 
6920          IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
6921             RAISE FND_API.g_exc_unexpected_error;
6922          ELSIF l_return_status = FND_API.g_ret_sts_error THEN
6923             RAISE FND_API.g_exc_error;
6924          END IF;
6925          -- if pricelist header has never been created for collateral
6926          -- 1.create pricelist header
6927          -- 2.populate this header id to pricelist_header_id,
6928          -- 3.create pricelist line and store the line id
6929          -- IF (l_pricelist_header_id IS NULL) THEN
6930        ELSE
6931          -- DBMS_OUTPUT.put_line('Calling create_pricelist_header');
6932          create_pricelist_header(
6933             p_api_version             => l_api_version,
6934             p_init_msg_list           => FND_API.g_false,
6935             p_return_values           => FND_API.g_false,
6936             p_commit                  => FND_API.g_false,
6937             p_evo_rec               => l_evo_rec,
6938             x_return_status         => l_return_status,
6939             x_msg_count            => l_msg_count,
6940             x_msg_data            => l_msg_data,
6941             x_pricelist_header_id     => l_evo_rec.pricelist_header_id
6942          );
6943 
6944 
6945          IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
6946             RAISE FND_API.g_exc_unexpected_error;
6947          ELSIF l_return_status = FND_API.g_ret_sts_error THEN
6948             RAISE FND_API.g_exc_error;
6949          END IF;
6950          -- DBMS_OUTPUT.put_line('Calling create_pricelist_line');
6951 
6952          create_pricelist_line(
6953             p_api_version             => l_api_version,
6954             p_init_msg_list           => FND_API.g_false,
6955             p_return_values           => FND_API.g_false,
6956             p_commit                  => FND_API.g_false,
6957             p_price_hdr_id         => l_evo_rec.pricelist_header_id,
6958             p_evo_rec               => l_evo_rec,
6959             x_return_status         => l_return_status,
6960             x_msg_count            => l_msg_count,
6961             x_msg_data            => l_msg_data,
6962             x_pricelist_line_id     => l_evo_rec.pricelist_line_id
6963          );
6964 
6965 
6966          IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
6967             RAISE FND_API.g_exc_unexpected_error;
6968          ELSIF l_return_status = FND_API.g_ret_sts_error THEN
6969             RAISE FND_API.g_exc_error;
6970          END IF;
6971 
6972       END IF; -- end if for l_pricelist_header_id
6973 
6974    END IF; -- end if for l_qp_profile
6975 
6976       p_evo_rec := l_evo_rec;
6977 
6978 
6979 END create_global_pricing;
6980 
6981 --********************************************************
6982 
6983 
6984 -------------------------------------------------------------
6985 --       Check_Dates_Range
6986 -------------------------------------------------------------
6987 PROCEDURE Check_Dates_Range (
6988    p_evo_rec          IN  evo_rec_type,
6989    x_return_status  OUT NOCOPY   VARCHAR2
6990 )IS
6991 l_evo_rec   evo_rec_type;
6992 l_start_date DATE;
6993 l_end_date DATE;
6994 
6995 -- soagrawa modified table names for following 3 cursors on 24-feb-2003 while fixing INTERNAL bug# 2816673
6996 
6997    CURSOR c_program IS
6998 --       SELECT actual_exec_start_date , actual_exec_end_date FROM ams_campaigns_v
6999          SELECT actual_exec_start_date , actual_exec_end_date
7000          FROM ams_campaigns_all_b
7001          WHERE campaign_id = p_evo_rec.parent_id;
7002 
7003    CURSOR c_event IS
7004 --       SELECT active_from_date, active_to_date FROM ams_event_headers_v
7005          SELECT active_from_date, active_to_date
7006          FROM ams_event_headers_all_b
7007          WHERE event_header_id = p_evo_rec.event_header_id;
7008 
7009    CURSOR c_event_schedule IS
7010 --       SELECT event_start_date, event_end_date FROM ams_event_offers_v
7011          SELECT event_start_date, event_end_date
7012          FROM ams_event_offers_all_b
7013          WHERE event_offer_id = p_evo_rec.parent_event_offer_id and system_status_code<> 'CANCELLED';--implemented ER2381975 by anchaudh.
7014 
7015 
7016  BEGIN
7017      x_return_status := FND_API.g_ret_sts_success;
7018 
7019      IF (p_evo_rec.event_level = 'MAIN') THEN
7020         IF (p_evo_rec.event_object_type = 'EONE') THEN
7021            OPEN c_program;
7022            FETCH c_program INTO l_start_date,l_end_date;
7023            CLOSE c_program;
7024         ELSIF (p_evo_rec.event_object_type = 'EVEO') THEN
7025            OPEN c_event;
7026            FETCH c_event INTO l_start_date,l_end_date;
7027            CLOSE c_event;
7028         END IF;
7029      ELSIF (p_evo_rec.event_level = 'SUB') THEN
7030         OPEN c_event_schedule;
7031         FETCH c_event_schedule INTO l_start_date,l_end_date;
7032         CLOSE c_event_schedule;
7033      END IF;
7034 
7035      IF (p_evo_rec.event_start_date IS NOT NULL AND l_start_date IS NOT NULL ) THEN
7036          IF (p_evo_rec.event_start_date < l_start_date) THEN
7037                   IF (AMS_DEBUG_HIGH_ON) THEN
7038 
7039                       Ams_Utility_Pvt.debug_message('The start date of Event can not be lesser than that of Program');
7040                   END IF;
7041                 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
7042 
7043                    IF (p_evo_rec.event_level = 'MAIN') THEN
7044                       IF (p_evo_rec.event_object_type = 'EVEO') THEN
7045                         Fnd_Message.set_name('AMS', 'AMS_EVT_STDT_LS_EVNT_STDT');
7046                       ELSE
7047                         Fnd_Message.set_name('AMS', 'AMS_EVT_STDT_LS_PRG_STDT');
7048                       END IF;
7049                    ELSIF (p_evo_rec.event_level = 'SUB') THEN
7050                      Fnd_Message.set_name('AMS', 'AMS_AGEN_STDT_LS_EVNT_STDT');
7051                    END IF;
7052 
7053                    Fnd_Msg_Pub.ADD;
7054                    x_return_status := Fnd_Api.g_ret_sts_error;
7055                    RETURN;
7056                 END IF;
7057          END IF;
7058      END IF;
7059 
7060   IF (p_evo_rec.event_level = 'MAIN') THEN
7061      IF (p_evo_rec.event_end_date IS NOT NULL AND l_end_date IS NOT NULL ) THEN
7062          IF (p_evo_rec.event_end_date > l_end_date) THEN
7063                   IF (AMS_DEBUG_HIGH_ON) THEN
7064 
7065                       Ams_Utility_Pvt.debug_message('The end date of Event can not be greater than that of Program');
7066                   END IF;
7067                 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
7068 
7069                    IF (p_evo_rec.event_object_type = 'EVEO') THEN
7070                      Fnd_Message.set_name('AMS', 'AMS_EVT_EDDT_GT_EVNT_EDDT');
7071                    ELSE
7072                      Fnd_Message.set_name('AMS', 'AMS_EVT_EDDT_GT_PRG_EDDT');
7073                    END IF;
7074 
7075                    Fnd_Msg_Pub.ADD;
7076                    x_return_status := Fnd_Api.g_ret_sts_error;
7077                    RETURN;
7078                 END IF;
7079           END IF;
7080      ELSE
7081         IF ( p_evo_rec.event_end_date IS NULL AND l_end_date IS NOT NULL ) THEN
7082             IF (AMS_DEBUG_HIGH_ON) THEN
7083 
7084                 Ams_Utility_Pvt.debug_message('The end date of Event can not be greater than that of Program');
7085             END IF;
7086             IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
7087 
7088                 IF (p_evo_rec.event_object_type = 'EVEO') THEN
7089                   Fnd_Message.set_name('AMS', 'AMS_EVT_EDDT_GT_EVNT_EDDT');
7090                 ELSE
7091                   Fnd_Message.set_name('AMS', 'AMS_EVT_EDDT_GT_PRG_EDDT');
7092                 END IF;
7093 
7094                 Fnd_Msg_Pub.ADD;
7095                 x_return_status := Fnd_Api.g_ret_sts_error;
7096                RETURN;
7097              END IF;
7098         END IF;
7099      END IF;
7100    END IF;
7101 
7102   IF (p_evo_rec.event_level = 'SUB') THEN
7103       IF (p_evo_rec.event_start_date > l_end_date) THEN
7104          Fnd_Message.set_name('AMS', 'AMS_AGEN_STDT_GT_EVNT_EDDT');
7105          Fnd_Msg_Pub.ADD;
7106          x_return_status := Fnd_Api.g_ret_sts_error;
7107          RETURN;
7108        END IF;
7109   END IF;
7110 
7111 END Check_Dates_Range;
7112 --------------------------------------------------------------------
7113 
7114 -------------------------------------------------------------
7115 --       Check_Parent_Active
7116 -------------------------------------------------------------
7117 PROCEDURE Check_Parent_Active (
7118    p_evo_rec          IN  evo_rec_type,
7119    x_return_status  OUT NOCOPY   VARCHAR2
7120 )IS
7121 l_evo_rec   evo_rec_type;
7122 l_system_status_code p_evo_rec.system_status_code%TYPE ;
7123 
7124 -- soagrawa modified table names for following 2 cursors on 24-feb-2003 while fixing INTERNAL bug# 2816673
7125 
7126    CURSOR c_program IS
7127 --       SELECT status_code FROM ams_campaigns_v
7128          SELECT status_code
7129          FROM ams_campaigns_all_b
7130          WHERE campaign_id = p_evo_rec.parent_id;
7131 
7132    CURSOR c_event IS
7133 --       SELECT system_status_code FROM ams_event_headers_v
7134          SELECT system_status_code
7135          FROM ams_event_headers_all_b
7136          WHERE event_header_id = p_evo_rec.event_header_id;
7137 
7138 
7139  BEGIN
7140      x_return_status := FND_API.g_ret_sts_success;
7141 
7142      IF (p_evo_rec.event_level = 'MAIN' AND p_evo_rec.active_flag = 'Y' AND p_evo_rec.system_status_code = 'ACTIVE' ) THEN
7143 
7144         IF (p_evo_rec.event_object_type = 'EONE') THEN
7145            OPEN c_program;
7146            FETCH c_program INTO l_system_status_code;
7147            CLOSE c_program;
7148         ELSIF (p_evo_rec.event_object_type = 'EVEO') THEN
7149            OPEN c_event;
7150            FETCH c_event INTO l_system_status_code;
7151            CLOSE c_event;
7152         END IF;
7153 
7154         IF  l_system_status_code <> 'ACTIVE'  THEN
7155 
7156            IF p_evo_rec.event_object_type = 'EONE' THEN
7157               IF (AMS_DEBUG_HIGH_ON) THEN
7158 
7159                   Ams_Utility_Pvt.debug_message('The Parent is not Active');
7160               END IF;
7161               Fnd_Message.set_name('AMS', 'AMS_PROGRAM_NOT_ACTIVE');
7162            ELSIF p_evo_rec.event_object_type = 'EVEO' THEN
7163               IF (AMS_DEBUG_HIGH_ON) THEN
7164 
7165                   Ams_Utility_Pvt.debug_message('The Parent is not Active');
7166               END IF;
7167               Fnd_Message.set_name('AMS', 'AMS_EVENT_NOT_ACTIVE');
7168            END IF;
7169 
7170            Fnd_Msg_Pub.ADD;
7171            x_return_status := Fnd_Api.g_ret_sts_error;
7172            RETURN;
7173 
7174        END IF;
7175 
7176     END IF;
7177 
7178 END Check_Parent_Active;
7179 
7180 -------------------------------------------------------------
7181 --       Update_Metrics
7182 -------------------------------------------------------------
7183 PROCEDURE Update_Metrics (
7184    p_evo_rec          IN  evo_rec_type,
7185    x_return_status  OUT NOCOPY   VARCHAR2,
7186    x_msg_count OUT NOCOPY VARCHAR2,
7187    x_msg_data OUT NOCOPY VARCHAR2
7188  ) IS
7189 l_program_id NUMBER;
7190 l_api_version CONSTANT NUMBER  := 1.0;
7191 
7192 
7193 CURSOR c_program IS
7194         SELECT parent_id from ams_event_offers_v
7195         WHERE event_offer_id = p_evo_rec.event_offer_id;
7196  BEGIN
7197 
7198      OPEN c_program;
7199      FETCH c_program INTO l_program_id;
7200      CLOSE c_program;
7201 
7202      x_return_status := FND_API.g_ret_sts_success;
7203 
7204      /* The AMS_ACTMETRIC_PVT.INVALIDATE_ROLLUP should be called
7205         1) When Program is removed or updated (changed)
7206         2) No need of calling when program is attached first time
7207      */
7208 
7209      IF( l_program_id IS NOT NULL )THEN
7210         IF( l_program_id <> nvl(p_evo_rec.parent_id,0))THEN
7211             AMS_ACTMETRIC_PVT.INVALIDATE_ROLLUP(
7212                p_api_version => l_api_version,
7213                p_init_msg_list   => Fnd_Api.g_false,
7214                p_commit  => Fnd_Api.G_FALSE,
7215 
7216                x_return_status => x_return_status,
7217                x_msg_count => x_msg_count,
7218                x_msg_data => x_msg_data,
7219 
7220                p_used_by_type => 'EONE',
7221                p_used_by_id => p_evo_rec.event_offer_id
7222             );
7223 
7224            IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
7225                RAISE Fnd_Api.g_exc_unexpected_error;
7226             ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
7227                RAISE Fnd_Api.g_exc_error;
7228            END IF;
7229         END IF;
7230     END IF;
7231 
7232  END Update_Metrics;
7233 
7234 -------------------------------------------------------------
7235 --       fulfill_event_offer
7236 -------------------------------------------------------------
7237 
7238 PROCEDURE fulfill_event_offer(
7239    p_evo_rec           IN  evo_rec_type,
7240    x_return_status     OUT NOCOPY VARCHAR2
7241 )
7242 IS
7243    CURSOR c_status IS
7244    SELECT system_status_code
7245    FROM ams_user_statuses_b
7246    WHERE user_status_id = p_evo_rec.user_status_id
7247    AND system_status_type = 'AMS_EVENT_STATUS';
7248 
7249    CURSOR c_details IS
7250    SELECT event_venue_id, event_start_date, event_end_date, system_status_code
7251    FROM ams_event_offers_all_b
7252    WHERE event_offer_id = p_evo_rec.event_offer_id;
7253 
7254    l_return_status  VARCHAR2(1);
7255    l_fulfilment     VARCHAR2(30);
7256    l_sys_status_code    VARCHAR2(30);
7257    l_system_status_code  VARCHAR2(30);
7258    l_start_date     DATE;
7259    l_end_date       DATE;
7260    l_venue_id       NUMBER;
7261 
7262    l_bind_names       JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
7263    l_bind_values      JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
7264 
7265 BEGIN
7266 x_return_status := FND_API.G_RET_STS_SUCCESS;
7267 
7268 -- Start of Fulfillment VMODUR
7269 
7270 l_fulfilment := FND_PROFILE.Value('AMS_FULFILL_ENABLE_FLAG');
7271 
7272 IF (AMS_DEBUG_HIGH_ON) THEN
7273     AMS_Utility_PVT.debug_message(' Fulfilment Profile :' || l_fulfilment);
7274 END IF;
7275 
7276 IF( l_fulfilment <> 'N' )
7277 THEN
7278 
7279   /* Get the system_status_code for incoming user_status_id, as we donot send
7280      system_status_code through Rosetta Rec
7281   */
7282   OPEN c_status;
7283   FETCH c_status INTO l_sys_status_code;
7284   CLOSE c_status;
7285 
7286   OPEN c_details;
7287   FETCH c_details INTO l_venue_id, l_start_date, l_end_date, l_system_status_code;
7288   CLOSE c_details;
7289 
7290 
7291 
7292   IF (AMS_DEBUG_HIGH_ON) THEN
7293 
7294 
7295 
7296       AMS_Utility_PVT.debug_message('The p_evo_rec.user_status_id is :' || p_evo_rec.user_status_id);
7297 
7298   END IF;
7299   IF (AMS_DEBUG_HIGH_ON) THEN
7300 
7301       AMS_Utility_PVT.debug_message('The l_sys_status_code is :' || l_sys_status_code);
7302   END IF;
7303   IF (AMS_DEBUG_HIGH_ON) THEN
7304 
7305       AMS_Utility_PVT.debug_message('The l_system_status_code is :' || l_system_status_code);
7306   END IF;
7307 
7308 
7309    IF(l_sys_status_code = 'CANCELLED' AND l_sys_status_code <> l_system_status_code)
7310     THEN
7311 
7312        IF (AMS_DEBUG_HIGH_ON) THEN
7313 
7314            AMS_Utility_PVT.debug_message('Entered Here');
7315        END IF;
7316        IF (AMS_DEBUG_HIGH_ON) THEN
7317 
7318            AMS_Utility_PVT.debug_message('Calling Fulfilment Procedure for Cancel');
7319        END IF;
7320 
7321        l_bind_names(1) := 'EVENT_OFFER_ID' ;
7322        l_bind_values(1):= TO_CHAR(p_evo_rec.event_offer_id);
7323 
7324        AMS_EvhRules_PVT.Send_Out_Information(
7325          p_object_type       => p_evo_rec.event_object_type,
7326          p_object_id         => p_evo_rec.event_offer_id,
7327          p_trigger_type      => 'CANCELLED',
7328          p_bind_values       => l_bind_values,
7329          p_bind_names        => l_bind_names,  -- Added by ptendulk on 13-Dec-2002 for 1:1 integration
7330          x_return_status     => l_return_status
7331        );
7332 
7333             l_bind_values.DELETE;
7334             l_bind_names.DELETE;
7335 
7336        IF l_return_status <> FND_API.g_ret_sts_success THEN
7337           x_return_status := l_return_status;
7338 	  RETURN;
7339        END IF;
7340     END IF;
7341 
7342         -- anchaudh added starts for ER3037795
7343     IF (l_sys_status_code = 'ACTIVE' AND l_sys_status_code <> l_system_status_code AND l_system_status_code <> 'ON_HOLD') THEN
7344 
7345            IF (AMS_DEBUG_HIGH_ON) THEN
7346               AMS_Utility_PVT.debug_message('Calling Fulfilment Procedure for Invitation');
7347            END IF;
7348 
7349             l_bind_names(1) := 'EVENT_OFFER_ID' ;
7350             l_bind_values(1):= TO_CHAR(p_evo_rec.event_offer_id);
7351 
7352            AMS_EvhRules_PVT.Send_Out_Information(
7353             p_object_type       => p_evo_rec.event_object_type,
7354             p_object_id         => p_evo_rec.event_offer_id,
7355             p_trigger_type      => 'INVITATION',
7356             p_bind_values       => l_bind_values,
7357             p_bind_names        => l_bind_names,
7358             x_return_status     => l_return_status
7359             );
7360 
7361             l_bind_values.DELETE;
7362             l_bind_names.DELETE;
7363 
7364        IF l_return_status <> FND_API.g_ret_sts_success THEN
7365           x_return_status := l_return_status;
7366 	  RETURN;
7367        END IF;
7368 
7369      END IF;
7370 -- anchaudh added ends for ER3037795
7371 
7372 
7373     IF (l_sys_status_code = 'ACTIVE'
7374          OR l_sys_status_code = 'ON_HOLD')
7375     THEN
7376        IF (  (l_start_date <> p_evo_rec.event_start_date)
7377          OR (l_end_date <> p_evo_rec.event_end_date ))
7378        THEN
7379            IF (AMS_DEBUG_HIGH_ON) THEN
7380 
7381                AMS_Utility_PVT.debug_message('Calling Fulfilment Procedure for Date change');
7382            END IF;
7383            IF (AMS_DEBUG_HIGH_ON) THEN
7384 
7385                AMS_Utility_PVT.debug_message('Old start date is '||l_start_date);
7386            END IF;
7387            IF (AMS_DEBUG_HIGH_ON) THEN
7388 
7389                AMS_Utility_PVT.debug_message('New start date is '||p_evo_rec.event_start_date);
7390            END IF;
7391            IF (AMS_DEBUG_HIGH_ON) THEN
7392 
7393                AMS_Utility_PVT.debug_message('Old end date is '||l_end_date);
7394            END IF;
7395            IF (AMS_DEBUG_HIGH_ON) THEN
7396 
7397                AMS_Utility_PVT.debug_message('New end date  is '||p_evo_rec.event_end_date);
7398            END IF;
7399 
7400            l_bind_names(1) := 'OLD_START_DATE';
7401            l_bind_names(2) := 'OLD_END_DATE';
7402            l_bind_names(3) := 'EVENT_OFFER_ID';
7403 
7404            l_bind_values(1):= TO_CHAR(l_start_date);
7405            l_bind_values(2):= TO_CHAR(l_end_date);
7406            l_bind_values(3):= TO_CHAR(p_evo_rec.event_offer_id);
7407 
7408 
7409 
7410             AMS_EvhRules_PVT.Send_Out_Information(
7411              p_object_type       => p_evo_rec.event_object_type,
7412              p_object_id         => p_evo_rec.event_offer_id,
7413              p_trigger_type      => 'DATE_CHANGE',
7414              p_bind_values       => l_bind_values,
7415              p_bind_names        => l_bind_names,
7416              x_return_status     => l_return_status
7417            );
7418 
7419 	   l_bind_values.DELETE;
7420            l_bind_names.DELETE;
7421 
7422            IF (AMS_DEBUG_HIGH_ON) THEN
7423 
7424                AMS_Utility_PVT.debug_message('The Return Status is ' || l_return_status);
7425            END IF;
7426 
7427           IF l_return_status <> FND_API.g_ret_sts_success THEN
7428             x_return_status := l_return_status;
7429 	    RETURN;
7430           END IF;
7431 
7432        END IF;
7433 
7434        IF( l_venue_id IS NOT NULL AND l_venue_id <> p_evo_rec.event_venue_id)
7435        THEN
7436            IF (AMS_DEBUG_HIGH_ON) THEN
7437 
7438                AMS_Utility_PVT.debug_message('Calling Fulfilment Procedure for Venue change');
7439            END IF;
7440            IF (AMS_DEBUG_HIGH_ON) THEN
7441 
7442                AMS_Utility_PVT.debug_message('Old Venue Id is '||l_venue_id);
7443            END IF;
7444            IF (AMS_DEBUG_HIGH_ON) THEN
7445 
7446                AMS_Utility_PVT.debug_message('New Venue Id is '||p_evo_rec.event_venue_id);
7447            END IF;
7448 
7449            l_bind_names(1) := 'OLD_VENUE_ID';
7450            l_bind_names(2) := 'EVENT_OFFER_ID';
7451 
7452            l_bind_values(1):= TO_CHAR(l_venue_id);
7453            l_bind_values(2):= TO_CHAR(p_evo_rec.event_offer_id);
7454 
7455 
7456           AMS_EvhRules_PVT.Send_Out_Information(
7457              p_object_type       => p_evo_rec.event_object_type,
7458              p_object_id         => p_evo_rec.event_offer_id,
7459              p_trigger_type      => 'VENUE_CHANGE',
7460              p_bind_values       => l_bind_values,
7461              p_bind_names        => l_bind_names,
7462              x_return_status     => l_return_status
7463           );
7464 
7465 	   l_bind_values.DELETE;
7466            l_bind_names.DELETE;
7467 
7468           IF (AMS_DEBUG_HIGH_ON) THEN
7469 
7470               AMS_Utility_PVT.debug_message('The Return Status is ' || l_return_status);
7471 
7472           END IF;
7473 
7474           IF l_return_status <> FND_API.g_ret_sts_success THEN
7475             x_return_status := l_return_status;
7476 	    RETURN;
7477           END IF;
7478 
7479        ELSIF( l_venue_id IS NULL
7480        AND p_evo_rec.event_venue_id IS NOT NULL)
7481        THEN
7482 
7483            IF (AMS_DEBUG_HIGH_ON) THEN
7484 
7485                AMS_Utility_PVT.debug_message('Calling Fulfilment api Venue has been created');
7486 
7487            END IF;
7488            IF (AMS_DEBUG_HIGH_ON) THEN
7489 
7490                AMS_Utility_PVT.debug_message('Old Venue Id is '||l_venue_id);
7491            END IF;
7492            IF (AMS_DEBUG_HIGH_ON) THEN
7493 
7494                AMS_Utility_PVT.debug_message('New Venue Id is '||p_evo_rec.event_venue_id);
7495            END IF;
7496 
7497             --defaulting to 0 if its is null
7498            l_venue_id := 0;
7499 
7500            l_bind_names(1) := 'OLD_VENUE_ID';
7501            l_bind_names(2) := 'EVENT_OFFER_ID';
7502 
7503            l_bind_values(1):= TO_CHAR(l_venue_id);
7504            l_bind_values(2):= TO_CHAR(p_evo_rec.event_offer_id);
7505 
7506 
7507           AMS_EvhRules_PVT.Send_Out_Information(
7508              p_object_type       => p_evo_rec.event_object_type,
7509              p_object_id         => p_evo_rec.event_offer_id,
7510              p_trigger_type      => 'VENUE_CHANGE',
7511              p_bind_values       => l_bind_values,
7512              p_bind_names        => l_bind_names,
7513              x_return_status     => l_return_status
7514           );
7515 
7516            l_bind_values.DELETE;
7517            l_bind_names.DELETE;
7518 
7519           IF (AMS_DEBUG_HIGH_ON) THEN
7520 
7521               AMS_Utility_PVT.debug_message('The Return Status is ' || l_return_status);
7522 
7523           END IF;
7524 
7525          IF l_return_status <> FND_API.g_ret_sts_success THEN
7526             x_return_status := l_return_status;
7527 	    RETURN;
7528          END IF;
7529 
7530        END IF;
7531     END IF;
7532 
7533 END IF ;
7534 
7535 -- End of Fulfillment VMODUR
7536 
7537 END fulfill_event_offer;
7538 ---------------------------------------------------------------------
7539 END AMS_EventOffer_PVT;