Sunteți pe pagina 1din 65

Canvas

R BILL No

When validate New Items

IF :XXNLL_RA_BILL_HEADERS.RABILL_NO is not null THEN


IF :XXNLL_RA_BILL_HEADERS.status is not null THEN
if upper(:XXNLL_RA_BILL_HEADERS.status) like 'REJECT%' OR
upper(:XXNLL_RA_BILL_HEADERS.status) LIKE 'INCOMPLETE' then

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_TRUE);
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_FALSE);
end if;
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_TRUE);
END IF;
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_FALSE);
-- go_item('XXNLL_WORK_REQ_HEADERS.area_of_land');
END IF;

When list change


Ra Bill type

if :XXNLL_RA_BILL_HEADERS.RABILL_TYPE = 'Final Bill' THEN


FND_MESSAGE.DEBUG('If You select the Final Bill all previous RA Bill will
be closed, thereafter you can not create any RA Bill for this Work Order Number');
end if;

Creation Date
When Validate items

Declare
lv_count number;
v_error_message varchar2(200);
begin
select count(1) into lv_count from
GL_PERIOD_STATUSES GS,
hr_operating_units hou
where GS.PERIOD_NAME in (select
to_char(:XXNLL_RA_BILL_HEADERS.CREATION_DATE,'MON-YY') from dual)
and GS.application_id=200
and GS.CLOSING_STATUS='O'
and hou.SET_OF_BOOKS_ID=GS.SET_OF_BOOKS_ID
and ORGANIZATION_ID=:PARAMETER.ORG_ID;

if lv_count=0 then
v_error_message :='The date you entered is not in an open accounting period.
Open the period in the Control Payables Period window' ;

fnd_message.set_string('APP-SQLAP-10006 : '|| v_error_message);


fnd_message.error;
:XXNLL_RA_BILL_HEADERS.CREATION_DATE:=SYSDATE;
raise form_trigger_failure;
end if;

end;

Work order type


When new instance
begin
SELECT DISTINCT H.WC_POLICY_NO,H.WCPPERIOD INTO
:
XXNLL_RA_BILL_HEADERS.WC_POLICY_NO,:XXNLL_RA_BILL_HEADERS.W
CPPERIOD
FROM XXNLL_RA_BILL_HEADERS H WHERE H.WO_NO =
:XXNLL_RA_BILL_HEADERS.WO_NO;
exception
when others then
null;
end;

--go_block('HISTORY');
go_block('XXNLL_RA_BILL_LINES');
CLEAR_BLOCK(NO_COMMIT);
:GLOBAL.LOAD := 'UNLOAD';
:GLOBAL.GO := 'GONE';

Cummulative Qty
When Validate Item

begin
IF :XXNLL_RA_BILL_LINES.CUMMULATIVE_QTY <
:XXNLL_RA_BILL_LINES.PREVIOUS_QTY THEN
FND_MESSAGE.DEBUG('Value Should More than Previous Qty');
Raise form_trigger_failure;
end if;
end;

begin
--IF :XXNLL_RA_BILL_LINES.CUMMULATIVE_QTY +
:XXNLL_RA_BILL_LINES.PREVIOUS_QTY >
:XXNLL_RA_BILL_LINES.WORK_ORDER_QTY THEN
IF :XXNLL_RA_BILL_LINES.CUMMULATIVE_QTY >
:XXNLL_RA_BILL_LINES.WORK_ORDER_QTY THEN
FND_MESSAGE.DEBUG('Value Should not More than Work Order Qty');
Raise form_trigger_failure;
end if;
end;

begin
if :CUMMULATIVE_QTY is not null then
select nvl(:CUMMULATIVE_QTY,0)-nvl(:PREVIOUS_QTY,0) into
:CURR_BILL_QTY from dual;
end if;
end;

begin
SELECT (:WORK_ORDER_RATE*:CURR_BILL_QTY)*(100-
nvl(:DISCOUNTRATE,0))/100 INTO :XXNLL_RA_BILL_LINES.AMOUNT FROM
DUAL;
end;

begin
SELECT (:XXNLL_RA_BILL_LINES.AMOUNT*:MVAT_RATE)*(1/100) INTO
:XXNLL_RA_BILL_LINES.MVAT_AMOUNT FROM DUAL;
end;
begin
if :XXNLL_RA_BILL_HEADERS.WO_TYPE='FMI' then

select
(nvl(:XXNLL_RA_BILL_LINES.AMOUNT,0)+nvl(:XXNLL_RA_BILL_LINES.MAT
_CHARGES,0))*0.33*(nvl(:XXNLL_RA_BILL_LINES.TAX_RATE,0)/100) into
:XXNLL_RA_BILL_LINES.service_tax_amount from dual;
else
select
nvl(:XXNLL_RA_BILL_LINES.AMOUNT,0)*(nvl(:XXNLL_RA_BILL_LINES.TAX_
RATE,0)/100) into :XXNLL_RA_BILL_LINES.service_tax_amount from dual;
end if;
end;

begin
select
NVL(:MVAT_AMOUNT,0)+NVL(:XXNLL_RA_BILL_LINES.AMOUNT,0)+NVL(:S
ERVICE_TAX_AMOUNT,0) into :XXNLL_RA_BILL_LINES.total from dual;
end;

discount Rate

when validate

if :XXNLL_RA_BILL_LINES.DISCOUNTRATE > 99 THEN


FND_MESSAGE.DEBUG('Discount cannot be greater than 100');
end if;

begin
SELECT (:WORK_ORDER_RATE*:CURR_BILL_QTY)*(100-
nvl(:DISCOUNTRATE,0))/100 INTO :XXNLL_RA_BILL_LINES.AMOUNT FROM
DUAL;
end;

begin
SELECT nvl(:XXNLL_RA_BILL_LINES.AMOUNT,0)*nvl(:MVAT_RATE,0)/100
INTO :XXNLL_RA_BILL_LINES.MVAT_AMOUNT FROM DUAL;
end;

begin
if :XXNLL_RA_BILL_HEADERS.WO_TYPE='FMI' then

select
(nvl(:XXNLL_RA_BILL_LINES.AMOUNT,0)+nvl(:XXNLL_RA_BILL_LINES.MAT
_CHARGES,0))*0.33*(nvl(:XXNLL_RA_BILL_LINES.TAX_RATE,0)/100) into
:XXNLL_RA_BILL_LINES.service_tax_amount from dual;
else
select
nvl(:XXNLL_RA_BILL_LINES.AMOUNT,0)*(nvl(:XXNLL_RA_BILL_LINES.TAX_
RATE,0)/100) into :XXNLL_RA_BILL_LINES.service_tax_amount from dual;
end if;
end;

begin
select
NVL(:MVAT_AMOUNT,0)+NVL(:XXNLL_RA_BILL_LINES.AMOUNT,0)+NVL(:S
ERVICE_TAX_AMOUNT,0) into :XXNLL_RA_BILL_LINES.total from dual;
end;

Mat charges

When validate item

begin
if :XXNLL_RA_BILL_HEADERS.WO_TYPE='FMI' then

select
(nvl(:XXNLL_RA_BILL_LINES.AMOUNT,0)+nvl(:XXNLL_RA_BILL_LINES.MAT
_CHARGES,0))*0.33*(nvl(:XXNLL_RA_BILL_LINES.TAX_RATE,0)/100) into
:XXNLL_RA_BILL_LINES.service_tax_amount from dual;
else
select
nvl(:XXNLL_RA_BILL_LINES.AMOUNT,0)*(nvl(:XXNLL_RA_BILL_LINES.TAX_
RATE,0)/100) into :XXNLL_RA_BILL_LINES.service_tax_amount from dual;
end if;
end;

begin
select
NVL(:MVAT_AMOUNT,0)+NVL(:XXNLL_RA_BILL_LINES.AMOUNT,0)+NVL(:S
ERVICE_TAX_AMOUNT,0) into :XXNLL_RA_BILL_LINES.total from dual;
end;

Amount
When validate item
if :system.trigger_record = 4 then
:XXNLL_RA_BILL_DEDUCTIONS.AMOUNT :=
(:XXNLL_RA_BILL_LINES.AMT)*(NVL(:XXNLL_RA_BILL_HEADERS.WATER,0
)/100);

END IF;

BEGIN
if :system.trigger_record = 1 AND :XXNLL_RA_BILL_DEDUCTIONS.AMOUNT is
not null then
:XXNLL_RA_BILL_DEDUCTIONS.STATUS := 'E';
END IF;

if :system.trigger_record = 2 AND :XXNLL_RA_BILL_DEDUCTIONS.AMOUNT is


not null then
:XXNLL_RA_BILL_DEDUCTIONS.STATUS := 'M';
END IF;

if :system.trigger_record = 3 AND :XXNLL_RA_BILL_DEDUCTIONS.AMOUNT is


not null then
:XXNLL_RA_BILL_DEDUCTIONS.STATUS := 'P';
END IF;

if :system.trigger_record = 4 AND :XXNLL_RA_BILL_DEDUCTIONS.AMOUNT is


not null then
:XXNLL_RA_BILL_DEDUCTIONS.STATUS := 'W';
END IF;

if :system.trigger_record = 5 AND :XXNLL_RA_BILL_DEDUCTIONS.AMOUNT is


not null then
:XXNLL_RA_BILL_DEDUCTIONS.STATUS := 'O';
END IF;

END;

Expenditor type

Post _item test

BEGIN
if :XXNLL_RA_BILL_DEDUCTIONS.EXPEN_TYPE is not null then
SELECT
APPS.XXNLL_MISC_TRANS_COST_ACCT(:XXNLL_RA_BILL_HEADERS.PROJE
CT_ID,:XXNLL_RA_BILL_DEDUCTIONS.EXPEN_TYPE) INTO
:XXNLL_RA_BILL_DEDUCTIONS.GLCODE FROM DUAL;
end if;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;

Approve Botton

When Press botton

IF :XXNLL_RA_BILL_HEADERS.RABILL_NO IS NOT NULL and


(upper(:XXNLL_RA_BILL_HEADERS.status) like 'INCOMPLETE' or
upper(:XXNLL_RA_BILL_HEADERS.status) like 'REJECT%') THEN
FND_MESSAGE.debug('Sending for APPROVEL');
:XXNLL_RA_BILL_HEADERS.status:='In Progress';
commit;
Go_Item('XXNLL_RA_BILL_HEADERS.status');

nll_RAbillwf_pkg.proc_tocallwf(:XXNLL_RA_BILL_HEADERS.PREPARER_ID,:XX
NLL_RA_BILL_HEADERS.RABILL_NO);

END IF;

Invoice

----------------inserting into Invoices--------------------------


declare

V_USER_ID NUMBER;
v_inv_no number default 0;

begin
v_user_id := fnd_profile.value('USER_ID');
-- v_curr_date:=to_char(sysdate,'DD-MON-YYYY');
-- v_effective_from:=to_char(sysdate,'DD-MON-YYYY');

-- LOOP
IF :XXNLL_RA_BILL_HEADERS.RABILL_NO is not null THEN

:SYSTEM.ME
SSAGE_LEVEL := '5';
---------
------------------------------------------HEADER START
--
fnd_MESSAGE.debug('BEFORE INSERT_hdr');

import.INSERT_AP_INVOICE_HDR(:XXNLL_RA_BILL_HEADERS.RABILL_NO,

:XXNLL_RA_BILL_HEADERS.CONTRACTOR_ID,:XXNLL_RA_BILL_HEADERS.
CONTRACTOR_SITE_ID,v_user_id);

--
fnd_MESSAGE.debug('AFETR INSERT_hdr');

---------------------------------------------------RETENION CREDIT START

--
fnd_MESSAGE.debug('BEFORE INSERT_ret_cre');

import.INSERT_AP_INVOICE_RET_CRE(:XXNLL_RA_BILL_HEADERS.CONTRA
CTOR_ID);

--
fnd_MESSAGE.debug('AFTER INSERT_ret_cre');

---------------------------------------------------DETAIL START

GO_BLOCK('XXNLL_RA_BILL_LINES');
FIRST_RECORD;
:global.sno := 1;
LOOP

--
fnd_MESSAGE.debug('BEFORE INSERT_det');
import.INSERT_AP_INVOICE_DTL(:XXNLL_RA_BILL_HEADERS.CONTRACTO
R_ID,:XXNLL_RA_BILL_LINES.TASK_ID);

IF
:System.Last_Record = 'TRUE' THEN

EXIT;
END
IF;

NEXT_RECORD;

:global.sno := :global.sno+1;
END LOOP;

--
fnd_MESSAGE.debug('AFTER INSERT_det');

---------
--------------------------------------------------HEADERPART DEDCTION START

GO_BLOCK('XXNLL_RA_BILL_DEDUCTIONS');
FIRST_RECORD;
:global.sno :=
:global.sno+1;
LOOP

--
fnd_MESSAGE.debug('BEFORE INSERT_detUCIONS');

import.INSERT_AP_INVOICE_DEDUCTION(:XXNLL_RA_BILL_HEADERS.CONT
RACTOR_ID,:XXNLL_RA_BILL_DEDUCTIONS.TASK_ID);

IF
:System.Last_Record = 'TRUE' THEN
EXIT;
END
IF;

NEXT_RECORD;

:global.sno := :global.sno+1;
END LOOP;

--
fnd_MESSAGE.debug('AFTER INSERT_detUTIONS');
------------------
----------------------------------------------------

--
:parameter.org_id

commit;

begin
--
fnd_message.debug('submiting the Invoice into request');

app_custom.CONCURRENT_PRG_INVOICE;

fnd_message.debug('submiting the Invoice sucessfully completed');

exception

when others then

fnd_message.debug('submiting the Invoice into request failed');

end ;
:SYSTEM.MESSAGE_LEVEL := '0';

END IF;

exception
when others then
null;

END;

Header
Pre_insert Triger

fnd_standard.set_who;

:XXNLL_RA_BILL_HEADERS.ORG_ID:=FND_PROFILE.VALUE('ORG_ID');

BEGIN

SELECT DISTRIBUTION_SET_ID INTO


:XXNLL_RA_BILL_HEADERS.RETENSION_CONTROL_ID FROM
AP_DISTRIBUTION_SETS adsl WHERE DISTRIBUTION_SET_NAME =
:XXNLL_RA_BILL_HEADERS.RETENTION_CONTROL_ACC;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;

SELECT DISTINCT EMPLOYEE_ID INTO


:XXNLL_RA_BILL_HEADERS.PREPARER_ID FROM HR_EMPLOYEES WHERE
FULL_NAME = :XXNLL_RA_BILL_HEADERS.PREPARER_NAME;

BEGIN
SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_TRUE);
END;
declare
v_header number;
begin
IF :XXNLL_RA_BILL_HEADERS.RABILL_NO IS NULL AND
:XXNLL_RA_BILL_HEADERS.WO_NO IS NOT NULL THEN

