137: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
138:
139: p_count_of_errored := sql%rowcount;
140:
141: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
142: fnd_message.set_token('ENTITY1', 'ORGANIZATION_ID');
143: fnd_message.set_token('ENTITY2', 'ORGANIZATION_CODE');
144: add_error(p_txn_ids => enums,
145: p_err_col => 'ORGANIZATION_ID/CODE',
138:
139: p_count_of_errored := sql%rowcount;
140:
141: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
142: fnd_message.set_token('ENTITY1', 'ORGANIZATION_ID');
143: fnd_message.set_token('ENTITY2', 'ORGANIZATION_CODE');
144: add_error(p_txn_ids => enums,
145: p_err_col => 'ORGANIZATION_ID/CODE',
146: p_err_msg => fnd_message.get);
139: p_count_of_errored := sql%rowcount;
140:
141: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
142: fnd_message.set_token('ENTITY1', 'ORGANIZATION_ID');
143: fnd_message.set_token('ENTITY2', 'ORGANIZATION_CODE');
144: add_error(p_txn_ids => enums,
145: p_err_col => 'ORGANIZATION_ID/CODE',
146: p_err_msg => fnd_message.get);
147:
142: fnd_message.set_token('ENTITY1', 'ORGANIZATION_ID');
143: fnd_message.set_token('ENTITY2', 'ORGANIZATION_CODE');
144: add_error(p_txn_ids => enums,
145: p_err_col => 'ORGANIZATION_ID/CODE',
146: p_err_msg => fnd_message.get);
147:
148: load_errors;
149:
150: END organization_id;
211: )
212: ))
213: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
214:
215: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
216: fnd_message.set_token('ENTITY', 'WIP_ENTITY_ID - WIP_ENTITY_NAME');
217: add_error(p_txn_ids => enums,
218: p_err_col => 'WIP_ENTITY_ID/NAME',
219: p_err_msg => fnd_message.get);
212: ))
213: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
214:
215: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
216: fnd_message.set_token('ENTITY', 'WIP_ENTITY_ID - WIP_ENTITY_NAME');
217: add_error(p_txn_ids => enums,
218: p_err_col => 'WIP_ENTITY_ID/NAME',
219: p_err_msg => fnd_message.get);
220:
215: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
216: fnd_message.set_token('ENTITY', 'WIP_ENTITY_ID - WIP_ENTITY_NAME');
217: add_error(p_txn_ids => enums,
218: p_err_col => 'WIP_ENTITY_ID/NAME',
219: p_err_msg => fnd_message.get);
220:
221: -- Derive ENTITY_TYPE and PRIMARY_ITEM_ID from WIP_ENTITY_ID
222: UPDATE wip_move_txn_interface wmti
223: SET (wmti.entity_type, wmti.primary_item_id) =
239: AND wmti.process_status = WIP_CONSTANTS.RUNNING
240: AND wmti.primary_item_id IS NULL
241: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
242:
243: fnd_message.set_name('WIP', 'WIP_NO_ASSY_NO_TXN');
244: add_error(p_txn_ids => enums,
245: p_err_col => 'WIP_ENTITY_ID/NAME',
246: p_err_msg => fnd_message.get);
247:
242:
243: fnd_message.set_name('WIP', 'WIP_NO_ASSY_NO_TXN');
244: add_error(p_txn_ids => enums,
245: p_err_col => 'WIP_ENTITY_ID/NAME',
246: p_err_msg => fnd_message.get);
247:
248: /************************
249: * Start Repetitive Check
250: ************************/
285: )
286: ))
287: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
288:
289: fnd_message.set_name('WIP', 'WIP_INVALID_LINE');
290: add_error(p_txn_ids => enums,
291: p_err_col => 'LINE_ID/CODE',
292: p_err_msg => fnd_message.get);
293:
288:
289: fnd_message.set_name('WIP', 'WIP_INVALID_LINE');
290: add_error(p_txn_ids => enums,
291: p_err_col => 'LINE_ID/CODE',
292: p_err_msg => fnd_message.get);
293:
294: -- derive the first transactable schedule if REPETITIVE_SCHEDULE_ID is null
295: UPDATE wip_move_txn_interface wmti
296: SET wmti.repetitive_schedule_id =
327: AND wmti.entity_type = WIP_CONSTANTS.REPETITIVE
328: AND wmti.repetitive_schedule_id IS NULL
329: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
330:
331: fnd_message.set_name('WIP', 'WIP_INVALID_LINE');
332: add_error(p_txn_ids => enums,
333: p_err_col => 'LINE_ID/CODE',
334: p_err_msg => fnd_message.get);
335:
330:
331: fnd_message.set_name('WIP', 'WIP_INVALID_LINE');
332: add_error(p_txn_ids => enums,
333: p_err_col => 'LINE_ID/CODE',
334: p_err_msg => fnd_message.get);
335:
336: /************************
337: * End Repetitive Check
338: ************************/
354: wmti.line_code IS NOT NULL OR
355: wmti.repetitive_schedule_id IS NOT NULL)
356: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
357:
358: fnd_message.set_name('WIP', 'WIP_NULL_LINE_ID');
359: add_error(p_txn_ids => enums,
360: p_err_col => 'WIP_ENTITY_ID/NAME',
361: p_err_msg => fnd_message.get);
362:
357:
358: fnd_message.set_name('WIP', 'WIP_NULL_LINE_ID');
359: add_error(p_txn_ids => enums,
360: p_err_col => 'WIP_ENTITY_ID/NAME',
361: p_err_msg => fnd_message.get);
362:
363: /************************
364: * End Discrete Check
365: ************************/
391: AND wdj.status_type IN (WIP_CONSTANTS.RELEASED,
392: WIP_CONSTANTS.COMP_CHRG))))
393: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
394:
395: fnd_message.set_name('WIP', 'WIP_NO_CHARGES_ALLOWED');
396: add_error(p_txn_ids => enums,
397: p_err_col => 'WIP_ENTITY_ID/NAME',
398: p_err_msg => fnd_message.get);
399:
394:
395: fnd_message.set_name('WIP', 'WIP_NO_CHARGES_ALLOWED');
396: add_error(p_txn_ids => enums,
397: p_err_col => 'WIP_ENTITY_ID/NAME',
398: p_err_msg => fnd_message.get);
399:
400: -- reset enums table
401: enums.delete;
402: -- If job/schedule specified has no routing, error out
413: AND NVL(wo.repetitive_schedule_id, -1) =
414: NVL(wmti.repetitive_schedule_id, -1))
415: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
416:
417: fnd_message.set_name('WIP', 'WIP_ROUTING_NOT_FOUND');
418: fnd_message.set_token('ROUTINE', 'for Job/Schedule specified');
419: add_error(p_txn_ids => enums,
420: p_err_col => 'WIP_ENTITY_ID/NAME',
421: p_err_msg => fnd_message.get);
414: NVL(wmti.repetitive_schedule_id, -1))
415: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
416:
417: fnd_message.set_name('WIP', 'WIP_ROUTING_NOT_FOUND');
418: fnd_message.set_token('ROUTINE', 'for Job/Schedule specified');
419: add_error(p_txn_ids => enums,
420: p_err_col => 'WIP_ENTITY_ID/NAME',
421: p_err_msg => fnd_message.get);
422:
417: fnd_message.set_name('WIP', 'WIP_ROUTING_NOT_FOUND');
418: fnd_message.set_token('ROUTINE', 'for Job/Schedule specified');
419: add_error(p_txn_ids => enums,
420: p_err_col => 'WIP_ENTITY_ID/NAME',
421: p_err_msg => fnd_message.get);
422:
423: END wip_entity_id;
424:
425: -- validate transaction_type. If the callers did not provide this info,
452: WIP_CONSTANTS.COMP_TXN,
453: WIP_CONSTANTS.RET_TXN)
454: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
455:
456: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
457: fnd_message.set_token('ENTITY', 'TRANSACTION_TYPE');
458: add_error(p_txn_ids => enums,
459: p_err_col => 'TRANSACTION_TYPE',
460: p_err_msg => fnd_message.get);
453: WIP_CONSTANTS.RET_TXN)
454: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
455:
456: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
457: fnd_message.set_token('ENTITY', 'TRANSACTION_TYPE');
458: add_error(p_txn_ids => enums,
459: p_err_col => 'TRANSACTION_TYPE',
460: p_err_msg => fnd_message.get);
461:
456: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
457: fnd_message.set_token('ENTITY', 'TRANSACTION_TYPE');
458: add_error(p_txn_ids => enums,
459: p_err_col => 'TRANSACTION_TYPE',
460: p_err_msg => fnd_message.get);
461:
462: -- reset enums table
463: enums.delete;
464: -- Error out if easy completion/return and the assembly is under serial
482: AND msi.serial_number_control_code IN (WIP_CONSTANTS.FULL_SN,
483: WIP_CONSTANTS.DYN_RCV_SN))
484: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
485:
486: fnd_message.set_name('WIP', 'WIP_EZ_NO_SERIAL_CONTROL2');
487: add_error(p_txn_ids => enums,
488: p_err_col => 'TRANSACTION_TYPE',
489: p_err_msg => fnd_message.get);
490:
485:
486: fnd_message.set_name('WIP', 'WIP_EZ_NO_SERIAL_CONTROL2');
487: add_error(p_txn_ids => enums,
488: p_err_col => 'TRANSACTION_TYPE',
489: p_err_msg => fnd_message.get);
490:
491: -- reset enums table
492: enums.delete;
493: -- Error out if easy completion/return and no default completion subinventory
517: AND wdj.organization_id = wmti.organization_id
518: AND wdj.completion_subinventory IS NULL)))
519: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
520:
521: fnd_message.set_name('WIP', 'WIP_EZ_NO_SUBINV_DEFAULT2');
522: add_error(p_txn_ids => enums,
523: p_err_col => 'TRANSACTION_TYPE',
524: p_err_msg => fnd_message.get);
525:
520:
521: fnd_message.set_name('WIP', 'WIP_EZ_NO_SUBINV_DEFAULT2');
522: add_error(p_txn_ids => enums,
523: p_err_col => 'TRANSACTION_TYPE',
524: p_err_msg => fnd_message.get);
525:
526: -- reset enums table
527: enums.delete;
528: -- Error out if item revision does not exist as a BOM revision
567: AND (wdj.bom_revision IS NULL OR
568: mir.revision = wdj.bom_revision))))
569: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
570:
571: fnd_message.set_name('WIP', 'WIP_BOM_ITEM_REVISION');
572: add_error(p_txn_ids => enums,
573: p_err_col => 'TRANSACTION_TYPE',
574: p_err_msg => fnd_message.get);
575:
570:
571: fnd_message.set_name('WIP', 'WIP_BOM_ITEM_REVISION');
572: add_error(p_txn_ids => enums,
573: p_err_col => 'TRANSACTION_TYPE',
574: p_err_msg => fnd_message.get);
575:
576: -- reset enums table
577: enums.delete;
578: -- Error out if easy completion /return for repetitive schedule
592: AND msi.organization_id = wmti.organization_id
593: AND msi.lot_control_code = WIP_CONSTANTS.LOT)
594: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
595:
596: fnd_message.set_name('WIP', 'WIP_EZ_NO_REP_LOT_CONTROL2');
597: add_error(p_txn_ids => enums,
598: p_err_col => 'TRANSACTION_TYPE',
599: p_err_msg => fnd_message.get);
600:
595:
596: fnd_message.set_name('WIP', 'WIP_EZ_NO_REP_LOT_CONTROL2');
597: add_error(p_txn_ids => enums,
598: p_err_col => 'TRANSACTION_TYPE',
599: p_err_msg => fnd_message.get);
600:
601: -- reset enums table
602: enums.delete;
603: -- Error out if easy completion /return for Discrete job and the assembly
624: AND wdj.wip_entity_id = wmti.wip_entity_id
625: AND wdj.lot_number IS NULL)
626: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
627:
628: fnd_message.set_name('WIP', 'WIP_EZ_NO_JOB_LOT_DEFAULT2');
629: add_error(p_txn_ids => enums,
630: p_err_col => 'TRANSACTION_TYPE',
631: p_err_msg => fnd_message.get);
632:
627:
628: fnd_message.set_name('WIP', 'WIP_EZ_NO_JOB_LOT_DEFAULT2');
629: add_error(p_txn_ids => enums,
630: p_err_col => 'TRANSACTION_TYPE',
631: p_err_msg => fnd_message.get);
632:
633: -- reset enums table
634: enums.delete;
635: -- Error out if easy completion to the new lot number and and either this
664: wmti.organization_id, -- p_organization_id
665: wmti.primary_item_id) -- p_inventory_item_id
666: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
667:
668: fnd_message.set_name('WIP', 'WIP_LOT_ATTR_NOT_ALLOW');
669: add_error(p_txn_ids => enums,
670: p_err_col => 'TRANSACTION_TYPE',
671: p_err_msg => fnd_message.get);
672:
667:
668: fnd_message.set_name('WIP', 'WIP_LOT_ATTR_NOT_ALLOW');
669: add_error(p_txn_ids => enums,
670: p_err_col => 'TRANSACTION_TYPE',
671: p_err_msg => fnd_message.get);
672:
673: -- reset enums table
674: enums.delete;
675: -- Error out if easy completion to the new lot number and lot expiration date
700: AND mln.organization_id = wmti.organization_id
701: AND mln.lot_number = wdj.lot_number)
702: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
703:
704: fnd_message.set_name('WIP', 'WIP_USER_DEF_EXP_NOT_ALLOW');
705: add_error(p_txn_ids => enums,
706: p_err_col => 'TRANSACTION_TYPE',
707: p_err_msg => fnd_message.get);
708:
703:
704: fnd_message.set_name('WIP', 'WIP_USER_DEF_EXP_NOT_ALLOW');
705: add_error(p_txn_ids => enums,
706: p_err_col => 'TRANSACTION_TYPE',
707: p_err_msg => fnd_message.get);
708:
709: END transaction_type;
710:
711: -- validate transaction_date. Transaction date must be less than or equal
722: AND wmti.process_status = WIP_CONSTANTS.RUNNING
723: AND wmti.transaction_date > SYSDATE
724: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
725:
726: fnd_message.set_name('WIP', 'WIP_NO_FORWARD_DATING');
727: add_error(p_txn_ids => enums,
728: p_err_col => 'TRANSACTION_DATE',
729: p_err_msg => fnd_message.get);
730:
725:
726: fnd_message.set_name('WIP', 'WIP_NO_FORWARD_DATING');
727: add_error(p_txn_ids => enums,
728: p_err_col => 'TRANSACTION_DATE',
729: p_err_msg => fnd_message.get);
730:
731: /* Fix for bug 5685099 : Validate if TRANSACTION_DATE falls in open accounting period. */
732: -- reset enums table
733: enums.delete;
749: ))
750: BETWEEN OAP.PERIOD_START_DATE AND OAP.SCHEDULE_CLOSE_DATE)
751: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
752:
753: fnd_message.set_name('WIP', 'WIP_DATE_IN_OPEN_PERIOD');
754: add_error(p_txn_ids => enums,
755: p_err_col => 'TRANSACTION_DATE',
756: p_err_msg => fnd_message.get);
757:
752:
753: fnd_message.set_name('WIP', 'WIP_DATE_IN_OPEN_PERIOD');
754: add_error(p_txn_ids => enums,
755: p_err_col => 'TRANSACTION_DATE',
756: p_err_msg => fnd_message.get);
757:
758: /* end fix for bug 5685099 */
759:
760: -- reset enums table
782: AND wdj.organization_id = wmti.organization_id
783: AND wdj.date_released > wmti.transaction_date)))
784: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
785:
786: fnd_message.set_name('WIP', 'WIP_RELEASE_DATE');
787: add_error(p_txn_ids => enums,
788: p_err_col => 'TRANSACTION_DATE',
789: p_err_msg => fnd_message.get);
790:
785:
786: fnd_message.set_name('WIP', 'WIP_RELEASE_DATE');
787: add_error(p_txn_ids => enums,
788: p_err_col => 'TRANSACTION_DATE',
789: p_err_msg => fnd_message.get);
790:
791: -- Derive ACCT_PERIOD_ID from TRANSACTION_DATE
792: UPDATE wip_move_txn_interface wmti
793: SET wmti.acct_period_id =
832: AND wrs.status_type IN (WIP_CONSTANTS.RELEASED,
833: WIP_CONSTANTS.COMP_CHRG))))))
834: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
835:
836: fnd_message.set_name('WIP', 'WIP_NO_BALANCE');
837: add_error(p_txn_ids => enums,
838: p_err_col => 'TRANSACTION_DATE',
839: p_err_msg => fnd_message.get);
840:
835:
836: fnd_message.set_name('WIP', 'WIP_NO_BALANCE');
837: add_error(p_txn_ids => enums,
838: p_err_col => 'TRANSACTION_DATE',
839: p_err_msg => fnd_message.get);
840:
841: END transaction_date;
842:
843: -- validate fm_operation_seq_num. From operation must be a valid operation.
885: AND NVL(wo.repetitive_schedule_id, -1) =
886: NVL(wmti.repetitive_schedule_id, -1))))
887: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
888:
889: fnd_message.set_name('WIP', 'WIP_INVALID_OPERATION');
890: add_error(p_txn_ids => enums,
891: p_err_col => 'FM_OPERATION_SEQ_NUM',
892: p_err_msg => fnd_message.get);
893:
888:
889: fnd_message.set_name('WIP', 'WIP_INVALID_OPERATION');
890: add_error(p_txn_ids => enums,
891: p_err_col => 'FM_OPERATION_SEQ_NUM',
892: p_err_msg => fnd_message.get);
893:
894: -- reset enums table
895: enums.delete;
896: -- Error out if TRANSACTION_TYPE is EZ Return and FM_OPERATION_SEQ_NUM
910: NVL(wmti.repetitive_schedule_id, -1)
911: AND wo.next_operation_seq_num IS NULL)
912: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
913:
914: fnd_message.set_name('WIP', 'WIP_EZ_FM_LAST_OP');
915: add_error(p_txn_ids => enums,
916: p_err_col => 'FM_OPERATION_SEQ_NUM',
917: p_err_msg => fnd_message.get);
918: END fm_operation;
913:
914: fnd_message.set_name('WIP', 'WIP_EZ_FM_LAST_OP');
915: add_error(p_txn_ids => enums,
916: p_err_col => 'FM_OPERATION_SEQ_NUM',
917: p_err_msg => fnd_message.get);
918: END fm_operation;
919:
920: -- validate fm_intraoperation_step_type. From step must be valid.
921: -- If easy return transaction, from step must be "To move". If easy complete,
962: (wvis.record_creator = 'SYSTEM' AND
963: wo.next_operation_seq_num IS NULL)))))
964: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
965:
966: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
967: fnd_message.set_token('ENTITY', 'FM_INTRAOPERATION_STEP_TYPE');
968: add_error(p_txn_ids => enums,
969: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
970: p_err_msg => fnd_message.get);
963: wo.next_operation_seq_num IS NULL)))))
964: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
965:
966: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
967: fnd_message.set_token('ENTITY', 'FM_INTRAOPERATION_STEP_TYPE');
968: add_error(p_txn_ids => enums,
969: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
970: p_err_msg => fnd_message.get);
971:
966: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
967: fnd_message.set_token('ENTITY', 'FM_INTRAOPERATION_STEP_TYPE');
968: add_error(p_txn_ids => enums,
969: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
970: p_err_msg => fnd_message.get);
971:
972: -- reset enums table
973: enums.delete;
974: -- Error out if FM_OPERATION_SEQ_NUM/FM_INTRAOPERATION_STEP_TYPE has
1001: AND wp.osp_shop_floor_status =
1002: wsc.shop_floor_status_code))))
1003: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1004:
1005: fnd_message.set_name('WIP', 'WIP_STATUS_NO_TXN1');
1006: add_error(p_txn_ids => enums,
1007: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
1008: p_err_msg => fnd_message.get);
1009:
1004:
1005: fnd_message.set_name('WIP', 'WIP_STATUS_NO_TXN1');
1006: add_error(p_txn_ids => enums,
1007: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
1008: p_err_msg => fnd_message.get);
1009:
1010: -- reset enums table
1011: enums.delete;
1012: -- Error out if users try to perform easy completion from Tomove of the
1027: NVL(wmti.repetitive_schedule_id, -1)
1028: AND wo.next_operation_seq_num IS NULL)
1029: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1030:
1031: fnd_message.set_name('WIP', 'WIP_EZ_NO_CMP_LAST_OP2');
1032: add_error(p_txn_ids => enums,
1033: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
1034: p_err_msg => fnd_message.get);
1035:
1030:
1031: fnd_message.set_name('WIP', 'WIP_EZ_NO_CMP_LAST_OP2');
1032: add_error(p_txn_ids => enums,
1033: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
1034: p_err_msg => fnd_message.get);
1035:
1036: -- reset enums table
1037: enums.delete;
1038: -- Error out if TRANSACTION_TYPE is EZ Return and
1045: AND wmti.transaction_type = WIP_CONSTANTS.RET_TXN
1046: AND wmti.fm_intraoperation_step_type <> WIP_CONSTANTS.TOMOVE
1047: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1048:
1049: fnd_message.set_name('WIP', 'WIP_EZ_FM_LAST_STEP');
1050: add_error(p_txn_ids => enums,
1051: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
1052: p_err_msg => fnd_message.get);
1053: END fm_step;
1048:
1049: fnd_message.set_name('WIP', 'WIP_EZ_FM_LAST_STEP');
1050: add_error(p_txn_ids => enums,
1051: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
1052: p_err_msg => fnd_message.get);
1053: END fm_step;
1054:
1055: -- validate to_operation_seq_num. To operation must be a valid operation.
1056: -- For easy complete transaction, To operation must be the last operation.
1114: AND NVL(wo.repetitive_schedule_id, -1) =
1115: NVL(wmti.repetitive_schedule_id, -1))))
1116: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1117:
1118: fnd_message.set_name('WIP', 'WIP_INVALID_OPERATION');
1119: add_error(p_txn_ids => enums,
1120: p_err_col => 'TO_OPERATION_SEQ_NUM',
1121: p_err_msg => fnd_message.get);
1122:
1117:
1118: fnd_message.set_name('WIP', 'WIP_INVALID_OPERATION');
1119: add_error(p_txn_ids => enums,
1120: p_err_col => 'TO_OPERATION_SEQ_NUM',
1121: p_err_msg => fnd_message.get);
1122:
1123: -- reset enums table
1124: enums.delete;
1125: -- Error out if TRANSACTION_TYPE is EZ Ccmplete and TO_OPERATION_SEQ_NUM
1139: NVL(wmti.repetitive_schedule_id, -1)
1140: AND wo.next_operation_seq_num IS NULL)
1141: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1142:
1143: fnd_message.set_name('WIP', 'WIP_EZ_TO_LAST_OP');
1144: add_error(p_txn_ids => enums,
1145: p_err_col => 'TO_OPERATION_SEQ_NUM',
1146: p_err_msg => fnd_message.get);
1147: END to_operation;
1142:
1143: fnd_message.set_name('WIP', 'WIP_EZ_TO_LAST_OP');
1144: add_error(p_txn_ids => enums,
1145: p_err_col => 'TO_OPERATION_SEQ_NUM',
1146: p_err_msg => fnd_message.get);
1147: END to_operation;
1148:
1149: -- validate to_intraoperation_step_type. To step must be valid.
1150: -- If easy complete transaction, to step must be "To move". If easy return,
1210: wvis.step_lookup_type = WIP_CONSTANTS.QUEUE))))))
1211:
1212: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1213:
1214: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
1215: fnd_message.set_token('ENTITY', 'TO_INTRAOPERATION_STEP_TYPE');
1216: add_error(p_txn_ids => enums,
1217: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1218: p_err_msg => fnd_message.get);
1211:
1212: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1213:
1214: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
1215: fnd_message.set_token('ENTITY', 'TO_INTRAOPERATION_STEP_TYPE');
1216: add_error(p_txn_ids => enums,
1217: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1218: p_err_msg => fnd_message.get);
1219:
1214: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
1215: fnd_message.set_token('ENTITY', 'TO_INTRAOPERATION_STEP_TYPE');
1216: add_error(p_txn_ids => enums,
1217: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1218: p_err_msg => fnd_message.get);
1219:
1220: -- reset enums table
1221: enums.delete;
1222: -- Error out if users try to move to the same operation and step as the
1229: AND wmti.fm_operation_seq_num = wmti.to_operation_seq_num
1230: AND wmti.fm_intraoperation_step_type = wmti.to_intraoperation_step_type
1231: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1232:
1233: fnd_message.set_name('WIP', 'WIP_SAME_OP_AND_STEP');
1234: add_error(p_txn_ids => enums,
1235: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1236: p_err_msg => fnd_message.get);
1237:
1232:
1233: fnd_message.set_name('WIP', 'WIP_SAME_OP_AND_STEP');
1234: add_error(p_txn_ids => enums,
1235: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1236: p_err_msg => fnd_message.get);
1237:
1238: -- reset enums table
1239: enums.delete;
1240: -- Error out if TRANSACTION_TYPE is EZ Complete and
1247: AND wmti.transaction_type = WIP_CONSTANTS.COMP_TXN
1248: AND wmti.to_intraoperation_step_type <> WIP_CONSTANTS.TOMOVE
1249: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1250:
1251: fnd_message.set_name('WIP', 'WIP_EZ_TO_LAST_STEP');
1252: add_error(p_txn_ids => enums,
1253: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1254: p_err_msg => fnd_message.get);
1255:
1250:
1251: fnd_message.set_name('WIP', 'WIP_EZ_TO_LAST_STEP');
1252: add_error(p_txn_ids => enums,
1253: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1254: p_err_msg => fnd_message.get);
1255:
1256: -- reset enums table
1257: enums.delete;
1258: -- Error out if user try to easy complete job/schedule that has No Move shop
1277: AND wsc.status_move_flag = WIP_CONSTANTS.NO
1278: AND NVL(wsc.disable_date, SYSDATE + 1) > SYSDATE)
1279: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1280:
1281: fnd_message.set_name('WIP', 'WIP_STATUS_NO_TXN2');
1282: add_error(p_txn_ids => enums,
1283: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1284: p_err_msg => fnd_message.get);
1285:
1280:
1281: fnd_message.set_name('WIP', 'WIP_STATUS_NO_TXN2');
1282: add_error(p_txn_ids => enums,
1283: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1284: p_err_msg => fnd_message.get);
1285:
1286: -- reset enums table
1287: enums.delete;
1288: -- Error out if wip_parameter do not allow move over no_move shop floor
1304: -- Fixed bug 2121222
1305: wmti.source_code) > 0 -- p_source_code
1306: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1307:
1308: fnd_message.set_name ('WIP', 'WIP_NO_MOVE_SF_STATUS_BETWEEN');
1309: add_error(p_txn_ids => enums,
1310: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1311: p_err_msg => fnd_message.get);
1312: END to_step;
1307:
1308: fnd_message.set_name ('WIP', 'WIP_NO_MOVE_SF_STATUS_BETWEEN');
1309: add_error(p_txn_ids => enums,
1310: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
1311: p_err_msg => fnd_message.get);
1312: END to_step;
1313:
1314: -- transaction_quantity must be positive
1315: PROCEDURE transaction_qty IS
1325: AND wmti.process_status = WIP_CONSTANTS.RUNNING
1326: AND wmti.transaction_quantity <= 0
1327: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1328:
1329: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1330: fnd_message.set_token('ENTITY1', 'TRANSACTION_QUANTITY');
1331: fnd_message.set_token('ENTITY2', 'zero');
1332: add_error(p_txn_ids => enums,
1333: p_err_col => 'TRANSACTION_QUANTITY',
1326: AND wmti.transaction_quantity <= 0
1327: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1328:
1329: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1330: fnd_message.set_token('ENTITY1', 'TRANSACTION_QUANTITY');
1331: fnd_message.set_token('ENTITY2', 'zero');
1332: add_error(p_txn_ids => enums,
1333: p_err_col => 'TRANSACTION_QUANTITY',
1334: p_err_msg => fnd_message.get);
1327: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1328:
1329: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1330: fnd_message.set_token('ENTITY1', 'TRANSACTION_QUANTITY');
1331: fnd_message.set_token('ENTITY2', 'zero');
1332: add_error(p_txn_ids => enums,
1333: p_err_col => 'TRANSACTION_QUANTITY',
1334: p_err_msg => fnd_message.get);
1335:
1330: fnd_message.set_token('ENTITY1', 'TRANSACTION_QUANTITY');
1331: fnd_message.set_token('ENTITY2', 'zero');
1332: add_error(p_txn_ids => enums,
1333: p_err_col => 'TRANSACTION_QUANTITY',
1334: p_err_msg => fnd_message.get);
1335:
1336: END transaction_qty;
1337:
1338:
1354: AND miuv.inventory_item_id = wmti.primary_item_id
1355: AND miuv.uom_code = wmti.transaction_uom)
1356: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1357:
1358: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
1359: fnd_message.set_token('ENTITY', 'TRANSACTION_UOM');
1360: add_error(p_txn_ids => enums,
1361: p_err_col => 'TRANSACTION_UOM',
1362: p_err_msg => fnd_message.get);
1355: AND miuv.uom_code = wmti.transaction_uom)
1356: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1357:
1358: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
1359: fnd_message.set_token('ENTITY', 'TRANSACTION_UOM');
1360: add_error(p_txn_ids => enums,
1361: p_err_col => 'TRANSACTION_UOM',
1362: p_err_msg => fnd_message.get);
1363:
1358: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
1359: fnd_message.set_token('ENTITY', 'TRANSACTION_UOM');
1360: add_error(p_txn_ids => enums,
1361: p_err_col => 'TRANSACTION_UOM',
1362: p_err_msg => fnd_message.get);
1363:
1364: END transaction_uom;
1365:
1366: -- validate overcompletion_transaction_qty. This is an optional info.
1382: AND wmti.overcompletion_transaction_qty IS NOT NULL
1383: AND wmti.overcompletion_transaction_qty <= 0
1384: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1385:
1386: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1387: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_TRANSACTION_QTY');
1388: fnd_message.set_token('ENTITY2', 'zero');
1389: add_error(p_txn_ids => enums,
1390: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1383: AND wmti.overcompletion_transaction_qty <= 0
1384: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1385:
1386: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1387: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_TRANSACTION_QTY');
1388: fnd_message.set_token('ENTITY2', 'zero');
1389: add_error(p_txn_ids => enums,
1390: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1391: p_err_msg => fnd_message.get);
1384: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1385:
1386: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1387: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_TRANSACTION_QTY');
1388: fnd_message.set_token('ENTITY2', 'zero');
1389: add_error(p_txn_ids => enums,
1390: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1391: p_err_msg => fnd_message.get);
1392:
1387: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_TRANSACTION_QTY');
1388: fnd_message.set_token('ENTITY2', 'zero');
1389: add_error(p_txn_ids => enums,
1390: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1391: p_err_msg => fnd_message.get);
1392:
1393: -- reset enums table
1394: enums.delete;
1395: -- Error out if OVERCOMPLETION_TRANSACTION_QTY is greater than
1402: AND wmti.overcompletion_transaction_qty IS NOT NULL
1403: AND wmti.overcompletion_transaction_qty > wmti.transaction_quantity
1404: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1405:
1406: fnd_message.set_name('MFG', 'MFG_GREATER_OR_EQUAL');
1407: fnd_message.set_token('ENTITY1', 'TRANSACTION_QUANTITY');
1408: fnd_message.set_token('ENTITY2', 'OVERCOMPLETION_TRANSACTION_QTY');
1409: add_error(p_txn_ids => enums,
1410: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1403: AND wmti.overcompletion_transaction_qty > wmti.transaction_quantity
1404: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1405:
1406: fnd_message.set_name('MFG', 'MFG_GREATER_OR_EQUAL');
1407: fnd_message.set_token('ENTITY1', 'TRANSACTION_QUANTITY');
1408: fnd_message.set_token('ENTITY2', 'OVERCOMPLETION_TRANSACTION_QTY');
1409: add_error(p_txn_ids => enums,
1410: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1411: p_err_msg => fnd_message.get);
1404: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1405:
1406: fnd_message.set_name('MFG', 'MFG_GREATER_OR_EQUAL');
1407: fnd_message.set_token('ENTITY1', 'TRANSACTION_QUANTITY');
1408: fnd_message.set_token('ENTITY2', 'OVERCOMPLETION_TRANSACTION_QTY');
1409: add_error(p_txn_ids => enums,
1410: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1411: p_err_msg => fnd_message.get);
1412:
1407: fnd_message.set_token('ENTITY1', 'TRANSACTION_QUANTITY');
1408: fnd_message.set_token('ENTITY2', 'OVERCOMPLETION_TRANSACTION_QTY');
1409: add_error(p_txn_ids => enums,
1410: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1411: p_err_msg => fnd_message.get);
1412:
1413: -- reset enums table
1414: enums.delete;
1415: -- Error out if user try to do over Return
1421: AND wmti.transaction_type = WIP_CONSTANTS.RET_TXN
1422: AND wmti.overcompletion_transaction_qty IS NOT NULL
1423: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1424:
1425: fnd_message.set_name('WIP', 'WIP_NO_OC_RET');
1426: add_error(p_txn_ids => enums,
1427: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1428: p_err_msg => fnd_message.get);
1429:
1424:
1425: fnd_message.set_name('WIP', 'WIP_NO_OC_RET');
1426: add_error(p_txn_ids => enums,
1427: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1428: p_err_msg => fnd_message.get);
1429:
1430: -- reset enums table
1431: enums.delete;
1432: -- Error out if user try to do over Return from Scrap/Return from Reject
1439: WIP_CONSTANTS.REJECT)
1440: AND wmti.overcompletion_transaction_qty IS NOT NULL
1441: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1442:
1443: fnd_message.set_name('WIP', 'WIP_NO_OC_SCR_REJ');
1444: add_error(p_txn_ids => enums,
1445: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1446: p_err_msg => fnd_message.get);
1447:
1442:
1443: fnd_message.set_name('WIP', 'WIP_NO_OC_SCR_REJ');
1444: add_error(p_txn_ids => enums,
1445: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1446: p_err_msg => fnd_message.get);
1447:
1448: -- reset enums table
1449: enums.delete;
1450: -- Error out if OVERCOMPLETION_TRANSACTION_QTY is specified for backward
1460: wmti.fm_intraoperation_step_type))
1461: AND wmti.overcompletion_transaction_qty IS NOT NULL
1462: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
1463:
1464: fnd_message.set_name('WIP', 'WIP_NO_OC_REV_MOVE');
1465: add_error(p_txn_ids => enums,
1466: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1467: p_err_msg => fnd_message.get);
1468:
1463:
1464: fnd_message.set_name('WIP', 'WIP_NO_OC_REV_MOVE');
1465: add_error(p_txn_ids => enums,
1466: p_err_col => 'OVERCOMPLETION_TRANSACTION_QTY',
1467: p_err_msg => fnd_message.get);
1468:
1469: END ocpl_txn_qty;
1470:
1471: -- validate transaction_id against the one in WIP_MOVE_TRANSACTIONS, and
1481: AND wmti.process_status = WIP_CONSTANTS.RUNNING
1482: AND wmti.transaction_id IS NULL;
1483:
1484: -- Set Error Message
1485: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
1486: fnd_message.set_token('ENTITY', 'TRANSACTION_ID');
1487: l_errMsg := substrb(fnd_message.get, 1, 240);
1488:
1489: INSERT INTO wip_txn_interface_errors(
1482: AND wmti.transaction_id IS NULL;
1483:
1484: -- Set Error Message
1485: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
1486: fnd_message.set_token('ENTITY', 'TRANSACTION_ID');
1487: l_errMsg := substrb(fnd_message.get, 1, 240);
1488:
1489: INSERT INTO wip_txn_interface_errors(
1490: transaction_id,
1483:
1484: -- Set Error Message
1485: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
1486: fnd_message.set_token('ENTITY', 'TRANSACTION_ID');
1487: l_errMsg := substrb(fnd_message.get, 1, 240);
1488:
1489: INSERT INTO wip_txn_interface_errors(
1490: transaction_id,
1491: error_message,
1667:
1668: /* End of bug fix 5000113.
1669:
1670: -- Set Error Message
1671: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1672: fnd_message.set_token('ENTITY1', 'PRIMARY_QUANTITY');
1673: fnd_message.set_token('ENTITY2', 'zero');
1674: l_errMsg := substrb(fnd_message.get, 1, 240);
1675:
1668: /* End of bug fix 5000113.
1669:
1670: -- Set Error Message
1671: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1672: fnd_message.set_token('ENTITY1', 'PRIMARY_QUANTITY');
1673: fnd_message.set_token('ENTITY2', 'zero');
1674: l_errMsg := substrb(fnd_message.get, 1, 240);
1675:
1676: -- Error out if PRIMARY_QUANTITY is zero
1669:
1670: -- Set Error Message
1671: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1672: fnd_message.set_token('ENTITY1', 'PRIMARY_QUANTITY');
1673: fnd_message.set_token('ENTITY2', 'zero');
1674: l_errMsg := substrb(fnd_message.get, 1, 240);
1675:
1676: -- Error out if PRIMARY_QUANTITY is zero
1677: -- Insert error record into WIP_TXN_INTERFACE_ERRORS. Do not update
1670: -- Set Error Message
1671: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
1672: fnd_message.set_token('ENTITY1', 'PRIMARY_QUANTITY');
1673: fnd_message.set_token('ENTITY2', 'zero');
1674: l_errMsg := substrb(fnd_message.get, 1, 240);
1675:
1676: -- Error out if PRIMARY_QUANTITY is zero
1677: -- Insert error record into WIP_TXN_INTERFACE_ERRORS. Do not update
1678: -- WMTI.PROCESS_STATUS to Error because it is a minor issue. We will
1709: AND wmti.process_status = WIP_CONSTANTS.RUNNING
1710: AND wmti.primary_quantity = 0;
1711:
1712: -- Set Error Message
1713: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
1714: fnd_message.set_token('ENTITY1', 'PRIMARY_QUANTITY');
1715: fnd_message.set_token('ENTITY2', 'TRANSACTION_QUANTITY');
1716: l_errMsg := substrb(fnd_message.get, 1, 240);
1717:
1710: AND wmti.primary_quantity = 0;
1711:
1712: -- Set Error Message
1713: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
1714: fnd_message.set_token('ENTITY1', 'PRIMARY_QUANTITY');
1715: fnd_message.set_token('ENTITY2', 'TRANSACTION_QUANTITY');
1716: l_errMsg := substrb(fnd_message.get, 1, 240);
1717:
1718: -- Error out if PRIMARY_QUANTITY is not consistent with TRANSACTION_QUANTITY
1711:
1712: -- Set Error Message
1713: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
1714: fnd_message.set_token('ENTITY1', 'PRIMARY_QUANTITY');
1715: fnd_message.set_token('ENTITY2', 'TRANSACTION_QUANTITY');
1716: l_errMsg := substrb(fnd_message.get, 1, 240);
1717:
1718: -- Error out if PRIMARY_QUANTITY is not consistent with TRANSACTION_QUANTITY
1719: -- Insert error record into WIP_TXN_INTERFACE_ERRORS. Do not update
1712: -- Set Error Message
1713: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
1714: fnd_message.set_token('ENTITY1', 'PRIMARY_QUANTITY');
1715: fnd_message.set_token('ENTITY2', 'TRANSACTION_QUANTITY');
1716: l_errMsg := substrb(fnd_message.get, 1, 240);
1717:
1718: -- Error out if PRIMARY_QUANTITY is not consistent with TRANSACTION_QUANTITY
1719: -- Insert error record into WIP_TXN_INTERFACE_ERRORS. Do not update
1720: -- WMTI.PROCESS_STATUS to Error because it is a minor issue. We will
1764: condition
1765: */
1766:
1767: /*
1768: fnd_message.set_name('WIP', 'WIP_MIN_XFER_QTY');
1769: l_errMsg := substrb(fnd_message.get, 1, 240);
1770:
1771: -- Error out if PRIMARY_QUANTITY less than MININUM_TRANSFER_QUANTITY
1772: -- defined at FM_OPERATION_SEQ_NUM and transactions are not Scrap/Reject
1765: */
1766:
1767: /*
1768: fnd_message.set_name('WIP', 'WIP_MIN_XFER_QTY');
1769: l_errMsg := substrb(fnd_message.get, 1, 240);
1770:
1771: -- Error out if PRIMARY_QUANTITY less than MININUM_TRANSFER_QUANTITY
1772: -- defined at FM_OPERATION_SEQ_NUM and transactions are not Scrap/Reject
1773: INSERT INTO wip_txn_interface_errors(
1814:
1815:
1816: */
1817: -- Set Error Message
1818: fnd_message.set_name ('INV', 'INV_NO_NEG_BALANCES');
1819: l_errMsg := substrb(fnd_message.get, 1, 240);
1820:
1821: -- User cannot do easy return more than available quantity if
1822: -- organization do not allow negative balance. (Discrete/OSFM)
1815:
1816: */
1817: -- Set Error Message
1818: fnd_message.set_name ('INV', 'INV_NO_NEG_BALANCES');
1819: l_errMsg := substrb(fnd_message.get, 1, 240);
1820:
1821: -- User cannot do easy return more than available quantity if
1822: -- organization do not allow negative balance. (Discrete/OSFM)
1823: FOR l_availQty IN c_availQty
1923: AND wmti.process_status = WIP_CONSTANTS.RUNNING
1924: AND wmti.primary_uom IS NULL;
1925:
1926: -- Set Error Message
1927: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
1928: fnd_message.set_token('ENTITY1', 'PRIMARY_UOM');
1929: fnd_message.set_token('ENTITY2', 'PRIMARY_ITEM_ID');
1930: l_errMsg := substrb(fnd_message.get, 1, 240);
1931:
1924: AND wmti.primary_uom IS NULL;
1925:
1926: -- Set Error Message
1927: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
1928: fnd_message.set_token('ENTITY1', 'PRIMARY_UOM');
1929: fnd_message.set_token('ENTITY2', 'PRIMARY_ITEM_ID');
1930: l_errMsg := substrb(fnd_message.get, 1, 240);
1931:
1932: -- If caller provide PRIMARY_UOM, it must be consistent with
1925:
1926: -- Set Error Message
1927: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
1928: fnd_message.set_token('ENTITY1', 'PRIMARY_UOM');
1929: fnd_message.set_token('ENTITY2', 'PRIMARY_ITEM_ID');
1930: l_errMsg := substrb(fnd_message.get, 1, 240);
1931:
1932: -- If caller provide PRIMARY_UOM, it must be consistent with
1933: -- primary_item_id provided
1926: -- Set Error Message
1927: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
1928: fnd_message.set_token('ENTITY1', 'PRIMARY_UOM');
1929: fnd_message.set_token('ENTITY2', 'PRIMARY_ITEM_ID');
1930: l_errMsg := substrb(fnd_message.get, 1, 240);
1931:
1932: -- If caller provide PRIMARY_UOM, it must be consistent with
1933: -- primary_item_id provided
1934: INSERT INTO wip_txn_interface_errors(
1996:
1997: -- End of bug fix 5000113.
1998:
1999: -- Set Error Message
2000: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
2001: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_PRIMARY_QTY');
2002: fnd_message.set_token('ENTITY2', 'zero');
2003: l_errMsg := substrb(fnd_message.get, 1, 240);
2004:
1997: -- End of bug fix 5000113.
1998:
1999: -- Set Error Message
2000: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
2001: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_PRIMARY_QTY');
2002: fnd_message.set_token('ENTITY2', 'zero');
2003: l_errMsg := substrb(fnd_message.get, 1, 240);
2004:
2005: -- Error out if OVERCOMPLETION_PRIMARY_QTY is zero
1998:
1999: -- Set Error Message
2000: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
2001: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_PRIMARY_QTY');
2002: fnd_message.set_token('ENTITY2', 'zero');
2003: l_errMsg := substrb(fnd_message.get, 1, 240);
2004:
2005: -- Error out if OVERCOMPLETION_PRIMARY_QTY is zero
2006: -- Insert error record into WIP_TXN_INTERFACE_ERRORS. Do not update
1999: -- Set Error Message
2000: fnd_message.set_name('MFG', 'MFG_GREATER_THAN');
2001: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_PRIMARY_QTY');
2002: fnd_message.set_token('ENTITY2', 'zero');
2003: l_errMsg := substrb(fnd_message.get, 1, 240);
2004:
2005: -- Error out if OVERCOMPLETION_PRIMARY_QTY is zero
2006: -- Insert error record into WIP_TXN_INTERFACE_ERRORS. Do not update
2007: -- WMTI.PROCESS_STATUS to Error because it is a minor issue. We will
2038: AND wmti.process_status = WIP_CONSTANTS.RUNNING
2039: AND wmti.overcompletion_primary_qty = 0;
2040:
2041: -- Set Error Message
2042: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2043: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_PRIMARY_QTY');
2044: fnd_message.set_token('ENTITY2', 'OVERCOMPLETION_TRANSACTION_QTY');
2045: l_errMsg := substrb(fnd_message.get, 1, 240);
2046:
2039: AND wmti.overcompletion_primary_qty = 0;
2040:
2041: -- Set Error Message
2042: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2043: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_PRIMARY_QTY');
2044: fnd_message.set_token('ENTITY2', 'OVERCOMPLETION_TRANSACTION_QTY');
2045: l_errMsg := substrb(fnd_message.get, 1, 240);
2046:
2047: -- If caller provide this info, it must be consistent with
2040:
2041: -- Set Error Message
2042: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2043: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_PRIMARY_QTY');
2044: fnd_message.set_token('ENTITY2', 'OVERCOMPLETION_TRANSACTION_QTY');
2045: l_errMsg := substrb(fnd_message.get, 1, 240);
2046:
2047: -- If caller provide this info, it must be consistent with
2048: -- overcompletion_transaction_qty provided
2041: -- Set Error Message
2042: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2043: fnd_message.set_token('ENTITY1', 'OVERCOMPLETION_PRIMARY_QTY');
2044: fnd_message.set_token('ENTITY2', 'OVERCOMPLETION_TRANSACTION_QTY');
2045: l_errMsg := substrb(fnd_message.get, 1, 240);
2046:
2047: -- If caller provide this info, it must be consistent with
2048: -- overcompletion_transaction_qty provided
2049: INSERT INTO wip_txn_interface_errors(
2094: PROCEDURE ocpl_txn_id IS
2095: l_errMsg VARCHAR2(240);
2096: BEGIN
2097: -- Set Error Message
2098: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
2099: fnd_message.set_token('ENTITY', 'OVERCOMPLETION_TRANSACTION_ID');
2100: l_errMsg := substrb(fnd_message.get, 1, 240);
2101:
2102: -- This value must be null because New Move Processor will be the one
2095: l_errMsg VARCHAR2(240);
2096: BEGIN
2097: -- Set Error Message
2098: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
2099: fnd_message.set_token('ENTITY', 'OVERCOMPLETION_TRANSACTION_ID');
2100: l_errMsg := substrb(fnd_message.get, 1, 240);
2101:
2102: -- This value must be null because New Move Processor will be the one
2103: -- who insert child record and populate this value
2096: BEGIN
2097: -- Set Error Message
2098: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
2099: fnd_message.set_token('ENTITY', 'OVERCOMPLETION_TRANSACTION_ID');
2100: l_errMsg := substrb(fnd_message.get, 1, 240);
2101:
2102: -- This value must be null because New Move Processor will be the one
2103: -- who insert child record and populate this value
2104: INSERT INTO wip_txn_interface_errors(
2155: AND wmti.reason_id IS NULL
2156: AND wmti.reason_name IS NOT NULL;
2157:
2158: -- Set Error Message
2159: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2160: fnd_message.set_token('ENTITY1', 'REASON_ID');
2161: fnd_message.set_token('ENTITY2', 'REASON_NAME');
2162: l_errMsg := substrb(fnd_message.get, 1, 240);
2163:
2156: AND wmti.reason_name IS NOT NULL;
2157:
2158: -- Set Error Message
2159: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2160: fnd_message.set_token('ENTITY1', 'REASON_ID');
2161: fnd_message.set_token('ENTITY2', 'REASON_NAME');
2162: l_errMsg := substrb(fnd_message.get, 1, 240);
2163:
2164: -- If caller provide REASON_ID, it must be consistent with
2157:
2158: -- Set Error Message
2159: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2160: fnd_message.set_token('ENTITY1', 'REASON_ID');
2161: fnd_message.set_token('ENTITY2', 'REASON_NAME');
2162: l_errMsg := substrb(fnd_message.get, 1, 240);
2163:
2164: -- If caller provide REASON_ID, it must be consistent with
2165: -- REASON_NAME provided
2158: -- Set Error Message
2159: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2160: fnd_message.set_token('ENTITY1', 'REASON_ID');
2161: fnd_message.set_token('ENTITY2', 'REASON_NAME');
2162: l_errMsg := substrb(fnd_message.get, 1, 240);
2163:
2164: -- If caller provide REASON_ID, it must be consistent with
2165: -- REASON_NAME provided
2166: INSERT INTO wip_txn_interface_errors(
2211: l_scrap_flag NUMBER;
2212: l_errMsg VARCHAR2(240);
2213: BEGIN
2214: -- Set Error Message
2215: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
2216: fnd_message.set_token('ENTITY', 'SCRAP_ACCOUNT_ID');
2217: l_errMsg := substrb(fnd_message.get, 1, 240);
2218:
2219: INSERT INTO wip_txn_interface_errors(
2212: l_errMsg VARCHAR2(240);
2213: BEGIN
2214: -- Set Error Message
2215: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
2216: fnd_message.set_token('ENTITY', 'SCRAP_ACCOUNT_ID');
2217: l_errMsg := substrb(fnd_message.get, 1, 240);
2218:
2219: INSERT INTO wip_txn_interface_errors(
2220: transaction_id,
2213: BEGIN
2214: -- Set Error Message
2215: fnd_message.set_name('WIP', 'WIP_NOT_VALID');
2216: fnd_message.set_token('ENTITY', 'SCRAP_ACCOUNT_ID');
2217: l_errMsg := substrb(fnd_message.get, 1, 240);
2218:
2219: INSERT INTO wip_txn_interface_errors(
2220: transaction_id,
2221: error_message,
2303: AND wmti.last_updated_by IS NULL
2304: AND wmti.last_updated_by_name IS NOT NULL;
2305:
2306: -- Set Error Message
2307: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2308: fnd_message.set_token('ENTITY1', 'LAST_UPDATED_BY');
2309: fnd_message.set_token('ENTITY2', 'LAST_UPDATED_BY_NAME');
2310: l_errMsg := substrb(fnd_message.get, 1, 240);
2311:
2304: AND wmti.last_updated_by_name IS NOT NULL;
2305:
2306: -- Set Error Message
2307: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2308: fnd_message.set_token('ENTITY1', 'LAST_UPDATED_BY');
2309: fnd_message.set_token('ENTITY2', 'LAST_UPDATED_BY_NAME');
2310: l_errMsg := substrb(fnd_message.get, 1, 240);
2311:
2312: -- Error out if LAST_UPDATED_BY is not consistent with LAST_UPDATED_BY_NAME
2305:
2306: -- Set Error Message
2307: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2308: fnd_message.set_token('ENTITY1', 'LAST_UPDATED_BY');
2309: fnd_message.set_token('ENTITY2', 'LAST_UPDATED_BY_NAME');
2310: l_errMsg := substrb(fnd_message.get, 1, 240);
2311:
2312: -- Error out if LAST_UPDATED_BY is not consistent with LAST_UPDATED_BY_NAME
2313: INSERT INTO wip_txn_interface_errors(
2306: -- Set Error Message
2307: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2308: fnd_message.set_token('ENTITY1', 'LAST_UPDATED_BY');
2309: fnd_message.set_token('ENTITY2', 'LAST_UPDATED_BY_NAME');
2310: l_errMsg := substrb(fnd_message.get, 1, 240);
2311:
2312: -- Error out if LAST_UPDATED_BY is not consistent with LAST_UPDATED_BY_NAME
2313: INSERT INTO wip_txn_interface_errors(
2314: transaction_id,
2365: AND wmti.created_by IS NULL
2366: AND wmti.created_by_name IS NOT NULL;
2367:
2368: -- Set Error Message
2369: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2370: fnd_message.set_token('ENTITY1', 'CREATED_BY');
2371: fnd_message.set_token('ENTITY2', 'CREATED_BY_NAME');
2372: l_errMsg := substrb(fnd_message.get, 1, 240);
2373:
2366: AND wmti.created_by_name IS NOT NULL;
2367:
2368: -- Set Error Message
2369: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2370: fnd_message.set_token('ENTITY1', 'CREATED_BY');
2371: fnd_message.set_token('ENTITY2', 'CREATED_BY_NAME');
2372: l_errMsg := substrb(fnd_message.get, 1, 240);
2373:
2374: -- Error out if CREATED_BY is not consistent with CREATED_BY_NAME
2367:
2368: -- Set Error Message
2369: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2370: fnd_message.set_token('ENTITY1', 'CREATED_BY');
2371: fnd_message.set_token('ENTITY2', 'CREATED_BY_NAME');
2372: l_errMsg := substrb(fnd_message.get, 1, 240);
2373:
2374: -- Error out if CREATED_BY is not consistent with CREATED_BY_NAME
2375: INSERT INTO wip_txn_interface_errors(
2368: -- Set Error Message
2369: fnd_message.set_name('WIP', 'WIP_ID_CODE_COMBINATION');
2370: fnd_message.set_token('ENTITY1', 'CREATED_BY');
2371: fnd_message.set_token('ENTITY2', 'CREATED_BY_NAME');
2372: l_errMsg := substrb(fnd_message.get, 1, 240);
2373:
2374: -- Error out if CREATED_BY is not consistent with CREATED_BY_NAME
2375: INSERT INTO wip_txn_interface_errors(
2376: transaction_id,
2423: PROCEDURE osp_validation IS
2424: l_errMsg VARCHAR2(240);
2425: BEGIN
2426: -- Set Error Message
2427: fnd_message.set_name('WIP', 'WIP_PO_MOVE_LOCATION');
2428: l_errMsg := substrb(fnd_message.get, 1, 240);
2429:
2430: -- Error out if user try to move into a queue of OSP operation and the
2431: -- department associated to that operation does not have a location
2424: l_errMsg VARCHAR2(240);
2425: BEGIN
2426: -- Set Error Message
2427: fnd_message.set_name('WIP', 'WIP_PO_MOVE_LOCATION');
2428: l_errMsg := substrb(fnd_message.get, 1, 240);
2429:
2430: -- Error out if user try to move into a queue of OSP operation and the
2431: -- department associated to that operation does not have a location
2432: -- for PO_RECEIVE. For PO_MOVE the department associated with
2507: AND wo2.department_id = bd.department_id
2508: AND bd.location_id IS NULL);
2509:
2510: -- Set Error Message
2511: fnd_message.set_name('WIP', 'WIP_VALID_EMPLOYEE');
2512: l_errMsg := substrb(fnd_message.get, 1, 240);
2513:
2514: -- Error out if the user who try to do OSP transaction is not an employee
2515: INSERT INTO wip_txn_interface_errors(
2508: AND bd.location_id IS NULL);
2509:
2510: -- Set Error Message
2511: fnd_message.set_name('WIP', 'WIP_VALID_EMPLOYEE');
2512: l_errMsg := substrb(fnd_message.get, 1, 240);
2513:
2514: -- Error out if the user who try to do OSP transaction is not an employee
2515: INSERT INTO wip_txn_interface_errors(
2516: transaction_id,
2606: (wmti.fm_operation_seq_num = wdj.serialization_start_op AND
2607: wmti.fm_intraoperation_step_type <> WIP_CONSTANTS.QUEUE)))))
2608: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
2609:
2610: fnd_message.set_name('WIP', 'WIP_MOVE_CROSS_START_OP');
2611: add_error(p_txn_ids => enums,
2612: p_err_col => 'FM/TO_STEP, FM/TO_OP',
2613: p_err_msg => fnd_message.get);
2614:
2609:
2610: fnd_message.set_name('WIP', 'WIP_MOVE_CROSS_START_OP');
2611: add_error(p_txn_ids => enums,
2612: p_err_col => 'FM/TO_STEP, FM/TO_OP',
2613: p_err_msg => fnd_message.get);
2614:
2615: -- Comment out the validation below because Express Move can be done for more
2616: -- then one quantity. Moreover, this validation was already done through the
2617: -- UI(mobile and MES), and we do not support serilized move in the background.
2638: AND wmti.to_operation_seq_num >= wdj.serialization_start_op
2639: AND wmti.primary_quantity <> 1)
2640: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
2641:
2642: fnd_message.set_name('WIP', 'WIP_INVALID_SERIAL_QTY');
2643: add_error(p_txn_ids => enums,
2644: p_err_col => 'TRANSACTION/PRIMARY_QUANTITY',
2645: p_err_msg => fnd_message.get);
2646: */
2641:
2642: fnd_message.set_name('WIP', 'WIP_INVALID_SERIAL_QTY');
2643: add_error(p_txn_ids => enums,
2644: p_err_col => 'TRANSACTION/PRIMARY_QUANTITY',
2645: p_err_msg => fnd_message.get);
2646: */
2647:
2648: -- reset enums table
2649: enums.delete;
2675: FROM wip_serial_move_interface wsmi
2676: WHERE wsmi.transaction_id = wmti.transaction_id)
2677: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
2678:
2679: fnd_message.set_name('WIP', 'WIP_SERIAL_INFO_NOT_ALLOW');
2680: add_error(p_txn_ids => enums,
2681: p_err_col => 'WSMI.ASSEMBLY_SERIAL_NUMBER',
2682: p_err_msg => fnd_message.get);
2683:
2678:
2679: fnd_message.set_name('WIP', 'WIP_SERIAL_INFO_NOT_ALLOW');
2680: add_error(p_txn_ids => enums,
2681: p_err_col => 'WSMI.ASSEMBLY_SERIAL_NUMBER',
2682: p_err_msg => fnd_message.get);
2683:
2684:
2685: -- reset enums table
2686: enums.delete;
2729: mog.object_id = we.gen_object_id))
2730: AND mog.end_date_active IS NULL)
2731: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
2732:
2733: fnd_message.set_name('WIP', 'WIP_SERIAL_QTY_MISSMATCH');
2734: add_error(p_txn_ids => enums,
2735: p_err_col => 'WSMI.ASSEMBLY_SERIAL_NUMBER',
2736: p_err_msg => fnd_message.get);
2737:
2732:
2733: fnd_message.set_name('WIP', 'WIP_SERIAL_QTY_MISSMATCH');
2734: add_error(p_txn_ids => enums,
2735: p_err_col => 'WSMI.ASSEMBLY_SERIAL_NUMBER',
2736: p_err_msg => fnd_message.get);
2737:
2738: -- reset enums table
2739: enums.delete;
2740: -- if user try to do serialized transaction, the status of the serial
2774: msn.current_status IN (WIP_CONSTANTS.DEF_NOT_USED,
2775: WIP_CONSTANTS.OUT_OF_STORES))))
2776: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
2777:
2778: fnd_message.set_name('WIP', 'WIP_INVALID_SERIAL_STATUS');
2779: add_error(p_txn_ids => enums,
2780: p_err_col => 'WSMI.ASSEMBLY_SERIAL_NUMBER',
2781: p_err_msg => fnd_message.get);
2782:
2777:
2778: fnd_message.set_name('WIP', 'WIP_INVALID_SERIAL_STATUS');
2779: add_error(p_txn_ids => enums,
2780: p_err_col => 'WSMI.ASSEMBLY_SERIAL_NUMBER',
2781: p_err_msg => fnd_message.get);
2782:
2783: END serial_validation;
2784:
2785: -- If there are some errors occur, this routine will set
2831: AND (msi.inventory_item_flag = 'N' OR
2832: msi.mtl_transactions_enabled_flag = 'N'))
2833: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
2834:
2835: fnd_message.set_name('INV', 'INV_INT_ITMEXP');
2836: add_error(p_txn_ids => enums,
2837: p_err_col => 'PRIMARY_ITEM_ID',
2838: p_err_msg => fnd_message.get);
2839:
2834:
2835: fnd_message.set_name('INV', 'INV_INT_ITMEXP');
2836: add_error(p_txn_ids => enums,
2837: p_err_col => 'PRIMARY_ITEM_ID',
2838: p_err_msg => fnd_message.get);
2839:
2840: END assembly_validation;
2841:
2842:
3126: AND wpb.wip_entity_id = wmti.wip_entity_id
3127: AND wpb.organization_id = wmti.organization_id))
3128: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
3129:
3130: fnd_message.set_name('WIP', 'WIP_NO_BALANCE');
3131: add_error(p_txn_ids => enums,
3132: p_err_col => 'TRANSACTION_DATE',
3133: p_err_msg => fnd_message.get);
3134:
3129:
3130: fnd_message.set_name('WIP', 'WIP_NO_BALANCE');
3131: add_error(p_txn_ids => enums,
3132: p_err_col => 'TRANSACTION_DATE',
3133: p_err_msg => fnd_message.get);
3134:
3135: -- Fixed bug 5310474
3136: -- reset enums table
3137: enums.delete;
3165: AND wp.osp_shop_floor_status =
3166: wsc.shop_floor_status_code))))
3167: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
3168:
3169: fnd_message.set_name('WIP', 'WIP_STATUS_NO_TXN1');
3170: add_error(p_txn_ids => enums,
3171: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
3172: p_err_msg => fnd_message.get);
3173:
3168:
3169: fnd_message.set_name('WIP', 'WIP_STATUS_NO_TXN1');
3170: add_error(p_txn_ids => enums,
3171: p_err_col => 'FM_INTRAOPERATION_STEP_TYPE',
3172: p_err_msg => fnd_message.get);
3173:
3174: -- reset enums table
3175: enums.delete;
3176: -- Error out if user try to easy complete job/schedule that has No Move shop
3195: AND wsc.status_move_flag = WIP_CONSTANTS.NO
3196: AND NVL(wsc.disable_date, SYSDATE + 1) > SYSDATE)
3197: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
3198:
3199: fnd_message.set_name('WIP', 'WIP_STATUS_NO_TXN2');
3200: add_error(p_txn_ids => enums,
3201: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
3202: p_err_msg => fnd_message.get);
3203: -- End of fix for bug 5310474
3198:
3199: fnd_message.set_name('WIP', 'WIP_STATUS_NO_TXN2');
3200: add_error(p_txn_ids => enums,
3201: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
3202: p_err_msg => fnd_message.get);
3203: -- End of fix for bug 5310474
3204:
3205: -- Validate whether there is no move shopfloor status in between or not.
3206: -- reset enums table
3224: -- Fixed bug 2121222
3225: wmti.source_code) > 0 -- p_source_code
3226: RETURNING wmti.transaction_id BULK COLLECT INTO enums;
3227:
3228: fnd_message.set_name ('WIP', 'WIP_NO_MOVE_SF_STATUS_BETWEEN');
3229: add_error(p_txn_ids => enums,
3230: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
3231: p_err_msg => fnd_message.get);
3232:
3227:
3228: fnd_message.set_name ('WIP', 'WIP_NO_MOVE_SF_STATUS_BETWEEN');
3229: add_error(p_txn_ids => enums,
3230: p_err_col => 'TO_INTRAOPERATION_STEP_TYPE',
3231: p_err_msg => fnd_message.get);
3232:
3233: -- Do OSP related validation.
3234: osp_validation;
3235: