The following lines contain the word 'select', 'insert', 'update' or 'delete':
SELECT substitution_id
FROM gmd_item_substitution_hdr_b
WHERE substitution_name = vSubstitution_name
AND substitution_version = vSubstitution_version;
SELECT 1
FROM fm_matl_dtl
WHERE formula_id = vformula_id
AND inventory_item_id = vOriginal_item_id
AND line_type = -1
AND rownum = 1;
SELECT 1
FROM fm_form_mst_b
WHERE formula_id = vformula_id
AND delete_mark = 0
AND formula_status <> 1000;
SELECT formula_no, Formula_vers
FRom fm_form_mst_b
WHERE FORMULA_id = vFormula_id;
SELECT concatenated_segments, primary_uom_code
FROM mtl_system_items_kfv
WHERE inventory_item_id = vItem_id;
/* is_update_allowed */
/* */
/* DESCRIPTION: Private function */
/* */
/* */
/* History : */
/* Raju 09-OCT-06 Initial implementation */
/* =============================================================== */
FUNCTION is_update_allowed(p_substitution_id IN NUMBER)
RETURN BOOLEAN IS
CURSOR get_subs_info(vSubstitution_id NUMBER) IS
SELECT substitution_status
FROM gmd_item_substitution_hdr_b
WHERE substitution_id = p_substitution_id;
l_delete_mark NUMBER := 0;
END is_update_allowed;
SELECT inventory_item_id, primary_uom_code
FROM mtl_system_items_kfv
WHERE inventory_item_id = vItem_id;
SELECT inventory_item_id, primary_uom_code
FROM mtl_system_items_kfv
WHERE concatenated_segments = vItem_no;
SELECT organization_code
FROM org_organization_definitions
WHERE organization_id = vOrgn_id;
SELECT 1
FROM gmd_item_substitution_hdr_b
WHERE substitution_id <> vSubstitution_id
AND original_inventory_item_id = vOriginal_item_id
AND preference = vPreference
AND vStart_date >= start_date
AND substitution_status < 1000
AND (end_date IS NULL OR vEnd_date <= end_date);
SELECT INVENTORY_ITEM_ID
FROM mtl_system_items_b
WHERE inventory_item_id = v_inventory_item_id
AND organization_id = v_organization_id
AND recipe_enabled_flag = 'Y';
select gmd_item_substitution_hdr_s.nextval
into l_substitution_id
from dual;
l_substitution_hdr_rec.last_update_date := sysdate;
l_substitution_hdr_rec.last_updated_by := gmd_api_grp.user_id;
l_substitution_hdr_rec.last_update_login := gmd_api_grp.login_id;
select gmd_item_substitution_dtl_s.nextval
into l_substitution_line_id
from dual;
l_substitution_dtl_rec.last_update_date := sysdate;
l_substitution_dtl_rec.last_updated_by := gmd_api_grp.user_id;
l_substitution_dtl_rec.last_update_login := gmd_api_grp.login_id;
l_formula_substitution_rec.last_update_date := sysdate;
l_formula_substitution_rec.last_updated_by := gmd_api_grp.user_id;
l_formula_substitution_rec.last_update_login := gmd_api_grp.login_id;
Select 1
From gmd_formula_substitution
Where formula_id = vformula_id
AND substitution_id = vSubstitution_id;
SELECT original_inventory_item_id INTO l_item_id
FROM gmd_item_substitution_hdr_b
Where substitution_id = vSubstitution_id;
IF NOT is_update_allowed(l_substitution_id) THEN
RAISE substitution_creation_failure;
l_formula_substitution_rec.last_update_date := sysdate;
l_formula_substitution_rec.last_updated_by := gmd_api_grp.user_id;
l_formula_substitution_rec.last_update_login := gmd_api_grp.login_id;
/* Update_substitution_header */
/* */
/* DESCRIPTION: */
/* */
/* */
/* History : */
/* Rajender Nalla 09-OCT-06 Initial implementation. */
/* =============================================================== */
PROCEDURE Update_substitution_header
( p_api_version IN NUMBER
, p_init_msg_list IN VARCHAR2
, p_commit IN VARCHAR2
, p_substitution_id IN NUMBER Default NULL
, p_substitution_name IN VARCHAR2 Default NULL
, p_substitution_version IN NUMBER Default NULL
, p_update_table IN update_tbl_type
, x_message_count OUT NOCOPY NUMBER
, x_message_list OUT NOCOPY VARCHAR2
, x_return_status OUT NOCOPY VARCHAR2
) IS
-- Cursor definition
CURSOR get_old_substitution_rec(vSubstitution_id NUMBER) IS
Select *
From gmd_item_substitution_hdr
Where substitution_id = vSubstitution_id;
l_api_name CONSTANT VARCHAR2(30) := 'Update_substitution_header';
substitution_update_failure EXCEPTION;
,'Update_substitution_header'
,gmd_substitution_pub.m_pkg_name) THEN
RAISE invalid_version;
RAISE substitution_update_failure;
RAISE substitution_update_failure;
IF NOT is_update_allowed(l_substitution_id) THEN
RAISE substitution_update_failure;
RAISE substitution_update_failure;
FOR i in 1 .. p_update_table.count LOOP
-- Start date should be less than End date
-- Convert the date from canonical format
IF (Upper(p_update_table(i).p_col_to_update) = 'START_DATE') THEN
l_substitution_hdr_rec.start_date :=
FND_DATE.canonical_to_date(p_update_table(i).p_value);
RAISE substitution_update_failure;
ELSIF (Upper(p_update_table(i).p_col_to_update) = 'SUBSTITUTION_DESCRIPTION') THEN
l_substitution_hdr_rec.substitution_description := p_update_table(i).p_value;
ELSIF (Upper(p_update_table(i).p_col_to_update) = 'PREFERENCE') THEN
IF (p_update_table(i).p_value < 0 ) THEN
FND_MESSAGE.SET_NAME ('GMD', 'GMD_NEGATIVE_FIELDS');
RAISE substitution_update_failure;
l_substitution_hdr_rec.preference := p_update_table(i).p_value;
ELSIF (Upper(p_update_table(i).p_col_to_update) = 'END_DATE') THEN
l_substitution_hdr_rec.end_date :=
FND_DATE.canonical_to_date(p_update_table(i).p_value);
IF (p_update_table(i).p_value IS NOT NULL) THEN
IF (l_substitution_hdr_rec.start_date > l_substitution_hdr_rec.end_date) THEN
FND_MESSAGE.SET_NAME('GMD', 'QC_MIN_MAX_DATE');
RAISE substitution_update_failure;
ELSIF (Upper(p_update_table(i).p_col_to_update) = 'ORIGINAL_QTY') THEN
IF (p_update_table(i).p_value < 0) THEN
FND_MESSAGE.SET_NAME ('GMD', 'GMD_NEGATIVE_FIELDS');
RAISE substitution_update_failure;
l_substitution_hdr_rec.original_qty := p_update_table(i).p_value;
ELSIF (Upper(p_update_table(i).p_col_to_update) = 'REPLACEMENT_UOM_TYPE') THEN
-- replacement_uom_type -- Default it to value = 1 (original Item uom)
IF (p_update_table(i).p_value < 0) THEN
FND_MESSAGE.SET_NAME ('GMD', 'GMD_NEGATIVE_FIELDS');
RAISE substitution_update_failure;
ELSIF (p_update_table(i).p_value > 2) THEN
FND_MESSAGE.SET_NAME ('GMD', 'GMD_INV_REPLACEMENT_TYPE');
RAISE substitution_update_failure;
l_substitution_hdr_rec.replacement_uom_type := p_update_table(i).p_value;
ELSIF (Upper(p_update_table(i).p_col_to_update) IN
('ORIGINAL_UOM'
,'OWNER_ORGANIZATION_ID'
,'ORIGINAL_INVENTORY_ITEM_ID')) THEN
FND_MESSAGE.SET_NAME('GMD', 'GMD_INVALID_COL_UPDATES');
FND_MESSAGE.SET_TOKEN('NAME',p_update_table(i).p_col_to_update);
RAISE substitution_update_failure;
ELSIF (Upper(p_update_table(i).p_col_to_update) =
('SUBSTITUTION_STATUS')) THEN
FND_MESSAGE.SET_NAME('GMD', 'GMD_NOT_USE_API_UPD_STATUS');
RAISE substitution_update_failure;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE1') THEN
l_substitution_hdr_rec.ATTRIBUTE1 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE2') THEN
l_substitution_hdr_rec.ATTRIBUTE2 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE3') THEN
l_substitution_hdr_rec.ATTRIBUTE3 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE4') THEN
l_substitution_hdr_rec.ATTRIBUTE4 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE5') THEN
l_substitution_hdr_rec.ATTRIBUTE5 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE6') THEN
l_substitution_hdr_rec.ATTRIBUTE6 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE7') THEN
l_substitution_hdr_rec.ATTRIBUTE7 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE8') THEN
l_substitution_hdr_rec.ATTRIBUTE8 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE9') THEN
l_substitution_hdr_rec.ATTRIBUTE9 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE10') THEN
l_substitution_hdr_rec.ATTRIBUTE10 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE11') THEN
l_substitution_hdr_rec.ATTRIBUTE11 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE12') THEN
l_substitution_hdr_rec.ATTRIBUTE12 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE13') THEN
l_substitution_hdr_rec.ATTRIBUTE13 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE14') THEN
l_substitution_hdr_rec.ATTRIBUTE14 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE15') THEN
l_substitution_hdr_rec.ATTRIBUTE15 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE16') THEN
l_substitution_hdr_rec.ATTRIBUTE16 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE17') THEN
l_substitution_hdr_rec.ATTRIBUTE17 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE18') THEN
l_substitution_hdr_rec.ATTRIBUTE18 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE19') THEN
l_substitution_hdr_rec.ATTRIBUTE19 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE20') THEN
l_substitution_hdr_rec.ATTRIBUTE20 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE21') THEN
l_substitution_hdr_rec.ATTRIBUTE21 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE22') THEN
l_substitution_hdr_rec.ATTRIBUTE22 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE23') THEN
l_substitution_hdr_rec.ATTRIBUTE23 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE24') THEN
l_substitution_hdr_rec.ATTRIBUTE24 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE25') THEN
l_substitution_hdr_rec.ATTRIBUTE25 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE26') THEN
l_substitution_hdr_rec.ATTRIBUTE26 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE27') THEN
l_substitution_hdr_rec.ATTRIBUTE27 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE28') THEN
l_substitution_hdr_rec.ATTRIBUTE28 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE29') THEN
l_substitution_hdr_rec.ATTRIBUTE29 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE30') THEN
l_substitution_hdr_rec.ATTRIBUTE30 := p_update_table(i).p_value;
ELSIF (UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE_CATEGORY') THEN
l_substitution_hdr_rec.ATTRIBUTE_CATEGORY := p_update_table(i).p_value;
FND_MESSAGE.SET_TOKEN('NAME', p_update_table(i).p_col_to_update);
RAISE substitution_update_failure;
l_substitution_hdr_rec.last_update_date := SYSDATE;
l_substitution_hdr_rec.last_updated_by := gmd_api_grp.user_id;
l_substitution_hdr_rec.last_update_login := gmd_api_grp.login_id;
GMD_SUBSTITUTION_PVT.Update_substitution_header
( p_substitution_hdr_rec => l_substitution_hdr_rec
, x_message_count => x_message_count
, x_message_list => x_message_list
, x_return_status => x_return_status
);
RAISE substitution_update_failure;
WHEN substitution_update_failure OR invalid_version OR setup_failure THEN
fnd_msg_pub.count_and_get (
p_count => x_message_count
,p_encoded => FND_API.g_false
,p_data => x_message_list);
END Update_substitution_header;
/* Update_substitution_detail */
/* */
/* DESCRIPTION: */
/* */
/* */
/* History : */
/* Rajender Nalla 09-OCT-06 Initial implementation. */
/* =============================================================== */
PROCEDURE Update_substitution_detail
( p_api_version IN NUMBER
, p_init_msg_list IN VARCHAR2
, p_commit IN VARCHAR2
, p_substitution_line_id IN NUMBER Default NULL
, p_substitution_id IN NUMBER Default NULL
, p_substitution_name IN VARCHAR2 Default NULL
, p_substitution_version IN NUMBER Default NULL
, p_update_table IN update_tbl_type
, x_message_count OUT NOCOPY NUMBER
, x_message_list OUT NOCOPY VARCHAR2
, x_return_status OUT NOCOPY VARCHAR2
) IS
CURSOR get_subsdtl_rec_using_line_id(vSubstitution_line_id NUMBER) IS
Select *
From gmd_item_substitution_dtl
Where substitution_line_id = vSubstitution_line_id;
Select *
From gmd_item_substitution_dtl
Where substitution_id = vSubstitution_id;
Select original_inventory_item_id, replacement_uom_type
From gmd_item_substitution_hdr_b
Where substitution_id = vSubstitution_id;
l_api_name CONSTANT VARCHAR2(30) := 'Update_substitution_detail';
substitution_update_failure EXCEPTION;
,'Update_substitution_header'
,gmd_substitution_pub.m_pkg_name) THEN
RAISE invalid_version;
RAISE substitution_update_failure;
RAISE substitution_update_failure;
RAISE substitution_update_failure;
IF NOT is_update_allowed(l_substitution_dtl_rec.substitution_id) THEN
RAISE substitution_update_failure;
FOR i in 1 .. p_update_table.count LOOP
-- If substitute item uom is being changed - check if it is convertible
-- to the original item uom.
IF UPPER(p_update_table(i).p_col_to_update) = 'DETAIL_UOM' THEN
IF p_update_table(i).p_value IS NOT NULL THEN
IF (NOT(gma_valid_grp.validate_um(p_update_table(i).p_value))) THEN
FND_MESSAGE.SET_NAME('GMA', 'SY_INVALID_UM_CODE');
RAISE substitution_update_failure;
,from_unit => p_update_table(i).p_value
,to_unit => l_substitute_prim_item_um
,from_name => NULL
,to_name => NULL);
FND_MESSAGE.SET_TOKEN('FROM_UOM', p_update_table(i).p_value);
RAISE substitution_update_failure;
,from_unit => p_update_table(i).p_value
,to_unit => l_original_prim_item_um
,from_name => NULL
,to_name => NULL);
FND_MESSAGE.SET_TOKEN('FROM_UOM', p_update_table(i).p_value);
RAISE substitution_update_failure;
l_substitution_dtl_rec.detail_uom := p_update_table(i).p_value;
ELSIF UPPER(p_update_table(i).p_col_to_update) = 'UNIT_QTY' THEN
IF p_update_table(i).p_value IS NULL THEN
FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
RAISE substitution_update_failure;
ELSIF (p_update_table(i).p_value < 0 ) THEN
FND_MESSAGE.SET_NAME ('GMD', 'GMD_NEGATIVE_FIELDS');
RAISE substitution_update_failure;
l_substitution_dtl_rec.unit_qty := p_update_table(i).p_value;
ELSIF UPPER(p_update_table(i).p_col_to_update) = 'INVENTORY_ITEM_ID' THEN
-- raise exception
FND_MESSAGE.SET_NAME('GMD', 'GMD_INVALID_COL_UPDATES');
FND_MESSAGE.SET_TOKEN('NAME',p_update_table(i).p_col_to_update);
RAISE substitution_update_failure;
FND_MESSAGE.SET_TOKEN('NAME', p_update_table(i).p_col_to_update);
RAISE substitution_update_failure;
l_substitution_dtl_rec.last_update_date := SYSDATE;
l_substitution_dtl_rec.last_updated_by := gmd_api_grp.user_id;
l_substitution_dtl_rec.last_update_login := gmd_api_grp.login_id;
GMD_SUBSTITUTION_PVT.Update_substitution_detail
( p_substitution_dtl_rec => l_substitution_dtl_rec
, x_message_count => x_message_count
, x_message_list => x_message_list
, x_return_status => x_return_status
);
RAISE substitution_update_failure;
WHEN substitution_update_failure OR invalid_version OR setup_failure THEN
fnd_msg_pub.count_and_get (
p_count => x_message_count
,p_encoded => FND_API.g_false
,p_data => x_message_list);
END Update_substitution_detail;
/* Delete_formula_association */
/* */
/* DESCRIPTION: */
/* */
/* */
/* History : */
/* Rajender Nalla 09-OCT-06 Initial implementation. */
/* =============================================================== */
PROCEDURE Delete_formula_association
( p_api_version IN NUMBER
, p_init_msg_list IN VARCHAR2
, p_commit IN VARCHAR2
, p_formula_substitution_id IN NUMBER Default NULL
, p_substitution_id IN NUMBER Default NULL
, p_substitution_name IN VARCHAR2 Default NULL
, p_substitution_version IN NUMBER Default NULL
, p_formula_id IN NUMBER Default NULL
, p_formula_no IN VARCHAR2 Default NULL
, p_formula_vers IN NUMBER Default NULL
, x_message_count OUT NOCOPY NUMBER
, x_message_list OUT NOCOPY VARCHAR2
, x_return_status OUT NOCOPY VARCHAR2
) IS
CURSOR get_formula_substitution_id(vSubstitution_id NUMBER
,vformula_id NUMBER) IS
SELECT formula_substitution_id
FROM gmd_formula_substitution
WHERE substitution_id = vSubstitution_id
AND formula_id = vformula_id;
SELECT substitution_id
FROM gmd_formula_substitution
WHERE formula_substitution_id = vformula_Substitution_id;
l_api_name CONSTANT VARCHAR2(30) := 'Delete_formula_association';
substitution_delete_failure EXCEPTION;
,'Delete_formula_association'
,gmd_substitution_pub.m_pkg_name) THEN
RAISE invalid_version;
RAISE substitution_delete_failure;
RAISE substitution_delete_failure;
RAISE substitution_delete_failure;
RAISE substitution_delete_failure;
RAISE substitution_delete_failure;
RAISE substitution_delete_failure;
IF NOT is_update_allowed(l_substitution_id) THEN
RAISE substitution_delete_failure;
GMD_SUBSTITUTION_PVT.Delete_formula_association
( p_formula_substitution_id => l_formula_substitution_id
, x_message_count => x_message_count
, x_message_list => x_message_list
, x_return_status => x_return_status
);
RAISE substitution_delete_failure;
WHEN substitution_delete_failure OR invalid_version OR setup_failure THEN
fnd_msg_pub.count_and_get (
p_count => x_message_count
,p_encoded => FND_API.g_false
,p_data => x_message_list);
END Delete_formula_association;