select max(RABILL_SNO)
into v_header
from XXNLL_RA_BILL_HEADERS WHERE WO_NO =
:XXNLL_RA_BILL_HEADERS.WO_NO;

if v_header is null then


:XXNLL_RA_BILL_HEADERS.RABILL_SNO := 1;
:XXNLL_RA_BILL_HEADERS.RABILL_NO :=
'RA'||:XXNLL_RA_BILL_HEADERS.RABILL_SNO||'/'||:XXNLL_RA_BILL_HEADE
RS.WO_NO;
else
:XXNLL_RA_BILL_HEADERS.RABILL_SNO := v_header+1;
:XXNLL_RA_BILL_HEADERS.RABILL_NO :=
'RA'||:XXNLL_RA_BILL_HEADERS.RABILL_SNO||'/'||:XXNLL_RA_BILL_HEADE
RS.WO_NO;
end if;
END IF;

EXCEPTION
WHEN OTHERS THEN
NULL;

END;

BEGIN
IF :XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID IS NULL AND
:XXNLL_RA_BILL_HEADERS.WO_NO IS NOT NULL THEN
SELECT RABILL_HEADER_ID_SEQ.NEXTVAL INTO
:XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID FROM DUAL;
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;

/*

BEGIN
IF :XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID IS NULL AND
:XXNLL_RA_BILL_HEADERS.WO_NO IS NOT NULL THEN
SELECT 'RA'||
RABILL_HEADER_ID_SEQ.NEXTVAL||'/'||:XXNLL_RA_BILL_HEADERS.WO_NO
INTO :XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID FROM DUAL;
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;

On populate

--
-- Begin default relation declare section
--
DECLARE
recstat VARCHAR2(20) := :System.record_status;
startitm VARCHAR2(61) := :System.cursor_item;
rel_id Relation;
--
-- End default relation declare section
--
--
-- Begin default relation program section
--
BEGIN
IF ( recstat = 'NEW' or recstat = 'INSERT' ) THEN
RETURN;
END IF;
--
-- Begin XXNLL_RA_BILL_LINES detail program section
--
IF ( (:XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID is not null) ) THEN
rel_id :=
Find_Relation('XXNLL_RA_BILL_HEADERS.XXNLL_RA_BILL_H_XXNLL_RA_B
ILL_');
Query_Master_Details(rel_id, 'XXNLL_RA_BILL_LINES');
END IF;
--
-- End XXNLL_RA_BILL_LINES detail program section
--
--
-- Begin XXNLL_RA_BILL_DEDUCTIONS detail program section
--
IF ( (:XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID is not null) ) THEN
rel_id := Find_Relation('XXNLL_RA_BILL_HEADERS.RELATION862');
Query_Master_Details(rel_id, 'XXNLL_RA_BILL_DEDUCTIONS');
END IF;
--
-- End XXNLL_RA_BILL_DEDUCTIONS detail program section
--

IF ( :System.cursor_item <> startitm ) THEN


Go_Item(startitm);
Check_Package_Failure;
END IF;
END;
--
-- End default relation program section
--

Pre-delete

BEGIN
--
-- Begin XXNLL_RA_BILL_LINES detail program section
--
DELETE FROM XXNLL_RA_BILL_LINES X
WHERE X.RABILL_HEADER_ID =
:XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID;
--
-- End XXNLL_RA_BILL_LINES detail program section
--
END;

When new record instance

declare
v_user number;

lv_ap_flag number:=0;
lv_ap_interface_flag number:=0;
begin

begin
fnd_profile.GET('USER_ID',V_USER);

IF (:XXNLL_RA_BILL_HEADERS.CREATION_DATE IS NOT NULL) THEN


SELECT distinct full_name
into :XXNLL_RA_BILL_HEADERS.PREPARER_NAME
FROM FND_USER fu,hr_employees pr
where fu.user_id=v_user
and pr.EMPLOYEE_ID = fu.employee_id;

END IF;

EXCEPTION
WHEN OTHERS THEN
NULL;
end;

BEGIN
IF :XXNLL_RA_BILL_HEADERS.RABILL_NO is not null THEN
IF :XXNLL_RA_BILL_HEADERS.status is not null THEN
if upper(:XXNLL_RA_BILL_HEADERS.status) like 'REJECT%' OR
upper(:XXNLL_RA_BILL_HEADERS.status) LIKE 'INCOMPLETE' then

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_TRUE);
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_FALSE);
end if;
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_TRUE);
END IF;
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_FALSE);
END IF;
-- If it is final Approve then user cant perform DML operations
ENABLE_DISABLE;

IF :XXNLL_RA_BILL_HEADERS.RABILL_NO is not null THEN

select count(1) into lv_ap_interface_flag


from AP_INVOICES_INTERFACE
where INVOICE_NUM like :XXNLL_RA_BILL_HEADERS.RABILL_NO||'%';

select count(1) into lv_ap_flag


from AP_INVOICES_ALL
where INVOICE_NUM like :XXNLL_RA_BILL_HEADERS.RABILL_NO||'%';

if (lv_ap_interface_flag>0) or ( lv_ap_flag>0) or
:XXNLL_RA_BILL_HEADERS.STATUS<>'Approved by second approver' then

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.CREATE_INVOICE',ENAB
LED,PROPERTY_FALSE);
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.CREATE_INVOICE',ENAB
LED,PROPERTY_TRUE);

end if;

end if;

END;
end;

when new block instance

IF :XXNLL_RA_BILL_HEADERS.RABILL_NO is not null THEN


IF :XXNLL_RA_BILL_HEADERS.status is not null THEN
if upper(:XXNLL_RA_BILL_HEADERS.status) like 'REJECT%' OR
upper(:XXNLL_RA_BILL_HEADERS.status) LIKE 'INCOMPLETE' then
SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_TRUE);
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_FALSE);
end if;
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_TRUE);
END IF;
else

SET_ITEM_PROPERTY('XXNLL_RA_BILL_HEADERS.APPROVE',ENABLED,PR
OPERTY_FALSE);
END IF;
-- If it is final Approve then user cant perform DML operations
ENABLE_DISABLE;

Post query

begin
SELECT distinct full_name INTO
:XXNLL_RA_BILL_HEADERS.PREPARER_NAME FROM HR_EMPLOYEES
WHERE EMPLOYEE_ID = :XXNLL_RA_BILL_HEADERS.PREPARER_ID;
exception
when no_data_found then
null;

when others then


null;
END;

Post Delete

--
-- Begin default relation declare section
--
DECLARE
Dummy_Define CHAR(1);
--
-- Begin XXNLL_RA_BILL_DEDUCTIONS detail declare section
--
CURSOR XXNLL_RA_BILL_DEDUCTIONS_cur IS
SELECT 1 FROM XXNLL_RA_BILL_DEDUCTIONS X
WHERE X.RABILL_HEADER_ID =
:XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID;
--
-- End XXNLL_RA_BILL_DEDUCTIONS detail declare section
--
--
-- End default relation declare section
--
--
-- Begin default relation program section
--
BEGIN
--
-- Begin XXNLL_RA_BILL_DEDUCTIONS detail program section
--
OPEN XXNLL_RA_BILL_DEDUCTIONS_cur;
FETCH XXNLL_RA_BILL_DEDUCTIONS_cur INTO Dummy_Define;
IF ( XXNLL_RA_BILL_DEDUCTIONS_cur%found ) THEN
Message('Cannot delete master record when matching detail records exist.');
CLOSE XXNLL_RA_BILL_DEDUCTIONS_cur;
RAISE Form_Trigger_Failure;
END IF;
CLOSE XXNLL_RA_BILL_DEDUCTIONS_cur;
--
-- End XXNLL_RA_BILL_DEDUCTIONS detail program section
--
END;
--
-- End default relation program section
--

RA bill Details

DECLARE
A NUMBER;
BEGIN
select count(wo_no)INTO A from XXNLL_RA_BILL_headers b where wo_no =
:XXNLL_RA_BILL_HEADERS.WO_NO;
IF A > 0 THEN

--------------FIRST PART START ---------


DECLARE
CURSOR C1 IS
SELECT
DISTINCT p.TASK_NUMBER TASK_NUMBER,
D.LONG_DESC DESCRIPTION, --MSI.DESCRIPTION DESCRIPTION,
D.UOM UOM,
D.QTY QTY,
D.RATE RATE,
D.QTY*D.RATE AMOUNT ,
D.EXPENDITURE_TYPE EXPENDITURE_TYPE,
D.EXPEND_ORGANIZATION EXPEND_ORGANIZATION,
D.EXPECTED_START_DATE EXPECTED_START_DATE,
D.TASK_ID TASK_ID,
D.ITEM_ID ITEM_ID,
D.VAT_TAX VAT_TAX,
D.TAX_CAT SERVICE_CAT,
X.CQTY CQTY,
X.WO_NO WO_NO1,
X.ITEM_ID ITEM_ID1,
D.TAX_RATE
FROM
(select a.CUMMULATIVE_QTY CQTY,A.WO_NO WO_NO,A.ITEM_ID ITEM_ID
from XXNLL_RA_BILL_LINES a
where rowid in(select max(rowid) from XXNLL_RA_BILL_LINES b
where a.WO_NO = b.wo_no and a.ITEM_ID = b.item_id)) X,
XXWORKORDERDET D,
XXWORKORDERHDR H,
pa_tasks p,
MTL_SYSTEM_ITEMS_FVL MSI
where
p.TASK_ID = d.TASK_ID AND
MSI.INVENTORY_ITEM_ID = D.ITEM_ID AND
H.HEADER_ID = D.HEADER_ID AND
H.WO_NO = :XXNLL_RA_BILL_HEADERS.WO_NO AND
H.OU_ID = :parameter.org_id and
H.WO_NO = X.WO_NO AND
D.ITEM_ID = X.ITEM_ID;

BEGIN

IF :XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID IS NULL AND


:GLOBAL.LOAD = 'UNLOAD' THEN

-- CLEAR_BLOCK(NO_COMMIT);
FOR I IN C1 LOOP

:XXNLL_RA_BILL_LINES.TASK_NO := I.TASK_NUMBER;
:XXNLL_RA_BILL_LINES.DESCRIPTION := I.DESCRIPTION;
:XXNLL_RA_BILL_LINES.UOM := I.UOM;
:XXNLL_RA_BILL_LINES.WORK_ORDER_QTY := I.QTY;
:XXNLL_RA_BILL_LINES.WORK_ORDER_RATE := I.RATE;
:XXNLL_RA_BILL_LINES.WORK_ORDER_AMOUNT := I.AMOUNT;
:XXNLL_RA_BILL_LINES.EXPENDITURE_TYPE := I.EXPENDITURE_TYPE;
:XXNLL_RA_BILL_LINES.EXPEND_ORGANIZATION :=
I.EXPEND_ORGANIZATION;
:XXNLL_RA_BILL_LINES.EXPENDITURE_DATE :=
:XXNLL_RA_BILL_HEADERS.CREATION_DATE;
:XXNLL_RA_BILL_LINES.TASK_ID := I.TASK_ID;
:XXNLL_RA_BILL_LINES.ITEM_ID := I.ITEM_ID;
:XXNLL_RA_BILL_LINES.LINE_ID := :SYSTEM.CURSOR_RECORD;
:XXNLL_RA_BILL_LINES.PREVIOUS_QTY := I.CQTY;
:XXNLL_RA_BILL_LINES.MVAT_RATE := I.VAT_TAX;
:XXNLL_RA_BILL_LINES.SERVICE_TAX_NAME := I.SERVICE_CAT;
:XXNLL_RA_BILL_LINES.TAX_RATE:=I.TAX_RATE;

NEXT_RECORD;

END LOOP;

:GLOBAL.LOAD := 'LOAD';

FIRST_RECORD;

END IF;

EXCEPTION
WHEN OTHERS THEN
NULL;
END;
-------------------------------------FISRT PART END
ELSE
------------------------SECOND PART START
DECLARE
CURSOR C1 IS
SELECT
DISTINCT p.TASK_NUMBER TASK_NUMBER,
D.LONG_DESC DESCRIPTION,--MSI.DESCRIPTION DESCRIPTION,
D.UOM UOM,
D.QTY QTY,
D.RATE RATE,
D.QTY*D.RATE AMOUNT ,
D.EXPENDITURE_TYPE EXPENDITURE_TYPE,
D.EXPEND_ORGANIZATION EXPEND_ORGANIZATION,
D.EXPECTED_START_DATE EXPECTED_START_DATE,
D.TASK_ID TASK_ID,
D.ITEM_ID ITEM_ID,
D.VAT_TAX VAT_TAX,
D.TAX_CAT SERVICE_CAT,
D.TAX_RATE
/*X.CQTY CQTY,
X.WO_NO WO_NO1,
X.ITEM_ID ITEM_ID1
FROM
(select a.CUMMULATIVE_QTY CQTY,A.WO_NO WO_NO,A.ITEM_ID ITEM_ID
from XXNLL_RA_BILL_LINES a
where rowid in(select max(rowid) from XXNLL_RA_BILL_LINES b
where a.WO_NO = b.wo_no and a.ITEM_ID = b.item_id)) X, */
from
XXWORKORDERDET D,
XXWORKORDERHDR H,
pa_tasks p,
MTL_SYSTEM_ITEMS_FVL MSI
where
p.TASK_ID = d.TASK_ID AND
MSI.INVENTORY_ITEM_ID = D.ITEM_ID AND
H.HEADER_ID = D.HEADER_ID AND
H.OU_ID = :parameter.org_id and
H.WO_NO = :XXNLL_RA_BILL_HEADERS.WO_NO ;
--H.WO_NO = X.WO_NO AND
--D.ITEM_ID = X.ITEM_ID;

