DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZ_MODELOPERATIONS_PUB

Source


1 PACKAGE BODY CZ_modelOperations_pub AS
2 /*  $Header: czmodopb.pls 120.6 2010/10/22 19:15:27 lamrute ship $   */
3 ------------------------------------------------------------------------------------------
4 
5 G_INCOMPATIBLE_API   EXCEPTION;
6 G_PKG_NAME  CONSTANT VARCHAR2(30) := 'ModelOperationsPub';
7 -----------------------------------------------------
8 PROCEDURE generate_logic(p_api_version     IN  NUMBER,
9                          p_devl_project_id IN  NUMBER,
10                          x_run_id          OUT NOCOPY NUMBER,
11                          x_status          OUT NOCOPY NUMBER) IS
12 l_api_name      CONSTANT VARCHAR2(30) := 'generate_logic';
13 l_api_version   CONSTANT NUMBER := 1.0;
14 l_urgency       NUMBER;
15 l_found         NUMBER;
16 l_msg_count     NUMBER;
17 l_msg_data      VARCHAR2(10000);
18 l_errbuf        VARCHAR2(2000);
19 NOT_VALID_PROJECT_ID    EXCEPTION;
20 
21 BEGIN
22   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
23   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
24     RAISE G_INCOMPATIBLE_API;
25   END IF;
26 
27   BEGIN
28     SELECT 1
29     INTO l_found
30     FROM cz_rp_entries
31     WHERE object_type = 'PRJ' AND object_id = p_devl_project_id AND deleted_flag = '0';
32   EXCEPTION
33     WHEN NO_DATA_FOUND THEN
34       RAISE NOT_VALID_PROJECT_ID;
35   END;
36 
37   CZ_LOGIC_GEN.GENERATE_LOGIC(p_devl_project_id, x_run_id);
38 
39   SELECT MIN(urgency)
40     INTO l_urgency
41   FROM cz_db_logs
42   WHERE run_id = x_run_id;
43 
44   IF l_urgency = 0 THEN
45     x_status := G_STATUS_ERROR;
46   ELSIF l_urgency = 1 THEN
47     x_status := G_STATUS_WARNING;
48   ELSIF l_urgency IS NULL THEN
49     x_status := G_STATUS_SUCCESS;
50     x_run_id := 0;
51   END IF;
52 
53 EXCEPTION
54     WHEN G_INCOMPATIBLE_API THEN
55          x_status := G_STATUS_ERROR;
56          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
57          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
58          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
59          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
60          COMMIT;
61     WHEN NOT_VALID_PROJECT_ID THEN
62          x_status := G_STATUS_ERROR;
63          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_DEV_PRJ_ID_ERR', 'PROJID', p_devl_project_id);
64          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
65          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
66          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
67          COMMIT;
68     WHEN OTHERS THEN
69          x_status := G_STATUS_ERROR;
70          l_errbuf := SQLERRM;
71          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
72          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
73          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
74          COMMIT;
75 END generate_logic;
76 ------------------------------------------------------------------------------------------------
77 PROCEDURE generate_logic(p_api_version     IN  NUMBER,
78                          p_devl_project_id IN  NUMBER,
79                          p_user_id         IN NUMBER,
80                          p_resp_id         IN NUMBER,
81                          p_appl_id         IN NUMBER,
82                          x_run_id          OUT NOCOPY NUMBER,
83                          x_status          OUT NOCOPY NUMBER) IS
84 
85 BEGIN
86  fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
87  generate_logic(p_api_version,p_devl_project_id,x_run_id,x_status);
88 END generate_logic;
89 --------------------------------------
90 PROCEDURE create_ui(p_api_version      IN  NUMBER,
91                     p_devl_project_id  IN  NUMBER,
92                     x_ui_def_id        OUT NOCOPY NUMBER,
93                     x_run_id           OUT NOCOPY NUMBER,
94                     x_status           OUT NOCOPY NUMBER,
95                     p_ui_style         IN  VARCHAR2 , -- DEFAULT 'COMPONENTS',
96                     p_frame_allocation IN  NUMBER   , -- DEFAULT 30,
97                     p_width            IN  NUMBER   , -- DEFAULT 640,
98                     p_height           IN  NUMBER   , -- DEFAULT 480,
99                     p_show_all_nodes   IN  VARCHAR2 , -- DEFAULT '0',
100                     p_look_and_feel    IN  VARCHAR2 , -- DEFAULT 'BLAF',
101                     p_wizard_style     IN  VARCHAR2 , -- DEFAULT '0',
102                     p_max_bom_per_page IN  NUMBER   , -- DEFAULT 10,
103                     p_use_labels       IN  VARCHAR2   -- DEFAULT '1'
104                    ) IS
105 l_api_name      CONSTANT VARCHAR2(30) := 'create_ui';
106 l_api_version   CONSTANT NUMBER := 1.0;
107 l_errbuf        VARCHAR2(2000);
108 l_found         NUMBER;
109 NOT_VALID_PROJECT_ID    EXCEPTION;
110 WRONG_UI_STYLE          EXCEPTION;
111 WRONG_FRAME_ALLCN       EXCEPTION;
112 WRONG_WIDTH             EXCEPTION;
113 WRONG_HEIGHT            EXCEPTION;
114 WRONG_SHOW_NODES        EXCEPTION;
115 WRONG_USE_LABELS        EXCEPTION;
116 WRONG_LOOK_AND_FEEL     EXCEPTION;
117 WRONG_MAX_BOM           EXCEPTION;
118 WRONG_WIZARD_STYLE      EXCEPTION;
119 
120 BEGIN
121   SAVEPOINT create_ui_PUB;
122 
123   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
124   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
125     RAISE G_INCOMPATIBLE_API;
126   END IF;
127 
128   BEGIN
129     SELECT 1
130     INTO l_found
131     FROM cz_rp_entries
132     WHERE object_type = 'PRJ' AND object_id = p_devl_project_id AND deleted_flag = '0';
133   EXCEPTION
134     WHEN NO_DATA_FOUND THEN
135       RAISE NOT_VALID_PROJECT_ID;
136   END;
137 
138   IF p_ui_style NOT IN ('0','3','COMPONENTS','APPLET') THEN
139     RAISE WRONG_UI_STYLE;
140   END IF;
141 
142   IF p_frame_allocation < 0 OR p_frame_allocation > 50 THEN
143     RAISE WRONG_FRAME_ALLCN;
144   END IF;
145 
146   IF p_width < 0 OR p_width > 1600 THEN
147     RAISE WRONG_WIDTH;
148   END IF;
149 
150   IF p_height < 0 OR p_height > 1200 THEN
151     RAISE WRONG_HEIGHT;
152   END IF;
153 
154   IF p_show_all_nodes NOT IN (0,1) THEN
155     RAISE WRONG_SHOW_NODES;
156   END IF;
157 
158   IF p_use_labels NOT IN (0,1,2) THEN
159     RAISE WRONG_USE_LABELS;
160   END IF;
161 
162   IF p_use_labels NOT IN (0,1,2) THEN
163     RAISE WRONG_USE_LABELS;
164   END IF;
165 
166   IF p_look_and_feel NOT IN ('BLAF','FORMS','APPLET') THEN
167     RAISE WRONG_LOOK_AND_FEEL;
168   END IF;
169 
170   IF p_use_labels < 1 THEN
171     RAISE WRONG_MAX_BOM;
172   END IF;
173 
174   IF p_wizard_style NOT IN (0,1) THEN
175     RAISE WRONG_WIZARD_STYLE;
176   END IF;
177 
178   CZ_UI_GENERATOR.createUI(p_devl_project_id, x_ui_def_id, x_run_id, p_ui_style, p_frame_allocation, p_width,
179                            p_height, p_show_all_nodes, p_use_labels, p_look_and_feel, p_max_bom_per_page, p_wizard_style);
180   IF x_run_id = 0 THEN
181     x_status := G_STATUS_SUCCESS;
182     COMMIT WORK;
183   ELSE
184     x_status := G_STATUS_ERROR;
185     ROLLBACK TO create_ui_PUB;
186   END IF;
187 
188 EXCEPTION
189     WHEN G_INCOMPATIBLE_API THEN
190          x_status := G_STATUS_ERROR;
191          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
192          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
193          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
194          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
195          COMMIT;
196     WHEN NOT_VALID_PROJECT_ID THEN
197          x_status := G_STATUS_ERROR;
198          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_DEV_PRJ_ID_ERR', 'PROJID', p_devl_project_id);
199          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
200          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
201          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
202          COMMIT;
203     WHEN WRONG_UI_STYLE THEN
204          x_status := G_STATUS_ERROR;
205          l_errbuf := CZ_UTILS.GET_TEXT('CZ_UI_STYLE_ERR');
206          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
207          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
208          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
209          COMMIT;
210     WHEN WRONG_FRAME_ALLCN THEN
211          x_status := G_STATUS_ERROR;
212          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_FRAME_ALLCN_ERR');
213          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
214          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
215          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
216          COMMIT;
217     WHEN WRONG_WIDTH THEN
218          x_status := G_STATUS_ERROR;
219          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_WIDTH_ERR');
220          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
221          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
222          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
223          COMMIT;
224     WHEN WRONG_HEIGHT THEN
225          x_status := G_STATUS_ERROR;
226          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_HEIGHT_ERR');
227          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
228          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
229          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
230          COMMIT;
231     WHEN WRONG_SHOW_NODES THEN
232          x_status := G_STATUS_ERROR;
233          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_SHOW_ALL_NODES_ERR');
234          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
235          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
236          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
237          COMMIT;
238     WHEN WRONG_USE_LABELS THEN
239          x_status := G_STATUS_ERROR;
240          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_USE_LABELS_ERR');
241          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
242          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
243          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
244          COMMIT;
245     WHEN WRONG_LOOK_AND_FEEL THEN
246          x_status := G_STATUS_ERROR;
247          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_LOOK_AND_FEEL_ERR');
248          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
249          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
250          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
251          COMMIT;
252     WHEN WRONG_MAX_BOM THEN
253          x_status := G_STATUS_ERROR;
254          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_MAX_BOM_PER_PAGE_ERR');
255          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
256          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
257          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
258          COMMIT;
259     WHEN WRONG_WIZARD_STYLE THEN
260          x_status := G_STATUS_ERROR;
261          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_WIZARD_STYLE_ERR');
262          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
263          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
264          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
265          COMMIT;
266     WHEN OTHERS THEN
267          x_status := G_STATUS_ERROR;
268          ROLLBACK TO create_ui_PUB;
269          l_errbuf := SQLERRM;
270          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
271          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
272          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
273          COMMIT;
274 END create_ui;
275 
276 ------------------------------------------------------------------------------------------------
277 PROCEDURE create_ui(p_api_version      IN  NUMBER,
278                     p_devl_project_id  IN  NUMBER,
279                     p_user_id          IN NUMBER,
280                     p_resp_id          IN NUMBER,
281                     p_appl_id          IN NUMBER,
282                     x_ui_def_id        OUT NOCOPY NUMBER,
283                     x_run_id           OUT NOCOPY NUMBER,
284                     x_status           OUT NOCOPY NUMBER,
285                     p_ui_style         IN  VARCHAR2 , -- DEFAULT 'COMPONENTS',
286                     p_frame_allocation IN  NUMBER   , -- DEFAULT 30,
287                     p_width            IN  NUMBER   , -- DEFAULT 640,
288                     p_height           IN  NUMBER   , -- DEFAULT 480,
289                     p_show_all_nodes   IN  VARCHAR2 , -- DEFAULT '0',
290                     p_look_and_feel    IN  VARCHAR2 , -- DEFAULT 'BLAF',
291                     p_wizard_style     IN  VARCHAR2 , -- DEFAULT '0',
292                     p_max_bom_per_page IN  NUMBER   , -- DEFAULT 10,
293                     p_use_labels       IN  VARCHAR2   -- DEFAULT '1'
294           ) IS
295 BEGIN
296    fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
297    create_ui(p_api_version,
298            p_devl_project_id,
299            x_ui_def_id,
300            x_run_id,
301            x_status,
302            p_ui_style,
303            p_frame_allocation,
304            p_width,
305            p_height,
306            p_show_all_nodes,
307            p_look_and_feel,
308            p_wizard_style,
309            p_max_bom_per_page,
310            p_use_labels
311            );
312 END create_ui;
313 
314 --------------------------------------------------------
315 
316 /* generate JRAD style UI
317  *   Parameters :
318  *      p_api_version         -- identifies version of API
319  *      p_devl_project_id     -- identifies Model for which UI will be generated
320  *      p_show_all_nodes      -- '1' - ignore ps node property "DO NOT SHOW IN UI"
321  *      p_master_template_id  -- identifies UI Master Template
322  *      p_create_empty_ui     -- '1' - create empty UI ( which contains only one record in CZ_UI_DEFS )
323  *      x_ui_def_id           -- ui_def_id of UI that has been generated
324  *      x_return_status       -- status string
325  *      x_msg_count           -- number of error messages
326  *      x_msg_data            -- string which contains error messages
327  */
328 PROCEDURE create_jrad_ui(p_api_version        IN  NUMBER,
329                          p_devl_project_id    IN  NUMBER,
330                          p_show_all_nodes     IN  VARCHAR2,
331                          p_master_template_id IN  NUMBER,
332                          p_create_empty_ui    IN  VARCHAR2,
333                          x_ui_def_id          OUT NOCOPY NUMBER,
334                          x_return_status      OUT NOCOPY VARCHAR2,
335                          x_msg_count          OUT NOCOPY NUMBER,
336                          x_msg_data           OUT NOCOPY VARCHAR2) IS
337 
338   l_api_name      CONSTANT VARCHAR2(30) := 'create_jrad_ui';
339   l_api_version   CONSTANT NUMBER := 1.0;
340   l_errbuf        VARCHAR2(2000);
341   l_found         NUMBER;
342   NOT_VALID_PROJECT_ID    EXCEPTION;
343   WRONG_SHOW_NODES        EXCEPTION;
344 
345 BEGIN
346   SAVEPOINT create_ui_PUB;
347 
348   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
349     RAISE G_INCOMPATIBLE_API;
350   END IF;
351 
352   BEGIN
353     SELECT 1
354     INTO l_found
355     FROM cz_rp_entries
356     WHERE object_type = 'PRJ' AND object_id = p_devl_project_id AND deleted_flag = '0';
357   EXCEPTION
358     WHEN NO_DATA_FOUND THEN
359       RAISE NOT_VALID_PROJECT_ID;
360   END;
361 
362   IF p_show_all_nodes NOT IN ('0','1') THEN
363     RAISE WRONG_SHOW_NODES;
364   END IF;
365 
366   CZ_UIOA_PVT.create_UI
367     (
368      p_model_id           => p_devl_project_id,
369      p_master_template_id => p_master_template_id,
370      p_show_all_nodes     => p_show_all_nodes,
371      p_create_empty_ui    => p_create_empty_ui,
372      x_ui_def_id          => x_ui_def_id,
373      x_return_status      => x_return_status,
374      x_msg_count          => x_msg_count,
375      x_msg_data           => x_msg_data
376     );
377 
378   IF x_msg_count = 0 THEN
379     COMMIT WORK;
380   ELSE
381     ROLLBACK TO create_ui_PUB;
382   END IF;
383 
384 EXCEPTION
385     WHEN G_INCOMPATIBLE_API THEN
386          x_return_status := FND_API.G_RET_STS_ERROR;
387          FND_MESSAGE.SET_NAME('CZ', 'CZ_MOP_API_VERSION_ERR');
388          FND_MESSAGE.SET_TOKEN('CODE_VERSION', l_api_version);
389          FND_MESSAGE.SET_TOKEN('IN_VERSION', p_api_version);
390          FND_MSG_PUB.ADD;
391          FND_MSG_PUB.count_and_get(p_count => x_msg_count,
392                                    p_data  => x_msg_data);
393 
394     WHEN NOT_VALID_PROJECT_ID THEN
395          x_return_status := FND_API.G_RET_STS_ERROR;
396          FND_MESSAGE.SET_NAME('CZ', 'CZ_MOP_DEV_PRJ_ID_ERR');
397          FND_MESSAGE.SET_TOKEN('PROJID', p_devl_project_id);
398          FND_MSG_PUB.ADD;
399          FND_MSG_PUB.count_and_get(p_count => x_msg_count,
400                                    p_data  => x_msg_data);
401     WHEN WRONG_SHOW_NODES THEN
402          x_return_status := FND_API.G_RET_STS_ERROR;
403          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_SHOW_ALL_NODES_ERR');
404 
405 
406          FND_MESSAGE.SET_NAME('CZ', 'CZ_MOP_SHOW_ALL_NODES_ERR');
407          FND_MSG_PUB.ADD;
408          FND_MSG_PUB.count_and_get(p_count => x_msg_count,
409                                    p_data  => x_msg_data);
410 
411     WHEN OTHERS THEN
412          x_return_status := FND_API.G_RET_STS_ERROR;
413          ROLLBACK TO create_ui_PUB;
414          l_errbuf := SQLERRM;
415 END create_jrad_ui;
416 
417 ------------------------------------------------------------------------------------------------
418 PROCEDURE create_jrad_ui(p_api_version        IN  NUMBER,
419                          p_user_id            IN  NUMBER,
420                          p_resp_id            IN  NUMBER,
421                          p_appl_id            IN  NUMBER,
422                          p_devl_project_id    IN  NUMBER,
423                          p_show_all_nodes     IN  VARCHAR2,
424                          p_master_template_id IN  NUMBER,
425                          p_create_empty_ui    IN  VARCHAR2,
426                          x_ui_def_id          OUT NOCOPY NUMBER,
427                          x_return_status      OUT NOCOPY VARCHAR2,
428                          x_msg_count          OUT NOCOPY NUMBER,
429                          x_msg_data           OUT NOCOPY VARCHAR2) IS
430 
431 BEGIN
432     fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
433     create_jrad_ui(p_api_version        => p_api_version,
434                    p_devl_project_id    => p_devl_project_id,
435                    p_show_all_nodes     => p_show_all_nodes,
436                    p_master_template_id => p_master_template_id,
437                    p_create_empty_ui    => p_create_empty_ui,
438                    x_ui_def_id          => x_ui_def_id,
439                    x_return_status      => x_return_status,
440                    x_msg_count          => x_msg_count,
441                    x_msg_data           => x_msg_data);
442 END create_jrad_ui;
443 
444 --------------------------------------------------------
445 
446 PROCEDURE refresh_ui(p_api_version IN     NUMBER,
447                      p_ui_def_id   IN OUT NOCOPY NUMBER,
448                      x_run_id      OUT NOCOPY    NUMBER,
449                      x_status      OUT NOCOPY    NUMBER) IS
450 l_api_name      CONSTANT VARCHAR2(30) := 'refresh_ui';
451 l_api_version   CONSTANT NUMBER := 1.0;
452 l_urgency       NUMBER;
453 l_errbuf        VARCHAR2(2000);
454 l_found         NUMBER;
455 l_found_ui      NUMBER;
456 NOT_VALID_UI_DEF_ID     EXCEPTION;
457 NOT_VALID_PROJECT_ID    EXCEPTION;
458 
459 BEGIN
460   -- Start of API savepoint
461   SAVEPOINT refresh_ui_PUB;
462 
463   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
464   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
465     RAISE G_INCOMPATIBLE_API;
466   END IF;
467 
468   BEGIN
469     SELECT 1
470     INTO l_found_ui
471     FROM cz_ui_defs
472     WHERE ui_def_id = p_ui_def_id AND deleted_flag = '0';
473   EXCEPTION
474     WHEN NO_DATA_FOUND THEN
475       RAISE NOT_VALID_UI_DEF_ID;
476   END;
477 
478   BEGIN
479     SELECT 1
480     INTO l_found
481     FROM cz_rp_entries rp, cz_ui_defs uidef
482     WHERE object_type = 'PRJ' AND object_id = devl_project_id AND ui_def_id = p_ui_def_id
483        AND rp.deleted_flag = '0' AND uidef.deleted_flag = '0';
484   EXCEPTION
485     WHEN NO_DATA_FOUND THEN
486       RAISE NOT_VALID_PROJECT_ID;
487   END;
488 
489   CZ_UI_GENERATOR.refreshUI(p_ui_def_id, x_run_id);
490 
491   IF x_run_id = 0 THEN
492     x_status := G_STATUS_SUCCESS;
493   ELSE
494     SELECT max(urgency)
495       INTO l_urgency
496     FROM cz_db_logs
497     WHERE run_id = x_run_id;
498 
499     IF l_urgency = 1 THEN
500       x_status := G_STATUS_ERROR;
501       ROLLBACK TO refresh_ui_PUB;
502     ELSIF l_urgency = 0 THEN
503       x_status := G_STATUS_WARNING;
504     END IF;
505   END IF;
506 
507   COMMIT WORK;
508 EXCEPTION
509     WHEN G_INCOMPATIBLE_API THEN
510          x_status := G_STATUS_ERROR;
511          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
512          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
513          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
514          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
515          COMMIT;
516     WHEN NOT_VALID_UI_DEF_ID THEN
517          x_status := G_STATUS_ERROR;
518          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_UI_DEF_ID_ERR');
519          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
520          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
521          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
522          COMMIT;
523     WHEN NOT_VALID_PROJECT_ID THEN
524          x_status := G_STATUS_ERROR;
525          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_UI_PRJ_ERR', 'UIDEF', p_ui_def_id);
526          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
527          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
528          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
529          COMMIT;
530     WHEN OTHERS THEN
531          x_status := G_STATUS_ERROR;
532          ROLLBACK TO refresh_ui_PUB;
533          l_errbuf := SQLERRM;
534          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
535          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
536          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
537          COMMIT;
538 END refresh_ui;
539 ------------------------------------------------------------------------------------------------
540 PROCEDURE refresh_ui(p_api_version IN NUMBER,
541                      p_ui_def_id   IN OUT NOCOPY NUMBER,
542                      p_user_id     IN NUMBER,
543                      p_resp_id     IN NUMBER,
544                      p_appl_id     IN NUMBER,
545                      x_run_id      OUT NOCOPY    NUMBER,
546                      x_status      OUT NOCOPY    NUMBER)
547 IS
548 BEGIN
549   fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
550   refresh_ui( p_api_version,
551               p_ui_def_id,
552               x_run_id,
553               x_status);
554 END refresh_ui;
555 
556 ------------------------------------------------------------
557 -- Start of comments
558 --    API name    : refresh_Jrad_UI
559 --    Type        : Public.
560 --    Function    : Refresh an existing JRAD style user interface based on the current model data.
561 --    Pre-reqs    : None.
562 --    Parameters  :
563 --    IN          : p_api_version           - identifies version of API
564 --                  p_ui_def_id             - identifies UI to refresh
565 --    OUT         :
566 --      x_return_status       -- status string
567 --      x_msg_count           -- number of error messages
568 --      x_msg_data            -- string which contains error messages
569 --
570 --    Version     : Current version       1.0
571 --                  Initial version       1.0
572 --    Notes       :
573 --
574 -- End of comments
575 --
576 PROCEDURE refresh_jrad_ui(p_api_version     IN     NUMBER,
577                           p_ui_def_id       IN OUT NOCOPY NUMBER,
578                           x_return_status   OUT NOCOPY VARCHAR2,
579                           x_msg_count       OUT NOCOPY NUMBER,
580                           x_msg_data        OUT NOCOPY VARCHAR2) IS
581 
582     l_api_name              CONSTANT VARCHAR2(30) := 'refresh_ui';
583     l_api_version           CONSTANT NUMBER := 1.0;
584     l_urgency               NUMBER;
585     l_errbuf                VARCHAR2(2000);
586     l_found                 NUMBER;
587     l_ui_style              CZ_UI_DEFS.ui_style%TYPE;
588     NOT_VALID_UI_DEF_ID     EXCEPTION;
589     WRONG_UI_STYLE          EXCEPTION;
590 
591 BEGIN
592   -- Start of API savepoint
593   SAVEPOINT refresh_ui_PUB;
594 
595   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
596     RAISE G_INCOMPATIBLE_API;
597   END IF;
598 
599   BEGIN
600     SELECT ui_style
601     INTO l_ui_style
602     FROM cz_ui_defs
603     WHERE ui_def_id = p_ui_def_id AND deleted_flag = '0';
604   EXCEPTION
605     WHEN NO_DATA_FOUND THEN
606       RAISE NOT_VALID_UI_DEF_ID;
607   END;
608 
609   IF l_ui_style NOT IN ('7','JRAD') THEN
610      RAISE WRONG_UI_STYLE;
611   END IF;
612 
613   CZ_UIOA_PVT.refresh_UI(p_ui_def_id        => p_ui_def_id,
614                          x_return_status    => x_return_status,
615                          x_msg_count        => x_msg_count,
616                          x_msg_data         => x_msg_data);
617 
618   IF x_msg_count > 0 THEN
619      ROLLBACK TO refresh_ui_PUB;
620   END IF;
621 
622   COMMIT WORK;
623 
624 EXCEPTION
625     WHEN G_INCOMPATIBLE_API THEN
626          x_return_status := FND_API.G_RET_STS_ERROR;
627          FND_MESSAGE.SET_NAME('CZ', 'CZ_MOP_API_VERSION_ERR');
628          FND_MESSAGE.SET_TOKEN('CODE_VERSION', l_api_version);
629          FND_MESSAGE.SET_TOKEN('IN_VERSION', p_api_version);
630          FND_MSG_PUB.ADD;
631          FND_MSG_PUB.count_and_get(p_count => x_msg_count,
632                                    p_data  => x_msg_data);
633 
634     WHEN NOT_VALID_UI_DEF_ID THEN
635          x_return_status := FND_API.G_RET_STS_ERROR;
636          FND_MESSAGE.SET_NAME('CZ', 'CZ_MOP_UI_DEF_ID_ERR');
637          FND_MSG_PUB.ADD;
638          FND_MSG_PUB.count_and_get(p_count => x_msg_count,
639                                    p_data  => x_msg_data);
640 
641     WHEN WRONG_UI_STYLE THEN
642          x_return_status := FND_API.G_RET_STS_ERROR;
643          FND_MESSAGE.SET_NAME('CZ', 'CZ_UI_STYLE_ERR');
644          FND_MSG_PUB.ADD;
645          FND_MSG_PUB.count_and_get(p_count => x_msg_count,
646                                    p_data  => x_msg_data);
647 
648     WHEN OTHERS THEN
649          x_return_status := FND_API.G_RET_STS_ERROR;
650          ROLLBACK TO refresh_ui_PUB;
651 END refresh_jrad_ui;
652 
653 ------------------------------------------------------------------------------------------------
654 
655 PROCEDURE refresh_jrad_ui(p_api_version     IN NUMBER,
656                           p_user_id         IN NUMBER,
657                           p_resp_id         IN NUMBER,
658                           p_appl_id         IN NUMBER,
659                           p_ui_def_id       IN OUT NOCOPY NUMBER,
660                           x_return_status   OUT NOCOPY VARCHAR2,
661                           x_msg_count       OUT NOCOPY NUMBER,
662                           x_msg_data        OUT NOCOPY VARCHAR2) IS
663 BEGIN
664     fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
665     refresh_jrad_ui(p_api_version   => p_api_version,
666                     p_ui_def_id     => p_ui_def_id,
667                     x_return_status => x_return_status,
668                     x_msg_count     => x_msg_count,
669                     x_msg_data      => x_msg_data);
670 END refresh_jrad_ui;
671 
672 ------------------------------------------------------------
673 
674 PROCEDURE import_single_bill(p_api_version      IN  NUMBER,
675                              p_org_id           IN  NUMBER,
676                              p_top_inv_item_id  IN  NUMBER,
677                              x_run_id           OUT NOCOPY NUMBER,
678                              x_status           OUT NOCOPY NUMBER) IS -- sselahi: removed x_run_info_id
679 l_api_name           CONSTANT VARCHAR2(30) := 'import_single_bill';
680 l_api_version        CONSTANT NUMBER := 1.0;
681 l_error              BOOLEAN := FALSE;
682 l_db_link            CZ_SERVERS.fndnam_link_name%TYPE;
683 --10011026
684 l_local_name         CZ_SERVERS.local_name%TYPE;
685 l_Exist              VARCHAR2(1):= 'N';
686 l_err                VARCHAR2(1);
687 l_errbuf             VARCHAR2(2000);
688 l_retcode            NUMBER;
689 l_user_name          VARCHAR2(100);
690 l_user_id            NUMBER;
691 l_resp_id            NUMBER;
692 l_appl_id            NUMBER;
693 TOO_MANY_IMP_SERVERS EXCEPTION;
694 NO_IMP_SERVERS       EXCEPTION;
695 WRONG_EXV_VIEWS      EXCEPTION;
696 DB_LINK_IS_DOWN      EXCEPTION;
697 SESS_NOT_INITIALIZED EXCEPTION;
698 
699 BEGIN
700 
701   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
702     RAISE G_INCOMPATIBLE_API;
703   END IF;
704 
705   l_user_id := FND_GLOBAL.user_id;
706   IF (l_user_id IS NULL) THEN
707   RAISE SESS_NOT_INITIALIZED;
708   END IF;
709 
710   BEGIN
711       SELECT fndnam_link_name,local_name    --10011026
712       INTO l_db_link, l_local_name
713       FROM cz_servers
714       WHERE import_enabled = '1';
715   EXCEPTION
716       WHEN TOO_MANY_ROWS THEN
717            RAISE TOO_MANY_IMP_SERVERS;
718       WHEN NO_DATA_FOUND THEN
719            RAISE NO_IMP_SERVERS;
720   END;
721 
722   --Bug #4865395. Changing the probe query to be against cz_exv_item_properties which is
723   --much lighter view than cz_exv_organizations.
724 
725      -- probe select --
726   BEGIN
727       EXECUTE IMMEDIATE
728       'SELECT ''Y'' FROM cz_exv_item_properties where rownum < 2'
729       INTO l_Exist;
730   EXCEPTION
731       WHEN NO_DATA_FOUND THEN
732            NULL;
733   END;
734 
735 
736    --
737    -- if cz_exv_item_properties is empty then
738    -- this means that EXV views were recreated based on local tables
739    -- with rownum<1 where condition
740    -- in this case try to recreate views based on remote tables if
741    -- db link is alive
742    --
743    IF l_Exist='N' THEN
744       IF CZ_ORAAPPS_INTEGRATE.isLinkAlive(l_db_link)=CZ_ORAAPPS_INTEGRATE.LINK_WORKS THEN
745          -- 10011026 create_exv_views procedure is expecting local name as opposed to dblink name
746          -- l_err:=CZ_ORAAPPS_INTEGRATE.create_exv_views(l_db_link);
747          l_err:=CZ_ORAAPPS_INTEGRATE.create_exv_views(l_local_name);
748          IF l_err<>'0' THEN
749             -- not all EXV views have been recreated --
750             RAISE WRONG_EXV_VIEWS;
751          END IF;
752       ELSE
753          RAISE DB_LINK_IS_DOWN;
754       END IF;
755    END IF;
756 
757 
758   CZ_IMP_ALL.goSingleBill (p_org_id, p_top_inv_item_id, '0', -1, '0', x_run_id); -- sselahi: added x_run_id
759   x_status := G_STATUS_SUCCESS;
760 
761 
762 EXCEPTION
763     WHEN G_INCOMPATIBLE_API THEN
764          x_status := G_STATUS_ERROR;
765          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
766          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
767          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
768          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
769          COMMIT;
770     WHEN SESS_NOT_INITIALIZED THEN
771          x_status := G_STATUS_ERROR;
772          l_errbuf := CZ_UTILS.GET_TEXT('CZ_SESS_NOT_INITIALIZED');
773          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
774          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
775          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
776          COMMIT;
777     WHEN TOO_MANY_IMP_SERVERS THEN
778          x_status := G_STATUS_ERROR;
779          l_errbuf := CZ_UTILS.GET_TEXT('CZ_IMP_TOO_MANY_SERVERS');
780          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
781          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
782          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
783          COMMIT;
784     WHEN NO_IMP_SERVERS THEN
785          x_status := G_STATUS_ERROR;
786          l_errbuf := CZ_UTILS.GET_TEXT('CZ_IMP_NO_SERVERS');
787          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
788          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
789          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
790          COMMIT;
791     WHEN WRONG_EXV_VIEWS THEN
792          x_status := G_STATUS_ERROR;
793          l_errbuf := 'Error : not all EXV views have been recreated successfully';
794          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
795          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
796          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
797          COMMIT;
798     WHEN DB_LINK_IS_DOWN THEN
799          x_status := G_STATUS_ERROR;
800          l_errbuf := CZ_UTILS.GET_TEXT('CZ_DB_LINK_IS_DOWN','DBLINK',l_db_link);
801          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
802          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
803          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
804          COMMIT;
805     WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
806          x_status := G_STATUS_ERROR;
807          l_errbuf:=CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED');
808          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
809          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
810          COMMIT;
811     WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
812          x_status := G_STATUS_ERROR;
813          l_errbuf := SQLERRM;
814          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
815          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
816          COMMIT;
817     WHEN OTHERS THEN
818          x_status := G_STATUS_ERROR;
819          l_errbuf := SQLERRM;
820          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
821          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
822          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
823          COMMIT;
824 END import_single_bill;
825 ------------------------------------------------------------------------------------------------
826 PROCEDURE import_single_bill(p_api_version      IN  NUMBER,
827                              p_org_id           IN  NUMBER,
828                              p_top_inv_item_id  IN  NUMBER,
829                              p_user_id          IN NUMBER,
830                              p_resp_id          IN NUMBER,
831                              p_appl_id          IN NUMBER,
832                              x_run_id           OUT NOCOPY NUMBER,
833                              x_status           OUT NOCOPY NUMBER)
834 IS
835 BEGIN
836  fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
837  import_single_bill(p_api_version,
838                     p_org_id,
839                     p_top_inv_item_id,
840                     x_run_id,
841                     x_status);
842 END import_single_bill;
843 ---------------------------------------
844 PROCEDURE refresh_single_model(p_api_version       IN  NUMBER,
845                                p_devl_project_id   IN  VARCHAR2,
846                                x_run_id            OUT NOCOPY NUMBER,
847                                x_status            OUT NOCOPY NUMBER) IS
848 l_api_name              CONSTANT VARCHAR2(30) := 'refresh_single_model';
849 l_api_version           CONSTANT NUMBER := 1.0;
850 l_errbuf                VARCHAR2(2000);
851 l_found                 NUMBER;
852 l_db_link               CZ_SERVERS.fndnam_link_name%TYPE;
853 l_Exist                 VARCHAR2(1):= 'N';
854 l_err                   VARCHAR2(1);
855 l_user_id               NUMBER;
856 TOO_MANY_IMP_SERVERS    EXCEPTION;
857 NO_IMP_SERVERS          EXCEPTION;
858 WRONG_EXV_VIEWS         EXCEPTION;
859 DB_LINK_IS_DOWN         EXCEPTION;
860 PROJECT_ID_NOT_EXITS    EXCEPTION;
861 SESS_NOT_INITIALIZED    EXCEPTION;
862 lOrg_Id                 CZ_XFR_PROJECT_BILLS.ORGANIZATION_ID%TYPE;
863 lTop_Id                 CZ_XFR_PROJECT_BILLS.TOP_ITEM_ID%TYPE;
864 
865 BEGIN
866 
867   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
868     RAISE G_INCOMPATIBLE_API;
869   END IF;
870   l_user_id := FND_GLOBAL.user_id;
871   IF (l_user_id IS NULL) THEN
872   RAISE SESS_NOT_INITIALIZED;
873   END IF;
874 
875   -- verify p_devl_project_id
876   BEGIN
877     SELECT 1
878     INTO l_found
879     FROM cz_rp_entries
880     WHERE object_type = 'PRJ'
881     AND object_id = p_devl_project_id
882     AND deleted_flag = '0';
883   EXCEPTION
884     WHEN NO_DATA_FOUND THEN
885       RAISE PROJECT_ID_NOT_EXITS;
886   END;
887 
888     -- get the org id and top model id
889   SELECT rtrim(substr(orig_sys_ref,instr(orig_sys_ref,':',1,1)+1,length(substr(orig_sys_ref,instr(orig_sys_ref,':',1,1)+1)) -
890               length(substr(orig_sys_ref,instr(orig_sys_ref,':',1,2)))  )) ,
891     rtrim(substr(orig_sys_ref,instr(orig_sys_ref,':',1,2)+1))
892   INTO lOrg_Id, lTop_Id
893   FROM cz_devl_projects
894   WHERE devl_project_id = p_devl_project_id
895   AND deleted_flag = '0';
896 
897   -- check the imp server
898   BEGIN
899       SELECT fndnam_link_name
900       INTO l_db_link
901       FROM cz_servers
902       WHERE import_enabled = '1';
903   EXCEPTION
904       WHEN TOO_MANY_ROWS THEN
905            RAISE TOO_MANY_IMP_SERVERS;
906       WHEN NO_DATA_FOUND THEN
907            RAISE NO_IMP_SERVERS;
908   END;
909 
910   --Bug #4865395. Changing the probe query to be against cz_exv_item_properties which is
911   --much lighter view than cz_exv_organizations.
912 
913      -- probe select --
914   BEGIN
915       EXECUTE IMMEDIATE
916       'SELECT ''Y'' FROM cz_exv_item_properties where rownum < 2'
917       INTO l_Exist;
918   EXCEPTION
919       WHEN NO_DATA_FOUND THEN
920            NULL;
921   END;
922    --
923    -- if cz_exv_item_properties is empty then
924    -- this means that EXV views were recreated based on local tables
925    -- with rownum<1 where condition
926    -- in this case try to recreate views based on remote tables if
927    -- db link is alive
928    --
929    IF l_Exist='N' THEN
930       IF CZ_ORAAPPS_INTEGRATE.isLinkAlive(l_db_link)=CZ_ORAAPPS_INTEGRATE.LINK_WORKS THEN
931          l_err:=CZ_ORAAPPS_INTEGRATE.create_exv_views(l_db_link);
932          IF l_err<>'0' THEN
933             -- not all EXV views have been recreated --
934             RAISE WRONG_EXV_VIEWS;
935          END IF;
936       ELSE
937          RAISE DB_LINK_IS_DOWN;
938       END IF;
939    END IF;
940 
941   -- call the import
942   CZ_IMP_ALL.goSingleBill (lOrg_Id, lTop_Id, '0', -1, '0', x_run_id);
943   x_status := G_STATUS_SUCCESS;
944 
945 EXCEPTION
946     WHEN G_INCOMPATIBLE_API THEN
947          x_status := G_STATUS_ERROR;
948          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
949          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
950          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
951          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
952          COMMIT;
953     WHEN SESS_NOT_INITIALIZED THEN
954          x_status := G_STATUS_ERROR;
955          l_errbuf := CZ_UTILS.GET_TEXT('CZ_SESS_NOT_INITIALIZED');
956          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
957          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
958          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
959          COMMIT;
960     WHEN TOO_MANY_IMP_SERVERS THEN
961          x_status := G_STATUS_ERROR;
962          l_errbuf := CZ_UTILS.GET_TEXT('CZ_IMP_TOO_MANY_SERVERS');
963          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
964          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
965          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
966          COMMIT;
967     WHEN NO_IMP_SERVERS THEN
968          x_status := G_STATUS_ERROR;
969          l_errbuf := CZ_UTILS.GET_TEXT('CZ_IMP_NO_SERVERS');
970          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
971          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
972          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
973          COMMIT;
974     WHEN WRONG_EXV_VIEWS THEN
975          x_status := G_STATUS_ERROR;
976          l_errbuf := 'Error : not all EXV views have been recreated successfully';
977          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
978          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
979          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
980          COMMIT;
981     WHEN DB_LINK_IS_DOWN THEN
982          x_status := G_STATUS_ERROR;
983          l_errbuf := CZ_UTILS.GET_TEXT('CZ_DB_LINK_IS_DOWN','DBLINK',l_db_link);
984          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
985          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
986          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
987          COMMIT;
988     WHEN PROJECT_ID_NOT_EXITS THEN
989          x_status := G_STATUS_ERROR;
990          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_DEV_PRJ_ID_ERR', 'PROJID', p_devl_project_id);
991          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
992          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
993          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
994          COMMIT;
995     WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
996          x_status := G_STATUS_ERROR;
997          l_errbuf:=CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED');
998          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
999          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1000          COMMIT;
1001     WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
1002          x_status := G_STATUS_ERROR;
1003          l_errbuf := SQLERRM;
1004          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1005          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1006          COMMIT;
1007     WHEN OTHERS THEN
1008          x_status := G_STATUS_ERROR;
1009          l_errbuf := SQLERRM;
1010          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1011          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1012          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1013          COMMIT;
1014 end refresh_single_model;
1015 ------------------------------------------------------------------------------------------------
1016 PROCEDURE refresh_single_model(p_api_version     IN  NUMBER,
1017                                p_devl_project_id IN  VARCHAR2,
1018                                p_user_id         IN NUMBER,
1019                                p_resp_id         IN NUMBER,
1020                                p_appl_id         IN NUMBER,
1021                                x_run_id          OUT NOCOPY NUMBER,
1022                                x_status          OUT NOCOPY NUMBER)
1023 IS
1024 BEGIN
1025  fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1026  refresh_single_model(p_api_version,
1027                        p_devl_project_id,
1028                        x_run_id,
1029                        x_status);
1030 END refresh_single_model;
1031 
1032 -------------------------------------------------------------
1033 PROCEDURE publish_model(p_api_version    IN  NUMBER,
1034                         p_publication_id IN  NUMBER,
1035                         x_run_id         OUT NOCOPY NUMBER,
1036                         x_status         OUT NOCOPY NUMBER) IS
1037 l_api_name      CONSTANT VARCHAR2(30) := 'publish_model';
1038 l_api_version   CONSTANT NUMBER := 1.0;
1039 l_status        VARCHAR2(3);
1040 l_errbuf        VARCHAR2(2000);
1041 
1042 BEGIN
1043   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1044 
1045   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1046     RAISE G_INCOMPATIBLE_API;
1047   END IF;
1048 
1049 
1050   cz_pb_mgr.publish_model(p_publication_id, x_run_id, l_status);
1051 
1052   IF l_status = 'OK' THEN
1053     x_status := G_STATUS_SUCCESS;
1054   ELSE
1055     x_status := G_STATUS_ERROR;
1056   END IF;
1057 
1058 EXCEPTION
1059     WHEN G_INCOMPATIBLE_API THEN
1060          x_status := G_STATUS_ERROR;
1061          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1062          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1063          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1064          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1065          COMMIT;
1066     WHEN OTHERS THEN
1067          x_status := G_STATUS_ERROR;
1068          l_errbuf := SQLERRM;
1069          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1070          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1071          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1072 END publish_model;
1073 ------------------------------------------------------------------------------------------------
1074 PROCEDURE publish_model(p_api_version    IN  NUMBER,
1075                         p_publication_id IN  NUMBER,
1076                         p_user_id        IN NUMBER,
1077                         p_resp_id        IN NUMBER,
1078                         p_appl_id        IN NUMBER,
1079                         x_run_id         OUT NOCOPY NUMBER,
1080                         x_status         OUT NOCOPY NUMBER) IS
1081 BEGIN
1082  fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1083  publish_model(p_api_version,
1084                p_publication_id,
1085                x_run_id,
1086                x_status);
1087 END publish_model;
1088 --------------------------------------
1089 PROCEDURE deep_model_copy(p_api_version     IN  NUMBER,
1090                           p_devl_project_id IN  NUMBER,
1091                           p_folder          IN  NUMBER,
1092                           p_copy_rules      IN  NUMBER,
1093                           p_copy_uis        IN  NUMBER,
1094                           p_copy_root       IN  NUMBER,
1095                           x_devl_project_id OUT NOCOPY NUMBER,
1096                           x_run_id          OUT NOCOPY NUMBER,
1097                           x_status          OUT NOCOPY NUMBER) IS
1098 l_api_name      CONSTANT VARCHAR2(30) := 'deep_model_copy';
1099 l_api_version   CONSTANT NUMBER := 1.0;
1100 l_status        VARCHAR2(3);
1101 l_errbuf        VARCHAR2(2000);
1102 l_found         NUMBER;
1103 NOT_VALID_PROJECT_ID    EXCEPTION;
1104 
1105 BEGIN
1106   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1107   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1108     RAISE G_INCOMPATIBLE_API;
1109   END IF;
1110 
1111   BEGIN
1112     SELECT 1
1113     INTO l_found
1114     FROM cz_rp_entries
1115     WHERE object_type = 'PRJ' AND object_id = p_devl_project_id AND deleted_flag = '0';
1116   EXCEPTION
1117     WHEN NO_DATA_FOUND THEN
1118       RAISE NOT_VALID_PROJECT_ID;
1119   END;
1120 
1121 cz_pb_mgr.deep_model_copy(p_devl_project_id, 0, p_folder, p_copy_rules, p_copy_uis,
1122                           p_copy_root, x_devl_project_id, x_run_id, l_status);
1123 
1124   IF l_status = 'OK' THEN
1125     x_status := G_STATUS_SUCCESS;
1126   ELSE
1127     x_status := G_STATUS_ERROR;
1128   END IF;
1129 
1130 EXCEPTION
1131     WHEN G_INCOMPATIBLE_API THEN
1132          x_status := G_STATUS_ERROR;
1133          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1134          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1135          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1136          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1137          COMMIT;
1138     WHEN NOT_VALID_PROJECT_ID THEN
1139          x_status := G_STATUS_ERROR;
1140          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_DEV_PRJ_ID_ERR', 'PROJID', p_devl_project_id);
1141          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1142          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1143          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1144          COMMIT;
1145     WHEN OTHERS THEN
1146          x_status := G_STATUS_ERROR;
1147          l_errbuf := SQLERRM;
1148          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1149          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1150          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1151          COMMIT;
1152 END deep_model_copy;
1153 ------------------------------------------------------------------------------------------------
1154 PROCEDURE deep_model_copy(p_api_version IN  NUMBER,
1155                           p_user_id     IN NUMBER,
1156                           p_resp_id     IN NUMBER,
1157                           p_appl_id     IN NUMBER,
1158                           p_devl_project_id IN  NUMBER,
1159                           p_folder          IN  NUMBER,
1160                           p_copy_rules      IN  NUMBER,
1161                           p_copy_uis        IN  NUMBER,
1162                           p_copy_root       IN  NUMBER,
1163                           x_devl_project_id OUT NOCOPY NUMBER,
1164                           x_run_id          OUT NOCOPY NUMBER,
1165                           x_status          OUT NOCOPY NUMBER) IS
1166 
1167  BEGIN
1168  fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1169  deep_model_copy(p_api_version,
1170                  p_devl_project_id,
1171                  p_folder,
1172                  p_copy_rules,
1173                  p_copy_uis,
1174                  p_copy_root,
1175                  x_devl_project_id,
1176                  x_run_id,
1177                  x_status);
1178 END deep_model_copy;
1179 
1180 -----------------------------------------------------------------
1181 PROCEDURE execute_populator(p_api_version  IN     NUMBER,
1182                             p_populator_id IN     NUMBER,
1183                             p_imp_run_id   IN OUT NOCOPY VARCHAR2,
1184                             x_run_id       OUT NOCOPY    NUMBER,
1185                             x_status       OUT NOCOPY    NUMBER) IS
1186 l_api_name      CONSTANT VARCHAR2(30) := 'execute_populator';
1187 l_api_version   CONSTANT NUMBER := 1.0;
1188 l_errbuf        VARCHAR2(2000);
1189 l_found         NUMBER;
1190 NOT_VALID_POPULATOR_ID  EXCEPTION;
1191 
1192 BEGIN
1193   SAVEPOINT execute_populator_PUB;
1194 
1195   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1196   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1197     RAISE G_INCOMPATIBLE_API;
1198   END IF;
1199 
1200   BEGIN
1201     SELECT NULL
1202     INTO l_found
1203     FROM cz_populators
1204     WHERE populator_id = p_populator_id AND deleted_flag = '0';
1205   EXCEPTION
1206     WHEN NO_DATA_FOUND THEN
1207       RAISE NOT_VALID_POPULATOR_ID;
1208   END;
1209 
1210   cz_populators_pkg.execute(p_populator_id, p_imp_run_id, x_run_id);
1211   IF x_run_id = 0 THEN
1212     x_status := G_STATUS_SUCCESS;
1213     COMMIT WORK;
1214   ELSE
1215     x_status := G_STATUS_ERROR;
1216     ROLLBACK TO execute_populator_PUB;
1217   END IF;
1218 
1219 EXCEPTION
1220     WHEN G_INCOMPATIBLE_API THEN
1221          x_status := G_STATUS_ERROR;
1222          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1223          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1224          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1225          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1226          COMMIT;
1227     WHEN NOT_VALID_POPULATOR_ID THEN
1228          x_status := G_STATUS_ERROR;
1229          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_POPULATOR_ID_ERR');
1230          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1231          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1232          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1233          COMMIT;
1234     WHEN OTHERS THEN
1235          x_status := G_STATUS_ERROR;
1236          ROLLBACK TO execute_populator_PUB;
1237          l_errbuf := SQLERRM;
1238          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1239          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1240          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1241          COMMIT;
1242 END execute_populator;
1243 
1244 ------------------------------------------------------------------------------------------------
1245 PROCEDURE execute_populator(p_api_version  IN     NUMBER,
1246                             p_user_id      IN     NUMBER,
1247                             p_resp_id      IN     NUMBER,
1248                             p_appl_id      IN     NUMBER,
1249                             p_populator_id IN     NUMBER,
1250                             p_imp_run_id   IN  OUT NOCOPY VARCHAR2,
1251                             x_run_id       OUT NOCOPY    NUMBER,
1252                             x_status       OUT NOCOPY    NUMBER) IS
1253  BEGIN
1254   fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1255      execute_populator(p_api_version,
1256                         p_populator_id,
1257                         p_imp_run_id,
1258                         x_run_id,
1259                         x_status);
1260 END execute_populator;
1261 
1262 -------------------------------------------------
1263 PROCEDURE repopulate(p_api_version    IN  NUMBER,
1264                     p_devl_project_id IN  NUMBER,
1265                     p_regenerate_all  IN  VARCHAR2 , -- DEFAULT '1',
1266                     p_handle_invalid  IN  VARCHAR2 , -- DEFAULT '1',
1267                     p_handle_broken   IN  VARCHAR2 , -- DEFAULT '1',
1268                     x_run_id          OUT NOCOPY NUMBER,
1269                     x_status          OUT NOCOPY NUMBER) IS
1270 l_api_name      CONSTANT VARCHAR2(30) := 'repopulate';
1271 l_api_version   CONSTANT NUMBER := 1.0;
1272 l_errbuf        VARCHAR2(2000);
1273 l_found         NUMBER;
1274 NOT_VALID_PROJECT_ID    EXCEPTION;
1275 
1276 BEGIN
1277   SAVEPOINT repopulate_PUB;
1278 
1279   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1280   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1281     RAISE G_INCOMPATIBLE_API;
1282   END IF;
1283 
1284   BEGIN
1285     SELECT 1
1286     INTO l_found
1287     FROM cz_rp_entries
1288     WHERE object_type = 'PRJ' AND object_id = p_devl_project_id AND deleted_flag = '0';
1289   EXCEPTION
1290     WHEN NO_DATA_FOUND THEN
1291       RAISE NOT_VALID_PROJECT_ID;
1292   END;
1293 
1294   cz_populators_pkg.repopulate(p_devl_project_id, p_regenerate_all, p_handle_invalid, p_handle_broken, x_run_id);
1295   IF x_run_id = 0 THEN
1296     x_status := G_STATUS_SUCCESS;
1297     COMMIT WORK;
1298   ELSE
1299     x_status := G_STATUS_ERROR;
1300     ROLLBACK TO repopulate_PUB;
1301   END IF;
1302 
1303 EXCEPTION
1304     WHEN G_INCOMPATIBLE_API THEN
1305          x_status := G_STATUS_ERROR;
1306          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1307          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1308          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1309          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1310          COMMIT;
1311     WHEN NOT_VALID_PROJECT_ID THEN
1312          x_status := G_STATUS_ERROR;
1313          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_DEV_PRJ_ID_ERR', 'PROJID', p_devl_project_id);
1314          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1315          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1316          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1317          COMMIT;
1318     WHEN OTHERS THEN
1319          x_status := G_STATUS_ERROR;
1320          ROLLBACK TO repopulate_PUB;
1321          l_errbuf := SQLERRM;
1322          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1323          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1324          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1325          COMMIT;
1326 END repopulate;
1327 ------------------------------------------------------------------------------------------------
1328 PROCEDURE repopulate(p_api_version    IN  NUMBER,
1329                     p_devl_project_id IN  NUMBER,
1330                     p_user_id         IN NUMBER,
1331                     p_resp_id         IN NUMBER,
1332                     p_appl_id         IN NUMBER,
1333                     p_regenerate_all  IN  VARCHAR2 , -- DEFAULT '1',
1334                     p_handle_invalid  IN  VARCHAR2 , -- DEFAULT '1',
1335                     p_handle_broken   IN  VARCHAR2 , -- DEFAULT '1',
1336                     x_run_id          OUT NOCOPY NUMBER,
1337                     x_status          OUT NOCOPY NUMBER) IS
1338  BEGIN
1339     fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1340     repopulate(p_api_version,
1341                p_devl_project_id,
1342                p_user_id        ,
1343                p_resp_id        ,
1344                p_appl_id        ,
1345                p_regenerate_all ,
1346                p_handle_invalid ,
1347                p_handle_broken  ,
1348                x_run_id         ,
1349                x_status         );
1350  END repopulate;
1351 
1352 ---------------------------------------------------------
1353 PROCEDURE republish_model(p_api_version    IN  NUMBER,
1354                           p_publication_id IN  NUMBER,
1355                           p_start_date     IN  DATE,
1356                           p_end_date       IN  DATE,
1357                           x_run_id         OUT NOCOPY NUMBER,
1358                           x_status         OUT NOCOPY NUMBER) IS
1359 l_api_name      CONSTANT VARCHAR2(30) := 'republish_model';
1360 l_api_version   CONSTANT NUMBER := 1.0;
1361 l_status        VARCHAR2(3);
1362 l_errbuf        VARCHAR2(2000);
1363 l_start_date    DATE;
1364 l_end_date      DATE;
1365 l_publication_id NUMBER;
1366 BEGIN
1367   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1368 
1369   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1370     RAISE G_INCOMPATIBLE_API;
1371   END IF;
1372 
1373   l_start_date     := p_start_date;
1374   l_end_date       := p_end_date;
1375   l_publication_id := p_publication_id;
1376   cz_pb_mgr.republish_model(l_publication_id,l_start_date,l_end_date,x_run_id,l_status);
1377 
1378   IF l_status = 'OK' THEN
1379     x_status := G_STATUS_SUCCESS;
1380   ELSE
1381     x_status := G_STATUS_ERROR;
1382   END IF;
1383 
1384 EXCEPTION
1385     WHEN G_INCOMPATIBLE_API THEN
1386          x_status := G_STATUS_ERROR;
1387          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1388          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1389          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1390          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1391          COMMIT;
1392     WHEN OTHERS THEN
1393          x_status := G_STATUS_ERROR;
1394          l_errbuf := SQLERRM;
1395          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1396          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1397          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1398 END republish_model;
1399 ---------------------------------------------------------
1400 PROCEDURE republish_model(p_api_version     IN  NUMBER,
1401                           p_publication_id  IN  NUMBER,
1402                           p_user_id         IN NUMBER,
1403                           p_resp_id         IN NUMBER,
1404                           p_appl_id         IN NUMBER,
1405                           p_start_date      IN  DATE,
1406                           p_end_date        IN  DATE,
1407                           x_run_id          OUT NOCOPY NUMBER,
1408                           x_status          OUT NOCOPY NUMBER)
1409 IS
1410  BEGIN
1411      fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1412      republish_model(p_api_version,
1413                   p_publication_id,
1414                   p_start_date,
1415                   p_end_date,
1416                   x_run_id,
1417                   x_status);
1418 END republish_model;
1419 ------------------------------------------------------------------------------------------------
1420 FUNCTION rp_folder_exists (p_api_version    IN NUMBER,
1421                            p_encl_folder_id IN NUMBER,
1422                            p_rp_folder_id   IN NUMBER) RETURN BOOLEAN IS
1423 
1424 l_api_name           CONSTANT VARCHAR2(30) := 'rp_folder_exists';
1425 l_api_version        CONSTANT NUMBER := 1.0;
1426 
1427 -- cursor to check the enclosing folder when it is not null
1428 CURSOR encl_folder_exits_csr IS
1429  SELECT 'X'
1430  FROM cz_rp_entries
1431  WHERE object_id = p_encl_folder_id
1432  AND object_type = 'FLD'
1433  AND deleted_flag = '0';
1434 
1435 -- cursor to check the folder when encl folder is not null
1436 CURSOR folder_exists_in_encl_csr IS
1437  SELECT 'X'
1438  FROM cz_rp_entries
1439  WHERE object_id = p_rp_folder_id
1440  AND enclosing_folder = p_encl_folder_id
1441  AND object_type = 'FLD'
1442  AND deleted_flag = '0';
1443 
1444 -- cursor to check the folder when enclosing folder is null
1445 CURSOR folder_exists_csr IS
1446  SELECT 'X'
1447  FROM cz_rp_entries
1448  WHERE object_id = p_rp_folder_id
1449  AND object_type = 'FLD'
1450  AND deleted_flag = '0';
1451 
1452  x_found        BOOLEAN:=FALSE;
1453  p_error_flag   CHAR(1):='';
1454  x_msg_data     VARCHAR2(2000);
1455  l_dummy_nbr    NUMBER;
1456 
1457 BEGIN
1458   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1459     RAISE G_INCOMPATIBLE_API;
1460   END IF;
1461 
1462     IF p_encl_folder_id IS NOT NULL THEN
1463       -- first check if enclosing folder exists
1464       OPEN encl_folder_exits_csr;
1465       FETCH encl_folder_exits_csr INTO p_error_flag;
1466       x_found:=encl_folder_exits_csr%FOUND;
1467       CLOSE encl_folder_exits_csr;
1468 
1469         IF NOT x_found THEN
1470            RETURN x_found;
1471         END IF;
1472 
1473       -- now check if the folder exists
1474      OPEN folder_exists_in_encl_csr;
1475      FETCH folder_exists_in_encl_csr INTO p_error_flag;
1476      x_found:=folder_exists_in_encl_csr%FOUND;
1477      CLOSE folder_exists_in_encl_csr;
1478     ELSE
1479       -- check if folder exists anywhere
1480       OPEN folder_exists_csr;
1481       FETCH folder_exists_csr INTO p_error_flag;
1482       x_found:=folder_exists_csr%FOUND;
1483       CLOSE folder_exists_csr;
1484     END IF;
1485 
1486     RETURN x_found;
1487 
1488 EXCEPTION
1489     WHEN G_INCOMPATIBLE_API THEN
1490          RAISE G_INCOMPATIBLE_API;
1491     WHEN OTHERS THEN
1492          RAISE FND_API.G_EXC_ERROR;
1493 END rp_folder_exists;
1494 ---------------------------------------------------------
1495 FUNCTION rp_folder_exists (
1496   p_api_version    IN NUMBER,
1497   p_encl_folder_id IN NUMBER,
1498   p_rp_folder_id   IN NUMBER,
1499   p_user_id        IN NUMBER,
1500   p_resp_id        IN NUMBER,
1501   p_appl_id        IN NUMBER
1502 ) RETURN BOOLEAN IS
1503 BEGIN
1504   fnd_global.apps_initialize (
1505     p_user_id,
1506     p_resp_id,
1507     p_appl_id
1508   );
1509   return rp_folder_exists (
1510            p_api_version,
1511            p_encl_folder_id,
1512            p_rp_folder_id
1513          );
1514 END rp_folder_exists;
1515 ---------------------------------------------------------
1516 PROCEDURE create_rp_folder(p_api_version          IN  NUMBER
1517                           ,p_encl_folder_id       IN  CZ_RP_ENTRIES.OBJECT_ID%TYPE
1518                           ,p_new_folder_name      IN  CZ_RP_ENTRIES.NAME%TYPE
1519                           ,p_folder_desc          IN  CZ_RP_ENTRIES.DESCRIPTION%TYPE
1520                           ,p_folder_notes         IN  CZ_RP_ENTRIES.NOTES%TYPE
1521                           ,x_new_folder_id        OUT NOCOPY CZ_RP_ENTRIES.OBJECT_ID%TYPE
1522                           ,x_return_status        OUT NOCOPY  VARCHAR2
1523                           ,x_msg_count            OUT NOCOPY  NUMBER
1524                           ,x_msg_data             OUT NOCOPY  VARCHAR2
1525                           )
1526 IS
1527 
1528   l_api_version  CONSTANT NUMBER := 1.0;
1529   l_api_name     CONSTANT VARCHAR2(30) := 'create_rp_folder';
1530 
1531   l_new_object_id           CZ_RP_ENTRIES.OBJECT_ID%TYPE;
1532   l_dummy_nbr               NUMBER;
1533   l_count                   NUMBER;
1534 
1535 BEGIN
1536   -- standard call to check for call compatibility
1537   IF (NOT FND_API.compatible_api_call(l_api_version
1538                                      ,p_api_version
1539                                      ,l_api_name
1540                                      ,G_PKG_NAME
1541                                      )) THEN
1542     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1543   END IF;
1544 
1545   BEGIN -- validate the encl_folder_id
1546     SELECT 1 INTO l_dummy_nbr
1547     FROM cz_rp_entries
1548     WHERE object_id = p_encl_folder_id
1549     AND object_type = 'FLD'
1550     AND deleted_flag = '0';
1551   EXCEPTION
1552     WHEN NO_DATA_FOUND THEN
1553       x_msg_data := CZ_UTILS.GET_TEXT('CZ_RP_FLDR_NO_ENCL_FLDR');
1554       RAISE FND_API.G_EXC_ERROR;
1555   END;
1556 
1557   BEGIN -- check if folder already exists, if so return its id
1558     SELECT object_id INTO x_new_folder_id
1559     FROM cz_rp_entries
1560     WHERE name = p_new_folder_name
1561     AND enclosing_folder = p_encl_folder_id
1562     AND object_type = 'FLD'
1563     AND deleted_flag = '0';
1564 
1565   EXCEPTION  -- it doesn't exists, so create it
1566     WHEN NO_DATA_FOUND THEN
1567 
1568          SELECT cz_rp_entries_s.NEXTVAL
1569          INTO l_new_object_id
1570          FROM DUAL;
1571 
1572         INSERT INTO cz_rp_entries
1573                     (object_id
1574                     ,name
1575                     ,object_type
1576                     ,enclosing_folder
1577                     ,description
1578                     ,notes
1579                     )
1580               VALUES
1581                    (l_new_object_id
1582                    ,p_new_folder_name
1583                    ,'FLD'
1584                    ,p_encl_folder_id
1585                    ,p_folder_desc
1586                    ,p_folder_notes
1587                    );
1588         COMMIT;
1589         x_new_folder_id := l_new_object_id;
1590   END;
1591 
1592   x_return_status := FND_API.G_RET_STS_SUCCESS;
1593 
1594 EXCEPTION
1595   WHEN FND_API.G_EXC_ERROR THEN
1596     x_return_status := FND_API.G_RET_STS_ERROR;
1597   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1598     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1599     fnd_msg_pub.count_and_get(p_count => x_msg_count,
1600                               p_data  => x_msg_data);
1601   WHEN OTHERS THEN
1602     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1603     IF fnd_msg_pub.check_msg_Level(fnd_msg_pub.G_MSG_LVL_UNEXP_ERROR) THEN
1604       fnd_msg_pub.add_exc_msg(G_PKG_NAME, l_api_name);
1605     END IF;
1606     fnd_msg_pub.count_and_get(p_count => x_msg_count,
1607                               p_data  => x_msg_data);
1608 END create_rp_folder;
1609 ---------------------------------------------------------
1610 PROCEDURE create_rp_folder (
1611   p_api_version          IN  NUMBER,
1612   p_encl_folder_id       IN  CZ_RP_ENTRIES.OBJECT_ID%TYPE,
1613   p_new_folder_name      IN  CZ_RP_ENTRIES.NAME%TYPE,
1614   p_folder_desc          IN  CZ_RP_ENTRIES.DESCRIPTION%TYPE,
1615   p_folder_notes         IN  CZ_RP_ENTRIES.NOTES%TYPE,
1616   p_user_id              IN  NUMBER,
1617   p_resp_id              IN  NUMBER,
1618   p_appl_id              IN  NUMBER,
1619   x_new_folder_id        OUT NOCOPY CZ_RP_ENTRIES.OBJECT_ID%TYPE,
1620   x_return_status        OUT NOCOPY VARCHAR2,
1621   x_msg_count            OUT NOCOPY NUMBER,
1622   x_msg_data             OUT NOCOPY VARCHAR2
1623 ) IS
1624 BEGIN
1625   fnd_global.apps_initialize (
1626     p_user_id,
1627     p_resp_id,
1628     p_appl_id
1629   );
1630   create_rp_folder (
1631     p_api_version,
1632     p_encl_folder_id,
1633     p_new_folder_name,
1634     p_folder_desc,
1635     p_folder_notes,
1636     x_new_folder_id,
1637     x_return_status,
1638     x_msg_count,
1639     x_msg_data
1640   );
1641 END create_rp_folder;
1642 ---------------------------------------------------------
1643 PROCEDURE import_generic(p_api_version      IN  NUMBER
1644                         ,p_run_id           IN  NUMBER
1645                         ,p_rp_folder_id     IN NUMBER
1646                         ,x_run_id           OUT NOCOPY NUMBER
1647                         ,x_status           OUT NOCOPY NUMBER)
1648 IS
1649 l_api_name           CONSTANT VARCHAR2(30) := 'import_generic';
1650 l_api_version        CONSTANT NUMBER := 1.0;
1651 TYPE boolean_t       IS TABLE OF BOOLEAN index by BINARY_INTEGER;
1652 l_dummy_nbr          NUMBER;
1653 l_msg_data       VARCHAR2(2000);
1654 l_msg_count      NUMBER := 0;
1655 l_return_status      VARCHAR2(1);
1656 l_locked_models_tbl      cz_security_pvt.number_type_tbl;
1657 l_model_id_tbl           cz_security_pvt.number_type_tbl;
1658 l_devl_prj_id_tbl        cz_security_pvt.number_type_tbl;
1659 l_all_locked_models_tbl  cz_security_pvt.number_type_tbl;
1660 
1661 NO_PRIV_EXCP                 EXCEPTION;
1662 PRIV_CHECK_ERR_EXP           EXCEPTION;
1663 FAILED_TO_LOCK_MODEL_EXCP    EXCEPTION;
1664 MODEL_NOT_EDITABLE           EXCEPTION;
1665 MODEL_LOCKED_EXCP            EXCEPTION;
1666 MODEL_UNLOCK_EXCP            EXCEPTION;
1667 INVALID_ENCL_FLDR_EXCP       EXCEPTION;
1668 SESS_NOT_INITIALIZED_EXCP    EXCEPTION;
1669 
1670 xERROR           BOOLEAN:=FALSE;
1671 l_user_name      varchar2(255);
1672 l_user_id        NUMBER;
1673 l_is_new_model   BOOLEAN;
1674 
1675 -- model ids before calling generic import
1676 CURSOR l_imp_devl_project_csr IS
1677 SELECT nvl(model_id,0)
1678 FROM CZ_IMP_DEVL_PROJECT
1679 WHERE rec_status IS NULL AND Run_ID = p_run_id;
1680 
1681 -- devl projects after after calling generic import
1682 CURSOR l_imp_devl_project_csr_2 IS
1683 SELECT nvl(model_id,0), nvl(devl_project_id,0)
1684 FROM CZ_IMP_DEVL_PROJECT
1685 WHERE rec_status IS NOT NULL AND Run_ID = x_run_id;
1686 
1687 BEGIN
1688 
1689   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1690     RAISE G_INCOMPATIBLE_API;
1691   END IF;
1692 
1693   l_user_id := FND_GLOBAL.user_id;
1694   l_user_name := FND_GLOBAL.user_name;
1695   IF (l_user_name IS NULL) THEN
1696       RAISE SESS_NOT_INITIALIZED_EXCP;
1697   END IF;
1698 
1699   BEGIN -- validate the encl_folder_id
1700     SELECT 1 INTO l_dummy_nbr
1701     FROM cz_rp_entries
1702     WHERE object_id = p_rp_folder_id
1703     AND object_type = 'FLD'
1704     AND deleted_flag = '0';
1705   EXCEPTION
1706     WHEN NO_DATA_FOUND THEN
1707       l_msg_count        := 1;
1708       l_msg_data         := cz_utils.get_text('CZ_IMPGEN_ENCL_FLDR');
1709       RAISE INVALID_ENCL_FLDR_EXCP;
1710   END;
1711 
1712     l_model_id_tbl.DELETE;
1713     l_all_locked_models_tbl.DELETE;
1714     OPEN l_imp_devl_project_csr;
1715     FETCH l_imp_devl_project_csr
1716     BULK COLLECT INTO l_model_id_tbl;
1717     CLOSE l_imp_devl_project_csr;
1718 
1719     -- shallow lock each model because we don't know model relationships
1720 
1721     IF (l_model_id_tbl.COUNT > 0) THEN
1722       FOR i IN l_model_id_tbl.FIRST..l_model_id_tbl.LAST LOOP
1723         IF (l_model_id_tbl(i) <> 0) THEN
1724             l_locked_models_tbl.DELETE;
1725             cz_security_pvt.lock_model(
1726               p_api_version          =>   1.0,
1727               p_model_id             =>   l_model_id_tbl(i),
1728               p_lock_child_models    =>   FND_API.G_FALSE,
1729               p_commit_flag          =>   FND_API.G_TRUE,
1730               x_locked_entities      =>   l_locked_models_tbl,
1731               x_return_status        =>   l_return_status,
1732               x_msg_count            =>   l_msg_count,
1733               x_msg_data             =>   l_msg_data);
1734             IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1735               FOR k IN 1..l_msg_count LOOP
1736                 l_msg_data  := fnd_msg_pub.get(k,fnd_api.g_false);
1737                 xERROR:=cz_utils.log_report(l_msg_data,1,'CZ_MODELOPERATIONS_PUB.IMPORT_GENERIC',20001,p_run_id);
1738                 COMMIT;
1739               END LOOP;
1740               RAISE FAILED_TO_LOCK_MODEL_EXCP;
1741             END IF;
1742             IF ( l_locked_models_tbl.COUNT > 0 ) THEN
1743                FOR j IN l_locked_models_tbl.FIRST..l_locked_models_tbl.LAST LOOP
1744                   l_all_locked_models_tbl(l_all_locked_models_tbl.COUNT + 1) := l_locked_models_tbl(j);
1745                END LOOP;
1746             END IF;
1747         END IF;
1748       END LOOP;
1749     END IF;
1750 
1751   -- call go_generic
1752 
1753   CZ_IMP_ALL.go_generic(x_run_id, p_run_id, p_rp_folder_id);
1754   x_status := G_STATUS_SUCCESS;
1755 
1756   IF (l_all_locked_models_tbl.COUNT > 0) THEN
1757             cz_security_pvt.unlock_model(
1758               p_api_version          =>   1.0,
1759               p_commit_flag          =>   FND_API.G_TRUE,
1760               p_models_to_unlock     =>   l_all_locked_models_tbl,
1761               x_return_status        =>   l_return_status,
1762               x_msg_count            =>   l_msg_count,
1763               x_msg_data             =>   l_msg_data);
1764   END IF;
1765 
1766 EXCEPTION
1767     WHEN G_INCOMPATIBLE_API THEN
1768          x_status := G_STATUS_ERROR;
1769          l_msg_data := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1770          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1771          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1772          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1773          COMMIT;
1774     WHEN SESS_NOT_INITIALIZED_EXCP THEN
1775          x_status := G_STATUS_ERROR;
1776          l_msg_data := CZ_UTILS.GET_TEXT('CZ_SESS_NOT_INITIALIZED');
1777          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1778          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1779          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1780          COMMIT;
1781     WHEN INVALID_ENCL_FLDR_EXCP THEN
1782          x_status := G_STATUS_ERROR;
1783          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1784          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1785          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1786          COMMIT;
1787     WHEN NO_PRIV_EXCP THEN
1788          x_status := G_STATUS_ERROR;
1789          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1790          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1791          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1792          COMMIT;
1793     WHEN MODEL_LOCKED_EXCP THEN
1794          x_status := G_STATUS_ERROR;
1795          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1796          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1797          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1798          COMMIT;
1799     WHEN FAILED_TO_LOCK_MODEL_EXCP THEN
1800          x_status := G_STATUS_ERROR;
1801          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1802          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1803          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1804          COMMIT;
1805     WHEN MODEL_UNLOCK_EXCP THEN
1806          x_status := G_STATUS_ERROR;
1807          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1808          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1809          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1810          COMMIT;
1811     WHEN OTHERS THEN
1812          x_status := G_STATUS_ERROR;
1813          l_msg_data := SQLERRM;
1814          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_UNEXPECTED);
1815          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1816          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1817          COMMIT;
1818          IF (l_all_locked_models_tbl.COUNT > 0) THEN
1819             cz_security_pvt.unlock_model(
1820               p_api_version          =>   1.0,
1821               p_commit_flag          =>   FND_API.G_TRUE,
1822               p_models_to_unlock     =>   l_all_locked_models_tbl,
1823               x_return_status        =>   l_return_status,
1824               x_msg_count            =>   l_msg_count,
1825               x_msg_data             =>   l_msg_data);
1826          END IF;
1827 END import_generic;
1828 -----------------------------------------------------------
1829 PROCEDURE import_generic (
1830   p_api_version      IN  NUMBER,
1831   p_run_id           IN  NUMBER,
1832   p_rp_folder_id     IN  NUMBER,
1833   p_user_id          IN  NUMBER,
1834   p_resp_id          IN  NUMBER,
1835   p_appl_id          IN  NUMBER,
1836   x_run_id           OUT NOCOPY NUMBER,
1837   x_status           OUT NOCOPY NUMBER
1838 ) IS
1839 BEGIN
1840   fnd_global.apps_initialize (
1841     p_user_id,
1842     p_resp_id,
1843     p_appl_id
1844   );
1845   import_generic (
1846     p_api_version,
1847     p_run_id,
1848     p_rp_folder_id,
1849     x_run_id,
1850     x_status
1851   );
1852 END import_generic;
1853 -----------------------------------------------------------
1854 /*#
1855  * This is the public interface for force unlock operations on a model in Oracle Configurator
1856  * @param p_api_version   Current version of the API is 1.0
1857  * @param p_model_id      devl_project_id of the model from cz_devl_projects table
1858  * @param p_unlock_references   A value of FND_API.G_TRUE indicates that the child models if any should be
1859  *                              force unlocked. A value of FND_API.G_FALSE indicates that only the root model
1860  *                              will be unlocked
1861  * @param p_init_msg_list FND_API.G_TRUE if the API should initialize the FND stack, FND_API.G_FALSE if not.
1862  * @param x_return_status standard FND status. (ex:FND_API.G_RET_STS_SUCCESS )
1863  * @param x_msg_count     number of messages on the stack.
1864  * @param x_msg_data      standard FND OUT parameter for message.  Messages are written to the FND error stack
1865  * @rep:scope public
1866  * @rep:product CZ
1867  * @rep:displayname API for working with force unlock operations on a model
1868  * @rep:lifecycle active
1869  * @rep:compatibility S
1870  * @rep:category BUSINESS_ENTITY CZ_CONFIG_MODEL
1871  */
1872 
1873 PROCEDURE force_unlock_model (p_api_version        IN NUMBER,
1874                               p_model_id           IN NUMBER,
1875                               p_unlock_references  IN VARCHAR2,
1876                               p_init_msg_list      IN VARCHAR2,
1877                               x_return_status     OUT NOCOPY VARCHAR2,
1878                               x_msg_count         OUT NOCOPY NUMBER,
1879                               x_msg_data          OUT NOCOPY VARCHAR2)
1880 IS
1881 
1882 BEGIN
1883    cz_security_pvt.force_unlock_model (p_api_version,
1884                        p_model_id,
1885                        p_unlock_references,
1886                        p_init_msg_list,
1887                        x_return_status,
1888                        x_msg_count,
1889                        x_msg_data);
1890 END force_unlock_model;
1891 ---------------------------------------------------
1892 PROCEDURE force_unlock_model (
1893   p_api_version        IN NUMBER,
1894   p_model_id           IN NUMBER,
1895   p_unlock_references  IN VARCHAR2,
1896   p_init_msg_list      IN VARCHAR2,
1897   p_user_id            IN NUMBER,
1898   p_resp_id            IN NUMBER,
1899   p_appl_id            IN NUMBER,
1900   x_return_status      OUT NOCOPY VARCHAR2,
1901   x_msg_count          OUT NOCOPY NUMBER,
1902   x_msg_data           OUT NOCOPY VARCHAR2
1903 ) IS
1904 BEGIN
1905   fnd_global.apps_initialize (
1906     p_user_id,
1907     p_resp_id,
1908     p_appl_id
1909   );
1910   force_unlock_model (
1911     p_api_version,
1912     p_model_id,
1913     p_unlock_references,
1914     p_init_msg_list,
1915     x_return_status,
1916     x_msg_count,
1917     x_msg_data
1918   );
1919 END force_unlock_model;
1920 ---------------------------------------------------
1921 /*#
1922  * This is the public interface for force unlock operations on a UI content template in Oracle Configurator
1923  * @param p_api_version   Current version of the API is 1.0
1924  * @param p_template_id   Template_id of the template from cz_ui_templates table
1925  * @param p_init_msg_list FND_API.G_TRUE if the API should initialize the FND stack, FND_API.G_FALSE if not.
1926  * @param x_return_status standard FND status. (ex:FND_API.G_RET_STS_SUCCESS )
1927  * @param x_msg_count     number of messages on the stack.
1928  * @param x_msg_data      standard FND OUT parameter for message.  Messages are written to the FND error stack
1929  * @rep:scope public
1930  * @rep:product CZ
1931  * @rep:displayname API for working with force unlock operations on a UI content template
1932  * @rep:lifecycle active
1933  * @rep:compatibility S
1934  * @rep:category BUSINESS_ENTITY CZ_USER_INTERFACE*/
1935 
1936 PROCEDURE force_unlock_template (p_api_version    IN NUMBER,
1937                                  p_template_id    IN NUMBER,
1938                                  p_init_msg_list  IN VARCHAR2,
1939                                  x_return_status OUT NOCOPY VARCHAR2,
1940                                  x_msg_count     OUT NOCOPY NUMBER,
1941                                  x_msg_data      OUT NOCOPY VARCHAR2)
1942 IS
1943 
1944 BEGIN
1945    cz_security_pvt.force_unlock_template (p_api_version,
1946                                  p_template_id,
1947                                  p_init_msg_list,
1948                                  x_return_status,
1949                                  x_msg_count,
1950                                  x_msg_data);
1951 END force_unlock_template;
1952 ---------------------------------------------------
1953 PROCEDURE force_unlock_template (
1954   p_api_version    IN NUMBER,
1955   p_template_id    IN NUMBER,
1956   p_init_msg_list  IN VARCHAR2,
1957   p_user_id        IN NUMBER,
1958   p_resp_id        IN NUMBER,
1959   p_appl_id        IN NUMBER,
1960   x_return_status  OUT NOCOPY VARCHAR2,
1961   x_msg_count      OUT NOCOPY NUMBER,
1962   x_msg_data       OUT NOCOPY VARCHAR2
1963 ) IS
1964 BEGIN
1965   fnd_global.apps_initialize (
1966     p_user_id,
1967     p_resp_id,
1968     p_appl_id
1969   );
1970   force_unlock_template (
1971     p_api_version,
1972     p_template_id,
1973     p_init_msg_list,
1974     x_return_status,
1975     x_msg_count,
1976     x_msg_data
1977   );
1978 END force_unlock_template;
1979 
1980 FUNCTION usage_id_from_usage_name (p_api_version IN  NUMBER
1981                           ,p_usage_name IN VARCHAR2
1982                           ,x_return_status        OUT NOCOPY  VARCHAR2
1983                           ,x_msg_count            OUT NOCOPY  NUMBER
1984                           ,x_msg_data             OUT NOCOPY  VARCHAR2)
1985 RETURN NUMBER
1986 IS
1987   v_usage_id NUMBER;
1988   l_api_version  CONSTANT NUMBER := 1.0;
1989   l_api_name     CONSTANT VARCHAR2(30) := 'usage_id_from_usage_name';
1990 BEGIN
1991   -- standard call to check for call compatibility
1992   IF (NOT FND_API.compatible_api_call(l_api_version
1993                                      ,p_api_version
1994                                      ,l_api_name
1995                                      ,G_PKG_NAME
1996                                      )) THEN
1997     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1998   END IF;
1999     SELECT model_usage_id
2000     INTO  v_usage_id
2001     FROM  CZ_MODEL_USAGES
2002     WHERE  LTRIM(RTRIM(UPPER(CZ_MODEL_USAGES.name))) = LTRIM(RTRIM(UPPER(p_usage_name)))
2003     AND   cz_model_usages.in_use = '1';
2004 
2005     x_return_status := FND_API.G_RET_STS_SUCCESS;
2006     RETURN v_usage_id;
2007 EXCEPTION
2008 WHEN NO_DATA_FOUND THEN
2009       x_return_status:=FND_API.G_RET_STS_ERROR;
2010       FND_MESSAGE.SET_NAME('CZ', 'CZ_USG_NO_USAGE_FOUND');
2011       FND_MSG_PUB.ADD;
2012       fnd_msg_pub.count_and_get(p_count => x_msg_count,
2013       p_data  => x_msg_data);
2014       RETURN NULL;
2015 
2016 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2017      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2018      fnd_msg_pub.count_and_get(p_count => x_msg_count,
2019                               p_data  => x_msg_data);
2020      RETURN NULL;
2021 END usage_id_from_usage_name;
2022 
2023 
2024 
2025 Function usage_id_from_usage_name (
2026   p_api_version          IN  NUMBER,
2027   p_user_id              IN  NUMBER,
2028   p_resp_id              IN  NUMBER,
2029   p_appl_id              IN  NUMBER,
2030   p_usage_name           IN VARCHAR2,
2031   x_return_status        OUT NOCOPY VARCHAR2,
2032   x_msg_count            OUT NOCOPY NUMBER,
2033   x_msg_data             OUT NOCOPY VARCHAR2
2034 )
2035 RETURN NUMBER
2036 IS
2037   v_usage_id NUMBER;
2038 BEGIN
2039   fnd_global.apps_initialize (
2040     p_user_id,
2041     p_resp_id,
2042     p_appl_id
2043   );
2044   v_usage_id:=usage_id_from_usage_name (p_api_version
2045                           ,p_usage_name
2046                           ,x_return_status
2047                           ,x_msg_count
2048                           ,x_msg_data);
2049  RETURN v_usage_id;
2050 END usage_id_from_usage_name;
2051 ------------------------------------------------------------------------------------------------
2052 /*
2053  * Public API for Model Migration.
2054  * @param p_request_id This is the CZ_MODEL_PUBLICATIONS, MIGRATION_GROUP_ID of the migration request.
2055  *                     Migration request is created by Developer and contains the list of all models selected
2056  *                     for Migration from the source's Configurator Repository, target Instance name and
2057  *                     target Repository Folder.
2058  * @param p_userid     Standard parameters required for locking. Represent calling user.
2059  * @param p_respid     Standard parameters required for locking. Represent calling responsibility.
2060  * @param p_applid     Standard parameters required for locking. Represent calling application.
2061  * @param p_run_id     Number identifying the session. If left NULL, the API will generate the number and
2062  *                     return it in x_run_id.
2063  * @param x_run_id     Output parameter containing internally generated session identifier if p_run_id
2064  *                     was NULL, otherwise equal to p_run_id.
2065  */
2066 
2067 PROCEDURE migrate_models(p_api_version IN  NUMBER,
2068                          p_request_id  IN  NUMBER,
2069                          p_user_id     IN  NUMBER,
2070                          p_resp_id     IN  NUMBER,
2071                          p_appl_id     IN  NUMBER,
2072                          p_run_id      IN  NUMBER,
2073                          x_run_id      OUT NOCOPY NUMBER,
2074                          x_status      OUT NOCOPY VARCHAR2
2075                         ) IS
2076 
2077   l_api_name      CONSTANT VARCHAR2(30) := 'migrate_models';
2078   l_api_version   CONSTANT NUMBER := 1.0;
2079   l_errbuf        VARCHAR2(2000);
2080 BEGIN
2081 
2082   IF(NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME))THEN
2083 
2084     RAISE G_INCOMPATIBLE_API;
2085   END IF;
2086 
2087   cz_model_migration_pvt.migrate_models(p_request_id, p_user_id, p_resp_id, p_appl_id, p_run_id, x_run_id, x_status);
2088 
2089 EXCEPTION
2090   WHEN G_INCOMPATIBLE_API THEN
2091     x_status := G_STATUS_ERROR;
2092     l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
2093     -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
2094     INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
2095     VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
2096     COMMIT;
2097 END;
2098 ---------------------------------------------------------------------------------------
2099 -- added by jonatara:bug6375827
2100 PROCEDURE create_publication_request (
2101    p_api_version       IN NUMBER,
2102    p_model_id          IN NUMBER,
2103    p_ui_def_id         IN NUMBER,
2104    p_publication_mode  IN VARCHAR2,              -- DEFAULT 'P'
2105    p_server_id         IN NUMBER,
2106    p_appl_id_tbl       IN CZ_PB_MGR.t_ref,
2107    p_usg_id_tbl        IN CZ_PB_MGR.t_ref,       -- DEFAULT -1 (ie., 'Any Usage')
2108    p_lang_tbl          IN CZ_PB_MGR.t_lang_code, -- DEFAULT 'US'
2109    p_start_date        IN DATE,                  -- DEFAULT CZ_UTILS.epoch_begin
2110    p_end_date          IN DATE,                  -- DEFAULT CZ_UTILS.CZ_UTILS.epoch_end
2111    x_publication_id    OUT NOCOPY NUMBER,
2112    x_return_status     OUT NOCOPY VARCHAR2,
2113    x_msg_count         OUT NOCOPY NUMBER,
2114    x_msg_data          OUT NOCOPY VARCHAR2
2115  ) IS
2116    l_api_name    CONSTANT VARCHAR2(30) := 'create_publication_request';
2117    l_api_version CONSTANT NUMBER := 1.0;
2118    l_status      VARCHAR2(3);
2119    l_errbuf      VARCHAR2(2000);
2120 
2121  BEGIN
2122 
2123    IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
2124 	 RAISE G_INCOMPATIBLE_API;
2125    END IF;
2126    cz_pb_mgr.create_publication_request(
2127 	 p_model_id,
2128 	 p_ui_def_id,
2129 	 p_publication_mode,
2130 	 p_server_id,
2131 	 p_appl_id_tbl,
2132 	 p_usg_id_tbl,
2133 	 p_lang_tbl,
2134 	 p_start_date,
2135 	 p_end_date,
2136 	 x_publication_id,
2137 	 l_status,
2138 	 x_msg_count,
2139 	 x_msg_data
2140    );
2141    IF l_status = FND_API.G_RET_STS_SUCCESS THEN
2142 	 x_return_status := G_STATUS_SUCCESS;
2143    ELSE
2144 	 x_return_status := G_STATUS_ERROR;
2145    END IF;
2146  EXCEPTION
2147    WHEN G_INCOMPATIBLE_API THEN
2148 	 x_return_status := G_STATUS_ERROR;
2149 	 l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
2150 	 INSERT INTO cz_db_logs (message, statuscode, caller, urgency, logtime)
2151 	 VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, SYSDATE);
2152 	 COMMIT;
2153    WHEN OTHERS THEN
2154 	 x_return_status := G_STATUS_ERROR;
2155 	 l_errbuf := SQLERRM;
2156 	 INSERT INTO cz_db_logs (message, statuscode, caller, urgency, logtime)
2157 	 VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, SYSDATE);
2158 	 COMMIT;
2159  END create_publication_request;
2160 
2161  ------------------------------------------------------------------------------------------------
2162  PROCEDURE create_publication_request (
2163    p_api_version       IN NUMBER,
2164    p_model_id          IN NUMBER,
2165    p_ui_def_id         IN NUMBER,
2166    p_publication_mode  IN VARCHAR2,              -- DEFAULT 'P'
2167    p_server_id         IN NUMBER,
2168    p_appl_id_tbl       IN CZ_PB_MGR.t_ref,
2169    p_usg_id_tbl        IN CZ_PB_MGR.t_ref,       -- DEFAULT -1 (ie., 'Any Usage')
2170    p_lang_tbl          IN CZ_PB_MGR.t_lang_code, -- DEFAULT 'US'
2171    p_start_date        IN DATE,                  -- DEFAULT CZ_UTILS.epoch_begin
2172    p_end_date          IN DATE,                  -- DEFAULT CZ_UTILS.CZ_UTILS.epoch_end
2173    p_user_id           IN NUMBER,
2174    p_resp_id           IN NUMBER,
2175    p_appl_id           IN NUMBER,
2176    x_publication_id    OUT NOCOPY NUMBER,
2177    x_return_status     OUT NOCOPY VARCHAR2,
2178    x_msg_count         OUT NOCOPY NUMBER,
2179    x_msg_data          OUT NOCOPY VARCHAR2
2180  ) IS
2181    l_api_name    CONSTANT VARCHAR2(30) := 'create_publication_request';
2182    l_api_version CONSTANT NUMBER := 1.0;
2183    l_status      VARCHAR2(3);
2184    l_errbuf      VARCHAR2(2000);
2185  BEGIN
2186    fnd_global.apps_initialize (p_user_id, p_resp_id, p_appl_id);
2187    create_publication_request (
2188 	 p_api_version,
2189 	 p_model_id,
2190 	 p_ui_def_id,
2191 	 p_publication_mode,
2192 	 p_server_id,
2193 	 p_appl_id_tbl,
2194 	 p_usg_id_tbl,
2195 	 p_lang_tbl,
2196 	 p_start_date,
2197 	 p_end_date,
2198 	 x_publication_id,
2199 	 x_return_status,
2200 	 x_msg_count,
2201 	 x_msg_data
2202    );
2203  END create_publication_request;
2204  ------------------------------------------------------------------------------------------------
2205 END CZ_modelOperations_pub;