55: l_out_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
56: l_return_status VARCHAR2(1);
57: BEGIN
58:
59: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Quering Operations'); END IF;
60:
61: EAM_OP_UTILITY_PVT.Query_Row
62: ( p_wip_entity_id => p_eam_op_rec.wip_entity_id
63: , p_organization_id => p_eam_op_rec.organization_id
65: , x_eam_op_rec => x_old_eam_op_rec
66: , x_Return_status => l_return_status
67: );
68:
69: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Query Row Returned with : ' || l_return_status); END IF;
70:
71: IF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_FOUND AND
72: p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE
73: THEN
67: );
68:
69: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Query Row Returned with : ' || l_return_status); END IF;
70:
71: IF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_FOUND AND
72: p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE
73: THEN
74: l_token_tbl(1).token_name := 'OPERATION_SEQ_NUM';
75: l_token_tbl(1).token_value := p_eam_op_rec.operation_seq_num;
68:
69: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Query Row Returned with : ' || l_return_status); END IF;
70:
71: IF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_FOUND AND
72: p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE
73: THEN
74: l_token_tbl(1).token_name := 'OPERATION_SEQ_NUM';
75: l_token_tbl(1).token_value := p_eam_op_rec.operation_seq_num;
76:
84: l_mesg_token_tbl := l_out_mesg_token_tbl;
85:
86: l_return_status := FND_API.G_RET_STS_ERROR;
87:
88: ELSIF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_NOT_FOUND AND
89: p_eam_op_rec.transaction_type IN
90: (EAM_PROCESS_WO_PVT.G_OPR_UPDATE, EAM_PROCESS_WO_PVT.G_OPR_DELETE)
91: THEN
92: l_token_tbl(1).token_name := 'OPERATION_SEQ_NUM';
86: l_return_status := FND_API.G_RET_STS_ERROR;
87:
88: ELSIF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_NOT_FOUND AND
89: p_eam_op_rec.transaction_type IN
90: (EAM_PROCESS_WO_PVT.G_OPR_UPDATE, EAM_PROCESS_WO_PVT.G_OPR_DELETE)
91: THEN
92: l_token_tbl(1).token_name := 'OPERATION_SEQ_NUM';
93: l_token_tbl(1).token_value := p_eam_op_rec.operation_seq_num;
94:
115: l_mesg_token_tbl := l_out_mesg_token_tbl;
116: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
117:
118: ELSE /* Assign the relevant transaction type for SYNC operations */
119: IF p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_SYNC THEN
120: IF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_FOUND THEN
121: x_old_eam_op_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_UPDATE;
122: ELSE
123: x_old_eam_op_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_CREATE;
116: l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
117:
118: ELSE /* Assign the relevant transaction type for SYNC operations */
119: IF p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_SYNC THEN
120: IF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_FOUND THEN
121: x_old_eam_op_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_UPDATE;
122: ELSE
123: x_old_eam_op_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_CREATE;
124: END IF;
117:
118: ELSE /* Assign the relevant transaction type for SYNC operations */
119: IF p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_SYNC THEN
120: IF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_FOUND THEN
121: x_old_eam_op_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_UPDATE;
122: ELSE
123: x_old_eam_op_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_CREATE;
124: END IF;
125: END IF;
119: IF p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_SYNC THEN
120: IF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_FOUND THEN
121: x_old_eam_op_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_UPDATE;
122: ELSE
123: x_old_eam_op_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_CREATE;
124: END IF;
125: END IF;
126: l_return_status := FND_API.G_RET_STS_SUCCESS;
127:
297: BEGIN
298:
299: x_return_status := FND_API.G_RET_STS_SUCCESS;
300:
301: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Within WO Check Attributes . . . '); END IF;
302:
303:
304: -- department_id
305: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating department_id . . . '); END IF;
301: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Within WO Check Attributes . . . '); END IF;
302:
303:
304: -- department_id
305: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating department_id . . . '); END IF;
306:
307: begin
308:
309: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
305: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating department_id . . . '); END IF;
306:
307: begin
308:
309: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
310:
311: select 1
312: into g_dummy
313: from bom_departments
313: from bom_departments
314: where department_id = p_eam_op_rec.department_id
315: and organization_id = p_eam_op_rec.organization_id;
316:
317: if (p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE and
318: (p_eam_op_rec.department_id <> p_old_eam_op_rec.department_id)
319: and ((Is_Dept_Updateable(p_wip_entity_id => p_eam_op_rec.wip_entity_id
320: , p_organization_id => p_eam_op_rec.organization_id
321: , p_operation_seq_num => p_eam_op_rec.operation_seq_num ))
325: end if; --end of check for update and is_dept_updateable
326: end if; --end of check for create/update transaction
327:
328: -- fix for bug 11666479 : do not allow dept change if resources exists for CMRO workorders
329: if (p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE) and
330: (p_eam_op_rec.department_id <> p_old_eam_op_rec.department_id) then
331: select count(*) --fix for bug 14096091
332: into l_cmro_count
333: from wip_discrete_jobs
399:
400: end;
401:
402: -- standard_operation_id
403: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating standard_operation_id . . . '); END IF;
404:
405: begin
406:
407: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
403: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating standard_operation_id . . . '); END IF;
404:
405: begin
406:
407: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
408:
409: if (p_eam_op_rec.standard_operation_id is not null) then
410:
411: select 1
440:
441: end;
442:
443: -- minimum_transfer_quantity
444: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating minimum_transfer_quantity . . . '); END IF;
445:
446: begin
447:
448: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
444: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating minimum_transfer_quantity . . . '); END IF;
445:
446: begin
447:
448: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
449:
450: if p_eam_op_rec.minimum_transfer_quantity < 0 then
451: raise fnd_api.g_exc_unexpected_error;
452: end if;
476:
477: end;
478:
479: -- count_point_type
480: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating count_point_type . . . '); END IF;
481:
482: begin
483:
484: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
480: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating count_point_type . . . '); END IF;
481:
482: begin
483:
484: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
485:
486: select 1
487: into g_dummy
488: from mfg_lookups
514:
515: end;
516:
517: -- backflush_flag
518: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating backflush_flag . . . '); END IF;
519:
520: begin
521:
522: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
518: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating backflush_flag . . . '); END IF;
519:
520: begin
521:
522: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
523:
524: select 1
525: into g_dummy
526: from mfg_lookups
553: end;
554:
555:
556: -- shutdown_type
557: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating shutdown_type . . . '); END IF;
558:
559: begin
560:
561: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
557: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating shutdown_type . . . '); END IF;
558:
559: begin
560:
561: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
562:
563: if p_eam_op_rec.shutdown_type is not null then
564: select 1
565: into g_dummy
594:
595: end;
596:
597: -- start_date
598: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating start_date . . . '); END IF;
599:
600: begin
601:
602: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
598: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating start_date . . . '); END IF;
599:
600: begin
601:
602: if (p_eam_op_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE, EAM_PROCESS_WO_PVT.G_OPR_UPDATE)) then
603:
604: if p_eam_op_rec.start_date > p_eam_op_rec.completion_date then
605: raise fnd_api.g_exc_unexpected_error;
606: end if;
631: end;
632:
633:
634: -- delete operation
635: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating operation . . . '); END IF;
636:
637: declare
638: l_count_eoct NUMBER :=0;
639: l_count_res NUMBER :=0;
640: l_count_on NUMBER :=0;
641: l_count_mr NUMBER :=0;
642: begin
643:
644: if (p_eam_op_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_DELETE) then
645:
646: select count(*)
647: into l_count_eoct
648: from eam_op_completion_txns