BEGIN

IF :XXNLL_RA_BILL_HEADERS.RABILL_HEADER_ID IS NULL AND


:GLOBAL.LOAD = 'UNLOAD' THEN

-- CLEAR_BLOCK(NO_COMMIT);

FOR I IN C1 LOOP

:XXNLL_RA_BILL_LINES.TASK_NO := I.TASK_NUMBER;
:XXNLL_RA_BILL_LINES.DESCRIPTION := I.DESCRIPTION;
:XXNLL_RA_BILL_LINES.UOM := I.UOM;
:XXNLL_RA_BILL_LINES.WORK_ORDER_QTY := I.QTY;
:XXNLL_RA_BILL_LINES.WORK_ORDER_RATE := I.RATE;
:XXNLL_RA_BILL_LINES.WORK_ORDER_AMOUNT := I.AMOUNT;
:XXNLL_RA_BILL_LINES.EXPENDITURE_TYPE := I.EXPENDITURE_TYPE;
:XXNLL_RA_BILL_LINES.EXPEND_ORGANIZATION :=
I.EXPEND_ORGANIZATION;
:XXNLL_RA_BILL_LINES.EXPENDITURE_DATE
:=:XXNLL_RA_BILL_HEADERS.CREATION_DATE;--
I.EXPECTED_START_DATE;
:XXNLL_RA_BILL_LINES.TASK_ID := I.TASK_ID;
:XXNLL_RA_BILL_LINES.ITEM_ID := I.ITEM_ID;
:XXNLL_RA_BILL_LINES.LINE_ID := :SYSTEM.CURSOR_RECORD;
:XXNLL_RA_BILL_LINES.MVAT_RATE := I.VAT_TAX;
:XXNLL_RA_BILL_LINES.SERVICE_TAX_NAME := I.SERVICE_CAT;
:XXNLL_RA_BILL_LINES.TAX_RATE:=I.TAX_RATE;
--:XXNLL_RA_BILL_LINES.PREVIOUS_QTY := I.CQTY;

