1 PACKAGE BODY INVPULI4 AS
2 /* $Header: INVPUL4B.pls 120.6.12010000.2 2008/09/23 21:04:35 atjen ship $ */
3
4 /*NP 31AUG94 Note for future release: Have removed reference to all expense accounts
5 **in assign_master_defaults and assign_item_defaults.
6 **We let INVPASGI take care of assigning it if null.
7 **The validation will take place in validation module.
8 **IMPORTANT: Might have to do the same with copy_item, copy_template etc...
9 **This needs some serious thought when we work towards releasing template and
10 **copy item features
11 */
12
13 /*NP 06SEP94: Function assign_status_attributes has been majorly changed to
14 **enforce interdependencies. Now, even though default values might be given to
15 **status attributes in the assign_item_defaults and assign_master_defaults,
16 **they will be changed if necessary to enforce interdependencies
17 **for all status attributes which are under status cntrl or under default
18 **status ctrl
19 */
20
21 -- bug 7137702 : new variables for caching purpose
22 g_item_status_code mtl_item_status.inventory_item_status_code%TYPE;
23 g_attribute_names dbms_sql.varchar2s;
24 g_attribute_values dbms_sql.varchar2s;
25 g_status_control_codes dbms_sql.number_table;
26 g_control_levels dbms_sql.number_table;
27 -- end bug 7137702
28
29 FUNCTION assign_status_attributes(
30 item_id number,
31 org_id number,
32 err_text OUT NOCOPY varchar2,
33 xset_id number DEFAULT -999,
34 p_rowid rowid) RETURN INTEGER IS
35
36 /*NP 06SEP94 Comment: Cursor cc selects the attr_name and value
37 **for those attributes which are under default or under stat control ie. status_control_code = 1 or 2
38 **These are the ones which will be affected by status.NP 06MAY96 Added xset_id logic
39 */
40
41 -- CURSOR cc is
42 CURSOR cc(p_status_code VARCHAR2) is -- bug 7137702
43 select v.attribute_name,
44 v.attribute_value,
45 a.status_control_code,
46 a.control_level
47 from mtl_item_status s,
48 mtl_status_attribute_values v,
49 mtl_item_attributes a
50 -- mtl_system_items_interface m
51 -- where s.inventory_item_status_code = m.inventory_item_status_code
52 -- and m.rowid = p_rowid
53 where s.inventory_item_status_code = p_status_code -- bug 7137702
54 and s.inventory_item_status_code = v.inventory_item_status_code
55 and DECODE(s.disable_date,NULL,SYSDATE + 1,s.disable_date) > SYSDATE
56 and v.attribute_name = a.attribute_name
57 and a.STATUS_CONTROL_CODE in ( 1,2,3 )
58 order by v.attribute_name desc;
59
60
61 CURSOR master_cur is
62 select B.STOCK_ENABLED_FLAG,
63 B.PURCHASING_ENABLED_FLAG,
64 B.CUSTOMER_ORDER_ENABLED_FLAG,
65 B.INTERNAL_ORDER_ENABLED_FLAG,
66 B.MTL_TRANSACTIONS_ENABLED_FLAG,
67 B.BOM_ENABLED_FLAG,
68 B.BUILD_IN_WIP_FLAG,
69 B.INVOICE_ENABLED_FLAG,
70 B.RECIPE_ENABLED_FLAG,
71 B.PROCESS_EXECUTION_ENABLED_FLAG
72 FROM MTL_SYSTEM_ITEMS B
73 ,MTL_PARAMETERS PARAM
74 WHERE B.INVENTORY_ITEM_ID = item_id
75 AND B.ORGANIZATION_ID = PARAM.MASTER_ORGANIZATION_ID
76 AND PARAM.ORGANIZATION_ID = org_id;
77
78 /* Fix for bug 4670905 - Added below cursor to fetch the status attribute values of an exisitng item.*/
79 CURSOR org_cur is
80 select B.STOCK_ENABLED_FLAG,B.PURCHASING_ENABLED_FLAG,
81 B.CUSTOMER_ORDER_ENABLED_FLAG,B.INTERNAL_ORDER_ENABLED_FLAG,
82 B.MTL_TRANSACTIONS_ENABLED_FLAG,B.BOM_ENABLED_FLAG,
83 B.BUILD_IN_WIP_FLAG,B.INVOICE_ENABLED_FLAG,
84 B.RECIPE_ENABLED_FLAG,B.PROCESS_EXECUTION_ENABLED_FLAG
85 from MTL_SYSTEM_ITEMS B
86 where INVENTORY_ITEM_ID = item_id
87 and ORGANIZATION_ID = org_id;
88
89 /*NP 05AUG94 IMPORTANT NOTE: Have put in an order by clause in
90 **cursor cc because in the logic below we need to have the record with the
91 **STOCK_ENABLED_FLAG attribute be processed before the MTL_TRANSACTIONS_ENABLED_FLAG record
92 **since the logic of the latter is depenent on the former
93 */
94
95 AttRec MTL_SYSTEM_ITEMS_INTERFACE%ROWTYPE;
96 master_rec master_cur%ROWTYPE;
97 Master_Org char(1);
98 Master_status_code varchar2(10);
99 l_inv_debug_level NUMBER := INVPUTLI.get_debug_level; --Bug: 4667452
100 /* Fix for bug 4670905 - Added below record variable to hold values fetched by cursor org_rec.*/
101 org_rec org_cur%ROWTYPE;
102
103 cr cc%ROWTYPE; -- bug 7137702
104
105 BEGIN
106
107 IF l_inv_debug_level IN(101, 102) THEN
108 INVPUTLI.info('Inside INVPULI4.assign_status_attributes');
109 END IF;
110
111 SELECT * INTO AttRec
112 FROM MTL_SYSTEM_ITEMS_INTERFACE
113 WHERE ROWID = p_rowid ;
114
115 Master_Org := 'N';
116
117 begin
118 SELECT 'Y' INTO Master_Org
119 FROM MTL_PARAMETERS
120 WHERE ORGANIZATION_ID = master_organization_id
121 AND ORGANIZATION_ID = org_id;
122 EXCEPTION
123 WHEN NO_DATA_FOUND THEN
124 Master_Org := 'N';
125 END;
126
127 IF ((AttRec.INVENTORY_ITEM_STATUS_CODE is not null AND AttRec.TRANSACTION_TYPE = 'UPDATE' )
128 OR ( AttRec.TRANSACTION_TYPE = 'CREATE' ))
129 THEN
130
131 --Start : 6531918 : Fetching outside the attrs loop
132 IF Master_Org ='N' THEN
133 OPEN master_cur;
134 FETCH master_cur INTO master_rec;
135 CLOSE master_cur;
136 END IF;
137
138 IF AttRec.TRANSACTION_TYPE = 'UPDATE' THEN
139 OPEN org_cur;
140 FETCH org_cur INTO org_rec;
141 CLOSE org_cur;
142 END IF;
143 --End : 6531918 : Fetching outside the attrs loop
144
145 -- bug 7137702 : implement caching
146 IF g_item_status_code = AttRec.inventory_item_status_code THEN
147 --
148 -- Found code in cache, nothing needs to be done, required
149 -- data are available in those g_ variables fetched previously.
150 --
151 NULL;
152 ELSE
153 --
154 -- Come here to fetch values if new status code doesn't match
155 -- or if g_item_status_code is null it will still come in here.
156 -- BULK COLLECT is used to fetch all matching values in one shot
157 --
158 OPEN cc(AttRec.inventory_item_status_code);
159 FETCH cc BULK COLLECT INTO
160 g_attribute_names,
161 g_attribute_values,
162 g_status_control_codes,
163 g_control_levels;
164 CLOSE cc;
165 g_item_status_code := AttRec.inventory_item_status_code;
166 END IF;
167 -- end bug 7137702
168
169 -- FOR cr in cc LOOP
170 FOR i IN g_attribute_names.FIRST .. g_attribute_names.LAST LOOP -- bug 7137702
171
172 -- bug 7137702 : populate cr variable with correct data
173 cr.attribute_name := g_attribute_names(i);
174 cr.attribute_value := g_attribute_values(i);
175 cr.status_control_code := g_status_control_codes(i);
176 cr.control_level := g_control_levels(i);
177 -- end bug 7137702
178
179 IF ( cr.attribute_name = 'MTL_SYSTEM_ITEMS.STOCK_ENABLED_FLAG' ) THEN
180 IF ( AttRec.INVENTORY_ITEM_FLAG = 'Y' ) THEN
181 IF(cr.control_level=1) AND (Master_Org ='N') THEN
182 AttRec.STOCK_ENABLED_FLAG := master_rec.STOCK_ENABLED_FLAG;
183 ELSE
184 IF ( cr.status_control_code = 1 ) THEN
185 AttRec.STOCK_ENABLED_FLAG := cr.attribute_value;
186 ELSIF ( cr.status_control_code = 2 ) THEN
187 AttRec.STOCK_ENABLED_FLAG := NVL(AttRec.STOCK_ENABLED_FLAG, cr.attribute_value);
188 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
189 AttRec.STOCK_ENABLED_FLAG := NVL(AttRec.STOCK_ENABLED_FLAG, 'N');
190 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
191 AttRec.STOCK_ENABLED_FLAG := NVL(AttRec.STOCK_ENABLED_FLAG, master_rec.STOCK_ENABLED_FLAG);
192 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
193 AttRec.STOCK_ENABLED_FLAG := NVL(AttRec.STOCK_ENABLED_FLAG, org_rec.STOCK_ENABLED_FLAG );
194 END IF;
195 END IF; -- Master_Org ='N'
196 ELSIF ( AttRec.INVENTORY_ITEM_FLAG = 'N' ) THEN
197 AttRec.STOCK_ENABLED_FLAG := 'N';
198 END IF;
199 END IF;
200
201 IF ( cr.attribute_name = 'MTL_SYSTEM_ITEMS.MTL_TRANSACTIONS_ENABLED_FLAG' ) then
202 IF ( AttRec.STOCK_ENABLED_FLAG = 'Y' ) THEN
203 IF(cr.control_level=1) AND (Master_Org ='N') THEN
204 AttRec.MTL_TRANSACTIONS_ENABLED_FLAG := master_rec.MTL_TRANSACTIONS_ENABLED_FLAG;
205 ELSE
206 IF ( cr.status_control_code = 1 ) THEN
207 AttRec.MTL_TRANSACTIONS_ENABLED_FLAG := cr.attribute_value;
208 ELSIF ( cr.status_control_code = 2 ) THEN
209 AttRec.MTL_TRANSACTIONS_ENABLED_FLAG := NVL(AttRec.MTL_TRANSACTIONS_ENABLED_FLAG, cr.attribute_value);
210 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
211 AttRec.MTL_TRANSACTIONS_ENABLED_FLAG := NVL(AttRec.MTL_TRANSACTIONS_ENABLED_FLAG, 'N');
212 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
213 AttRec.MTL_TRANSACTIONS_ENABLED_FLAG := NVL(AttRec.MTL_TRANSACTIONS_ENABLED_FLAG,master_rec.MTL_TRANSACTIONS_ENABLED_FLAG );
214 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
215 AttRec.MTL_TRANSACTIONS_ENABLED_FLAG := NVL(AttRec.MTL_TRANSACTIONS_ENABLED_FLAG,org_rec.MTL_TRANSACTIONS_ENABLED_FLAG);
216 END IF;
217 END IF;
218 ELSIF ( AttRec.STOCK_ENABLED_FLAG = 'N' ) THEN
219 AttRec.MTL_TRANSACTIONS_ENABLED_FLAG := 'N';
220 END IF;
221 END IF;
222
223 IF cr.attribute_name = 'MTL_SYSTEM_ITEMS.PURCHASING_ENABLED_FLAG' THEN
224 IF AttRec.purchasing_item_flag = 'Y' THEN
225 IF(cr.control_level=1) AND (Master_Org ='N') THEN
226 AttRec.PURCHASING_ENABLED_FLAG := master_rec.PURCHASING_ENABLED_FLAG;
227 ELSE
228 IF ( cr.status_control_code = 1 ) THEN
229 AttRec.PURCHASING_ENABLED_FLAG := cr.attribute_value;
230 ELSIF ( cr.status_control_code = 2 ) THEN
231 AttRec.PURCHASING_ENABLED_FLAG := NVL(AttRec.PURCHASING_ENABLED_FLAG, cr.attribute_value);
232 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
233 AttRec.PURCHASING_ENABLED_FLAG := NVL(AttRec.PURCHASING_ENABLED_FLAG, 'N');
234 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
235 AttRec.PURCHASING_ENABLED_FLAG := NVL(AttRec.PURCHASING_ENABLED_FLAG, master_rec.PURCHASING_ENABLED_FLAG);
236 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
237 AttRec.PURCHASING_ENABLED_FLAG := NVL(AttRec.PURCHASING_ENABLED_FLAG, org_rec.PURCHASING_ENABLED_FLAG );
238 END IF;
239 END IF;
240 ELSIF AttRec.purchasing_item_flag = 'N' THEN
241 AttRec.PURCHASING_ENABLED_FLAG := 'N';
242 END IF;
243 END IF;
244
245 IF cr.attribute_name = 'MTL_SYSTEM_ITEMS.INVOICE_ENABLED_FLAG' THEN
246 IF AttRec.invoiceable_item_flag = 'Y' THEN
247 IF(cr.control_level=1) AND (Master_Org ='N') THEN
248 AttRec.INVOICE_ENABLED_FLAG := master_rec.INVOICE_ENABLED_FLAG;
249 ELSE
250 IF ( cr.status_control_code = 1 ) THEN
251 AttRec.INVOICE_ENABLED_FLAG := cr.attribute_value;
252 ELSIF ( cr.status_control_code = 2 ) THEN
253 AttRec.INVOICE_ENABLED_FLAG := NVL(AttRec.INVOICE_ENABLED_FLAG, cr.attribute_value);
254 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
255 AttRec.INVOICE_ENABLED_FLAG := NVL(AttRec.INVOICE_ENABLED_FLAG, 'N');
256 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
257 AttRec.INVOICE_ENABLED_FLAG := NVL(AttRec.INVOICE_ENABLED_FLAG,master_rec.INVOICE_ENABLED_FLAG);
258 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
259 AttRec.INVOICE_ENABLED_FLAG := NVL(AttRec.INVOICE_ENABLED_FLAG,org_rec.INVOICE_ENABLED_FLAG );
260 END IF;
261 END IF;
262 ELSIF AttRec.invoiceable_item_flag = 'N' THEN
263 AttRec.INVOICE_ENABLED_FLAG := 'N';
264 END IF;
265 END IF;
266
267 IF cr.attribute_name = 'MTL_SYSTEM_ITEMS.BUILD_IN_WIP_FLAG' THEN
268 IF (AttRec.inventory_item_flag = 'Y' and AttRec.bom_item_type = 4) THEN
269 IF(cr.control_level=1) AND (Master_Org ='N') THEN
270 AttRec.BUILD_IN_WIP_FLAG := master_rec.BUILD_IN_WIP_FLAG;
271 ELSE
272 IF ( cr.status_control_code = 1 ) THEN
273 AttRec.BUILD_IN_WIP_FLAG := cr.attribute_value;
274 ELSIF ( cr.status_control_code = 2 ) THEN
275 AttRec.BUILD_IN_WIP_FLAG := NVL(AttRec.BUILD_IN_WIP_FLAG, cr.attribute_value);
276 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
277 AttRec.BUILD_IN_WIP_FLAG := NVL(AttRec.BUILD_IN_WIP_FLAG, 'N');
278 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
279 AttRec.BUILD_IN_WIP_FLAG := NVL(AttRec.BUILD_IN_WIP_FLAG, master_rec.BUILD_IN_WIP_FLAG);
280 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
281 AttRec.BUILD_IN_WIP_FLAG := NVL(AttRec.BUILD_IN_WIP_FLAG, org_rec.BUILD_IN_WIP_FLAG );
282 END IF;
283 END IF;
284 ELSIF (AttRec.inventory_item_flag = 'N' or AttRec.bom_item_type <> 4) THEN
285 AttRec.BUILD_IN_WIP_FLAG := 'N';
289 IF cr.attribute_name = 'MTL_SYSTEM_ITEMS.CUSTOMER_ORDER_ENABLED_FLAG' THEN
286 END IF;
287 END IF;
288
290 IF AttRec.customer_order_flag = 'Y' THEN
291 IF(cr.control_level=1) AND (Master_Org ='N') THEN
292 AttRec.CUSTOMER_ORDER_ENABLED_FLAG := master_rec.CUSTOMER_ORDER_ENABLED_FLAG;
293 ELSE
294 IF ( cr.status_control_code = 1 ) THEN
295 AttRec.CUSTOMER_ORDER_ENABLED_FLAG := cr.attribute_value;
296 ELSIF ( cr.status_control_code = 2 ) THEN
297 AttRec.CUSTOMER_ORDER_ENABLED_FLAG := NVL(AttRec.CUSTOMER_ORDER_ENABLED_FLAG, cr.attribute_value);
298 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
299 AttRec.CUSTOMER_ORDER_ENABLED_FLAG := NVL(AttRec.CUSTOMER_ORDER_ENABLED_FLAG, 'N');
300 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
301 AttRec.CUSTOMER_ORDER_ENABLED_FLAG := NVL(AttRec.CUSTOMER_ORDER_ENABLED_FLAG, master_rec.CUSTOMER_ORDER_ENABLED_FLAG);
302 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
303 AttRec.CUSTOMER_ORDER_ENABLED_FLAG := NVL(AttRec.CUSTOMER_ORDER_ENABLED_FLAG,org_rec.CUSTOMER_ORDER_ENABLED_FLAG);
304 END IF;
305 END IF;
306 ELSIF AttRec.customer_order_flag = 'N' THEN
307 AttRec.CUSTOMER_ORDER_ENABLED_FLAG := 'N';
308 END IF;
309 END IF;
310
311 IF cr.attribute_name = 'MTL_SYSTEM_ITEMS.INTERNAL_ORDER_ENABLED_FLAG' THEN
312 IF AttRec.internal_order_flag = 'Y' THEN
313 IF(cr.control_level=1) AND (Master_Org ='N') THEN
314 AttRec.INTERNAL_ORDER_ENABLED_FLAG := master_rec.INTERNAL_ORDER_ENABLED_FLAG;
315 ELSE
316 IF ( cr.status_control_code = 1 ) THEN
317 AttRec.INTERNAL_ORDER_ENABLED_FLAG := cr.attribute_value;
318 ELSIF ( cr.status_control_code = 2 ) THEN
319 AttRec.INTERNAL_ORDER_ENABLED_FLAG := NVL(AttRec.INTERNAL_ORDER_ENABLED_FLAG, cr.attribute_value);
320 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
321 AttRec.INTERNAL_ORDER_ENABLED_FLAG := NVL(AttRec.INTERNAL_ORDER_ENABLED_FLAG, 'N');
322 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
323 AttRec.INTERNAL_ORDER_ENABLED_FLAG := NVL(AttRec.INTERNAL_ORDER_ENABLED_FLAG, master_rec.INTERNAL_ORDER_ENABLED_FLAG);
324 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
325 AttRec.INTERNAL_ORDER_ENABLED_FLAG := NVL(AttRec.INTERNAL_ORDER_ENABLED_FLAG,org_rec.INTERNAL_ORDER_ENABLED_FLAG );
326 END IF;
327 END IF;
328 ELSIF AttRec.internal_order_flag = 'N' THEN
329 AttRec.INTERNAL_ORDER_ENABLED_FLAG := 'N';
330 END IF;
331 END IF;
332
333 IF cr.attribute_name = 'MTL_SYSTEM_ITEMS.BOM_ENABLED_FLAG' THEN
334 IF(cr.control_level=1) AND (Master_Org ='N') THEN
335 AttRec.BOM_ENABLED_FLAG := master_rec.BOM_ENABLED_FLAG;
336 ELSE
337 IF ( cr.status_control_code = 1 ) THEN
338 AttRec.BOM_ENABLED_FLAG := cr.attribute_value;
339 ELSIF ( cr.status_control_code = 2 ) THEN
340 AttRec.BOM_ENABLED_FLAG := NVL(AttRec.BOM_ENABLED_FLAG, cr.attribute_value);
341 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
342 AttRec.BOM_ENABLED_FLAG := NVL(AttRec.BOM_ENABLED_FLAG, 'N');
343 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
344 AttRec.BOM_ENABLED_FLAG := NVL(AttRec.BOM_ENABLED_FLAG, master_rec.BOM_ENABLED_FLAG);
345 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
346 AttRec.BOM_ENABLED_FLAG := NVL(AttRec.BOM_ENABLED_FLAG,org_rec.BOM_ENABLED_FLAG );
347 END IF;
348 END IF;-- Master_Org ='N'
349 END IF;
350
351 IF ( cr.attribute_name = 'MTL_SYSTEM_ITEMS.RECIPE_ENABLED_FLAG' ) THEN
352 IF(cr.control_level=1) AND (Master_Org ='N') THEN
353 AttRec.RECIPE_ENABLED_FLAG := master_rec.RECIPE_ENABLED_FLAG;
354 ELSE
355 IF ( cr.status_control_code = 1 ) THEN
356 AttRec.RECIPE_ENABLED_FLAG := cr.attribute_value;
357 ELSIF ( cr.status_control_code = 2 ) THEN
358 AttRec.RECIPE_ENABLED_FLAG := NVL(AttRec.RECIPE_ENABLED_FLAG, cr.attribute_value);
359 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
360 AttRec.RECIPE_ENABLED_FLAG := NVL(AttRec.RECIPE_ENABLED_FLAG, 'N');
361 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
362 AttRec.RECIPE_ENABLED_FLAG := NVL(AttRec.RECIPE_ENABLED_FLAG, master_rec.RECIPE_ENABLED_FLAG);
363 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
364 AttRec.RECIPE_ENABLED_FLAG := NVL(AttRec.RECIPE_ENABLED_FLAG,org_rec.RECIPE_ENABLED_FLAG );
365 END IF;
366 END IF;-- Master_Org ='N'
367 END IF;
368
369 IF ( cr.attribute_name = 'MTL_SYSTEM_ITEMS.PROCESS_EXECUTION_ENABLED_FLAG' ) THEN
370 IF ( AttRec.INVENTORY_ITEM_FLAG = 'N' OR
371 AttRec.RECIPE_ENABLED_FLAG = 'N') THEN
372 AttRec.PROCESS_EXECUTION_ENABLED_FLAG := 'N';
373 ELSE
374 IF(cr.control_level=1) AND (Master_Org ='N') THEN
378 AttRec.PROCESS_EXECUTION_ENABLED_FLAG := cr.attribute_value;
375 AttRec.PROCESS_EXECUTION_ENABLED_FLAG := master_rec.PROCESS_EXECUTION_ENABLED_FLAG;
376 ELSE
377 IF ( cr.status_control_code = 1 ) THEN
379 ELSIF ( cr.status_control_code = 2 ) THEN
380 AttRec.PROCESS_EXECUTION_ENABLED_FLAG := NVL(AttRec.PROCESS_EXECUTION_ENABLED_FLAG, cr.attribute_value);
381 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'Y') THEN
382 AttRec.PROCESS_EXECUTION_ENABLED_FLAG := NVL(AttRec.PROCESS_EXECUTION_ENABLED_FLAG, 'N');
383 ELSIF (AttRec.TRANSACTION_TYPE = 'CREATE' and Master_Org = 'N') THEN
384 AttRec.PROCESS_EXECUTION_ENABLED_FLAG := NVL(AttRec.PROCESS_EXECUTION_ENABLED_FLAG, master_rec.PROCESS_EXECUTION_ENABLED_FLAG);
385 ELSIF (AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
386 AttRec.PROCESS_EXECUTION_ENABLED_FLAG := NVL(AttRec.PROCESS_EXECUTION_ENABLED_FLAG,org_rec.PROCESS_EXECUTION_ENABLED_FLAG );
387 END IF;
388 END IF;-- Master_Org ='N'
389 END IF; --Bug: 5349389 INV AND RECIPE FLAG
390 END IF;
391
392 END LOOP;
393
394 update MTL_SYSTEM_ITEMS_INTERFACE
395 set
396 STOCK_ENABLED_FLAG = AttRec.STOCK_ENABLED_FLAG,
397 MTL_TRANSACTIONS_ENABLED_FLAG = AttRec.MTL_TRANSACTIONS_ENABLED_FLAG,
398 PURCHASING_ENABLED_FLAG = AttRec.PURCHASING_ENABLED_FLAG,
399 INVOICE_ENABLED_FLAG = AttRec.INVOICE_ENABLED_FLAG,
400 BUILD_IN_WIP_FLAG = AttRec.BUILD_IN_WIP_FLAG,
401 CUSTOMER_ORDER_ENABLED_FLAG = AttRec.CUSTOMER_ORDER_ENABLED_FLAG,
402 INTERNAL_ORDER_ENABLED_FLAG = AttRec.INTERNAL_ORDER_ENABLED_FLAG,
403 BOM_ENABLED_FLAG = AttRec.BOM_ENABLED_FLAG,
404 RECIPE_ENABLED_FLAG = AttRec.RECIPE_ENABLED_FLAG,
405 PROCESS_EXECUTION_ENABLED_FLAG = AttRec.PROCESS_EXECUTION_ENABLED_FLAG
406 where rowid = p_rowid ;
407 end if ; -- Main end if
408
409 IF (AttRec.INVENTORY_ITEM_STATUS_CODE is null and AttRec.TRANSACTION_TYPE = 'UPDATE') THEN
410 update mtl_system_items_interface
411 set inventory_item_status_code = (select msi.inventory_item_status_code
412 from mtl_system_items msi
413 where msi.inventory_item_id = AttRec.inventory_item_id
414 and msi.organization_id = AttRec.organization_id)
415 where rowid = p_rowid;
416 END IF;
417
418 return(0);
419
420 EXCEPTION
421 WHEN OTHERS THEN
422 err_text := substr('INVPULI4.assign_status_attributes ' || SQLERRM, 1, 240);
423 return(SQLCODE);
424 END assign_status_attributes;
425
426
427 END INVPULI4;