DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_CAMPAIGN_PVT

Source


1 PACKAGE BODY AMS_Campaign_PVT AS
2 /* $Header: amsvcpnb.pls 120.4 2006/07/21 05:48:33 prageorg ship $ */
3 
4 
5 g_pkg_name   CONSTANT VARCHAR2(30):='AMS_Campaign_PVT';
6 
7 
8 ---------------------------------------------------------------------
9 -- PROCEDURE
10 --    create_campaign
11 --
12 -- HISTORY
13 --    10/01/99  holiu     Created.
14 --    08/31/00  ptendulk  Added nvl in the insert statement for
15 --                        global flag.
16 --    09/27/00  ptendulk  Added currency conversion api to conver the
17 --                        transaction currency into functional currency
18 --    01/23/01  julou     Commented out budget_amount_tc, budget_amount_fc,
19 --                        media_type_code, media_id, channel_id from insert
20 -- 06-Feb-2001  ptendulk  Added program descriptive flexfield attributes.
21 -- 31-May-2001  ptendulk  Changed the call to copy seeded metric. pass RCAM for programs
22 ---------------------------------------------------------------------
23 AMS_DEBUG_HIGH_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
24 AMS_DEBUG_LOW_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
25 AMS_DEBUG_MEDIUM_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
26 
27 PROCEDURE create_campaign(
28    p_api_version       IN  NUMBER,
29    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
30    p_commit            IN  VARCHAR2  := FND_API.g_false,
31    p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
32 
33    x_return_status     OUT NOCOPY VARCHAR2,
34    x_msg_count         OUT NOCOPY NUMBER,
35    x_msg_data          OUT NOCOPY VARCHAR2,
36 
37    p_camp_rec          IN  camp_rec_type,
38    x_camp_id           OUT NOCOPY NUMBER
39 )
40 IS
41 
42    l_api_version CONSTANT NUMBER       := 1.0;
43    l_api_name    CONSTANT VARCHAR2(30) := 'create_campaign';
44    l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
45 
46    l_return_status  VARCHAR2(1);
47    l_camp_rec       camp_rec_type := p_camp_rec;
48    l_camp_count     NUMBER;
49    l_bu_id          NUMBER;
50    l_org_id         NUMBER;
51 
52    CURSOR c_camp_seq IS
53    SELECT ams_campaigns_all_b_s.NEXTVAL
54      FROM DUAL;
55 
56    CURSOR c_camp_count(camp_id IN NUMBER) IS
57    SELECT COUNT(*)
58      FROM ams_campaigns_vl
59     WHERE campaign_id = camp_id;
60 
61     /**
62     CURSOR c_parent_business_unit (p_parent_campaign_id IN NUMBER, p_org_id IN NUMBER) IS
63     SELECT business_unit_id
64     from ams_campaigns_all_b
65     where campaign_id = p_parent_campaign_id
66     and exists (
67         SELECT 1 FROM hr_all_organization_units_vl
68         WHERE business_group_id IN (
69         SELECT business_group_id FROM hr_all_organization_units_vl
70         WHERE organization_id = p_org_id
71         AND NVL(date_from, SYSDATE) <= SYSDATE
72         AND NVL(date_to, SYSDATE) >= SYSDATE)
73         AND type = 'BU'
74         AND NVL(date_from, SYSDATE) <= SYSDATE
75         AND NVL(date_to, SYSDATE) >= SYSDATE
76         AND organization_id = business_unit_id
77         );
78      **/
79 
80     CURSOR c_parent_business_unit (p_parent_campaign_id IN NUMBER) IS
81     SELECT business_unit_id
82     from ams_campaigns_all_b
83     where campaign_id = p_parent_campaign_id
84     and exists (
85         SELECT 1
86         FROM hr_all_organization_units_vl
87         WHERE business_group_id = fnd_profile.value('PER_BUSINESS_GROUP_ID')
88         AND NVL(date_from, SYSDATE) <= SYSDATE
89         AND NVL(date_to, SYSDATE) >= SYSDATE
90         AND type = 'BU'
91         AND organization_id = business_unit_id);
92 
93      CURSOR c_parent_confi_flag (p_parent_campaign_id IN NUMBER) IS
94      select private_flag
95      from ams_campaigns_all_b
96      where campaign_id = p_parent_campaign_id;
97 
98    l_access_rec   AMS_Access_Pvt.access_rec_type ;
99    l_dummy_id     NUMBER ;
100    l_rollup_type  VARCHAR2(30);
101 
102    l_related_source_code  VARCHAR2(30) ;
103    l_related_source_id    NUMBER ;
104 
105 BEGIN
106 
107    --------------------- initialize -----------------------
108    SAVEPOINT create_campaign;
109 
110    IF (AMS_DEBUG_HIGH_ON) THEN
111 
112 
113 
114    AMS_Utility_PVT.debug_message(l_full_name||': start');
115 
116    END IF;
117 
118    IF FND_API.to_boolean(p_init_msg_list) THEN
119       FND_MSG_PUB.initialize;
120    END IF;
121 
122    IF NOT FND_API.compatible_api_call(
123          l_api_version,
124          p_api_version,
125          l_api_name,
126          g_pkg_name
127    ) THEN
128       RAISE FND_API.g_exc_unexpected_error;
129    END IF;
130 
131    x_return_status := FND_API.g_ret_sts_success;
132 
133    ----------------------- validate -----------------------
134    IF (AMS_DEBUG_HIGH_ON) THEN
135 
136    AMS_Utility_PVT.debug_message(l_full_name ||': validate');
137    END IF;
138 
139    -- Following code is commented by ptendulk on 06-Feb-2001
140    -- as we are not using inherit attribute flag
141    -- This might need to be changed if we define any criteria for
142    -- copying campaigns attribute when campaign being copied.
143    --
144    -- handle inherit_attributes_flag
145    --AMS_CampaignRules_PVT.handle_camp_inherit_flag(
146    --   p_camp_rec.parent_campaign_id,
147    --   p_camp_rec.rollup_type,
148    --   l_camp_rec.inherit_attributes_flag,
149    --   l_return_status
150    --);
151    --IF l_return_status = FND_API.g_ret_sts_error THEN
152    --   RAISE FND_API.g_exc_error;
153    --ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
154    --   RAISE FND_API.g_exc_unexpected_error;
155    --END IF;
156 
157    -- handle status
158    AMS_CampaignRules_PVT.handle_camp_status(
159       p_camp_rec.user_status_id,
160       l_camp_rec.status_code,
161       l_return_status
162    );
163    IF l_return_status = FND_API.g_ret_sts_error THEN
164       RAISE FND_API.g_exc_error;
165    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
166       RAISE FND_API.g_exc_unexpected_error;
167    END IF;
168 
169    -- default campaign calendar
170    IF l_camp_rec.campaign_calendar IS NULL
171       AND (l_camp_rec.start_period_name IS NOT NULL
172       OR l_camp_rec.end_period_name IS NOT NULL)
173    THEN
174       l_camp_rec.campaign_calendar := FND_PROFILE.value('AMS_CAMPAIGN_DEFAULT_CALENDER');
175    END IF;
176 
177    -- default source_code
178    IF l_camp_rec.source_code IS NULL AND
179       l_camp_rec.rollup_type <> 'RCAM'
180    THEN
181       -- choang - 16-May-2000
182       -- Replaced get_source_code with get_new_source_code
183       -- NOTE: must implement global flag
184       l_camp_rec.source_code := AMS_SourceCode_PVT.get_new_source_code (
185          p_object_type  => 'CAMP',
186          p_custsetup_id => l_camp_rec.custom_setup_id,
187          p_global_flag  => l_camp_rec.global_flag
188       );
189       --l_camp_rec.source_code := AMS_SourceCode_PVT.get_source_code(
190       --   'CAMP',
191       --   l_camp_rec.campaign_type
192       --);
193    END IF;
194 
195    validate_campaign(
196       p_api_version        => l_api_version,
197       p_init_msg_list      => p_init_msg_list,
198       p_validation_level   => p_validation_level,
199       x_return_status      => l_return_status,
200       x_msg_count          => x_msg_count,
201       x_msg_data           => x_msg_data,
202       p_camp_rec           => l_camp_rec
203    );
204    IF l_return_status = FND_API.g_ret_sts_error THEN
205       RAISE FND_API.g_exc_error;
206    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
207       RAISE FND_API.g_exc_unexpected_error;
208    END IF;
209 
210 
211 
212    -- ==========================================================
213    -- Following code is added by ptendulk on 09/27/2000
214    -- the code will convert the transaction currency in to
215    -- functional currency.
216    -- ==========================================================
217    IF l_camp_rec.budget_amount_tc IS NOT NULL THEN
218        AMS_CampaignRules_PVT.Convert_Camp_Currency(
219            p_tc_curr     => l_camp_rec.transaction_currency_code,
220            p_tc_amt      => l_camp_rec.budget_amount_tc,
221            x_fc_curr     => l_camp_rec.functional_currency_code,
222            x_fc_amt      => l_camp_rec.budget_amount_fc
223            ) ;
224    END IF ;
225 
226 
227    -- try to generate a unique id from the sequence
228    IF l_camp_rec.campaign_id IS NULL THEN
229       LOOP
230          OPEN c_camp_seq;
231          FETCH c_camp_seq INTO l_camp_rec.campaign_id;
232          CLOSE c_camp_seq;
233 
234          OPEN c_camp_count(l_camp_rec.campaign_id);
235          FETCH c_camp_count INTO l_camp_count;
236          CLOSE c_camp_count;
237 
238          EXIT WHEN l_camp_count = 0;
239       END LOOP;
240    END IF ;
241 
242    -- Added by rmajumda (09/15/05). MOAC changes
243    l_org_id := fnd_profile.value('DEFAULT_ORG_ID');
244 
245    -- Logic for Business Unit (8-Aug-2005 mayjain)
246     if (l_camp_rec.parent_campaign_id is not null)
247     then
248         --OPEN c_parent_business_unit (l_camp_rec.parent_campaign_id, fnd_profile.value('ORG_ID'));
249         -- MOAC changes
250         OPEN c_parent_business_unit (l_camp_rec.parent_campaign_id);
251         FETCH c_parent_business_unit into l_camp_rec.business_unit_id;
252         CLOSE c_parent_business_unit;
253 
254         AMS_Utility_PVT.debug_message(l_full_name ||': Business Unit = ' || to_char(l_camp_rec.business_unit_id));
255         AMS_Utility_PVT.debug_message(l_full_name ||': Parent Campaign Id = ' || to_char(l_camp_rec.parent_campaign_id));
256         AMS_Utility_PVT.debug_message(l_full_name ||': Org Id  = ' || to_char(fnd_profile.value('ORG_ID')));
257 
258         OPEN c_parent_confi_flag (l_camp_rec.parent_campaign_id);
259         FETCH c_parent_confi_flag into l_camp_rec.private_flag;
260         CLOSE c_parent_confi_flag;
261     end if;
262    -- Logic for Business Unit (8-Aug-2005 mayjain)
263 
264 
265 
266    -------------------------- insert --------------------------
267    IF (AMS_DEBUG_HIGH_ON) THEN
268 
269    AMS_Utility_PVT.debug_message(l_full_name ||': insert');
270    END IF;
271 
272    -----------------------------------------------------------------
273    -- budget_amount_tc, budget_amount_fc, media_type_code, media_id,
274    -- channel_id are commented out by julou on 01/23/00
275    -----------------------------------------------------------------
276    INSERT INTO ams_campaigns_all_b(
277       campaign_id,
278       last_update_date,
279       last_updated_by,
280       creation_date,
281       created_by,
282       last_update_login,
283       object_version_number,
284       owner_user_id,
285       user_status_id,
286       status_code,
287       status_date,
288       active_flag,
289       private_flag,
290       partner_flag,
291       template_flag,
292       cascade_source_code_flag,
293       inherit_attributes_flag,
294       source_code,
295       rollup_type,
296       campaign_type,
297       media_type_code,
298       priority,
299       fund_source_type,
300       fund_source_id,
301       parent_campaign_id,
302       application_id,
303       qp_list_header_id,
304       org_id,
305       media_id,
306       channel_id,
307       event_type,
308       arc_channel_from,
309       dscript_name,
310       transaction_currency_code,
311       functional_currency_code,
312       budget_amount_tc,
313       budget_amount_fc,
314       forecasted_plan_start_date,
315       forecasted_plan_end_date,
316       forecasted_exec_start_date,
317       forecasted_exec_end_date,
318       actual_plan_start_date,
319       actual_plan_end_date,
320       actual_exec_start_date,
321       actual_exec_end_date,
322       inbound_url,
323       inbound_email_id,
324       inbound_phone_no,
325       duration,
326       duration_uom_code,
327       ff_priority,
328       ff_override_cover_letter,
329       ff_shipping_method,
330       ff_carrier,
331       content_source,
332       cc_call_strategy,
333       cc_manager_user_id,
334       forecasted_revenue,
335       actual_revenue,
336       forecasted_cost,
337       actual_cost,
338       forecasted_response,
339       actual_response,
340       target_response,
341       country_code,
342       language_code,
343       attribute_category,
344       attribute1,
345       attribute2,
346       attribute3,
347       attribute4,
348       attribute5,
349       attribute6,
350       attribute7,
351       attribute8,
352       attribute9,
353       attribute10,
354       attribute11,
355       attribute12,
356       attribute13,
357       attribute14,
358       attribute15,
359       version_no,
360       campaign_calendar,
361       start_period_name,
362       end_period_name,
363       city_id,
364       global_flag,
365       custom_setup_id,
366       show_campaign_flag,
367       business_unit_id,
368       accounts_closed_flag,
369       task_id,
370       related_event_from,
371       related_event_id,
372       program_attribute_category,
373       program_attribute1,
374       program_attribute2,
375       program_attribute3,
376       program_attribute4,
377       program_attribute5,
378       program_attribute6,
379       program_attribute7,
380       program_attribute8,
381       program_attribute9,
382       program_attribute10,
383       program_attribute11,
384       program_attribute12,
385       program_attribute13,
386       program_attribute14,
387       program_attribute15
388       )
389    VALUES(
390       l_camp_rec.campaign_id,
391       SYSDATE,
392       FND_GLOBAL.user_id,
393       SYSDATE,
394       FND_GLOBAL.user_id,
395       FND_GLOBAL.conc_login_id,
396       1,  -- object_version_number
397       l_camp_rec.owner_user_id,
398       l_camp_rec.user_status_id,
399       l_camp_rec.status_code,
400       NVL(l_camp_rec.status_date, SYSDATE),
401       NVL(l_camp_rec.active_flag, 'Y'),
402       NVL(l_camp_rec.private_flag, 'N'),
403       NVL(l_camp_rec.partner_flag, 'N'),
404       NVL(l_camp_rec.template_flag, 'N'),
405       NVL(l_camp_rec.cascade_source_code_flag, 'N'),
406       NVL(l_camp_rec.inherit_attributes_flag,'N'),
407       l_camp_rec.source_code,
408       l_camp_rec.rollup_type,
409       l_camp_rec.campaign_type,
410       l_camp_rec.media_type_code,
411       NVL(l_camp_rec.priority, 'STANDARD'),
412       l_camp_rec.fund_source_type,
413       l_camp_rec.fund_source_id,
414       l_camp_rec.parent_campaign_id,
415       l_camp_rec.application_id,
416       l_camp_rec.qp_list_header_id,
417       l_org_id, -- org_id value from MO: Default Org Id,
418       -- commenting out. moac changes.
419       --TO_NUMBER(SUBSTRB(userenv('CLIENT_INFO'),1,10)), -- org_id
420       l_camp_rec.media_id,
421       l_camp_rec.channel_id,
422       l_camp_rec.event_type,
423       l_camp_rec.arc_channel_from,
424       l_camp_rec.dscript_name,
425       l_camp_rec.transaction_currency_code,
426       l_camp_rec.functional_currency_code,
427       l_camp_rec.budget_amount_tc,
428       l_camp_rec.budget_amount_fc,
429       l_camp_rec.forecasted_plan_start_date,
430       l_camp_rec.forecasted_plan_end_date,
431       l_camp_rec.forecasted_exec_start_date,
432       l_camp_rec.forecasted_exec_end_date,
433       l_camp_rec.actual_plan_start_date,
434       l_camp_rec.actual_plan_end_date,
435       l_camp_rec.actual_exec_start_date,
436       l_camp_rec.actual_exec_end_date,
437       l_camp_rec.inbound_url,
438       l_camp_rec.inbound_email_id,
439       l_camp_rec.inbound_phone_no,
440       l_camp_rec.duration,
441       l_camp_rec.duration_uom_code,
442       l_camp_rec.ff_priority,
443       l_camp_rec.ff_override_cover_letter,
444       l_camp_rec.ff_shipping_method,
445       l_camp_rec.ff_carrier,
446       l_camp_rec.content_source,
447       l_camp_rec.cc_call_strategy,
448       l_camp_rec.cc_manager_user_id,
449       l_camp_rec.forecasted_revenue,
450       l_camp_rec.actual_revenue,
451       l_camp_rec.forecasted_cost,
452       l_camp_rec.actual_cost,
453       l_camp_rec.forecasted_response,
454       l_camp_rec.actual_response,
455       l_camp_rec.target_response,
456       l_camp_rec.country_code,
457       l_camp_rec.language_code,
458       l_camp_rec.attribute_category,
459       l_camp_rec.attribute1,
460       l_camp_rec.attribute2,
461       l_camp_rec.attribute3,
462       l_camp_rec.attribute4,
463       l_camp_rec.attribute5,
464       l_camp_rec.attribute6,
465       l_camp_rec.attribute7,
466       l_camp_rec.attribute8,
467       l_camp_rec.attribute9,
468       l_camp_rec.attribute10,
469       l_camp_rec.attribute11,
470       l_camp_rec.attribute12,
471       l_camp_rec.attribute13,
472       l_camp_rec.attribute14,
473       l_camp_rec.attribute15,
474       null, -- version_no
475       l_camp_rec.campaign_calendar,
476       l_camp_rec.start_period_name,
477       l_camp_rec.end_period_name,
478       NVL(l_camp_rec.city_id, TO_NUMBER(FND_PROFILE.value('AMS_SRCGEN_USER_CITY'))),
479       NVL(l_camp_rec.global_flag, 'N'),
480       l_camp_rec.custom_setup_id,
481       NVL(l_camp_rec.show_campaign_flag, 'Y'),
482       l_camp_rec.business_unit_id,
483 --07-apr-2003 cgoyal
484       'N',  --NVL(l_camp_rec.accounts_closed_flag,'Y'),
485 --end 07-apr-2003 cgoyal
486       l_camp_rec.task_id,
487       l_camp_rec.related_event_from,
488       l_camp_rec.related_event_id,
489       l_camp_rec.program_attribute_category,
490       l_camp_rec.program_attribute1,
491       l_camp_rec.program_attribute2,
492       l_camp_rec.program_attribute3,
493       l_camp_rec.program_attribute4,
494       l_camp_rec.program_attribute5,
495       l_camp_rec.program_attribute6,
496       l_camp_rec.program_attribute7,
497       l_camp_rec.program_attribute8,
498       l_camp_rec.program_attribute9,
499       l_camp_rec.program_attribute10,
500       l_camp_rec.program_attribute11,
501       l_camp_rec.program_attribute12,
502       l_camp_rec.program_attribute13,
503       l_camp_rec.program_attribute14,
504       l_camp_rec.program_attribute15
505 );
506 
507    INSERT INTO ams_campaigns_all_tl(
508       campaign_id,
509       language,
510       last_update_date,
511       last_updated_by,
512       creation_date,
513       created_by,
514       last_update_login,
515       source_lang,
516       campaign_name,
517       campaign_theme,
518       description
519    )
520    SELECT
521       l_camp_rec.campaign_id,
522       l.language_code,
523       SYSDATE,
524       FND_GLOBAL.user_id,
525       SYSDATE,
526       FND_GLOBAL.user_id,
527       FND_GLOBAL.conc_login_id,
528       USERENV('LANG'),
529       l_camp_rec.campaign_name,
530       l_camp_rec.campaign_theme,
531       l_camp_rec.description
532    FROM fnd_languages l
533    WHERE l.installed_flag in ('I', 'B')
534    AND NOT EXISTS(
535          SELECT NULL
536          FROM ams_campaigns_all_tl t
537          WHERE t.campaign_id = l_camp_rec.campaign_id
538          AND t.language = l.language_code );
539 
540 
541    IF l_camp_rec.rollup_type <> 'RCAM' THEN
542       -- need to push the source code to ams_source_codes
543       --=====================================================================
544       -- Following Code is added by ptendulk on 08-Oct-2001 to create related
545       -- source information
546       -- ====================================================================
547       l_related_source_code := null ;
548       IF p_camp_rec.related_event_from IS NOT NULL AND
549          p_camp_rec.related_event_from <> FND_API.G_MISS_CHAR THEN
550 
551          l_related_source_code :=  AMS_CampaignRules_PVT.get_event_source_code(p_camp_rec.related_event_from,p_camp_rec.related_event_id);
552       END IF ;
553 
554 
555       AMS_CampaignRules_PVT.push_source_code(
556          l_camp_rec.source_code,
557          'CAMP',
558          l_camp_rec.campaign_id,
559          l_related_source_code,
560          p_camp_rec.related_event_from,
561          p_camp_rec.related_event_id
562       );
563    END IF;
564 
565    -- Following code is commented by ptendulk as we are no longer writing in to attributes.
566    -- create object attributes
567    --IF p_camp_rec.custom_setup_id IS NOT NULL THEN
568    --   AMS_ObjectAttribute_PVT.create_object_attributes(
569    --      p_api_version       => 1.0,
570    --      p_init_msg_list     => FND_API.g_false,
571    --      p_commit            => FND_API.g_false,
572    --      p_validation_level  => FND_API.g_valid_level_full,
573    --      x_return_status     => l_return_status,
574    --      x_msg_count         => x_msg_count,
575    --      x_msg_data          => x_msg_data,
576    --      p_object_type       => 'CAMP',
577    --      p_object_id         => l_camp_rec.campaign_id,
578    --      p_setup_id          => p_camp_rec.custom_setup_id
579    --   );
580    --   IF l_return_status = FND_API.g_ret_sts_error THEN
581    --      RAISE FND_API.g_exc_error;
582    --   ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
583    --      RAISE FND_API.g_exc_unexpected_error;
584    --   END IF;
585    --END IF;
586 
587    -- create object association when channel is event
588    --IF l_camp_rec.media_type_code = 'EVENTS'
589    --   AND l_camp_rec.channel_id IS NOT NULL
590    --THEN
591    --   AMS_CampaignRules_PVT.create_camp_association(
592    --      l_camp_rec.campaign_id,
593    --      l_camp_rec.channel_id,
594    --      l_camp_rec.arc_channel_from,
595    --      l_return_status
596    --   );
597    --   IF l_return_status = FND_API.g_ret_sts_error THEN
598    --      RAISE FND_API.g_exc_error;
599    --   ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
600    --      RAISE FND_API.g_exc_unexpected_error;
601    --   END IF;
602    --END IF;
603 
604    -- Create Access for the owner
605    l_access_rec.act_access_to_object_id := l_camp_rec.campaign_id ;
606    IF l_camp_rec.rollup_type = 'RCAM' THEN
607       l_rollup_type := 'RCAM' ;
608    ELSE
609       l_rollup_type := 'CAMP' ;
610    END IF ;
611 
612    l_access_rec.arc_act_access_to_object := l_rollup_type ;
613    l_access_rec.user_or_role_id := l_camp_rec.owner_user_id ;
614    l_access_rec.arc_user_or_role_type := 'USER' ;
615    l_access_rec.owner_flag := 'Y' ;
616    l_access_rec.delete_flag := 'N' ;
617    l_access_rec.admin_flag := 'Y' ;
618 
619 
620    AMS_Access_Pvt.Create_Access(
621            p_api_version       => l_api_version,
622            p_init_msg_list     => p_init_msg_list,
623            p_commit            => p_commit,
624            p_validation_level  => p_validation_level,
625 
626            x_return_status     => l_return_status,
627            x_msg_count         => x_msg_count,
628            x_msg_data          => x_msg_data,
629 
630            p_access_rec        => l_access_rec,
631            x_access_id         => l_dummy_id
632         );
633 
634    IF l_return_status = FND_API.g_ret_sts_error THEN
635       RAISE FND_API.g_exc_error;
636    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
637       RAISE FND_API.g_exc_unexpected_error;
638    END IF;
639 
640    -- p_arc_act_metric_used_by will have to be changed as l_rollup_type instead of 'CAMP'
641    -- Waiting for gliu to resolve the issue.
642    -- attach seeded metrics  as of Jun01-2001
643    AMS_RefreshMetric_PVT.copy_seeded_metric(
644       p_api_version => 1.0,
645       x_return_status => l_return_status,
646       x_msg_count => x_msg_count,
647       x_msg_data => x_msg_data,
648       p_arc_act_metric_used_by =>l_rollup_type,
649       p_act_metric_used_by_id => l_camp_rec.campaign_id,
650       p_act_metric_used_by_type => NULL
651    );
652    IF l_return_status = FND_API.g_ret_sts_error THEN
653       RAISE FND_API.g_exc_error;
654    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
655       RAISE FND_API.g_exc_unexpected_error;
656    END IF;
657 
658    ------------------------- finish -------------------------------
659    x_camp_id := l_camp_rec.campaign_id;
660 
661    IF FND_API.to_boolean(p_commit) THEN
662       COMMIT;
663    END IF;
664 
665    FND_MSG_PUB.count_and_get(
666          p_encoded => FND_API.g_false,
667          p_count   => x_msg_count,
668          p_data    => x_msg_data
669    );
670 
671    IF (AMS_DEBUG_HIGH_ON) THEN
672 
673 
674 
675    AMS_Utility_PVT.debug_message(l_full_name ||': end');
676 
677    END IF;
678 
679 EXCEPTION
680 
681    WHEN FND_API.g_exc_error THEN
682       ROLLBACK TO create_campaign;
683       x_return_status := FND_API.g_ret_sts_error;
684       FND_MSG_PUB.count_and_get(
685             p_encoded => FND_API.g_false,
686             p_count   => x_msg_count,
687             p_data    => x_msg_data
688       );
689 
690    WHEN FND_API.g_exc_unexpected_error THEN
691       ROLLBACK TO create_campaign;
692       x_return_status := FND_API.g_ret_sts_unexp_error ;
693       FND_MSG_PUB.count_and_get(
694             p_encoded => FND_API.g_false,
695             p_count   => x_msg_count,
696             p_data    => x_msg_data
697       );
698 
699 
700    WHEN OTHERS THEN
701       ROLLBACK TO create_campaign;
702       x_return_status := FND_API.g_ret_sts_unexp_error ;
703 
704       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
705 		THEN
706          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
707       END IF;
708 
709       FND_MSG_PUB.count_and_get(
710             p_encoded => FND_API.g_false,
711             p_count   => x_msg_count,
712             p_data    => x_msg_data
713       );
714 
715 END Create_Campaign;
716 
717 
718 ---------------------------------------------------------------
719 -- PROCEDURE
720 --    delete_campaign
721 --
722 -- HISTORY
723 --    01-Oct-1999    holiu     Created.
724 --    11-Feb-2001    ptendulk  Delete the record if the status
725 --                             is new else update
726 ---------------------------------------------------------------
727 PROCEDURE Delete_Campaign(
728    p_api_version       IN  NUMBER,
729    p_init_msg_list     IN  VARCHAR2 := FND_API.g_false,
730    p_commit            IN  VARCHAR2 := FND_API.g_false,
731 
732    x_return_status     OUT NOCOPY VARCHAR2,
733    x_msg_count         OUT NOCOPY NUMBER,
734    x_msg_data          OUT NOCOPY VARCHAR2,
735 
736    p_camp_id           IN  NUMBER,
737    p_object_version    IN  NUMBER
738 )
739 IS
740 
741    l_api_version CONSTANT NUMBER       := 1.0;
742    l_api_name    CONSTANT VARCHAR2(30) := 'delete_campaign';
743    l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
744 
745    CURSOR c_camp IS
746    SELECT status_code
747    FROM   ams_campaigns_all_b
748    WHERE  campaign_id = p_camp_id
749    AND    object_version_number = p_object_version ;
750    l_status VARCHAR2(30);
751 
752 BEGIN
753 
754    --------------------- initialize -----------------------
755    SAVEPOINT delete_campaign;
756 
757    IF (AMS_DEBUG_HIGH_ON) THEN
758 
759 
760 
761    AMS_Utility_PVT.debug_message(l_full_name||': start');
762 
763    END IF;
764 
765    IF FND_API.to_boolean(p_init_msg_list) THEN
766       FND_MSG_PUB.initialize;
767    END IF;
768 
769    IF NOT FND_API.compatible_api_call(
770          l_api_version,
771          p_api_version,
772          l_api_name,
773          g_pkg_name
774    ) THEN
775       RAISE FND_API.g_exc_unexpected_error;
776    END IF;
777 
778    x_return_status := FND_API.G_RET_STS_SUCCESS;
779 
780    ------------------------ delete ------------------------
781    IF (AMS_DEBUG_HIGH_ON) THEN
782 
783    AMS_Utility_PVT.debug_message(l_full_name ||': delete');
784    END IF;
785 
786    -- Start of code modified by ptendulk on 11-Feb-2001
787    -- Delete the campaign if in new status.
788    OPEN  c_camp ;
789    FETCH c_camp INTO l_status ;
790    IF c_camp%NOTFOUND THEN
791       CLOSE c_camp ;
792       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
793       THEN
794          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
795          FND_MSG_PUB.add;
796       END IF;
797       RAISE FND_API.g_exc_error;
798    END IF ;
799    CLOSE c_camp ;
800 
801    IF l_status = 'NEW' THEN
802       DELETE FROM ams_campaigns_all_b
803       WHERE campaign_id = p_camp_id
804       AND   object_version_number = p_object_version ;
805    ELSE
806       UPDATE ams_campaigns_all_b
807       SET    active_flag = 'N'
808       WHERE  campaign_id = p_camp_id
809       AND    object_version_number = p_object_version;
810    END IF  ;
811    -- End of code modified by ptendulk on 11-Feb-2001
812 
813    --   UPDATE ams_campaigns_all_b
814    --   SET    active_flag = 'N'
815    --   WHERE  campaign_id = p_camp_id
816    --   AND    object_version_number = p_object_version;
817 
818    IF (SQL%NOTFOUND) THEN
819       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
820 		THEN
821          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
822          FND_MSG_PUB.add;
823       END IF;
824       RAISE FND_API.g_exc_error;
825    END IF;
826 
827    -------------------- finish --------------------------
828    IF FND_API.to_boolean(p_commit) THEN
829       COMMIT;
830    END IF;
831 
832    FND_MSG_PUB.count_and_get(
833          p_encoded => FND_API.g_false,
834          p_count   => x_msg_count,
835          p_data    => x_msg_data
836    );
837 
838    IF (AMS_DEBUG_HIGH_ON) THEN
839 
840 
841 
842    AMS_Utility_PVT.debug_message(l_full_name ||': end');
843 
844    END IF;
845 
846 EXCEPTION
847 
848    WHEN FND_API.g_exc_error THEN
849       ROLLBACK TO delete_campaign;
850       x_return_status := FND_API.g_ret_sts_error;
851       FND_MSG_PUB.count_and_get(
852             p_encoded => FND_API.g_false,
853             p_count   => x_msg_count,
854             p_data    => x_msg_data
855       );
856 
857    WHEN FND_API.g_exc_unexpected_error THEN
858       ROLLBACK TO delete_campaign;
859       x_return_status := FND_API.g_ret_sts_unexp_error ;
860       FND_MSG_PUB.count_and_get(
861             p_encoded => FND_API.g_false,
862             p_count   => x_msg_count,
863             p_data    => x_msg_data
864       );
865 
866    WHEN OTHERS THEN
867       ROLLBACK TO delete_campaign;
868       x_return_status := FND_API.g_ret_sts_unexp_error ;
869 
870       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
871       THEN
872          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
873       END IF;
874 
875       FND_MSG_PUB.count_and_get(
876             p_encoded => FND_API.g_false,
877             p_count   => x_msg_count,
878             p_data    => x_msg_data
879       );
880 
881 END Delete_Campaign;
882 
883 
884 -------------------------------------------------------------------
885 -- PROCEDURE
886 --    lock_campaign
887 --
888 -- HISTORY
889 --    10/01/99  holiu  Created.
890 --------------------------------------------------------------------
891 PROCEDURE Lock_Campaign(
892    p_api_version       IN  NUMBER,
893    p_init_msg_list     IN  VARCHAR2 := FND_API.g_false,
894 
895    x_return_status     OUT NOCOPY VARCHAR2,
896    x_msg_count         OUT NOCOPY NUMBER,
897    x_msg_data          OUT NOCOPY VARCHAR2,
898 
899    p_camp_id           IN  NUMBER,
900    p_object_version    IN  NUMBER
901 )
902 IS
903 
904    l_api_version  CONSTANT NUMBER       := 1.0;
905    l_api_name     CONSTANT VARCHAR2(30) := 'lock_campaign';
906    l_full_name    CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
907 
908    l_camp_id      NUMBER;
909 
910    CURSOR c_camp_b IS
911    SELECT campaign_id
912      FROM ams_campaigns_all_b
913     WHERE campaign_id = p_camp_id
914       AND object_version_number = p_object_version
915    FOR UPDATE NOWAIT;
916 
917    CURSOR c_camp_tl IS
918    SELECT campaign_id
919      FROM ams_campaigns_all_tl
920     WHERE campaign_id = p_camp_id
921       AND USERENV('LANG') IN (language, source_lang)
922    FOR UPDATE NOWAIT;
923 
924 BEGIN
925 
926    -------------------- initialize ------------------------
927    IF (AMS_DEBUG_HIGH_ON) THEN
928 
929    AMS_Utility_PVT.debug_message(l_full_name||': start');
930    END IF;
931 
932    IF FND_API.to_boolean(p_init_msg_list) THEN
933       FND_MSG_PUB.initialize;
934    END IF;
935 
936    IF NOT FND_API.compatible_api_call(
937          l_api_version,
938          p_api_version,
939          l_api_name,
940          g_pkg_name
941    ) THEN
942       RAISE FND_API.g_exc_unexpected_error;
943    END IF;
944 
945    x_return_status := FND_API.G_RET_STS_SUCCESS;
946 
947    ------------------------ lock -------------------------
948    IF (AMS_DEBUG_HIGH_ON) THEN
949 
950    AMS_Utility_PVT.debug_message(l_full_name||': lock');
951    END IF;
952 
953    OPEN c_camp_b;
954    FETCH c_camp_b INTO l_camp_id;
955    IF (c_camp_b%NOTFOUND) THEN
956       CLOSE c_camp_b;
957       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
958          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
959          FND_MSG_PUB.add;
960       END IF;
961       RAISE FND_API.g_exc_error;
962    END IF;
963    CLOSE c_camp_b;
964 
965    OPEN c_camp_tl;
966    CLOSE c_camp_tl;
967 
968    -------------------- finish --------------------------
969    FND_MSG_PUB.count_and_get(
970          p_encoded => FND_API.g_false,
971          p_count   => x_msg_count,
972          p_data    => x_msg_data
973    );
974 
975    IF (AMS_DEBUG_HIGH_ON) THEN
976 
977 
978 
979    AMS_Utility_PVT.debug_message(l_full_name ||': end');
980 
981    END IF;
982 
983 EXCEPTION
984 
985    WHEN AMS_Utility_PVT.resource_locked THEN
986       x_return_status := FND_API.g_ret_sts_error;
987       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
988         FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
989         FND_MSG_PUB.add;
990       END IF;
991 
992       FND_MSG_PUB.count_and_get(
993             p_encoded => FND_API.g_false,
994             p_count   => x_msg_count,
995             p_data    => x_msg_data
996       );
997 
998 	WHEN FND_API.g_exc_error THEN
999       x_return_status := FND_API.g_ret_sts_error;
1000       FND_MSG_PUB.count_and_get(
1001             p_encoded => FND_API.g_false,
1002             p_count   => x_msg_count,
1003             p_data    => x_msg_data
1004       );
1005 
1006    WHEN FND_API.g_exc_unexpected_error THEN
1007       x_return_status := FND_API.g_ret_sts_unexp_error ;
1008       FND_MSG_PUB.count_and_get(
1009             p_encoded => FND_API.g_false,
1010             p_count   => x_msg_count,
1011             p_data    => x_msg_data
1012       );
1013 
1014    WHEN OTHERS THEN
1015       x_return_status := FND_API.g_ret_sts_unexp_error ;
1016       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
1017 		THEN
1018          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1019       END IF;
1020 
1021       FND_MSG_PUB.count_and_get(
1022             p_encoded => FND_API.g_false,
1023             p_count   => x_msg_count,
1024             p_data    => x_msg_data
1025       );
1026 
1027 END Lock_Campaign;
1028 
1029 
1030 ---------------------------------------------------------------------
1031 -- PROCEDURE
1032 --    Update_Campaign
1033 --
1034 -- HISTORY
1035 --    10/01/99  holiu     Created.
1036 --    09/27/00  ptendulk  Added currency conversion api to conver the
1037 --                        transaction currency into functional currency
1038 --    01/23/01  julou     Commented out budget_amount_tc, budget_amount_fc,
1039 --                        media_type_code, media_id, channel_id from update
1040 -- 20-May-2001  ptendulk  Commented the if statement before update_camp_source_code
1041 --                        Refer bug#1786964
1042 -- 31-May-2001  ptendulk  Added call to invalidate parent if the parent is changed.
1043 ----------------------------------------------------------------------
1044 PROCEDURE Update_Campaign(
1045    p_api_version       IN  NUMBER,
1046    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
1047    p_commit            IN  VARCHAR2  := FND_API.g_false,
1048    p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
1049 
1050    x_return_status     OUT NOCOPY VARCHAR2,
1051    x_msg_count         OUT NOCOPY NUMBER,
1052    x_msg_data          OUT NOCOPY VARCHAR2,
1053 
1054    p_camp_rec          IN  camp_rec_type
1055 )
1056 IS
1057 
1058    l_source_code_for_event  VARCHAR2(30);
1059    -- end declaration change - 04/13/01 - for related_event
1060 
1061    l_api_version CONSTANT NUMBER := 1.0;
1062    l_api_name    CONSTANT VARCHAR2(30) := 'update_campaign';
1063    l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1064 
1065    l_camp_rec       camp_rec_type;
1066    l_return_status  VARCHAR2(1);
1067    l_rollup_type  VARCHAR2(30);
1068    l_source_code  VARCHAR2(100);
1069 BEGIN
1070 
1071    -------------------- initialize -------------------------
1072    IF (AMS_DEBUG_HIGH_ON) THEN
1073 
1074    AMS_Utility_PVT.debug_message(l_full_name||': start');
1075    END IF;
1076    SAVEPOINT update_campaign;
1077 
1078    IF FND_API.to_boolean(p_init_msg_list) THEN
1079       FND_MSG_PUB.initialize;
1080    END IF;
1081 
1082    IF NOT FND_API.compatible_api_call(
1083          l_api_version,
1084          p_api_version,
1085          l_api_name,
1086          g_pkg_name
1087    ) THEN
1088       RAISE FND_API.g_exc_unexpected_error;
1089    END IF;
1090 
1091    x_return_status := FND_API.G_RET_STS_SUCCESS;
1092 
1093    ----------------------- validate ----------------------
1094    IF (AMS_DEBUG_HIGH_ON) THEN
1095 
1096    AMS_Utility_PVT.debug_message(l_full_name ||': validate');
1097    END IF;
1098 
1099    -- replace g_miss_char/num/date with current column values
1100    complete_camp_rec(p_camp_rec, l_camp_rec);
1101 
1102    -- default campaign_calendar
1103    IF l_camp_rec.start_period_name IS NULL
1104       AND l_camp_rec.end_period_name IS NULL
1105    THEN
1106       l_camp_rec.campaign_calendar := NULL;
1107    ELSE
1108       l_camp_rec.campaign_calendar := FND_PROFILE.value('AMS_CAMPAIGN_DEFAULT_CALENDER');
1109    END IF;
1110 
1111    -- item level
1112    IF (AMS_DEBUG_HIGH_ON) THEN
1113 
1114    AMS_Utility_PVT.debug_message(l_full_name ||': check items');
1115    END IF;
1116    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1117       check_camp_items(
1118          p_camp_rec        => p_camp_rec,
1119          p_validation_mode => JTF_PLSQL_API.g_update,
1120          x_return_status   => l_return_status
1121       );
1122       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1123          RAISE FND_API.g_exc_unexpected_error;
1124       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1125          RAISE FND_API.g_exc_error;
1126       END IF;
1127    END IF;
1128 
1129    -- record level
1130    IF (AMS_DEBUG_HIGH_ON) THEN
1131 
1132    AMS_Utility_PVT.debug_message(l_full_name ||': check record');
1133    END IF;
1134    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
1135       check_camp_record(
1136          p_camp_rec       => p_camp_rec,
1137          p_complete_rec   => l_camp_rec,
1138          x_return_status  => l_return_status
1139       );
1140       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1141          RAISE FND_API.g_exc_unexpected_error;
1142       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1143          RAISE FND_API.g_exc_error;
1144       END IF;
1145    END IF;
1146 
1147    -- inter-entity level
1148    IF (AMS_DEBUG_HIGH_ON) THEN
1149 
1150    AMS_Utility_PVT.debug_message(l_full_name ||': check inter-entity');
1151    END IF;
1152    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_inter_entity THEN
1153       check_camp_inter_entity(
1154          p_camp_rec        => p_camp_rec,
1155          p_complete_rec    => l_camp_rec,
1156          p_validation_mode => JTF_PLSQL_API.g_update,
1157          x_return_status   => l_return_status
1158       );
1159       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1160          RAISE FND_API.g_exc_unexpected_error;
1161       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1162          RAISE FND_API.g_exc_error;
1163       END IF;
1164    END IF;
1165 
1166    -- check update
1167    IF (AMS_DEBUG_HIGH_ON) THEN
1168 
1169    AMS_Utility_PVT.debug_message(l_full_name ||': check update');
1170    END IF;
1171    AMS_CampaignRules_PVT.check_camp_update(
1172          p_camp_rec       => p_camp_rec,
1173          p_complete_rec   => l_camp_rec,
1174          x_return_status  => l_return_status
1175    );
1176    IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1177       RAISE FND_API.g_exc_unexpected_error;
1178    ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1179       RAISE FND_API.g_exc_error;
1180    END IF;
1181 
1182    -- handle inherit_attributes_flag
1183    -- Following code is commented by ptendulk on 07-Feb-2001
1184    -- We are not using it any more.
1185    --IF (AMS_DEBUG_HIGH_ON) THENAMS_Utility_PVT.debug_message(l_full_name ||': handle inherit flag');END IF;
1186    --IF p_camp_rec.rollup_type <> FND_API.g_miss_char
1187    --   OR p_camp_rec.parent_campaign_id <> FND_API.g_miss_num
1188    --THEN
1189    --   AMS_CampaignRules_PVT.handle_camp_inherit_flag(
1190    --      l_camp_rec.parent_campaign_id,
1191    --      l_camp_rec.rollup_type,
1192    --      l_camp_rec.inherit_attributes_flag,
1193    --      l_return_status
1194    --   );
1195    --  IF l_return_status = FND_API.g_ret_sts_error THEN
1196    --      RAISE FND_API.g_exc_error;
1197    --   ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1198    --      RAISE FND_API.g_exc_unexpected_error;
1199    --   END IF;
1200    --END IF;
1201 
1202    -- handle source code update
1203    IF (AMS_DEBUG_HIGH_ON) THEN
1204 
1205    AMS_Utility_PVT.debug_message(l_full_name ||': update source code');
1206    END IF;
1207    IF p_camp_rec.source_code <> FND_API.g_miss_char
1208       OR p_camp_rec.global_flag <> FND_API.g_miss_char
1209       OR p_camp_rec.cascade_source_code_flag <> FND_API.g_miss_char
1210       OR (p_camp_rec.related_event_id IS NULL OR p_camp_rec.related_event_id <> FND_API.g_miss_num)
1211    THEN
1212       --Modified by rrajesh on 04/16/2001 - this method had been modified to
1213       --include related event also.
1214       /*AMS_CampaignRules_PVT.update_camp_source_code(
1215          l_camp_rec.campaign_id,
1216          l_camp_rec.source_code,
1217          l_camp_rec.global_flag,
1218          l_camp_rec.source_code,
1219          l_return_status
1220       );*/
1221 
1222       -- Following line is commented by ptendulk on 20-May-2001 Refer bug#1786964
1223       -- IF l_source_code_for_event <> FND_API.g_miss_char THEN
1224       IF (AMS_DEBUG_HIGH_ON) THEN
1225 
1226       AMS_Utility_PVT.Debug_message('Update the source_code ');
1227       END IF;
1228 
1229       AMS_CampaignRules_PVT.update_camp_source_code(
1230          l_camp_rec.campaign_id,
1231          l_camp_rec.source_code,
1232          l_camp_rec.global_flag,
1233          --l_camp_rec.source_code,
1234          l_source_code,
1235          l_camp_rec.related_event_from,
1236          l_camp_rec.related_event_id,
1237          l_return_status
1238       );
1239       -- END IF;
1240       --end change 04/16/2001 - rrajesh
1241 
1242       -- following code is added by ptendulk on 06-Dec-2002 to fix no copy issue.
1243       -- also changed : pass the variable l_source_code in above api instead of l_camp_rec.source_code
1244       l_camp_rec.source_code := l_source_code ;
1245 
1246       IF l_return_status = FND_API.g_ret_sts_error THEN
1247          RAISE FND_API.g_exc_error;
1248       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1249          RAISE FND_API.g_exc_unexpected_error;
1250       END IF;
1251    END IF;
1252 
1253   -- aranka added 13/12/01 bug# 2148325 start
1254      IF l_camp_rec.rollup_type = 'RCAM' THEN
1255       l_rollup_type := 'RCAM' ;
1256    ELSE
1257       l_rollup_type := 'CAMP' ;
1258    END IF ;
1259 
1260 
1261    -- Change the owner in Access table if the owner is changed.
1262 
1263    IF  p_camp_rec.owner_user_id <> FND_API.g_miss_num
1264    THEN
1265       AMS_CampaignRules_PVT.Update_Owner(
1266            p_api_version       => p_api_version,
1267            p_init_msg_list     => p_init_msg_list,
1268            p_commit            => p_commit,
1269            p_validation_level  => p_validation_level,
1270            x_return_status     => l_return_status,
1271            x_msg_count         => x_msg_count,
1272            x_msg_data          => x_msg_data,
1273            p_object_type       => l_rollup_type ,
1274            p_campaign_id       => l_camp_rec.campaign_id,
1275            p_owner_id          => p_camp_rec.owner_user_id
1276            );
1277       IF l_return_status = FND_API.g_ret_sts_error THEN
1278          RAISE FND_API.g_exc_error;
1279       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1280          RAISE FND_API.g_exc_unexpected_error;
1281       END IF;
1282    END IF ;
1283 
1284   -- aranka added 13/12/01 bug# 2148325 end
1285 
1286    -- following lines of code are added by ptendulk on 31-May-2001
1287    -- Change the rollup if the parent is changed
1288    IF  p_camp_rec.parent_campaign_id IS NULL OR
1289        p_camp_rec.parent_campaign_id  <> FND_API.g_miss_num
1290    THEN
1291       AMS_CampaignRules_PVT.Update_Rollup(
1292            p_api_version       => p_api_version,
1293            p_init_msg_list     => p_init_msg_list,
1294            p_commit            => p_commit,
1295            p_validation_level  => p_validation_level,
1296            x_return_status     => l_return_status,
1297            x_msg_count         => x_msg_count,
1298            x_msg_data          => x_msg_data,
1299            p_campaign_id       => l_camp_rec.campaign_id,
1300            p_parent_id         => p_camp_rec.parent_Campaign_id
1301            );
1302       IF l_return_status = FND_API.g_ret_sts_error THEN
1303          RAISE FND_API.g_exc_error;
1304       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1305          RAISE FND_API.g_exc_unexpected_error;
1306       END IF;
1307    END IF ;
1308 
1309    -- Following code is commented by ptendulk on 07-Feb-2001
1310    -- as there won't be any budget amount at campaigns level.
1311    -- ==========================================================
1312    -- Following code is added by ptendulk on 09/27/2000
1313    -- the code will convert the transaction currency in to
1314    -- functional currency.
1315    -- ==========================================================
1316    IF p_camp_rec.budget_amount_tc IS NOT NULL THEN
1317        IF p_camp_rec.budget_amount_tc <> FND_API.g_miss_num THEN
1318           AMS_CampaignRules_PVT.Convert_Camp_Currency(
1319              p_tc_curr     => l_camp_rec.transaction_currency_code,
1320              p_tc_amt      => l_camp_rec.budget_amount_tc,
1321              x_fc_curr     => l_camp_rec.functional_currency_code,
1322              x_fc_amt      => l_camp_rec.budget_amount_fc
1323              ) ;
1324       END IF ;
1325    ELSE
1326       l_camp_rec.budget_amount_fc := null ;
1327    END IF;
1328 
1329 
1330    -------------------------- update --------------------
1331    IF (AMS_DEBUG_HIGH_ON) THEN
1332 
1333    AMS_Utility_PVT.debug_message(l_full_name ||': update');
1334    END IF;
1335 
1336    -----------------------------------------------------------------
1337    -- budget_amount_tc, budget_amount_fc, media_type_code, media_id,
1338    -- channel_id are commented out by julou on 01/23/00
1339    -----------------------------------------------------------------
1340    UPDATE ams_campaigns_all_b SET
1341       last_update_date = SYSDATE,
1342       last_updated_by = FND_GLOBAL.user_id,
1343       last_update_login = FND_GLOBAL.conc_login_id,
1344       object_version_number = l_camp_rec.object_version_number + 1,
1345       owner_user_id = l_camp_rec.owner_user_id,
1346       active_flag = NVL(l_camp_rec.active_flag, 'Y'),
1347       private_flag = NVL(l_camp_rec.private_flag, 'N'),
1348       partner_flag = NVL(l_camp_rec.partner_flag, 'N'),
1349       template_flag = NVL(l_camp_rec.template_flag, 'N'),
1350       cascade_source_code_flag = NVL(l_camp_rec.cascade_source_code_flag, 'N'),
1351       inherit_attributes_flag = NVL(l_camp_rec.inherit_attributes_flag,'N'),
1352       source_code = l_camp_rec.source_code,
1353       rollup_type = l_camp_rec.rollup_type,
1354       campaign_type = l_camp_rec.campaign_type,
1355       media_type_code = l_camp_rec.media_type_code,
1356       priority = l_camp_rec.priority,
1357       fund_source_type = l_camp_rec.fund_source_type,
1358       fund_source_id = l_camp_rec.fund_source_id,
1359       parent_campaign_id = l_camp_rec.parent_campaign_id,
1360       application_id = l_camp_rec.application_id,
1361       qp_list_header_id = l_camp_rec.qp_list_header_id,
1362       media_id = l_camp_rec.media_id,
1363       channel_id = l_camp_rec.channel_id,
1364       event_type = l_camp_rec.event_type,
1365       arc_channel_from = l_camp_rec.arc_channel_from,
1366       dscript_name = l_camp_rec.dscript_name,
1367       transaction_currency_code = l_camp_rec.transaction_currency_code,
1368       functional_currency_code = l_camp_rec.functional_currency_code,
1369       budget_amount_tc = l_camp_rec.budget_amount_tc,
1370       budget_amount_fc = l_camp_rec.budget_amount_fc,
1371       forecasted_plan_start_date = l_camp_rec.forecasted_plan_start_date,
1372       forecasted_plan_end_date = l_camp_rec.forecasted_plan_end_date,
1373       forecasted_exec_start_date = l_camp_rec.forecasted_exec_start_date,
1374       forecasted_exec_end_date = l_camp_rec.forecasted_exec_end_date,
1375       actual_plan_start_date = l_camp_rec.actual_plan_start_date,
1376       actual_plan_end_date = l_camp_rec.actual_plan_end_date,
1377       actual_exec_start_date = l_camp_rec.actual_exec_start_date,
1378       actual_exec_end_date = l_camp_rec.actual_exec_end_date,
1379       inbound_url = l_camp_rec.inbound_url,
1380       inbound_email_id = l_camp_rec.inbound_email_id,
1381       inbound_phone_no = l_camp_rec.inbound_phone_no,
1382       duration = l_camp_rec.duration,
1383       duration_uom_code = l_camp_rec.duration_uom_code,
1384       ff_priority = l_camp_rec.ff_priority,
1385       ff_override_cover_letter = l_camp_rec.ff_override_cover_letter,
1386       ff_shipping_method = l_camp_rec.ff_shipping_method,
1387       ff_carrier = l_camp_rec.ff_carrier,
1388       content_source = l_camp_rec.content_source,
1389       cc_call_strategy = l_camp_rec.cc_call_strategy,
1390       cc_manager_user_id = l_camp_rec.cc_manager_user_id,
1391       forecasted_revenue = l_camp_rec.forecasted_revenue,
1392       actual_revenue = l_camp_rec.actual_revenue,
1393       forecasted_cost = l_camp_rec.forecasted_cost,
1394       actual_cost = l_camp_rec.actual_cost,
1395       forecasted_response = l_camp_rec.forecasted_response,
1396       actual_response = l_camp_rec.actual_response,
1397       target_response = l_camp_rec.target_response,
1398       country_code = l_camp_rec.country_code,
1399       language_code = l_camp_rec.language_code,
1400       attribute_category = l_camp_rec.attribute_category,
1401       attribute1 = l_camp_rec.attribute1,
1402       attribute2 = l_camp_rec.attribute2,
1403       attribute3 = l_camp_rec.attribute3,
1404       attribute4 = l_camp_rec.attribute4,
1405       attribute5 = l_camp_rec.attribute5,
1406       attribute6 = l_camp_rec.attribute6,
1407       attribute7 = l_camp_rec.attribute7,
1408       attribute8 = l_camp_rec.attribute8,
1409       attribute9 = l_camp_rec.attribute9,
1410       attribute10 = l_camp_rec.attribute10,
1411       attribute11 = l_camp_rec.attribute11,
1412       attribute12 = l_camp_rec.attribute12,
1413       attribute13 = l_camp_rec.attribute13,
1414       attribute14 = l_camp_rec.attribute14,
1415       attribute15 = l_camp_rec.attribute15,
1416       --version_no = l_camp_rec.version_no,
1417       campaign_calendar = l_camp_rec.campaign_calendar,
1418       start_period_name = l_camp_rec.start_period_name,
1419       end_period_name = l_camp_rec.end_period_name,
1420       city_id = l_camp_rec.city_id,
1421       global_flag = NVL(l_camp_rec.global_flag, 'N'),
1422       custom_setup_id = l_camp_rec.custom_setup_id,
1423       show_campaign_flag = NVL(l_camp_rec.show_campaign_flag, 'Y'),
1424       business_unit_id = l_camp_rec.business_unit_id,
1425       program_attribute_category = l_camp_rec.program_attribute_category,
1426       program_attribute1 = l_camp_rec.program_attribute1,
1427       program_attribute2 = l_camp_rec.program_attribute2,
1428       program_attribute3 = l_camp_rec.program_attribute3,
1429       program_attribute4 = l_camp_rec.program_attribute4,
1430       program_attribute5 = l_camp_rec.program_attribute5,
1431       program_attribute6 = l_camp_rec.program_attribute6,
1432       program_attribute7 = l_camp_rec.program_attribute7,
1433       program_attribute8 = l_camp_rec.program_attribute8,
1434       program_attribute9 = l_camp_rec.program_attribute9,
1435       program_attribute10 = l_camp_rec.program_attribute10,
1436       program_attribute11 = l_camp_rec.program_attribute11,
1437       program_attribute12 = l_camp_rec.program_attribute12,
1438       program_attribute13 = l_camp_rec.program_attribute13,
1439       program_attribute14 = l_camp_rec.program_attribute14,
1440       program_attribute15 = l_camp_rec.program_attribute15
1441       --Added by rrajesh on 04/13/01 - to update related_event_fields
1442       ,related_event_id = l_camp_rec.related_event_id
1443       ,related_event_from = l_camp_rec.related_event_from
1444       --end change 04/13/01 - related event
1445    WHERE campaign_id = l_camp_rec.campaign_id
1446    AND object_version_number = l_camp_rec.object_version_number;
1447 
1448    IF (SQL%NOTFOUND) THEN
1449       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1450          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1451          FND_MSG_PUB.add;
1452       END IF;
1453       RAISE FND_API.g_exc_error;
1454    END IF;
1455 
1456    UPDATE ams_campaigns_all_tl SET
1457       campaign_name = l_camp_rec.campaign_name,
1458       campaign_theme = l_camp_rec.campaign_theme,
1459       description = l_camp_rec.description,
1460       last_update_date = SYSDATE,
1461       last_updated_by = FND_GLOBAL.user_id,
1462       last_update_login = FND_GLOBAL.conc_login_id,
1463       source_lang = USERENV('LANG')
1464    WHERE campaign_id = l_camp_rec.campaign_id
1465    AND USERENV('LANG') IN (language, source_lang);
1466 
1467    IF (SQL%NOTFOUND) THEN
1468       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1469          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1470          FND_MSG_PUB.add;
1471       END IF;
1472       RAISE FND_API.g_exc_error;
1473    END IF;
1474 
1475    -- create object association when channel is event
1476    --IF l_camp_rec.media_type_code = 'EVENTS' THEN
1477    --   AMS_CampaignRules_PVT.create_camp_association(
1478    --      l_camp_rec.campaign_id,
1479    --      l_camp_rec.channel_id,
1480    --      l_camp_rec.arc_channel_from,
1481    --      l_return_status
1482    --   );
1483    --   IF l_return_status = FND_API.g_ret_sts_error THEN
1484    --      RAISE FND_API.g_exc_error;
1485    --   ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1486    --      RAISE FND_API.g_exc_unexpected_error;
1487    --   END IF;
1488    --END IF;
1489 
1490    -- update campaign status through workflow
1491    AMS_CampaignRules_PVT.update_camp_status(
1492       l_camp_rec.campaign_id,
1493       l_camp_rec.user_status_id,
1494       l_camp_rec.budget_amount_tc,
1495       l_camp_rec.parent_campaign_id
1496    );
1497 
1498    -------------------- finish --------------------------
1499    IF FND_API.to_boolean(p_commit) THEN
1500       COMMIT;
1501    END IF;
1502 
1503    FND_MSG_PUB.count_and_get(
1504          p_encoded => FND_API.g_false,
1505          p_count   => x_msg_count,
1506          p_data    => x_msg_data
1507    );
1508 
1509    IF (AMS_DEBUG_HIGH_ON) THEN
1510 
1511 
1512 
1513    AMS_Utility_PVT.debug_message(l_full_name ||': end');
1514 
1515    END IF;
1516 
1517 EXCEPTION
1518 
1519    WHEN FND_API.g_exc_error THEN
1520       ROLLBACK TO update_campaign;
1521       x_return_status := FND_API.g_ret_sts_error;
1522       FND_MSG_PUB.count_and_get(
1523             p_encoded => FND_API.g_false,
1524             p_count   => x_msg_count,
1525             p_data    => x_msg_data
1526       );
1527 
1528    WHEN FND_API.g_exc_unexpected_error THEN
1529       ROLLBACK TO update_campaign;
1530       x_return_status := FND_API.g_ret_sts_unexp_error;
1531       FND_MSG_PUB.count_and_get(
1532             p_encoded => FND_API.g_false,
1533             p_count   => x_msg_count,
1534             p_data    => x_msg_data
1535       );
1536 
1537    WHEN OTHERS THEN
1538       ROLLBACK TO update_campaign;
1539       x_return_status := FND_API.g_ret_sts_unexp_error;
1540 
1541       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
1542       THEN
1543          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1544       END IF;
1545 
1546       FND_MSG_PUB.count_and_get(
1547             p_encoded => FND_API.g_false,
1548             p_count   => x_msg_count,
1549             p_data    => x_msg_data
1550       );
1551 
1552 END Update_Campaign;
1553 
1554 
1555 --==================================================================
1556 -- PROCEDURE
1557 --    Validate_Campaign
1558 --
1559 -- NOTE
1560 --
1561 -- HISTORY
1562 --   01-Oct-1999  holiu      Created.
1563 --==================================================================
1564 PROCEDURE validate_campaign(
1565    p_api_version       IN  NUMBER,
1566    p_init_msg_list     IN  VARCHAR2 := FND_API.g_false,
1567    p_validation_level  IN  NUMBER   := FND_API.g_valid_level_full,
1568 
1569    x_return_status     OUT NOCOPY VARCHAR2,
1570    x_msg_count         OUT NOCOPY NUMBER,
1571    x_msg_data          OUT NOCOPY VARCHAR2,
1572 
1573    p_camp_rec          IN  camp_rec_type
1574 )
1575 IS
1576 
1577    l_api_version CONSTANT NUMBER       := 1.0;
1578    l_api_name    CONSTANT VARCHAR2(30) := 'validate_campaign';
1579    l_full_name   CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1580 
1581    l_return_status VARCHAR2(1);
1582 
1583 BEGIN
1584 
1585    ----------------------- initialize --------------------
1586    IF (AMS_DEBUG_HIGH_ON) THEN
1587 
1588    AMS_Utility_PVT.debug_message(l_full_name||': start');
1589    END IF;
1590 
1591    IF FND_API.to_boolean(p_init_msg_list) THEN
1592       FND_MSG_PUB.initialize;
1593    END IF;
1594 
1595    IF NOT FND_API.compatible_api_call(
1596          l_api_version,
1597          p_api_version,
1598          l_api_name,
1599          g_pkg_name
1600    ) THEN
1601       RAISE FND_API.g_exc_unexpected_error;
1602    END IF;
1603 
1604    x_return_status := FND_API.g_ret_sts_success;
1605 
1606    ---------------------- validate ------------------------
1607    IF (AMS_DEBUG_HIGH_ON) THEN
1608 
1609    AMS_Utility_PVT.debug_message(l_full_name||': check items');
1610    END IF;
1611 
1612    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1613       check_camp_items(
1614          p_camp_rec        => p_camp_rec,
1615          p_validation_mode => JTF_PLSQL_API.g_create,
1616          x_return_status   => l_return_status
1617       );
1618       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1619          RAISE FND_API.g_exc_unexpected_error;
1620       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1621          RAISE FND_API.g_exc_error;
1622       END IF;
1623    END IF;
1624 
1625    IF (AMS_DEBUG_HIGH_ON) THEN
1626 
1627 
1628 
1629    AMS_Utility_PVT.debug_message(l_full_name||': check record');
1630 
1631    END IF;
1632 
1633    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
1634       check_camp_record(
1635          p_camp_rec       => p_camp_rec,
1636          p_complete_rec   => p_camp_rec,
1637          x_return_status  => l_return_status
1638       );
1639       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1640          RAISE FND_API.g_exc_unexpected_error;
1641       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1642          RAISE FND_API.g_exc_error;
1643       END IF;
1644    END IF;
1645 
1646    IF (AMS_DEBUG_HIGH_ON) THEN
1647 
1648 
1649 
1650    AMS_Utility_PVT.debug_message(l_full_name||': check inter-entity');
1651 
1652    END IF;
1653 
1654    IF p_validation_level >= JTF_PLSQL_API.g_valid_level_inter_entity THEN
1655       check_camp_inter_entity(
1656          p_camp_rec        => p_camp_rec,
1657          p_complete_rec    => p_camp_rec,
1658          p_validation_mode => JTF_PLSQL_API.g_create,
1659          x_return_status   => l_return_status
1660       );
1661       IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1662          RAISE FND_API.g_exc_unexpected_error;
1663       ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1664          RAISE FND_API.g_exc_error;
1665       END IF;
1666    END IF;
1667 
1668    -------------------- finish --------------------------
1669    FND_MSG_PUB.count_and_get(
1670          p_encoded => FND_API.g_false,
1671          p_count   => x_msg_count,
1672          p_data    => x_msg_data
1673    );
1674 
1675    IF (AMS_DEBUG_HIGH_ON) THEN
1676 
1677 
1678 
1679    AMS_Utility_PVT.debug_message(l_full_name ||': end');
1680 
1681    END IF;
1682 
1683 EXCEPTION
1684 
1685    WHEN FND_API.g_exc_error THEN
1686       x_return_status := FND_API.g_ret_sts_error;
1687       FND_MSG_PUB.count_and_get(
1688             p_encoded => FND_API.g_false,
1689             p_count   => x_msg_count,
1690             p_data    => x_msg_data
1691       );
1692 
1693    WHEN FND_API.g_exc_unexpected_error THEN
1694       x_return_status := FND_API.g_ret_sts_unexp_error ;
1695       FND_MSG_PUB.count_and_get(
1696             p_encoded => FND_API.g_false,
1697             p_count   => x_msg_count,
1698             p_data    => x_msg_data
1699       );
1700 
1701    WHEN OTHERS THEN
1702       x_return_status := FND_API.g_ret_sts_unexp_error;
1703       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
1704 		THEN
1705          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1706       END IF;
1707 
1708       FND_MSG_PUB.count_and_get(
1709             p_encoded => FND_API.g_false,
1710             p_count   => x_msg_count,
1711             p_data    => x_msg_data
1712       );
1713 
1714 END validate_campaign;
1715 
1716 
1717 --====================================================================
1718 -- PROCEDURE
1719 --    check_camp_req_items
1720 --
1721 -- NOTES
1722 --    1. We don't check status_date and any flags.
1723 --
1724 -- HISTORY
1725 --   01-Oct-1999   holiu      Created.
1726 --   23-Jan-2001   julou      Added check for actual_exec_end_date
1727 --   06-Feb-2001   ptendulk   Modified for Hornet.
1728 --
1729 --====================================================================
1730 
1731 PROCEDURE check_camp_req_items(
1732    p_camp_rec       IN  camp_rec_type,
1733    x_return_status  OUT NOCOPY VARCHAR2
1734 )
1735 IS
1736 BEGIN
1737 
1738    x_return_status := FND_API.g_ret_sts_success;
1739 
1740    ------------------------ owner_user_id --------------------------
1741    IF p_camp_rec.owner_user_id IS NULL THEN
1742       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1743       THEN
1744          FND_MESSAGE.set_name('AMS', 'AMS_CAMP_NO_OWNER_ID');
1745          FND_MSG_PUB.add;
1746       END IF;
1747       x_return_status := FND_API.g_ret_sts_error;
1748    END IF;
1749 
1750    ------------------------ user_status_id --------------------------
1751    IF p_camp_rec.user_status_id IS NULL THEN
1752       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1753       THEN
1754          FND_MESSAGE.set_name('AMS', 'AMS_CAMP_NO_USER_STATUS_ID');
1755          FND_MSG_PUB.add;
1756       END IF;
1757       x_return_status := FND_API.g_ret_sts_error;
1758    END IF;
1759 
1760    ------------------------ rollup_type --------------------------
1761    IF p_camp_rec.rollup_type IS NULL THEN
1762       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1763       THEN
1764          FND_MESSAGE.set_name('AMS', 'AMS_CAMP_NO_ROOLUP_TYPE');
1765          FND_MSG_PUB.add;
1766       END IF;
1767       x_return_status := FND_API.g_ret_sts_error;
1768    END IF;
1769 
1770    ------------------------ application_id --------------------------
1771    IF p_camp_rec.application_id IS NULL THEN
1772       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1773       THEN
1774          FND_MESSAGE.set_name('AMS', 'AMS_API_NO_APPLICATION_ID');
1775          FND_MSG_PUB.add;
1776       END IF;
1777 
1778       x_return_status := FND_API.g_ret_sts_error;
1779    END IF;
1780 
1781    ------------------------ campaign_name --------------------------
1782    IF p_camp_rec.campaign_name IS NULL THEN
1783       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1784       THEN
1785          FND_MESSAGE.set_name('AMS', 'AMS_CAMP_NO_NAME');
1786          FND_MSG_PUB.add;
1787       END IF;
1788       x_return_status := FND_API.g_ret_sts_error;
1789    END IF;
1790 
1791    ------------------------ Start Date  --------------------------
1792    IF p_camp_rec.actual_exec_start_date IS NULL THEN
1793       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1794       THEN
1795          FND_MESSAGE.set_name('AMS', 'AMS_CAMP_NO_START_DATE');
1796          FND_MSG_PUB.add;
1797       END IF;
1798       x_return_status := FND_API.g_ret_sts_error;
1799    END IF;
1800 
1801 
1802 END Check_Camp_Req_Items;
1803 
1804 
1805 ---------------------------------------------------------------------
1806 -- PROCEDURE
1807 --    check_camp_uk_items
1808 --
1809 -- HISTORY
1810 --    10/01/99   holiu     Created.
1811 --  07-Mar-2001  ptendulk  Moved the source code unique test in inter entitiy.
1812 ---------------------------------------------------------------------
1813 PROCEDURE Check_Camp_Uk_Items(
1814    p_camp_rec        IN  camp_rec_type,
1815    p_validation_mode IN  VARCHAR2 := JTF_PLSQL_API.g_create,
1816    x_return_status   OUT NOCOPY VARCHAR2
1817 )
1818 IS
1819    l_valid_flag  VARCHAR2(1);
1820 BEGIN
1821 
1822    x_return_status := FND_API.g_ret_sts_success;
1823 
1824    -- For create_campaign, when campaign_id is passed in, we need to
1825    -- check if this campaign_id is unique.
1826    IF p_validation_mode = JTF_PLSQL_API.g_create
1827    AND p_camp_rec.campaign_id IS NOT NULL
1828    THEN
1829       IF AMS_Utility_PVT.check_uniqueness(
1830                              'ams_campaigns_all_b',
1831                              'campaign_id = ' || p_camp_rec.campaign_id
1832                              ) = FND_API.g_false
1833       THEN
1834          AMS_Utility_PVT.Error_Message('AMS_CAMP_DUPLICATE_ID');
1835          x_return_status := FND_API.g_ret_sts_error;
1836          RETURN;
1837       END IF;
1838    END IF;
1839 
1840 END Check_Camp_Uk_Items;
1841 
1842 
1843 ---------------------------------------------------------------------
1844 -- PROCEDURE
1845 --    check_camp_fk_items
1846 --
1847 -- HISTORY
1848 --    10/01/99  holiu  Created.
1849 ---------------------------------------------------------------------
1850 PROCEDURE Check_Camp_Fk_Items(
1851    p_camp_rec        IN  camp_rec_type,
1852    x_return_status   OUT NOCOPY VARCHAR2
1853 )
1854 IS
1855    l_where_clause     VARCHAR2(4000);  -- Used by Check_FK_Exists.
1856    l_table_name                  VARCHAR2(30);
1857    l_pk_name                     VARCHAR2(30);
1858    l_pk_value                    VARCHAR2(30);
1859    l_pk_data_type                VARCHAR2(30);
1860 
1861 BEGIN
1862 
1863    x_return_status := FND_API.g_ret_sts_success;
1864 
1865    ----------------------- owner_user_id ------------------------
1866    IF p_camp_rec.owner_user_id <> FND_API.g_miss_num THEN
1867       IF AMS_Utility_PVT.check_fk_exists(
1868 --            'ams_jtf_rs_emp_v',
1869             'jtf_rs_resource_extns',
1870             'resource_id',
1871             p_camp_rec.owner_user_id
1872          ) = FND_API.g_false
1873       THEN
1874          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_OWNER_USER_ID');
1875          x_return_status := FND_API.g_ret_sts_error;
1876          RETURN;
1877       END IF;
1878    END IF;
1879 
1880    --------------------- application_id ------------------------
1881    IF p_camp_rec.application_id <> FND_API.g_miss_num THEN
1882       IF AMS_Utility_PVT.check_fk_exists(
1883             'fnd_application',
1884             'application_id',
1885             p_camp_rec.application_id
1886          ) = FND_API.g_false
1887       THEN
1888          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_APPLICATION_ID');
1889          x_return_status := FND_API.g_ret_sts_error;
1890          RETURN;
1891       END IF;
1892    END IF;
1893 
1894    --------------------- qp_list_header_id ------------------------
1895    --IF p_camp_rec.qp_list_header_id <> FND_API.g_miss_num
1896    --   AND p_camp_rec.qp_list_header_id IS NOT NULL
1897    --THEN
1898    --   IF AMS_Utility_PVT.check_fk_exists(
1899    --        'qp_list_headers_b',
1900    --         'list_header_id',
1901    --         p_camp_rec.qp_list_header_id
1902    --      ) = FND_API.g_false
1903    --  THEN
1904    --      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1905    --      THEN
1906    --         FND_MESSAGE.set_name('AMS', 'AMS_CAMP_BAD_QP_LIST_ID');
1907    --         FND_MSG_PUB.add;
1908    --      END IF;
1909    --      x_return_status := FND_API.g_ret_sts_error;
1910    --      RETURN;
1911    --   END IF;
1912    --END IF;
1913 
1914    --------------------- dscript_name ------------------------
1915    --IF p_camp_rec.dscript_name <> FND_API.g_miss_char
1916    --   AND p_camp_rec.dscript_name IS NOT NULL
1917    --THEN
1918    --   IF AMS_Utility_PVT.check_fk_exists(
1919    --         'ies_deployed_scripts',
1920    --         'dscript_name',
1921    --         p_camp_rec.dscript_name
1922    --      ) = FND_API.g_false
1923    --   THEN
1924    --      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1925    --      THEN
1926    --         FND_MESSAGE.set_name('AMS', 'AMS_CAMP_BAD_DSCRIPT_NAME');
1927    --         FND_MSG_PUB.add;
1928    --      END IF;
1929    --      x_return_status := FND_API.g_ret_sts_error;
1930    --      RETURN;
1931    --   END IF;
1932    -- END IF;
1933 
1934    --------------------- custom_setup_id ----------------------------
1935    IF p_camp_rec.custom_setup_id <> FND_API.g_miss_num
1936       AND p_camp_rec.custom_setup_id IS NOT NULL
1937    THEN
1938       l_table_name              := 'ams_custom_setups_b' ;
1939       l_pk_name                 := 'custom_setup_id' ;
1940       l_pk_value                := p_camp_rec.custom_setup_id;
1941       l_pk_data_type            := AMS_Utility_PVT.G_NUMBER ;
1942       l_where_clause            := ' object_type = '''||p_camp_rec.rollup_type ||'''' ;
1943 
1944       IF AMS_Utility_PVT.check_fk_exists(
1945                    p_table_name              => l_table_name,
1946                    p_pk_name                 => l_pk_name,
1947                    p_pk_value                => l_pk_value,
1948                    p_pk_data_type            => l_pk_data_type,
1949                    p_additional_where_clause => l_where_clause
1950          ) = FND_API.g_false
1951       THEN
1952          AMS_Utility_Pvt.Error_Message('AMS_CAMP_BAD_CUSTOM_SETUP') ;
1953          x_return_status := FND_API.g_ret_sts_error;
1954          RETURN;
1955       END IF;
1956 
1957    END IF;
1958 
1959    --------------------- city_id ----------------------------
1960    IF p_camp_rec.city_id <> FND_API.g_miss_num
1961       AND p_camp_rec.city_id IS NOT NULL
1962    THEN
1963       IF AMS_Utility_PVT.check_fk_exists(
1964             'jtf_loc_hierarchies_b',
1965             'location_hierarchy_id',
1966             p_camp_rec.city_id,
1967             AMS_Utility_PVT.g_number,
1968             NULL
1969          ) = FND_API.g_false
1970       THEN
1971          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_CITY');
1972          x_return_status := FND_API.g_ret_sts_error;
1973          RETURN;
1974       END IF;
1975    END IF;
1976 
1977    --------------------- Task id  ----------------------------
1978    IF p_camp_rec.task_id <> FND_API.g_miss_num
1979       AND p_camp_rec.task_id IS NOT NULL
1980    THEN
1981       IF AMS_Utility_PVT.check_fk_exists(
1982             'jtf_tasks_b',
1983             'task_id',
1984             p_camp_rec.task_id,
1985             AMS_Utility_PVT.g_number,
1986             NULL
1987          ) = FND_API.g_false
1988       THEN
1989          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_TASK');
1990          x_return_status := FND_API.g_ret_sts_error;
1991          RETURN;
1992       END IF;
1993    END IF;
1994 
1995    --------------------- Language  ----------------------------
1996    IF p_camp_rec.language_code <> FND_API.g_miss_char
1997       AND p_camp_rec.language_code IS NOT NULL
1998    THEN
1999       IF AMS_Utility_PVT.check_fk_exists(
2000             'fnd_languages',
2001             'language_code',
2002             p_camp_rec.language_code,
2003             AMS_Utility_PVT.g_varchar2,
2004             NULL
2005          ) = FND_API.g_false
2006       THEN
2007          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_LANG');
2008          x_return_status := FND_API.g_ret_sts_error;
2009          RETURN;
2010       END IF;
2011    END IF;
2012 
2013 END Check_Camp_Fk_Items;
2014 
2015 
2016 ---------------------------------------------------------------------
2017 -- PROCEDURE
2018 --    Check_Camp_Lookup_Items
2019 --
2020 -- HISTORY
2021 --    10/01/99  holiu  Created.
2022 ---------------------------------------------------------------------
2023 PROCEDURE Check_Camp_Lookup_Items(
2024    p_camp_rec        IN  camp_rec_type,
2025    x_return_status   OUT NOCOPY VARCHAR2
2026 )
2027 IS
2028 BEGIN
2029 
2030    x_return_status := FND_API.g_ret_sts_success;
2031 
2032    ----------------------- rollup_type ------------------------
2033    IF p_camp_rec.rollup_type <> FND_API.g_miss_char
2034    THEN
2035       IF AMS_Utility_PVT.check_lookup_exists(
2036             p_lookup_type => 'AMS_ROLLUP_TYPE',
2037             p_lookup_code => p_camp_rec.rollup_type
2038          ) = FND_API.g_false
2039       THEN
2040          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_ROLLUP_TYPE') ;
2041          x_return_status := FND_API.g_ret_sts_error;
2042          RETURN;
2043       END IF;
2044    END IF;
2045 
2046 ---------------------------------------------------------------------
2047 -- 01/24/01  julou Commented out the following check as dont need media_type_code
2048 ---------------------------------------------------------------------
2049 /*
2050    ----------------------- media_type ------------------------
2051    IF p_camp_rec.media_type_code <> FND_API.g_miss_char THEN
2052       IF AMS_Utility_PVT.check_lookup_exists(
2053             p_lookup_type => 'AMS_MEDIA_TYPE',
2054             p_lookup_code => p_camp_rec.media_type_code
2055          ) = FND_API.g_false
2056       THEN
2057          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
2058          THEN
2059             FND_MESSAGE.set_name('AMS', 'AMS_CAMP_BAD_MEDIA_TYPE');
2060             FND_MSG_PUB.add;
2061          END IF;
2062          x_return_status := FND_API.g_ret_sts_error;
2063          RETURN;
2064       END IF;
2065    END IF;
2066 */
2067    ----------------------- campaign_type ------------------------
2068 
2069    -- Following code is commented by ptendulk on 12-Feb-2001
2070    ----------------------- event_type ------------------------
2071    --IF p_camp_rec.event_type <> FND_API.g_miss_char
2072    --   AND p_camp_rec.event_type IS NOT NULL
2073    --THEN
2074    --   IF AMS_Utility_PVT.check_lookup_exists(
2075    --         p_lookup_type => 'AMS_EVENT_TYPE',
2076    --         p_lookup_code => p_camp_rec.event_type
2077    --      ) = FND_API.g_false
2078    --   THEN
2079    --      AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_EVENT_TYPE') ;
2080    --      x_return_status := FND_API.g_ret_sts_error;
2081    --      RETURN;
2082    --   END IF;
2083    --END IF;
2084 
2085    ----------------------- priority ------------------------
2086    IF p_camp_rec.priority <> FND_API.g_miss_char
2087       AND p_camp_rec.priority IS NOT NULL
2088    THEN
2089       IF AMS_Utility_PVT.check_lookup_exists(
2090             p_lookup_type => 'AMS_PRIORITY',
2091             p_lookup_code => p_camp_rec.priority
2092          ) = FND_API.g_false
2093       THEN
2094          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_PRIORITY') ;
2095          x_return_status := FND_API.g_ret_sts_error;
2096          RETURN;
2097       END IF;
2098    END IF;
2099 
2100    ----------------------- priority ------------------------
2101    IF p_camp_rec.priority <> FND_API.g_miss_char
2102       AND p_camp_rec.priority IS NOT NULL
2103    THEN
2104       IF AMS_Utility_PVT.check_lookup_exists(
2105             p_lookup_type => 'AMS_PRIORITY',
2106             p_lookup_code => p_camp_rec.priority
2107          ) = FND_API.g_false
2108       THEN
2109          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_PRIORITY') ;
2110          x_return_status := FND_API.g_ret_sts_error;
2111          RETURN;
2112       END IF;
2113    END IF;
2114 
2115    ----------------------- Related Event from  ------------------------
2116    IF p_camp_rec.related_event_from <> FND_API.g_miss_char
2117       AND p_camp_rec.related_event_from IS NOT NULL
2118    THEN
2119       IF p_camp_rec.related_event_from <> 'EVEH' AND
2120          p_camp_rec.related_event_from <> 'EVEO'
2121 	 --Added by rrajesh on 04/16/01 - EONE
2122          AND p_camp_rec.related_event_from <> 'EONE'
2123       THEN
2124          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_EVEH') ;
2125          x_return_status := FND_API.g_ret_sts_error;
2126          RETURN;
2127       END IF;
2128    END IF;
2129 
2130    -- Following line of code is Commented by ptendulk as it is no longer being used.
2131    ------------------ ff_shipping_method ------------------------
2132    --IF p_camp_rec.ff_shipping_method <> FND_API.g_miss_char
2133    --   AND p_camp_rec.ff_shipping_method IS NOT NULL
2134    --THEN
2135    --   IF AMS_Utility_PVT.check_lookup_exists(
2136    --         p_lookup_type => 'AMS_CAMP_FF_SHIP_METHOD',
2137    --         p_lookup_code => p_camp_rec.ff_shipping_method
2138    --      ) = FND_API.g_false
2139    --   THEN
2140    --      AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_FF_SHIP_METHOD') ;
2141    --      x_return_status := FND_API.g_ret_sts_error;
2142    --      RETURN;
2143    --   END IF;
2144    --END IF;
2145 
2146    ----------------------- cc_call_strategy ----------------------
2147    --IF p_camp_rec.cc_call_strategy <> FND_API.g_miss_char
2148    --   AND p_camp_rec.cc_call_strategy IS NOT NULL
2149    --THEN
2150    --   IF AMS_Utility_PVT.check_lookup_exists(
2151    --         p_lookup_type => 'AMS_CAMP_CALL_STRATEGY',
2152    --         p_lookup_code => p_camp_rec.cc_call_strategy
2153    --      ) = FND_API.g_false
2154    --   THEN
2155    --      AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_CC_CALL_STRATEGY') ;
2156    --      x_return_status := FND_API.g_ret_sts_error;
2157    --      RETURN;
2158    --   END IF;
2159    --END IF;
2160 
2161 END Check_Camp_Lookup_Items;
2162 
2163 
2164 ---------------------------------------------------------------------
2165 -- PROCEDURE
2166 --    check_camp_flag_items
2167 --
2168 -- HISTORY
2169 --    10/01/99  holiu  Created.
2170 ---------------------------------------------------------------------
2171 PROCEDURE check_camp_flag_items(
2172    p_camp_rec        IN  camp_rec_type,
2173    x_return_status   OUT NOCOPY VARCHAR2
2174 )
2175 IS
2176 BEGIN
2177 
2178    x_return_status := FND_API.g_ret_sts_success;
2179 
2180    ----------------------- active_flag ------------------------
2181    IF p_camp_rec.active_flag <> FND_API.g_miss_char
2182       AND p_camp_rec.active_flag IS NOT NULL
2183    THEN
2184       IF AMS_Utility_PVT.is_Y_or_N(p_camp_rec.active_flag) = FND_API.g_false
2185       THEN
2186          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_ACTIVE_FLAG');
2187          x_return_status := FND_API.g_ret_sts_error;
2188          RETURN;
2189       END IF;
2190    END IF;
2191 
2192    ----------------------- private_flag ------------------------
2193    IF p_camp_rec.private_flag <> FND_API.g_miss_char
2194       AND p_camp_rec.private_flag IS NOT NULL
2195    THEN
2196       IF AMS_Utility_PVT.is_Y_or_N(p_camp_rec.private_flag) = FND_API.g_false
2197       THEN
2198          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_PRIVATE_FLAG');
2199          x_return_status := FND_API.g_ret_sts_error;
2200          RETURN;
2201       END IF;
2202    END IF;
2203 
2204    ----------------------- partner_flag ------------------------
2205    IF p_camp_rec.partner_flag <> FND_API.g_miss_char
2206       AND p_camp_rec.partner_flag IS NOT NULL
2207    THEN
2208       IF AMS_Utility_PVT.is_Y_or_N(p_camp_rec.partner_flag) = FND_API.g_false
2209       THEN
2210          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_PARTNER_FLAG');
2211          x_return_status := FND_API.g_ret_sts_error;
2212          RETURN;
2213       END IF;
2214    END IF;
2215 
2216    ----------------------- template_flag ------------------------
2217    IF p_camp_rec.template_flag <> FND_API.g_miss_char
2218       AND p_camp_rec.template_flag IS NOT NULL
2219    THEN
2220       IF AMS_Utility_PVT.is_Y_or_N(p_camp_rec.template_flag) = FND_API.g_false
2221       THEN
2222          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_TEMPLATE_FLAG');
2223          x_return_status := FND_API.g_ret_sts_error;
2224          RETURN;
2225       END IF;
2226    END IF;
2227 
2228    IF p_camp_rec.global_flag <> FND_API.g_miss_char
2229       AND p_camp_rec.global_flag IS NOT NULL
2230    THEN
2231       IF AMS_Utility_PVT.is_Y_or_N(p_camp_rec.global_flag) = FND_API.g_false
2232       THEN
2233          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_GLOBAL_FLAG');
2234          x_return_status := FND_API.g_ret_sts_error;
2235          RETURN;
2236       END IF;
2237    END IF;
2238 
2239    IF p_camp_rec.show_campaign_flag <> FND_API.g_miss_char
2240       AND p_camp_rec.show_campaign_flag IS NOT NULL
2241    THEN
2242       IF AMS_Utility_PVT.Is_Y_Or_N(p_camp_rec.show_campaign_flag) = FND_API.g_false
2243       THEN
2244          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_TEMPLATE_FLAG');
2245          x_return_status := FND_API.g_ret_sts_error;
2246          RETURN;
2247       END IF;
2248    END IF;
2249 
2250 
2251    IF p_camp_rec.accounts_closed_flag <> FND_API.g_miss_char
2252       AND p_camp_rec.accounts_closed_flag IS NOT NULL
2253    THEN
2254       IF AMS_Utility_PVT.Is_Y_Or_N(p_camp_rec.accounts_closed_flag) = FND_API.g_false
2255       THEN
2256          AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_ACC_CLOSED_FLAG');
2257          x_return_status := FND_API.g_ret_sts_error;
2258          RETURN;
2259       END IF;
2260    END IF;
2261    ------------------- cascade_source_code_flag -----------------------
2262    -- IF p_camp_rec.cascade_source_code_flag <> FND_API.g_miss_char
2263    --    AND p_camp_rec.cascade_source_code_flag IS NOT NULL
2264    -- THEN
2265    --    IF AMS_Utility_PVT.is_Y_or_N(p_camp_rec.cascade_source_code_flag)
2266    --      = FND_API.g_false
2267    --    THEN
2268    --      AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_CASCADE_FLAG');
2269    --      x_return_status := FND_API.g_ret_sts_error;
2270    --      RETURN;
2271    --    END IF;
2272    --END IF;
2273 
2274 END Check_Camp_Flag_Items;
2275 
2276 
2277 ---------------------------------------------------------------------
2278 -- PROCEDURE
2279 --    Check_Camp_Items
2280 --
2281 -- HISTORY
2282 --    10/01/99  holiu  Created.
2283 ---------------------------------------------------------------------
2284 PROCEDURE Check_Camp_Items(
2285    p_camp_rec        IN  camp_rec_type,
2286    p_validation_mode IN  VARCHAR2 := JTF_PLSQL_API.g_create,
2287    x_return_status   OUT NOCOPY VARCHAR2
2288 )
2289 IS
2290 BEGIN
2291 
2292    check_camp_req_items(
2293       p_camp_rec       => p_camp_rec,
2294       x_return_status  => x_return_status
2295    );
2296 
2297    IF x_return_status <> FND_API.g_ret_sts_success THEN
2298       RETURN;
2299    END IF;
2300 
2301    check_camp_uk_items(
2302       p_camp_rec        => p_camp_rec,
2303       p_validation_mode => p_validation_mode,
2304       x_return_status   => x_return_status
2305    );
2306 
2307    IF x_return_status <> FND_API.g_ret_sts_success THEN
2308       RETURN;
2309    END IF;
2310 
2311    check_camp_fk_items(
2312       p_camp_rec       => p_camp_rec,
2313       x_return_status  => x_return_status
2314    );
2315 
2316    IF x_return_status <> FND_API.g_ret_sts_success THEN
2317       RETURN;
2318    END IF;
2319 
2320    check_camp_lookup_items(
2321       p_camp_rec        => p_camp_rec,
2322       x_return_status   => x_return_status
2323    );
2324 
2325    IF x_return_status <> FND_API.g_ret_sts_success THEN
2326       RETURN;
2327    END IF;
2328 
2329    check_camp_flag_items(
2330       p_camp_rec        => p_camp_rec,
2331       x_return_status   => x_return_status
2332    );
2333 
2334    IF x_return_status <> FND_API.g_ret_sts_success THEN
2335       RETURN;
2336    END IF;
2337 
2338 END Check_Camp_Items;
2339 
2340 
2341 ---------------------------------------------------------------------
2342 -- PROCEDURE
2343 --    check_camp_record
2344 --
2345 -- HISTORY
2346 --    10/01/99  holiu  Created.
2347 ---------------------------------------------------------------------
2348 PROCEDURE check_camp_record(
2349    p_camp_rec       IN  camp_rec_type,
2350    p_complete_rec   IN  camp_rec_type,
2351    x_return_status  OUT NOCOPY VARCHAR2
2352 )
2353 IS
2354 
2355    CURSOR c_parent_type IS
2356    SELECT rollup_type,status_code
2357      FROM ams_campaigns_all_b
2358     WHERE campaign_id = p_camp_rec.parent_campaign_id;
2359 
2360    l_parent_type VARCHAR2(30);
2361    l_status_code VARCHAR2(30);
2362 BEGIN
2363 
2364    x_return_status := FND_API.g_ret_sts_success;
2365 
2366    IF p_camp_rec.campaign_type <> FND_API.g_miss_char
2367       AND p_camp_rec.campaign_type IS NOT NULL
2368    THEN
2369       IF p_complete_rec.rollup_type = 'RCAM' THEN
2370          IF AMS_Utility_PVT.check_lookup_exists(
2371                p_lookup_type => 'AMS_PROGRAM_OBJECTIVE',
2372                p_lookup_code => p_camp_rec.campaign_type
2373             ) = FND_API.g_false
2374          THEN
2375             AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_TYPE') ;
2376             x_return_status := FND_API.g_ret_sts_error;
2377          END IF;
2378       ELSE
2379          IF AMS_Utility_PVT.check_lookup_exists(
2380                p_lookup_type => 'AMS_CAMPAIGN_PURPOSE',
2381                p_lookup_code => p_camp_rec.campaign_type
2382             ) = FND_API.g_false
2383          THEN
2384             AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_TYPE') ;
2385             x_return_status := FND_API.g_ret_sts_error;
2386          END IF;
2387       END IF;
2388    END IF;
2389 
2390    -- budget amount must come with budget currency
2391    IF p_complete_rec.transaction_currency_code IS NULL
2392       AND p_complete_rec.budget_amount_tc IS NOT NULL
2393    THEN
2394       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
2395       THEN
2396          FND_MESSAGE.set_name('AMS', 'AMS_CAMP_BUDGET_NO_CURRENCY');
2397          FND_MSG_PUB.add;
2398       END IF;
2399       x_return_status := FND_API.g_ret_sts_error;
2400    END IF;
2401 
2402 
2403 --------------------------------------------------------------------
2404 -- 01/23/01  julou  Added check parent type
2405 --------------------------------------------------------------------
2406   -- check parent campaign type
2407 
2408    IF p_camp_rec.parent_campaign_id IS NOT NULL
2409       AND p_camp_rec.parent_campaign_id <> FND_API.g_miss_num
2410    THEN
2411       IF (AMS_DEBUG_HIGH_ON) THEN
2412 
2413       AMS_Utility_PVT.Debug_message('Parent Camp Id '||p_camp_rec.parent_campaign_id );
2414       END IF;
2415       OPEN c_parent_type;
2416       FETCH c_parent_type INTO l_parent_type, l_status_code;
2417       IF (c_parent_type%NOTFOUND) THEN
2418          CLOSE c_parent_type;
2419          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
2420 
2421           FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
2422           FND_MSG_PUB.add;
2423          END IF;
2424          IF (AMS_DEBUG_HIGH_ON) THEN
2425 
2426          AMS_Utility_PVT.Debug_message('Error Here : ' ||p_camp_rec.parent_campaign_id );
2427          END IF;
2428          RAISE FND_API.g_exc_error;
2429       END IF;
2430       CLOSE c_parent_type;
2431 
2432       IF l_parent_type <> 'RCAM'
2433       THEN
2434          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
2435           FND_MESSAGE.set_name('AMS', 'AMS_CAMP_BAD_ROLLUP_TYPE');
2436           FND_MSG_PUB.add;
2437          END IF;
2438          RAISE FND_API.g_exc_error;
2439       END IF;
2440 
2441       -- Can add component to Programs only when new and active
2442       -- Program-Campaign 1.
2443       IF l_status_code <> 'NEW' AND
2444          l_status_code <> 'ACTIVE'
2445       THEN
2446          AMS_Utility_Pvt.Error_Message('AMS_CAMP_PARENT_STAT');
2447          RAISE FND_API.g_exc_error;
2448       END IF ;
2449 
2450    END IF;
2451 
2452 END Check_Camp_Record;
2453 
2454 
2455 ---------------------------------------------------------------------
2456 -- PROCEDURE
2457 --    check_camp_inter_entity
2458 --
2459 -- HISTORY
2460 --    10/26/99  holiu     Created.
2461 --  18-May-2001 ptendulk  Added return after error happens in api.
2462 --                              Follow bug #1786801
2463 --  21-May-2001 ptendulk  Added validation to check the duplicate name
2464 --                        for Program.
2465 --  01-Aug-2001 ptendulk  Changed the validation for the unique prog
2466 ---                       name. Removed call to utility check uniqueness.
2467 --  25-Oct-2001 ptendulk  Added validation for the parent of the program.
2468 --  29-jan-2003 soagrawa  Fixed bug# 2764007
2469 ---------------------------------------------------------------------
2470 PROCEDURE check_camp_inter_entity(
2471    p_camp_rec        IN  camp_rec_type,
2472    p_complete_rec    IN  camp_rec_type,
2473    p_validation_mode IN  VARCHAR2,
2474    x_return_status   OUT NOCOPY VARCHAR2
2475 )
2476 IS
2477 
2478    l_return_status  VARCHAR2(1);
2479    l_start_date     DATE;
2480    l_end_date       DATE;
2481 
2482    l_table_name     VARCHAR2(100);
2483    l_pk_name        VARCHAR2(100);
2484    l_pk_value       NUMBER ;
2485    l_pk_data_type   VARCHAR2(30);
2486    l_where_clause   VARCHAR2(2000);
2487 
2488    CURSOR c_prog_name
2489    IS SELECT 1 from dual
2490       WHERE EXISTS ( SELECT * from ams_campaigns_vl
2491                      WHERE rollup_type = 'RCAM'
2492                      AND UPPER(campaign_name) = UPPER(p_complete_rec.campaign_name)) ;
2493    CURSOR c_prog_name_updt
2494    IS SELECT 1 from dual
2495       WHERE EXISTS ( SELECT * from ams_campaigns_vl
2496                      WHERE rollup_type = 'RCAM'
2497                      AND UPPER(campaign_name) = UPPER(p_complete_rec.campaign_name)
2498                      AND campaign_id <> p_complete_rec.campaign_id );
2499 
2500    l_dummy NUMBER ;
2501 
2502 BEGIN
2503 
2504    -- For creating, check if source_code is unique in ams_source_codes.
2505    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
2506       IF p_complete_rec.rollup_type = 'RCAM' THEN
2507          IF p_camp_rec.source_code IS NULL THEN
2508             AMS_Utility_PVT.Error_Message('AMS_CAMP_NO_PROG_CODE');
2509             x_return_status := FND_API.g_ret_sts_error;
2510             RETURN;
2511          ELSE
2512 
2513 --aranka added 07/27/02
2514             IF AMS_Utility_PVT.check_uniqueness(
2515                                 'ams_campaigns_all_b',
2516                                 'source_code = ''' || p_camp_rec.source_code || ''''
2517 --                                'source_code = ''' || p_camp_rec.source_code ||
2518 --                                ''' AND rollup_type = ''RCAM'''
2519                                 ) = FND_API.g_false
2520             THEN
2521                AMS_Utility_PVT.Error_Message('AMS_CAMP_BAD_PROG_CODE');
2522                x_return_status := FND_API.g_ret_sts_error;
2523                RETURN;
2524             END IF;
2525          END IF;
2526       ELSE
2527          IF p_camp_rec.source_code IS NOT NULL THEN
2528             IF AMS_Utility_PVT.check_uniqueness(
2529                                 'ams_source_codes',
2530                                 'source_code = ''' || p_camp_rec.source_code ||
2531                                 ''' AND active_flag = ''Y'''
2532                                 ) = FND_API.g_false
2533             THEN
2534                AMS_Utility_PVT.Error_Message('AMS_CAMP_DUPLICATE_CODE');
2535                x_return_status := FND_API.g_ret_sts_error;
2536                RETURN;
2537             END IF;
2538 
2539 --aranka added 07/27/02
2540 --sam added
2541             IF AMS_Utility_PVT.check_uniqueness(
2542                                 'ams_campaigns_all_b',
2543                                 'source_code = ''' || p_camp_rec.source_code || ''''
2544                                 ) = FND_API.g_false
2545             THEN
2546                AMS_Utility_PVT.Error_Message('AMS_CAMP_DUPLICATE_CODE');
2547                x_return_status := FND_API.g_ret_sts_error;
2548                RETURN;
2549             END IF;
2550 
2551 
2552          END IF;
2553       END IF ;
2554    END IF;
2555 
2556    -- Following code is added by ptendulk on 21-May-2001
2557    -- Program name have to be unique.
2558    -- Please refer to bug #1783583
2559    -------------------------Program Name  ---------------------------------
2560    IF p_complete_rec.rollup_type = 'RCAM' THEN
2561       --IF p_validation_mode = JTF_PLSQL_API.g_create THEN
2562       --   IF AMS_Utility_PVT.check_uniqueness(
2563       --                       'ams_campaigns_vl',
2564       --                       'campaign_name = ''' || p_camp_rec.campaign_name ||
2565       --                       ''' AND rollup_type = ''RCAM'''
2566       --                       ) = FND_API.g_false
2567       --   THEN
2568       --      AMS_Utility_PVT.Error_Message('AMS_PROG_DUPLICATE_NAME');
2569       --      x_return_status := FND_API.g_ret_sts_error;
2570       --      RETURN;
2571       --   END IF;
2572       --ELSE
2573       --   IF AMS_Utility_PVT.check_uniqueness(
2574       --                       'ams_campaigns_vl',
2575       --                       'campaign_name = ''' || p_camp_rec.campaign_name ||
2576       --                       ''' AND rollup_type = ''RCAM'''||
2577       --                       ' AND campaign_id <> '||p_camp_rec.campaign_id
2578       --                       ) = FND_API.g_false
2579       --   THEN
2580       --      AMS_Utility_PVT.Error_Message('AMS_PROG_DUPLICATE_NAME');
2581       --      x_return_status := FND_API.g_ret_sts_error;
2582       --      RETURN;
2583       --   END IF;
2584       --END IF ;
2585       IF p_validation_mode = JTF_PLSQL_API.g_create THEN
2586          OPEN c_prog_name ;
2587          FETCH c_prog_name INTO l_dummy;
2588          CLOSE c_prog_name ;
2589       ELSE
2590          OPEN c_prog_name_updt ;
2591          FETCH c_prog_name_updt INTO l_dummy;
2592          CLOSE c_prog_name_updt ;
2593       END IF ;
2594 
2595       IF l_dummy IS NOT NULL THEN
2596          AMS_Utility_PVT.Error_Message('AMS_PROG_DUPLICATE_NAME');
2597          x_return_status := FND_API.g_ret_sts_error;
2598          RETURN;
2599       END IF ;
2600 
2601 
2602    END IF ;
2603 
2604    ------------------------ actual_exec_end_date --------------------------
2605    IF p_camp_rec.actual_exec_end_date IS NOT NULL
2606    AND p_camp_rec.actual_exec_end_date <> FND_API.g_miss_date
2607    THEN
2608       IF p_complete_rec.rollup_type <> 'RCAM'
2609       AND p_camp_rec.actual_exec_end_date IS NULL
2610       THEN
2611          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
2612          THEN
2613             FND_MESSAGE.set_name('AMS', 'AMS_CAMP_NO_END_DATE');
2614             FND_MSG_PUB.add;
2615          END IF;
2616          x_return_status := FND_API.g_ret_sts_error;
2617          RETURN;
2618       END IF;
2619    END IF ;
2620 
2621    ------------------------ Related Event  --------------------------
2622    IF (p_camp_rec.related_event_id IS NOT NULL AND p_camp_rec.related_event_id <> FND_API.g_miss_num)
2623    OR (p_camp_rec.related_event_from IS NOT NULL AND p_camp_rec.related_event_from <> FND_API.g_miss_char)
2624    THEN
2625       AMS_CampaignRules_PVT.validate_realted_event(
2626          p_related_event_id      => p_complete_rec.related_event_id ,
2627          p_related_event_type    => p_complete_rec.related_event_from,
2628          x_return_status         => x_return_status
2629       ) ;
2630       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2631          AMS_UTILITY_PVT.Error_Message('AMS_CAMP_INVALID_EVENT');
2632          x_return_status := FND_API.G_RET_STS_ERROR;
2633       END IF ;
2634 
2635       -- Following code is modified by ptendulk on 22-May-2001
2636       -- Call business rule api
2637       -- Get table_name and pk_name for the ARC qualifier.
2638       --AMS_Utility_PVT.Get_Qual_Table_Name_And_PK (
2639       --   p_sys_qual                     => p_complete_rec.related_event_from,
2640       --   x_return_status                => x_return_status,
2641       --   x_table_name                   => l_table_name,
2642       --   x_pk_name                      => l_pk_name
2643       --);
2644 
2645       --l_pk_value                 := p_complete_rec.related_event_id ;
2646       --l_pk_data_type             := AMS_Utility_PVT.G_NUMBER;
2647       --l_where_clause             := NULL;
2648 
2649       --IF AMS_Utility_PVT.Check_FK_Exists (
2650       --      p_table_name                   => l_table_name
2651       --     ,p_pk_name                      => l_pk_name
2652       --     ,p_pk_value                     => l_pk_value
2653       --     ,p_pk_data_type                 => l_pk_data_type
2654       --      ,p_additional_where_clause      => l_where_clause
2655       --   ) = FND_API.G_FALSE
2656       --THEN
2657       --   AMS_UTILITY_PVT.Error_Message('AMS_CAMP_INVALID_EVENT');
2658       --   x_return_status := FND_API.G_RET_STS_ERROR;
2659       --   RETURN;
2660       --END IF;
2661 
2662    END IF ;
2663 
2664    -- check if actual_exec_start_date <= actual_exec_end_date
2665    IF p_camp_rec.actual_exec_start_date IS NOT NULL
2666    AND p_camp_rec.actual_exec_start_date <> FND_API.g_miss_date
2667    AND p_camp_rec.actual_exec_end_date IS NOT null
2668    AND p_camp_rec.actual_exec_end_date <> FND_API.g_miss_date
2669    THEN
2670       l_start_date := p_complete_rec.actual_exec_start_date;
2671       l_end_date := p_complete_rec.actual_exec_end_date;
2672 
2673       IF l_start_date > l_end_date THEN
2674          AMS_UTILITY_PVT.Error_Message('AMS_CAMP_START_AFTER_END');
2675          x_return_status := FND_API.g_ret_sts_error;
2676          -- Following line is added by ptendulk on 18-May-2001
2677          -- Refer bug #1786801
2678          RETURN;
2679       END IF;
2680    END IF;
2681 
2682    x_return_status := FND_API.g_ret_sts_success;
2683 
2684    ------------------- check template flag ----------------------
2685    AMS_CampaignRules_PVT.Check_Camp_Template_Flag(
2686       p_complete_rec.parent_campaign_id,
2687       p_complete_rec.channel_id,
2688       p_complete_rec.template_flag,
2689       p_complete_rec.status_code,
2690       p_complete_rec.rollup_type,
2691       p_complete_rec.media_type_code,
2692       l_return_status
2693    );
2694    IF l_return_status <> FND_API.g_ret_sts_success THEN
2695       x_return_status := l_return_status;
2696       RETURN;
2697    END IF;
2698 
2699    -- Following validation is commented out by ptendulk on 07-Feb-2001
2700    -- as Activity and Marketing mediums are attached at the schedule
2701    -- level from Hornet release.
2702    ------------------- check media type ----------------------
2703    --   IF p_camp_rec.parent_campaign_id <> FND_API.g_miss_num
2704    --      OR p_camp_rec.rollup_type <> FND_API.g_miss_char
2705    --      OR p_camp_rec.media_type_code <> FND_API.g_miss_char
2706    --      OR p_camp_rec.media_id <> FND_API.g_miss_num
2707    --      OR p_camp_rec.channel_id <> FND_API.g_miss_num
2708    --      OR p_camp_rec.event_type <> FND_API.g_miss_char
2709    --      OR p_camp_rec.arc_channel_from <> FND_API.g_miss_char
2710    --   THEN
2711    --      AMS_CampaignRules_PVT.check_camp_media_type(
2712    --         p_camp_rec.campaign_id,
2713    --         p_complete_rec.parent_campaign_id,
2714    --         p_complete_rec.rollup_type,
2715    --         p_complete_rec.media_type_code,
2716    --         p_complete_rec.media_id,
2717    --         p_complete_rec.channel_id,
2718    --         p_complete_rec.event_type,
2719    --         p_complete_rec.arc_channel_from,
2720    --         l_return_status
2721    --      );
2722    --      l_return_status := FND_API.g_ret_sts_success ;
2723    --      IF l_return_status <> FND_API.g_ret_sts_success THEN
2724    --         x_return_status := l_return_status;
2725    --      END IF;
2726    --   END IF;
2727 
2728    ------------------- check fund source ----------------------
2729    -- 30-OCT-2000 holiu: remove as no longer needed
2730    -- IF p_camp_rec.fund_source_type <> FND_API.g_miss_char
2731    --   OR p_camp_rec.fund_source_id <> FND_API.g_miss_num
2732    -- THEN
2733    --    AMS_CampaignRules_PVT.check_camp_fund_source(
2734    --       p_complete_rec.fund_source_type,
2735    --       p_complete_rec.fund_source_id,
2736    --       l_return_status
2737    --    );
2738    --    IF l_return_status <> FND_API.g_ret_sts_success THEN
2739    --       x_return_status := l_return_status;
2740    --    END IF;
2741    -- END IF;
2742 
2743    ------------------- check calendar ----------------------
2744    IF p_camp_rec.campaign_calendar <> FND_API.g_miss_char
2745       OR p_camp_rec.start_period_name <> FND_API.g_miss_char
2746       OR p_camp_rec.end_period_name <> FND_API.g_miss_char
2747       OR p_camp_rec.actual_exec_start_date <> FND_API.g_miss_date
2748       OR p_camp_rec.actual_exec_end_date <> FND_API.g_miss_date
2749    THEN
2750       AMS_CampaignRules_PVT.check_camp_calendar(
2751          p_complete_rec.campaign_calendar,
2752          p_complete_rec.start_period_name,
2753          p_complete_rec.end_period_name,
2754          p_complete_rec.actual_exec_start_date,
2755          p_complete_rec.actual_exec_end_date,
2756          l_return_status
2757       );
2758       IF l_return_status <> FND_API.g_ret_sts_success THEN
2759          x_return_status := l_return_status;
2760          RETURN;
2761       END IF;
2762    END IF;
2763 
2764    -- soagrawa 29-jan-2003  bug# 2764007
2765    IF p_complete_rec.rollup_type <> 'RCAM'
2766    THEN
2767       ------------------- check version ----------------------
2768       IF p_camp_rec.campaign_name <> FND_API.g_miss_char
2769          OR p_camp_rec.status_code <> FND_API.g_miss_char
2770          OR p_camp_rec.actual_exec_start_date <> FND_API.g_miss_date
2771          OR p_camp_rec.city_id <> FND_API.g_miss_num
2772          -- 25-Aug-2005 mayjain version is no longer supported from R12
2773          --OR p_camp_rec.version_no <> FND_API.g_miss_num
2774       THEN
2775          AMS_CampaignRules_PVT.check_camp_version(
2776             p_complete_rec.campaign_id,
2777             p_complete_rec.campaign_name,
2778             p_complete_rec.status_code,
2779             p_complete_rec.actual_exec_start_date,
2780             p_complete_rec.city_id,
2781             p_complete_rec.version_no,
2782             l_return_status
2783          );
2784          IF l_return_status <> FND_API.g_ret_sts_success THEN
2785             x_return_status := l_return_status;
2786             RETURN ;
2787          END IF;
2788       END IF;
2789    END IF;
2790 
2791    -- Following code is modified by ptendulk on 09-Sep-2001
2792    --  Business units of parent and child can be different.
2793    --  Refer bug #1966445
2794    -- Check the business unit id
2795    --IF p_camp_rec.business_unit_id IS NOT NULL
2796    ---AND p_camp_rec.business_unit_id <> FND_API.g_miss_num  THEN
2797 
2798    --   AMS_CampaignRules_PVT.Check_BU_Vs_Child(p_complete_rec.campaign_id ,
2799    --                                           p_complete_rec.business_unit_id,
2800    --                                           l_return_status);
2801 
2802    --   IF l_return_status <> FND_API.g_ret_sts_success THEN
2803    --      x_return_status := l_return_status;
2804    --      RETURN ;
2805    --   END IF;
2806 
2807    --   IF p_complete_rec.parent_campaign_id IS NOT NULL THEN
2808    --      AMS_CampaignRules_PVT.Check_BU_Vs_parent(p_complete_rec.parent_campaign_id ,
2809    --                                              p_complete_rec.business_unit_id,
2810    --                                              l_return_status);
2811 
2812    --      IF l_return_status <> FND_API.g_ret_sts_success THEN
2813    --         x_return_status := l_return_status;
2814    --         RETURN ;
2815    --      END IF;
2816    --   END IF ;
2817 
2818    --END IF ;
2819 
2820 
2821    ------------------- Parent Status ------------------------------
2822       AMS_CampaignRules_PVT.check_camp_status_vs_parent(
2823          p_complete_rec.parent_campaign_id,
2824          p_complete_rec.status_code,
2825          l_return_status
2826       );
2827       IF l_return_status <> FND_API.g_ret_sts_success THEN
2828          x_return_status := l_return_status;
2829          RETURN ;
2830       END IF;
2831 
2832    ------------------- check dates ------------------------------
2833    -- Following code is modified by ptendulk on 16-Jun-2001
2834    -- Refer Bug #1827117 as from program component screen dates will come
2835    -- as g_miss_date
2836    --IF p_camp_rec.actual_exec_start_date <> FND_API.g_miss_date
2837    --   OR p_camp_rec.actual_exec_end_date <> FND_API.g_miss_date
2838    --THEN
2839 --  09-Aug-2002 aranka
2840       AMS_CampaignRules_PVT.check_camp_dates_vs_parent(
2841          p_complete_rec.parent_campaign_id,
2842          p_complete_rec.rollup_type,
2843          p_complete_rec.actual_exec_start_date,
2844          p_complete_rec.actual_exec_end_date,
2845          l_return_status
2846       );
2847       IF l_return_status <> FND_API.g_ret_sts_success THEN
2848          x_return_status := l_return_status;
2849          RETURN ;
2850       END IF;
2851 
2852 
2853       IF p_validation_mode = JTF_PLSQL_API.g_update AND
2854          p_complete_rec.rollup_type = 'RCAM'
2855       THEN
2856          AMS_CampaignRules_PVT.check_camp_dates_vs_child(
2857             p_complete_rec.campaign_id,
2858             p_complete_rec.actual_exec_start_date,
2859             p_complete_rec.actual_exec_end_date,
2860             l_return_status
2861          );
2862          IF l_return_status <> FND_API.g_ret_sts_success THEN
2863             x_return_status := l_return_status;
2864             RETURN;
2865          END IF;
2866       END IF;
2867 
2868       IF  p_validation_mode = JTF_PLSQL_API.g_update
2869       AND p_complete_rec.rollup_type <> 'RCAM'
2870       THEN
2871          AMS_CampaignRules_PVT.check_camp_dates_vs_csch(
2872             p_complete_rec.campaign_id,
2873             p_complete_rec.actual_exec_start_date,
2874             p_complete_rec.actual_exec_end_date,
2875             l_return_status
2876          );
2877          IF l_return_status <> FND_API.g_ret_sts_success THEN
2878             x_return_status := l_return_status;
2879             RETURN ;
2880          END IF;
2881       END IF;
2882 
2883       IF p_validation_mode = JTF_PLSQL_API.g_update THEN
2884          IF p_complete_rec.rollup_type = 'RCAM' THEN
2885             AMS_CampaignRules_PVT.Check_Prog_Dates_Vs_Eveh(
2886                p_complete_rec.campaign_id,
2887                p_complete_rec.actual_exec_start_date,
2888                p_complete_rec.actual_exec_end_date,
2889                l_return_status
2890             );
2891             IF l_return_status <> FND_API.g_ret_sts_success THEN
2892                x_return_status := l_return_status;
2893                RETURN ;
2894             END IF;
2895          END IF;
2896       END IF;
2897    --END IF;
2898 
2899    IF p_complete_rec.rollup_type = 'RCAM' THEN
2900       IF p_camp_rec.parent_campaign_id IS NOT NULL AND
2901          p_camp_rec.parent_campaign_id <> FND_API.G_MISS_NUM
2902       THEN
2903          AMS_CampaignRules_PVT.Check_Children_Tree( p_campaign_id          =>   p_complete_rec.campaign_id,
2904                                                    p_parent_campaign_id   =>   p_complete_rec.parent_campaign_id) ;
2905       END IF ;
2906 
2907    END IF ;
2908 
2909 END Check_Camp_Inter_Entity;
2910 
2911 
2912 ---------------------------------------------------------------------
2913 -- PROCEDURE
2914 --    init_camp_rec
2915 --
2916 -- HISTORY
2917 --    10/01/99  holiu  Created.
2918 ---------------------------------------------------------------------
2919 PROCEDURE init_camp_rec(
2920    x_camp_rec  OUT NOCOPY  camp_rec_type
2921 )
2922 IS
2923 BEGIN
2924 
2925    x_camp_rec.campaign_id := FND_API.g_miss_num;
2926    x_camp_rec.last_update_date := FND_API.g_miss_date;
2927    x_camp_rec.last_updated_by := FND_API.g_miss_num;
2928    x_camp_rec.creation_date := FND_API.g_miss_date;
2929    x_camp_rec.created_by := FND_API.g_miss_num;
2930    x_camp_rec.last_update_login := FND_API.g_miss_num;
2931    x_camp_rec.object_version_number := FND_API.g_miss_num;
2932    x_camp_rec.owner_user_id := FND_API.g_miss_num;
2933    x_camp_rec.user_status_id := FND_API.g_miss_num;
2934    x_camp_rec.status_code := FND_API.g_miss_char;
2935    x_camp_rec.status_date := FND_API.g_miss_date;
2936    x_camp_rec.active_flag := FND_API.g_miss_char;
2937    x_camp_rec.private_flag := FND_API.g_miss_char;
2938    x_camp_rec.partner_flag := FND_API.g_miss_char;
2939    x_camp_rec.template_flag := FND_API.g_miss_char;
2940    x_camp_rec.cascade_source_code_flag := FND_API.g_miss_char;
2941    x_camp_rec.inherit_attributes_flag := FND_API.g_miss_char;
2942    x_camp_rec.source_code := FND_API.g_miss_char;
2943    x_camp_rec.rollup_type := FND_API.g_miss_char;
2944    x_camp_rec.campaign_type := FND_API.g_miss_char;
2945    --x_camp_rec.media_type_code := FND_API.g_miss_char;
2946    x_camp_rec.priority := FND_API.g_miss_char;
2947    x_camp_rec.fund_source_type := FND_API.g_miss_char;
2948    x_camp_rec.fund_source_id := FND_API.g_miss_num;
2949    x_camp_rec.parent_campaign_id := FND_API.g_miss_num;
2950    x_camp_rec.application_id := FND_API.g_miss_num;
2951    --x_camp_rec.media_id := FND_API.g_miss_num;
2952    --x_camp_rec.channel_id := FND_API.g_miss_num;
2953    x_camp_rec.event_type := FND_API.g_miss_char;
2954    x_camp_rec.arc_channel_from := FND_API.g_miss_char;
2955    x_camp_rec.dscript_name := FND_API.g_miss_char;
2956    x_camp_rec.transaction_currency_code := FND_API.g_miss_char;
2957    x_camp_rec.functional_currency_code := FND_API.g_miss_char;
2958    x_camp_rec.budget_amount_tc := FND_API.g_miss_num;
2959    x_camp_rec.budget_amount_fc := FND_API.g_miss_num;
2960    x_camp_rec.forecasted_plan_start_date := FND_API.g_miss_date;
2961    x_camp_rec.forecasted_plan_end_date := FND_API.g_miss_date;
2962    x_camp_rec.forecasted_exec_start_date := FND_API.g_miss_date;
2963    x_camp_rec.forecasted_exec_end_date := FND_API.g_miss_date;
2964    x_camp_rec.actual_plan_start_date := FND_API.g_miss_date;
2965    x_camp_rec.actual_plan_end_date := FND_API.g_miss_date;
2966    x_camp_rec.actual_exec_start_date := FND_API.g_miss_date;
2967    x_camp_rec.actual_exec_end_date := FND_API.g_miss_date;
2968    x_camp_rec.inbound_url := FND_API.g_miss_char;
2969    x_camp_rec.inbound_email_id := FND_API.g_miss_char;
2970    x_camp_rec.inbound_phone_no := FND_API.g_miss_char;
2971    x_camp_rec.duration := FND_API.g_miss_num;
2972    x_camp_rec.duration_uom_code := FND_API.g_miss_char;
2973    x_camp_rec.ff_priority := FND_API.g_miss_char;
2974    x_camp_rec.ff_override_cover_letter := FND_API.g_miss_num;
2975    x_camp_rec.ff_shipping_method := FND_API.g_miss_char;
2976    x_camp_rec.ff_carrier := FND_API.g_miss_char;
2977    x_camp_rec.content_source := FND_API.g_miss_char;
2978    x_camp_rec.cc_call_strategy := FND_API.g_miss_char;
2979    x_camp_rec.cc_manager_user_id := FND_API.g_miss_num;
2980    x_camp_rec.forecasted_revenue := FND_API.g_miss_num;
2981    x_camp_rec.actual_revenue := FND_API.g_miss_num;
2982    x_camp_rec.forecasted_cost := FND_API.g_miss_num;
2983    x_camp_rec.actual_cost := FND_API.g_miss_num;
2984    x_camp_rec.forecasted_response := FND_API.g_miss_num;
2985    x_camp_rec.actual_response := FND_API.g_miss_num;
2986    x_camp_rec.target_response := FND_API.g_miss_num;
2987    x_camp_rec.country_code := FND_API.g_miss_char;
2988    x_camp_rec.language_code := FND_API.g_miss_char;
2989    x_camp_rec.attribute_category := FND_API.g_miss_char;
2990    x_camp_rec.attribute1 := FND_API.g_miss_char;
2991    x_camp_rec.attribute2 := FND_API.g_miss_char;
2992    x_camp_rec.attribute3 := FND_API.g_miss_char;
2993    x_camp_rec.attribute4 := FND_API.g_miss_char;
2994    x_camp_rec.attribute5 := FND_API.g_miss_char;
2995    x_camp_rec.attribute6 := FND_API.g_miss_char;
2996    x_camp_rec.attribute7 := FND_API.g_miss_char;
2997    x_camp_rec.attribute8 := FND_API.g_miss_char;
2998    x_camp_rec.attribute9 := FND_API.g_miss_char;
2999    x_camp_rec.attribute10 := FND_API.g_miss_char;
3000    x_camp_rec.attribute11 := FND_API.g_miss_char;
3001    x_camp_rec.attribute12 := FND_API.g_miss_char;
3002    x_camp_rec.attribute13 := FND_API.g_miss_char;
3003    x_camp_rec.attribute14 := FND_API.g_miss_char;
3004    x_camp_rec.attribute15 := FND_API.g_miss_char;
3005    x_camp_rec.campaign_name := FND_API.g_miss_char;
3006    x_camp_rec.campaign_theme := FND_API.g_miss_char;
3007    x_camp_rec.description := FND_API.g_miss_char;
3008    x_camp_rec.version_no := FND_API.g_miss_num;
3009    x_camp_rec.campaign_calendar := FND_API.g_miss_char;
3010    x_camp_rec.start_period_name := FND_API.g_miss_char;
3011    x_camp_rec.end_period_name := FND_API.g_miss_char;
3012    x_camp_rec.city_id := FND_API.g_miss_num;
3013    x_camp_rec.global_flag := FND_API.g_miss_char;
3014    x_camp_rec.custom_setup_id := FND_API.g_miss_num;
3015    x_camp_rec.show_campaign_flag := FND_API.g_miss_char;
3016    x_camp_rec.business_unit_id := FND_API.g_miss_num;
3017    x_camp_rec.task_id          := FND_API.g_miss_num;
3018    x_camp_rec.accounts_closed_flag := FND_API.g_miss_char;
3019    x_camp_rec.related_event_from := FND_API.g_miss_char;
3020    x_camp_rec.related_event_id := FND_API.g_miss_num;
3021    x_camp_rec.program_attribute_category := FND_API.g_miss_char;
3022    x_camp_rec.program_attribute1 := FND_API.g_miss_char ;
3023    x_camp_rec.program_attribute2 := FND_API.g_miss_char ;
3024    x_camp_rec.program_attribute3 := FND_API.g_miss_char ;
3025    x_camp_rec.program_attribute4 := FND_API.g_miss_char ;
3026    x_camp_rec.program_attribute5 := FND_API.g_miss_char ;
3027    x_camp_rec.program_attribute6 := FND_API.g_miss_char ;
3028    x_camp_rec.program_attribute7 := FND_API.g_miss_char ;
3029    x_camp_rec.program_attribute8 := FND_API.g_miss_char ;
3030    x_camp_rec.program_attribute9 := FND_API.g_miss_char ;
3031    x_camp_rec.program_attribute10 := FND_API.g_miss_char ;
3032    x_camp_rec.program_attribute11 := FND_API.g_miss_char ;
3033    x_camp_rec.program_attribute12 := FND_API.g_miss_char ;
3034    x_camp_rec.program_attribute13 := FND_API.g_miss_char ;
3035    x_camp_rec.program_attribute14 := FND_API.g_miss_char ;
3036    x_camp_rec.program_attribute15 := FND_API.g_miss_char ;
3037 
3038 
3039 
3040 
3041 END init_camp_rec;
3042 
3043 
3044 ---------------------------------------------------------------------
3045 -- PROCEDURE
3046 --    complete_camp_rec
3047 --
3048 -- HISTORY
3049 --    10/01/99  holiu  Created.
3050 ---------------------------------------------------------------------
3051 PROCEDURE complete_camp_rec(
3052    p_camp_rec      IN  camp_rec_type,
3053    x_complete_rec  OUT NOCOPY camp_rec_type
3054 )
3055 IS
3056 
3057    CURSOR c_camp IS
3058    SELECT *
3059      FROM ams_campaigns_vl
3060     WHERE campaign_id = p_camp_rec.campaign_id;
3061 
3062    l_camp_rec  c_camp%ROWTYPE;
3063 
3064 BEGIN
3065 
3066    x_complete_rec := p_camp_rec;
3067 
3068    OPEN c_camp;
3069    FETCH c_camp INTO l_camp_rec;
3070    IF c_camp%NOTFOUND THEN
3071       CLOSE c_camp;
3072       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3073          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
3074          FND_MSG_PUB.add;
3075       END IF;
3076       RAISE FND_API.g_exc_error;
3077    END IF;
3078    CLOSE c_camp;
3079 
3080    IF p_camp_rec.owner_user_id = FND_API.g_miss_num THEN
3081       x_complete_rec.owner_user_id := l_camp_rec.owner_user_id;
3082    END IF;
3083 
3084    IF p_camp_rec.user_status_id = FND_API.g_miss_num THEN
3085       x_complete_rec.user_status_id := l_camp_rec.user_status_id;
3086    END IF;
3087 
3088    -- status_code will go with user_status_id
3089    x_complete_rec.status_code := AMS_Utility_PVT.get_system_status_code(
3090 	 x_complete_rec.user_status_id
3091    );
3092 
3093    IF p_camp_rec.status_date = FND_API.g_miss_date
3094       OR p_camp_rec.status_date IS NULL
3095    THEN
3096       IF p_camp_rec.user_status_id = l_camp_rec.user_status_id THEN
3097       -- no status change, set it to be the original value
3098          x_complete_rec.status_date := l_camp_rec.status_date;
3099       ELSE
3100       -- status changed, set it to be SYSDATE
3101          x_complete_rec.status_date := SYSDATE;
3102       END IF;
3103    END IF;
3104 
3105    IF p_camp_rec.active_flag = FND_API.g_miss_char THEN
3106       x_complete_rec.active_flag := l_camp_rec.active_flag;
3107    END IF;
3108 
3109    IF p_camp_rec.private_flag = FND_API.g_miss_char THEN
3110       x_complete_rec.private_flag := l_camp_rec.private_flag;
3111    END IF;
3112 
3113    IF p_camp_rec.partner_flag = FND_API.g_miss_char THEN
3114       x_complete_rec.partner_flag := l_camp_rec.partner_flag;
3115    END IF;
3116 
3117    IF p_camp_rec.template_flag = FND_API.g_miss_char THEN
3118       x_complete_rec.template_flag := l_camp_rec.template_flag;
3119    END IF;
3120 
3121    IF p_camp_rec.cascade_source_code_flag = FND_API.g_miss_char THEN
3122       x_complete_rec.cascade_source_code_flag := l_camp_rec.cascade_source_code_flag;
3123    END IF;
3124 
3125    IF p_camp_rec.inherit_attributes_flag = FND_API.g_miss_char THEN
3126       x_complete_rec.inherit_attributes_flag := l_camp_rec.inherit_attributes_flag;
3127    END IF;
3128 
3129    IF p_camp_rec.source_code = FND_API.g_miss_char THEN
3130       x_complete_rec.source_code := l_camp_rec.source_code;
3131    END IF;
3132 
3133    IF p_camp_rec.rollup_type = FND_API.g_miss_char THEN
3134       x_complete_rec.rollup_type := l_camp_rec.rollup_type;
3135    END IF;
3136 
3137    IF p_camp_rec.campaign_type = FND_API.g_miss_char THEN
3138       x_complete_rec.campaign_type := l_camp_rec.campaign_type;
3139    END IF;
3140 
3141    IF p_camp_rec.media_type_code = FND_API.g_miss_char THEN
3142       x_complete_rec.media_type_code := l_camp_rec.media_type_code;
3143    END IF;
3144 
3145    IF p_camp_rec.priority = FND_API.g_miss_char THEN
3146       x_complete_rec.priority := l_camp_rec.priority;
3147    END IF;
3148 
3149    IF p_camp_rec.fund_source_type = FND_API.g_miss_char THEN
3150       x_complete_rec.fund_source_type := l_camp_rec.fund_source_type;
3151    END IF;
3152 
3153    IF p_camp_rec.fund_source_id = FND_API.g_miss_num THEN
3154       x_complete_rec.fund_source_id := l_camp_rec.fund_source_id;
3155    END IF;
3156 
3157    IF p_camp_rec.parent_campaign_id = FND_API.g_miss_num THEN
3158       x_complete_rec.parent_campaign_id := l_camp_rec.parent_campaign_id;
3159    END IF;
3160 
3161    IF p_camp_rec.application_id = FND_API.g_miss_num THEN
3162       x_complete_rec.application_id := l_camp_rec.application_id;
3163    END IF;
3164 
3165    IF p_camp_rec.qp_list_header_id = FND_API.g_miss_num THEN
3166       x_complete_rec.qp_list_header_id := l_camp_rec.qp_list_header_id;
3167    END IF;
3168 
3169    IF p_camp_rec.media_id = FND_API.g_miss_num THEN
3170       x_complete_rec.media_id := l_camp_rec.media_id;
3171    END IF;
3172 
3173    IF p_camp_rec.channel_id = FND_API.g_miss_num THEN
3174       x_complete_rec.channel_id := l_camp_rec.channel_id;
3175    END IF;
3176 
3177    IF p_camp_rec.event_type = FND_API.g_miss_char THEN
3178       x_complete_rec.event_type := l_camp_rec.event_type;
3179    END IF;
3180 
3181    IF p_camp_rec.arc_channel_from = FND_API.g_miss_char THEN
3182       x_complete_rec.arc_channel_from := l_camp_rec.arc_channel_from;
3183    END IF;
3184 
3185    IF p_camp_rec.dscript_name = FND_API.g_miss_char THEN
3186       x_complete_rec.dscript_name := l_camp_rec.dscript_name;
3187    END IF;
3188 
3189    IF p_camp_rec.transaction_currency_code = FND_API.g_miss_char THEN
3190       x_complete_rec.transaction_currency_code := l_camp_rec.transaction_currency_code;
3191    END IF;
3192 
3193    IF p_camp_rec.functional_currency_code = FND_API.g_miss_char THEN
3194       x_complete_rec.functional_currency_code := l_camp_rec.functional_currency_code;
3195    END IF;
3196 
3197    IF p_camp_rec.budget_amount_tc = FND_API.g_miss_num THEN
3198       x_complete_rec.budget_amount_tc := l_camp_rec.budget_amount_tc;
3199    END IF;
3200 
3201    IF p_camp_rec.budget_amount_fc = FND_API.g_miss_num THEN
3202       x_complete_rec.budget_amount_fc := l_camp_rec.budget_amount_fc;
3203    END IF;
3204 
3205    IF p_camp_rec.forecasted_plan_start_date = FND_API.g_miss_date THEN
3206       x_complete_rec.forecasted_plan_start_date := l_camp_rec.forecasted_plan_start_date;
3207    END IF;
3208 
3209    IF p_camp_rec.forecasted_plan_end_date = FND_API.g_miss_date THEN
3210       x_complete_rec.forecasted_plan_end_date := l_camp_rec.forecasted_plan_end_date;
3211    END IF;
3212 
3213    IF p_camp_rec.forecasted_exec_start_date = FND_API.g_miss_date THEN
3214       x_complete_rec.forecasted_exec_start_date := l_camp_rec.forecasted_exec_start_date;
3215    END IF;
3216 
3217    IF p_camp_rec.forecasted_exec_end_date = FND_API.g_miss_date THEN
3218       x_complete_rec.forecasted_exec_end_date := l_camp_rec.forecasted_exec_end_date;
3219    END IF;
3220 
3221    IF p_camp_rec.actual_plan_start_date = FND_API.g_miss_date THEN
3222       x_complete_rec.actual_plan_start_date := l_camp_rec.actual_plan_start_date;
3223    END IF;
3224 
3225    IF p_camp_rec.actual_plan_end_date = FND_API.g_miss_date THEN
3226       x_complete_rec.actual_plan_end_date := l_camp_rec.actual_plan_end_date;
3227    END IF;
3228 
3229    IF p_camp_rec.actual_exec_start_date = FND_API.g_miss_date THEN
3230       x_complete_rec.actual_exec_start_date := l_camp_rec.actual_exec_start_date;
3231    END IF;
3232 
3233    IF p_camp_rec.actual_exec_end_date = FND_API.g_miss_date THEN
3234       x_complete_rec.actual_exec_end_date := l_camp_rec.actual_exec_end_date;
3235    END IF;
3236 
3237    IF p_camp_rec.inbound_url = FND_API.g_miss_char THEN
3238       x_complete_rec.inbound_url := l_camp_rec.inbound_url;
3239    END IF;
3240 
3241    IF p_camp_rec.inbound_email_id = FND_API.g_miss_char THEN
3242       x_complete_rec.inbound_email_id := l_camp_rec.inbound_email_id;
3243    END IF;
3244 
3245    IF p_camp_rec.inbound_phone_no = FND_API.g_miss_char THEN
3246       x_complete_rec.inbound_phone_no := l_camp_rec.inbound_phone_no;
3247    END IF;
3248 
3249    IF p_camp_rec.duration = FND_API.g_miss_num THEN
3250       x_complete_rec.duration := l_camp_rec.duration;
3251    END IF;
3252 
3253    IF p_camp_rec.duration_uom_code = FND_API.g_miss_char THEN
3254       x_complete_rec.duration_uom_code := l_camp_rec.duration_uom_code;
3255    END IF;
3256 
3257    IF p_camp_rec.ff_priority = FND_API.g_miss_char THEN
3258       x_complete_rec.ff_priority := l_camp_rec.ff_priority;
3259    END IF;
3260 
3261    IF p_camp_rec.ff_override_cover_letter = FND_API.g_miss_num THEN
3262       x_complete_rec.ff_override_cover_letter := l_camp_rec.ff_override_cover_letter;
3263    END IF;
3264 
3265    IF p_camp_rec.ff_shipping_method = FND_API.g_miss_char THEN
3266       x_complete_rec.ff_shipping_method := l_camp_rec.ff_shipping_method;
3267    END IF;
3268 
3269    IF p_camp_rec.ff_carrier = FND_API.g_miss_char THEN
3270       x_complete_rec.ff_carrier := l_camp_rec.ff_carrier;
3271    END IF;
3272 
3273    IF p_camp_rec.content_source = FND_API.g_miss_char THEN
3274       x_complete_rec.content_source := l_camp_rec.content_source;
3275    END IF;
3276 
3277    IF p_camp_rec.cc_call_strategy = FND_API.g_miss_char THEN
3278       x_complete_rec.cc_call_strategy := l_camp_rec.cc_call_strategy;
3279    END IF;
3280 
3281    IF p_camp_rec.cc_manager_user_id = FND_API.g_miss_num THEN
3282       x_complete_rec.cc_manager_user_id := l_camp_rec.cc_manager_user_id;
3283    END IF;
3284 
3285    IF p_camp_rec.forecasted_revenue = FND_API.g_miss_num THEN
3286       x_complete_rec.forecasted_revenue := l_camp_rec.forecasted_revenue;
3287    END IF;
3288 
3289    IF p_camp_rec.actual_revenue = FND_API.g_miss_num THEN
3290       x_complete_rec.actual_revenue := l_camp_rec.actual_revenue;
3291    END IF;
3292 
3293    IF p_camp_rec.forecasted_cost = FND_API.g_miss_num THEN
3294       x_complete_rec.forecasted_cost := l_camp_rec.forecasted_cost;
3295    END IF;
3296 
3297    IF p_camp_rec.actual_cost = FND_API.g_miss_num THEN
3298       x_complete_rec.actual_cost := l_camp_rec.actual_cost;
3299    END IF;
3300 
3301    IF p_camp_rec.forecasted_response = FND_API.g_miss_num THEN
3302       x_complete_rec.forecasted_response := l_camp_rec.forecasted_response;
3303    END IF;
3304 
3305    IF p_camp_rec.actual_response = FND_API.g_miss_num THEN
3306       x_complete_rec.actual_response := l_camp_rec.actual_response;
3307    END IF;
3308 
3309    IF p_camp_rec.target_response = FND_API.g_miss_num THEN
3310       x_complete_rec.target_response := l_camp_rec.target_response;
3311    END IF;
3312 
3313    IF p_camp_rec.country_code = FND_API.g_miss_char THEN
3314       x_complete_rec.country_code := l_camp_rec.country_code;
3315    END IF;
3316 
3317    IF p_camp_rec.language_code = FND_API.g_miss_char THEN
3318       x_complete_rec.language_code := l_camp_rec.language_code;
3319    END IF;
3320 
3321    IF p_camp_rec.attribute_category = FND_API.g_miss_char THEN
3322       x_complete_rec.attribute_category := l_camp_rec.attribute_category;
3323    END IF;
3324 
3325    IF p_camp_rec.attribute1 = FND_API.g_miss_char THEN
3326       x_complete_rec.attribute1 := l_camp_rec.attribute1;
3327    END IF;
3328 
3329    IF p_camp_rec.attribute2 = FND_API.g_miss_char THEN
3330       x_complete_rec.attribute2 := l_camp_rec.attribute2;
3331    END IF;
3332 
3333    IF p_camp_rec.attribute3 = FND_API.g_miss_char THEN
3334       x_complete_rec.attribute3 := l_camp_rec.attribute3;
3335    END IF;
3336 
3337    IF p_camp_rec.attribute4 = FND_API.g_miss_char THEN
3338       x_complete_rec.attribute4 := l_camp_rec.attribute4;
3339    END IF;
3340 
3341    IF p_camp_rec.attribute5 = FND_API.g_miss_char THEN
3342       x_complete_rec.attribute5 := l_camp_rec.attribute5;
3343    END IF;
3344 
3345    IF p_camp_rec.attribute6 = FND_API.g_miss_char THEN
3346       x_complete_rec.attribute6 := l_camp_rec.attribute6;
3347    END IF;
3348 
3349    IF p_camp_rec.attribute7 = FND_API.g_miss_char THEN
3350       x_complete_rec.attribute7 := l_camp_rec.attribute7;
3351    END IF;
3352 
3353    IF p_camp_rec.attribute8 = FND_API.g_miss_char THEN
3354       x_complete_rec.attribute8 := l_camp_rec.attribute8;
3355    END IF;
3356 
3357    IF p_camp_rec.attribute9 = FND_API.g_miss_char THEN
3358       x_complete_rec.attribute9 := l_camp_rec.attribute9;
3359    END IF;
3360 
3361    IF p_camp_rec.attribute10 = FND_API.g_miss_char THEN
3362       x_complete_rec.attribute10 := l_camp_rec.attribute10;
3363    END IF;
3364 
3365    IF p_camp_rec.attribute11 = FND_API.g_miss_char THEN
3366       x_complete_rec.attribute11 := l_camp_rec.attribute11;
3367    END IF;
3368 
3369    IF p_camp_rec.attribute12 = FND_API.g_miss_char THEN
3370       x_complete_rec.attribute12 := l_camp_rec.attribute12;
3371    END IF;
3372 
3373    IF p_camp_rec.attribute13 = FND_API.g_miss_char THEN
3374       x_complete_rec.attribute13 := l_camp_rec.attribute13;
3375    END IF;
3376 
3377    IF p_camp_rec.attribute14 = FND_API.g_miss_char THEN
3378       x_complete_rec.attribute14 := l_camp_rec.attribute14;
3379    END IF;
3380 
3381    IF p_camp_rec.attribute15 = FND_API.g_miss_char THEN
3382       x_complete_rec.attribute15 := l_camp_rec.attribute15;
3383    END IF;
3384 
3385    IF p_camp_rec.campaign_name = FND_API.g_miss_char THEN
3386       x_complete_rec.campaign_name := l_camp_rec.campaign_name;
3387    END IF;
3388 
3389    IF p_camp_rec.campaign_theme = FND_API.g_miss_char THEN
3390       x_complete_rec.campaign_theme := l_camp_rec.campaign_theme;
3391    END IF;
3392 
3393    IF p_camp_rec.description = FND_API.g_miss_char THEN
3394       x_complete_rec.description := l_camp_rec.description;
3395    END IF;
3396 
3397    IF p_camp_rec.version_no = FND_API.g_miss_num THEN
3398       x_complete_rec.version_no := l_camp_rec.version_no;
3399    END IF;
3400 
3401    IF p_camp_rec.campaign_calendar = FND_API.g_miss_char THEN
3402       x_complete_rec.campaign_calendar := l_camp_rec.campaign_calendar;
3403    END IF;
3404 
3405    IF p_camp_rec.start_period_name = FND_API.g_miss_char THEN
3406       x_complete_rec.start_period_name := l_camp_rec.start_period_name;
3407    END IF;
3408 
3409    IF p_camp_rec.end_period_name = FND_API.g_miss_char THEN
3410       x_complete_rec.end_period_name := l_camp_rec.end_period_name;
3411    END IF;
3412 
3413    IF p_camp_rec.city_id = FND_API.g_miss_num THEN
3414       x_complete_rec.city_id := l_camp_rec.city_id;
3415    END IF;
3416 
3417    IF p_camp_rec.global_flag = FND_API.g_miss_char THEN
3418       x_complete_rec.global_flag := l_camp_rec.global_flag;
3419    END IF;
3420 
3421    IF p_camp_rec.custom_setup_id = FND_API.g_miss_num THEN
3422       x_complete_rec.custom_setup_id := l_camp_rec.custom_setup_id;
3423    END IF;
3424 
3425    IF p_camp_rec.show_campaign_flag = FND_API.g_miss_char THEN
3426       x_complete_rec.show_campaign_flag := l_camp_rec.show_campaign_flag;
3427    END IF;
3428 
3429    IF p_camp_rec.business_unit_id = FND_API.g_miss_num THEN
3430       x_complete_rec.business_unit_id := l_camp_rec.business_unit_id;
3431    END IF;
3432 
3433    IF p_camp_rec.accounts_closed_flag = FND_API.g_miss_char THEN
3434       x_complete_rec.accounts_closed_flag := l_camp_rec.accounts_closed_flag;
3435    END IF;
3436 
3437    IF p_camp_rec.task_id = FND_API.g_miss_num THEN
3438       x_complete_rec.task_id := l_camp_rec.task_id;
3439    END IF;
3440 
3441    IF p_camp_rec.related_event_from = FND_API.g_miss_char THEN
3442       x_complete_rec.related_event_from := l_camp_rec.related_event_from ;
3443    END IF;
3444 
3445    IF p_camp_rec.related_event_id = FND_API.g_miss_num THEN
3446       x_complete_rec.related_event_id := l_camp_rec.related_event_id;
3447    END IF;
3448 
3449    IF p_camp_rec.program_attribute_category = FND_API.g_miss_char THEN
3450       x_complete_rec.program_attribute_category := l_camp_rec.program_attribute_category;
3451    END IF;
3452 
3453    IF p_camp_rec.program_attribute1 = FND_API.g_miss_char THEN
3454       x_complete_rec.program_attribute1 := l_camp_rec.program_attribute1;
3455    END IF;
3456 
3457    IF p_camp_rec.program_attribute2 = FND_API.g_miss_char THEN
3458       x_complete_rec.program_attribute2 := l_camp_rec.program_attribute2;
3459    END IF;
3460 
3461    IF p_camp_rec.program_attribute3 = FND_API.g_miss_char THEN
3462       x_complete_rec.program_attribute3 := l_camp_rec.program_attribute3 ;
3463    END IF;
3464 
3465    IF p_camp_rec.program_attribute4 = FND_API.g_miss_char THEN
3466       x_complete_rec.program_attribute4 := l_camp_rec.program_attribute4 ;
3467    END IF;
3468 
3469    IF p_camp_rec.program_attribute5 = FND_API.g_miss_char THEN
3470       x_complete_rec.program_attribute5 := l_camp_rec.program_attribute5;
3471    END IF;
3472 
3473    IF p_camp_rec.program_attribute6 = FND_API.g_miss_char THEN
3474       x_complete_rec.program_attribute6 := l_camp_rec.program_attribute6;
3475    END IF;
3476 
3477    IF p_camp_rec.program_attribute7 = FND_API.g_miss_char THEN
3478       x_complete_rec.program_attribute7 := l_camp_rec.program_attribute7;
3479    END IF;
3480 
3481    IF p_camp_rec.program_attribute8 = FND_API.g_miss_char THEN
3482       x_complete_rec.program_attribute8 := l_camp_rec.program_attribute8;
3483    END IF;
3484 
3485    IF p_camp_rec.program_attribute9 = FND_API.g_miss_char THEN
3486       x_complete_rec.program_attribute9 := l_camp_rec.program_attribute9;
3487    END IF;
3488 
3489    IF p_camp_rec.program_attribute10 = FND_API.g_miss_char THEN
3490       x_complete_rec.program_attribute10 := l_camp_rec.program_attribute10;
3491    END IF;
3492 
3493    IF p_camp_rec.program_attribute11 = FND_API.g_miss_char THEN
3494       x_complete_rec.program_attribute11 := l_camp_rec.program_attribute11;
3495    END IF;
3496 
3497    IF p_camp_rec.program_attribute12 = FND_API.g_miss_char THEN
3498       x_complete_rec.program_attribute12 := l_camp_rec.program_attribute12;
3499    END IF;
3500 
3501    IF p_camp_rec.program_attribute13 = FND_API.g_miss_char THEN
3502       x_complete_rec.program_attribute13 := l_camp_rec.program_attribute13 ;
3503    END IF;
3504 
3505    IF p_camp_rec.program_attribute14 = FND_API.g_miss_char THEN
3506       x_complete_rec.program_attribute14 := l_camp_rec.program_attribute14 ;
3507    END IF;
3508 
3509    IF p_camp_rec.program_attribute15 = FND_API.g_miss_char THEN
3510       x_complete_rec.program_attribute15 := l_camp_rec.program_attribute15;
3511    END IF;
3512 
3513 
3514 END Complete_Camp_Rec;
3515 
3516 
3517 END AMS_Campaign_PVT;