NEXT_RECORD;

END LOOP;

:GLOBAL.LOAD := 'LOAD';
FIRST_RECORD;

END IF;

EXCEPTION
WHEN OTHERS THEN
NULL;
END;

-------------------------SECOND PART END

END IF;
END;
List of Value

RETENSION_SUPPLIER_SITE

select distinct vendor_site_code contractor_site,vendor_site_id Rention_site_id from


po_vendor_sites_all povs,po_vendors pov
where povs.VENDOR_ID = pov.VENDOR_ID
and pov.VENDOR_NAME = :XXNLL_RA_BILL_HEADERS.CONTRACTOR_NAME
and povs.ORG_ID=:parameter.org_id
AND (vendor_site_code LIKE 'Ret%' or vendor_site_code LIKE 'RET%')

SERVICETAX

select distinct c.TAX_CATEGORY_NAME


from JA_IN_PO_LINE_LOCATION_TAXES t,
JA_IN_TAX_CATEGORIES c
,ja_in_tax_codes tc
where
c.TAX_CATEGORY_ID = t.TAX_CATEGORY_ID
and tc.TAX_ID = t.TAX_ID
and tc.TAX_NAME like 'Service%'
and c.TAX_CATEGORY_NAME like 'Service%'
and tc.org_id = :parameter.org_id

MVATRATE

SELECT distinct jtc.TAX_NAME,jtc.TAX_RATE FROM ja_in_tax_codes jtc


where jtc.tax_type = 'VALUE ADDED TAX'
and org_id = :parameter.org_id

WCTRATE

SELECT distinct jtc.TAX_NAME,jtc.TAX_RATE,jtc.TAX_ID wct_id FROM


ja_in_tax_codes jtc
where jtc.tax_type = 'TDS'
and jtc.section_type = 'WCT_SECTION'
and org_id = :parameter.org_id

TAX_RATE

SELECT distinct jtc.TAX_NAME,jtc.TAX_RATE,jtc.TAX_ID tds_id FROM


ja_in_tax_codes jtc,JA_IN_VENDOR_TDS_INFO_HDR
K,PO_VENDOR_SITES_ALL P
where jtc.tax_type = 'TDS'
and jtc.section_type = 'TDS_SECTION'
and jtc.org_id = :parameter.org_id
AND (K.TAX_ID = JTC.TAX_ID OR K.TAX_ID IS NULL)
AND P.VENDOR_ID = K.VENDOR_ID
AND P.VENDOR_SITE_ID = K.VENDOR_SITE_ID
AND P.ORG_ID = :parameter.org_id
AND K.VENDOR_ID = (SELECT DISTINCT VENDOR_ID FROM
JA_IN_VENDOR_TDS_INFO_HDR WHERE VENDOR_ID =
:XXNLL_RA_BILL_HEADERS.CONTRACTOR_ID)
AND K.VENDOR_SITE_ID = (SELECT DISTINCT VENDOR_SITE_ID FROM
JA_IN_VENDOR_TDS_INFO_HDR WHERE VENDOR_SITE_ID =
:XXNLL_RA_BILL_HEADERS.CONTRACTOR_SITE_ID) AND
JTC.SECTION_CODE = 'Sec. 194(C)'

APPROVER_NAME

SELECT distinct full_name Approver_Name from hr_employees

TASK_ELE

SELECT DISTINCT BOL.SUB_TASK_ID


TASK_ID,P.TASK_NUMBER,P.TASK_NAME
from XXNLL_BOQ_LINES BOL
,PA_TASKS P
WHERE P.TASK_ID = BOL.SUB_TASK_ID
AND P.PROJECT_ID = :XXNLL_RA_BILL_HEADERS.PROJECT_ID
AND BOL.ORG_ID = :PARAMETER.ORG_ID
and CHARGEABLE_FLAG ='Y'

PROJECT_INCHARGE

SELECT distinct full_name Approver_Name from hr_employees

EXP_ORG_MAT

select distinct hou.name ORGANIZATION_NAME from hr_operating_units


hou,xxnll_boq_header boq
where hou.ORGANIZATION_ID= boq.ORG_ID
and boq.PROJECT_ID = :XXNLL_RA_BILL_HEADERS.PROJECT_ID

EXP_TYPE_ELE
select EXPENDITURE_TYPE Expenditure_Type_ELECT
from PA_EXPEND_TYP_SYS_LINKS_V
where EXPENDITURE_TYPE_CLASS='Supplier Invoices'

ENABLE_LIST_LAMP

select null from dual


TIMEZONES_AND_DATETIME

WORKORDERNUM

SELECT DISTINCT H.WO_NO,H.WO_TYPE WO_TYPE,H.ATTRIBUTE2


NATURE_OF_WORK,H.PROJECT_ID,H.CONTRACTOR_ID,H.CONTRACTOR_SIT
E_ID,POV.VENDOR_NAME
,POVS.VENDOR_SITE_CODE
,NULL
BANK_GURANTEE_STATUS,H.CEMENT_ISSUE,H.REINFORCED_STEEL,H.STR
UCTURAL_STEEL,H.RMC,H.ANY_MATERIAL
,H.ELECTRICITY,H.WATER,H.ANY_OTHER
,POVS.ATTRIBUTE1 VAT_REG,H.ATTRIBUTE4 Retention_pertentage,
H.ATTRIBUTE7 Billing_Cycle,H.ATTRIBUTE6 Defects_Liability_Period
,POVS.ATTRIBUTE7 Retention_Control_Ac
,BOQ.PROJECT_NO,BOQ.PROJECT_NAME,
(select sum(((nvl(QTY,0)+nvl(AMEND_NO,0))*nvl(RATE,0))+
(((nvl(QTY,0)+nvl(AMEND_NO,0))*nvl(RATE,0))*nvl(VAT_TAX,0)/100)+
(((nvl(QTY,0)+nvl(AMEND_NO,0))*nvl(RATE,0))*nvl(TAX_RATE,0)/100)) from
XXWORKORDERDET where HEADER_ID=H.header_id) Total_Aggrement_val,
h.OTHER1 ,
h.OTHER2,
h.OTHER3,
h.OTHER4,
h.OTHER5,
H.RELEASE_AMT MINAMT
FROM XXWORKORDERHDR H
,PO_VENDORS POV
,PO_VENDOR_SITES_ALL POVS
,XXNLL_BOQ_HEADER BOQ
WHERE
POV.VENDOR_ID = H.CONTRACTOR_ID AND
POVS.VENDOR_SITE_ID = H.CONTRACTOR_SITE_ID AND
POV.VENDOR_ID = POVS.VENDOR_ID AND
BOQ.PROJECT_ID = H.PROJECT_ID and
h.OU_ID = :parameter.org_id and
h.STATUS = 'Approved' and
H.WO_NO NOT IN(select wo_no from XXNLL_RA_BILL_headers h WHERE
RABILL_TYPE = 'Final Bill')

