declare
l_organization_id NUMBER :=3688;
l_period_set_name varchar2(50);
l_accounted_period_type varchar2(50);
l_last_scheduled_close_date date;
l_prior_period_open BOOLEAN;
l_new_acct_period_id NUMBER;
l_duplicate_open_period BOOLEAN;
l_commit_complete BOOLEAN:=TRUE;
l_return_status VARCHAR2(1);
l_last_period_end_date date;
cursor acct_period_list
( org_id in number,
periodsetname in varchar2,
acctperiodtype in varchar2,
l_last_scheduled_close_date in date
)
is
SELECT
glp.PERIOD_SET_NAME
, glp.PERIOD_NAME
, glp.START_DATE
, glp.END_DATE
, glp.PERIOD_TYPE ACCOUNTED_PERIOD_TYPE
, glp.PERIOD_YEAR
, glp.PERIOD_NUM PERIOD_NUMBER
FROM
GL_PERIODS glp
WHERE glp.ADJUSTMENT_PERIOD_FLAG = 'N'
AND glp.period_type = acctperiodtype
AND glp.PERIOD_SET_NAME = periodsetname
AND glp.PERIOD_NAME NOT IN
( SELECT OAP.PERIOD_NAME
FROM ORG_ACCT_PERIODS OAP
WHERE OAP.PERIOD_SET_NAME = glp.PERIOD_SET_NAME
AND OAP.PERIOD_NAME = glp.PERIOD_NAME
AND OAP.organization_id = org_id
)
AND glp.end_date >= l_last_scheduled_close_date
ORDER BY glp.start_date ASC;
begin
SELECT glsob.period_set_name,accounted_period_type
into l_period_set_name,l_accounted_period_type
FROM cst_organization_definitions cod,
gl_sets_of_books glsob
WHERE glsob.set_of_books_id =cod.set_of_books_id
and cod.organization_id =l_organization_id;
SELECT Max(schedule_close_date)
INTO l_last_scheduled_close_date
FROM org_acct_periods
WHERE organization_id =l_organization_id;
dbms_output.put_line('l_period_set_name : '||l_period_set_name);
dbms_output.put_line('l_accounted_period_type : '||l_accounted_period_type);
dbms_output.put_line('l_last_scheduled_close_date : '||l_last_scheduled_close_date);
for per_rec in acct_period_list(l_organization_id,l_period_set_name,l_accounted_period_type,l_last_scheduled_close_date) loop
dbms_output.put_line('ACCOUNTED_PERIOD_TYPE : '||per_rec.ACCOUNTED_PERIOD_TYPE);
dbms_output.put_line('PERIOD_SET_NAME : '||per_rec.PERIOD_SET_NAME);
dbms_output.put_line('PERIOD_NAME : '||per_rec.PERIOD_NAME);
dbms_output.put_line('PERIOD_YEAR : '||per_rec.PERIOD_YEAR);
dbms_output.put_line('PERIOD_NUMBER : '||per_rec.PERIOD_NUMBER);
CST_AccountingPeriod_PUB.open_period
( p_api_version => 1.0
, p_org_id => l_organization_id
, p_user_id => -1
, p_login_id => -1
, p_acct_period_type => per_rec.ACCOUNTED_PERIOD_TYPE
, p_org_period_set_name => per_rec.PERIOD_SET_NAME
, p_open_period_name => per_rec.PERIOD_NAME
, p_open_period_year => per_rec.PERIOD_YEAR
, p_open_period_num => per_rec.PERIOD_NUMBER
, x_last_scheduled_close_date => l_last_scheduled_close_date
, p_period_end_date => per_rec.end_date
, x_prior_period_open => l_prior_period_open
, x_new_acct_period_id => l_new_acct_period_id
, x_duplicate_open_period => l_duplicate_open_period
, x_commit_complete => l_commit_complete
, x_return_status => l_return_status
) ;
IF l_return_status <> FND_API.g_ret_sts_success THEN
dbms_output.put_line('Error while opening period ');
ELSE
dbms_output.put_line('Period(s) Opened Successfully');
COMMIT;
END IF;
end LOOP;
end;