CREATE OR REPLACE PROCEDURE qmx_pledge_reminders_dl (
i_begin_date IN VARCHAR2,
i_end_date IN VARCHAR2,
RC1 IN OUT qmx_refcur_pkg.rc
) AS
/*******************************************************************************
Procedure: qmx_pledge_reminders_dl
Written for QmX Inc.
Written on: November 12, 2003
Programmer: Bob K. Werner
Description: Stored procedure returns data to InfoMaker to produce the
pledge reminder letter data.
Prompting:
Revisions:
Rev Date By Description of Modification
--- ---------- --- ---------------------------------------------------
000 11/12/2003 BKW New procedure.
001 07/20/2005 BKW Changed date arguments to VARCHAR2 to work in ADV7.1.
002 06/14/2005 BKW Added person_or_org indicator to output.
003 01/20/2006 BKW Added pledge allocation code to output for better link.
004 01/26/2006 BKW Added virtual last payment table to avoid dup rows.
005 04/11/2006 BKW Added pledge fund code and translation to output.
*******************************************************************************/
----------------------------------------------------------------------------
-- CONSTANTS
----------------------------------------------------------------------------
c_note_its_oracle_msg CONSTANT VARCHAR2(100)
:= 'Oracle error occurred.';
-----------------------------------------------------------------------------
-- VARIABLES
-----------------------------------------------------------------------------
v_begin_date VARCHAR2(08);
v_end_date VARCHAR2(08);
--
--
BEGIN
/*****************************************************************************
* Delete contents of the temporary tables
******************************************************************************/
DELETE qmx_temp_pledge_reminders_dl;
DELETE qmx_temp_pledge_rem_sched_dl;
COMMIT;
/*****************************************************************************/
v_begin_date := i_begin_date;
v_end_date := i_end_date;
/*****************************************************************************/
-- ADD ENTITY TABLE DATA TO REMINDER DOWNLOAD TABLE
--
INSERT INTO qmx_temp_pledge_reminders_dl
SELECT DISTINCT
e.id_number,
e.pref_mail_name,
e.salutation,
a.street1,
a.street2,
a.street3,
a.foreign_cityzip,
a.city,
SUBSTR(a.state_code,1,2),
a.zipcode,
c.short_desc,
p.pledge_pledge_number,
p.pledge_sequence,
TO_CHAR(p.pledge_date_of_record, 'MM/DD/YYYY'),
TO_CHAR(p.pledge_amount, '99,999,999.00'),
SUBSTR(al.long_name,1,80),
SUBSTR(ps.payment_schedule_date,5,2)||'/'||SUBSTR(ps.payment_schedule_date,7,2)||'/'||SUBSTR(ps.payme
nt_schedule_date,1,4),
DECODE(ps.payment_schedule_status,
'P','Paid',
'U','Unpaid'),
TO_CHAR(ps.payment_schedule_amount, '99,999,999.00'),
TO_CHAR(ps.payment_schedule_balance, '99,999,999.00'),
e.report_name,
e.pref_name_sort,
--
-- ADDED 6/14/2005 – BKW
--
e.person_or_org,
--
--
-- ADDED 1/20/2006 – BKW
--
p.pledge_allocation_name,
e.id_number||p.pledge_pledge_number||LPAD(TO_CHAR(p.pledge_sequence),6,
0)||p.pledge_allocation_name,
p.pledge_fund_name,
f.short_desc
--
FROM entity e,
pledge p,
primary_pledge pp,
payment_schedule ps,
--
-- LAST ACTIVE PAYMENT SCHEDULE -- ADDED 1/20/2006 – BKW
(SELECT ps.payment_schedule_pledge_nbr pay_id,
MAX(ps.payment_schedule_date) last_date
FROM pledge p,
primary_pledge pp,
payment_schedule ps
WHERE p.pledge_associated_code = 'P' AND
pp.prim_pledge_number = p.pledge_pledge_number AND
pp.prim_pledge_status = 'A' AND
pp.prim_pledge_source_info <> 'AOR' AND
pp.prim_pledge_type NOT IN ('PF','PO','BP') AND
ps.payment_schedule_pledge_nbr = pp.prim_pledge_number AND
ps.payment_schedule_balance <> 0 AND
ps.payment_schedule_date BETWEEN v_begin_date AND v_end_date
GROUP BY ps.payment_schedule_pledge_nbr) lps,
--
allocation al,
address a,
tms_country c,
tms_fund_code f
WHERE e.record_status_code = 'A' AND
p.pledge_donor_id = e.id_number AND
p.pledge_associated_code = 'P' AND
pp.prim_pledge_number = p.pledge_pledge_number AND
pp.prim_pledge_status = 'A' AND
pp.prim_pledge_source_info <> 'AOR' AND
pp.prim_pledge_type NOT IN ('PF','PO','BP') AND
lps.pay_id = pp.prim_pledge_number AND
ps.payment_schedule_pledge_nbr = lps.pay_id AND
ps.payment_schedule_date = lps.last_date AND
al.allocation_code = p.pledge_allocation_name AND
f.fund_code_code = p.pledge_fund_name (+) AND
a.id_number = e.id_number AND
a.addr_pref_ind = 'Y' AND
a.addr_status_code = 'A' AND
TRIM(a.street1) IS NOT NULL AND
a.state_code <> 'ZZ' AND
a.country_code = c.country_code (+);
COMMIT;
/*****************************************************************************/
-- ADD PAYMENT SCHEDUAL DATA TO REMINDER SCHEDULES TABLE
--
INSERT INTO qmx_temp_pledge_rem_sched_dl
SELECT DISTINCT
pr.id_number,
pr.report_name,
pr.pledge_number,
pr.pledge_sequence,
pr.pledge_date,
pr.pledge_amount,
pr.pledge_allocation,
SUBSTR(ps.payment_schedule_date,5,2)||'/'||SUBSTR(ps.payment_schedule_date,7,2)||'/'||SUBSTR(ps.payme
nt_schedule_date,1,4),
DECODE(ps.payment_schedule_status,
'P','Paid',
'U','Unpaid'),
TO_CHAR(ps.payment_schedule_amount, '99,999,999.00'),
TO_CHAR(ps.payment_schedule_balance, '99,999,999.00'),
pr.sort_name,
--
-- ADDED 1/20/2006 – BKW
--
pr.pledge_alloc_code,
pr.id_number||pr.pledge_number||LPAD(TO_CHAR(pr.pledge_sequence),6, 0)||pr.pledge_alloc_code
--
FROM payment_schedule ps,
qmx_temp_pledge_reminders_dl pr
WHERE ps.payment_schedule_pledge_nbr = pr.pledge_number;
COMMIT;
----------------------------------------------------------------------
-- RETURN PARAMETERS TO INFOMAKER
----------------------------------------------------------------------
OPEN RC1 FOR
SELECT
id_number,
pref_name,
salutation,
address1,
address2,
address3,
address4,
city,
state,
zip,
country,
pledge_number,
pledge_date,
pledge_amount,
pledge_allocation,
pay_date,
pay_status,
pay_amount,
pay_balance,
person_or_org,
pledge_alloc_code,
link_to_sched,
pledge_fund_code,
pledge_fund_trans
FROM qmx_temp_pledge_reminders_dl
ORDER BY sort_name;
----------------------------------------------------------------------
-- CLEANUP TEMPORARY TABLES
----------------------------------------------------------------------
DELETE qmx_temp_pledge_reminders_dl;
END qmx_pledge_reminders_dl;
/
show errors;
/
drop public synonym qmx_pledge_reminders_dl;
create public synonym qmx_pledge_reminders_dl for qmx_pledge_reminders_dl;
GRANT execute ON qmx_pledge_reminders_dl TO ADVROLE