Group records
Workodernum
SELECT DISTINCT H.WO_NO,H.WO_TYPE WO_TYPE,H.ATTRIBUTE2
NATURE_OF_WORK,H.PROJECT_ID,H.CONTRACTOR_ID,H.CONTRACTOR_SIT
E_ID,POV.VENDOR_NAME
,POVS.VENDOR_SITE_CODE
,NULL
BANK_GURANTEE_STATUS,H.CEMENT_ISSUE,H.REINFORCED_STEEL,H.STR
UCTURAL_STEEL,H.RMC,H.ANY_MATERIAL
,H.ELECTRICITY,H.WATER,H.ANY_OTHER
,POVS.ATTRIBUTE1 VAT_REG,H.ATTRIBUTE4 Retention_pertentage,
H.ATTRIBUTE7 Billing_Cycle,H.ATTRIBUTE6 Defects_Liability_Period
,POVS.ATTRIBUTE7 Retention_Control_Ac
,BOQ.PROJECT_NO,BOQ.PROJECT_NAME,
(select sum(((nvl(QTY,0)+nvl(AMEND_NO,0))*nvl(RATE,0))+
(((nvl(QTY,0)+nvl(AMEND_NO,0))*nvl(RATE,0))*nvl(VAT_TAX,0)/100)+
(((nvl(QTY,0)+nvl(AMEND_NO,0))*nvl(RATE,0))*nvl(TAX_RATE,0)/100)) from
XXWORKORDERDET where HEADER_ID=H.header_id) Total_Aggrement_val,
h.OTHER1 ,
h.OTHER2,
h.OTHER3,
h.OTHER4,
h.OTHER5,
H.RELEASE_AMT MINAMT
FROM XXWORKORDERHDR H
,PO_VENDORS POV
,PO_VENDOR_SITES_ALL POVS
,XXNLL_BOQ_HEADER BOQ
WHERE
POV.VENDOR_ID = H.CONTRACTOR_ID AND
POVS.VENDOR_SITE_ID = H.CONTRACTOR_SITE_ID AND
POV.VENDOR_ID = POVS.VENDOR_ID AND
BOQ.PROJECT_ID = H.PROJECT_ID and
h.OU_ID = :parameter.org_id and
h.STATUS = 'Approved' and
H.WO_NO NOT IN(select wo_no from XXNLL_RA_BILL_headers h WHERE
RABILL_TYPE = 'Final Bill')

Time zone
select timezone_code,name
,to_char(trunc(gmt_offset),'S09') || ':' || to_char(abs(gmt_offset -
trunc(gmt_offset))*60,'FM900') offset
,decode(daylight_savings_flag,'Y','*',null) dst_flag
from fnd_timezones_vl
where enabled_flag = 'Y'
order by gmt_offset

Enable List Lamp


select null from dual

exp_type_n

select EXPENDITURE_TYPE Expenditure_Type_ELECT from


PA_EXPEND_TYP_SYS_LINKS_V where EXPENDITURE_TYPE_CLASS='Supplier
Invoices'

exp_type

SELECT ALIAS Expenditure_Type_ELECT


FROM PA_RESOURCE_LIST_USES_V PAS,PA_CHILD_RESOURCES_V PAC
WHERE
PAS.RESOURCE_LIST_ID = PAC.RESOURCE_LIST_ID
AND PAS.PROJECT_ID = :XXNLL_RA_BILL_HEADERS.PROJECT_ID
AND pac.Display_flag = 'Y' and nvl(pac.migration_code, '-99') <> 'N'

Exp_org

select distinct hou.name ORGANIZATION_NAME from hr_operating_units


hou,xxnll_boq_header boq
where hou.ORGANIZATION_ID= boq.ORG_ID
and boq.PROJECT_ID = :XXNLL_RA_BILL_HEADERS.PROJECT_ID

exp_typ_mat

SELECT ALIAS Expenditure_Type


FROM PA_RESOURCE_LIST_USES_V PAS,PA_CHILD_RESOURCES_V PAC
WHERE
PAS.RESOURCE_LIST_ID = PAC.RESOURCE_LIST_ID
AND PAS.PROJECT_ID = :XXNLL_RA_BILL_HEADERS.PROJECT_ID
AND pac.Display_flag = 'Y' and nvl(pac.migration_code, '-99') <> 'N'

Task
SELECT DISTINCT BOL.SUB_TASK_ID
TASK_ID,P.TASK_NUMBER,P.TASK_NAME
from XXNLL_BOQ_LINES BOL
,PA_TASKS P
WHERE P.TASK_ID = BOL.SUB_TASK_ID
AND P.PROJECT_ID = :XXNLL_RA_BILL_HEADERS.PROJECT_ID
AND BOL.ORG_ID = :PARAMETER.ORG_ID
and CHARGEABLE_FLAG ='Y'
APPROVER

SELECT distinct full_name Approver_Name from hr_employees

Taxrate

SELECT distinct jtc.TAX_NAME,jtc.TAX_RATE,jtc.TAX_ID tds_id FROM


ja_in_tax_codes jtc,JA_IN_VENDOR_TDS_INFO_HDR
K,PO_VENDOR_SITES_ALL P
where jtc.tax_type = 'TDS'
and jtc.section_type = 'TDS_SECTION'
and jtc.org_id = :parameter.org_id
AND (K.TAX_ID = JTC.TAX_ID OR K.TAX_ID IS NULL)
AND P.VENDOR_ID = K.VENDOR_ID
AND P.VENDOR_SITE_ID = K.VENDOR_SITE_ID
AND P.ORG_ID = :parameter.org_id
AND K.VENDOR_ID = (SELECT DISTINCT VENDOR_ID FROM
JA_IN_VENDOR_TDS_INFO_HDR WHERE VENDOR_ID =
:XXNLL_RA_BILL_HEADERS.CONTRACTOR_ID)
AND K.VENDOR_SITE_ID = (SELECT DISTINCT VENDOR_SITE_ID FROM
JA_IN_VENDOR_TDS_INFO_HDR WHERE VENDOR_SITE_ID =
:XXNLL_RA_BILL_HEADERS.CONTRACTOR_SITE_ID) AND
JTC.SECTION_CODE = 'Sec. 194(C)'

Wcrate

SELECT distinct jtc.TAX_NAME,jtc.TAX_RATE,jtc.TAX_ID wct_id FROM


ja_in_tax_codes jtc
where jtc.tax_type = 'TDS'
and jtc.section_type = 'WCT_SECTION'
and org_id = :parameter.org_id
mvatrate

SELECT distinct jtc.TAX_NAME,jtc.TAX_RATE FROM ja_in_tax_codes jtc


where jtc.tax_type = 'VALUE ADDED TAX'
and org_id = :parameter.org_id

service tax

select distinct c.TAX_CATEGORY_NAME


from JA_IN_PO_LINE_LOCATION_TAXES t,
JA_IN_TAX_CATEGORIES c
,ja_in_tax_codes tc
where
c.TAX_CATEGORY_ID = t.TAX_CATEGORY_ID
and tc.TAX_ID = t.TAX_ID
and tc.TAX_NAME like 'Service%'
and c.TAX_CATEGORY_NAME like 'Service%'
and tc.org_id = :parameter.org_id

Retention_Supplier_Site

select distinct vendor_site_code contractor_site,vendor_site_id Rention_site_id from


po_vendor_sites_all povs,po_vendors pov
where povs.VENDOR_ID = pov.VENDOR_ID
and pov.VENDOR_NAME = :XXNLL_RA_BILL_HEADERS.CONTRACTOR_NAME
and povs.ORG_ID=:parameter.org_id
AND (vendor_site_code LIKE 'Ret%' or vendor_site_code LIKE 'RET%')

ENABLE_DISABLE
PROCEDURE ENABLE_DISABLE IS
BEGIN
if upper(:XXNLL_RA_BILL_HEADERS.status) like 'APPROV%' then

set_block_property('XXNLL_RA_BILL_HEADERS',INSERT_ALLOWED,PROPERT
Y_FALSE);

set_block_property('XXNLL_RA_BILL_HEADERS',UPDATE_ALLOWED,PROPERT
Y_FALSE);

set_block_property('XXNLL_RA_BILL_HEADERS',DELETE_ALLOWED,PROPERT
Y_FALSE);

set_block_property('XXNLL_RA_BILL_LINES',INSERT_ALLOWED,PROPERTY_F
ALSE);

set_block_property('XXNLL_RA_BILL_LINES',UPDATE_ALLOWED,PROPERTY_F
ALSE);

set_block_property('XXNLL_RA_BILL_LINES',DELETE_ALLOWED,PROPERTY_F
ALSE);
set_block_property('XXNLL_RA_BILL_DEDUCTIONS',INSERT_ALLOWED,PROPE
RTY_FALSE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',UPDATE_ALLOWED,PROP
ERTY_FALSE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',DELETE_ALLOWED,PROP
ERTY_FALSE);

ELSE

set_block_property('XXNLL_RA_BILL_HEADERS',INSERT_ALLOWED,PROPERT
Y_TRUE);

set_block_property('XXNLL_RA_BILL_HEADERS',UPDATE_ALLOWED,PROPERT
Y_TRUE);

set_block_property('XXNLL_RA_BILL_HEADERS',DELETE_ALLOWED,PROPERT
Y_TRUE);

set_block_property('XXNLL_RA_BILL_LINES',INSERT_ALLOWED,PROPERTY_T
RUE);

set_block_property('XXNLL_RA_BILL_LINES',UPDATE_ALLOWED,PROPERTY_T
RUE);

set_block_property('XXNLL_RA_BILL_LINES',DELETE_ALLOWED,PROPERTY_T
RUE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',INSERT_ALLOWED,PROPE
RTY_TRUE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',UPDATE_ALLOWED,PROP
ERTY_TRUE);
set_block_property('XXNLL_RA_BILL_DEDUCTIONS',DELETE_ALLOWED,PROP
ERTY_TRUE);
END IF;
END ENABLE_DISABLE;

