DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_ASSET_ACTIVITIES_PVT

Source


1 PACKAGE BODY EAM_ASSET_ACTIVITIES_PVT as
2 /* $Header: EAMVASOB.pls 120.3.12020000.2 2013/01/04 06:23:30 shengywa ship $ */
3  -- Start of comments
4  -- API name    : EAM_ASSET_ACTIVITIES_PVT
5  -- Type     : Private
6  -- Function :
7  -- Pre-reqs : None.
8  -- Parameters  :
9  -- IN       P_API_VERSION                 IN NUMBER       REQUIRED
10  --          P_INIT_MSG_LIST               IN VARCHAR2     OPTIONAL
11  --             DEFAULT = FND_API.G_FALSE
12  --          P_COMMIT                      IN VARCHAR2     OPTIONAL
13  --             DEFAULT = FND_API.G_FALSE
14  --          P_VALIDATION_LEVEL            IN NUMBER       OPTIONAL
15  --             DEFAULT = FND_API.G_VALID_LEVEL_FULL
16  --          P_ROWID                       IN OUT VARCHAR2 REQUIRED
17  --          P_ACTIVITY_ASSOCIATION_ID     IN OUT NUMBER   REQUIRED
18  --          P_ORGANIZATION_ID             IN  NUMBER      REQUIRED
19  --          P_ASSET_ACTIVITY_ID           IN  NUMBER      REQUIRED
20  --          P_INVENTORY_ITEM_ID           IN  NUMBER      REQUIRED
21  --          P_SERIAL_NUMBER               IN  VARCHAR2    OPTIONAL
22  --          P_START_DATE_ACTIVE           IN  DATE        OPTIONAL
23  --          P_END_DATE_ACTIVE             IN  DATE        OPTIONAL
24  --          P_PRIORITY_CODE               IN  VARCHAR2    OPTIONAL
25  --          P_ACTIVITY_CAUSE_CODE         IN  VARCHAR2    OPTIONAL
26  --          P_ACTIVITY_TYPE_CODE          IN  VARCHAR2    OPTIONAL
27  --          P_OWNING_DEPARTMENT_ID        IN  NUMBER      REQUIRED
28  --          P_LAST_UPDATE_DATE            IN  DATE        REQUIRED
29  --          P_LAST_UPDATED_BY             IN  NUMBER      REQUIRED
30  --          P_CREATION_DATE               IN  DATE        REQUIRED
31  --          P_CREATED_BY                  IN  NUMBER      REQUIRED
32  --          P_LAST_UPDATE_LOGIN           IN  NUMBER      REQUIRED
33  --          P_ATTRIBUTE_CATEGORY          IN  VARCHAR2    OPTIONAL
34  --          P_ATTRIBUTE1                  IN  VARCHAR2    OPTIONAL
35  --          P_ATTRIBUTE2                  IN  VARCHAR2    OPTIONAL
36  --          P_ATTRIBUTE3                  IN  VARCHAR2    OPTIONAL
37  --          P_ATTRIBUTE4                  IN  VARCHAR2    OPTIONAL
38  --          P_ATTRIBUTE5                  IN  VARCHAR2    OPTIONAL
39  --          P_ATTRIBUTE6                  IN  VARCHAR2    OPTIONAL
40  --          P_ATTRIBUTE7                  IN  VARCHAR2    OPTIONAL
41  --          P_ATTRIBUTE8                  IN  VARCHAR2    OPTIONAL
42  --          P_ATTRIBUTE9                  IN  VARCHAR2    OPTIONAL
43  --          P_ATTRIBUTE10                 IN  VARCHAR2    OPTIONAL
44  --          P_ATTRIBUTE11                 IN  VARCHAR2    OPTIONAL
45  --          P_ATTRIBUTE12                 IN  VARCHAR2    OPTIONAL
46  --          P_ATTRIBUTE13                 IN  VARCHAR2    OPTIONAL
47  --          P_ATTRIBUTE14                 IN  VARCHAR2    OPTIONAL
48  --          P_ATTRIBUTE15                 IN  VARCHAR2    OPTIONAL
49  --          P_REQUEST_ID                  IN  NUMBER DEFAULT NULL OPTIONAL
50  --          P_PROGRAM_APPLICATION_ID      IN  NUMBER DEFAULT NULL OPTIONAL
51  --          P_PROGRAM_ID                  IN  NUMBER DEFAULT NULL OPTIONAL
52  --          P_PROGRAM_UPDATE_DATE         IN  DATE DEFAULT NULL
53  -- OUT      X_RETURN_STATUS               OUT VARCHAR2(1)
54  --          X_MSG_COUNT                   OUT NUMBER
55  --          X_MSG_DATA                    OUT VARCHAR2(2000)
56  --
57  -- Version  Current version 115.0
58  --
59  -- Notes    : Note text
60  --
61  -- End of comments
62 
63    g_pkg_name    CONSTANT VARCHAR2(30):= 'eam_asset_activities_pvt';
64 
65 FUNCTION to_fnd_std_num(p_value NUMBER)
66 RETURN NUMBER IS
67 BEGIN
68    IF (p_value IS NULL) THEN
69      RETURN fnd_api.g_miss_num;
70    ELSE
71      RETURN p_value;
72    END IF;
73 END to_fnd_std_num;
74 
75 FUNCTION to_fnd_std_char(p_value VARCHAR2)
76 RETURN VARCHAR2 IS
77 BEGIN
78    IF (p_value IS NULL) THEN
79      RETURN fnd_api.g_miss_char;
80    ELSE
81      RETURN p_value;
82    END IF;
83 END to_fnd_std_char;
84 
85 PROCEDURE INSERT_ROW(
86   P_API_VERSION IN NUMBER,
87   P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
88   P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
89   P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
90   P_ROWID                         IN OUT NOCOPY VARCHAR2,
91   P_ACTIVITY_ASSOCIATION_ID       IN OUT NOCOPY NUMBER,
92   P_ORGANIZATION_ID               NUMBER,
93   P_ASSET_ACTIVITY_ID             NUMBER,
94   P_INVENTORY_ITEM_ID             NUMBER,
95   P_SERIAL_NUMBER                 VARCHAR2,
96   P_START_DATE_ACTIVE             DATE,
97   P_END_DATE_ACTIVE               DATE,
98   P_PRIORITY_CODE                 VARCHAR2,
99   P_ACTIVITY_CAUSE_CODE           VARCHAR2,
100   P_ACTIVITY_TYPE_CODE            VARCHAR2,
101   P_ACTIVITY_SOURCE_CODE          VARCHAR2,
102   P_WORK_ORDER_TYPE               NUMBER,
103   P_PLANNER                       NUMBER,
104   P_FIRM                          IN  NUMBER,
105   P_PLANNED                       IN  VARCHAR2,
106   P_NOTIFICATION_REQUIRED         IN  VARCHAR2,
107   P_CLASS_CODE                    VARCHAR2,
108   P_OWNING_DEPARTMENT_ID          NUMBER,
109   P_TAGGING_REQUIRED_FLAG         VARCHAR2,
110   P_SHUTDOWN_TYPE_CODE            VARCHAR2,
111   P_LAST_UPDATE_DATE              DATE,
112   P_LAST_UPDATED_BY               NUMBER,
113   P_CREATION_DATE                 DATE,
114   P_CREATED_BY                    NUMBER,
115   P_LAST_UPDATE_LOGIN             NUMBER,
116   P_ATTRIBUTE_CATEGORY            VARCHAR2,
117   P_ATTRIBUTE1                    VARCHAR2,
118   P_ATTRIBUTE2                    VARCHAR2,
119   P_ATTRIBUTE3                    VARCHAR2,
120   P_ATTRIBUTE4                    VARCHAR2,
121   P_ATTRIBUTE5                    VARCHAR2,
122   P_ATTRIBUTE6                    VARCHAR2,
123   P_ATTRIBUTE7                    VARCHAR2,
124   P_ATTRIBUTE8                    VARCHAR2,
125   P_ATTRIBUTE9                    VARCHAR2,
126   P_ATTRIBUTE10                   VARCHAR2,
127   P_ATTRIBUTE11                   VARCHAR2,
128   P_ATTRIBUTE12                   VARCHAR2,
129   P_ATTRIBUTE13                   VARCHAR2,
130   P_ATTRIBUTE14                   VARCHAR2,
131   P_ATTRIBUTE15                   VARCHAR2,
132   P_REQUEST_ID                    NUMBER,
133   P_PROGRAM_APPLICATION_ID        NUMBER,
134   P_PROGRAM_ID                    NUMBER,
135   P_PROGRAM_UPDATE_DATE           DATE,
136   P_TMPL_FLAG			VARCHAR2,
137   P_MAINTENANCE_OBJECT_ID	NUMBER,
138   P_MAINTENANCE_OBJECT_TYPE	NUMBER,
139   P_CREATION_ORGANIZATION_ID	NUMBER,
140   X_RETURN_STATUS OUT NOCOPY VARCHAR2,
141   X_MSG_COUNT OUT NOCOPY NUMBER,
142   X_MSG_DATA OUT NOCOPY VARCHAR2
143   ) IS
144     l_api_name       CONSTANT VARCHAR2(30) := 'insert_row';
145     l_api_version    CONSTANT NUMBER       := 1.0;
146     l_full_name      CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
147     l_object_type             NUMBER;
148 
149     CURSOR C IS SELECT rowid FROM MTL_EAM_ASSET_ACTIVITIES
150                  WHERE ACTIVITY_ASSOCIATION_ID = P_ACTIVITY_ASSOCIATION_ID;
151 
152    BEGIN
153 
154    -- Standard Start of API savepoint
155       SAVEPOINT insert_row;
156 
157    -- Standard call to check for call compatibility.
158       IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
159          RAISE fnd_api.g_exc_unexpected_error;
160       END IF;
161 
162    -- Initialize message list if p_init_msg_list is set to TRUE.
163       IF fnd_api.to_boolean(p_init_msg_list) THEN
164          fnd_msg_pub.initialize;
165       END IF;
166 
167    -- Initialize API return status to success
168       x_return_status := fnd_api.g_ret_sts_success;
169 
170    -- API body
171 
172        INSERT INTO MTL_EAM_ASSET_ACTIVITIES(
173        ACTIVITY_ASSOCIATION_ID,
174        ASSET_ACTIVITY_ID,
175        INVENTORY_ITEM_ID,
176        SERIAL_NUMBER,
177        START_DATE_ACTIVE,
178        END_DATE_ACTIVE,
179        PRIORITY_CODE,
180        LAST_UPDATE_DATE,
181        LAST_UPDATED_BY,
182        CREATION_DATE,
183        CREATED_BY,
184        LAST_UPDATE_LOGIN,
185        ATTRIBUTE_CATEGORY,
186        ATTRIBUTE1,
187        ATTRIBUTE2,
188        ATTRIBUTE3,
189        ATTRIBUTE4,
190        ATTRIBUTE5,
191        ATTRIBUTE6,
192        ATTRIBUTE7,
193        ATTRIBUTE8,
194        ATTRIBUTE9,
195        ATTRIBUTE10,
196        ATTRIBUTE11,
197        ATTRIBUTE12,
198        ATTRIBUTE13,
199        ATTRIBUTE14,
200        ATTRIBUTE15,
201        REQUEST_ID,
202        PROGRAM_APPLICATION_ID,
203        PROGRAM_ID,
204        PROGRAM_UPDATE_DATE,
205 	TMPL_FLAG,
206 	MAINTENANCE_OBJECT_ID,
207 	MAINTENANCE_OBJECT_TYPE
208        ) VALUES (
209        mtl_eam_asset_activities_s.nextval,
210        P_ASSET_ACTIVITY_ID,
211        P_INVENTORY_ITEM_ID,
212        P_SERIAL_NUMBER,
213        P_START_DATE_ACTIVE,
214        P_END_DATE_ACTIVE,
215        P_PRIORITY_CODE,
216        P_LAST_UPDATE_DATE,
217        P_LAST_UPDATED_BY,
218        P_CREATION_DATE,
219        P_CREATED_BY,
220        P_LAST_UPDATE_LOGIN,
221        P_ATTRIBUTE_CATEGORY,
222        P_ATTRIBUTE1,
223        P_ATTRIBUTE2,
224        P_ATTRIBUTE3,
225        P_ATTRIBUTE4,
226        P_ATTRIBUTE5,
227        P_ATTRIBUTE6,
228        P_ATTRIBUTE7,
229        P_ATTRIBUTE8,
230        P_ATTRIBUTE9,
231        P_ATTRIBUTE10,
232        P_ATTRIBUTE11,
233        P_ATTRIBUTE12,
234        P_ATTRIBUTE13,
235        P_ATTRIBUTE14,
236        P_ATTRIBUTE15,
237        P_REQUEST_ID,
238        P_PROGRAM_APPLICATION_ID,
239        P_PROGRAM_ID,
240        P_PROGRAM_UPDATE_DATE,
241        P_TMPL_FLAG,
242        P_MAINTENANCE_OBJECT_ID,
243        P_MAINTENANCE_OBJECT_TYPE
244        ) returning activity_association_id, rowid into P_ACTIVITY_ASSOCIATION_ID, P_ROWID;
245 
246        IF p_maintenance_object_type = 2 THEN
247           l_object_type := 40;
248        ELSE
249           l_object_type := 60;
250        END IF;
251 
252        eam_org_maint_defaults_pvt.insert_row
253 	(
254 	      p_api_version           => 1.0
255 	     ,p_object_type           => l_object_type
256 	     ,p_object_id             => p_activity_association_id
257 	     ,p_organization_id       => p_organization_Id
258 	     ,p_owning_department_id  => p_owning_department_id
259 	     ,p_accounting_class_code => p_class_code
260 	     ,p_activity_cause_code   => p_activity_cause_code
261 	     ,p_activity_type_code    => p_activity_type_code
262 	     ,p_activity_source_code  => p_activity_source_code
263          ,p_work_order_type       => p_work_order_type
264          ,p_planner               => p_planner
265          ,p_firm                  => p_firm
266          ,p_planned               => p_planned
267 	     ,p_notification_required => p_notification_required
268 	     ,p_shutdown_type_code    => p_shutdown_type_code
269 	     ,p_tagging_required_flag => p_tagging_required_flag
270 	     ,x_return_status         => x_return_status
271 	     ,x_msg_count             => x_msg_count
272 	     ,x_msg_data              => x_msg_data
273 	);
274 
275        IF x_return_status <> fnd_api.g_ret_sts_success THEN
276 	  RAISE fnd_api.g_exc_error;
277        END IF;
278 
279 
280     OPEN C;
281     FETCH C INTO P_Rowid;
282     if (C%NOTFOUND) then
283       CLOSE C;
284       Raise NO_DATA_FOUND;
285     end if;
286     CLOSE C;
287 
288    -- End of API body.
289    -- Standard check of p_commit.
290       IF fnd_api.to_boolean(p_commit) THEN
291          COMMIT WORK;
292       END IF;
293 
294    -- Standard call to get message count and if count is 1, get message info.
295       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
296    EXCEPTION
297       WHEN fnd_api.g_exc_error THEN
298          ROLLBACK TO insert_row;
299          x_return_status := fnd_api.g_ret_sts_error;
300          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
301       WHEN fnd_api.g_exc_unexpected_error THEN
302          ROLLBACK TO insert_row;
303          x_return_status := fnd_api.g_ret_sts_unexp_error;
304          fnd_msg_pub.count_and_get(
305             p_count => x_msg_count
306            ,p_data => x_msg_data);
307       WHEN OTHERS THEN
308          ROLLBACK TO insert_row;
309          x_return_status := fnd_api.g_ret_sts_unexp_error;
310 
311          IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
312             fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
313          END IF;
314 
315          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
316 
317   END Insert_Row;
318 
319 PROCEDURE LOCK_ROW(
320   P_API_VERSION IN NUMBER,
321   P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
322   P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
323   P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
324   P_ROWID                           VARCHAR2,
325   P_ACTIVITY_ASSOCIATION_ID         NUMBER,
326   P_ORGANIZATION_ID                 NUMBER,
327   P_ASSET_ACTIVITY_ID               NUMBER,
328   P_INVENTORY_ITEM_ID               NUMBER,
329   P_SERIAL_NUMBER                   VARCHAR2,
330   P_START_DATE_ACTIVE               DATE,
331   P_END_DATE_ACTIVE                 DATE,
332   P_PRIORITY_CODE                   VARCHAR2,
333   P_ACTIVITY_CAUSE_CODE             VARCHAR2,
334   P_ACTIVITY_TYPE_CODE              VARCHAR2,
335   P_ACTIVITY_SOURCE_CODE          VARCHAR2,
336   P_CLASS_CODE                      VARCHAR2,
337   P_OWNING_DEPARTMENT_ID            NUMBER,
338   P_TAGGING_REQUIRED_FLAG           VARCHAR2,
339   P_SHUTDOWN_TYPE_CODE              VARCHAR2,
343   P_ATTRIBUTE3                      VARCHAR2,
340   P_ATTRIBUTE_CATEGORY              VARCHAR2,
341   P_ATTRIBUTE1                      VARCHAR2,
342   P_ATTRIBUTE2                      VARCHAR2,
344   P_ATTRIBUTE4                      VARCHAR2,
345   P_ATTRIBUTE5                      VARCHAR2,
346   P_ATTRIBUTE6                      VARCHAR2,
347   P_ATTRIBUTE7                      VARCHAR2,
348   P_ATTRIBUTE8                      VARCHAR2,
349   P_ATTRIBUTE9                      VARCHAR2,
350   P_ATTRIBUTE10                     VARCHAR2,
351   P_ATTRIBUTE11                     VARCHAR2,
352   P_ATTRIBUTE12                     VARCHAR2,
353   P_ATTRIBUTE13                     VARCHAR2,
354   P_ATTRIBUTE14                       VARCHAR2,
355   P_ATTRIBUTE15                       VARCHAR2,
356   P_REQUEST_ID                        NUMBER,
357   P_PROGRAM_APPLICATION_ID            NUMBER,
358   P_PROGRAM_ID                        NUMBER,
359   P_PROGRAM_UPDATE_DATE               DATE,
360   P_MAINTENANCE_OBJECT_ID	NUMBER,
361   P_MAINTENANCE_OBJECT_TYPE	NUMBER,
362   X_RETURN_STATUS OUT NOCOPY VARCHAR2,
363   X_MSG_COUNT OUT NOCOPY NUMBER,
364   X_MSG_DATA OUT NOCOPY VARCHAR2
365   ) IS
366     l_api_name       CONSTANT VARCHAR2(30) := 'lock_row';
367     l_api_version    CONSTANT NUMBER       := 1.0;
368     l_full_name      CONSTANT VARCHAR2(60)   := g_pkg_name || '.' || l_api_name;
369 
370     CURSOR C IS
371         SELECT *
372         FROM   MTL_EAM_ASSET_ACTIVITIES
373         WHERE  rowid = P_Rowid
374         FOR UPDATE of ASSET_ACTIVITY_ID NOWAIT;
375     Recinfo C%ROWTYPE;
376 
377   BEGIN
378 
379    -- Standard Start of API savepoint
380       SAVEPOINT lock_row;
381 
382    -- Standard call to check for call compatibility.
383       IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
384          RAISE fnd_api.g_exc_unexpected_error;
385       END IF;
386 
387    -- Initialize message list if p_init_msg_list is set to TRUE.
388       IF fnd_api.to_boolean(p_init_msg_list) THEN
389          fnd_msg_pub.initialize;
390       END IF;
391 
392    -- Initialize API return status to success
393       x_return_status := fnd_api.g_ret_sts_success;
394 
395    -- API body
396 
397     OPEN C;
398     FETCH C INTO Recinfo;
399     if (C%NOTFOUND) then
400       CLOSE C;
401       FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
402       APP_EXCEPTION.Raise_Exception;
403     end if;
404     CLOSE C;
405     if (
406        (Recinfo.ACTIVITY_ASSOCIATION_ID =  P_ACTIVITY_ASSOCIATION_ID)
407        AND (Recinfo.ASSET_ACTIVITY_ID =  P_ASSET_ACTIVITY_ID)
408        AND (   (Recinfo.START_DATE_ACTIVE =  P_START_DATE_ACTIVE)
409             OR (    (Recinfo.START_DATE_ACTIVE IS NULL)
410                 AND (P_START_DATE_ACTIVE IS NULL)))
411        AND (   (Recinfo.END_DATE_ACTIVE =  P_END_DATE_ACTIVE)
412             OR (    (Recinfo.END_DATE_ACTIVE IS NULL)
413                 AND (P_END_DATE_ACTIVE IS NULL)))
414        AND (   (Recinfo.PRIORITY_CODE =  P_PRIORITY_CODE)
415             OR (    (Recinfo.PRIORITY_CODE IS NULL)
416                 AND (P_PRIORITY_CODE IS NULL)))
417        AND (   (Recinfo.attribute_category =  P_Attribute_Category)
418             OR (    (Recinfo.attribute_category IS NULL)
419                 AND (P_Attribute_Category IS NULL)))
420        AND (   (Recinfo.attribute1 =  P_Attribute1)
421             OR (    (Recinfo.attribute1 IS NULL)
422                 AND (P_Attribute1 IS NULL)))
423        AND (   (Recinfo.attribute2 =  P_Attribute2)
424             OR (    (Recinfo.attribute2 IS NULL)
425                 AND (P_Attribute2 IS NULL)))
426        AND (   (Recinfo.attribute3 =  P_Attribute3)
427             OR (    (Recinfo.attribute3 IS NULL)
428                 AND (P_Attribute3 IS NULL)))
429        AND (   (Recinfo.attribute4 =  P_Attribute4)
430             OR (    (Recinfo.attribute4 IS NULL)
431                 AND (P_Attribute4 IS NULL)))
432        AND (   (Recinfo.attribute5 =  P_Attribute5)
433             OR (    (Recinfo.attribute5 IS NULL)
434                 AND (P_Attribute5 IS NULL)))
435        AND (   (Recinfo.attribute6 =  P_Attribute6)
436             OR (    (Recinfo.attribute6 IS NULL)
437                 AND (P_Attribute6 IS NULL)))
438        AND (   (Recinfo.attribute7 =  P_Attribute7)
439             OR (    (Recinfo.attribute7 IS NULL)
440                 AND (P_Attribute7 IS NULL)))
441        AND (   (Recinfo.attribute8 =  P_Attribute8)
442             OR (    (Recinfo.attribute8 IS NULL)
443                 AND (P_Attribute8 IS NULL)))
444        AND (   (Recinfo.attribute9 =  P_Attribute9)
445             OR (    (Recinfo.attribute9 IS NULL)
446                 AND (P_Attribute9 IS NULL)))
447        AND (   (Recinfo.attribute10 =  P_Attribute10)
448             OR (    (Recinfo.attribute10 IS NULL)
449                 AND (P_Attribute10 IS NULL)))
450        AND (   (Recinfo.attribute11 =  P_Attribute11)
451             OR (    (Recinfo.attribute11 IS NULL)
452                 AND (P_Attribute11 IS NULL)))
453        AND (   (Recinfo.attribute12 =  P_Attribute12)
454             OR (    (Recinfo.attribute12 IS NULL)
455                 AND (P_Attribute12 IS NULL)))
456        AND (   (Recinfo.attribute13 =  P_Attribute13)
457             OR (    (Recinfo.attribute13 IS NULL)
458                 AND (P_Attribute13 IS NULL)))
459        AND (   (Recinfo.attribute14 =  P_Attribute14)
460             OR (    (Recinfo.attribute14 IS NULL)
461                 AND (P_Attribute14 IS NULL)))
462        AND (   (Recinfo.attribute15 =  P_Attribute15)
463             OR (    (Recinfo.attribute15 IS NULL)
464                 AND (P_Attribute15 IS NULL)))
465        AND (   (Recinfo.REQUEST_ID = P_REQUEST_ID)
466             OR (    (Recinfo.REQUEST_ID IS NULL)
470                 AND (P_PROGRAM_APPLICATION_ID IS NULL)))
467                 AND (P_REQUEST_ID IS NULL)))
468        AND (   (Recinfo.PROGRAM_APPLICATION_ID = P_PROGRAM_APPLICATION_ID)
469             OR (    (Recinfo.PROGRAM_APPLICATION_ID IS NULL)
471        AND (   (Recinfo.PROGRAM_ID = P_PROGRAM_ID)
472             OR (    (Recinfo.PROGRAM_ID IS NULL)
473                 AND (P_PROGRAM_ID IS NULL)))
474        AND (   (Recinfo.PROGRAM_UPDATE_DATE = P_PROGRAM_UPDATE_DATE)
475             OR (    (Recinfo.PROGRAM_UPDATE_DATE IS NULL)
476                 AND (P_PROGRAM_UPDATE_DATE IS NULL)))
477        AND (   (Recinfo.MAINTENANCE_OBJECT_ID = P_MAINTENANCE_OBJECT_ID)
478             OR (    (Recinfo.MAINTENANCE_OBJECT_ID IS NULL)
479                 AND (P_MAINTENANCE_OBJECT_ID IS NULL)))
480        AND (   (Recinfo.MAINTENANCE_OBJECT_TYPE = P_MAINTENANCE_OBJECT_TYPE)
481             OR (    (Recinfo.MAINTENANCE_OBJECT_TYPE IS NULL)
482                 AND (P_MAINTENANCE_OBJECT_TYPE IS NULL)))
483       ) then
484       return;
485     else
486       FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
487       APP_EXCEPTION.Raise_Exception;
488     end if;
489 
490    -- End of API body.
491    -- Standard check of p_commit.
492       IF fnd_api.to_boolean(p_commit) THEN
493          COMMIT WORK;
494       END IF;
495 
496    -- Standard call to get message count and if count is 1, get message info.
497       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
498    EXCEPTION
499       WHEN fnd_api.g_exc_error THEN
500          ROLLBACK TO lock_row;
501          x_return_status := fnd_api.g_ret_sts_error;
502          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
503       WHEN fnd_api.g_exc_unexpected_error THEN
504          ROLLBACK TO lock_row;
505          x_return_status := fnd_api.g_ret_sts_unexp_error;
506          fnd_msg_pub.count_and_get(
507             p_count => x_msg_count
508            ,p_data => x_msg_data);
509       WHEN OTHERS THEN
510          ROLLBACK TO lock_row;
511          x_return_status := fnd_api.g_ret_sts_unexp_error;
512 
513          IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
514             fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
515          END IF;
516 
517          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
518 
519   END Lock_Row;
520 
521 PROCEDURE UPDATE_ROW(
522   P_API_VERSION IN NUMBER,
523   P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
524   P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
525   P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
526   P_ROWID                         VARCHAR2,
527   P_ACTIVITY_ASSOCIATION_ID       NUMBER,
528   P_ORGANIZATION_ID               NUMBER,
529   P_ASSET_ACTIVITY_ID             NUMBER,
530   P_INVENTORY_ITEM_ID             NUMBER,
531   P_SERIAL_NUMBER                 VARCHAR2,
532   P_START_DATE_ACTIVE             DATE,
533   P_END_DATE_ACTIVE               DATE,
534   P_PRIORITY_CODE                 VARCHAR2,
535   P_ACTIVITY_CAUSE_CODE           VARCHAR2,
536   P_ACTIVITY_TYPE_CODE            VARCHAR2,
537   P_ACTIVITY_SOURCE_CODE          VARCHAR2,
538   P_WORK_ORDER_TYPE               NUMBER,
539   P_PLANNER                       NUMBER,
540   P_FIRM                          IN  NUMBER,
541   P_PLANNED                       IN  VARCHAR2,
542   P_NOTIFICATION_REQUIRED         IN  VARCHAR2,
543   P_CLASS_CODE                    VARCHAR2,
544   P_OWNING_DEPARTMENT_ID          NUMBER,
545   P_TAGGING_REQUIRED_FLAG         VARCHAR2,
546   P_SHUTDOWN_TYPE_CODE            VARCHAR2,
547   P_LAST_UPDATE_DATE              DATE,
548   P_LAST_UPDATED_BY               NUMBER,
549   P_LAST_UPDATE_LOGIN             NUMBER,
550   P_ATTRIBUTE_CATEGORY            VARCHAR2,
551   P_ATTRIBUTE1                    VARCHAR2,
552   P_ATTRIBUTE2                    VARCHAR2,
553   P_ATTRIBUTE3                    VARCHAR2,
554   P_ATTRIBUTE4                    VARCHAR2,
555   P_ATTRIBUTE5                    VARCHAR2,
556   P_ATTRIBUTE6                    VARCHAR2,
557   P_ATTRIBUTE7                    VARCHAR2,
558   P_ATTRIBUTE8                    VARCHAR2,
559   P_ATTRIBUTE9                    VARCHAR2,
560   P_ATTRIBUTE10                   VARCHAR2,
561   P_ATTRIBUTE11                   VARCHAR2,
562   P_ATTRIBUTE12                   VARCHAR2,
563   P_ATTRIBUTE13                   VARCHAR2,
564   P_ATTRIBUTE14                   VARCHAR2,
565   P_ATTRIBUTE15                   VARCHAR2,
566   P_REQUEST_ID                    NUMBER,
567   P_PROGRAM_APPLICATION_ID        NUMBER,
568   P_PROGRAM_ID                    NUMBER,
569   P_PROGRAM_UPDATE_DATE           DATE,
570   P_MAINTENANCE_OBJECT_ID	NUMBER,
571   P_MAINTENANCE_OBJECT_TYPE	NUMBER,
572   X_RETURN_STATUS OUT NOCOPY VARCHAR2,
573   X_MSG_COUNT OUT NOCOPY NUMBER,
574   X_MSG_DATA OUT NOCOPY VARCHAR2
575   ) IS
576     l_api_name       CONSTANT VARCHAR2(30) := 'update_row';
577     l_api_version    CONSTANT NUMBER       := 1.0;
578     l_full_name      CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
579     l_object_type             NUMBER;
580 
581     cursor pmSchedules is
582     select eps.pm_schedule_id
583     from mtl_eam_asset_activities meaa, eam_pm_activities epa, eam_pm_schedulings eps
584     where epa.activity_association_id=meaa.activity_association_id and
585     epa.pm_schedule_id=eps.pm_schedule_id AND meaa.activity_association_id = P_ACTIVITY_ASSOCIATION_ID;  --bug 10381070
586   BEGIN
587    -- Standard Start of API savepoint
588       SAVEPOINT update_row;
589 
590    -- Standard call to check for call compatibility.
591       IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
592          RAISE fnd_api.g_exc_unexpected_error;
593       END IF;
594 
598       END IF;
595    -- Initialize message list if p_init_msg_list is set to TRUE.
596       IF fnd_api.to_boolean(p_init_msg_list) THEN
597          fnd_msg_pub.initialize;
599 
600    -- Initialize API return status to success
601       x_return_status := fnd_api.g_ret_sts_success;
602 
603    -- API body
604 
605     UPDATE MTL_EAM_ASSET_ACTIVITIES
606     SET
607 --     INVENTORY_ITEM_ID               =     P_INVENTORY_ITEM_ID,
608 --     SERIAL_NUMBER                   =     P_SERIAL_NUMBER,
609      START_DATE_ACTIVE               =     P_START_DATE_ACTIVE,
610      END_DATE_ACTIVE                 =     P_END_DATE_ACTIVE,
611      PRIORITY_CODE                   =     P_PRIORITY_CODE,
612      LAST_UPDATE_DATE                =     P_LAST_UPDATE_DATE,
613      LAST_UPDATED_BY                 =     P_LAST_UPDATED_BY,
614      LAST_UPDATE_LOGIN               =     P_LAST_UPDATE_LOGIN,
615      ATTRIBUTE_CATEGORY              =     P_ATTRIBUTE_CATEGORY,
616      ATTRIBUTE1                      =     P_ATTRIBUTE1,
617      ATTRIBUTE2                      =     P_ATTRIBUTE2,
618      ATTRIBUTE3                      =     P_ATTRIBUTE3,
619      ATTRIBUTE4                      =     P_ATTRIBUTE4,
620      ATTRIBUTE5                      =     P_ATTRIBUTE5,
621      ATTRIBUTE6                      =     P_ATTRIBUTE6,
622      ATTRIBUTE7                      =     P_ATTRIBUTE7,
623      ATTRIBUTE8                      =     P_ATTRIBUTE8,
624      ATTRIBUTE9                      =     P_ATTRIBUTE9,
625      ATTRIBUTE10                     =     P_ATTRIBUTE10,
626      ATTRIBUTE11                     =     P_ATTRIBUTE11,
627      ATTRIBUTE12                     =     P_ATTRIBUTE12,
628      ATTRIBUTE13                     =     P_ATTRIBUTE13,
629      ATTRIBUTE14                     =     P_ATTRIBUTE14,
630      ATTRIBUTE15                     =     P_ATTRIBUTE15,
631      REQUEST_ID                      =     P_REQUEST_ID,
632      PROGRAM_APPLICATION_ID          =     P_PROGRAM_APPLICATION_ID,
633      PROGRAM_ID                      =     P_PROGRAM_ID,
634      PROGRAM_UPDATE_DATE             =     P_PROGRAM_UPDATE_DATE,
635 	MAINTENANCE_OBJECT_ID	=	P_MAINTENANCE_OBJECT_ID,
636  	MAINTENANCE_OBJECT_TYPE	=	P_MAINTENANCE_OBJECT_TYPE
637     WHERE ROWID = P_ROWID;
638 
639     if (SQL%NOTFOUND) then
640       Raise NO_DATA_FOUND;
641     end if;
642 
643     IF p_maintenance_object_type = 2 THEN
644        l_object_type := 40;
645     ELSE
646        l_object_type := 60;
647     END IF;
648 
649     eam_org_maint_defaults_pvt.update_insert_row
650     (
651       p_api_version           => 1.0
652      ,p_object_type           => l_object_type
653      ,p_object_id             => p_activity_association_id
654      ,p_organization_id       => p_organization_Id
655      ,p_owning_department_id  => to_fnd_std_num(p_owning_department_id)
656      ,p_accounting_class_code => to_fnd_std_char(p_class_code)
657      ,p_activity_cause_code   => to_fnd_std_char(p_activity_cause_code)
658      ,p_activity_type_code    => to_fnd_std_char(p_activity_type_code)
659      ,p_activity_source_code  => to_fnd_std_char(p_activity_source_code)
660      ,p_work_order_type       => to_fnd_std_num(p_work_order_type)
661      ,p_planner               => to_fnd_std_num(p_planner)
662      ,p_firm                  => to_fnd_std_num(p_firm)
663      ,p_planned               => to_fnd_std_char(p_planned)
664      ,p_notification_required => to_fnd_std_char(p_notification_required)
665      ,p_shutdown_type_code    => to_fnd_std_char(p_shutdown_type_code)
666      ,p_tagging_required_flag => to_fnd_std_char(p_tagging_required_flag)
667      ,x_return_status         => x_return_status
668      ,x_msg_count             => x_msg_count
669      ,x_msg_data              => x_msg_data
670     );
671 
672     IF x_return_status <> fnd_api.g_ret_sts_success THEN
673        RAISE fnd_api.g_exc_error;
674     END IF;
675 
676    /*bug 10381070: when activity association is enddated, if PM exists then update PM last cyclic activity*/
677    BEGIN
678     for schedule in pmSchedules loop
679      eam_pmdef_pub.update_pm_last_cyclic_act
680        (  p_api_version => 1.0 ,
681          p_init_msg_list     => 'F' ,
682          p_commit            => 'T' ,
683          p_validation_level  => 100 ,
684          x_return_status => x_return_status,
685          x_msg_count => x_msg_count,
686          x_msg_data => x_msg_data ,
687          p_pm_schedule_id => schedule.pm_schedule_id
688         );
689     end loop;
690    EXCEPTION
691    WHEN others then
692      null; /*do nothing*/
693    END;
694    /*bug 10381070 end*/
695 
696 
697    -- End of API body.
698    -- Standard check of p_commit.
699       IF fnd_api.to_boolean(p_commit) THEN
700          COMMIT WORK;
701       END IF;
702 
703    -- Standard call to get message count and if count is 1, get message info.
704       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
705    EXCEPTION
706       WHEN fnd_api.g_exc_error THEN
707          ROLLBACK TO update_row;
708          x_return_status := fnd_api.g_ret_sts_error;
709          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
710       WHEN fnd_api.g_exc_unexpected_error THEN
711          ROLLBACK TO update_row;
712          x_return_status := fnd_api.g_ret_sts_unexp_error;
713          fnd_msg_pub.count_and_get(
714             p_count => x_msg_count
715            ,p_data => x_msg_data);
716       WHEN OTHERS THEN
717          ROLLBACK TO update_row;
718          x_return_status := fnd_api.g_ret_sts_unexp_error;
719 
720          IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
721             fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
722          END IF;
723 
727 
724          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
725 
726   END Update_Row;
728 END EAM_ASSET_ACTIVITIES_PVT;