USP_DATAFORMTEMPLATE_EDITLOAD_GRANTAWARD
The load procedure used by the edit dataform template "Grant Award Edit Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@TSLONG | bigint | INOUT | Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record. |
@GRANTNAME | nvarchar(150) | INOUT | Grant program |
@GRANTORNAME | nvarchar(154) | INOUT | Grantor |
@DATE | datetime | INOUT | Date |
@AMOUNT | money | INOUT | Amount |
@POSTSTATUSCODE | tinyint | INOUT | Post status |
@POSTDATE | datetime | INOUT | Post date |
@SPLITS | xml | INOUT | Designations |
@FREQUENCYCODE | tinyint | INOUT | Frequency |
@NUMBEROFINSTALLMENTS | int | INOUT | No. installments remaining |
@NEXTTRANSACTIONDATE | datetime | INOUT | Next installment date |
@AMOUNTPAID | money | INOUT | Amount paid |
@INSTALLMENTS | xml | INOUT | |
@DONOTACKNOWLEDGE | bit | INOUT | Do not acknowledge |
@MAINSINGLEDESIGNATIONID | uniqueidentifier | INOUT | Designation |
@LASTPAYMENTSEQUENCE | int | INOUT | Installment sequence of last payment |
@CATEGORYCODEID | uniqueidentifier | INOUT | Revenue category |
@MAXSOLICITORSPLITAMOUNTS | xml | INOUT | Max solicitor split amounts |
@ISREIMBURSABLE | bit | INOUT | Grant award is reimbursable |
@GRANTAWARDON | tinyint | INOUT | |
@OPPORTUNITYID | uniqueidentifier | INOUT | Opportunity |
@PROSPECTNAME | nvarchar(154) | INOUT | Prospect |
@CONSTITUENTID | uniqueidentifier | INOUT | |
@BASECURRENCYID | uniqueidentifier | INOUT | Base currency |
@TRANSACTIONCURRENCYID | uniqueidentifier | INOUT | Transaction currency |
@BASEEXCHANGERATEID | uniqueidentifier | INOUT | Exchange rate ID |
@EXCHANGERATE | decimal(20, 8) | INOUT | Exchange rate |
@HADSPOTRATE | bit | INOUT | Had spot rate |
@RATECHANGED | bit | INOUT | Rate changed |
@BASEDECIMALDIGITS | tinyint | INOUT | Decimal digits |
@BASEROUNDINGTYPECODE | tinyint | INOUT | Rounding type |
@TRANSACTIONCURRENCYDESCRIPTION | nvarchar(110) | INOUT | Transaction currency description |
@HASPOSTEDPAYMENTS | bit | INOUT | Grant award has posted payments |
@ALLOWGLDISTRIBUTIONS | bit | INOUT | Allow GL distributions |
@USERGRANTEDSPOTRATE | bit | INOUT | User granted spot rate |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_GRANTAWARD
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@TSLONG bigint = 0 output,
@GRANTNAME nvarchar(150) = null output,
@GRANTORNAME nvarchar(154) = null output,
@DATE datetime = null output,
@AMOUNT money = null output,
@POSTSTATUSCODE tinyint = null output,
@POSTDATE datetime = null output,
@SPLITS xml = null output,
@FREQUENCYCODE tinyint = null output,
@NUMBEROFINSTALLMENTS int = null output,
@NEXTTRANSACTIONDATE datetime = null output,
@AMOUNTPAID money = null output,
@INSTALLMENTS xml = null output,
@DONOTACKNOWLEDGE bit = null output,
@MAINSINGLEDESIGNATIONID uniqueidentifier = null output,
@LASTPAYMENTSEQUENCE int = null output,
@CATEGORYCODEID uniqueidentifier = null output,
@MAXSOLICITORSPLITAMOUNTS xml = null output,
@ISREIMBURSABLE bit = null output,
@GRANTAWARDON tinyint = null output,
@OPPORTUNITYID uniqueidentifier = null output,
@PROSPECTNAME nvarchar(154) = null output,
@CONSTITUENTID uniqueidentifier = null output,
@BASECURRENCYID uniqueidentifier = null output,
@TRANSACTIONCURRENCYID uniqueidentifier = null output,
@BASEEXCHANGERATEID uniqueidentifier = null output,
@EXCHANGERATE decimal(20,8) = null output,
@HADSPOTRATE bit = null output,
@RATECHANGED bit = null output,
@BASEDECIMALDIGITS tinyint = null output,
@BASEROUNDINGTYPECODE tinyint = null output,
@TRANSACTIONCURRENCYDESCRIPTION nvarchar(110) = null output,
@HASPOSTEDPAYMENTS bit = null output,
@ALLOWGLDISTRIBUTIONS bit = null output,
@USERGRANTEDSPOTRATE bit = null output
)
as
set nocount on;
set @DATALOADED = 0
set @TSLONG = 0
-- Check GL business rule for this account system and set to 'Do not post' if needed.
-- ****
declare @PDACCOUNTSYSTEMID uniqueidentifier;
select @PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMID
from dbo.PDACCOUNTSYSTEMFORREVENUE
where ID = @ID;
set @ALLOWGLDISTRIBUTIONS = dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID);
-- ****
declare @LASTINSTALLMENT uniqueidentifier;
select
@DATALOADED = DATALOADED,
@GRANTNAME = GRANTNAME,
@GRANTORNAME = GRANTORNAME,
@DATE = DATE,
@AMOUNT = AMOUNT,
@POSTSTATUSCODE = POSTSTATUSCODE,
@POSTDATE = POSTDATE,
@FREQUENCYCODE = FREQUENCYCODE,
@NUMBEROFINSTALLMENTS = NUMBEROFINSTALLMENTS,
@NEXTTRANSACTIONDATE = NEXTTRANSACTIONDATE,
@TSLONG = TSLONG,
@DONOTACKNOWLEDGE = DONOTACKNOWLEDGE,
@CATEGORYCODEID = CATEGORYCODEID,
@MAXSOLICITORSPLITAMOUNTS = MAXSOLICITORSPLITAMOUNTS,
@ISREIMBURSABLE = ISREIMBURSABLE,
@GRANTAWARDON = GRANTAWARDON,
@OPPORTUNITYID = OPPORTUNITYID,
@PROSPECTNAME = PROSPECTNAME,
@CONSTITUENTID = CONSTITUENTID,
@BASECURRENCYID = BASECURRENCYID,
@TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID = BASEEXCHANGERATEID,
@EXCHANGERATE = EXCHANGERATE,
@HADSPOTRATE = HADSPOTRATE,
@RATECHANGED = 0,
@BASEDECIMALDIGITS = BASEDECIMALDIGITS,
@BASEROUNDINGTYPECODE = BASEROUNDINGTYPECODE,
@TRANSACTIONCURRENCYDESCRIPTION = TRANSACTIONCURRENCYDESCRIPTION
from
(
select
1 as DATALOADED,
GRANTS.TITLE as GRANTNAME,
dbo.UFN_CONSTITUENT_BUILDNAME(GRANTS.GRANTORID) as GRANTORNAME,
REVENUE.DATE as DATE,
REVENUE.TRANSACTIONAMOUNT as AMOUNT,
case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end as POSTSTATUSCODE,
REVENUE.POSTDATE as POSTDATE,
REVENUESCHEDULE.FREQUENCYCODE as FREQUENCYCODE,
REVENUESCHEDULE.NUMBEROFINSTALLMENTS as NUMBEROFINSTALLMENTS,
coalesce(REVENUESCHEDULE.NEXTTRANSACTIONDATE, REVENUESCHEDULE.STARTDATE) as NEXTTRANSACTIONDATE,
REVENUE.TSLONG as TSLONG,
DONOTACKNOWLEDGE,
(select top 1 GLREVENUECATEGORYMAPPINGID from dbo.REVENUECATEGORY inner join dbo.REVENUESPLIT on REVENUECATEGORY.ID = REVENUESPLIT.ID where REVENUEID = REVENUE.ID) as CATEGORYCODEID,
dbo.UFN_REVENUEDETAIL_GETMAXSOLICITORSPLITAMOUNTS_TOITEMLISTXML(@ID) as MAXSOLICITORSPLITAMOUNTS,
ISREIMBURSABLE as ISREIMBURSABLE,
1 as GRANTAWARDON, -- Grant program
null as OPPORTUNITYID,
null as PROSPECTNAME,
GRANTS.GRANTORID as CONSTITUENTID,
REVENUE.BASECURRENCYID,
REVENUE.TRANSACTIONCURRENCYID,
REVENUE.BASEEXCHANGERATEID,
CURRENCYEXCHANGERATE.RATE as EXCHANGERATE,
case
when CURRENCYEXCHANGERATE.TYPECODE = 2
then 1
else 0
end as HADSPOTRATE,
CURRENCY.DECIMALDIGITS as BASEDECIMALDIGITS,
CURRENCY.ROUNDINGTYPECODE as BASEROUNDINGTYPECODE,
dbo.UFN_CURRENCY_GETDESCRIPTION(REVENUE.TRANSACTIONCURRENCYID) as TRANSACTIONCURRENCYDESCRIPTION
from
dbo.REVENUE
left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
inner join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
inner join dbo.REVENUEFUNDINGREQUEST on REVENUE.ID = REVENUEFUNDINGREQUEST.ID
inner join dbo.FUNDINGREQUEST on REVENUEFUNDINGREQUEST.FUNDINGREQUESTID = FUNDINGREQUEST.ID
inner join dbo.GRANTS on FUNDINGREQUEST.GRANTSID = GRANTS.ID
inner join dbo.CURRENCY on CURRENCY.ID = REVENUE.BASECURRENCYID
left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = REVENUE.BASEEXCHANGERATEID
where
REVENUE.ID = @ID
and REVENUE.TRANSACTIONTYPECODE = 6
union all
select
1 as DATALOADED,
null as GRANTNAME,
null as GRANTORNAME,
REVENUE.DATE as DATE,
REVENUE.TRANSACTIONAMOUNT as AMOUNT,
case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end as POSTSTATUSCODE,
REVENUE.POSTDATE as POSTDATE,
REVENUESCHEDULE.FREQUENCYCODE as FREQUENCYCODE,
REVENUESCHEDULE.NUMBEROFINSTALLMENTS as NUMBEROFINSTALLMENTS,
coalesce(REVENUESCHEDULE.NEXTTRANSACTIONDATE, REVENUESCHEDULE.STARTDATE) as NEXTTRANSACTIONDATE,
REVENUE.TSLONG as TSLONG,
DONOTACKNOWLEDGE,
(select top 1 GLREVENUECATEGORYMAPPINGID from dbo.REVENUECATEGORY inner join dbo.REVENUESPLIT on REVENUECATEGORY.ID = REVENUESPLIT.ID where REVENUEID = REVENUE.ID) as CATEGORYCODEID,
dbo.UFN_REVENUEDETAIL_GETMAXSOLICITORSPLITAMOUNTS_TOITEMLISTXML(@ID) as MAXSOLICITORSPLITAMOUNTS,
ISREIMBURSABLE as ISREIMBURSABLE,
2 as GRANTAWARDON, -- Opportunity
OPPORTUNITY.ID as OPPORTUNITYID,
dbo.UFN_CONSTITUENT_BUILDNAME(PROSPECTPLAN.PROSPECTID) as PROSPECTNAME,
PROSPECTPLAN.PROSPECTID as CONSTITUENTID,
REVENUE.BASECURRENCYID,
REVENUE.TRANSACTIONCURRENCYID,
REVENUE.BASEEXCHANGERATEID,
CURRENCYEXCHANGERATE.RATE as EXCHANGERATE,
case
when CURRENCYEXCHANGERATE.TYPECODE = 2
then 1
else 0
end as HADSPOTRATE,
CURRENCY.DECIMALDIGITS as BASEDECIMALDIGITS,
CURRENCY.ROUNDINGTYPECODE as BASEROUNDINGTYPECODE,
dbo.UFN_CURRENCY_GETDESCRIPTION(REVENUE.TRANSACTIONCURRENCYID) as TRANSACTIONCURRENCYDESCRIPTION
from
dbo.REVENUE
left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
inner join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
inner join dbo.REVENUEOPPORTUNITY on REVENUEOPPORTUNITY.ID = REVENUESPLIT.ID
inner join dbo.OPPORTUNITY on REVENUEOPPORTUNITY.OPPORTUNITYID = OPPORTUNITY.ID
inner join dbo.PROSPECTPLAN on OPPORTUNITY.PROSPECTPLANID = PROSPECTPLAN.ID
inner join dbo.CURRENCY on CURRENCY.ID = REVENUE.BASECURRENCYID
left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = REVENUE.BASEEXCHANGERATEID
where
REVENUE.ID = @ID
and REVENUE.TRANSACTIONTYPECODE = 6
)
as TEMPTABLE;
if @DATALOADED = 1
begin
set @AMOUNTPAID = @AMOUNT - dbo.UFN_PLEDGE_GETBALANCE(@ID);
set @LASTINSTALLMENT = dbo.UFN_INSTALLMENT_GETLASTINSTALLMENTPAID(@ID);
if @LASTINSTALLMENT is null
begin
set @LASTPAYMENTSEQUENCE = 0;
end
else
begin
set @LASTPAYMENTSEQUENCE = (select SEQUENCE from dbo.INSTALLMENT where ID = @LASTINSTALLMENT);
end
--set @INSTALLMENTS = dbo.UFN_INSTALLMENT_GETINSTALLMENTS_TOITEMLISTXML(@ID);
-- set @NUMBEROFINSTALLMENTS to the number of unpaid installments
select @NUMBEROFINSTALLMENTS = @NUMBEROFINSTALLMENTS - @LASTPAYMENTSEQUENCE
set @SPLITS = (
select
SPLITS.TRANSACTIONAMOUNT AMOUNT,
SPLITS.APPLICATIONCODE,
SPLITS.CATEGORYCODEID,
SPLITS.DESIGNATIONID,
SPLITS.ID,
SPLITS.TYPECODE,
SPLITS.TRANSACTIONCURRENCYID
from dbo.UFN_REVENUE_GETSPLITS_2(@ID) SPLITS
inner join dbo.DESIGNATION on DESIGNATION.ID = SPLITS.DESIGNATIONID
order by DESIGNATION.VANITYNAME
for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64
);
set @INSTALLMENTS =(
select
INSTALLMENT.ID,
INSTALLMENT.DATE,
INSTALLMENT.TRANSACTIONAMOUNT as AMOUNT,
INSTALLMENT.BALANCE,
INSTALLMENT.APPLIED,
INSTALLMENT.SEQUENCE,
(
select
INSTALLMENTSPLIT.ID,
INSTALLMENTSPLIT.DESIGNATIONID,
INSTALLMENTSPLIT.TRANSACTIONAMOUNT as AMOUNT,
dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITAMOUNTAPPLIED(INSTALLMENTSPLIT.ID) APPLIED,
INSTALLMENTSPLIT.TRANSACTIONCURRENCYID,
INSTALLMENTSPLIT.REVENUESPLITID
from dbo.INSTALLMENTSPLIT
inner join dbo.DESIGNATION on DESIGNATION.ID = INSTALLMENTSPLIT.DESIGNATIONID
where INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
order by DESIGNATION.VANITYNAME
for xml raw('ITEM'),type,elements,BINARY BASE64
) as INSTALLMENTSPLITS,
INSTALLMENT.TRANSACTIONCURRENCYID
from dbo.UFN_INSTALLMENT_GETINSTALLMENTS_2(@ID) INSTALLMENT
order by INSTALLMENT.DATE
for xml raw('ITEM'),type,elements,root('INSTALLMENTS'),BINARY BASE64
);
end
set @HASPOSTEDPAYMENTS = dbo.UFN_PLEDGEHASPOSTEDPAYMENTS(@ID)
--replace with commented code for PBI 102747
set @USERGRANTEDSPOTRATE = 1;
/*set @USERGRANTEDSPOTRATE = case
when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID, '911f104d-ba5f-4469-b0ae-184c879aea99') = 1
then 1
else 0
end;*/
return 0;