App_costum
package app_custom is
procedure close_window(wnd in varchar2);
procedure open_window(wnd in varchar2);
procedure CONCURRENT_PRG_INVOICE;
end;

package body app_custom is

procedure close_window(wnd in varchar2) is


/*
This procedure is called whenever the user closes a window, as
a result of the WHEN-WINDOW-CLOSED trigger firing. You are responsible
for supplying unqiue code that addresses the needs of each window, such as
deferring master-detail relations, or closing related windows.

Other windows that will be referenced into your form rely on the default
code at the beginning and end of this procedure - under no circumstances
should you modify that code.
*/
begin

/*
THE FOLLOWING CODE MUST NOT BE MODIFIED. It prevents windows from
closing
while in enter-query mode.
*/

if (name_in('system.mode') = 'ENTER-QUERY') then


app_exception.disabled;
return;
end if;

/*
YOU MUST MODIFY THE FOLLOWING CODE to account for specific behaviors
of your
form, including:
1. identifying the 'first window' of the form and treating
a close window on that window like a close form.
2. deferring master-detail relations for detail blocks that
exist in other windows.
3. closing other related windows.
The default code at the end of this procedure actually closes the window.
If you do that yourself in this code, issue a 'return;' at the end of
your logic for your specific windows.
*/

if (wnd = 'RABILL') then


app_window.close_first_window;
elsif (wnd = '<another window>') then
--defer relations
--close related windows
null;
elsif (wnd = '<yet another window>') then
--defer relations
--close related windows
null;
end if;

/*
THE FOLLOWING CODE MUST NOT BE MODIFIED. It ensures the cursor is not
in
the window that will be closed (by moving it to the previous block if
needed), and actually closes the specified window.
*/

if (wnd = get_view_property(get_item_property(:SYSTEM.CURSOR_ITEM,
ITEM_CANVAS), WINDOW_NAME)) then
do_key('PREVIOUS_BLOCK');
end if;
hide_window(wnd);

end close_window;

procedure open_window(wnd in varchar2) is


/*
This procedure should be called from any code that could result
in a non-modal window being opened.
*/
begin
/*
YOU MUST MODIFY THE FOLLOWING CODE to account for specific behaviors
of your
form, including:
1. Positioning the window to be opened
2. Resetting master-detail relations for blocks in the window
3. navigation to a block in that window
*/
if (wnd = '<a window>') then
--position the window
--reset master-detail relations
--navigate to a block in the window
null;
elsif (wnd = '<another window>') then
--position the window
--reset master-detail relations
--navigate to a block in the window
null;
elsif (wnd = '<yet another window>') then
--position the window
--reset master-detail relations
--navigate to a block in the window
null;
end if;

end open_window;

Procedure Check_Package_Failure IS
BEGIN
IF NOT ( Form_Success ) THEN
RAISE Form_Trigger_Failure;
END IF;
END;
PROCEDURE Clear_All_Master_Details IS
mastblk VARCHAR2(30); -- Initial Master Block Causing Coord
coordop VARCHAR2(30); -- Operation Causing the Coord
trigblk VARCHAR2(30); -- Cur Block On-Clear-Details Fires On
startitm VARCHAR2(61); -- Item in which cursor started
frmstat VARCHAR2(15); -- Form Status
curblk VARCHAR2(30); -- Current Block
currel VARCHAR2(30); -- Current Relation
curdtl VARCHAR2(30); -- Current Detail Block

FUNCTION First_Changed_Block_Below(Master VARCHAR2)


RETURN VARCHAR2 IS
curblk VARCHAR2(30); -- Current Block
currel VARCHAR2(30); -- Current Relation
retblk VARCHAR2(30); -- Return Block
BEGIN
--
-- Initialize Local Vars
--
curblk := Master;
currel := Get_Block_Property(curblk, FIRST_MASTER_RELATION);
--
-- While there exists another relation for this block
--
WHILE currel IS NOT NULL LOOP
--
-- Get the name of the detail block
--
curblk := Get_Relation_Property(currel, DETAIL_NAME);
--
-- If this block has changes, return its name
--
IF ( Get_Block_Property(curblk, STATUS) = 'CHANGED' ) THEN
RETURN curblk;
ELSE
--
-- No changes, recursively look for changed blocks below
--
retblk := First_Changed_Block_Below(curblk);
--
-- If some block below is changed, return its name
--
IF retblk IS NOT NULL THEN
RETURN retblk;
ELSE
--
-- Consider the next relation
--
currel := Get_Relation_Property(currel, NEXT_MASTER_RELATION);
END IF;
END IF;
END LOOP;

--
-- No changed blocks were found
--
RETURN NULL;
END First_Changed_Block_Below;

BEGIN
--
-- Init Local Vars
--
mastblk := :System.Master_Block;
coordop := :System.Coordination_Operation;
trigblk := :System.Trigger_Block;
startitm := :System.Cursor_Item;
frmstat := :System.Form_Status;

--
-- If the coordination operation is anything but CLEAR_RECORD or
-- SYNCHRONIZE_BLOCKS, then continue checking.
--
IF coordop NOT IN ('CLEAR_RECORD', 'SYNCHRONIZE_BLOCKS') THEN
--
-- If we're processing the driving master block...
--
IF mastblk = trigblk THEN
--
-- If something in the form is changed, find the
-- first changed block below the master
--
IF frmstat = 'CHANGED' THEN
curblk := First_Changed_Block_Below(mastblk);
--
-- If we find a changed block below, go there
-- and Ask to commit the changes.
--
IF curblk IS NOT NULL THEN
Go_Block(curblk);
Check_Package_Failure;
Clear_Block(ASK_COMMIT);
--
-- If user cancels commit dialog, raise error
--
IF NOT ( :System.Form_Status = 'QUERY'
OR :System.Block_Status = 'NEW' ) THEN
RAISE Form_Trigger_Failure;
END IF;
END IF;
END IF;
END IF;
END IF;

--
-- Clear all the detail blocks for this master without
-- any further asking to commit.
--
currel := Get_Block_Property(trigblk, FIRST_MASTER_RELATION);
WHILE currel IS NOT NULL LOOP
curdtl := Get_Relation_Property(currel, DETAIL_NAME);
IF Get_Block_Property(curdtl, STATUS) <> 'NEW' THEN
Go_Block(curdtl);
Check_Package_Failure;
Clear_Block(NO_VALIDATE);
IF :System.Block_Status <> 'NEW' THEN
RAISE Form_Trigger_Failure;
END IF;
END IF;
currel := Get_Relation_Property(currel, NEXT_MASTER_RELATION);
END LOOP;

--
-- Put cursor back where it started
--
IF :System.Cursor_Item <> startitm THEN
Go_Item(startitm);
Check_Package_Failure;
END IF;

EXCEPTION
WHEN Form_Trigger_Failure THEN
IF :System.Cursor_Item <> startitm THEN
Go_Item(startitm);
END IF;
RAISE;

END Clear_All_Master_Details;
PROCEDURE ENABLE_DISABLE IS
BEGIN
if upper(:XXNLL_RA_BILL_HEADERS.status) like 'APPROV%' then

set_block_property('XXNLL_RA_BILL_HEADERS',INSERT_ALLOWED,PROPERT
Y_FALSE);

set_block_property('XXNLL_RA_BILL_HEADERS',UPDATE_ALLOWED,PROPERT
Y_FALSE);

set_block_property('XXNLL_RA_BILL_HEADERS',DELETE_ALLOWED,PROPERT
Y_FALSE);
set_block_property('XXNLL_RA_BILL_LINES',INSERT_ALLOWED,PROPERTY_F
ALSE);

set_block_property('XXNLL_RA_BILL_LINES',UPDATE_ALLOWED,PROPERTY_F
ALSE);

set_block_property('XXNLL_RA_BILL_LINES',DELETE_ALLOWED,PROPERTY_F
ALSE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',INSERT_ALLOWED,PROPE
RTY_FALSE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',UPDATE_ALLOWED,PROP
ERTY_FALSE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',DELETE_ALLOWED,PROP
ERTY_FALSE);

ELSE

set_block_property('XXNLL_RA_BILL_HEADERS',INSERT_ALLOWED,PROPERT
Y_TRUE);

set_block_property('XXNLL_RA_BILL_HEADERS',UPDATE_ALLOWED,PROPERT
Y_TRUE);

set_block_property('XXNLL_RA_BILL_HEADERS',DELETE_ALLOWED,PROPERT
Y_TRUE);

set_block_property('XXNLL_RA_BILL_LINES',INSERT_ALLOWED,PROPERTY_T
RUE);
set_block_property('XXNLL_RA_BILL_LINES',UPDATE_ALLOWED,PROPERTY_T
RUE);

set_block_property('XXNLL_RA_BILL_LINES',DELETE_ALLOWED,PROPERTY_T
RUE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',INSERT_ALLOWED,PROPE
RTY_TRUE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',UPDATE_ALLOWED,PROP
ERTY_TRUE);

set_block_property('XXNLL_RA_BILL_DEDUCTIONS',DELETE_ALLOWED,PROP
ERTY_TRUE);
END IF;
END ENABLE_DISABLE;

PACKAGE IMPORT IS

