DBA Data[Home] [Help]

PACKAGE BODY: APPS.INVPULI4

Source


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;