190: l_user_role := get_user_role();
191:
192: IF (NVL(FND_PROFILE.value('AHL_MANUAL_RES_TXN'),'N') = 'Y') OR
193: (l_user_role = AHL_PRD_UTIL_PKG.G_DATA_CLERK) THEN
194: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_AUTOTXN_DSBLD');
195: FND_MSG_PUB.ADD;
196: RAISE FND_API.G_EXC_ERROR;
197: END IF;
198:
241:
242:
243: -- Validate workorder.
244: IF (l_workorder_id IS NULL) THEN
245: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_NULL');
246: --FND_MESSAGE.set_token('WO_ID',l_workorder_id);
247: FND_MSG_PUB.ADD;
248: RAISE FND_API.G_EXC_ERROR;
249: ELSE
242:
243: -- Validate workorder.
244: IF (l_workorder_id IS NULL) THEN
245: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_NULL');
246: --FND_MESSAGE.set_token('WO_ID',l_workorder_id);
247: FND_MSG_PUB.ADD;
248: RAISE FND_API.G_EXC_ERROR;
249: ELSE
250: -- get WO number to display error message.
251: OPEN c_wo_name(p_workorder_id);
252: FETCH c_wo_name INTO l_workorder_name;
253: IF (c_wo_name%NOTFOUND) THEN
254: CLOSE c_wo_name;
255: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_INVALID');
256: FND_MESSAGE.set_token('WO_ID',l_workorder_id);
257: FND_MSG_PUB.ADD;
258: RAISE FND_API.G_EXC_ERROR;
259:
252: FETCH c_wo_name INTO l_workorder_name;
253: IF (c_wo_name%NOTFOUND) THEN
254: CLOSE c_wo_name;
255: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_INVALID');
256: FND_MESSAGE.set_token('WO_ID',l_workorder_id);
257: FND_MSG_PUB.ADD;
258: RAISE FND_API.G_EXC_ERROR;
259:
260: END IF;
442:
443: -- Workorder Num/ID
444: IF (p_x_workorder_id IS NULL) THEN
445: IF (p_workorder_name IS NULL OR p_org_code IS NULL) THEN
446: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_NULL');
447: FND_MSG_PUB.ADD;
448: x_return_status := FND_API.G_RET_STS_ERROR;
449: ELSE
450: OPEN c_get_wo_id(p_workorder_name, p_org_code);
449: ELSE
450: OPEN c_get_wo_id(p_workorder_name, p_org_code);
451: FETCH c_get_wo_id INTO l_workorder_id;
452: IF (c_get_wo_id%NOTFOUND) THEN
453: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_INVALID');
454: FND_MESSAGE.set_token('WO_NUM', p_workorder_name);
455: FND_MESSAGE.set_token('ORG_CODE', p_org_code);
456: FND_MSG_PUB.ADD;
457: x_return_status := FND_API.G_RET_STS_ERROR;
450: OPEN c_get_wo_id(p_workorder_name, p_org_code);
451: FETCH c_get_wo_id INTO l_workorder_id;
452: IF (c_get_wo_id%NOTFOUND) THEN
453: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_INVALID');
454: FND_MESSAGE.set_token('WO_NUM', p_workorder_name);
455: FND_MESSAGE.set_token('ORG_CODE', p_org_code);
456: FND_MSG_PUB.ADD;
457: x_return_status := FND_API.G_RET_STS_ERROR;
458: ELSE
451: FETCH c_get_wo_id INTO l_workorder_id;
452: IF (c_get_wo_id%NOTFOUND) THEN
453: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_INVALID');
454: FND_MESSAGE.set_token('WO_NUM', p_workorder_name);
455: FND_MESSAGE.set_token('ORG_CODE', p_org_code);
456: FND_MSG_PUB.ADD;
457: x_return_status := FND_API.G_RET_STS_ERROR;
458: ELSE
459: p_x_workorder_id := l_workorder_id;
605:
606: CLOSE c_lock_wo_oper;
607:
608: -- add error to stack.
609: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
610: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
611: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
612: FND_MSG_PUB.ADD;
613: RAISE FND_API.G_EXC_ERROR;
606: CLOSE c_lock_wo_oper;
607:
608: -- add error to stack.
609: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
610: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
611: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
612: FND_MSG_PUB.ADD;
613: RAISE FND_API.G_EXC_ERROR;
614: END IF;
607:
608: -- add error to stack.
609: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
610: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
611: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
612: FND_MSG_PUB.ADD;
613: RAISE FND_API.G_EXC_ERROR;
614: END IF;
615: CLOSE c_lock_wo_oper;
616:
617: -- check operation status.
618: IF (l_oper_status <> '2') THEN
619: -- add error to stack.
620: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
621: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
622: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
623: FND_MSG_PUB.ADD;
624: RAISE FND_API.G_EXC_ERROR;
617: -- check operation status.
618: IF (l_oper_status <> '2') THEN
619: -- add error to stack.
620: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
621: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
622: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
623: FND_MSG_PUB.ADD;
624: RAISE FND_API.G_EXC_ERROR;
625: END IF;
618: IF (l_oper_status <> '2') THEN
619: -- add error to stack.
620: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
621: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
622: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
623: FND_MSG_PUB.ADD;
624: RAISE FND_API.G_EXC_ERROR;
625: END IF;
626:
655: l_initial_assign_rec.login_date := sysdate;
656:
657: IF (p_resource_id IS NULL AND p_resource_seq_num IS NULL) THEN
658: -- add error to stack.
659: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RES_NULL');
660: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
661: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
662: FND_MSG_PUB.ADD;
663: RAISE FND_API.G_EXC_ERROR;
656:
657: IF (p_resource_id IS NULL AND p_resource_seq_num IS NULL) THEN
658: -- add error to stack.
659: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RES_NULL');
660: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
661: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
662: FND_MSG_PUB.ADD;
663: RAISE FND_API.G_EXC_ERROR;
664: END IF;
657: IF (p_resource_id IS NULL AND p_resource_seq_num IS NULL) THEN
658: -- add error to stack.
659: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RES_NULL');
660: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
661: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
662: FND_MSG_PUB.ADD;
663: RAISE FND_API.G_EXC_ERROR;
664: END IF;
665:
740: END IF;
741:
742: CLOSE c_qualified_req;
743: -- add error to stack.
744: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RES_INVALID');
745: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
746: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
747: FND_MSG_PUB.ADD;
748: RAISE FND_API.G_EXC_ERROR;
741:
742: CLOSE c_qualified_req;
743: -- add error to stack.
744: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RES_INVALID');
745: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
746: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
747: FND_MSG_PUB.ADD;
748: RAISE FND_API.G_EXC_ERROR;
749:
742: CLOSE c_qualified_req;
743: -- add error to stack.
744: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RES_INVALID');
745: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
746: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
747: FND_MSG_PUB.ADD;
748: RAISE FND_API.G_EXC_ERROR;
749:
750: END IF; -- c_qualified_req%FOUND
961: IF (c_lock_wo_oper%NOTFOUND) THEN
962: CLOSE c_lock_wo_oper;
963:
964: -- add error to stack.
965: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
966: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
967: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
968: FND_MSG_PUB.ADD;
969: RAISE FND_API.G_EXC_ERROR;
962: CLOSE c_lock_wo_oper;
963:
964: -- add error to stack.
965: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
966: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
967: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
968: FND_MSG_PUB.ADD;
969: RAISE FND_API.G_EXC_ERROR;
970: ELSIF (l_oper_status <> 2) THEN
963:
964: -- add error to stack.
965: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
966: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
967: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
968: FND_MSG_PUB.ADD;
969: RAISE FND_API.G_EXC_ERROR;
970: ELSIF (l_oper_status <> 2) THEN
971: CLOSE c_lock_wo_oper;
970: ELSIF (l_oper_status <> 2) THEN
971: CLOSE c_lock_wo_oper;
972:
973: -- add error to stack.
974: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
975: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
976: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
977: FND_MSG_PUB.ADD;
978: RAISE FND_API.G_EXC_ERROR;
971: CLOSE c_lock_wo_oper;
972:
973: -- add error to stack.
974: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
975: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
976: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
977: FND_MSG_PUB.ADD;
978: RAISE FND_API.G_EXC_ERROR;
979: END IF;
972:
973: -- add error to stack.
974: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
975: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
976: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
977: FND_MSG_PUB.ADD;
978: RAISE FND_API.G_EXC_ERROR;
979: END IF;
980: CLOSE c_lock_wo_oper;
981:
982: ELSE
983:
984: -- add error to stack.
985: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_NULL');
986: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
987: FND_MSG_PUB.ADD;
988: RAISE FND_API.G_EXC_ERROR;
989: END IF; -- p_operation_seq_num IS NOT NULL
982: ELSE
983:
984: -- add error to stack.
985: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_NULL');
986: FND_MESSAGE.set_token('WO_NUM' , p_workorder_name);
987: FND_MSG_PUB.ADD;
988: RAISE FND_API.G_EXC_ERROR;
989: END IF; -- p_operation_seq_num IS NOT NULL
990:
1270: -- Lock WO record.
1271: OPEN c_lock_wo (p_workorder_id);
1272: FETCH c_lock_wo INTO l_wo_status;
1273: IF (c_lock_wo%NOTFOUND) THEN
1274: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_INVALID');
1275: FND_MSG_PUB.ADD;
1276: END IF;
1277: CLOSE c_lock_wo;
1278:
1565: /* THis validation is not needed. Data Clerk can complete WO in which case all users
1566: should be logged out
1567: IF (NVL(FND_PROFILE.value('AHL_MANUAL_RES_TXN'),'N') = 'Y') OR
1568: (l_user_role = AHL_PRD_UTIL_PKG.G_DATA_CLERK) THEN
1569: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_AUTOTXN_DSBLD');
1570: FND_MSG_PUB.ADD;
1571: RAISE FND_API.G_EXC_ERROR;
1572: END IF; */
1573:
1615: END IF;
1616:
1617: -- Check required parameters.
1618: IF (l_workorder_id IS NULL) THEN
1619: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_NULL');
1620: FND_MSG_PUB.ADD;
1621: RAISE FND_API.G_EXC_ERROR;
1622: END IF;
1623:
1621: RAISE FND_API.G_EXC_ERROR;
1622: END IF;
1623:
1624: IF (l_employee_id IS NULL) THEN
1625: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_EMPID_NULL');
1626: FND_MSG_PUB.ADD;
1627: RAISE FND_API.G_EXC_ERROR;
1628: END IF;
1629:
1975: l_object_version_number;
1976:
1977: IF (c_emp_login_details%NOTFOUND) THEN
1978: CLOSE c_emp_login_details;
1979: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_NOTLOGGEDIN');
1980: FND_MSG_PUB.ADD;
1981: RAISE FND_API.G_EXC_ERROR;
1982: END IF;
1983:
1983:
1984: -- Check login WO matches input WO.
1985: IF (l_login_workorder_id IS NULL) THEN
1986: -- user is not logged in any workorder.
1987: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_NOTLOGGEDIN');
1988: FND_MSG_PUB.ADD;
1989: RAISE FND_API.G_EXC_ERROR;
1990: ELSIF (l_login_workorder_id <> p_workorder_id) THEN
1991: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_WO_INVALID');
1987: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_NOTLOGGEDIN');
1988: FND_MSG_PUB.ADD;
1989: RAISE FND_API.G_EXC_ERROR;
1990: ELSIF (l_login_workorder_id <> p_workorder_id) THEN
1991: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_WO_INVALID');
1992: FND_MESSAGE.set_token('WO_NAME', l_workorder_name);
1993: FND_MSG_PUB.ADD;
1994: RAISE FND_API.G_EXC_ERROR;
1995: END IF;
1988: FND_MSG_PUB.ADD;
1989: RAISE FND_API.G_EXC_ERROR;
1990: ELSIF (l_login_workorder_id <> p_workorder_id) THEN
1991: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_WO_INVALID');
1992: FND_MESSAGE.set_token('WO_NAME', l_workorder_name);
1993: FND_MSG_PUB.ADD;
1994: RAISE FND_API.G_EXC_ERROR;
1995: END IF;
1996:
2000: END IF;
2001:
2002: -- For 'R' and 'O' logins, operation_seq_num is mandatory.
2003: IF (l_login_level <> 'W' AND p_operation_seq_num IS NULL) THEN
2004: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_OP_NULL');
2005: FND_MSG_PUB.ADD;
2006: RAISE FND_API.G_EXC_ERROR;
2007: ELSIF (p_operation_seq_num <> l_operation_seq_num) THEN
2008: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_OP_INVALID');
2004: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_OP_NULL');
2005: FND_MSG_PUB.ADD;
2006: RAISE FND_API.G_EXC_ERROR;
2007: ELSIF (p_operation_seq_num <> l_operation_seq_num) THEN
2008: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_OP_INVALID');
2009: FND_MESSAGE.set_token('OP_NUM', p_operation_seq_num);
2010: FND_MSG_PUB.ADD;
2011: RAISE FND_API.G_EXC_ERROR;
2012: END IF;
2005: FND_MSG_PUB.ADD;
2006: RAISE FND_API.G_EXC_ERROR;
2007: ELSIF (p_operation_seq_num <> l_operation_seq_num) THEN
2008: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_OP_INVALID');
2009: FND_MESSAGE.set_token('OP_NUM', p_operation_seq_num);
2010: FND_MSG_PUB.ADD;
2011: RAISE FND_API.G_EXC_ERROR;
2012: END IF;
2013:
2018:
2019: -- For 'R' login, resource is mandatory.
2020: IF (l_login_level = 'R' AND
2021: p_resource_seq_num IS NULL AND p_resource_id IS NULL) THEN
2022: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_RES_NULL');
2023: FND_MSG_PUB.ADD;
2024: RAISE FND_API.G_EXC_ERROR;
2025: ELSIF (p_resource_seq_num IS NOT NULL) AND
2026: (p_resource_seq_num <> nvl(l_resource_seq_num, -1) ) THEN
2023: FND_MSG_PUB.ADD;
2024: RAISE FND_API.G_EXC_ERROR;
2025: ELSIF (p_resource_seq_num IS NOT NULL) AND
2026: (p_resource_seq_num <> nvl(l_resource_seq_num, -1) ) THEN
2027: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_RES_INVALID');
2028: FND_MESSAGE.set_token('RES_NUM', p_resource_seq_num);
2029: FND_MSG_PUB.ADD;
2030: RAISE FND_API.G_EXC_ERROR;
2031: ELSIF (p_resource_id IS NOT NULL) THEN
2024: RAISE FND_API.G_EXC_ERROR;
2025: ELSIF (p_resource_seq_num IS NOT NULL) AND
2026: (p_resource_seq_num <> nvl(l_resource_seq_num, -1) ) THEN
2027: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_RES_INVALID');
2028: FND_MESSAGE.set_token('RES_NUM', p_resource_seq_num);
2029: FND_MSG_PUB.ADD;
2030: RAISE FND_API.G_EXC_ERROR;
2031: ELSIF (p_resource_id IS NOT NULL) THEN
2032: IF (p_resource_id <> nvl(l_resource_id,-1)) THEN
2029: FND_MSG_PUB.ADD;
2030: RAISE FND_API.G_EXC_ERROR;
2031: ELSIF (p_resource_id IS NOT NULL) THEN
2032: IF (p_resource_id <> nvl(l_resource_id,-1)) THEN
2033: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_RESID_INVALID');
2034: FND_MESSAGE.set_token('RES_ID', p_resource_id);
2035: FND_MSG_PUB.ADD;
2036: RAISE FND_API.G_EXC_ERROR;
2037: ELSE
2030: RAISE FND_API.G_EXC_ERROR;
2031: ELSIF (p_resource_id IS NOT NULL) THEN
2032: IF (p_resource_id <> nvl(l_resource_id,-1)) THEN
2033: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_RESID_INVALID');
2034: FND_MESSAGE.set_token('RES_ID', p_resource_id);
2035: FND_MSG_PUB.ADD;
2036: RAISE FND_API.G_EXC_ERROR;
2037: ELSE
2038: -- get resource seq num.
2039: OPEN c_get_resrc_seq(l_wip_entity_id, l_operation_seq_num, l_resource_id);
2040: FETCH c_get_resrc_seq INTO l_resource_seq_num;
2041: IF (c_get_resrc_seq%NOTFOUND) THEN
2042: CLOSE c_get_resrc_seq;
2043: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_RES_INVALID');
2044: FND_MESSAGE.set_token('RES_ID', p_resource_id);
2045: FND_MSG_PUB.ADD;
2046: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2047: END IF; -- c_get_resrc_seq
2040: FETCH c_get_resrc_seq INTO l_resource_seq_num;
2041: IF (c_get_resrc_seq%NOTFOUND) THEN
2042: CLOSE c_get_resrc_seq;
2043: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGNOUT_RES_INVALID');
2044: FND_MESSAGE.set_token('RES_ID', p_resource_id);
2045: FND_MSG_PUB.ADD;
2046: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2047: END IF; -- c_get_resrc_seq
2048: CLOSE c_get_resrc_seq;
2060: p_visit_id => null,
2061: p_item_instance_id => null) = FND_API.g_true THEN
2062: -- Unit is locked, therefore cannot perform resource transactions
2063: -- and cannot login to the workorder
2064: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_UNTLCKD');
2065: FND_MESSAGE.set_token('WO_NUM' , l_workorder_name);
2066: FND_MSG_PUB.ADD;
2067: RAISE FND_API.G_EXC_ERROR;
2068: END IF;
2061: p_item_instance_id => null) = FND_API.g_true THEN
2062: -- Unit is locked, therefore cannot perform resource transactions
2063: -- and cannot login to the workorder
2064: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_UNTLCKD');
2065: FND_MESSAGE.set_token('WO_NUM' , l_workorder_name);
2066: FND_MSG_PUB.ADD;
2067: RAISE FND_API.G_EXC_ERROR;
2068: END IF;
2069:
2518: END IF;
2519:
2520: -- Return error if employee id not found.
2521: IF (l_employee_id IS NULL) THEN
2522: FND_MESSAGE.Set_Name('AHL','AHL_PRD_LGN_EMP_NULL');
2523: FND_MSG_PUB.ADD;
2524: RAISE FND_API.G_EXC_ERROR;
2525: END IF;
2526:
2896:
2897: -- Check if login enabled.
2898: IF (NVL(FND_PROFILE.value('AHL_PRD_MANUAL_RES_TXN'),'N') = 'Y') OR
2899: (l_fnd_function_name = AHL_PRD_UTIL_PKG.G_DATA_CLERK) THEN
2900: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_AUTOTXN_DSBLD');
2901: FND_MSG_PUB.ADD;
2902: Return FND_API.G_FALSE;
2903: END IF;
2904:
2909: END IF;
2910:
2911: -- Check required parameters.
2912: IF p_workorder_id IS NULL THEN
2913: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_NULL');
2914: FND_MSG_PUB.ADD;
2915: Return FND_API.G_FALSE;
2916: END IF;
2917:
2925: OPEN c_is_wo_valid (p_workorder_id);
2926: FETCH c_is_wo_valid INTO l_wo_status, l_wo_name, l_wip_entity_id, l_org_id;
2927: IF c_is_wo_valid%NOTFOUND THEN
2928: CLOSE c_is_wo_valid;
2929: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_INVALID');
2930: FND_MSG_PUB.ADD;
2931: RETURN FND_API.G_FALSE;
2932: END IF;
2933: CLOSE c_is_wo_valid;
2933: CLOSE c_is_wo_valid;
2934:
2935: -- Validate WO status.
2936: IF l_wo_status in ('1','6','7','22','12','4','5') THEN
2937: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WOSTS_INVLD');
2938: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
2939: FND_MSG_PUB.ADD;
2940: RETURN FND_API.G_FALSE;
2941: END IF;
2934:
2935: -- Validate WO status.
2936: IF l_wo_status in ('1','6','7','22','12','4','5') THEN
2937: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WOSTS_INVLD');
2938: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
2939: FND_MSG_PUB.ADD;
2940: RETURN FND_API.G_FALSE;
2941: END IF;
2942:
2954: OPEN c_is_emp_valid(p_employee_id, l_org_id);
2955: FETCH c_is_emp_valid INTO l_employee_id;
2956: IF (c_is_emp_valid%NOTFOUND) THEN
2957: CLOSE c_is_emp_valid;
2958: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_EMPID_INVALID');
2959: FND_MESSAGE.set_token('EMP_ID' , p_employee_id);
2960: FND_MSG_PUB.ADD;
2961: RETURN FND_API.G_FALSE;
2962: END IF;
2955: FETCH c_is_emp_valid INTO l_employee_id;
2956: IF (c_is_emp_valid%NOTFOUND) THEN
2957: CLOSE c_is_emp_valid;
2958: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_EMPID_INVALID');
2959: FND_MESSAGE.set_token('EMP_ID' , p_employee_id);
2960: FND_MSG_PUB.ADD;
2961: RETURN FND_API.G_FALSE;
2962: END IF;
2963: CLOSE c_is_emp_valid;
2987: END IF;
2988:
2989: -- Check for login WO. If user already logged in, then do not allow login into another WO.
2990: IF (l_login_workorder_id IS NOT NULL) THEN
2991: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_USER_LOGGED_IN');
2992: FND_MSG_PUB.ADD;
2993: RETURN FND_API.G_FALSE;
2994: END IF;
2995:
3005: p_visit_id => null,
3006: p_item_instance_id => null) = FND_API.g_true THEN
3007: -- Unit is locked, therefore cannot perform resource transactions
3008: -- and hence cannot login to the workorder
3009: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_UNTLCKD');
3010: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3011: FND_MSG_PUB.ADD;
3012: RETURN FND_API.G_FALSE;
3013: END IF;
3006: p_item_instance_id => null) = FND_API.g_true THEN
3007: -- Unit is locked, therefore cannot perform resource transactions
3008: -- and hence cannot login to the workorder
3009: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_UNTLCKD');
3010: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3011: FND_MSG_PUB.ADD;
3012: RETURN FND_API.G_FALSE;
3013: END IF;
3014:
3018: l_fnd_function_name := p_fnd_function_name;
3019: END IF;
3020:
3021: IF (l_fnd_function_name IS NULL) THEN
3022: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_FUNC_NULL');
3023: FND_MSG_PUB.ADD;
3024: Return FND_API.G_FALSE;
3025: END IF;
3026:
3044: OPEN c_workorder_oper(p_workorder_id);
3045: FETCH c_workorder_oper INTO l_junk;
3046: IF (c_workorder_oper%FOUND) THEN
3047: CLOSE c_workorder_oper;
3048: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WOOPS_COMPLETE');
3049: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3050: FND_MSG_PUB.ADD;
3051: RETURN FND_API.G_FALSE;
3052: END IF;
3045: FETCH c_workorder_oper INTO l_junk;
3046: IF (c_workorder_oper%FOUND) THEN
3047: CLOSE c_workorder_oper;
3048: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WOOPS_COMPLETE');
3049: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3050: FND_MSG_PUB.ADD;
3051: RETURN FND_API.G_FALSE;
3052: END IF;
3053: CLOSE c_workorder_oper;
3057: FETCH c_check_res_reqd INTO l_junk;
3058: IF c_check_res_reqd%NOTFOUND THEN
3059: -- Login at the workorder level will be disabled.
3060: CLOSE c_check_res_reqd;
3061: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_NO_RESREQ');
3062: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3063: FND_MSG_PUB.ADD;
3064: RETURN FND_API.G_FALSE;
3065: END IF; -- c_check_res_reqd.
3058: IF c_check_res_reqd%NOTFOUND THEN
3059: -- Login at the workorder level will be disabled.
3060: CLOSE c_check_res_reqd;
3061: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WO_NO_RESREQ');
3062: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3063: FND_MSG_PUB.ADD;
3064: RETURN FND_API.G_FALSE;
3065: END IF; -- c_check_res_reqd.
3066: CLOSE c_check_res_reqd;
3073: OPEN c_qualified_for_one_res(l_employee_id, l_wip_entity_id, operation_rec.operation_seq_num);
3074: FETCH c_qualified_for_one_res INTO l_junk;
3075: IF c_qualified_for_one_res%NOTFOUND THEN
3076: CLOSE c_qualified_for_one_res;
3077: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WOOPS_NOTQUAL');
3078: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3079: FND_MSG_PUB.ADD;
3080: RETURN FND_API.G_FALSE;
3081: END IF; -- c_qualified_for_one_ops
3074: FETCH c_qualified_for_one_res INTO l_junk;
3075: IF c_qualified_for_one_res%NOTFOUND THEN
3076: CLOSE c_qualified_for_one_res;
3077: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_WOOPS_NOTQUAL');
3078: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3079: FND_MSG_PUB.ADD;
3080: RETURN FND_API.G_FALSE;
3081: END IF; -- c_qualified_for_one_ops
3082: CLOSE c_qualified_for_one_res;
3091: FETCH c_check_res_multiple_wo INTO l_junk;
3092: IF (c_check_res_multiple_wo%FOUND) THEN
3093: -- disable login at WO level.
3094: CLOSE c_check_res_multiple_wo;
3095: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_MULTI_RES_WO');
3096: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3097: FND_MSG_PUB.ADD;
3098: RETURN FND_API.G_FALSE;
3099: END IF;
3092: IF (c_check_res_multiple_wo%FOUND) THEN
3093: -- disable login at WO level.
3094: CLOSE c_check_res_multiple_wo;
3095: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_MULTI_RES_WO');
3096: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3097: FND_MSG_PUB.ADD;
3098: RETURN FND_API.G_FALSE;
3099: END IF;
3100: CLOSE c_check_res_multiple_wo;
3117: OPEN c_is_op_seq_valid (p_workorder_id, p_operation_seq_num, l_wip_entity_id);
3118: FETCH c_is_op_seq_valid INTO l_junk;
3119: IF c_is_op_seq_valid%NOTFOUND THEN
3120: CLOSE c_is_op_seq_valid;
3121: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
3122: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3123: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3124: FND_MSG_PUB.ADD;
3125: RETURN FND_API.G_FALSE;
3118: FETCH c_is_op_seq_valid INTO l_junk;
3119: IF c_is_op_seq_valid%NOTFOUND THEN
3120: CLOSE c_is_op_seq_valid;
3121: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
3122: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3123: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3124: FND_MSG_PUB.ADD;
3125: RETURN FND_API.G_FALSE;
3126: END IF; -- c_is_op_seq_valid.
3119: IF c_is_op_seq_valid%NOTFOUND THEN
3120: CLOSE c_is_op_seq_valid;
3121: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_INVALID');
3122: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3123: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3124: FND_MSG_PUB.ADD;
3125: RETURN FND_API.G_FALSE;
3126: END IF; -- c_is_op_seq_valid.
3127: CLOSE c_is_op_seq_valid;
3145: OPEN c_qualified_for_one_res(l_employee_id, l_wip_entity_id, p_operation_seq_num);
3146: FETCH c_qualified_for_one_res INTO l_junk;
3147: IF (c_qualified_for_one_res%NOTFOUND) THEN
3148: CLOSE c_qualified_for_one_res;
3149: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_NOT_QUAL');
3150: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3151: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3152: FND_MSG_PUB.ADD;
3153: RETURN FND_API.G_FALSE;
3146: FETCH c_qualified_for_one_res INTO l_junk;
3147: IF (c_qualified_for_one_res%NOTFOUND) THEN
3148: CLOSE c_qualified_for_one_res;
3149: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_NOT_QUAL');
3150: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3151: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3152: FND_MSG_PUB.ADD;
3153: RETURN FND_API.G_FALSE;
3154: END IF; -- c_qualified_for_one_res
3147: IF (c_qualified_for_one_res%NOTFOUND) THEN
3148: CLOSE c_qualified_for_one_res;
3149: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_NOT_QUAL');
3150: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3151: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3152: FND_MSG_PUB.ADD;
3153: RETURN FND_API.G_FALSE;
3154: END IF; -- c_qualified_for_one_res
3155: CLOSE c_qualified_for_one_res;
3163: FETCH c_check_res_multiple_op INTO l_junk;
3164: IF (c_check_res_multiple_op%FOUND) THEN
3165: -- disable login at WO level.
3166: CLOSE c_check_res_multiple_op;
3167: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_MULTI_RES_OP');
3168: FND_MESSAGE.set_token('OP_NUM' , p_operation_seq_num);
3169: FND_MSG_PUB.ADD;
3170: RETURN FND_API.G_FALSE;
3171: END IF;
3164: IF (c_check_res_multiple_op%FOUND) THEN
3165: -- disable login at WO level.
3166: CLOSE c_check_res_multiple_op;
3167: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_MULTI_RES_OP');
3168: FND_MESSAGE.set_token('OP_NUM' , p_operation_seq_num);
3169: FND_MSG_PUB.ADD;
3170: RETURN FND_API.G_FALSE;
3171: END IF;
3172: CLOSE c_check_res_multiple_op;
3186: OPEN c_get_resrc_id(l_wip_entity_id, p_operation_seq_num, p_resource_seq_num);
3187: FETCH c_get_resrc_id INTO l_resource_id;
3188: IF (c_get_resrc_id%NOTFOUND) THEN
3189: CLOSE c_get_resrc_id;
3190: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RESSEQ_INVALID');
3191: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3192: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3193: FND_MESSAGE.set_token('RES_NAME' ,p_resource_seq_num);
3194: FND_MSG_PUB.ADD;
3187: FETCH c_get_resrc_id INTO l_resource_id;
3188: IF (c_get_resrc_id%NOTFOUND) THEN
3189: CLOSE c_get_resrc_id;
3190: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RESSEQ_INVALID');
3191: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3192: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3193: FND_MESSAGE.set_token('RES_NAME' ,p_resource_seq_num);
3194: FND_MSG_PUB.ADD;
3195: RETURN FND_API.G_FALSE;
3188: IF (c_get_resrc_id%NOTFOUND) THEN
3189: CLOSE c_get_resrc_id;
3190: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RESSEQ_INVALID');
3191: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3192: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3193: FND_MESSAGE.set_token('RES_NAME' ,p_resource_seq_num);
3194: FND_MSG_PUB.ADD;
3195: RETURN FND_API.G_FALSE;
3196: END IF;
3189: CLOSE c_get_resrc_id;
3190: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RESSEQ_INVALID');
3191: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3192: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3193: FND_MESSAGE.set_token('RES_NAME' ,p_resource_seq_num);
3194: FND_MSG_PUB.ADD;
3195: RETURN FND_API.G_FALSE;
3196: END IF;
3197: CLOSE c_get_resrc_id;
3203: OPEN c_is_resource_valid(l_resource_id, l_org_id);
3204: FETCH c_is_resource_valid INTO l_resource_code;
3205: IF (c_is_resource_valid%NOTFOUND) THEN
3206: CLOSE c_is_resource_valid;
3207: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RESID_INVALID');
3208: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3209: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3210: FND_MESSAGE.set_token('RES_ID' , l_resource_id);
3211: FND_MSG_PUB.ADD;
3204: FETCH c_is_resource_valid INTO l_resource_code;
3205: IF (c_is_resource_valid%NOTFOUND) THEN
3206: CLOSE c_is_resource_valid;
3207: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RESID_INVALID');
3208: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3209: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3210: FND_MESSAGE.set_token('RES_ID' , l_resource_id);
3211: FND_MSG_PUB.ADD;
3212: RETURN FND_API.G_FALSE;
3205: IF (c_is_resource_valid%NOTFOUND) THEN
3206: CLOSE c_is_resource_valid;
3207: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RESID_INVALID');
3208: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3209: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3210: FND_MESSAGE.set_token('RES_ID' , l_resource_id);
3211: FND_MSG_PUB.ADD;
3212: RETURN FND_API.G_FALSE;
3213: END IF; -- c_is_resource_valid
3206: CLOSE c_is_resource_valid;
3207: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_RESID_INVALID');
3208: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3209: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3210: FND_MESSAGE.set_token('RES_ID' , l_resource_id);
3211: FND_MSG_PUB.ADD;
3212: RETURN FND_API.G_FALSE;
3213: END IF; -- c_is_resource_valid
3214: CLOSE c_is_resource_valid;
3220: l_resource_id);
3221: FETCH c_qualify_res INTO l_junk;
3222: IF (c_qualify_res%FOUND) THEN
3223: CLOSE c_qualify_res;
3224: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_NOTQUAL');
3225: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3226: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3227: FND_MESSAGE.set_token('RES_NUM', l_resource_code);
3228: FND_MSG_PUB.ADD;
3221: FETCH c_qualify_res INTO l_junk;
3222: IF (c_qualify_res%FOUND) THEN
3223: CLOSE c_qualify_res;
3224: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_NOTQUAL');
3225: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3226: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3227: FND_MESSAGE.set_token('RES_NUM', l_resource_code);
3228: FND_MSG_PUB.ADD;
3229: RETURN FND_API.G_FALSE;
3222: IF (c_qualify_res%FOUND) THEN
3223: CLOSE c_qualify_res;
3224: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_NOTQUAL');
3225: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3226: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3227: FND_MESSAGE.set_token('RES_NUM', l_resource_code);
3228: FND_MSG_PUB.ADD;
3229: RETURN FND_API.G_FALSE;
3230: END IF;
3223: CLOSE c_qualify_res;
3224: FND_MESSAGE.set_name('AHL', 'AHL_PRD_LGN_OP_NOTQUAL');
3225: FND_MESSAGE.SET_TOKEN('OP_NUM', p_operation_seq_num);
3226: FND_MESSAGE.set_token('WO_NUM' , l_wo_name);
3227: FND_MESSAGE.set_token('RES_NUM', l_resource_code);
3228: FND_MSG_PUB.ADD;
3229: RETURN FND_API.G_FALSE;
3230: END IF;
3231: CLOSE c_qualify_res;