PROCEDURE INSERT_AP_INVOICE_HDR(p_invoice_id varchar2,p_vendor_id


number,p_vendor_site_id number,p_user_id number);
PROCEDURE INSERT_AP_INVOICE_RET_CRE(p_VENDOR_id number);
PROCEDURE INSERT_AP_INVOICE_DTL(p_VENDOR_id number,P_TASK_ID
NUMBER);
PROCEDURE INSERT_AP_INVOICE_DEDUCTION(p_VENDOR_id
number,P_TASK_ID NUMBER);

END;

PROCEDURE CONCURRENT_PRG_INVOICE
IS
l_res_create number;--varchar2(250);
--v_request_status Boolean;
sql_program constant varchar2(256):= 'APXIIMPT';
application_name constant varchar2(6) := 'SQLAP';
--c_set_process_id constant number := 1;
v_org_id number;
submit_failed EXCEPTION;
v_msg varchar2(1000);
v_stage varchar2(50);
BOOKED_FLAG varchar2(1);
begin
--v_stage:='STAGE10';
v_org_id:=fnd_profile.value('ORG_ID');
--
v_request_status:=fnd_submit.submit_program(application_name,sql_program);--,v_stag
e);--,v_org_id,to_char(1),to_char(1),to_char(1),to_char(1),'',to_char(1));
--fnd_message.debug('Inside teh begin ');
--IF BOOKED_FLAG = 'Y' THEN
l_res_create :=fnd_request.submit_request
(application_name,
sql_program,
NULL,
NULL,
FALSE,
'ERS', --v_org_id,
NULL,
null,--:parameter.p_grp_id,
null,--:parameter.p_grp_id,
CHR(0),
CHR(0),
CHR(0),
'N',
'N', CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0),
CHR(0), CHR(0), CHR(0), CHR(0));
commit_form;
:system.message_level:=5;
fnd_message.debug('Your request # '||l_res_create||' has submitted');
--END IF;

exception
when others then
message('Error '||sqlcode||','||sqlerrm);
END CONCURRENT_PRG_INVOICE;

end app_custom;

PACKAGE BODY IMPORT IS

v_inv_id number;
v_inv_id_ret number;
v_inv_id_ret_c number;

PROCEDURE INSERT_AP_INVOICE_HDR(p_invoice_id
varchar2,p_vendor_id number,p_vendor_site_id number,p_user_id number)
is
v_pay_mode varchar2(10);
v_grp_id number;
V_ACCTS_PAY_CCID number;
v_terms_id number;
v_dist_comb_id number;

begin

BEGIN
select distinct a.ACCTS_PAY_CCID
,a.TERMS_ID
into V_ACCTS_PAY_CCID
,v_terms_id
from AP_VENDOR_SITES_V a
where VENDOR_ID=p_vendor_id;
exception
when others then
null;

END;

select PN_PAYMENTS_GROUP_S.nextval into v_grp_id from dual;


-------------newly added

select AP_INVOICES_INTERFACE_S.nextval
into v_inv_id
from dual ;

Insert into AP_INVOICES_INTERFACE(INVOICE_ID,

INVOICE_NUM,

INVOICE_TYPE_LOOKUP_CODE,

INVOICE_DATE,

VENDOR_ID,

VENDOR_SITE_ID,

INVOICE_AMOUNT,

INVOICE_CURRENCY_CODE,

EXCHANGE_RATE_TYPE,

EXCHANGE_RATE,

TERMS_ID,
DESCRIPTION,

SOURCE,

CREATION_DATE,

GOODS_RECEIVED_DATE,

INVOICE_RECEIVED_DATE,

ORG_ID,

EXCHANGE_DATE,

TERMS_DATE,

LAST_UPDATED_BY,

LAST_UPDATE_LOGIN,

LAST_UPDATE_DATE,

CREATED_BY,

GROUP_ID,

GL_DATE,

ACCTS_PAY_CODE_COMBINATION_ID,

PAYMENT_CURRENCY_CODE,

PAYMENT_CROSS_RATE
)

values( v_inv_id,

:XXNLL_RA_BILL_
HEADERS.RABILL_NO,

'STANDARD'
,

:XXNLL_RA_BILL_HEADERS.CREATION_DATE,

p_vendor_id,

p_vendor_site_id,

TRUNC((:XXNLL_RA_BILL_LINES.TOT)-
floor(NVL(:XXNLL_RA_BILL_DEDUCTIONS.TOTALDEDUTION_AMOUNT,0)),2)
,

'INR',

'Corporate',

1,

v_terms_id,

:XXNLL_RA
_BILL_HEADERS.REMARKS,

'ERS',
-----------------------------used already DEFINED IN APPS FORM source

:XXNLL_RA
_BILL_HEADERS.CREATION_DATE,

--
v_pay_mode,

sysdate,
sysdate,

:parameter.org
_id,

:XXNLL_RA
_BILL_HEADERS.CREATION_DATE,

sysdate,

p_user_id,

373297,

sysdate,

p_user_id,

v_grp_id,

:XXNLL_RA
_BILL_HEADERS.CREATION_DATE,

V_ACCTS_PAY_CCID,

'INR',

);

------------------FOR
inserting retension record

---
fnd_message.debug('FOR inserting retension record header part');

select
AP_INVOICES_INTERFACE_S.nextval
into
v_inv_id_ret from dual ;