qmx_pledge_reminders_dl_sql_ex.sql

  • 1.
    CREATE OR REPLACEPROCEDURE qmx_pledge_reminders_dl ( i_begin_date IN VARCHAR2, i_end_date IN VARCHAR2, RC1 IN OUT qmx_refcur_pkg.rc ) AS /******************************************************************************* Procedure: qmx_pledge_reminders_dl Written for QmX Inc. Written on: November 12, 2003 Programmer: Bob K. Werner Description: Stored procedure returns data to InfoMaker to produce the pledge reminder letter data. Prompting: Revisions: Rev Date By Description of Modification --- ---------- --- --------------------------------------------------- 000 11/12/2003 BKW New procedure. 001 07/20/2005 BKW Changed date arguments to VARCHAR2 to work in ADV7.1. 002 06/14/2005 BKW Added person_or_org indicator to output. 003 01/20/2006 BKW Added pledge allocation code to output for better link. 004 01/26/2006 BKW Added virtual last payment table to avoid dup rows. 005 04/11/2006 BKW Added pledge fund code and translation to output. *******************************************************************************/ ---------------------------------------------------------------------------- -- CONSTANTS ---------------------------------------------------------------------------- c_note_its_oracle_msg CONSTANT VARCHAR2(100) := 'Oracle error occurred.'; ----------------------------------------------------------------------------- -- VARIABLES ----------------------------------------------------------------------------- v_begin_date VARCHAR2(08); v_end_date VARCHAR2(08); -- -- BEGIN /***************************************************************************** * Delete contents of the temporary tables ******************************************************************************/ DELETE qmx_temp_pledge_reminders_dl; DELETE qmx_temp_pledge_rem_sched_dl; COMMIT; /*****************************************************************************/ v_begin_date := i_begin_date; v_end_date := i_end_date; /*****************************************************************************/ -- ADD ENTITY TABLE DATA TO REMINDER DOWNLOAD TABLE -- INSERT INTO qmx_temp_pledge_reminders_dl SELECT DISTINCT e.id_number, e.pref_mail_name, e.salutation,
  • 2.
    a.street1, a.street2, a.street3, a.foreign_cityzip, a.city, SUBSTR(a.state_code,1,2), a.zipcode, c.short_desc, p.pledge_pledge_number, p.pledge_sequence, TO_CHAR(p.pledge_date_of_record, 'MM/DD/YYYY'), TO_CHAR(p.pledge_amount, '99,999,999.00'), SUBSTR(al.long_name,1,80), SUBSTR(ps.payment_schedule_date,5,2)||'/'||SUBSTR(ps.payment_schedule_date,7,2)||'/'||SUBSTR(ps.payme nt_schedule_date,1,4), DECODE(ps.payment_schedule_status, 'P','Paid', 'U','Unpaid'), TO_CHAR(ps.payment_schedule_amount,'99,999,999.00'), TO_CHAR(ps.payment_schedule_balance, '99,999,999.00'), e.report_name, e.pref_name_sort, -- -- ADDED 6/14/2005 – BKW -- e.person_or_org, -- -- -- ADDED 1/20/2006 – BKW -- p.pledge_allocation_name, e.id_number||p.pledge_pledge_number||LPAD(TO_CHAR(p.pledge_sequence),6, 0)||p.pledge_allocation_name, p.pledge_fund_name, f.short_desc -- FROM entity e, pledge p, primary_pledge pp, payment_schedule ps, -- -- LAST ACTIVE PAYMENT SCHEDULE -- ADDED 1/20/2006 – BKW (SELECT ps.payment_schedule_pledge_nbr pay_id, MAX(ps.payment_schedule_date) last_date FROM pledge p, primary_pledge pp, payment_schedule ps WHERE p.pledge_associated_code = 'P' AND pp.prim_pledge_number = p.pledge_pledge_number AND pp.prim_pledge_status = 'A' AND pp.prim_pledge_source_info <> 'AOR' AND pp.prim_pledge_type NOT IN ('PF','PO','BP') AND ps.payment_schedule_pledge_nbr = pp.prim_pledge_number AND
  • 3.
    ps.payment_schedule_balance <> 0AND ps.payment_schedule_date BETWEEN v_begin_date AND v_end_date GROUP BY ps.payment_schedule_pledge_nbr) lps, -- allocation al, address a, tms_country c, tms_fund_code f WHERE e.record_status_code = 'A' AND p.pledge_donor_id = e.id_number AND p.pledge_associated_code = 'P' AND pp.prim_pledge_number = p.pledge_pledge_number AND pp.prim_pledge_status = 'A' AND pp.prim_pledge_source_info <> 'AOR' AND pp.prim_pledge_type NOT IN ('PF','PO','BP') AND lps.pay_id = pp.prim_pledge_number AND ps.payment_schedule_pledge_nbr = lps.pay_id AND ps.payment_schedule_date = lps.last_date AND al.allocation_code = p.pledge_allocation_name AND f.fund_code_code = p.pledge_fund_name (+) AND a.id_number = e.id_number AND a.addr_pref_ind = 'Y' AND a.addr_status_code = 'A' AND TRIM(a.street1) IS NOT NULL AND a.state_code <> 'ZZ' AND a.country_code = c.country_code (+); COMMIT; /*****************************************************************************/ -- ADD PAYMENT SCHEDUAL DATA TO REMINDER SCHEDULES TABLE -- INSERT INTO qmx_temp_pledge_rem_sched_dl SELECT DISTINCT pr.id_number, pr.report_name, pr.pledge_number, pr.pledge_sequence, pr.pledge_date, pr.pledge_amount, pr.pledge_allocation, SUBSTR(ps.payment_schedule_date,5,2)||'/'||SUBSTR(ps.payment_schedule_date,7,2)||'/'||SUBSTR(ps.payme nt_schedule_date,1,4), DECODE(ps.payment_schedule_status, 'P','Paid', 'U','Unpaid'), TO_CHAR(ps.payment_schedule_amount, '99,999,999.00'), TO_CHAR(ps.payment_schedule_balance, '99,999,999.00'), pr.sort_name, -- -- ADDED 1/20/2006 – BKW -- pr.pledge_alloc_code, pr.id_number||pr.pledge_number||LPAD(TO_CHAR(pr.pledge_sequence),6, 0)||pr.pledge_alloc_code --
  • 4.
    FROM payment_schedule ps, qmx_temp_pledge_reminders_dlpr WHERE ps.payment_schedule_pledge_nbr = pr.pledge_number; COMMIT; ---------------------------------------------------------------------- -- RETURN PARAMETERS TO INFOMAKER ---------------------------------------------------------------------- OPEN RC1 FOR SELECT id_number, pref_name, salutation, address1, address2, address3, address4, city, state, zip, country, pledge_number, pledge_date, pledge_amount, pledge_allocation, pay_date, pay_status, pay_amount, pay_balance, person_or_org, pledge_alloc_code, link_to_sched, pledge_fund_code, pledge_fund_trans FROM qmx_temp_pledge_reminders_dl ORDER BY sort_name; ---------------------------------------------------------------------- -- CLEANUP TEMPORARY TABLES ---------------------------------------------------------------------- DELETE qmx_temp_pledge_reminders_dl; END qmx_pledge_reminders_dl; / show errors; / drop public synonym qmx_pledge_reminders_dl; create public synonym qmx_pledge_reminders_dl for qmx_pledge_reminders_dl; GRANT execute ON qmx_pledge_reminders_dl TO ADVROLE