The following lines contain the word 'select', 'insert', 'update' or 'delete':
x_this_level.delete ;
x_lower_level.delete ;
SELECT period_status
INTO l_period_status
FROM gmf_period_statuses
WHERE period_id = x_header_rec.period_id;
IF p_operation IN ('UPDATE','DELETE')
THEN
add_header_to_error_stack(p_header_rec);
IF (l_period_status = 'F') AND (p_operation = 'INSERT')
THEN
SELECT NVL(MAX(rollover_ind),0)
INTO l_rollover_ind
FROM cm_cmpt_dtl
WHERE inventory_item_id = x_header_rec.inventory_item_id
AND organization_id = x_header_rec.organization_id
AND period_id = x_header_rec.period_id
AND cost_type_id = x_header_rec.cost_type_id;
FND_MESSAGE.SET_NAME('GMF','GMF_API_IC_CANNT_INSERT_CMPTS');
* In case of delete, if cmpntcost_id is supplied skip all validations and use *
* cmpntcost_id to delete the records If cmpntcost_id is not supplied then do validations *
* on all unique key columns only *
*****************************************************************************************/
IF ((p_operation = 'DELETE')
AND ((p_this_level(i).cmpntcost_id <> FND_API.G_MISS_NUM)
OR (p_this_level(i).cmpntcost_id IS NOT NULL)))
THEN
add_header_to_error_stack(p_header_rec);
* In case of update,if cmpntcost_id is supplied skip validations on columns *
* of unique key i.e., cmpntcls and alys code If cmpntcost_id is not supplied *
* then do all validations *
*****************************************************************************/
IF ((p_operation = 'UPDATE')
AND ((p_this_level(i).cmpntcost_id <> FND_API.G_MISS_NUM)
OR (p_this_level(i).cmpntcost_id IS NOT NULL)))
THEN
l_cmpntcost_id := p_this_level(i).cmpntcost_id;
* Enough of validations for delete. *
* For update and insert we should do all validations. *
******************************************************/
IF (p_operation <> 'DELETE')
THEN
/*******************************************************************************************************
* Component Cost, In the form the format mask for this is : 999999999D999999999(999,999,999.999999999) *
* To put that check here, the cost should not be >= 1,000,000,000 *
*******************************************************************************************************/
IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
THEN
log_msg('validating this level Component Cost('||i||') for format : '||p_this_level(i).cmpnt_cost);
ELSIF (p_this_level(i).cmpnt_cost = FND_API.G_MISS_NUM AND p_operation = 'UPDATE')
OR (p_operation = 'INSERT')
THEN
add_header_to_error_stack(p_header_rec);
ELSIF (p_this_level(i).burden_ind = FND_API.G_MISS_NUM AND p_operation = 'UPDATE')
OR (p_operation = 'INSERT')
THEN
add_header_to_error_stack(p_header_rec); -- Bug 2659435
log_msg('validating this level delete_mark('||i||') :' || p_this_level(i).delete_mark);
IF (p_this_level(i).delete_mark <> FND_API.G_MISS_NUM)
AND (p_this_level(i).delete_mark IS NOT NULL)
THEN
IF p_this_level(i).delete_mark NOT IN (0,1)
THEN
add_header_to_error_stack(p_header_rec);
FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_DELETE_MARK');
FND_MESSAGE.SET_TOKEN('DELETE_MARK',p_this_level(i).delete_mark);
ELSIF (p_this_level(i).delete_mark = FND_API.G_MISS_NUM AND p_operation = 'UPDATE')
OR (p_operation = 'INSERT')
THEN
add_header_to_error_stack(p_header_rec);
FND_MESSAGE.SET_NAME('GMF','GMF_API_DELETE_MARK_REQ');
IF (p_operation = 'UPDATE') AND (p_this_level(i).delete_mark = 1)
THEN
add_header_to_error_stack(p_header_rec);
* query the Cmpntcost_Id. This is done only in case of Update and Delete *
**********************************************************************************/
IF (p_operation IN ('UPDATE','DELETE')
AND ((p_this_level(i).cmpntcost_id <> FND_API.G_MISS_NUM)
OR (p_this_level(i).cmpntcost_id IS NOT NULL)))
THEN
add_header_to_error_stack(p_header_rec);
x_this_level(l_idx).costcalc_orig := 3 ; -- insert default value 3 as API Load
IF p_operation = 'DELETE' THEN
x_this_level(l_idx).delete_mark := 1 ;
x_this_level(l_idx).delete_mark := 0 ;
log_msg('x_delete_mark('||l_idx||'): '||x_this_level(l_idx).delete_mark);
* In case of delete, if cmpntcost_id is supplied skip all validations and use *
* cmpntcost_id to delete the records, if cmpntcost_id is not supplied then *
* do validations on all unique key columns only *
******************************************************************************/
IF ((p_operation = 'DELETE')
AND ((p_lower_level(i).cmpntcost_id <> FND_API.G_MISS_NUM)
OR (p_lower_level(i).cmpntcost_id IS NOT NULL)))
THEN
add_header_to_error_stack(p_header_rec);
IF ((p_operation = 'UPDATE')
AND ((p_lower_level(i).cmpntcost_id <> FND_API.G_MISS_NUM)
OR (p_lower_level(i).cmpntcost_id IS NOT NULL)))
THEN
l_cmpntcost_id := p_lower_level(i).cmpntcost_id;
* Enough of validations for delete. *
* For update and insert we should do all validations. *
******************************************************/
IF (p_operation <> 'DELETE')
THEN
/***************************************************************************************
* Component Cost *
* In the form the format mask for this is : 999999999D999999999(999,999,999.999999999) *
* To put that check here, the cost should not be >= 1,000,000,000 *
***************************************************************************************/
IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
THEN
log_msg('validating lower level Component Cost('||i||') for format : '||p_lower_level(i).cmpnt_cost);
ELSIF (p_lower_level(i).cmpnt_cost = FND_API.G_MISS_NUM AND p_operation = 'UPDATE')
OR (p_operation = 'INSERT')
THEN
add_header_to_error_stack(p_header_rec);
log_msg('validating lower level delete_mark('||i||') :' || p_lower_level(i).delete_mark);
IF (p_lower_level(i).delete_mark <> FND_API.G_MISS_NUM)
AND (p_lower_level(i).delete_mark IS NOT NULL)
THEN
IF p_lower_level(i).delete_mark NOT IN (0,1)
THEN
add_header_to_error_stack(p_header_rec);
FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_DELETE_MARK');
FND_MESSAGE.SET_TOKEN('DELETE_MARK',p_lower_level(i).delete_mark);
ELSIF (p_lower_level(i).delete_mark = FND_API.G_MISS_NUM AND p_operation = 'UPDATE')
OR (p_operation = 'INSERT')
THEN
add_header_to_error_stack(p_header_rec);
FND_MESSAGE.SET_NAME('GMF','GMF_API_DELETE_MARK_REQ');
IF (p_operation = 'UPDATE') AND (p_lower_level(i).delete_mark = 1)
THEN
add_header_to_error_stack(p_header_rec);
* query the Cmpntcost_Id. This is done only in case of Update and Delete *
**********************************************************************************/
IF (p_operation IN ('UPDATE','DELETE')
AND ((p_lower_level(i).cmpntcost_id <> FND_API.G_MISS_NUM)
OR (p_lower_level(i).cmpntcost_id IS NOT NULL)))
THEN
add_header_to_error_stack(p_header_rec);
IF p_operation = 'DELETE' THEN
x_lower_level(l_idx).delete_mark := 1 ;
x_lower_level(l_idx).delete_mark := 0 ;
log_msg('x_delete_mark('||l_idx||'): '||x_lower_level(l_idx).delete_mark);
p_operation => 'INSERT',
x_header_rec => l_header_rec,
x_this_level => l_this_level_dtl_tbl,
x_lower_level => l_lower_level_dtl_tbl,
x_user_id => l_user_id,
x_return_status => l_return_status
);
log_msg('Calling private API to insert record...');
* Return if insert fails for any reason *
****************************************/
IF l_return_status = FND_API.G_RET_STS_ERROR
THEN
add_header_to_error_stack(l_header_rec);
PROCEDURE Update_Item_Cost
(
p_api_version IN NUMBER,
p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
p_commit IN VARCHAR2 := FND_API.G_FALSE,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_header_rec IN Header_Rec_Type,
p_this_level_dtl_tbl IN This_Level_Dtl_Tbl_Type,
p_lower_level_dtl_Tbl IN Lower_Level_Dtl_Tbl_Type
)
IS
/******************
* Local Variables *
******************/
l_api_name CONSTANT VARCHAR2(30) := 'Update_Item_Cost' ;
SAVEPOINT UPDATE_ITEM_COST_PUB ;
log_msg('Beginning Update Item Cost process.');
p_operation => 'UPDATE',
x_header_rec => l_header_rec,
x_this_level => l_this_level_dtl_tbl,
x_lower_level => l_lower_level_dtl_tbl,
x_user_id => l_user_id,
x_return_status => l_return_status
);
log_msg('Calling private API to update records...');
GMF_ITEMCOST_PVT.UPDATE_ITEM_COST
(
p_api_version => 3.0,
p_init_msg_list => FND_API.G_FALSE,
p_commit => FND_API.G_FALSE,
x_return_status => l_return_status,
x_msg_count => l_count,
x_msg_data => l_data,
p_header_rec => l_header_rec,
p_this_level_dtl_tbl=> l_this_level_dtl_tbl,
p_lower_level_dtl_Tbl=> l_lower_level_dtl_tbl,
p_user_id => l_user_id
);
* Return if insert fails for any reason *
****************************************/
IF l_return_status = FND_API.G_RET_STS_ERROR
THEN
add_header_to_error_stack(p_header_rec);
ROLLBACK TO UPDATE_ITEM_COST_PUB;
ROLLBACK TO UPDATE_ITEM_COST_PUB;
ROLLBACK TO UPDATE_ITEM_COST_PUB;
END UPDATE_ITEM_COST ;
PROCEDURE Delete_Item_Cost
(
p_api_version IN NUMBER,
p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
p_commit IN VARCHAR2 := FND_API.G_FALSE,
x_return_status OUT NOCOPY VARCHAR2,
x_msg_count OUT NOCOPY NUMBER,
x_msg_data OUT NOCOPY VARCHAR2,
p_header_rec IN Header_Rec_Type,
p_this_level_dtl_tbl IN This_Level_Dtl_Tbl_Type,
p_lower_level_dtl_Tbl IN Lower_Level_Dtl_Tbl_Type
)
IS
/******************
* Local Variables *
******************/
l_api_name CONSTANT VARCHAR2(30) := 'Delete_Item_Cost' ;
SAVEPOINT DELETE_ITEM_COST_PUB ;
log_msg('Beginning Delete Item Cost process.');
p_operation => 'DELETE',
x_header_rec => l_header_rec,
x_this_level => l_this_level_dtl_tbl,
x_lower_level => l_lower_level_dtl_tbl,
x_user_id => l_user_id,
x_return_status => l_return_status
);
log_msg('Calling private API to delete records...');
GMF_ITEMCOST_PVT.UPDATE_ITEM_COST
(
p_api_version => 3.0,
p_init_msg_list => FND_API.G_FALSE,
p_commit => FND_API.G_FALSE,
x_return_status => l_return_status,
x_msg_count => l_count,
x_msg_data => l_data,
p_header_rec => l_header_rec,
p_this_level_dtl_tbl => l_this_level_dtl_tbl,
p_lower_level_dtl_Tbl => l_lower_level_dtl_tbl,
p_user_id => l_user_id
);
* Return if update fails for any reason *
****************************************/
IF l_return_status = FND_API.G_RET_STS_ERROR
THEN
add_header_to_error_stack(p_header_rec);
ROLLBACK TO DELETE_ITEM_COST_PUB;
ROLLBACK TO DELETE_ITEM_COST_PUB;
ROLLBACK TO DELETE_ITEM_COST_PUB;
END DELETE_ITEM_COST ;
l_api_name CONSTANT VARCHAR2(30) := 'Delete_Item_Cost' ;
* Return if update fails for any reason *
****************************************/
IF l_return_status = FND_API.G_RET_STS_ERROR
THEN
RAISE FND_API.G_EXC_ERROR;