Insert into
AP_INVOICES_INTERFACE(INVOICE_ID,

INVOICE_NUM,

INVOICE_TYPE_LOOKUP_CODE,

INVOICE_DATE,

VENDOR_ID,

VENDOR_SITE_ID,

INVOICE_AMOUNT,

INVOICE_CURRENCY_CODE,

EXCHANGE_RATE_TYPE,

EXCHANGE_RATE,

TERMS_ID,

DESCRIPTION,

SOURCE,

CREATION_DATE,

GOODS_RECEIVED_DATE,
INVOICE_RECEIVED_DATE,

ORG_ID,

EXCHANGE_DATE,

TERMS_DATE,

LAST_UPDATED_BY,

LAST_UPDATE_LOGIN,

LAST_UPDATE_DATE,

CREATED_BY,

GROUP_ID,

GL_DATE,

ACCTS_PAY_CODE_COMBINATION_ID,

PAYMENT_CURRENCY_CODE,

PAYMENT_CROSS_RATE

values( v_inv_id_ret,

:XXNLL_RA_BILL_
HEADERS.RABILL_NO||'/RET' ,

'STANDARD'
,
:XXNLL_RA_BILL_HEADERS.CREATION_DATE,

p_vendor_id,

:XXNLL_RA
_BILL_HEADERS.RENTION_SITE_ID,

floor(:XXNLL_RA_BILL_LINES.TOT*(:XXNLL_RA_BILL_HEADERS.RETENTIO
N_PERCENTAGE/100)),

'INR',

'Corporate',

1,

v_terms_id,

:XXNLL_RA
_BILL_HEADERS.REMARKS,

'ERS',

:XXNLL_RA
_BILL_HEADERS.CREATION_DATE,

--
v_pay_mode,

sysdate,

sysdate,

:parameter.org
_id,

:XXNLL_RA
_BILL_HEADERS.CREATION_DATE,

sysdate,

p_user_id,
373297,

sysdate,

p_user_id,

v_grp_id,

:XXNLL_RA
_BILL_HEADERS.CREATION_DATE,

V_ACCTS_PAY_CCID,

'INR',

);

-------------------------------------ret

------------------FOR inserting
retension credit record

--
fnd_message.debug('FOR inserting retension credit proceed');

select
AP_INVOICES_INTERFACE_S.nextval
into
v_inv_id_ret_c from dual ;

Insert into
AP_INVOICES_INTERFACE(INVOICE_ID,

INVOICE_NUM,
INVOICE_TYPE_LOOKUP_CODE,

INVOICE_DATE,

VENDOR_ID,

VENDOR_SITE_ID,

INVOICE_AMOUNT,

INVOICE_CURRENCY_CODE,

EXCHANGE_RATE_TYPE,

EXCHANGE_RATE,

TERMS_ID,

DESCRIPTION,

SOURCE,

CREATION_DATE,

GOODS_RECEIVED_DATE,

INVOICE_RECEIVED_DATE,

ORG_ID,

EXCHANGE_DATE,

TERMS_DATE,
LAST_UPDATED_BY,

LAST_UPDATE_LOGIN,

LAST_UPDATE_DATE,

CREATED_BY,

GROUP_ID,

GL_DATE,

ACCTS_PAY_CODE_COMBINATION_ID,

PAYMENT_CURRENCY_CODE,

PAYMENT_CROSS_RATE

values( v_inv_id_ret_c,

:XXNLL_RA_BILL_
HEADERS.RABILL_NO||'/CM',

'CREDIT',

:XXNLL_RA_BILL_HEADERS.CREATION_DATE,

p_vendor_id,

p_vendor_site_id,

'-'||
floor(:XXNLL_RA_BILL_LINES.TOT*(:XXNLL_RA_BILL_HEADERS.RETENTIO
N_PERCENTAGE/100)),
'INR',

'Corporate',

1,

v_terms_id,

:XXNLL_RA
_BILL_HEADERS.REMARKS,

'ERS',
-----------------------------EXTRA RECORD INSERT FOR RETENSION

:XXNLL_RA
_BILL_HEADERS.CREATION_DATE,

--
v_pay_mode,

sysdate,

sysdate,

:parameter.org
_id,

:XXNLL_RA
_BILL_HEADERS.CREATION_DATE,

sysdate,

p_user_id,

373297,

sysdate,

p_user_id,

v_grp_id,

:XXNLL_RA
_BILL_HEADERS.CREATION_DATE,
V_ACCTS_PAY_CCID,

'INR',

);

commit;
end INSERT_AP_INVOICE_HDR;

--------------------------------------------PROCEDURE RETENTION CREDIT START


--------------------

-- PROCEDURE INSERT_AP_INVOICE_DTL(p_vendor_id number)


PROCEDURE INSERT_AP_INVOICE_RET_CRE(p_VENDOR_id
number)
is
v_area number;
V_ACCTS_PAY_CCID number;
v_dist_comb_id number;
v_exp_id number;
l_code_combination_id number(20);

begin

begin
select distinct a.ACCTS_PAY_CCID
into V_ACCTS_PAY_CCID
from AP_VENDOR_SITES_V a
where VENDOR_ID=p_vendor_id;
exception
when others then
null;
end;
begin
select distinct hou.ORGANIZATION_ID into v_exp_id
from hr_operating_units hou where hou.name =
:XXNLL_RA_BILL_LINES.EXPEND_ORGANIZATION;
exception
when others then
null;
end;

-- fnd_message.debug('FOR inserting retension record detail');

Insert
into AP_INVOICE_LINES_INTERFACE(INVOICE_ID,

invoice_line_id,

LINE_NUMBER,

LINE_TYPE_LOOKUP_CODE,

AMOUNT,

ACCOUNTING_DATE,

DESCRIPTION,

QUANTITY_INVOICED,

UNIT_PRICE,

-- DIST_CODE_COMBINATION_ID,
ORG_ID,

DISTRIBUTION_SET_ID

values(
v_inv_id_ret,

ap_invoice_lines_interface_s.nextval,

:XXNLL_RA_BILL_LINES.LINE_ID,

'ITEM',

floor(:XXNLL_RA_BILL_LINES.TOT*(:XXNLL_RA_BILL_HEADERS.RETENTIO
N_PERCENTAGE/100)),

:XXNLL_RA_BILL_HEADERS.CREATION_DATE,

NULL,

NULL,

NULL,

-- :XXNLL_RA_BILL_LINES.GL_CODE_ID, ---from gl_code_combinations table


based on organ

:parameter.org_id,

:XXNLL_RA_BILL_HEADERS.RETENSION_CONTROL_ID
);

---------------------------------EXTRA RECORD INSERT FOR RETENSION CREDIT

--fnd_message.debug('FOR inserting retension credit record detail');

Insert
into AP_INVOICE_LINES_INTERFACE(INVOICE_ID,

invoice_line_id,

LINE_NUMBER,

LINE_TYPE_LOOKUP_CODE,

AMOUNT,

ACCOUNTING_DATE,

DESCRIPTION,

QUANTITY_INVOICED,

UNIT_PRICE,

-- DIST_CODE_COMBINATION_ID,

ORG_ID,
DISTRIBUTION_SET_ID

values(
v_inv_id_ret_c,

ap_invoice_lines_interface_s.nextval,

:XXNLL_RA_BILL_LINES.LINE_ID,

'ITEM',

'-'||
floor(:XXNLL_RA_BILL_LINES.TOT*(:XXNLL_RA_BILL_HEADERS.RETENTIO
N_PERCENTAGE/100)),

:XXNLL_RA_BILL_HEADERS.CREATION_DATE,

NULL,

NULL,

NULL,

-- :XXNLL_RA_BILL_LINES.GL_CODE_ID, ---from gl_code_combinations table


based on organ

:parameter.org_id,

:XXNLL_RA_BILL_HEADERS.RETENSION_CONTROL_ID

);
end INSERT_AP_INVOICE_RET_CRE;

------------------------------------PROCEDURE DETAIL START


------------------------------------------

PROCEDURE INSERT_AP_INVOICE_DTL(p_vendor_id number,P_TASK_ID


NUMBER)
is
v_area number;
V_ACCTS_PAY_CCID number;
v_dist_comb_id number;
v_exp_id number;
l_code_combination_id number(20);

begin

begin
select distinct a.ACCTS_PAY_CCID
into V_ACCTS_PAY_CCID
from AP_VENDOR_SITES_V a
where VENDOR_ID=p_vendor_id;
exception
when others then
null;
end;

begin
select distinct hou.ORGANIZATION_ID into v_exp_id
from hr_operating_units hou where hou.name =
:XXNLL_RA_BILL_LINES.EXPEND_ORGANIZATION;
exception
when others then
null;
end;

-- LOOP

Insert into
AP_INVOICE_LINES_INTERFACE(INVOICE_ID,

invoice_line_id,

LINE_NUMBER,

LINE_TYPE_LOOKUP_CODE,

AMOUNT,

ACCOUNTING_DATE,

DESCRIPTION,

QUANTITY_INVOICED,

UNIT_PRICE,

DIST_CODE_COMBINATION_ID,

ORG_ID,

PROJECT_ID,

TASK_ID,

EXPENDITURE_TYPE,
EXPENDITURE_ITEM_DATE,

EXPENDITURE_ORGANIZATION_ID,

PA_ADDITION_FLAG,

PROJECT_ACCOUNTING_CONTEXT,

ATTRIBUTE1,

ATTRIBUTE2

values(v_inv_id,

ap_invoice_lines_interface_s.nextval,

:global.sno,--:SYSTEM.TRIGGER_RECORD,

'ITEM',

ROUND(:XXNLL_RA_BILL_LINES.TOTAL,2),

:XXNLL_RA_BILL_HEADERS.CREATION_DATE,

NULL,

NULL,
NULL,

:XXNLL_RA_BILL_LINES.GL_CODE_ID, ---from gl_code_combinations table based


on organ

:parameter.org_id,

:XXNLL_RA_BILL_HEADERS.PROJECT_ID,

P_TASK_ID, --:XXNLL_RA_BILL_LINES.TASK_ID,

:XXNLL_RA_BILL_LINES.EXPENDITURE_TYPE,

:XXNLL_RA_BILL_LINES.EXPENDITURE_DATE,

v_exp_id,

'Y',

'Yes',

:XXNLL_RA_BILL_LINES.TDS_ID,

:XXNLL_RA_BILL_LINES.WCT_ID

);

end INSERT_AP_INVOICE_DTL;
------------------------------------
-----PROCEDURE DEDUCTIONS START

PROCEDURE
INSERT_AP_INVOICE_DEDUCTION(p_VENDOR_id number,P_TASK_ID
NUMBER)

is
v_area number;
V_ACCTS_PAY_CCID number;
v_dist_comb_id number;
v_exp_id number;
l_code_combination_id number(20);

begin

begin
select distinct a.ACCTS_PAY_CCID
into V_ACCTS_PAY_CCID
from AP_VENDOR_SITES_V a
where VENDOR_ID=p_vendor_id;
exception
when others then
null;
end;

begin
select distinct hou.ORGANIZATION_ID into v_exp_id
from hr_operating_units hou where hou.name =
:XXNLL_RA_BILL_DEDUCTIONS.EXPEN_ORG;
exception
when others then
null;
end;
Insert into
AP_INVOICE_LINES_INTERFACE(INVOICE_ID,

invoice_line_id,

LINE_NUMBER,

LINE_TYPE_LOOKUP_CODE,

AMOUNT,

ACCOUNTING_DATE,

DESCRIPTION,

QUANTITY_INVOICED,

UNIT_PRICE,

DIST_CODE_COMBINATION_ID,

ORG_ID,

PROJECT_ID,

TASK_ID,

EXPENDITURE_TYPE,

EXPENDITURE_ITEM_DATE,

EXPENDITURE_ORGANIZATION_ID,
PA_ADDITION_FLAG,

PROJECT_ACCOUNTING_CONTEXT

values(v_inv_id,

ap_invoice_lines_interface_s.nextval,

:global.sno,--:SYSTEM.TRIGGER_RECORD,

'ITEM',

'-'||ROUND(:XXNLL_RA_BILL_DEDUCTIONS.AMOUNT,2),

:XXNLL_RA_BILL_HEADERS.CREATION_DATE,

NULL,

NULL,

NULL,

:XXNLL_RA_BILL_DEDUCTIONS.GL_CODE_ID, ---from gl_code_combinations


table based on organ

:parameter.org_id,

:XXNLL_RA_BILL_HEADERS.PROJECT_ID,
:XXNLL_RA_BILL_DEDUCTIONS.TASK_ID,

:XXNLL_RA_BILL_DEDUCTIONS.EXPEN_TYPE,

:XXNLL_RA_BILL_DEDUCTIONS.EXPEN_DATE,

v_exp_id,

'Y',

'Yes'

)
;

exception
when others then
null;

end INSERT_AP_INVOICE_DEDUCTION;

END;

PROCEDURE Set_MDI_Title IS
V_USER NUMBER;

BEGIN
fnd_profile.GET('ORG_ID',:PARAMETER.ORG_ID);

select distinct hou.name into :XXNLL_RA_BILL_HEADERS.OPERATING_UNIT


from hr_operating_units hou
where hou.ORGANIZATION_ID=:PARAMETER.ORG_ID;
Set_Window_Property('RABILL', TITLE,'Running Account Bill -
'||:XXNLL_RA_BILL_HEADERS.OPERATING_UNIT);

begin
fnd_profile.GET('USER_ID',V_USER);

SELECT distinct full_name


into :XXNLL_RA_BILL_HEADERS.PREPARER_NAME
FROM FND_USER fu,hr_employees pr
where fu.user_id=v_user
and pr.EMPLOYEE_ID = fu.employee_id;

end;

exception
when others then
null;

end Set_MDI_Title;

S-ar putea să vă placă și