[Home] [Help]
PACKAGE BODY: APPS.CST_DIAGNOSTICS_PKG
Source
1 PACKAGE BODY CST_DIAGNOSTICS_PKG AS
2 /* $Header: CSTDIAGB.pls 120.0.12000000.3 2007/09/25 00:07:47 anjha noship $ */
3
4 /*---------------------------------------------------------------------------
5 | FUNCTION : TEMP_PO_TAX
6 | DESCRIPTION : Calculates po tax
7 ----------------------------------------------------------------------------*/
8 FUNCTION TEMP_PO_TAX(i_txn_id in number)
9 RETURN NUMBER IS
10
11 l_tax number;
12 BEGIN
13 SELECT nvl((SUM( nvl(pod.nonrecoverable_tax,0))
14 /SUM(pod.quantity_ordered)),0)
15 INTO l_tax
16 FROM po_distributions_all pod,
17 rcv_transactions rt9
18 WHERE RT9.TRANSACTION_ID = i_txn_id
19 AND (
20 ( RT9.PO_DISTRIBUTION_ID IS NOT NULL
21 AND RT9.PO_DISTRIBUTION_ID = POD.PO_DISTRIBUTION_ID )
22 OR
23 ( RT9.PO_DISTRIBUTION_ID IS NULL
24 AND RT9.PO_LINE_LOCATION_ID = POD.LINE_LOCATION_ID)
25 );
26
27 RETURN l_tax;
28 END temp_po_tax;
29
30 /*---------------------------------------------------------------------------
31 | PROCEDURE : TEMP_PO_RATE
32 | DESCRIPTION : Calculates po_rate.
33 ----------------------------------------------------------------------------*/
34
35 FUNCTION TEMP_PO_RATE(i_txn_id in number)
36 RETURN NUMBER IS
37
38 l_rate number;
39
40 BEGIN
41 SELECT
42 SUM(pod.quantity_ordered*nvl(pod.rate,1))/SUM(pod.quantity_ordered)
43 INTO l_rate
44 FROM po_distributions_all pod,
45 rcv_transactions rct,
46 po_headers_all poh
47 WHERE rct.transaction_id = i_txn_id
48 AND pod.po_header_id = poh.po_header_id
49 AND (
50 (RCT.PO_DISTRIBUTION_ID IS NOT NULL
51 AND RCT.PO_DISTRIBUTION_ID = POD.PO_DISTRIBUTION_ID)
52 OR
53 (RCT.PO_DISTRIBUTION_ID IS NULL
54 AND RCT.PO_LINE_LOCATION_ID = POD.LINE_LOCATION_ID)
55 );
56
57 RETURN l_rate;
58 END temp_po_rate;
59
60 /*---------------------------------------------------------------------------
61 | PROCEDURE : Check_Orphaned
62 | DESCRIPTION : Checks the orphaned transactions for a WIP flow schedule
63 | Completion transaction.
64 ----------------------------------------------------------------------------*/
65 PROCEDURE CHECK_ORPHANED
66 (TXN_ID IN NUMBER,
67 L_ORG_ID IN NUMBER) IS
68 L_C_TXN_ID NUMBER:=NULL;
69 L_COSTED_FLAG VARCHAR(2);
70
71 BEGIN
72 SELECT COMPLETION_TRANSACTION_ID
73 INTO L_C_TXN_ID
74 FROM MTL_MATERIAL_TRANSACTIONS
75 WHERE TRANSACTION_ID =TXN_ID
76 AND ORGANIZATION_ID =L_ORG_ID;
77
78 IF L_C_TXN_ID IS NULL
79 THEN
80 INSERT INTO CST_DIAG_TXN_ERRORS (TRANSACTION_ID,
81 ERROR_MESSAGE,RESOLUTION)
82 VALUES(TXN_ID,'COMPLETION TRANSACTION_ID NOT STAMPED.',NULL);
83 ELSE
84 SELECT COSTED_FLAG
85 INTO L_COSTED_FLAG
86 FROM MTL_MATERIAL_TRANSACTIONS
87 WHERE COMPLETION_TRANSACTION_ID = L_C_TXN_ID
88 AND TRANSACTION_SOURCE_TYPE_ID = 5
89 AND TRANSACTION_ACTION_ID NOT IN (1, 27, 33, 34);
90
91 IF ( L_COSTED_FLAG IS NULL) THEN
92 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
93 ERROR_MESSAGE,RESOLUTION)
94 VALUES(TXN_ID,'COMPLETION COSTED-ORPHANED TRANSACTION',NULL);
95 END IF;
96 END IF;
97 EXCEPTION
98 WHEN NO_DATA_FOUND THEN
99 INSERT INTO CST_DIAG_TXN_ERRORS (TRANSACTION_ID,
100 ERROR_MESSAGE,RESOLUTION)
101 VALUES(TXN_ID,'INCORRECT COMPLETION_TRANSACTION_ID',NULL);
102 END;
103
104
105 /*---------------------------------------------------------------------------
106 | PROCEDURE : Get_Stuck_Txn_Info
107 | DESCRIPTION : Checks for the bottle neck transactions for Actual costing
108 | Organizations.
109 ----------------------------------------------------------------------------*/
110 PROCEDURE Get_Stuck_Txn_Info AS
111 CURSOR ALL_ACTUAL_COSTING_ORGS IS
112 SELECT MP.ORGANIZATION_ID
113 FROM MTL_PARAMETERS MP
114 WHERE MP.PRIMARY_COST_METHOD IN (2,5,6);
115 L_MIN_DATE DATE;
116 L_MIN_TXN NUMBER;
117 L_TXN_DATE DATE;
118 L_TXN_ORG NUMBER;
119 L_TXN_TXFR_ORG NUMBER;
120 L_TXN_ACTION_ID NUMBER;
121 L_TXN_SOURCE_TYPE_ID NUMBER;
122 L_TXN_COST NUMBER;
123 L_TXN_SHIPMENT_COSTED VARCHAR2(1);
124 L_TXN_MOVE_TXN_ID NUMBER;
125 L_TXN_COMP_TXN_ID NUMBER;
126 L_TXN_COSTED_FLAG VARCHAR2(1);
127 L_TXN_TXFR_TXN_ID NUMBER;
128 L_LOGICAL_TXN_CRTD NUMBER;
129 BEGIN
130 delete from CST_DIAG_ERRORED_TXNS;
131
132 FOR ORG_REC IN ALL_ACTUAL_COSTING_ORGS LOOP
133 SELECT /*+ INDEX (MMT MTL_MATERIAL_TRANSACTIONS_N10) */
134 TRUNC(NVL(MIN(TRANSACTION_DATE),(SYSDATE+1)))
135 INTO L_MIN_DATE
136 FROM mtl_material_transactions MMT
137 WHERE
138 nvl(parent_transaction_id, transaction_id) = transaction_id
139 AND costed_flag in ('N', 'E')
140 AND
141 (
142 (
143 organization_id = ORG_REC.ORGANIZATION_ID
144 AND
145 (
146 costed_flag = 'E'
147 OR
148 (
149 nvl(logical_transactions_created, 1) = 2
150 OR
151 EXISTS (
152 SELECT null
153 FROM mtl_material_transactions_temp MMTP
154 WHERE MMT.transaction_action_id IN (30, 31)
155 AND MMT.organization_id = MMTP.organization_id
156 AND (MMT.COMPLETION_TRANSACTION_ID = MMTP.COMPLETION_TRANSACTION_ID
157 -- Added for bug 4256685
158 OR MMT.MOVE_TRANSACTION_ID = MMTP.move_transaction_id)
159 UNION ALL
160 SELECT null
161 FROM wip_move_txn_interface WMTI
162 WHERE MMT.transaction_action_id IN (30, 31)
163 AND WMTI.TRANSACTION_ID = MMT.MOVE_TRANSACTION_ID
164 )
165 )
166 OR
167 (
168 costed_flag = 'N'
169 AND
170 (
171 EXISTS (
172 SELECT null
173 FROM mtl_parameters
174 WHERE organization_id = MMT.transfer_organization_id
175 AND primary_cost_method IN (2,5,6)
176 )
177 AND
178 (
179 (
180 transaction_action_id = 3
181 AND primary_quantity > 0
182 AND transaction_cost IS NULL
183 )
184 OR
185 (
186 exists (select null
187 from mtl_interorg_parameters MIP
188 where transaction_action_id = 12
189 AND MIP.to_organization_id = MMT.organization_id
190 AND MIP.from_organization_id = MMT.transfer_organization_id
191 AND NVL(MMT.fob_point,MIP.fob_point) = 2
192 AND shipment_costed IS NULL
193 )
194 )
195 )
196 )
197 )
198 )
199 )
200 OR
201 (
202 transfer_organization_id = ORG_REC.ORGANIZATION_ID
203 AND costed_flag = 'N'
204 AND
205 (
206 exists (select null
207 from mtl_interorg_parameters MIP
208 where transaction_action_id = 21
209 AND MIP.to_organization_id = MMT.transfer_organization_id
210 AND MIP.from_organization_id = MMT.organization_id
211 AND NVL(MMT.fob_point,MIP.fob_point) = 1
212 AND shipment_costed IS NULL
213 AND EXISTS (
214 SELECT null
215 FROM mtl_parameters
216 WHERE organization_id = MMT.organization_id
217 AND primary_cost_method IN (2,5,6)
218 )
219 )
220 OR
221 (
222 EXISTS (
223 SELECT null
224 FROM mtl_parameters
225 WHERE organization_id = MMT.organization_id
226 AND primary_cost_method = 1
227 AND cost_cutoff_date is not null
228 AND MMT.transaction_date >= cost_cutoff_date
229 )
230 AND
231 (
232 transaction_action_id = 3
233 AND primary_quantity < 0
234 )
235 )
236 )
237 )
238 OR
239 (
240 costed_flag = 'N'
241 AND
242 exists (select null
243 from mtl_interorg_parameters MIP
244 where
245 (
246 transaction_action_id = 21
247 AND MIP.to_organization_id = MMT.transfer_organization_id
248 AND MIP.from_organization_id = MMT.organization_id
249 AND NVL(MMT.fob_point,MIP.fob_point) = 1
250 )
251 OR
252 (
253 transaction_action_id = 12
254 AND MIP.to_organization_id = MMT.organization_id
255 AND MIP.from_organization_id = MMT.transfer_organization_id
256 AND NVL(MMT.fob_point,MIP.fob_point) = 2
257 )
258 )
259 AND
260 EXISTS (
261 SELECT null
262 FROM mtl_parameters
263 WHERE
264 primary_cost_method = 1
265 AND cost_cutoff_date is not null
266 AND MMT.transaction_date >= cost_cutoff_date
267 AND
268 (
269 (
270 MMT.organization_id = ORG_REC.ORGANIZATION_ID
271 AND organization_id = MMT.transfer_organization_id
272 )
273 OR
274 (
275 MMT.transfer_organization_id = ORG_REC.ORGANIZATION_ID
276 ANd organization_id = MMT.organization_id
277 )
278 )
279 )
280 )
281 );
282
283
284 SELECT /*+ INDEX (MMT MTL_MATERIAL_TRANSACTIONS_N10) */
285 NVL(MIN(TRANSACTION_ID),-1)
286 INTO L_MIN_TXN
287 FROM mtl_material_transactions MMT
288 WHERE
289 transaction_date < (L_MIN_DATE+1)
290 AND transaction_date >= L_MIN_DATE
291 AND nvl(parent_transaction_id, transaction_id) = transaction_id
292 AND costed_flag in ('N', 'E')
293 AND
294 (
295 (
296 organization_id = ORG_REC.ORGANIZATION_ID
297 AND
298 (
299 costed_flag = 'E'
300 OR
301 (
302 nvl(logical_transactions_created, 1) = 2
303 OR
304 EXISTS (
305 SELECT null
306 FROM mtl_material_transactions_temp MMTP
307 WHERE MMT.transaction_action_id IN (30, 31)
308 AND MMT.organization_id = MMTP.organization_id
309 AND (MMT.COMPLETION_TRANSACTION_ID = MMTP.COMPLETION_TRANSACTION_ID
310 -- Added for bug 4256685
311 OR MMT.MOVE_TRANSACTION_ID = MMTP.move_transaction_id)
312 UNION ALL
313 SELECT null
314 FROM wip_move_txn_interface WMTI
315 WHERE MMT.transaction_action_id IN (30, 31)
316 AND WMTI.TRANSACTION_ID = MMT.MOVE_TRANSACTION_ID
317 )
318 )
319 OR
320 (
321 costed_flag = 'N'
322 AND
323 (
324 EXISTS (
325 SELECT null
326 FROM mtl_parameters
327 WHERE organization_id = MMT.transfer_organization_id
328 AND primary_cost_method IN (2,5,6)
329 )
330 AND
331 (
332 (
333 transaction_action_id = 3
334 AND primary_quantity > 0
335 AND transaction_cost IS NULL
336 )
337 OR
338 (
339 exists (
340 select null
341 from mtl_interorg_parameters MIP
342 where transaction_action_id = 12
343 AND MIP.to_organization_id = MMT.organization_id
344 AND MIP.from_organization_id = MMT.transfer_organization_id
345 AND NVL(MMT.fob_point,MIP.fob_point) = 2
346 AND shipment_costed IS NULL
347 )
348 )
349 )
350 )
351 )
352 )
353 )
354 OR
355 (
356 transfer_organization_id = ORG_REC.ORGANIZATION_ID
357 AND costed_flag = 'N'
358 AND
359 (
360 exists (
361 select null
362 from mtl_interorg_parameters MIP
363 where transaction_action_id = 21
364 AND MIP.to_organization_id = MMT.transfer_organization_id
365 AND MIP.from_organization_id = MMT.organization_id
366 AND NVL(MMT.fob_point,MIP.fob_point) = 1
367 AND shipment_costed IS NULL
368 AND EXISTS (
369 SELECT null
370 FROM mtl_parameters
371 WHERE organization_id = MMT.organization_id
372 AND primary_cost_method IN (2,5,6)
373 )
374 )
375 OR
376 (
377 EXISTS (
378 SELECT null
379 FROM mtl_parameters
380 WHERE organization_id = MMT.organization_id
381 AND primary_cost_method = 1
382 AND cost_cutoff_date is not null
383 AND MMT.transaction_date >= cost_cutoff_date
384 )
385 AND
386 (
387 transaction_action_id = 3
388 AND primary_quantity < 0
389 )
390 )
391 )
392 )
393 OR
394 (
395 costed_flag = 'N'
396 AND
397 exists (
398 select null
399 from mtl_interorg_parameters MIP
400 where
401 (
402 transaction_action_id = 21
403 AND MIP.to_organization_id = MMT.transfer_organization_id
404 AND MIP.from_organization_id = MMT.organization_id
405 AND NVL(MMT.fob_point,MIP.fob_point) = 1
406 )
407 OR
408 (
409 transaction_action_id = 12
410 AND MIP.to_organization_id = MMT.organization_id
411 AND MIP.from_organization_id = MMT.transfer_organization_id
412 AND NVL(MMT.fob_point,MIP.fob_point) = 2
413 )
414 )
415 AND
416 EXISTS (
417 SELECT null
418 FROM mtl_parameters
419 WHERE
420 primary_cost_method = 1
421 AND cost_cutoff_date is not null
422 AND MMT.transaction_date >= cost_cutoff_date
423 AND
424 (
425 (
426 MMT.organization_id = ORG_REC.ORGANIZATION_ID
430 (
427 AND organization_id = MMT.transfer_organization_id
428 )
429 OR
431 MMT.transfer_organization_id = ORG_REC.ORGANIZATION_ID
432 ANd organization_id = MMT.organization_id
433 )
434 )
435 )
436 )
437 );
438
439 IF ( L_MIN_TXN <>-1) THEN
440 SELECT TRANSACTION_DATE,
441 ORGANIZATION_ID,
442 TRANSFER_ORGANIZATION_ID,
443 TRANSFER_TRANSACTION_ID,
444 TRANSACTION_ACTION_ID,
445 TRANSACTION_SOURCE_TYPE_ID,
446 TRANSACTION_COST,
447 SHIPMENT_COSTED,
448 MOVE_TRANSACTION_ID,
449 COMPLETION_TRANSACTION_ID,
450 COSTED_FLAG,
451 nvl(logical_transactions_created, 1)
452 INTO
453 L_TXN_DATE,
454 L_TXN_ORG,
455 L_TXN_TXFR_ORG,
456 L_TXN_TXFR_TXN_ID,
457 L_TXN_ACTION_ID,
458 L_TXN_SOURCE_TYPE_ID,
459 L_TXN_COST,
460 L_TXN_SHIPMENT_COSTED,
461 L_TXN_MOVE_TXN_ID,
462 L_TXN_COMP_TXN_ID,
463 L_TXN_COSTED_FLAG,
464 L_LOGICAL_TXN_CRTD
465 FROM MTL_MATERIAL_TRANSACTIONS
466 WHERE TRANSACTION_ID = L_MIN_TXN;
467
468
469
470 INSERT INTO CST_DIAG_ERRORED_TXNS
471 ( ORGANIZATION_ID,
472 BOTTLE_NECK_TXN_ID,
473 TRANSACTION_DATE,
474 TRANSACTION_ORGANIZATION_ID,
475 TRANSFER_ORGANIZATION_ID,
476 TRANSFER_TRANSACTION_ID,
477 TRANSACTION_ACTION_ID,
478 TRANSACTION_SOURCE_TYPE_ID,
479 TRANSACTION_COST,
480 SHIPMENT_COSTED,
481 MOVE_TRANSACTION_ID,
482 COMPLETION_TRANSACTION_ID,
483 COSTED_FLAG,
484 WAITING_ORGANIZATION_ID,
485 LOGICAL_TXN_CREATED
486 )
487 VALUES ( ORG_REC.ORGANIZATION_ID,
488 L_MIN_TXN,
489 L_TXN_DATE,
490 L_TXN_ORG,
491 L_TXN_TXFR_ORG,
492 L_TXN_TXFR_TXN_ID,
493 L_TXN_ACTION_ID,
494 L_TXN_SOURCE_TYPE_ID,
495 L_TXN_COST,
496 L_TXN_SHIPMENT_COSTED,
497 L_TXN_MOVE_TXN_ID,
498 L_TXN_COMP_TXN_ID,
499 L_TXN_COSTED_FLAG,
500 DECODE(L_TXN_ACTION_ID,
501 21,L_TXN_ORG,
502 3,L_TXN_TXFR_ORG,
503 12,L_TXN_TXFR_ORG,
504 NULL),
505 L_LOGICAL_TXN_CRTD
506 );
507 ELSE
508
509 INSERT INTO CST_DIAG_ERRORED_TXNS
510 ( ORGANIZATION_ID,
511 BOTTLE_NECK_TXN_ID,
512 TRANSACTION_DATE,
513 TRANSACTION_ORGANIZATION_ID,
514 TRANSFER_ORGANIZATION_ID,
515 TRANSFER_TRANSACTION_ID,
516 TRANSACTION_ACTION_ID,
517 TRANSACTION_SOURCE_TYPE_ID,
518 TRANSACTION_COST,
519 SHIPMENT_COSTED,
520 MOVE_TRANSACTION_ID,
521 COMPLETION_TRANSACTION_ID,
522 COSTED_FLAG,
523 WAITING_ORGANIZATION_ID,
524 LOGICAL_TXN_CREATED
525 )
526 VALUES ( ORG_REC.ORGANIZATION_ID,
527 NULL,
528 NULL,
529 NULL,
530 NULL,
531 NULL,
532 NULL,
533 NULL,
534 NULL,
535 NULL,
536 NULL,
537 NULL,
538 NULL,
539 NULL,
540 NULL
541 );
542
543 END IF;
544
545
546 END LOOP;
547 END Get_Stuck_Txn_Info;
548
549 /*---------------------------------------------------------------------------
550 | FUNCTION : Cost_Cutoff_Date
551 | DESCRIPTION : Checks for the Cost Cut-Off date for the organizations
552 | for customers on and above release 11.5.7.
553 ---------------------------------------------------------------------------*/
554
555 FUNCTION COST_CUTOFF_DATE(P_ORG_ID IN NUMBER) RETURN DATE IS
556 P_COST_CUTOFF_DATE DATE;
557 L_RELEASE VARCHAR2(10);
558 BEGIN
559
560 SELECT RELEASE_NAME
561 INTO L_RELEASE
562 FROM FND_PRODUCT_GROUPS;
563
564 IF (L_RELEASE IN ('11.5.7','11.5.8','11.5.9','11.5.10'))
565 THEN
566 SELECT NVL(COST_CUTOFF_DATE,SYSDATE+1)
567 INTO P_COST_CUTOFF_DATE
568 FROM MTL_PARAMETERS
569 WHERE ORGANIZATION_ID = P_ORG_ID;
570 ELSE
571 P_COST_CUTOFF_DATE :=SYSDATE+1;
572 END IF;
573
574 RETURN(P_COST_CUTOFF_DATE);
575 END COST_CUTOFF_DATE;
576
577 /*---------------------------------------------------------------------------
578 | PROCEDURE : Check_Transactions_MMT
579 | DESCRIPTION : Spools the transactions of MMT and checks for
580 | the reason why costing is stuck for the transactions.
581 ---------------------------------------------------------------------------*/
582
583 PROCEDURE Check_Transactions_MMT
584 ( ORGANIZATION_ID NUMBER)
585 AS
586 CURSOR C_UNCOSTED_TRANSACTIONS(ORG_ID NUMBER) IS
587 SELECT TRANSACTION_ID,
588 INVENTORY_ITEM_ID,
589 TRANSACTION_DATE,
590 TRANSACTION_GROUP_ID,
591 TRANSACTION_ACTION_ID,
592 TRANSACTION_SOURCE_TYPE_ID,
593 COMPLETION_TRANSACTION_ID,
594 FLOW_SCHEDULE,
595 ORGANIZATION_ID,
596 TRANSFER_ORGANIZATION_ID,
597 TRANSFER_TRANSACTION_ID,
598 COSTED_FLAG
602
599 FROM MTL_MATERIAL_TRANSACTIONS
600 WHERE ORGANIZATION_ID =ORG_ID
601 AND COSTED_FLAG ='N';
606 L_PRIMARY_COST_METHOD NUMBER;
603 L_MIN_REQUEST_ID NUMBER :=NULL;
604 COST_MANAGER_INACTIVE EXCEPTION;
605 L_ORGANIZATION_ID NUMBER;
607 L_WSM_FLAG VARCHAR2(1);
608 L_COST_CUTOFF_DATE DATE;
609 L_RELEASE VARCHAR2(20);
610 L_TXN_ACTION VARCHAR2(200);
611 L_COSTED_FLAG VARCHAR2(1);
612 L_MIN_TXN_DTE DATE;
613 L_LOT_FLAG NUMBER;
614 NOTE1 VARCHAR2(300);
615 L_TRANSACTION_GROUP_ID NUMBER;
616 L_BOTTLE_NECK_TXN_ID NUMBER;
617 L_TXN_DATE DATE;
618 L_TXN_ORG NUMBER;
619 L_TXN_TXFR_ORG NUMBER;
620 L_TXN_TXFR_TXN_ID NUMBER;
621 L_TXN_ACTION_ID NUMBER;
622 L_TXN_SOURCE_TYPE_ID NUMBER;
623 L_TXN_COST NUMBER;
624 L_TXN_SHIPMENT_COSTED NUMBER;
625 L_TXN_MOVE_TXN_ID NUMBER;
626 L_TXN_COMP_TXN_ID NUMBER;
627 L_TXN_COSTED_FLAG VARCHAR(2);
628 L_WAITING_ORG NUMBER;
629 L_MMTT_COUNT NUMBER;
630 L_TRANSFER_COST NUMBER:=0;
631 L_SHIPMENT_COSTED NUMBER:=0;
632 L_TRF_ORG_CST_METHOD NUMBER:=NULL;
633 L_WMTI_COUNT NUMBER;
634 L_LOGICAL_TXN_CRTD NUMBER;
635
636 BEGIN
637 DELETE FROM CST_DIAG_TXN_ERRORS;
638
639 SELECT MIN(FCR.REQUEST_ID)
640 INTO L_MIN_REQUEST_ID
641 FROM FND_CONCURRENT_REQUESTS FCR
642 WHERE FCR.CONCURRENT_PROGRAM_ID IN
643 (SELECT CONCURRENT_PROGRAM_ID
644 FROM fnd_concurrent_programs
645 WHERE concurrent_program_name ='CMCTCM')
646 AND FCR.PROGRAM_APPLICATION_ID = 702
647 AND FCR.PHASE_CODE <> 'C';
648
649 ----DBMS_OUTPUT.PUT_LINE('CHECKING COST MANAGER ACTIVE');
650 IF ( NVL(L_MIN_REQUEST_ID,0) = 0 )
651 THEN
652 RAISE COST_MANAGER_INACTIVE;
653 END IF;
654
655 L_ORGANIZATION_ID:=ORGANIZATION_ID;
656
657 SELECT PRIMARY_COST_METHOD,
658 NVL(WSM_ENABLED_FLAG,'N')
659 INTO L_PRIMARY_COST_METHOD,
660 L_WSM_FLAG
661 FROM MTL_PARAMETERS
662 WHERE ORGANIZATION_ID = L_ORGANIZATION_ID;
663
664 --DBMS_OUTPUT.PUT_LINE('CHECKING COSTING METHOD: = '|| L_PRIMARY_COST_METHOD || 'WMS FLAG = '|| L_WSM_FLAG );
665
666 L_COST_CUTOFF_DATE :=COST_CUTOFF_DATE(L_ORGANIZATION_ID);
667
668 --DBMS_OUTPUT.PUT_LINE('COST CUT-OFF DATE : = '|| L_COST_CUTOFF_DATE);
669
670 --DBMS_OUTPUT.PUT_LINE('DELETE TEMP TABLE!!!');
671
672 --DELETE FROM CST_DIAG_TXN_ERRORS;
673
674
675 IF (L_PRIMARY_COST_METHOD =1)
676 THEN
677
678 --DBMS_OUTPUT.PUT_LINE('STANDARD COSTING NON WSM ENABLED ORGANIZATION');
679
680 FOR ITEM_REC IN C_UNCOSTED_TRANSACTIONS(L_ORGANIZATION_ID) LOOP
681
682 /* get transfer_org costing method only if TRANSFER_ORGANIZATION_ID is not null */
683 IF (ITEM_REC.TRANSFER_ORGANIZATION_ID is not null) THEN
684 SELECT PRIMARY_COST_METHOD
685 INTO L_TRF_ORG_CST_METHOD
686 FROM MTL_PARAMETERS
687 WHERE ORGANIZATION_ID = ITEM_REC.TRANSFER_ORGANIZATION_ID;
688 END IF;
689
690 --DBMS_OUTPUT.PUT_LINE('TXN DATE :='||ITEM_REC.TRANSACTION_DATE);
691
692 IF( ITEM_REC.TRANSACTION_GROUP_ID IS NOT NULL AND ITEM_REC.COSTED_FLAG ='N') THEN
693 --DBMS_OUTPUT.PUT_LINE('TRANSACTION_GROUP_ID IS NOT NULL FOR TRANSACTION WITH COSTED FLAG N');
694 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
695 ERROR_MESSAGE,RESOLUTION)
696 VALUES(ITEM_REC.TRANSACTION_ID,'TRANSACTION_GROUP_ID NOT NULL',NULL);
697
698 ELSIF ( ITEM_REC.TRANSACTION_DATE >L_COST_CUTOFF_DATE) THEN
699
700 --DBMS_OUTPUT.PUT_LINE('COST CUTT OFF DATE CHECK');
701 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
702 ERROR_MESSAGE,RESOLUTION)
703 VALUES(ITEM_REC.TRANSACTION_ID,'TXN DATE IS LATER THEN COST CUTOFF DATE FOR ORG',NULL);
704 ELSIF /* A */
705 ( ITEM_REC.TRANSACTION_ACTION_ID IN (1, 27, 33, 34)
706 AND ITEM_REC.TRANSACTION_SOURCE_TYPE_ID =5
707 AND ITEM_REC.FLOW_SCHEDULE ='Y' ) THEN
708 --DBMS_OUTPUT.PUT_LINE('ORPHAN CHECK');
709 CHECK_ORPHANED(ITEM_REC.TRANSACTION_ID,L_ORGANIZATION_ID);
710 ELSIF /* B */
711 ( ITEM_REC.TRANSACTION_ACTION_ID NOT IN (2,28,3,55,5)
712 AND ITEM_REC.TRANSFER_TRANSACTION_ID IS NOT NULL ) THEN
713 --DBMS_OUTPUT.PUT_LINE('TRANSFER TRANSACTION_ID CHECK');
714 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
715 ERROR_MESSAGE,RESOLUTION)
716 VALUES(ITEM_REC.TRANSACTION_ID,'INCORRECT TRANSFER_TRANSACTION_ID',NULL);
717 ELSIF /* C */
718 ( ITEM_REC.TRANSACTION_ACTION_ID IN (3,21,12) AND NVL(L_TRF_ORG_CST_METHOD,1) <>1 ) THEN
719 --DBMS_OUTPUT.PUT_LINE('RUN CHECKS FOR TRANSFER ORGANIZATION_ID '|| ITEM_REC.TRANSFER_ORGANIZATION_ID);
720 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
721 ERROR_MESSAGE,RESOLUTION)
722 VALUES(NULL,'RUN CHECKS FOR TRANSFER ORGANIZATION_ID '|| ITEM_REC.TRANSFER_ORGANIZATION_ID,NULL);
723
724 ELSIF /* F Only if WSM is enabled */
725 (L_WSM_FLAG ='Y' AND ITEM_REC.TRANSACTION_SOURCE_TYPE_ID =5) THEN
726
727 SELECT MIN(TXN_DT)
728 INTO L_MIN_TXN_DTE
729 FROM
730 ( SELECT MIN(TRANSACTION_DATE) TXN_DT
731 FROM WIP_COST_TXN_INTERFACE WCTI
732 WHERE WCTI.ORGANIZATION_ID = L_ORGANIZATION_ID
733 AND WCTI.ENTITY_TYPE = 5
734 AND WCTI.PROCESS_STATUS = 3
735 UNION
736 SELECT MIN(TRANSACTION_DATE)
737 FROM MTL_MATERIAL_TRANSACTIONS MMT
738 WHERE MMT.TRANSACTION_SOURCE_TYPE_ID = 5
739 AND MMT.ORGANIZATION_ID = L_ORGANIZATION_ID
740 AND MMT.COSTED_FLAG = 'E'
741 AND EXISTS (SELECT 1
742 FROM WIP_ENTITIES WE
743 WHERE WE.WIP_ENTITY_ID = MMT.TRANSACTION_SOURCE_ID
747 INTO L_LOT_FLAG
744 AND WE.ORGANIZATION_ID = MMT.ORGANIZATION_ID
745 AND WE.ENTITY_TYPE = 5));
746 SELECT 1
748 FROM MTL_MATERIAL_TRANSACTIONS MMT,
749 WIP_ENTITIES WE
750 WHERE MMT.TRANSACTION_ID =ITEM_REC.TRANSACTION_ID
751 AND MMT.TRANSACTION_SOURCE_TYPE_ID = 5
752 AND WE.WIP_ENTITY_ID = MMT.TRANSACTION_SOURCE_ID
753 AND WE.ORGANIZATION_ID = MMT.ORGANIZATION_ID
754 AND WE.ENTITY_TYPE = 5;
755
756 IF ( L_LOT_FLAG =1 AND ITEM_REC.TRANSACTION_DATE < L_MIN_TXN_DTE ) THEN
757 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
758 ERROR_MESSAGE,RESOLUTION)
759 VALUES(ITEM_REC.TRANSACTION_ID,'ERRORED RECORDS IN MMT/WCTI FOR LOT BASED JOB',NULL);
760 END IF;
761
762 ELSIF( C_UNCOSTED_TRANSACTIONS%ROWCOUNT >0) THEN
763 --DBMS_OUTPUT.PUT_LINE('REPORT COSTING BUG');
764 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
765 ERROR_MESSAGE,RESOLUTION)
766 VALUES(ITEM_REC.TRANSACTION_ID,'REPORT A BUG WITH COSTING DEVELOPMENT',NULL);
767 ELSE
768 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
769 ERROR_MESSAGE,RESOLUTION)
770 VALUES(NULL,'NO UNCOSTED TRANSACTIONS FOUND!!',NULL);
771 END IF;
772 END LOOP;
773
774 END IF;
775
776
777 IF (L_PRIMARY_COST_METHOD <>1) /* ACTUAL COSTING ORGANIZATIONS*/
778 THEN
779 --DBMS_OUTPUT.PUT_LINE('ACTUAL COSTING ORGANIZATIONS');
780 Get_Stuck_Txn_Info();
781
782 SELECT BOTTLE_NECK_TXN_ID,
783 TRANSACTION_DATE,
784 TRANSACTION_ORGANIZATION_ID,
785 TRANSFER_ORGANIZATION_ID,
786 TRANSFER_TRANSACTION_ID,
787 TRANSACTION_ACTION_ID,
788 TRANSACTION_SOURCE_TYPE_ID,
789 TRANSACTION_COST,
790 SHIPMENT_COSTED,
791 MOVE_TRANSACTION_ID,
792 COMPLETION_TRANSACTION_ID,
793 COSTED_FLAG,
794 WAITING_ORGANIZATION_ID,
795 LOGICAL_TXN_CREATED
796 INTO
797 L_BOTTLE_NECK_TXN_ID,
798 L_TXN_DATE ,
799 L_TXN_ORG ,
800 L_TXN_TXFR_ORG ,
801 L_TXN_TXFR_TXN_ID ,
802 L_TXN_ACTION_ID ,
803 L_TXN_SOURCE_TYPE_ID,
804 L_TXN_COST ,
805 L_TXN_SHIPMENT_COSTED,
806 L_TXN_MOVE_TXN_ID ,
807 L_TXN_COMP_TXN_ID ,
808 L_TXN_COSTED_FLAG ,
809 L_WAITING_ORG ,
810 L_LOGICAL_TXN_CRTD
811 FROM CST_DIAG_ERRORED_TXNS
812 WHERE ORGANIZATION_ID =L_ORGANIZATION_ID;
813
814 --DBMS_OUTPUT.PUT_LINE('TXN DATE :='||L_TXN_DATE);
815
816 IF (L_TXN_DATE >L_COST_CUTOFF_DATE)
817 THEN
818 --DBMS_OUTPUT.PUT_LINE('COST CUTT OFF DATE CHECK');
819 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
820 ERROR_MESSAGE,RESOLUTION)
821 VALUES(L_BOTTLE_NECK_TXN_ID,'TXN DATE IS LATER THEN COST CUTOFF DATE FOR ORG',NULL);
822 ELSIF (L_LOGICAL_TXN_CRTD = 2) THEN
823 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
824 ERROR_MESSAGE,RESOLUTION)
825 VALUES(L_BOTTLE_NECK_TXN_ID,'LOGICAL TRANSACTIONS FOR THIS TRANSACTION HAVE NOT BEEN CREATED',NULL);
826
827 ELSIF /* A - CHECK MMTT FOR BACK FLUSH TRANSACTIONS*/
828 ( L_TXN_SOURCE_TYPE_ID =5 ) THEN
829
830 SELECT COUNT(MMTT.COMPLETION_TRANSACTION_ID)
831 INTO L_MMTT_COUNT
832 FROM MTL_MATERIAL_TRANSACTIONS_TEMP MMTT,
833 CST_DIAG_ERRORED_TXNS SC
834 WHERE SC.ORGANIZATION_ID = L_ORGANIZATION_ID
835 AND SC.TRANSACTION_SOURCE_TYPE_ID = 5
836 AND MMTT.ORGANIZATION_ID = SC.ORGANIZATION_ID
837 AND (MMTT.COMPLETION_TRANSACTION_ID = SC.COMPLETION_TRANSACTION_ID
838 OR MMTT.MOVE_TRANSACTION_ID = SC.MOVE_TRANSACTION_ID);
839
840 IF (L_MMTT_COUNT > 0) THEN
841 --DBMS_OUTPUT.PUT_LINE('TRANSACTIONS STUCK IN MMTT');
842 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
843 ERROR_MESSAGE,RESOLUTION)
844 VALUES(L_BOTTLE_NECK_TXN_ID,L_MMTT_COUNT||' TRANSACTIONS ARE STUCK IN MMTT, CLEAR THEM BEFORE PROCEDDING',NULL);
845 END IF;
846
847 SELECT COUNT(1)
848 INTO L_WMTI_COUNT
849 FROM WIP_MOVE_TXN_INTERFACE WMTI
850 WHERE WMTI.TRANSACTION_ID = L_TXN_MOVE_TXN_ID ;
851 IF (L_WMTI_COUNT > 0) THEN
852
853 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
854 ERROR_MESSAGE,RESOLUTION)
855 VALUES(L_BOTTLE_NECK_TXN_ID,L_WMTI_COUNT||' TRANSACTIONS ARE STUCK IN WMTI, CLEAR THEM BEFORE PROCEDDING',NULL);
856 END IF;
857
858 ELSIF /* B - CHECK TRANSFER COST */
859 ( L_TXN_ACTION_ID =3 ) THEN
860 SELECT 1
861 INTO L_TRANSFER_COST
862 FROM CST_DIAG_ERRORED_TXNS SC
863 WHERE SC.BOTTLE_NECK_TXN_ID IS NOT NULL
864 AND SC.TRANSACTION_ACTION_ID = 3
865 AND SC.TRANSACTION_COST IS NULL
866 AND EXISTS ( SELECT 'X'
867 FROM MTL_MATERIAL_TRANSACTIONS MMT
868 WHERE MMT.TRANSACTION_ID = SC.TRANSFER_TRANSACTION_ID
869 AND MMT.COSTED_FLAG IS NULL
870 )
871 AND SC.ORGANIZATION_ID = L_ORGANIZATION_ID;
872
873 IF (L_TRANSFER_COST IS NOT NULL )
874 THEN
875 --DBMS_OUTPUT.PUT_LINE('TRANSFER COST IS NULL FOR DIRECT INTER_ORG TRANSFERS');
876 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
877 ERROR_MESSAGE,RESOLUTION)
878 VALUES(L_BOTTLE_NECK_TXN_ID,'TRANSFER COST IS NULL FOR DIRECT INTER_ORG TRANSFERS',NULL);
879 END IF;
880 ELSIF /* C - INTER ORGS */
881 ( L_TXN_ACTION_ID IN (12,22) ) THEN
882
883 SELECT 1
884 INTO L_SHIPMENT_COSTED
885 FROM CST_DIAG_ERRORED_TXNS SC
886 WHERE SC.TRANSACTION_ACTION_ID IN (12,21)
890 WHERE MCTCD.TRANSACTION_ID = SC.BOTTLE_NECK_TXN_ID
887 AND SC.SHIPMENT_COSTED IS NULL
888 AND EXISTS ( SELECT 'X'
889 FROM MTL_CST_TXN_COST_DETAILS MCTCD
891 AND MCTCD.ORGANIZATION_ID = SC.ORGANIZATION_ID
892 )
893 AND SC.BOTTLE_NECK_TXN_ID IS NOT NULL
894 AND SC.ORGANIZATION_ID = L_ORGANIZATION_ID;
895
896 IF (L_SHIPMENT_COSTED IS NOT NULL )
897 THEN
898 --DBMS_OUTPUT.PUT_LINE('THE SHIPMENT COSTED SHOULD BE Y');
899 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
900 ERROR_MESSAGE,RESOLUTION)
901 VALUES(L_BOTTLE_NECK_TXN_ID,'THE SHIPMENT COSTED SHOULD BE Y',NULL);
902 END IF;
903
904 ELSIF /* D - ERRORED TRANSACTION */
905 ( L_TXN_COSTED_FLAG ='E' ) THEN
906 --DBMS_OUTPUT.PUT_LINE('THE TRANSACTION ERRORED');
907 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
908 ERROR_MESSAGE,RESOLUTION)
909 VALUES(L_BOTTLE_NECK_TXN_ID,'TRANSACTION ERRORED NEEDS TO BE RESOLVED',NULL);
910 ELSIF ( L_TXN_ACTION_ID IN (3,21,12)) THEN
911 --DBMS_OUTPUT.PUT_LINE('RUN CHECKS FOR TRANSFER ORGANIZATION_ID '|| L_TXN_TXFR_ORG);
912 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
913 ERROR_MESSAGE,RESOLUTION)
914 VALUES(NULL,'RUN CHECKS FOR TRANSFER ORGANIZATION_ID '|| L_TXN_TXFR_TXN_ID,NULL);
915 ELSIF(L_BOTTLE_NECK_TXN_ID is NOT NULL) THEN
916 --DBMS_OUTPUT.PUT_LINE('REPORT COSTING BUG');
917 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
918 ERROR_MESSAGE,RESOLUTION)
919 VALUES(L_BOTTLE_NECK_TXN_ID,'REPORT A BUG WITH COSTING DEVELOPMENT',NULL);
920 ELSE
921 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
922 ERROR_MESSAGE,RESOLUTION)
923 VALUES(NULL,'NO UNCOSTED TRANSACTIONS FOUND!!',NULL);
924
925 END IF;
926 END IF;
927
928 EXCEPTION
929 WHEN COST_MANAGER_INACTIVE THEN
930 INSERT INTO CST_DIAG_TXN_ERRORS(TRANSACTION_ID,
931 ERROR_MESSAGE,RESOLUTION)
932 VALUES(NULL,'COST MANAGER IS INACTIVE','LAUNCH THE COST MANAGER TO GET THE TRANSACTIONS COSTED');
933 END Check_Transactions_MMT;
934
935 END CST_DIAGNOSTICS_PKG;