UFN_REFUND_GETCREDITACCOUNT
Returns the credit account for a refund GL distribution.
Return
Return Type |
---|
nvarchar(100) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCEACCOUNTID | uniqueidentifier | IN | |
@CREDITPAYMENTID | uniqueidentifier | IN | |
@SOURCESPLITID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_REFUND_GETCREDITACCOUNT(
@SOURCEACCOUNTID uniqueidentifier,
@CREDITPAYMENTID uniqueidentifier,
@SOURCESPLITID uniqueidentifier
)
returns nvarchar(100)
as begin
declare @PDACCOUNTSEGMENTVALUEID uniqueidentifier;
declare @REFUNDPAYMETHOD tinyint;
declare @REVENUETYPE tinyint;
declare @ACCOUNTCODE nvarchar(30) = '';
declare @ACCOUNT nvarchar(100) = '';
declare @ACCOUNTID uniqueidentifier;
declare @APPLICATIONCODE tinyint;
declare @SALESORDERID uniqueidentifier;
declare @CREDITCARDSUBTYPEID uniqueidentifier;
declare @OTHERSUBTYPEID uniqueidentifier;
select
@REFUNDPAYMETHOD = CREDITPAYMENT.PAYMENTMETHODCODE,
@SALESORDERID = isnull(SALESORDER.ID, EXT.SALESORDERID),
@CREDITCARDSUBTYPEID = case
when CREDITPAYMENT.PAYMENTMETHODCODE = 2
then CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID
else
null
end,
@OTHERSUBTYPEID = CREDITPAYMENT.OTHERPAYMENTMETHODCODEID
from
dbo.CREDITPAYMENT
inner join
dbo.FINANCIALTRANSACTION as FT on FT.ID = CREDITPAYMENT.CREDITID
inner join
dbo.CREDIT_EXT as EXT on EXT.ID = FT.ID
left outer join
dbo.SALESORDER on SALESORDER.REVENUEID = FT.PARENTID
left join
dbo.REVENUEPAYMENTMETHOD on CREDITPAYMENT.REVENUEID = REVENUEPAYMENTMETHOD.REVENUEID
left join
dbo.CREDITCARDPAYMENTMETHODDETAIL on CREDITCARDPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID
where
CREDITPAYMENT.ID = @CREDITPAYMENTID;
if @SALESORDERID is null and @SOURCEACCOUNTID is null begin
select @SALESORDERID = SPLITMAPJOURNALENTRY.ID
from dbo.FINANCIALTRANSACTIONLINEITEM as SPLITMAPLINEITEM
inner join dbo.JOURNALENTRY as SPLITMAPJOURNALENTRY on SPLITMAPJOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = SPLITMAPLINEITEM.ID
inner join dbo.PDACCOUNTCODEMAPPING on PDACCOUNTCODEMAPPING.CREDITGLACCOUNTID = SPLITMAPJOURNALENTRY.GLACCOUNTID
inner join dbo.CREDITPAYMENT on CREDITPAYMENT.REVENUEID = SPLITMAPLINEITEM.FINANCIALTRANSACTIONID or CREDITPAYMENT.REVENUESPLITID = SPLITMAPLINEITEM.ID
where CREDITPAYMENT.ID = @CREDITPAYMENTID and OFFICEID = 2
end
select
@REVENUETYPE = TYPECODE,
@APPLICATIONCODE = APPLICATIONCODE
from
dbo.REVENUESPLIT_EXT
where
ID = @SOURCESPLITID;
declare @OFFICEID tinyint = 2; --ticketing
if @SALESORDERID is null
set @OFFICEID = 3 --development
select
@ACCOUNTID = DEBITGLACCOUNTID,
@PDACCOUNTSEGMENTVALUEID = DEBITPDACCOUNTSEGMENTVALUEID
from
dbo.PDACCOUNTCODEMAPPING CM
left join
dbo.PDACCOUNTCODEMAPPINGSUBTYPE CMST on CMST.PDACCOUNTCODEMAPPINGID = CM.ID
where
(
@CREDITCARDSUBTYPEID is null
or CMST.ID is null
or CMST.SUBTYPEID = @CREDITCARDSUBTYPEID
or (
CMST.ADDITIONALSUBTYPE = 2
and CMST.SUBTYPEID = '99999999-9999-9999-9999-999999999999' -- "All subtypes" mapping option for credit cards
)
)
and (
@OTHERSUBTYPEID is null
or CMST.ID is null
or CMST.SUBTYPEID = @OTHERSUBTYPEID
or (
CMST.ADDITIONALSUBTYPE = 4
and CMST.SUBTYPEID = '99999999-9999-9999-9999-999999999999' -- "All subtypes" mapping option for Other payment methods
)
)
and OFFICEID = @OFFICEID
and PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'
and (
PAYMENTMETHOD &
case @REFUNDPAYMETHOD
when 0 then 1 --Cash
when 1 then 2 --Check
when 2 then 4 --Credit Card
when 10 then 16 --Other
end
) > 0
and (
(
@OFFICEID = 2 --ticketing
and (
REVENUETYPE &
case @REVENUETYPE
when 0 then 64 -- donation
when 2 then 128 -- membership
when 1 then 256 -- event registration
when 5 then 3 --Admission
when 6 then 4 --Fee
when 7 then 8 --Taxes
when 10 then 16 -- supply resources
when 11 then 32 --staff resources
when 13 then 512 -- Security deposit
when 16 then 2048 -- Merchandise
when 18 then 4096 --membership add-on
when 19 then 8192 -- group sales liability
else 1
end
) > 0
)
or (
@OFFICEID = 3 --development
and (
APPLICATIONTYPE &
case @APPLICATIONCODE
when 1 then 1 -- event registration
when 5 then 64 --Membership
when 18 then 262144 --membership add-on
else 1
end
) > 0
)
)
option (recompile);
if @ACCOUNTID is null begin
if @PDACCOUNTSEGMENTVALUEID is not null begin
select @ACCOUNTCODE = SHORTDESCRIPTION from PDACCOUNTSEGMENTVALUE where ID = @PDACCOUNTSEGMENTVALUEID and PDACCOUNTSTRUCTUREID = '90C72BDA-7994-401B-8A9F-7B36FA65D9FC';
select @ACCOUNT +=
case
when VALUE.PDACCOUNTSTRUCTUREID = '90C72BDA-7994-401B-8A9F-7B36FA65D9FC' then
@ACCOUNTCODE
else
VALUE.SHORTDESCRIPTION
end + substring(STRUCT.SEPARATOR, 0, 2)
from dbo.PDACCOUNTSEGMENT SEG
inner join dbo.PDACCOUNTSTRUCTURE STRUCT on SEG.PDACCOUNTSTRUCTUREID = STRUCT.ID
inner join dbo.PDACCOUNTSEGMENTVALUE VALUE on SEG.PDACCOUNTSEGMENTVALUEID = VALUE.ID
where SEG.GLACCOUNTID = @SOURCEACCOUNTID and STRUCT.PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'
order by STRUCT.SEQUENCE asc;
set @ACCOUNT = substring(@ACCOUNT, 0, len(@ACCOUNT));
end
end
else begin
select @ACCOUNT = ACCOUNTNUMBER
from dbo.GLACCOUNT
where ID = @ACCOUNTID;
end
return @ACCOUNT;
end