The following lines contain the word 'select', 'insert', 'update' or 'delete':
FUNCTION Insert_Fully_Prorated_Rule(
X_invoice_id IN NUMBER,
X_line_number IN NUMBER,
X_error_code OUT NOCOPY VARCHAR2) RETURN BOOLEAN
IS
l_generate_dists AP_INVOICE_LINES.GENERATE_DISTS%TYPE;
'insert_fully_prorated_rule';
SELECT generate_dists
INTO l_generate_dists
FROM ap_invoice_lines
WHERE invoice_id = X_invoice_id
AND line_number = X_line_number;
SELECT COUNT(*)
INTO l_other_alloc_rules
FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_line_number;
INSERT INTO ap_allocation_rules(
invoice_id,
chrg_invoice_line_number,
rule_type,
rule_generation_type,
status,
creation_date,
created_by,
last_updated_by,
last_update_date,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
VALUES(
X_invoice_id, -- invoice_id
X_line_number, -- chrg_invoice_line_number
'PRORATION', -- rule_type
'SYSTEM', -- rule_generation_type
'PENDING', -- status
SYSDATE, -- creation_date
FND_GLOBAL.USER_ID, -- created_by
0, -- last_updated_by
SYSDATE, -- last_update_date
FND_GLOBAL.LOGIN_ID, -- last_update_login
FND_GLOBAL.PROG_APPL_ID, -- program_application_id
FND_GLOBAL.CONC_PROGRAM_ID,-- program_id
SYSDATE, -- program_update_date
FND_GLOBAL.CONC_REQUEST_ID -- request_id
);
END insert_fully_prorated_rule;
FUNCTION insert_from_line_group_number (
X_invoice_id IN NUMBER,
X_line_number IN NUMBER,
X_error_code OUT NOCOPY VARCHAR2) RETURN BOOLEAN
IS
l_generate_dists AP_INVOICE_LINES.GENERATE_DISTS%TYPE;
'insert_from_prorated_rule';
SELECT ail.generate_dists,
ail.line_group_number,
ail.amount , --bug6653070
ai.invoice_currency_code
INTO l_generate_dists,
l_line_group_number,
l_amount_to_prorate,
l_inv_curr_code
FROM ap_invoice_lines ail,
ap_invoices ai
WHERE ail.invoice_id = X_invoice_id
AND ail.line_number = x_line_number
AND ai.invoice_id = X_invoice_id;
SELECT COUNT(*)
INTO l_count_non_item_lines
FROM ap_invoice_lines
WHERE invoice_id = X_invoice_id
AND line_number <> X_line_number
AND line_group_number = l_line_group_number
AND line_type_lookup_code <> 'ITEM';
SELECT SUM(amount)
INTO l_prorating_total
FROM ap_invoice_lines
WHERE invoice_id = X_invoice_id
AND line_number <> X_line_number
AND line_group_number = l_line_group_number
AND line_type_lookup_code = 'ITEM'
AND nvl(match_type,'NOT_MATCHED') NOT IN
('PRICE_CORRECTION', 'QTY_CORRECTION','LINE_CORRECTION');
SELECT COUNT(*)
INTO l_other_alloc_rules
FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_line_number;
INSERT INTO ap_allocation_rules(
invoice_id,
chrg_invoice_line_number,
rule_type,
rule_generation_type,
status,
creation_date,
created_by,
last_updated_by,
last_update_date,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
VALUES(
X_invoice_id, -- invoice_id
X_line_number, -- chrg_invoice_line_number
'AMOUNT', -- rule_type
'SYSTEM', -- rule_generation_type
'PENDING', -- status
SYSDATE, -- creation_date
FND_GLOBAL.USER_ID, -- created_by
0, -- last_updated_by
SYSDATE, -- last_update_date
FND_GLOBAL.LOGIN_ID, -- last_update_login
FND_GLOBAL.PROG_APPL_ID, -- program_application_id
FND_GLOBAL.CONC_PROGRAM_ID,-- program_id
SYSDATE, -- program_update_date
FND_GLOBAL.CONC_REQUEST_ID -- request_id
);
INSERT INTO ap_allocation_rule_lines (
invoice_id,
chrg_invoice_line_number,
to_invoice_line_number,
amount,
creation_date,
created_by,
last_updated_by,
last_update_date,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
SELECT
X_invoice_id, -- invoice_id
X_line_number, -- chrg_invoice_line_number
line_number, -- to_invoice_line_number
ap_utilities_pkg.ap_round_currency(l_amount_to_prorate * amount /
l_prorating_total, l_inv_curr_code),
-- amount
SYSDATE, -- creation_date
FND_GLOBAL.USER_ID, -- created_by
0, -- last_updated_by
SYSDATE, -- last_update_date
FND_GLOBAL.LOGIN_ID, -- last_update_login
FND_GLOBAL.PROG_APPL_ID, -- program_application_id
FND_GLOBAL.CONC_PROGRAM_ID,-- program_id
SYSDATE, -- program_update_date
FND_GLOBAL.CONC_REQUEST_ID -- request_id
FROM ap_invoice_lines
WHERE invoice_id = X_invoice_id
AND line_number <> X_line_number
AND line_group_number = l_line_group_number
AND line_type_lookup_code = 'ITEM'
AND nvl(match_type,'NOT_MATCHED') NOT IN
('PRICE_CORRECTION', 'QTY_CORRECTION','LINE_CORRECTION');
SELECT SUM(amount)
INTO l_total_prorated
FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_line_number;
UPDATE ap_allocation_rule_lines
SET amount = amount + (l_amount_to_prorate - l_total_prorated)
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_line_number
AND to_invoice_line_number =
(SELECT (MAX(ail1.line_number))
FROM ap_invoice_lines ail1
WHERE ail1.invoice_id = X_invoice_id
AND ail1.line_number <> X_line_number
AND ail1.amount <> 0
AND ail1.line_group_number = l_line_group_number
AND ABS(ail1.amount) >=
( SELECT MAX(ABS(ail2.amount))
FROM ap_invoice_lines ail2
WHERE ail2.invoice_id = X_invoice_id
AND ail2.line_number <> X_line_number
AND ail2.line_number <> ail1.line_number
AND ail2.line_group_number =
l_line_group_number));
END insert_from_line_group_number;
Procedure Insert_Percentage_Alloc_Rule(
X_Invoice_id IN NUMBER,
X_Chrg_Line_Number IN NUMBER,
X_To_Line_Number IN NUMBER,
X_Rule_Generation_Type IN VARCHAR2 DEFAULT 'SYSTEM',
X_Status IN VARCHAR2 DEFAULT 'PENDING',
X_Percentage IN NUMBER,
X_Calling_Sequence IN VARCHAR2) IS
l_debug_info VARCHAR2(100);
current_calling_sequence := 'Insert_Percentage_Alloc_Rule<-'||X_Calling_Sequence;
l_debug_info := 'Insert record into AP_ALLOCATION_RULES';
Insert into AP_ALLOCATION_RULES
(Invoice_id,
Chrg_Invoice_Line_Number,
Rule_Type,
Rule_Generation_Type,
Status,
Creation_Date,
Created_By,
Last_Updated_By,
Last_Update_Date,
Last_Update_Login,
Program_Application_Id,
Program_Id,
Program_Update_Date,
Request_Id)
values(x_invoice_id,
x_chrg_line_number,
'PERCENTAGE',
x_rule_generation_type,
x_status,
sysdate,
fnd_global.user_id,
fnd_global.user_id,
sysdate,
fnd_global.login_id,
NULL,
NULL,
NULL,
NULL);
l_debug_info := 'Inserting record into AP_ALLOCATION_RULE_LINES';
Insert Into ap_allocation_rule_lines (
Invoice_id,
chrg_invoice_line_number,
to_invoice_line_number,
percentage,
amount,
creation_date,
created_by,
last_updated_by,
last_update_date,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
values(x_invoice_id,
x_chrg_line_number,
x_to_line_number,
x_percentage,
NULL,
sysdate,
fnd_global.user_id,
fnd_global.user_id,
sysdate,
fnd_global.login_id,
NULL,
NULL,
NULL,
NULL);
END Insert_Percentage_Alloc_Rule;
SELECT invoice_id,
line_number
FROM ap_invoice_lines
WHERE line_type_lookup_code in ('FREIGHT', 'MISCELLANEOUS')
AND generate_dists <> 'D' -- Bug 5131721
AND NVL(match_type, 'NOT_MATCHED') <> 'OTHER_TO_RECEIPT'
AND invoice_id = X_invoice_id
ORDER BY line_number;
SELECT COUNT(*)
INTO l_chrg_lines_count
FROM ap_invoice_lines
WHERE line_type_lookup_code in ('FREIGHT', 'MISCELLANEOUS', 'TAX')
AND generate_dists <> 'D' -- Bug 5131721
AND NVL(match_type, 'NOT_MATCHED') <> 'OTHER_TO_RECEIPT'
AND invoice_id = X_invoice_id;
SELECT ail.generate_dists,
ail.amount, --bug6653070
ai.invoice_currency_code
INTO l_generate_dists,
l_amount_to_prorate,
l_inv_curr_code
FROM ap_invoice_lines ail,
ap_invoices ai
WHERE ail.invoice_id = X_invoice_id
AND ail.line_number = x_chrg_line_number
AND ai.invoice_id = X_invoice_id;
SELECT COUNT(*)
INTO l_alloc_rule
FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
SELECT rule_type,
status
INTO l_rule_type,
l_rule_status
FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
SELECT COUNT(*)
INTO l_alloc_rule_lines
FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
Ap_Allocation_Rules_Pkg.delete_allocation_lines(
X_invoice_id,
X_chrg_Line_number,
'Insert_fully_prorated_rule');
SELECT SUM(amount)
INTO l_prorating_total
FROM ap_invoice_lines
WHERE invoice_id = X_invoice_id
AND line_number <> X_chrg_line_number
AND line_type_lookup_code = 'ITEM'
AND nvl(match_type,'NOT_MATCHED') NOT IN
('PRICE_CORRECTION', 'QTY_CORRECTION','LINE_CORRECTION');
INSERT INTO ap_allocation_rules(
invoice_id,
chrg_invoice_line_number,
rule_type,
rule_generation_type,
status,
creation_date,
created_by,
last_updated_by,
last_update_date,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
VALUES(
X_invoice_id, -- invoice_id
X_chrg_line_number, -- chrg_invoice_line_number
'PRORATION', -- rule_type
'USER', -- rule_generation_type
'PENDING', -- status
SYSDATE, -- creation_date
FND_GLOBAL.USER_ID, -- created_by
0, -- last_updated_by
SYSDATE, -- last_update_date
FND_GLOBAL.LOGIN_ID, -- last_update_login
NULL, -- program_application_id
NULL, -- program_id
SYSDATE, -- program_update_date
NULL -- request_id
);
INSERT INTO ap_allocation_rule_lines_gt(
invoice_id,
chrg_invoice_line_number,
to_invoice_line_number,
amount,
creation_date,
created_by,
last_updated_by,
last_update_date,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
SELECT
X_invoice_id, -- invoice_id
X_chrg_line_number, -- chrg_invoice_line_number
line_number, -- to_invoice_line_number
ap_utilities_pkg.ap_round_currency(l_amount_to_prorate * amount /
l_prorating_total, l_inv_curr_code),
-- amount
SYSDATE, -- creation_date
FND_GLOBAL.USER_ID, -- created_by
0, -- last_updated_by
SYSDATE, -- last_update_date
FND_GLOBAL.LOGIN_ID, -- last_update_login
NULL, -- program_application_id
NULL, -- program_id
SYSDATE, -- program_update_date
NULL -- request_id
FROM ap_invoice_lines
WHERE invoice_id = X_invoice_id
AND line_number <> X_chrg_line_number
AND line_type_lookup_code = 'ITEM'
AND nvl(match_type,'NOT_MATCHED') NOT IN
('PRICE_CORRECTION', 'QTY_CORRECTION','LINE_CORRECTION');
INSERT INTO ap_allocation_rule_lines(
invoice_id,
chrg_invoice_line_number,
to_invoice_line_number,
amount,
creation_date,
created_by,
last_updated_by,
last_update_date,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
SELECT
X_invoice_id, -- invoice_id
X_chrg_line_number, -- chrg_invoice_line_number
line_number, -- to_invoice_line_number
ap_utilities_pkg.ap_round_currency(l_amount_to_prorate * amount /
l_prorating_total, l_inv_curr_code),
-- amount
SYSDATE, -- creation_date
FND_GLOBAL.USER_ID, -- created_by
0, -- last_updated_by
SYSDATE, -- last_update_date
FND_GLOBAL.LOGIN_ID, -- last_update_login
NULL, -- program_application_id
NULL, -- program_id
SYSDATE, -- program_update_date
NULL -- request_id
FROM ap_invoice_lines
WHERE invoice_id = X_invoice_id
AND line_number <> X_chrg_line_number
AND line_type_lookup_code = 'ITEM'
AND nvl(match_type,'NOT_MATCHED') NOT IN
('PRICE_CORRECTION', 'QTY_CORRECTION','LINE_CORRECTION');
SELECT SUM(amount)
INTO l_total_prorated
FROM ap_allocation_rule_lines_gt
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
UPDATE ap_allocation_rule_lines_gt
SET amount = amount + (l_amount_to_prorate - l_total_prorated)
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number
AND to_invoice_line_number =
(SELECT (MAX(ail1.line_number))
FROM ap_invoice_lines ail1
WHERE ail1.invoice_id = X_invoice_id
AND ail1.line_number <> X_chrg_line_number
AND ail1.amount <> 0
AND ABS(ail1.amount) >=
( SELECT MAX(ABS(ail2.amount))
FROM ap_invoice_lines ail2
WHERE ail2.invoice_id = X_invoice_id
AND ail2.line_number <> X_chrg_line_number
AND ail2.line_number <> ail1.line_number
)
);
SELECT SUM(amount)
INTO l_total_prorated
FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
UPDATE ap_allocation_rule_lines
SET amount = amount + (l_amount_to_prorate - l_total_prorated)
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number
AND to_invoice_line_number =
(SELECT (MAX(ail1.line_number))
FROM ap_invoice_lines ail1
WHERE ail1.invoice_id = X_invoice_id
AND ail1.line_number <> X_chrg_line_number
AND ail1.amount <> 0
AND ABS(ail1.amount) >=
( SELECT MAX(ABS(ail2.amount))
FROM ap_invoice_lines ail2
WHERE ail2.invoice_id = X_invoice_id
AND ail2.line_number <> X_chrg_line_number
AND ail2.line_number <> ail1.line_number
));
PROCEDURE Select_Item_Summary(
X_Invoice_id IN NUMBER,
X_to_invoice_line_number IN NUMBER,
X_allocated_total IN OUT NOCOPY NUMBER,
X_allocated_total_rtot_db IN OUT NOCOPY NUMBER,
X_calling_sequence IN VARCHAR2) IS
current_calling_sequence VARCHAR2(2000);
'Ap_Allocation_Rules_Pkg.select_Item_summary<-'||X_Calling_Sequence;
SELECT nvl(sum(amount), 0), nvl(sum(amount), 0)
INTO l_allocated_total, l_allocated_total_rtot_db
FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND to_invoice_line_number = X_to_invoice_line_number;
SELECT nvl(sum(amount), 0), nvl(sum(amount), 0)
INTO l_allocated_total_gt, l_allocated_total_gt_rtot_db
FROM ap_allocation_rule_lines_gt
WHERE invoice_id = X_invoice_id
AND to_invoice_line_number = X_to_invoice_line_number;
END Select_Item_Summary;
SELECT COUNT(*)
INTO l_alloc_rule_line
FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_invoice_line_number
AND to_invoice_line_number = X_to_invoice_line_number;
debug_info := ' Step 2 - Insert the allocation rule line.';
INSERT INTO ap_allocation_rule_Lines(
invoice_id,
chrg_invoice_line_number,
to_invoice_line_number,
percentage,
amount,
creation_date,
created_by,
last_update_date,
last_updated_by,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
VALUES(
X_invoice_id, -- invoice_id
X_chrg_invoice_line_number, -- chrg_invoice_line_number
X_to_invoice_line_number, -- to_invoice_line_number
X_allocated_percentage, -- percentage
X_allocated_Amount, -- amount
SYSDATE, -- creation_date
FND_GLOBAL.USER_ID, -- created_by
SYSDATE, -- last_update_date
FND_GLOBAL.USER_ID, -- last_updated_by
FND_GLOBAL.LOGIN_ID, -- last_update_login
NULL, -- program_application_id
NULL, -- program_id
NULL, -- program_update_date
NULL -- request_id
);
debug_info := ' Step 3 -Delete the allocation rule line. ';
DELETE FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_invoice_line_number
AND to_invoice_line_number = X_to_invoice_line_number;
X_error_code := 'COULD_NOT_INSERT_ALLOC_RULE';
debug_info := ' Step 4 - Update the allocation rule line ';
UPDATE ap_allocation_rule_lines
SET Amount = X_allocated_AMount,
percentage = X_allocated_percentage,
last_update_date = SYSDATE,
last_updated_by = FND_GLOBAL.user_id,
last_update_login = FND_GLOBAL.login_id
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_invoice_line_number
AND to_invoice_line_number = X_to_invoice_line_number;
X_error_code := 'COULD_NOT_INSERT_ALLOC_RULE';
FND_MESSAGE.SET_TOKEN('DEBUG_INFO','Inserting Allocation Rule Lines');
SELECT ai.invoice_date,
pv.vendor_type_lookup_code,
pv.vendor_name,
ai.invoice_num,
ai.invoice_currency_code,
ai.org_id
INTO X_invoice_date,
X_vendor_type_lookup_code,
X_vendor_name,
X_invoice_num,
X_invoice_currency_code,
l_org_id
FROM ap_invoices ai, po_vendors pv
WHERE ai.invoice_id = X_invoice_id
AND ai.vendor_id = pv.vendor_id;
SELECT gl.chart_of_accounts_id
INTO X_chart_of_accounts_id
FROM ap_system_parameters ap,
gl_sets_of_books gl
WHERE gl.set_of_books_id = ap.set_of_books_id
AND ap.org_id = l_org_id;
Procedure Update_row(
X_rowid IN OUT NOCOPY VARCHAR2,
X_Invoice_Id NUMBER,
X_chrg_invoice_line_number NUMBER,
X_Rule_Type VARCHAR2,
X_Rule_Generation_Type VARCHAR2,
X_Status VARCHAR2,
X_last_updated_by NUMBER,
X_last_update_date DATE,
X_last_update_login NUMBER,
X_calling_Sequence VARCHAR2) IS
current_calling_sequence VARCHAR2(2000);
current_calling_sequence := 'Ap_Allocation_Rules_Pkg.Update_Row<-'
||X_Calling_Sequence;
debug_info := 'Update ap_allocation_rules';
UPDATE ap_allocation_rules
SET invoice_id = X_invoice_id,
chrg_invoice_line_number = X_chrg_invoice_line_number,
rule_type = X_rule_type,
rule_generation_type = X_rule_generation_type,
status = X_status,
last_updated_by = X_last_updated_by,
last_update_date = X_last_update_Date,
last_update_login = X_last_update_login
WHERE rowid = X_rowid;
SELECT *
FROM AP_ALLOCATION_RULES
WHERE rowid = X_Rowid
FOR UPDATE of Invoice_Id NOWAIT;
debug_info := 'Select from ap_allocation_rules';
FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
SELECT ail.generate_dists,
X_new_chrg_line_amt, --bug6653070
ai.invoice_currency_code
INTO l_generate_dists,
l_amount_to_prorate,
l_inv_curr_code
FROM ap_invoice_lines ail,
ap_invoices ai
WHERE ail.invoice_id = X_invoice_id
AND ail.line_number = x_chrg_line_number
AND ai.invoice_id = X_invoice_id;
SELECT COUNT(*)
INTO l_alloc_rule
FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
SELECT rule_type,
status
INTO l_rule_type,
l_rule_status
FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
SELECT NVL(SUM(amount) ,0)
INTO l_prorating_total
FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
debug_info := 'Step 5 - Update ap_allocation_rule_lines ';
UPDATE ap_allocation_rule_lines
SET amount = ap_utilities_pkg.ap_round_currency(
l_amount_to_prorate*amount/
l_prorating_total, l_inv_curr_code),
last_updated_by = FND_GLOBAL.USER_ID,
last_update_date = SYSDATE,
last_update_login = FND_GLOBAL.LOGIN_ID
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
SELECT SUM(amount)
INTO l_total_prorated
FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
UPDATE ap_allocation_rule_lines
SET amount = amount + (l_amount_to_prorate - l_total_prorated)
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number
AND to_invoice_line_number =
(SELECT (MAX(arl1.to_invoice_line_number))
FROM ap_allocation_rule_lines arl1
WHERE arl1.invoice_id = X_invoice_id
AND arl1.chrg_invoice_line_number = X_chrg_line_number
AND arl1.amount <> 0
AND ABS(arl1.amount) >=
( SELECT MAX(ABS(arl2.amount))
FROM ap_allocation_rule_lines arl2
WHERE arl2.invoice_id = X_invoice_id
AND arl2.chrg_invoice_line_number = X_chrg_line_number
AND arl2.to_invoice_line_number <>
arl2.to_invoice_line_number
));
FUNCTION Delete_Allocations(
X_invoice_id IN NUMBER,
X_chrg_line_number IN NUMBER,
X_new_chrg_line_amt IN NUMBER,
X_Error_Code OUT NOCOPY VARCHAR2,
X_Debug_Info OUT NOCOPY VARCHAR2,
X_Debug_Context OUT NOCOPY VARCHAR2,
X_calling_sequence IN VARCHAR2)
RETURN BOOLEAN IS
l_generate_dists AP_INVOICE_LINES.GENERATE_DISTS%TYPE;
'Delete_Allocations';
SELECT ail.generate_dists,
X_new_chrg_line_amt,
ai.invoice_currency_code
INTO l_generate_dists,
l_amount_to_prorate,
l_inv_curr_code
FROM ap_invoice_lines ail,
ap_invoices ai
WHERE ail.invoice_id = X_invoice_id
AND ail.line_number = x_chrg_line_number
AND ai.invoice_id = X_invoice_id;
SELECT COUNT(*)
INTO l_alloc_rule
FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
SELECT rule_type,
status
INTO l_rule_type,
l_rule_status
FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
||'pending allocation rules will be deleted.';
DELETE FROM ap_allocation_rules
WHERE invoice_id = X_Invoice_Id
AND chrg_invoice_line_number = X_chrg_line_number;
Ap_Allocation_Rules_Pkg.Delete_Allocation_Lines(
X_invoice_id => X_Invoice_Id,
X_chrg_line_number => X_chrg_line_number,
X_calling_sequence => current_calling_sequence);
END Delete_Allocations;
PROCEDURE delete_allocation_lines(
X_invoice_id IN NUMBER,
X_chrg_line_number IN NUMBER,
X_calling_sequence IN VARCHAR2) IS
current_calling_sequence VARCHAR2(2000);
'Ap_Allocation_Rules_Pkg.Delete_allocations_lines<-'||X_Calling_Sequence;
DELETE FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
END Delete_Allocation_Lines;
FUNCTION insert_tax_allocations (
X_invoice_id IN NUMBER,
X_chrg_line_number IN NUMBER,
X_error_code OUT NOCOPY VARCHAR2) RETURN BOOLEAN
IS
l_generate_dists AP_INVOICE_LINES.GENERATE_DISTS%TYPE;
'insert_tax_allocations';
SELECT ail.generate_dists,
ail.line_group_number,
ail.amount,
ai.invoice_currency_code
INTO l_generate_dists,
l_line_group_number,
l_amount_to_prorate,
l_inv_curr_code
FROM ap_invoice_lines ail,
ap_invoices ai
WHERE ail.invoice_id = x_invoice_id
AND ail.line_number = x_chrg_line_number
AND ai.invoice_id = ail.invoice_id;
SELECT COUNT(*)
INTO l_other_alloc_rules
FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
SELECT COUNT(*)
INTO l_other_alloc_rule_line
FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
DELETE FROM ap_allocation_rules
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
DELETE FROM ap_allocation_rule_lines
WHERE invoice_id = X_invoice_id
AND chrg_invoice_line_number = X_chrg_line_number;
INSERT INTO ap_allocation_rules(
invoice_id,
chrg_invoice_line_number,
rule_type,
rule_generation_type,
status,
creation_date,
created_by,
last_updated_by,
last_update_date,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
VALUES(
X_invoice_id, -- invoice_id
X_chrg_line_number, -- chrg_invoice_line_number
'AMOUNT', -- rule_type
'SYSTEM', -- rule_generation_type
'EXECUTED', -- status
SYSDATE, -- creation_date
FND_GLOBAL.USER_ID, -- created_by
FND_GLOBAL.USER_ID, -- last_updated_by
SYSDATE, -- last_update_date
FND_GLOBAL.LOGIN_ID, -- last_update_login
FND_GLOBAL.PROG_APPL_ID, -- program_application_id
FND_GLOBAL.CONC_PROGRAM_ID,-- program_id
SYSDATE, -- program_update_date
FND_GLOBAL.CONC_REQUEST_ID -- request_id
);
INSERT INTO ap_allocation_rule_lines (
invoice_id,
chrg_invoice_line_number,
to_invoice_line_number,
amount,
creation_date,
created_by,
last_updated_by,
last_update_date,
last_update_login,
program_application_id,
program_id,
program_update_date,
request_id)
SELECT x_invoice_id, -- invoice_id
x_chrg_line_number, -- chrg_invoice_line_number
zxl.trx_line_number, -- to_invoice_line_number
sum(zxl.tax_amt), -- amount
SYSDATE, -- creation_date
FND_GLOBAL.USER_ID, -- created_by
FND_GLOBAL.USER_ID, -- last_updated_by
SYSDATE, -- last_update_date
FND_GLOBAL.LOGIN_ID, -- last_update_login
FND_GLOBAL.PROG_APPL_ID, -- program_application_id
FND_GLOBAL.CONC_PROGRAM_ID, -- program_id
SYSDATE, -- program_update_date
FND_GLOBAL.CONC_REQUEST_ID -- request_id
FROM zx_lines zxl,
ap_invoice_lines apl
WHERE apl.invoice_id = x_invoice_id
AND apl.line_number = x_chrg_line_number
AND apl.summary_tax_line_id = zxl.summary_tax_line_id
AND zxl.application_id = AP_ETAX_PKG.AP_APPLICATION_ID
AND zxl.entity_code = AP_ETAX_PKG.AP_ENTITY_CODE
AND zxl.event_class_code IN (AP_ETAX_PKG.AP_INV_EVENT_CLASS_CODE,
AP_ETAX_PKG.AP_PP_EVENT_CLASS_CODE,
AP_ETAX_PKG.AP_ER_EVENT_CLASS_CODE)
AND zxl.trx_id = apl.invoice_id
AND NVL(zxl.reporting_only_flag, 'N') = 'N'
GROUP BY zxl.trx_line_number;
END insert_tax_allocations;