USP_DATAFORMTEMPLATE_VIEW_MISCELLANEOUSPAYMENT
The load procedure used by the view dataform template "Miscellaneous Payment View 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. |
@CONSTITUENTID | uniqueidentifier | INOUT | Constituent ID |
@REVENUEID | uniqueidentifier | INOUT | RevenueID |
@AMOUNT | money | INOUT | Amount |
@DATE | datetime | INOUT | Date |
@CONSTITUENTNAME | nvarchar(255) | INOUT | Constituent |
@ISGIFT | bit | INOUT | Is gift |
@ISPLEDGE | bit | INOUT | Is pledge |
@ISRECURRINGGIFT | bit | INOUT | Is recurring gift |
@ISMGPLEDGE | bit | INOUT | Is matching gift claim |
@ISPLANNEDGIFT | bit | INOUT | Is planned gift |
@ISPAYMENT | bit | INOUT | Is payment |
@ISPOSTED | bit | INOUT | Is posted |
@LINKEDRECORDID | uniqueidentifier | INOUT | Linked record |
@ALLOWEDITPAYMENT | bit | INOUT | Allow Edit Payment |
@BENEFITSWAIVED | bit | INOUT | Benefits waived |
@CANROLLBACK | bit | INOUT | Can rollback transaction |
@CANSKIPTRANSACTION | bit | INOUT | Can skip transaction |
@ISPENDING | bit | INOUT | Is pending |
@EXTRADATAISPOSTED | bit | INOUT | Extra data is posted |
@HASWRITEOFF | bit | INOUT | Has write-offs |
@HASADJUSTMENTS | bit | INOUT | Has Adjustments |
@HASUNPOSTEDREVERSAL | bit | INOUT | Has unposted GL Reversal |
@HASUNPOSTEDADJUSTMENT | bit | INOUT | Has unposted Revenue Adjustment |
@HASUNPOSTEDEXTRADATA | bit | INOUT | Has unposted Stock, Gift-in-kind, or Property Adjustment |
@TYPE | nvarchar(20) | INOUT | Type |
@PLEDGEBALANCE | money | INOUT | Pledge balance |
@PAYMENTTYPECODE | tinyint | INOUT | Payment type code |
@ATTRIBUTEDEFINED | bit | INOUT | Attribute defined |
@REVENUECOUNT | int | INOUT | Revenue count |
@ALLOWMATCHINGGIFTCLAIM | bit | INOUT | Allow matching gift claim |
@HASTRIBUTES | bit | INOUT | Has tributes |
@CANAPPLYTRIBUTE | bit | INOUT | Can apply tribute |
@PAYMENTINCLUDESGIFT | bit | INOUT | Payment includes gift |
@RECEIPTSTATUSCODE | tinyint | INOUT | Receipt status code |
@MGPLEDGEISINACTIVE | bit | INOUT | Matching gift claim is inactive |
@ISCONSTITUENTHOUSEHOLD | bit | INOUT | Is the transaction's associated constituent a household |
@HOUSEHOLDSCANBEDONORS | bit | INOUT | Can households be donors |
@NEEDSRERECEIPT | bit | INOUT | Needs re-receipt |
@RECEIPTCOUNT | int | INOUT | Receipt count |
@PLANNEDGIFTID | uniqueidentifier | INOUT | Planned gift ID |
@REVENUEPAYMENTMETHODID | uniqueidentifier | INOUT | Revenue payment method ID |
@DONOTPOST | bit | INOUT | Do not post |
@SALEPOSTSTATUSCODE | tinyint | INOUT | Sale post status code |
@HASSOLDSTOCK | bit | INOUT | Has sold stock |
@GIFTFEE_ENABLED | bit | INOUT | GIFTFEE_ENABLED |
@HASSOLDPROPERTY | bit | INOUT | Has sold property |
@ELIGIBLEFORMATCHINGGIFTCLAIM | bit | INOUT | Eligible for matching gift claims |
@ISORDER | bit | INOUT | Is order |
@SALESORDERID | uniqueidentifier | INOUT | Sales order ID |
@ISORDERAPPLICATION | bit | INOUT | Is order application |
@ISMISCELLANEOUSPAYMENT | bit | INOUT | Is miscellaneous payment |
@REFERENCE | nvarchar(255) | INOUT | Reference |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@HASSOLDGIFTINKIND | bit | INOUT | Has sold gift-in-kind |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_MISCELLANEOUSPAYMENT
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@CONSTITUENTID uniqueidentifier = null output,
@REVENUEID uniqueidentifier = null output,
@AMOUNT money = null output,
@DATE datetime = null output,
@CONSTITUENTNAME nvarchar(255) = null output,
@ISGIFT bit = null output,
@ISPLEDGE bit = null output,
@ISRECURRINGGIFT bit = null output,
@ISMGPLEDGE bit = null output,
@ISPLANNEDGIFT bit = null output,
@ISPAYMENT bit = null output,
@ISPOSTED bit = null output,
@LINKEDRECORDID uniqueidentifier = null output,
@ALLOWEDITPAYMENT bit = null output,
@BENEFITSWAIVED bit = null output,
@CANROLLBACK bit = null output,
@CANSKIPTRANSACTION bit = null output,
@ISPENDING bit = null output,
@EXTRADATAISPOSTED bit = null output,
@HASWRITEOFF bit = null output,
@HASADJUSTMENTS bit = null output,
@HASUNPOSTEDREVERSAL bit = null output,
@HASUNPOSTEDADJUSTMENT bit = null output,
@HASUNPOSTEDEXTRADATA bit = null output,
@TYPE nvarchar(20) = null output,
@PLEDGEBALANCE money = null output,
@PAYMENTTYPECODE tinyint = null output,
@ATTRIBUTEDEFINED bit = null output,
@REVENUECOUNT int = null output,
@ALLOWMATCHINGGIFTCLAIM bit = null output,
@HASTRIBUTES bit = null output,
@CANAPPLYTRIBUTE bit = null output,
@PAYMENTINCLUDESGIFT bit = null output,
@RECEIPTSTATUSCODE tinyint = null output,
@MGPLEDGEISINACTIVE bit = null output,
@ISCONSTITUENTHOUSEHOLD bit = null output,
@HOUSEHOLDSCANBEDONORS bit = null output,
@NEEDSRERECEIPT bit = null output,
@RECEIPTCOUNT int = null output,
@PLANNEDGIFTID uniqueidentifier = null output,
@REVENUEPAYMENTMETHODID uniqueidentifier = null output,
@DONOTPOST bit = null output,
@SALEPOSTSTATUSCODE tinyint = null output,
@HASSOLDSTOCK bit = null output,
@GIFTFEE_ENABLED bit = null output,
@HASSOLDPROPERTY bit = null output,
@ELIGIBLEFORMATCHINGGIFTCLAIM bit = null output,
@ISORDER bit = null output,
@SALESORDERID uniqueidentifier = null output,
@ISORDERAPPLICATION bit = null output,
@ISMISCELLANEOUSPAYMENT bit = null output,
@REFERENCE nvarchar(255) = null output,
@CURRENTAPPUSERID uniqueidentifier = null,
@HASSOLDGIFTINKIND bit = null output
)
as
set nocount on;
set @DATALOADED = 0;
declare @POSTED bit;
declare @DONOTRECEIPT bit;
select
@ISPAYMENT = 0,
@ISGIFT = 0,
@ISPLEDGE = 0,
@ISRECURRINGGIFT = 0,
@ISMGPLEDGE = 0,
@ISPLANNEDGIFT = 0,
@CANROLLBACK = 0,
@CANSKIPTRANSACTION = 0,
@EXTRADATAISPOSTED = 0,
@ISPENDING = 0,
@HASWRITEOFF = 0,
@HASUNPOSTEDREVERSAL = 0,
@HASUNPOSTEDADJUSTMENT = 0,
@HASUNPOSTEDEXTRADATA = 0,
@HASTRIBUTES = 0,
@CANAPPLYTRIBUTE = 0,
@PAYMENTINCLUDESGIFT = 0,
@ATTRIBUTEDEFINED = dbo.UFN_ATTRIBUTECATEGORY_DEFINEDFORRECORDTYPE_FORAPPUSER('REVENUE',@CURRENTAPPUSERID),
@ALLOWMATCHINGGIFTCLAIM = case when exists (select top 1 ID from dbo.REVENUESPLIT where REVENUEID = @ID and APPLICATIONCODE <> 7) then 1 else 0 end,
@MGPLEDGEISINACTIVE = 0,
@GIFTFEE_ENABLED = dbo.UFN_GIFTFEE_ENABLED(),
@ISORDER = 0,
@ISORDERAPPLICATION = 0,
@ISMISCELLANEOUSPAYMENT = 0;
select top 1
@DATALOADED = 1,
@REVENUEID = REVENUE.ID,
@CONSTITUENTID = REVENUE.CONSTITUENTID,
@CONSTITUENTNAME = CONSTITUENT.NAME,
@ISPAYMENT = case when TRANSACTIONTYPECODE = 0 then 1 else 0 end,
@ISGIFT = case when TRANSACTIONTYPECODE = 0 then 1 else 0 end,
@ISPLEDGE = case when TRANSACTIONTYPECODE = 1 then 1 else 0 end,
@ISRECURRINGGIFT = case when TRANSACTIONTYPECODE = 2 then 1 else 0 end,
@ISMGPLEDGE = case when TRANSACTIONTYPECODE = 3 then 1 else 0 end,
@ISPLANNEDGIFT = case when TRANSACTIONTYPECODE = 4 then 1 else 0 end,
@ISORDER = case when TRANSACTIONTYPECODE = 5 then 1 else 0 end,
@HASUNPOSTEDADJUSTMENT = case when ADJUSTMENT.POSTSTATUSCODE = 1 then 1 else 0 end,
@ISPOSTED = case when REVENUEPOSTED.ID is null then 0 else 1 end,
@DATE = REVENUE.DATE,
@TYPE = REVENUE.TRANSACTIONTYPE,
@PLEDGEBALANCE = case when TRANSACTIONTYPECODE = 1 or TRANSACTIONTYPECODE = 3 then dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) else 0 end,
@PAYMENTTYPECODE = REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
@DONOTRECEIPT = REVENUE.DONOTRECEIPT,
@ISCONSTITUENTHOUSEHOLD = dbo.UFN_CONSTITUENT_ISHOUSEHOLD(CONSTITUENTID),
@NEEDSRERECEIPT = NEEDSRERECEIPT,
@REVENUEPAYMENTMETHODID = REVENUEPAYMENTMETHOD.ID,
@DONOTPOST = REVENUE.DONOTPOST,
@ELIGIBLEFORMATCHINGGIFTCLAIM = REVENUE.ELIGIBLEFORMATCHINGGIFTCLAIM,
@REFERENCE = REVENUEREFERENCE.REFERENCE
from dbo.REVENUE
inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
left join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
left join dbo.ADJUSTMENT on REVENUE.ID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.REVENUEREFERENCE on REVENUE.ID = REVENUEREFERENCE.ID
where REVENUE.ID = @ID
set @HOUSEHOLDSCANBEDONORS = dbo.UFN_INSTALLATIONINFO_GETHOUSEHOLDSCANBEDONORS();
select
@AMOUNT = sum(REVENUE.AMOUNT),
@REVENUECOUNT = count(REVENUE.ID)
from dbo.REVENUE
where REVENUE.ID = @ID
if exists(select top 1 ID from dbo.REVENUE
where REVENUE.ID = @ID and REVENUE.TRANSACTIONTYPECODE = 0)
set @ISPAYMENT = 1;
select @HASADJUSTMENTS = case when count(*) > 0 then 1 else 0 end,
@HASUNPOSTEDADJUSTMENT = case when max(POSTSTATUSCODE) > 0 then 1 else 0 end
from
(select ADJUSTMENT.ID, POSTSTATUSCODE from dbo.ADJUSTMENT inner join dbo.REVENUE on ADJUSTMENT.REVENUEID = REVENUE.ID
where REVENUE.ID = @ID
union all
select STOCKSALEADJUSTMENT.ID, POSTSTATUSCODE from dbo.STOCKSALEADJUSTMENT
inner join dbo.STOCKSALE on STOCKSALEADJUSTMENT.STOCKSALEID = STOCKSALE.ID
inner join dbo.REVENUEPAYMENTMETHOD on STOCKSALE.STOCKDETAILID = REVENUEPAYMENTMETHOD.ID
where REVENUEPAYMENTMETHOD.REVENUEID = @ID
union all
select PROPERTYDETAILADJUSTMENT.ID, POSTSTATUSCODE from dbo.PROPERTYDETAILADJUSTMENT
inner join dbo.REVENUEPAYMENTMETHOD on PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID = REVENUEPAYMENTMETHOD.ID
where REVENUEPAYMENTMETHOD.REVENUEID = @ID
union all
select GIFTINKINDSALEADJUSTMENT.ID, POSTSTATUSCODE from dbo.GIFTINKINDSALEADJUSTMENT
inner join dbo.GIFTINKINDSALE on GIFTINKINDSALEADJUSTMENT.GIFTINKINDSALEID = GIFTINKINDSALE.ID
inner join dbo.REVENUEPAYMENTMETHOD on GIFTINKINDSALE.GIFTINKINDPAYMENTMETHODDETAILID = REVENUEPAYMENTMETHOD.ID
where REVENUEPAYMENTMETHOD.REVENUEID = @ID
) as A;
-- Check if any of the stock has been sold
set @HASSOLDSTOCK = 0
if @PAYMENTTYPECODE = 4 -- Stock payment method
begin
if exists ( select STOCKDETAIL.ID from dbo.STOCKDETAIL
inner join dbo.STOCKSALE on STOCKDETAIL.ID = STOCKSALE.STOCKDETAILID
where STOCKDETAIL.ID = @REVENUEPAYMENTMETHODID)
set @HASSOLDSTOCK = 1
end
-- Check if the property has sold
set @HASSOLDPROPERTY = 0
if @PAYMENTTYPECODE = 5 -- Property payment method
begin
if exists (select PROPERTYDETAIL.ID from dbo.PROPERTYDETAIL where ID = @REVENUEPAYMENTMETHODID and ISSOLD = 1)
set @HASSOLDPROPERTY = 1
end
-- Check if the Gift-in-Kind has been sold
set @HASSOLDGIFTINKIND = 0
if @PAYMENTTYPECODE = 6 -- Gift-in-kind payment method
begin
if exists ( select GIFTINKINDPAYMENTMETHODDETAIL.ID from dbo.GIFTINKINDPAYMENTMETHODDETAIL
inner join dbo.GIFTINKINDSALE on GIFTINKINDPAYMENTMETHODDETAIL.ID = GIFTINKINDSALE.GIFTINKINDPAYMENTMETHODDETAILID
where GIFTINKINDPAYMENTMETHODDETAIL.ID = @REVENUEPAYMENTMETHODID)
set @HASSOLDGIFTINKIND = 1
end
--if Revenue is of type Sold Stock or Sold Payment and is Posted, we won't allow the user to edit the payment
if @PAYMENTTYPECODE = 4 and
exists ( select ID from dbo.STOCKSALE
where STOCKDETAILID = @REVENUEPAYMENTMETHODID and STOCKSALE.SALEPOSTSTATUSCODE = 0)
begin
set @ALLOWEDITPAYMENT = 0;
set @EXTRADATAISPOSTED = 1;
if exists (select STOCKSALEADJUSTMENT.ID from dbo.STOCKSALEADJUSTMENT
inner join dbo.STOCKSALE on STOCKSALE.ID = STOCKSALEADJUSTMENT.STOCKSALEID and STOCKSALEADJUSTMENT.POSTSTATUSCODE = 1
where STOCKSALE.STOCKDETAILID = @REVENUEPAYMENTMETHODID)
set @HASUNPOSTEDEXTRADATA = 1;
end
if @PAYMENTTYPECODE = 5 and @HASSOLDPROPERTY = 1
select @SALEPOSTSTATUSCODE = SALEPOSTSTATUSCODE from dbo.PROPERTYDETAIL where ID = @REVENUEPAYMENTMETHODID;
if @SALEPOSTSTATUSCODE = 0
begin
set @ALLOWEDITPAYMENT = 0;
set @EXTRADATAISPOSTED = 1;
if exists (select * from dbo.PROPERTYDETAILADJUSTMENT
inner join dbo.PROPERTYDETAIL on PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID = PROPERTYDETAIL.ID and PROPERTYDETAILADJUSTMENT.POSTSTATUSCODE = 1
where PROPERTYDETAIL.ID = @REVENUEPAYMENTMETHODID)
set @HASUNPOSTEDEXTRADATA = 1;
end
--if Revenue is of type Sold Gift-in-kind or Sold Payment and is Posted, we won't allow the user to edit the payment
if @PAYMENTTYPECODE = 6 and
exists ( select ID from dbo.GIFTINKINDSALE
where GIFTINKINDPAYMENTMETHODDETAILID = @REVENUEPAYMENTMETHODID and GIFTINKINDSALE.SALEPOSTSTATUSCODE = 0)
begin
set @ALLOWEDITPAYMENT = 0;
set @EXTRADATAISPOSTED = 1;
if exists (select GIFTINKINDSALEADJUSTMENT.ID from dbo.GIFTINKINDSALEADJUSTMENT
inner join dbo.GIFTINKINDSALE on GIFTINKINDSALE.ID = GIFTINKINDSALEADJUSTMENT.GIFTINKINDSALEID and GIFTINKINDSALEADJUSTMENT.POSTSTATUSCODE = 1
where GIFTINKINDSALE.GIFTINKINDPAYMENTMETHODDETAILID = @REVENUEPAYMENTMETHODID)
set @HASUNPOSTEDEXTRADATA = 1;
end
if @ALLOWEDITPAYMENT = 1
begin
if @PAYMENTTYPECODE = 4 and @HASSOLDSTOCK = 1
if (select STOCKSALE.SALEPOSTSTATUSCODE from dbo.STOCKSALE
where STOCKDETAILID = @REVENUEPAYMENTMETHODID) = 0
begin
set @ALLOWEDITPAYMENT = 0;
set @EXTRADATAISPOSTED = 1;
if exists (select * from dbo.STOCKSALEADJUSTMENT
inner join dbo.STOCKSALE on STOCKSALEADJUSTMENT.STOCKSALEID = STOCKSALE.ID and STOCKSALEADJUSTMENT.POSTSTATUSCODE = 1
inner join dbo.STOCKDETAIL on STOCKSALE.STOCKDETAILID = STOCKDETAIL.ID
where STOCKDETAIL.ID = @REVENUEPAYMENTMETHODID)
set @HASUNPOSTEDEXTRADATA = 1;
else
set @HASUNPOSTEDEXTRADATA = 0;
end
else
set @EXTRADATAISPOSTED = 0;
if @PAYMENTTYPECODE = 5 and @HASSOLDPROPERTY = 1
if (select SALEPOSTSTATUSCODE from dbo.PROPERTYDETAIL where ID = @REVENUEPAYMENTMETHODID) = 0
begin
set @ALLOWEDITPAYMENT = 0;
set @EXTRADATAISPOSTED = 1;
if exists (select * from dbo.PROPERTYDETAILADJUSTMENT
inner join dbo.PROPERTYDETAIL on PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID = PROPERTYDETAIL.ID and PROPERTYDETAILADJUSTMENT.POSTSTATUSCODE = 1
where PROPERTYDETAIL.ID = @REVENUEPAYMENTMETHODID)
set @HASUNPOSTEDEXTRADATA = 1;
else
set @HASUNPOSTEDEXTRADATA = 0;
end
else
set @EXTRADATAISPOSTED = 0;
if @PAYMENTTYPECODE = 6 and @HASSOLDGIFTINKIND = 1
if (select GIFTINKINDSALE.SALEPOSTSTATUSCODE from dbo.GIFTINKINDSALE
where GIFTINKINDPAYMENTMETHODDETAILID = @REVENUEPAYMENTMETHODID) = 0
begin
set @ALLOWEDITPAYMENT = 0;
set @EXTRADATAISPOSTED = 1;
if exists (select * from dbo.GIFTINKINDSALEADJUSTMENT
inner join dbo.GIFTINKINDSALE on GIFTINKINDSALEADJUSTMENT.GIFTINKINDSALEID = GIFTINKINDSALE.ID and GIFTINKINDSALEADJUSTMENT.POSTSTATUSCODE = 1
inner join dbo.GIFTINKINDPAYMENTMETHODDETAIL on GIFTINKINDSALE.GIFTINKINDPAYMENTMETHODDETAILID = GIFTINKINDPAYMENTMETHODDETAIL.ID
where GIFTINKINDPAYMENTMETHODDETAIL.ID = @REVENUEPAYMENTMETHODID)
set @HASUNPOSTEDEXTRADATA = 1;
else
set @HASUNPOSTEDEXTRADATA = 0;
end
else
set @EXTRADATAISPOSTED = 0;
end
if @ALLOWEDITPAYMENT = 1
if @POSTED = 1
set @ALLOWEDITPAYMENT = 0;
if @ISRECURRINGGIFT = 1
begin
select @CANROLLBACK =
case when REVENUESCHEDULE.STATUSCODE <> 3 and STARTDATE <= dbo.[UFN_REVENUE_GETPREVIOUSTRANSACTIONDATE_BYID_1_1](@REVENUEID, NEXTTRANSACTIONDATE)
then 1 else 0 end,
@CANSKIPTRANSACTION =
case when REVENUESCHEDULE.STATUSCODE <> 3 -- completed
then 1 else 0 end
from dbo.REVENUESCHEDULE
where REVENUESCHEDULE.ID = @REVENUEID;
select
@ISPENDING = REVENUESCHEDULE.ISPENDING,
@BENEFITSWAIVED = REVENUE.BENEFITSWAIVED
from dbo.REVENUE
inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
where REVENUE.ID = @REVENUEID;
end
select @HASADJUSTMENTS = case when count(*) > 0 then 1 else 0 end
from
(select ID from dbo.ADJUSTMENT where REVENUEID = @ID
union all
select STOCKSALEADJUSTMENT.ID from dbo.STOCKSALEADJUSTMENT
inner join dbo.STOCKSALE on STOCKSALEADJUSTMENT.STOCKSALEID = STOCKSALE.ID
where STOCKSALE.STOCKDETAILID = @REVENUEPAYMENTMETHODID
union all
select GIFTINKINDSALEADJUSTMENT.ID from dbo.GIFTINKINDSALEADJUSTMENT
inner join dbo.GIFTINKINDSALE on GIFTINKINDSALEADJUSTMENT.GIFTINKINDSALEID = GIFTINKINDSALE.ID
where GIFTINKINDSALE.GIFTINKINDPAYMENTMETHODDETAILID = @REVENUEPAYMENTMETHODID
union all
select ID from dbo.PROPERTYDETAILADJUSTMENT where PROPERTYDETAILID = @REVENUEPAYMENTMETHODID
) as A;
--ADDTRANSACTIONID
select @HASUNPOSTEDREVERSAL = case when count(*) > 0 then 1 else 0 end from
(
select REVENUEGLDISTRIBUTION.ID
from dbo.REVENUEGLDISTRIBUTION
inner join dbo.GLTRANSACTION on REVENUEGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
inner join dbo.GLTRANSACTION REVERSALTRANSACTION on GLTRANSACTION.ID = REVERSALTRANSACTION.REVERSEDGLTRANSACTIONID
where REVENUEGLDISTRIBUTION.REVENUEID = @ID and REVERSALTRANSACTION.POSTSTATUSCODE = 1
union all
select STOCKSALEGLDISTRIBUTION.ID
from dbo.STOCKSALEGLDISTRIBUTION
inner join dbo.GLTRANSACTION on STOCKSALEGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
inner join dbo.GLTRANSACTION REVERSALTRANSACTION on GLTRANSACTION.ID = REVERSALTRANSACTION.REVERSEDGLTRANSACTIONID
where STOCKSALEGLDISTRIBUTION.REVENUEID = @ID and REVERSALTRANSACTION.POSTSTATUSCODE = 1
union all
select PROPERTYDETAILGLDISTRIBUTION.ID
from dbo.PROPERTYDETAILGLDISTRIBUTION
inner join dbo.GLTRANSACTION on PROPERTYDETAILGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
inner join dbo.GLTRANSACTION REVERSALTRANSACTION on GLTRANSACTION.ID = REVERSALTRANSACTION.REVERSEDGLTRANSACTIONID
where PROPERTYDETAILGLDISTRIBUTION.REVENUEID = @ID and REVERSALTRANSACTION.POSTSTATUSCODE = 1
union all
select WRITEOFFGLDISTRIBUTION.ID
from dbo.WRITEOFFGLDISTRIBUTION
inner join dbo.GLTRANSACTION on WRITEOFFGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
inner join dbo.GLTRANSACTION REVERSALTRANSACTION on GLTRANSACTION.ID = REVERSALTRANSACTION.REVERSEDGLTRANSACTIONID
where WRITEOFFGLDISTRIBUTION.REVENUEID = @ID and REVERSALTRANSACTION.POSTSTATUSCODE = 1
union all
select GIFTINKINDSALEGLDISTRIBUTION.ID
from dbo.GIFTINKINDSALEGLDISTRIBUTION
inner join dbo.GLTRANSACTION on GIFTINKINDSALEGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
inner join dbo.GLTRANSACTION REVERSALTRANSACTION on GLTRANSACTION.ID = REVERSALTRANSACTION.REVERSEDGLTRANSACTIONID
where GIFTINKINDSALEGLDISTRIBUTION.REVENUEID = @ID and REVERSALTRANSACTION.POSTSTATUSCODE = 1
) as DATA
if @ISPLEDGE = 1
begin
select @HASWRITEOFF = case when count(*) > 0 then 1 else 0 end
from DBO.REVENUE
inner join DBO.WRITEOFF on REVENUE.ID = WRITEOFF.REVENUEID
where REVENUE.ID = @ID
and WRITEOFF.POSTSTATUSCODE <> 2;
select
@ISPENDING = REVENUESCHEDULE.ISPENDING,
@BENEFITSWAIVED = REVENUE.BENEFITSWAIVED
from dbo.REVENUE
inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
where REVENUE.ID = @ID;
end
if @ISMGPLEDGE = 1
begin
select
@ISPENDING = REVENUESCHEDULE.ISPENDING,
@LINKEDRECORDID = RMG.MGSOURCEREVENUEID,
@BENEFITSWAIVED = REVENUE.BENEFITSWAIVED,
@MGPLEDGEISINACTIVE = case when [RMG].ISACTIVE = 0 then 1 else 0 end
from dbo.REVENUE
inner join dbo.REVENUEMATCHINGGIFT RMG on REVENUE.ID = RMG.ID
inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
where REVENUE.ID = @ID;
end
if exists (
select REVENUETRIBUTE.ID
from dbo.REVENUETRIBUTE
inner join dbo.REVENUE on REVENUETRIBUTE.REVENUEID = REVENUE.ID
where REVENUE.ID = @ID
)
select @HASTRIBUTES = 1;
if @ISPLEDGE = 1
begin
if (select coalesce(sum(RT.AMOUNT),0) from dbo.REVENUETRIBUTE RT where REVENUEID in (select ID from dbo.REVENUE where ID = @ID)) < @AMOUNT
select @CANAPPLYTRIBUTE = 1;
end
else if @ISPAYMENT = 1
begin
set @PAYMENTINCLUDESGIFT = 1;
if (select coalesce(sum(RT.AMOUNT),0) from dbo.REVENUETRIBUTE RT where REVENUEID = @ID) < @AMOUNT
set @CANAPPLYTRIBUTE = 1;
end
-- determine the receipt status
if @DONOTRECEIPT = 1
set @RECEIPTSTATUSCODE = 1; -- do not receipt
else
begin
declare @RECEIPTID uniqueidentifier;
declare @RECEIPTDATE datetime;
select top 1 @RECEIPTID = RR.ID, @RECEIPTDATE = RECEIPTDATE
from dbo.REVENUERECEIPT RR
where RR.REVENUEID = @REVENUEID
order by RR.RECEIPTPROCESSDATE desc;
if @RECEIPTID is null
set @RECEIPTSTATUSCODE = 3; -- not receipted
else if @RECEIPTDATE is null
set @RECEIPTSTATUSCODE = 2; -- pending
else
set @RECEIPTSTATUSCODE = 0; -- receipted
end
-- if re-receipts turned off
if (coalesce((select top 1 RERECEIPTPAYMENTS from dbo.RECEIPTPREFERENCEINFO), 1)) = 0
set @NEEDSRERECEIPT = null;
select @RECEIPTCOUNT = count(ID) from dbo.REVENUERECEIPT where REVENUEID = @REVENUEID;
if @ISPLANNEDGIFT = 1
select @PLANNEDGIFTID = PLANNEDGIFTID from dbo.V_PLANNEDGIFTREVENUE_WITHADDITIONS where REVENUEID = @REVENUEID;
if @ISORDER = 1
select @SALESORDERID = ID from dbo.SALESORDER where REVENUEID = @REVENUEID;
if @ISPAYMENT = 1
if exists(select ID from dbo.REVENUESPLIT where REVENUEID = @ID and APPLICATIONCODE = 10)
begin
set @ISORDERAPPLICATION = 1;
end
if exists(select ID from dbo.REVENUESPLIT where REVENUEID = @ID and APPLICATIONCODE = 11)
begin
set @ISMISCELLANEOUSPAYMENT = 1;
end
return 0;