DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZ_MODELOPERATIONS_PUB

Source


1 PACKAGE BODY CZ_modelOperations_pub AS
2 /*  $Header: czmodopb.pls 120.4.12010000.2 2008/09/12 10:00:51 jonatara 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;
354     INTO l_found
351 
352   BEGIN
353     SELECT 1
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
485     WHEN NO_DATA_FOUND THEN
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
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
608 
605     WHEN NO_DATA_FOUND THEN
606       RAISE NOT_VALID_UI_DEF_ID;
607   END;
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 l_Exist              VARCHAR2(1):= 'N';
684 l_err                VARCHAR2(1);
685 l_errbuf             VARCHAR2(2000);
686 l_retcode            NUMBER;
687 l_user_name          VARCHAR2(100);
688 l_user_id            NUMBER;
689 l_resp_id            NUMBER;
690 l_appl_id            NUMBER;
691 TOO_MANY_IMP_SERVERS EXCEPTION;
692 NO_IMP_SERVERS       EXCEPTION;
693 WRONG_EXV_VIEWS      EXCEPTION;
694 DB_LINK_IS_DOWN      EXCEPTION;
695 SESS_NOT_INITIALIZED EXCEPTION;
696 
697 BEGIN
698 
699   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
700     RAISE G_INCOMPATIBLE_API;
701   END IF;
702 
703   l_user_id := FND_GLOBAL.user_id;
704   IF (l_user_id IS NULL) THEN
705   RAISE SESS_NOT_INITIALIZED;
706   END IF;
707 
708   BEGIN
709       SELECT fndnam_link_name
710       INTO l_db_link
711       FROM cz_servers
712       WHERE import_enabled = '1';
713   EXCEPTION
714       WHEN TOO_MANY_ROWS THEN
715            RAISE TOO_MANY_IMP_SERVERS;
716       WHEN NO_DATA_FOUND THEN
717            RAISE NO_IMP_SERVERS;
718   END;
719 
720   --Bug #4865395. Changing the probe query to be against cz_exv_item_properties which is
721   --much lighter view than cz_exv_organizations.
722 
723      -- probe select --
724   BEGIN
725       EXECUTE IMMEDIATE
726       'SELECT ''Y'' FROM cz_exv_item_properties where rownum < 2'
727       INTO l_Exist;
728   EXCEPTION
729       WHEN NO_DATA_FOUND THEN
730            NULL;
731   END;
732 
733 
734    --
735    -- if cz_exv_item_properties is empty then
736    -- this means that EXV views were recreated based on local tables
737    -- with rownum<1 where condition
738    -- in this case try to recreate views based on remote tables if
739    -- db link is alive
740    --
741    IF l_Exist='N' THEN
745             -- not all EXV views have been recreated --
742       IF CZ_ORAAPPS_INTEGRATE.isLinkAlive(l_db_link)=CZ_ORAAPPS_INTEGRATE.LINK_WORKS THEN
743          l_err:=CZ_ORAAPPS_INTEGRATE.create_exv_views(l_db_link);
744          IF l_err<>'0' THEN
746             RAISE WRONG_EXV_VIEWS;
747          END IF;
748       ELSE
749          RAISE DB_LINK_IS_DOWN;
750       END IF;
751    END IF;
752 
753 
754   CZ_IMP_ALL.goSingleBill (p_org_id, p_top_inv_item_id, '0', -1, '0', x_run_id); -- sselahi: added x_run_id
755   x_status := G_STATUS_SUCCESS;
756 
757 
758 EXCEPTION
759     WHEN G_INCOMPATIBLE_API THEN
760          x_status := G_STATUS_ERROR;
761          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
762          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
763          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
764          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
765          COMMIT;
766     WHEN SESS_NOT_INITIALIZED THEN
767          x_status := G_STATUS_ERROR;
768          l_errbuf := CZ_UTILS.GET_TEXT('CZ_SESS_NOT_INITIALIZED');
769          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
770          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
771          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
772          COMMIT;
773     WHEN TOO_MANY_IMP_SERVERS THEN
774          x_status := G_STATUS_ERROR;
775          l_errbuf := CZ_UTILS.GET_TEXT('CZ_IMP_TOO_MANY_SERVERS');
776          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
777          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
778          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
779          COMMIT;
780     WHEN NO_IMP_SERVERS THEN
781          x_status := G_STATUS_ERROR;
782          l_errbuf := CZ_UTILS.GET_TEXT('CZ_IMP_NO_SERVERS');
783          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
784          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
785          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
786          COMMIT;
787     WHEN WRONG_EXV_VIEWS THEN
788          x_status := G_STATUS_ERROR;
789          l_errbuf := 'Error : not all EXV views have been recreated successfully';
790          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
791          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
792          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
793          COMMIT;
794     WHEN DB_LINK_IS_DOWN THEN
795          x_status := G_STATUS_ERROR;
796          l_errbuf := CZ_UTILS.GET_TEXT('CZ_DB_LINK_IS_DOWN','DBLINK',l_db_link);
797          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
798          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
799          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
800          COMMIT;
801     WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
802          x_status := G_STATUS_ERROR;
803          l_errbuf:=CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED');
804          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
805          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
806          COMMIT;
807     WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
808          x_status := G_STATUS_ERROR;
809          l_errbuf := SQLERRM;
810          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
811          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
812          COMMIT;
813     WHEN OTHERS THEN
814          x_status := G_STATUS_ERROR;
815          l_errbuf := SQLERRM;
816          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
817          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
818          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
819          COMMIT;
820 END import_single_bill;
821 ------------------------------------------------------------------------------------------------
822 PROCEDURE import_single_bill(p_api_version      IN  NUMBER,
823                              p_org_id           IN  NUMBER,
824                              p_top_inv_item_id  IN  NUMBER,
825                              p_user_id          IN NUMBER,
826                              p_resp_id          IN NUMBER,
827                              p_appl_id          IN NUMBER,
828                              x_run_id           OUT NOCOPY NUMBER,
829                              x_status           OUT NOCOPY NUMBER)
830 IS
831 BEGIN
832  fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
833  import_single_bill(p_api_version,
834                     p_org_id,
835                     p_top_inv_item_id,
836                     x_run_id,
837                     x_status);
838 END import_single_bill;
839 ---------------------------------------
840 PROCEDURE refresh_single_model(p_api_version       IN  NUMBER,
841                                p_devl_project_id   IN  VARCHAR2,
842                                x_run_id            OUT NOCOPY NUMBER,
846 l_errbuf                VARCHAR2(2000);
843                                x_status            OUT NOCOPY NUMBER) IS
844 l_api_name              CONSTANT VARCHAR2(30) := 'refresh_single_model';
845 l_api_version           CONSTANT NUMBER := 1.0;
847 l_found                 NUMBER;
848 l_db_link               CZ_SERVERS.fndnam_link_name%TYPE;
849 l_Exist                 VARCHAR2(1):= 'N';
850 l_err                   VARCHAR2(1);
851 l_user_id               NUMBER;
852 TOO_MANY_IMP_SERVERS    EXCEPTION;
853 NO_IMP_SERVERS          EXCEPTION;
854 WRONG_EXV_VIEWS         EXCEPTION;
855 DB_LINK_IS_DOWN         EXCEPTION;
856 PROJECT_ID_NOT_EXITS    EXCEPTION;
857 SESS_NOT_INITIALIZED    EXCEPTION;
858 lOrg_Id                 CZ_XFR_PROJECT_BILLS.ORGANIZATION_ID%TYPE;
859 lTop_Id                 CZ_XFR_PROJECT_BILLS.TOP_ITEM_ID%TYPE;
860 
861 BEGIN
862 
863   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
864     RAISE G_INCOMPATIBLE_API;
865   END IF;
866   l_user_id := FND_GLOBAL.user_id;
867   IF (l_user_id IS NULL) THEN
868   RAISE SESS_NOT_INITIALIZED;
869   END IF;
870 
871   -- verify p_devl_project_id
872   BEGIN
873     SELECT 1
874     INTO l_found
875     FROM cz_rp_entries
876     WHERE object_type = 'PRJ'
877     AND object_id = p_devl_project_id
878     AND deleted_flag = '0';
879   EXCEPTION
880     WHEN NO_DATA_FOUND THEN
881       RAISE PROJECT_ID_NOT_EXITS;
882   END;
883 
884     -- get the org id and top model id
885   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)) -
886               length(substr(orig_sys_ref,instr(orig_sys_ref,':',1,2)))  )) ,
887     rtrim(substr(orig_sys_ref,instr(orig_sys_ref,':',1,2)+1))
888   INTO lOrg_Id, lTop_Id
889   FROM cz_devl_projects
890   WHERE devl_project_id = p_devl_project_id
891   AND deleted_flag = '0';
892 
893   -- check the imp server
894   BEGIN
895       SELECT fndnam_link_name
896       INTO l_db_link
897       FROM cz_servers
898       WHERE import_enabled = '1';
899   EXCEPTION
900       WHEN TOO_MANY_ROWS THEN
901            RAISE TOO_MANY_IMP_SERVERS;
902       WHEN NO_DATA_FOUND THEN
903            RAISE NO_IMP_SERVERS;
904   END;
905 
906   --Bug #4865395. Changing the probe query to be against cz_exv_item_properties which is
907   --much lighter view than cz_exv_organizations.
908 
909      -- probe select --
910   BEGIN
911       EXECUTE IMMEDIATE
912       'SELECT ''Y'' FROM cz_exv_item_properties where rownum < 2'
913       INTO l_Exist;
914   EXCEPTION
915       WHEN NO_DATA_FOUND THEN
916            NULL;
917   END;
918    --
919    -- if cz_exv_item_properties is empty then
920    -- this means that EXV views were recreated based on local tables
921    -- with rownum<1 where condition
922    -- in this case try to recreate views based on remote tables if
923    -- db link is alive
924    --
925    IF l_Exist='N' THEN
926       IF CZ_ORAAPPS_INTEGRATE.isLinkAlive(l_db_link)=CZ_ORAAPPS_INTEGRATE.LINK_WORKS THEN
927          l_err:=CZ_ORAAPPS_INTEGRATE.create_exv_views(l_db_link);
928          IF l_err<>'0' THEN
929             -- not all EXV views have been recreated --
930             RAISE WRONG_EXV_VIEWS;
931          END IF;
932       ELSE
933          RAISE DB_LINK_IS_DOWN;
934       END IF;
935    END IF;
936 
937   -- call the import
938   CZ_IMP_ALL.goSingleBill (lOrg_Id, lTop_Id, '0', -1, '0', x_run_id);
939   x_status := G_STATUS_SUCCESS;
940 
941 EXCEPTION
942     WHEN G_INCOMPATIBLE_API THEN
943          x_status := G_STATUS_ERROR;
944          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
945          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
946          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
947          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
948          COMMIT;
949     WHEN SESS_NOT_INITIALIZED THEN
950          x_status := G_STATUS_ERROR;
951          l_errbuf := CZ_UTILS.GET_TEXT('CZ_SESS_NOT_INITIALIZED');
952          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
953          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
954          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
955          COMMIT;
956     WHEN TOO_MANY_IMP_SERVERS THEN
957          x_status := G_STATUS_ERROR;
958          l_errbuf := CZ_UTILS.GET_TEXT('CZ_IMP_TOO_MANY_SERVERS');
959          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
960          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
961          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
962          COMMIT;
963     WHEN NO_IMP_SERVERS THEN
964          x_status := G_STATUS_ERROR;
965          l_errbuf := CZ_UTILS.GET_TEXT('CZ_IMP_NO_SERVERS');
966          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
967          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
968          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
969          COMMIT;
973          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
970     WHEN WRONG_EXV_VIEWS THEN
971          x_status := G_STATUS_ERROR;
972          l_errbuf := 'Error : not all EXV views have been recreated successfully';
974          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
975          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
976          COMMIT;
977     WHEN DB_LINK_IS_DOWN THEN
978          x_status := G_STATUS_ERROR;
979          l_errbuf := CZ_UTILS.GET_TEXT('CZ_DB_LINK_IS_DOWN','DBLINK',l_db_link);
980          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
981          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
982          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
983          COMMIT;
984     WHEN PROJECT_ID_NOT_EXITS THEN
985          x_status := G_STATUS_ERROR;
986          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_DEV_PRJ_ID_ERR', 'PROJID', p_devl_project_id);
987          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
988          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
989          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
990          COMMIT;
991     WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
992          x_status := G_STATUS_ERROR;
993          l_errbuf:=CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED');
994          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
995          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
996          COMMIT;
997     WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
998          x_status := G_STATUS_ERROR;
999          l_errbuf := SQLERRM;
1000          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1001          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1002          COMMIT;
1003     WHEN OTHERS THEN
1004          x_status := G_STATUS_ERROR;
1005          l_errbuf := SQLERRM;
1006          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1007          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1008          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1009          COMMIT;
1010 end refresh_single_model;
1011 ------------------------------------------------------------------------------------------------
1012 PROCEDURE refresh_single_model(p_api_version     IN  NUMBER,
1013                                p_devl_project_id IN  VARCHAR2,
1014                                p_user_id         IN NUMBER,
1015                                p_resp_id         IN NUMBER,
1016                                p_appl_id         IN NUMBER,
1017                                x_run_id          OUT NOCOPY NUMBER,
1018                                x_status          OUT NOCOPY NUMBER)
1019 IS
1020 BEGIN
1021  fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1022  refresh_single_model(p_api_version,
1023                        p_devl_project_id,
1024                        x_run_id,
1025                        x_status);
1026 END refresh_single_model;
1027 
1028 -------------------------------------------------------------
1029 PROCEDURE publish_model(p_api_version    IN  NUMBER,
1030                         p_publication_id IN  NUMBER,
1031                         x_run_id         OUT NOCOPY NUMBER,
1032                         x_status         OUT NOCOPY NUMBER) IS
1033 l_api_name      CONSTANT VARCHAR2(30) := 'publish_model';
1034 l_api_version   CONSTANT NUMBER := 1.0;
1035 l_status        VARCHAR2(3);
1036 l_errbuf        VARCHAR2(2000);
1037 
1038 BEGIN
1039   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1040 
1041   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1042     RAISE G_INCOMPATIBLE_API;
1043   END IF;
1044 
1045 
1046   cz_pb_mgr.publish_model(p_publication_id, x_run_id, l_status);
1047 
1048   IF l_status = 'OK' THEN
1049     x_status := G_STATUS_SUCCESS;
1050   ELSE
1051     x_status := G_STATUS_ERROR;
1052   END IF;
1053 
1054 EXCEPTION
1055     WHEN G_INCOMPATIBLE_API THEN
1056          x_status := G_STATUS_ERROR;
1057          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1058          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1059          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1060          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1061          COMMIT;
1062     WHEN OTHERS THEN
1063          x_status := G_STATUS_ERROR;
1064          l_errbuf := SQLERRM;
1065          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1066          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1067          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1068 END publish_model;
1069 ------------------------------------------------------------------------------------------------
1070 PROCEDURE publish_model(p_api_version    IN  NUMBER,
1071                         p_publication_id IN  NUMBER,
1072                         p_user_id        IN NUMBER,
1073                         p_resp_id        IN NUMBER,
1074                         p_appl_id        IN NUMBER,
1075                         x_run_id         OUT NOCOPY NUMBER,
1079  publish_model(p_api_version,
1076                         x_status         OUT NOCOPY NUMBER) IS
1077 BEGIN
1078  fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1080                p_publication_id,
1081                x_run_id,
1082                x_status);
1083 END publish_model;
1084 --------------------------------------
1085 PROCEDURE deep_model_copy(p_api_version     IN  NUMBER,
1086                           p_devl_project_id IN  NUMBER,
1087                           p_folder          IN  NUMBER,
1088                           p_copy_rules      IN  NUMBER,
1089                           p_copy_uis        IN  NUMBER,
1090                           p_copy_root       IN  NUMBER,
1091                           x_devl_project_id OUT NOCOPY NUMBER,
1092                           x_run_id          OUT NOCOPY NUMBER,
1093                           x_status          OUT NOCOPY NUMBER) IS
1094 l_api_name      CONSTANT VARCHAR2(30) := 'deep_model_copy';
1095 l_api_version   CONSTANT NUMBER := 1.0;
1096 l_status        VARCHAR2(3);
1097 l_errbuf        VARCHAR2(2000);
1098 l_found         NUMBER;
1099 NOT_VALID_PROJECT_ID    EXCEPTION;
1100 
1101 BEGIN
1102   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1103   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1104     RAISE G_INCOMPATIBLE_API;
1105   END IF;
1106 
1107   BEGIN
1108     SELECT 1
1109     INTO l_found
1110     FROM cz_rp_entries
1111     WHERE object_type = 'PRJ' AND object_id = p_devl_project_id AND deleted_flag = '0';
1112   EXCEPTION
1113     WHEN NO_DATA_FOUND THEN
1114       RAISE NOT_VALID_PROJECT_ID;
1115   END;
1116 
1117 cz_pb_mgr.deep_model_copy(p_devl_project_id, 0, p_folder, p_copy_rules, p_copy_uis,
1118                           p_copy_root, x_devl_project_id, x_run_id, l_status);
1119 
1120   IF l_status = 'OK' THEN
1121     x_status := G_STATUS_SUCCESS;
1122   ELSE
1123     x_status := G_STATUS_ERROR;
1124   END IF;
1125 
1126 EXCEPTION
1127     WHEN G_INCOMPATIBLE_API THEN
1128          x_status := G_STATUS_ERROR;
1129          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1130          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1131          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1132          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1133          COMMIT;
1134     WHEN NOT_VALID_PROJECT_ID THEN
1135          x_status := G_STATUS_ERROR;
1136          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_DEV_PRJ_ID_ERR', 'PROJID', p_devl_project_id);
1137          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1138          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1139          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1140          COMMIT;
1141     WHEN OTHERS THEN
1142          x_status := G_STATUS_ERROR;
1143          l_errbuf := SQLERRM;
1144          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1145          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1146          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1147          COMMIT;
1148 END deep_model_copy;
1149 ------------------------------------------------------------------------------------------------
1150 PROCEDURE deep_model_copy(p_api_version IN  NUMBER,
1151                           p_user_id     IN NUMBER,
1152                           p_resp_id     IN NUMBER,
1153                           p_appl_id     IN NUMBER,
1154                           p_devl_project_id IN  NUMBER,
1155                           p_folder          IN  NUMBER,
1156                           p_copy_rules      IN  NUMBER,
1157                           p_copy_uis        IN  NUMBER,
1158                           p_copy_root       IN  NUMBER,
1159                           x_devl_project_id OUT NOCOPY NUMBER,
1160                           x_run_id          OUT NOCOPY NUMBER,
1161                           x_status          OUT NOCOPY NUMBER) IS
1162 
1163  BEGIN
1164  fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1165  deep_model_copy(p_api_version,
1166                  p_devl_project_id,
1167                  p_folder,
1168                  p_copy_rules,
1169                  p_copy_uis,
1170                  p_copy_root,
1171                  x_devl_project_id,
1172                  x_run_id,
1173                  x_status);
1174 END deep_model_copy;
1175 
1176 -----------------------------------------------------------------
1177 PROCEDURE execute_populator(p_api_version  IN     NUMBER,
1178                             p_populator_id IN     NUMBER,
1179                             p_imp_run_id   IN OUT NOCOPY VARCHAR2,
1180                             x_run_id       OUT NOCOPY    NUMBER,
1181                             x_status       OUT NOCOPY    NUMBER) IS
1182 l_api_name      CONSTANT VARCHAR2(30) := 'execute_populator';
1183 l_api_version   CONSTANT NUMBER := 1.0;
1184 l_errbuf        VARCHAR2(2000);
1185 l_found         NUMBER;
1186 NOT_VALID_POPULATOR_ID  EXCEPTION;
1187 
1188 BEGIN
1189   SAVEPOINT execute_populator_PUB;
1190 
1191   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1195 
1192   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1193     RAISE G_INCOMPATIBLE_API;
1194   END IF;
1196   BEGIN
1197     SELECT NULL
1198     INTO l_found
1199     FROM cz_populators
1200     WHERE populator_id = p_populator_id AND deleted_flag = '0';
1201   EXCEPTION
1202     WHEN NO_DATA_FOUND THEN
1203       RAISE NOT_VALID_POPULATOR_ID;
1204   END;
1205 
1206   cz_populators_pkg.execute(p_populator_id, p_imp_run_id, x_run_id);
1207   IF x_run_id = 0 THEN
1208     x_status := G_STATUS_SUCCESS;
1209     COMMIT WORK;
1210   ELSE
1211     x_status := G_STATUS_ERROR;
1212     ROLLBACK TO execute_populator_PUB;
1213   END IF;
1214 
1215 EXCEPTION
1216     WHEN G_INCOMPATIBLE_API THEN
1217          x_status := G_STATUS_ERROR;
1218          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1219          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1220          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1221          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1222          COMMIT;
1223     WHEN NOT_VALID_POPULATOR_ID THEN
1224          x_status := G_STATUS_ERROR;
1225          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_POPULATOR_ID_ERR');
1226          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1227          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1228          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1229          COMMIT;
1230     WHEN OTHERS THEN
1231          x_status := G_STATUS_ERROR;
1232          ROLLBACK TO execute_populator_PUB;
1233          l_errbuf := SQLERRM;
1234          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1235          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1236          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1237          COMMIT;
1238 END execute_populator;
1239 
1240 ------------------------------------------------------------------------------------------------
1241 PROCEDURE execute_populator(p_api_version  IN     NUMBER,
1242                             p_user_id      IN     NUMBER,
1243                             p_resp_id      IN     NUMBER,
1244                             p_appl_id      IN     NUMBER,
1245                             p_populator_id IN     NUMBER,
1246                             p_imp_run_id   IN  OUT NOCOPY VARCHAR2,
1247                             x_run_id       OUT NOCOPY    NUMBER,
1248                             x_status       OUT NOCOPY    NUMBER) IS
1249  BEGIN
1250   fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1251      execute_populator(p_api_version,
1252                         p_populator_id,
1253                         p_imp_run_id,
1254                         x_run_id,
1255                         x_status);
1256 END execute_populator;
1257 
1258 -------------------------------------------------
1259 PROCEDURE repopulate(p_api_version    IN  NUMBER,
1260                     p_devl_project_id IN  NUMBER,
1261                     p_regenerate_all  IN  VARCHAR2 , -- DEFAULT '1',
1262                     p_handle_invalid  IN  VARCHAR2 , -- DEFAULT '1',
1263                     p_handle_broken   IN  VARCHAR2 , -- DEFAULT '1',
1264                     x_run_id          OUT NOCOPY NUMBER,
1265                     x_status          OUT NOCOPY NUMBER) IS
1266 l_api_name      CONSTANT VARCHAR2(30) := 'repopulate';
1267 l_api_version   CONSTANT NUMBER := 1.0;
1268 l_errbuf        VARCHAR2(2000);
1269 l_found         NUMBER;
1270 NOT_VALID_PROJECT_ID    EXCEPTION;
1271 
1272 BEGIN
1273   SAVEPOINT repopulate_PUB;
1274 
1275   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1276   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1277     RAISE G_INCOMPATIBLE_API;
1278   END IF;
1279 
1280   BEGIN
1281     SELECT 1
1282     INTO l_found
1283     FROM cz_rp_entries
1284     WHERE object_type = 'PRJ' AND object_id = p_devl_project_id AND deleted_flag = '0';
1285   EXCEPTION
1286     WHEN NO_DATA_FOUND THEN
1287       RAISE NOT_VALID_PROJECT_ID;
1288   END;
1289 
1290   cz_populators_pkg.repopulate(p_devl_project_id, p_regenerate_all, p_handle_invalid, p_handle_broken, x_run_id);
1291   IF x_run_id = 0 THEN
1292     x_status := G_STATUS_SUCCESS;
1293     COMMIT WORK;
1294   ELSE
1295     x_status := G_STATUS_ERROR;
1296     ROLLBACK TO repopulate_PUB;
1297   END IF;
1298 
1299 EXCEPTION
1300     WHEN G_INCOMPATIBLE_API THEN
1301          x_status := G_STATUS_ERROR;
1302          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1303          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1304          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1305          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1306          COMMIT;
1307     WHEN NOT_VALID_PROJECT_ID THEN
1308          x_status := G_STATUS_ERROR;
1309          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_DEV_PRJ_ID_ERR', 'PROJID', p_devl_project_id);
1310          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1311          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1315          x_status := G_STATUS_ERROR;
1312          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1313          COMMIT;
1314     WHEN OTHERS THEN
1316          ROLLBACK TO repopulate_PUB;
1317          l_errbuf := SQLERRM;
1318          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1319          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1320          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1321          COMMIT;
1322 END repopulate;
1323 ------------------------------------------------------------------------------------------------
1324 PROCEDURE repopulate(p_api_version    IN  NUMBER,
1325                     p_devl_project_id IN  NUMBER,
1326                     p_user_id         IN NUMBER,
1327                     p_resp_id         IN NUMBER,
1328                     p_appl_id         IN NUMBER,
1329                     p_regenerate_all  IN  VARCHAR2 , -- DEFAULT '1',
1330                     p_handle_invalid  IN  VARCHAR2 , -- DEFAULT '1',
1331                     p_handle_broken   IN  VARCHAR2 , -- DEFAULT '1',
1332                     x_run_id          OUT NOCOPY NUMBER,
1333                     x_status          OUT NOCOPY NUMBER) IS
1334  BEGIN
1335     fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1336     repopulate(p_api_version,
1337                p_devl_project_id,
1338                p_user_id        ,
1339                p_resp_id        ,
1340                p_appl_id        ,
1341                p_regenerate_all ,
1342                p_handle_invalid ,
1343                p_handle_broken  ,
1344                x_run_id         ,
1345                x_status         );
1346  END repopulate;
1347 
1348 ---------------------------------------------------------
1349 PROCEDURE republish_model(p_api_version    IN  NUMBER,
1350                           p_publication_id IN  NUMBER,
1351                           p_start_date     IN  DATE,
1352                           p_end_date       IN  DATE,
1353                           x_run_id         OUT NOCOPY NUMBER,
1354                           x_status         OUT NOCOPY NUMBER) IS
1355 l_api_name      CONSTANT VARCHAR2(30) := 'republish_model';
1356 l_api_version   CONSTANT NUMBER := 1.0;
1357 l_status        VARCHAR2(3);
1358 l_errbuf        VARCHAR2(2000);
1359 l_start_date    DATE;
1360 l_end_date      DATE;
1361 l_publication_id NUMBER;
1362 BEGIN
1363   SELECT cz_xfr_run_infos_s.NEXTVAL INTO x_run_id FROM DUAL;
1364 
1365   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1366     RAISE G_INCOMPATIBLE_API;
1367   END IF;
1368 
1369   l_start_date     := p_start_date;
1370   l_end_date       := p_end_date;
1371   l_publication_id := p_publication_id;
1372   cz_pb_mgr.republish_model(l_publication_id,l_start_date,l_end_date,x_run_id,l_status);
1373 
1374   IF l_status = 'OK' THEN
1375     x_status := G_STATUS_SUCCESS;
1376   ELSE
1377     x_status := G_STATUS_ERROR;
1378   END IF;
1379 
1380 EXCEPTION
1381     WHEN G_INCOMPATIBLE_API THEN
1382          x_status := G_STATUS_ERROR;
1383          l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1384          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
1385          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1386          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1387          COMMIT;
1388     WHEN OTHERS THEN
1389          x_status := G_STATUS_ERROR;
1390          l_errbuf := SQLERRM;
1391          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_UNEXPECTED);
1392          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1393          VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
1394 END republish_model;
1395 ---------------------------------------------------------
1396 PROCEDURE republish_model(p_api_version     IN  NUMBER,
1397                           p_publication_id  IN  NUMBER,
1398                           p_user_id         IN NUMBER,
1399                           p_resp_id         IN NUMBER,
1400                           p_appl_id         IN NUMBER,
1401                           p_start_date      IN  DATE,
1402                           p_end_date        IN  DATE,
1403                           x_run_id          OUT NOCOPY NUMBER,
1404                           x_status          OUT NOCOPY NUMBER)
1405 IS
1406  BEGIN
1407      fnd_global.apps_initialize(p_user_id,p_resp_id,p_appl_id);
1408      republish_model(p_api_version,
1409                   p_publication_id,
1410                   p_start_date,
1411                   p_end_date,
1412                   x_run_id,
1413                   x_status);
1414 END republish_model;
1415 ------------------------------------------------------------------------------------------------
1416 FUNCTION rp_folder_exists (p_api_version    IN NUMBER,
1417                            p_encl_folder_id IN NUMBER,
1418                            p_rp_folder_id   IN NUMBER) RETURN BOOLEAN IS
1419 
1420 l_api_name           CONSTANT VARCHAR2(30) := 'rp_folder_exists';
1421 l_api_version        CONSTANT NUMBER := 1.0;
1422 
1423 -- cursor to check the enclosing folder when it is not null
1424 CURSOR encl_folder_exits_csr IS
1425  SELECT 'X'
1429  AND deleted_flag = '0';
1426  FROM cz_rp_entries
1427  WHERE object_id = p_encl_folder_id
1428  AND object_type = 'FLD'
1430 
1431 -- cursor to check the folder when encl folder is not null
1432 CURSOR folder_exists_in_encl_csr IS
1433  SELECT 'X'
1434  FROM cz_rp_entries
1435  WHERE object_id = p_rp_folder_id
1436  AND enclosing_folder = p_encl_folder_id
1437  AND object_type = 'FLD'
1438  AND deleted_flag = '0';
1439 
1440 -- cursor to check the folder when enclosing folder is null
1441 CURSOR folder_exists_csr IS
1442  SELECT 'X'
1443  FROM cz_rp_entries
1444  WHERE object_id = p_rp_folder_id
1445  AND object_type = 'FLD'
1446  AND deleted_flag = '0';
1447 
1448  x_found        BOOLEAN:=FALSE;
1449  p_error_flag   CHAR(1):='';
1450  x_msg_data     VARCHAR2(2000);
1451  l_dummy_nbr    NUMBER;
1452 
1453 BEGIN
1454   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1455     RAISE G_INCOMPATIBLE_API;
1456   END IF;
1457 
1458     IF p_encl_folder_id IS NOT NULL THEN
1459       -- first check if enclosing folder exists
1460       OPEN encl_folder_exits_csr;
1461       FETCH encl_folder_exits_csr INTO p_error_flag;
1462       x_found:=encl_folder_exits_csr%FOUND;
1463       CLOSE encl_folder_exits_csr;
1464 
1465         IF NOT x_found THEN
1466            RETURN x_found;
1467         END IF;
1468 
1469       -- now check if the folder exists
1470      OPEN folder_exists_in_encl_csr;
1471      FETCH folder_exists_in_encl_csr INTO p_error_flag;
1472      x_found:=folder_exists_in_encl_csr%FOUND;
1473      CLOSE folder_exists_in_encl_csr;
1474     ELSE
1475       -- check if folder exists anywhere
1476       OPEN folder_exists_csr;
1477       FETCH folder_exists_csr INTO p_error_flag;
1478       x_found:=folder_exists_csr%FOUND;
1479       CLOSE folder_exists_csr;
1480     END IF;
1481 
1482     RETURN x_found;
1483 
1484 EXCEPTION
1485     WHEN G_INCOMPATIBLE_API THEN
1486          RAISE G_INCOMPATIBLE_API;
1487     WHEN OTHERS THEN
1488          RAISE FND_API.G_EXC_ERROR;
1489 END rp_folder_exists;
1490 ---------------------------------------------------------
1491 FUNCTION rp_folder_exists (
1492   p_api_version    IN NUMBER,
1493   p_encl_folder_id IN NUMBER,
1494   p_rp_folder_id   IN NUMBER,
1495   p_user_id        IN NUMBER,
1496   p_resp_id        IN NUMBER,
1497   p_appl_id        IN NUMBER
1498 ) RETURN BOOLEAN IS
1499 BEGIN
1500   fnd_global.apps_initialize (
1501     p_user_id,
1502     p_resp_id,
1503     p_appl_id
1504   );
1505   return rp_folder_exists (
1506            p_api_version,
1507            p_encl_folder_id,
1508            p_rp_folder_id
1509          );
1510 END rp_folder_exists;
1511 ---------------------------------------------------------
1512 PROCEDURE create_rp_folder(p_api_version          IN  NUMBER
1513                           ,p_encl_folder_id       IN  CZ_RP_ENTRIES.OBJECT_ID%TYPE
1514                           ,p_new_folder_name      IN  CZ_RP_ENTRIES.NAME%TYPE
1515                           ,p_folder_desc          IN  CZ_RP_ENTRIES.DESCRIPTION%TYPE
1516                           ,p_folder_notes         IN  CZ_RP_ENTRIES.NOTES%TYPE
1517                           ,x_new_folder_id        OUT NOCOPY CZ_RP_ENTRIES.OBJECT_ID%TYPE
1518                           ,x_return_status        OUT NOCOPY  VARCHAR2
1519                           ,x_msg_count            OUT NOCOPY  NUMBER
1520                           ,x_msg_data             OUT NOCOPY  VARCHAR2
1521                           )
1522 IS
1523 
1524   l_api_version  CONSTANT NUMBER := 1.0;
1525   l_api_name     CONSTANT VARCHAR2(30) := 'create_rp_folder';
1526 
1527   l_new_object_id           CZ_RP_ENTRIES.OBJECT_ID%TYPE;
1528   l_dummy_nbr               NUMBER;
1529   l_count                   NUMBER;
1530 
1531 BEGIN
1532   -- standard call to check for call compatibility
1533   IF (NOT FND_API.compatible_api_call(l_api_version
1534                                      ,p_api_version
1535                                      ,l_api_name
1536                                      ,G_PKG_NAME
1537                                      )) THEN
1538     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1539   END IF;
1540 
1541   BEGIN -- validate the encl_folder_id
1542     SELECT 1 INTO l_dummy_nbr
1543     FROM cz_rp_entries
1544     WHERE object_id = p_encl_folder_id
1545     AND object_type = 'FLD'
1546     AND deleted_flag = '0';
1547   EXCEPTION
1548     WHEN NO_DATA_FOUND THEN
1549       x_msg_data := CZ_UTILS.GET_TEXT('CZ_RP_FLDR_NO_ENCL_FLDR');
1550       RAISE FND_API.G_EXC_ERROR;
1551   END;
1552 
1553   BEGIN -- check if folder already exists, if so return its id
1554     SELECT object_id INTO x_new_folder_id
1555     FROM cz_rp_entries
1556     WHERE name = p_new_folder_name
1557     AND enclosing_folder = p_encl_folder_id
1558     AND object_type = 'FLD'
1559     AND deleted_flag = '0';
1560 
1561   EXCEPTION  -- it doesn't exists, so create it
1562     WHEN NO_DATA_FOUND THEN
1563 
1564          SELECT cz_rp_entries_s.NEXTVAL
1565          INTO l_new_object_id
1566          FROM DUAL;
1567 
1568         INSERT INTO cz_rp_entries
1569                     (object_id
1570                     ,name
1571                     ,object_type
1572                     ,enclosing_folder
1576               VALUES
1573                     ,description
1574                     ,notes
1575                     )
1577                    (l_new_object_id
1578                    ,p_new_folder_name
1579                    ,'FLD'
1580                    ,p_encl_folder_id
1581                    ,p_folder_desc
1582                    ,p_folder_notes
1583                    );
1584         COMMIT;
1585         x_new_folder_id := l_new_object_id;
1586   END;
1587 
1588   x_return_status := FND_API.G_RET_STS_SUCCESS;
1589 
1590 EXCEPTION
1591   WHEN FND_API.G_EXC_ERROR THEN
1592     x_return_status := FND_API.G_RET_STS_ERROR;
1593   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1594     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1595     fnd_msg_pub.count_and_get(p_count => x_msg_count,
1596                               p_data  => x_msg_data);
1597   WHEN OTHERS THEN
1598     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1599     IF fnd_msg_pub.check_msg_Level(fnd_msg_pub.G_MSG_LVL_UNEXP_ERROR) THEN
1600       fnd_msg_pub.add_exc_msg(G_PKG_NAME, l_api_name);
1601     END IF;
1602     fnd_msg_pub.count_and_get(p_count => x_msg_count,
1603                               p_data  => x_msg_data);
1604 END create_rp_folder;
1605 ---------------------------------------------------------
1606 PROCEDURE create_rp_folder (
1607   p_api_version          IN  NUMBER,
1608   p_encl_folder_id       IN  CZ_RP_ENTRIES.OBJECT_ID%TYPE,
1609   p_new_folder_name      IN  CZ_RP_ENTRIES.NAME%TYPE,
1610   p_folder_desc          IN  CZ_RP_ENTRIES.DESCRIPTION%TYPE,
1611   p_folder_notes         IN  CZ_RP_ENTRIES.NOTES%TYPE,
1612   p_user_id              IN  NUMBER,
1613   p_resp_id              IN  NUMBER,
1614   p_appl_id              IN  NUMBER,
1615   x_new_folder_id        OUT NOCOPY CZ_RP_ENTRIES.OBJECT_ID%TYPE,
1616   x_return_status        OUT NOCOPY VARCHAR2,
1617   x_msg_count            OUT NOCOPY NUMBER,
1618   x_msg_data             OUT NOCOPY VARCHAR2
1619 ) IS
1620 BEGIN
1621   fnd_global.apps_initialize (
1622     p_user_id,
1623     p_resp_id,
1624     p_appl_id
1625   );
1626   create_rp_folder (
1627     p_api_version,
1628     p_encl_folder_id,
1629     p_new_folder_name,
1630     p_folder_desc,
1631     p_folder_notes,
1632     x_new_folder_id,
1633     x_return_status,
1634     x_msg_count,
1635     x_msg_data
1636   );
1637 END create_rp_folder;
1638 ---------------------------------------------------------
1639 PROCEDURE import_generic(p_api_version      IN  NUMBER
1640                         ,p_run_id           IN  NUMBER
1641                         ,p_rp_folder_id     IN NUMBER
1642                         ,x_run_id           OUT NOCOPY NUMBER
1643                         ,x_status           OUT NOCOPY NUMBER)
1644 IS
1645 l_api_name           CONSTANT VARCHAR2(30) := 'import_generic';
1646 l_api_version        CONSTANT NUMBER := 1.0;
1647 TYPE boolean_t       IS TABLE OF BOOLEAN index by BINARY_INTEGER;
1648 l_dummy_nbr          NUMBER;
1649 l_msg_data       VARCHAR2(2000);
1650 l_msg_count      NUMBER := 0;
1651 l_return_status      VARCHAR2(1);
1652 l_locked_models_tbl      cz_security_pvt.number_type_tbl;
1653 l_model_id_tbl           cz_security_pvt.number_type_tbl;
1654 l_devl_prj_id_tbl        cz_security_pvt.number_type_tbl;
1655 l_all_locked_models_tbl  cz_security_pvt.number_type_tbl;
1656 
1657 NO_PRIV_EXCP                 EXCEPTION;
1658 PRIV_CHECK_ERR_EXP           EXCEPTION;
1659 FAILED_TO_LOCK_MODEL_EXCP    EXCEPTION;
1660 MODEL_NOT_EDITABLE           EXCEPTION;
1661 MODEL_LOCKED_EXCP            EXCEPTION;
1662 MODEL_UNLOCK_EXCP            EXCEPTION;
1663 INVALID_ENCL_FLDR_EXCP       EXCEPTION;
1664 SESS_NOT_INITIALIZED_EXCP    EXCEPTION;
1665 
1666 xERROR           BOOLEAN:=FALSE;
1667 l_user_name      varchar2(255);
1668 l_user_id        NUMBER;
1669 l_is_new_model   BOOLEAN;
1670 
1671 -- model ids before calling generic import
1672 CURSOR l_imp_devl_project_csr IS
1673 SELECT nvl(model_id,0)
1674 FROM CZ_IMP_DEVL_PROJECT
1675 WHERE rec_status IS NULL AND Run_ID = p_run_id;
1676 
1677 -- devl projects after after calling generic import
1678 CURSOR l_imp_devl_project_csr_2 IS
1679 SELECT nvl(model_id,0), nvl(devl_project_id,0)
1680 FROM CZ_IMP_DEVL_PROJECT
1681 WHERE rec_status IS NOT NULL AND Run_ID = x_run_id;
1682 
1683 BEGIN
1684 
1685   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1686     RAISE G_INCOMPATIBLE_API;
1687   END IF;
1688 
1689   l_user_id := FND_GLOBAL.user_id;
1690   l_user_name := FND_GLOBAL.user_name;
1691   IF (l_user_name IS NULL) THEN
1692       RAISE SESS_NOT_INITIALIZED_EXCP;
1693   END IF;
1694 
1695   BEGIN -- validate the encl_folder_id
1696     SELECT 1 INTO l_dummy_nbr
1697     FROM cz_rp_entries
1698     WHERE object_id = p_rp_folder_id
1699     AND object_type = 'FLD'
1700     AND deleted_flag = '0';
1701   EXCEPTION
1702     WHEN NO_DATA_FOUND THEN
1703       l_msg_count        := 1;
1704       l_msg_data         := cz_utils.get_text('CZ_IMPGEN_ENCL_FLDR');
1705       RAISE INVALID_ENCL_FLDR_EXCP;
1706   END;
1707 
1708     l_model_id_tbl.DELETE;
1709     l_all_locked_models_tbl.DELETE;
1710     OPEN l_imp_devl_project_csr;
1711     FETCH l_imp_devl_project_csr
1712     BULK COLLECT INTO l_model_id_tbl;
1713     CLOSE l_imp_devl_project_csr;
1717     IF (l_model_id_tbl.COUNT > 0) THEN
1714 
1715     -- shallow lock each model because we don't know model relationships
1716 
1718       FOR i IN l_model_id_tbl.FIRST..l_model_id_tbl.LAST LOOP
1719         IF (l_model_id_tbl(i) <> 0) THEN
1720             l_locked_models_tbl.DELETE;
1721             cz_security_pvt.lock_model(
1722               p_api_version          =>   1.0,
1723               p_model_id             =>   l_model_id_tbl(i),
1724               p_lock_child_models    =>   FND_API.G_FALSE,
1725               p_commit_flag          =>   FND_API.G_TRUE,
1726               x_locked_entities      =>   l_locked_models_tbl,
1727               x_return_status        =>   l_return_status,
1728               x_msg_count            =>   l_msg_count,
1729               x_msg_data             =>   l_msg_data);
1730             IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1731               FOR k IN 1..l_msg_count LOOP
1732                 l_msg_data  := fnd_msg_pub.get(k,fnd_api.g_false);
1733                 xERROR:=cz_utils.log_report(l_msg_data,1,'CZ_MODELOPERATIONS_PUB.IMPORT_GENERIC',20001,p_run_id);
1734                 COMMIT;
1735               END LOOP;
1736               RAISE FAILED_TO_LOCK_MODEL_EXCP;
1737             END IF;
1738             IF ( l_locked_models_tbl.COUNT > 0 ) THEN
1739                FOR j IN l_locked_models_tbl.FIRST..l_locked_models_tbl.LAST LOOP
1740                   l_all_locked_models_tbl(l_all_locked_models_tbl.COUNT + 1) := l_locked_models_tbl(j);
1741                END LOOP;
1742             END IF;
1743         END IF;
1744       END LOOP;
1745     END IF;
1746 
1747   -- call go_generic
1748 
1749   CZ_IMP_ALL.go_generic(x_run_id, p_run_id, p_rp_folder_id);
1750   x_status := G_STATUS_SUCCESS;
1751 
1752   IF (l_all_locked_models_tbl.COUNT > 0) THEN
1753             cz_security_pvt.unlock_model(
1754               p_api_version          =>   1.0,
1755               p_commit_flag          =>   FND_API.G_TRUE,
1756               p_models_to_unlock     =>   l_all_locked_models_tbl,
1757               x_return_status        =>   l_return_status,
1758               x_msg_count            =>   l_msg_count,
1759               x_msg_data             =>   l_msg_data);
1760   END IF;
1761 
1762 EXCEPTION
1763     WHEN G_INCOMPATIBLE_API THEN
1764          x_status := G_STATUS_ERROR;
1765          l_msg_data := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
1766          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1767          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1768          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1769          COMMIT;
1770     WHEN SESS_NOT_INITIALIZED_EXCP THEN
1771          x_status := G_STATUS_ERROR;
1772          l_msg_data := CZ_UTILS.GET_TEXT('CZ_SESS_NOT_INITIALIZED');
1773          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1774          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1775          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1776          COMMIT;
1777     WHEN INVALID_ENCL_FLDR_EXCP THEN
1778          x_status := G_STATUS_ERROR;
1779          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1780          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1781          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1782          COMMIT;
1783     WHEN NO_PRIV_EXCP THEN
1784          x_status := G_STATUS_ERROR;
1785          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1786          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1787          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1788          COMMIT;
1789     WHEN MODEL_LOCKED_EXCP THEN
1790          x_status := G_STATUS_ERROR;
1791          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1792          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1793          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1794          COMMIT;
1795     WHEN FAILED_TO_LOCK_MODEL_EXCP THEN
1796          x_status := G_STATUS_ERROR;
1797          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1798          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1799          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1800          COMMIT;
1801     WHEN MODEL_UNLOCK_EXCP THEN
1802          x_status := G_STATUS_ERROR;
1803          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_ERROR);
1804          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1805          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1806          COMMIT;
1807     WHEN OTHERS THEN
1808          x_status := G_STATUS_ERROR;
1809          l_msg_data := SQLERRM;
1810          -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_msg_data, fnd_log.LEVEL_UNEXPECTED);
1811          INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
1812          VALUES (l_msg_data, 11276, G_PKG_NAME||'.'||l_api_name, 1, p_run_id, SYSDATE);
1813          COMMIT;
1814          IF (l_all_locked_models_tbl.COUNT > 0) THEN
1815             cz_security_pvt.unlock_model(
1819               x_return_status        =>   l_return_status,
1816               p_api_version          =>   1.0,
1817               p_commit_flag          =>   FND_API.G_TRUE,
1818               p_models_to_unlock     =>   l_all_locked_models_tbl,
1820               x_msg_count            =>   l_msg_count,
1821               x_msg_data             =>   l_msg_data);
1822          END IF;
1823 END import_generic;
1824 -----------------------------------------------------------
1825 PROCEDURE import_generic (
1826   p_api_version      IN  NUMBER,
1827   p_run_id           IN  NUMBER,
1828   p_rp_folder_id     IN  NUMBER,
1829   p_user_id          IN  NUMBER,
1830   p_resp_id          IN  NUMBER,
1831   p_appl_id          IN  NUMBER,
1832   x_run_id           OUT NOCOPY NUMBER,
1833   x_status           OUT NOCOPY NUMBER
1834 ) IS
1835 BEGIN
1836   fnd_global.apps_initialize (
1837     p_user_id,
1838     p_resp_id,
1839     p_appl_id
1840   );
1841   import_generic (
1842     p_api_version,
1843     p_run_id,
1844     p_rp_folder_id,
1845     x_run_id,
1846     x_status
1847   );
1848 END import_generic;
1849 -----------------------------------------------------------
1850 /*#
1851  * This is the public interface for force unlock operations on a model in Oracle Configurator
1852  * @param p_api_version   Current version of the API is 1.0
1853  * @param p_model_id      devl_project_id of the model from cz_devl_projects table
1854  * @param p_unlock_references   A value of FND_API.G_TRUE indicates that the child models if any should be
1855  *                              force unlocked. A value of FND_API.G_FALSE indicates that only the root model
1856  *                              will be unlocked
1857  * @param p_init_msg_list FND_API.G_TRUE if the API should initialize the FND stack, FND_API.G_FALSE if not.
1858  * @param x_return_status standard FND status. (ex:FND_API.G_RET_STS_SUCCESS )
1859  * @param x_msg_count     number of messages on the stack.
1860  * @param x_msg_data      standard FND OUT parameter for message.  Messages are written to the FND error stack
1861  * @rep:scope public
1862  * @rep:product CZ
1863  * @rep:displayname API for working with force unlock operations on a model
1864  * @rep:lifecycle active
1865  * @rep:compatibility S
1866  * @rep:category BUSINESS_ENTITY CZ_CONFIG_MODEL
1867  */
1868 
1869 PROCEDURE force_unlock_model (p_api_version        IN NUMBER,
1870                               p_model_id           IN NUMBER,
1871                               p_unlock_references  IN VARCHAR2,
1872                               p_init_msg_list      IN VARCHAR2,
1873                               x_return_status     OUT NOCOPY VARCHAR2,
1874                               x_msg_count         OUT NOCOPY NUMBER,
1875                               x_msg_data          OUT NOCOPY VARCHAR2)
1876 IS
1877 
1878 BEGIN
1879    cz_security_pvt.force_unlock_model (p_api_version,
1880                        p_model_id,
1881                        p_unlock_references,
1882                        p_init_msg_list,
1883                        x_return_status,
1884                        x_msg_count,
1885                        x_msg_data);
1886 END force_unlock_model;
1887 ---------------------------------------------------
1888 PROCEDURE force_unlock_model (
1889   p_api_version        IN NUMBER,
1890   p_model_id           IN NUMBER,
1891   p_unlock_references  IN VARCHAR2,
1892   p_init_msg_list      IN VARCHAR2,
1893   p_user_id            IN NUMBER,
1894   p_resp_id            IN NUMBER,
1895   p_appl_id            IN NUMBER,
1896   x_return_status      OUT NOCOPY VARCHAR2,
1897   x_msg_count          OUT NOCOPY NUMBER,
1898   x_msg_data           OUT NOCOPY VARCHAR2
1899 ) IS
1900 BEGIN
1901   fnd_global.apps_initialize (
1902     p_user_id,
1903     p_resp_id,
1904     p_appl_id
1905   );
1906   force_unlock_model (
1907     p_api_version,
1908     p_model_id,
1909     p_unlock_references,
1910     p_init_msg_list,
1911     x_return_status,
1912     x_msg_count,
1913     x_msg_data
1914   );
1915 END force_unlock_model;
1916 ---------------------------------------------------
1917 /*#
1918  * This is the public interface for force unlock operations on a UI content template in Oracle Configurator
1919  * @param p_api_version   Current version of the API is 1.0
1920  * @param p_template_id   Template_id of the template from cz_ui_templates table
1921  * @param p_init_msg_list FND_API.G_TRUE if the API should initialize the FND stack, FND_API.G_FALSE if not.
1922  * @param x_return_status standard FND status. (ex:FND_API.G_RET_STS_SUCCESS )
1923  * @param x_msg_count     number of messages on the stack.
1924  * @param x_msg_data      standard FND OUT parameter for message.  Messages are written to the FND error stack
1925  * @rep:scope public
1926  * @rep:product CZ
1927  * @rep:displayname API for working with force unlock operations on a UI content template
1928  * @rep:lifecycle active
1929  * @rep:compatibility S
1930  * @rep:category BUSINESS_ENTITY CZ_USER_INTERFACE*/
1931 
1932 PROCEDURE force_unlock_template (p_api_version    IN NUMBER,
1933                                  p_template_id    IN NUMBER,
1934                                  p_init_msg_list  IN VARCHAR2,
1935                                  x_return_status OUT NOCOPY VARCHAR2,
1936                                  x_msg_count     OUT NOCOPY NUMBER,
1937                                  x_msg_data      OUT NOCOPY VARCHAR2)
1938 IS
1942                                  p_template_id,
1939 
1940 BEGIN
1941    cz_security_pvt.force_unlock_template (p_api_version,
1943                                  p_init_msg_list,
1944                                  x_return_status,
1945                                  x_msg_count,
1946                                  x_msg_data);
1947 END force_unlock_template;
1948 ---------------------------------------------------
1949 PROCEDURE force_unlock_template (
1950   p_api_version    IN NUMBER,
1951   p_template_id    IN NUMBER,
1952   p_init_msg_list  IN VARCHAR2,
1953   p_user_id        IN NUMBER,
1954   p_resp_id        IN NUMBER,
1955   p_appl_id        IN NUMBER,
1956   x_return_status  OUT NOCOPY VARCHAR2,
1957   x_msg_count      OUT NOCOPY NUMBER,
1958   x_msg_data       OUT NOCOPY VARCHAR2
1959 ) IS
1960 BEGIN
1961   fnd_global.apps_initialize (
1962     p_user_id,
1963     p_resp_id,
1964     p_appl_id
1965   );
1966   force_unlock_template (
1967     p_api_version,
1968     p_template_id,
1969     p_init_msg_list,
1970     x_return_status,
1971     x_msg_count,
1972     x_msg_data
1973   );
1974 END force_unlock_template;
1975 
1976 FUNCTION usage_id_from_usage_name (p_api_version IN  NUMBER
1977                           ,p_usage_name IN VARCHAR2
1978                           ,x_return_status        OUT NOCOPY  VARCHAR2
1979                           ,x_msg_count            OUT NOCOPY  NUMBER
1980                           ,x_msg_data             OUT NOCOPY  VARCHAR2)
1981 RETURN NUMBER
1982 IS
1983   v_usage_id NUMBER;
1984   l_api_version  CONSTANT NUMBER := 1.0;
1985   l_api_name     CONSTANT VARCHAR2(30) := 'usage_id_from_usage_name';
1986 BEGIN
1987   -- standard call to check for call compatibility
1988   IF (NOT FND_API.compatible_api_call(l_api_version
1989                                      ,p_api_version
1990                                      ,l_api_name
1991                                      ,G_PKG_NAME
1992                                      )) THEN
1993     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1994   END IF;
1995     SELECT model_usage_id
1996     INTO  v_usage_id
1997     FROM  CZ_MODEL_USAGES
1998     WHERE  LTRIM(RTRIM(UPPER(CZ_MODEL_USAGES.name))) = LTRIM(RTRIM(UPPER(p_usage_name)))
1999     AND   cz_model_usages.in_use = '1';
2000 
2001     x_return_status := FND_API.G_RET_STS_SUCCESS;
2002     RETURN v_usage_id;
2003 EXCEPTION
2004 WHEN NO_DATA_FOUND THEN
2005       x_return_status:=FND_API.G_RET_STS_ERROR;
2006       FND_MESSAGE.SET_NAME('CZ', 'CZ_USG_NO_USAGE_FOUND');
2007       FND_MSG_PUB.ADD;
2008       fnd_msg_pub.count_and_get(p_count => x_msg_count,
2009       p_data  => x_msg_data);
2010       RETURN NULL;
2011 
2012 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2013      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2014      fnd_msg_pub.count_and_get(p_count => x_msg_count,
2015                               p_data  => x_msg_data);
2016      RETURN NULL;
2017 END usage_id_from_usage_name;
2018 
2019 
2020 
2021 Function usage_id_from_usage_name (
2022   p_api_version          IN  NUMBER,
2023   p_user_id              IN  NUMBER,
2024   p_resp_id              IN  NUMBER,
2025   p_appl_id              IN  NUMBER,
2026   p_usage_name           IN VARCHAR2,
2027   x_return_status        OUT NOCOPY VARCHAR2,
2028   x_msg_count            OUT NOCOPY NUMBER,
2029   x_msg_data             OUT NOCOPY VARCHAR2
2030 )
2031 RETURN NUMBER
2032 IS
2033   v_usage_id NUMBER;
2034 BEGIN
2035   fnd_global.apps_initialize (
2036     p_user_id,
2037     p_resp_id,
2038     p_appl_id
2039   );
2040   v_usage_id:=usage_id_from_usage_name (p_api_version
2041                           ,p_usage_name
2042                           ,x_return_status
2043                           ,x_msg_count
2044                           ,x_msg_data);
2045  RETURN v_usage_id;
2046 END usage_id_from_usage_name;
2047 ------------------------------------------------------------------------------------------------
2048 /*
2049  * Public API for Model Migration.
2050  * @param p_request_id This is the CZ_MODEL_PUBLICATIONS, MIGRATION_GROUP_ID of the migration request.
2051  *                     Migration request is created by Developer and contains the list of all models selected
2052  *                     for Migration from the source's Configurator Repository, target Instance name and
2053  *                     target Repository Folder.
2054  * @param p_userid     Standard parameters required for locking. Represent calling user.
2055  * @param p_respid     Standard parameters required for locking. Represent calling responsibility.
2056  * @param p_applid     Standard parameters required for locking. Represent calling application.
2057  * @param p_run_id     Number identifying the session. If left NULL, the API will generate the number and
2058  *                     return it in x_run_id.
2059  * @param x_run_id     Output parameter containing internally generated session identifier if p_run_id
2060  *                     was NULL, otherwise equal to p_run_id.
2061  */
2062 
2063 PROCEDURE migrate_models(p_api_version IN  NUMBER,
2064                          p_request_id  IN  NUMBER,
2065                          p_user_id     IN  NUMBER,
2066                          p_resp_id     IN  NUMBER,
2067                          p_appl_id     IN  NUMBER,
2068                          p_run_id      IN  NUMBER,
2069                          x_run_id      OUT NOCOPY NUMBER,
2070                          x_status      OUT NOCOPY VARCHAR2
2071                         ) IS
2072 
2073   l_api_name      CONSTANT VARCHAR2(30) := 'migrate_models';
2074   l_api_version   CONSTANT NUMBER := 1.0;
2075   l_errbuf        VARCHAR2(2000);
2076 BEGIN
2077 
2078   IF(NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME))THEN
2079 
2080     RAISE G_INCOMPATIBLE_API;
2081   END IF;
2082 
2083   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);
2084 
2085 EXCEPTION
2086   WHEN G_INCOMPATIBLE_API THEN
2087     x_status := G_STATUS_ERROR;
2088     l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
2089     -- cz_utils.log_report(G_PKG_NAME, l_api_name, null, l_errbuf, fnd_log.LEVEL_ERROR);
2090     INSERT INTO cz_db_logs (message, statuscode, caller, urgency, run_id, logtime)
2091     VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, x_run_id, SYSDATE);
2092     COMMIT;
2093 END;
2094 ---------------------------------------------------------------------------------------
2095 -- added by jonatara:bug6375827
2096 PROCEDURE create_publication_request (
2097    p_api_version       IN NUMBER,
2098    p_model_id          IN NUMBER,
2099    p_ui_def_id         IN NUMBER,
2100    p_publication_mode  IN VARCHAR2,              -- DEFAULT 'P'
2101    p_server_id         IN NUMBER,
2102    p_appl_id_tbl       IN CZ_PB_MGR.t_ref,
2103    p_usg_id_tbl        IN CZ_PB_MGR.t_ref,       -- DEFAULT -1 (ie., 'Any Usage')
2104    p_lang_tbl          IN CZ_PB_MGR.t_lang_code, -- DEFAULT 'US'
2105    p_start_date        IN DATE,                  -- DEFAULT CZ_UTILS.epoch_begin
2106    p_end_date          IN DATE,                  -- DEFAULT CZ_UTILS.CZ_UTILS.epoch_end
2107    x_publication_id    OUT NOCOPY NUMBER,
2108    x_return_status     OUT NOCOPY VARCHAR2,
2109    x_msg_count         OUT NOCOPY NUMBER,
2110    x_msg_data          OUT NOCOPY VARCHAR2
2111  ) IS
2112    l_api_name    CONSTANT VARCHAR2(30) := 'create_publication_request';
2113    l_api_version CONSTANT NUMBER := 1.0;
2114    l_status      VARCHAR2(3);
2115    l_errbuf      VARCHAR2(2000);
2116 
2117  BEGIN
2118 
2119    IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
2120 	 RAISE G_INCOMPATIBLE_API;
2121    END IF;
2122    cz_pb_mgr.create_publication_request(
2123 	 p_model_id,
2124 	 p_ui_def_id,
2125 	 p_publication_mode,
2126 	 p_server_id,
2127 	 p_appl_id_tbl,
2128 	 p_usg_id_tbl,
2129 	 p_lang_tbl,
2130 	 p_start_date,
2131 	 p_end_date,
2132 	 x_publication_id,
2133 	 l_status,
2134 	 x_msg_count,
2135 	 x_msg_data
2136    );
2137    IF l_status = FND_API.G_RET_STS_SUCCESS THEN
2138 	 x_return_status := G_STATUS_SUCCESS;
2139    ELSE
2140 	 x_return_status := G_STATUS_ERROR;
2141    END IF;
2142  EXCEPTION
2143    WHEN G_INCOMPATIBLE_API THEN
2144 	 x_return_status := G_STATUS_ERROR;
2145 	 l_errbuf := CZ_UTILS.GET_TEXT('CZ_MOP_API_VERSION_ERR', 'CODE_VERSION', l_api_version, 'IN_VERSION', p_api_version);
2146 	 INSERT INTO cz_db_logs (message, statuscode, caller, urgency, logtime)
2147 	 VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, SYSDATE);
2148 	 COMMIT;
2149    WHEN OTHERS THEN
2150 	 x_return_status := G_STATUS_ERROR;
2151 	 l_errbuf := SQLERRM;
2152 	 INSERT INTO cz_db_logs (message, statuscode, caller, urgency, logtime)
2153 	 VALUES (l_errbuf, 11276, G_PKG_NAME||'.'||l_api_name, 1, SYSDATE);
2154 	 COMMIT;
2155  END create_publication_request;
2156 
2157  ------------------------------------------------------------------------------------------------
2158  PROCEDURE create_publication_request (
2159    p_api_version       IN NUMBER,
2160    p_model_id          IN NUMBER,
2161    p_ui_def_id         IN NUMBER,
2162    p_publication_mode  IN VARCHAR2,              -- DEFAULT 'P'
2163    p_server_id         IN NUMBER,
2164    p_appl_id_tbl       IN CZ_PB_MGR.t_ref,
2165    p_usg_id_tbl        IN CZ_PB_MGR.t_ref,       -- DEFAULT -1 (ie., 'Any Usage')
2166    p_lang_tbl          IN CZ_PB_MGR.t_lang_code, -- DEFAULT 'US'
2167    p_start_date        IN DATE,                  -- DEFAULT CZ_UTILS.epoch_begin
2168    p_end_date          IN DATE,                  -- DEFAULT CZ_UTILS.CZ_UTILS.epoch_end
2169    p_user_id           IN NUMBER,
2170    p_resp_id           IN NUMBER,
2171    p_appl_id           IN NUMBER,
2172    x_publication_id    OUT NOCOPY NUMBER,
2173    x_return_status     OUT NOCOPY VARCHAR2,
2174    x_msg_count         OUT NOCOPY NUMBER,
2175    x_msg_data          OUT NOCOPY VARCHAR2
2176  ) IS
2177    l_api_name    CONSTANT VARCHAR2(30) := 'create_publication_request';
2178    l_api_version CONSTANT NUMBER := 1.0;
2179    l_status      VARCHAR2(3);
2180    l_errbuf      VARCHAR2(2000);
2181  BEGIN
2182    fnd_global.apps_initialize (p_user_id, p_resp_id, p_appl_id);
2183    create_publication_request (
2184 	 p_api_version,
2185 	 p_model_id,
2186 	 p_ui_def_id,
2187 	 p_publication_mode,
2188 	 p_server_id,
2189 	 p_appl_id_tbl,
2190 	 p_usg_id_tbl,
2191 	 p_lang_tbl,
2192 	 p_start_date,
2193 	 p_end_date,
2194 	 x_publication_id,
2195 	 x_return_status,
2196 	 x_msg_count,
2197 	 x_msg_data
2198    );
2199  END create_publication_request;
2200  ------------------------------------------------------------------------------------------------
2201 END CZ_modelOperations_pub;