DBA Data[Home] [Help]

PACKAGE BODY: APPS.INV_DIAG_PI_SUBLOC

Source


1 package body INV_DIAG_PI_SUBLOC as
2 /* $Header: INVDA02B.pls 120.0.12000000.1 2007/06/22 00:36:09 musinha noship $ */
3 
4 PROCEDURE init is
5 BEGIN
6 null;
7 END init;
8 
9 PROCEDURE cleanup IS
10 BEGIN
11 -- test writer could insert special cleanup code here
12 NULL;
13 END cleanup;
14 
15 PROCEDURE runtest(inputs IN  JTF_DIAG_INPUTTBL,
16                         report OUT NOCOPY  JTF_DIAG_REPORT,
17                         reportClob OUT NOCOPY  CLOB) IS
18  reportStr   LONG;           -- REPORT
19  sqltxt    VARCHAR2(9999);  -- SQL select statement
20  c_username  VARCHAR2(50);   -- accept input for username
21  statusStr   VARCHAR2(50);   -- SUCCESS or FAILURE
22  errStr      VARCHAR2(4000); -- error message
23  fixInfo     VARCHAR2(4000); -- fix tip
24  isFatal     VARCHAR2(50);   -- TRUE or FALSE
25  dummy_num   NUMBER;
26  l_org_id NUMBER;
27 
28  CURSOR c_inv_loc (cp_n_org_id IN NUMBER) IS
29     select moqd.inventory_item_id,
30            moqd.organization_id,
31            moqd.subinventory_code,
32            moqd.locator_id,
33            moqd.revision,
34            moqd.primary_transaction_quantity,
35            moqd.create_transaction_id,
36 	   moqd.update_transaction_id
37      from mtl_onhand_quantities_detail moqd
38      where moqd.locator_id is not null
39      and   moqd.organization_id = NVL(cp_n_org_id, moqd.organization_id)
40      and   not exists (select 1 from mtl_item_locations mil
41                        where mil.organization_id = moqd.organization_id
42                        and  mil.subinventory_code = moqd.subinventory_code
43                        and  mil.inventory_location_id = moqd.locator_id)
44      and  exists (SELECT 1 FROM MTL_PARAMETERS P,
45                                 MTL_SECONDARY_INVENTORIES S,
46 				MTL_SYSTEM_ITEMS I
47                             WHERE I.INVENTORY_ITEM_ID = moqd.INVENTORY_ITEM_ID
48                             AND S.SECONDARY_INVENTORY_NAME = moqd.SUBINVENTORY_CODE
49                             AND P.ORGANIZATION_ID = moqd.ORGANIZATION_ID
50                             AND I.ORGANIZATION_ID = S.ORGANIZATION_ID
51                             AND P.ORGANIZATION_ID = S.ORGANIZATION_ID
52                             AND P.ORGANIZATION_ID = I.ORGANIZATION_ID AND P.WMS_ENABLED_FLAG = 'N'
53                             AND (decode(P.STOCK_LOCATOR_CONTROL_CODE,
54 			            4,decode(S.LOCATOR_TYPE,5,
55 					I.LOCATION_CONTROL_CODE, S.LOCATOR_TYPE),
56 				P.STOCK_LOCATOR_CONTROL_CODE) IN (2,3) ))
57      ORDER BY  moqd.organization_id, moqd.inventory_item_id, moqd.create_transaction_id, moqd.update_transaction_id, moqd.locator_id;
58 
59   CURSOR c_phy_adj ( cp_n_cre_trx_id IN NUMBER, cp_upd_trx_id IN NUMBER) IS
60     SELECT mmt.physical_adjustment_id
61     FROM   mtl_material_transactions mmt
62     WHERE  (mmt.transaction_id = cp_n_cre_trx_id OR mmt.transaction_id = cp_upd_trx_id)
63     AND    mmt.physical_adjustment_id IS NOT NULL;
64 
65 BEGIN
66   JTF_DIAGNOSTIC_ADAPTUTIL.setUpVars;
67   JTF_DIAGNOSTIC_ADAPTUTIL.addStringToReport('@html');
68   JTF_DIAGNOSTIC_COREAPI.insert_style_sheet;
69 
70   l_org_id := JTF_DIAGNOSTIC_ADAPTUTIL.getInputValue('OrgId',inputs);
71 
72   sqltxt := ' select mif.item_number||''(''||mif.inventory_item_id||'')'' "Item (Id)"' ||
73             ' , moqd.subinventory_code "Subinv"  ' ||
74             ' , moqd.locator_id "Stock Locator"  ' ||
75             ' , moqd.revision "Rev"  ' ||
76             ' , moqd.primary_transaction_quantity "Prim Qty"  ' ||
77             ' , moqd.create_transaction_id "Create txn_id"' ||
78 	    ' , moqd.update_transaction_id "Update trx_id"' ||
79             ' from mtl_onhand_quantities_detail moqd,' ||
80             ' mtl_item_flexfields mif' ||
81             ' where moqd.locator_id is not null ' ;
82   IF l_org_id IS NOT NULL THEN
83      sqltxt := sqltxt || ' AND  moqd.organization_id = ' || l_org_id ;
84   END IF;
85 
86   sqltxt := sqltxt ||  ' and   moqd.inventory_item_id = mif.inventory_item_id(+) ' ||
87                        ' and   not exists (select 1 from mtl_item_locations mil ' ||
88                                            ' where mil.organization_id = moqd.organization_id ' ||
89                                            ' and  mil.subinventory_code = moqd.subinventory_code ' ||
90                                            ' and  mil.inventory_location_id = moqd.locator_id) ' ||
91 	               ' and  exists (SELECT 1' ||
92                                       ' FROM MTL_PARAMETERS P,MTL_SECONDARY_INVENTORIES S,MTL_SYSTEM_ITEMS I ' ||
93                                       ' WHERE I.INVENTORY_ITEM_ID = moqd.INVENTORY_ITEM_ID ' ||
94                                       ' AND S.SECONDARY_INVENTORY_NAME = moqd.SUBINVENTORY_CODE ' ||
95                                       ' AND P.ORGANIZATION_ID = moqd.ORGANIZATION_ID ' ||
96                                       ' AND I.ORGANIZATION_ID = S.ORGANIZATION_ID ' ||
97                                       ' AND P.ORGANIZATION_ID = S.ORGANIZATION_ID ' ||
98                                       ' AND P.ORGANIZATION_ID = I.ORGANIZATION_ID ' ||
99 				      ' AND P.WMS_ENABLED_FLAG = ''N'' ' ||
100                                       ' AND (decode(P.STOCK_LOCATOR_CONTROL_CODE,4,decode(S.LOCATOR_TYPE,5,I.LOCATION_CONTROL_CODE, S.LOCATOR_TYPE), ' ||
101                                       ' P.STOCK_LOCATOR_CONTROL_CODE) IN (2,3) )) ' ||
102 				      ' ORDER BY  moqd.organization_id, moqd.inventory_item_id, moqd.create_transaction_id, moqd.update_transaction_id, moqd.locator_id ';
103 
104   dummy_num:= JTF_DIAGNOSTIC_COREAPI.display_sql(sqltxt, 'Onhand with invalid locators');
105 
106   FOR rec_inv_loc IN c_inv_loc (l_org_id ) LOOP
107 
108       sqltxt := ' SELECT mmt.transaction_id "Txn Id"  ' ||
109                 ' , mif.item_number ||'' (''|| mmt.inventory_item_id ||'')'' "Item (Id)"  ' ||
110                 ' , mmt.transaction_date "Txn Date"  ' ||
111                 ' , mmt.transaction_quantity "Txn Qty"  ' ||
112                 ' , mmt.primary_quantity "Prim Qty"  ' ||
113                 ' , mmt.transaction_uom "Uom"  ' ||
114                 ' , tt.transaction_type_name ||'' (''||mmt.transaction_type_id||'')'' "Txn Type (Id)"  ' ||
115                 ' , ml.meaning || '' ('' ||mmt.transaction_action_id|| '')''  ' ||
116                 ' "Txn Action (Id)"  ' ||
117                 ' , st.transaction_source_type_name ||'' (''|| mmt.transaction_source_type_id ||'')'' "Txn Source Type (Id)"  ' ||
118                 ' , mmt.subinventory_code "Subinv"  ' ||
119                 ' , mmt.locator_id "Stock Locator"  ' ||
120                 ' , mmt.revision "Rev"   ' ||
121                 ' , mmt.physical_adjustment_id "Physical Adj Id"' ||
122                 ' , mmt.transaction_source_id "Txn Source Id"  ' ||
123                 ' , mmt.transaction_source_name "Txn Source"' ||
124                 ' FROM mtl_material_transactions mmt  ' ||
125                 ' , mtl_item_flexfields mif  ' ||
126                 ' , mtl_transaction_types tt  ' ||
127                 ' , mtl_txn_source_types st  ' ||
128                 ' , mfg_lookups ml  ' ||
129                 ' WHERE mmt.organization_id = ' || rec_inv_loc.organization_id  ||
130                 ' AND mmt.transaction_id = ' || rec_inv_loc.create_transaction_id ||
131                 ' AND mmt.inventory_item_id = mif.inventory_item_id(+)  ' ||
132                 ' AND mmt.organization_id = mif.organization_id(+)  ' ||
133                 ' AND mmt.transaction_type_id = tt.transaction_type_id(+)  ' ||
134                 ' AND mmt.transaction_source_type_id = st.transaction_source_type_id(+)  ' ||
135                 ' AND mmt.transaction_action_id=ml.lookup_code  ' ||
136                 ' AND ml.lookup_type = ''MTL_TRANSACTION_ACTION''  ' ||
137                 ' ORDER BY mmt.costed_flag, mmt.transaction_id ';
138 
139          dummy_num:= JTF_DIAGNOSTIC_COREAPI.display_sql(sqltxt, 'Transaction with invalid locator');
140 
141 	 FOR rec_phy_adj IN c_phy_adj (rec_inv_loc.create_transaction_id, rec_inv_loc.update_transaction_id) LOOP
142 
143 	     sqltxt := ' SELECT mpi.physical_inventory_name||''(''||mpi.physical_inventory_id||'')'' "Phy inv name(Id)",' ||
144                        ' mpit.adjustment_id "Phy Adj id",' ||
145                        ' mif.item_number||''(''||mif.inventory_item_id||'')'' "Item (Id)",' ||
146                        ' mpit.subinventory "Subinv",' ||
147                        ' mpit.locator_id "Stock locator"' ||
148                        ' FROM mtl_physical_inventory_tags mpit, mtl_physical_inventories mpi, mtl_item_flexfields mif' ||
149                        ' WHERE mpit.physical_inventory_id = mpi.physical_inventory_id' ||
150                        ' and mpit.adjustment_id = ' || rec_phy_adj.physical_adjustment_id ||
151                        ' AND mpit.inventory_item_id = mif.inventory_item_id(+)' ||
152                        ' and mpit.locator_id is not null and not exists' ||
153                        ' (select 1 from mtl_item_locations mil' ||
154                        ' where mil.organization_id = mpit.organization_id' ||
155                        ' and  mil.subinventory_code = mpit.subinventory' ||
156                        ' and  mil.inventory_location_id = mpit.locator_id) ' ||
157 		       ' ORDER BY mpi.physical_inventory_id ';
158 
159 	     dummy_num:= JTF_DIAGNOSTIC_COREAPI.display_sql(sqltxt, 'Details of Physical Inventory');
160 
161              sqltxt :=  ' SELECT ' ||
162                         ' MPA.ADJUSTMENT_ID,' ||
163                         ' MPA.ORGANIZATION_ID,' ||
164                         ' MPA.PHYSICAL_INVENTORY_ID,' ||
165                         ' MPA.INVENTORY_ITEM_ID,' ||
166                         ' MPA.SUBINVENTORY_NAME,' ||
167                         ' MPA.SYSTEM_QUANTITY,' ||
168                         ' MPA.LAST_UPDATE_DATE,' ||
169                         ' MPA.LAST_UPDATED_BY,' ||
170                         ' MPA.CREATION_DATE,' ||
171                         ' MPA.CREATED_BY,' ||
172                         ' MPA.LAST_UPDATE_LOGIN,' ||
173                         ' MPA.COUNT_QUANTITY,' ||
174                         ' MPA.ADJUSTMENT_QUANTITY,' ||
175                         ' MPA.REVISION,' ||
176                         ' MPA.LOCATOR_ID,' ||
177                         ' MPA.LOT_NUMBER,' ||
178                         ' MPA.LOT_EXPIRATION_DATE,' ||
179                         ' MPA.SERIAL_NUMBER,' ||
180                         ' MPA.ACTUAL_COST,' ||
181                         ' MPA.APPROVAL_STATUS,' ||
182                         ' MPA.APPROVED_BY_EMPLOYEE_ID,' ||
183                         ' MPA.AUTOMATIC_APPROVAL_CODE,' ||
184                         ' MPA.GL_ADJUST_ACCOUNT,' ||
185                         ' MPA.REQUEST_ID,' ||
186                         ' MPA.PROGRAM_APPLICATION_ID,' ||
187                         ' MPA.PROGRAM_ID,' ||
188                         ' MPA.PROGRAM_UPDATE_DATE,' ||
189                         ' MPA.LOT_SERIAL_CONTROLS,' ||
190                         ' MPA.TEMP_APPROVER,' ||
191                         ' MPA.PARENT_LPN_ID,' ||
192                         ' MPA.OUTERMOST_LPN_ID,' ||
193                         ' MPA.COST_GROUP_ID' ||
194                         ' FROM mtl_physical_adjustments mpa' ||
195                         ' WHERE mpa.adjustment_id = ' || rec_phy_adj.physical_adjustment_id ||
196                         ' and  locator_id is not null and not exists' ||
197                         ' (select 1 from mtl_item_locations mil' ||
198                         ' where mil.organization_id = mpa.organization_id' ||
199                         ' and  mil.subinventory_code = mpa.subinventory_name' ||
200                         ' and  mil.inventory_location_id = mpa.locator_id)' ||
201                         ' ORDER BY mpa.physical_inventory_id ' ;
202 
203 	     dummy_num:= JTF_DIAGNOSTIC_COREAPI.display_sql(sqltxt, 'Details of Physical Inventory Adjustments');
204 
205 	 END LOOP;
206 
207   END LOOP;
208 
209 
210   reportStr := 'The test completed as expected';
211   JTF_DIAGNOSTIC_ADAPTUTIL.addStringToReport(reportClob,reportStr);
212   statusStr := 'SUCCESS';
213   report := JTF_DIAGNOSTIC_ADAPTUTIL.constructReport(statusStr,errStr,fixInfo,isFatal);
214   reportClob := JTF_DIAGNOSTIC_ADAPTUTIL.getReportClob;
215 
216 EXCEPTION
217   when others then
218     JTF_DIAGNOSTIC_COREAPI.errorprint('Error: '||sqlerrm);
219     JTF_DIAGNOSTIC_COREAPI.ActionErrorPrint('This is the exception handler');
220     statusStr := 'FAILURE';
221     errStr := sqlerrm ||' occurred in script Exception handled';
222     fixInfo := 'Unexpected Exception in INVDA02B.pls';
223     isFatal := 'FALSE';
224     report := JTF_DIAGNOSTIC_ADAPTUTIL.constructReport(statusStr,errStr,fixInfo,isFatal);
225     reportClob := JTF_DIAGNOSTIC_ADAPTUTIL.getReportClob;
226 END runTest;
227 
228 PROCEDURE getComponentName(name OUT NOCOPY VARCHAR2) IS
229 BEGIN
230 name := 'Accuracy';
231 END getComponentName;
232 
233 PROCEDURE getTestDesc(descStr OUT NOCOPY VARCHAR2) IS
234 BEGIN
235 descStr := 'PI tags SubLoc mismtach';
236 END getTestDesc;
237 
238 PROCEDURE getTestName(name OUT NOCOPY VARCHAR2) IS
239 BEGIN
240 name := 'PI tags SubLoc mismtach';
241 END getTestName;
242 
243 PROCEDURE getDependencies (package_names OUT NOCOPY  JTF_DIAG_DEPENDTBL) IS
244 tempDependencies JTF_DIAG_DEPENDTBL;
245 
246 BEGIN
247     package_names := JTF_DIAGNOSTIC_ADAPTUTIL.initDependencyTable;
248 END getDependencies;
249 
250 PROCEDURE isDependencyPipelined (str OUT NOCOPY  VARCHAR2) IS
251 BEGIN
252   str := 'FALSE';
253 END isDependencyPipelined;
254 
255 
256 PROCEDURE getOutputValues(outputValues OUT NOCOPY  JTF_DIAG_OUTPUTTBL) IS
257   tempOutput JTF_DIAG_OUTPUTTBL;
258 BEGIN
259   tempOutput := JTF_DIAGNOSTIC_ADAPTUTIL.initOutputTable;
260   outputValues := tempOutput;
261 EXCEPTION
262  when others then
263  outputValues := JTF_DIAGNOSTIC_ADAPTUTIL.initOutputTable;
264 END getOutputValues;
265 
266 PROCEDURE getDefaultTestParams(defaultInputValues OUT NOCOPY  JTF_DIAG_INPUTTBL) IS
267 tempInput JTF_DIAG_INPUTTBL;
268 BEGIN
269 tempInput := JTF_DIAGNOSTIC_ADAPTUTIL.initinputtable;
270 tempInput := JTF_DIAGNOSTIC_ADAPTUTIL.addInput(tempInput,'OrgId','LOV-oracle.apps.inv.diag.lov.OrganizationLov');
271 defaultInputValues := tempInput;
272 EXCEPTION
273 when others then
274 defaultInputValues := JTF_DIAGNOSTIC_ADAPTUTIL.initinputtable;
275 END getDefaultTestParams;
276 
277 Function getTestMode return INTEGER IS
278 BEGIN
279  return JTF_DIAGNOSTIC_ADAPTUTIL.ADVANCED_MODE;
280 
281 END getTestMode;
282 
283 END INV_DIAG_PI_SUBLOC;