UFN_ORDER_GETAPPLIEDDISCOUNTS
List the manual discount, promo code discounts, and applied automatic discounts on an order
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SALESORDERID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_ORDER_GETAPPLIEDDISCOUNTS(@SALESORDERID uniqueidentifier)
returns table
as return
--Get all manual discounts and applied discount
select --Get all manual discounts
SOMD.DISCOUNTID as [ID],
DISCOUNT.NAME,
dbo.UFN_DISCOUNT_GENERATEVALUEDESCRIPTION(DISCOUNT.ID) as DESCRIPTION,
SOMD.PROMOTIONALCODE,
case
when [DISCOUNT].[APPLIESTOCODE] = 0 then
null
when [LIMIT].[ID] is not null or [DISCOUNT].[LIMITDISCOUNTSPERORDER] = 1 then
1
else
0
end [LIMITAPPLICATIONTYPECODE],
case
when [LIMIT].[ID] is not null then
[LIMIT].[NUMBEROFDISCOUNTSPERORDER]
when [DISCOUNT].[LIMITDISCOUNTSPERORDER] = 1 then
[DISCOUNT].[NUMBEROFDISCOUNTSPERORDER]
else
null
end [TIMESLIMITED],
[DISCOUNT].[APPLICATIONTYPECODE],
case
when [LIMITDISCOUNTSPERORDER] = 1 then
[DISCOUNT].[NUMBEROFDISCOUNTSPERORDER]
else
-1
end [MAXLIMIT],
[DISCOUNTTYPECODE]
from
dbo.SALESORDERMANUALDISCOUNT SOMD
inner join dbo.DISCOUNT on SOMD.DISCOUNTID = DISCOUNT.ID
left join dbo.[SALESORDERDISCOUNTLIMITOVERRIDE] [LIMIT] on [LIMIT].[DISCOUNTID] = [DISCOUNT].[ID] and [LIMIT].[SALESORDERID] = @SALESORDERID
where
SOMD.SALESORDERID = @SALESORDERID
union all
--Get all automatically applied item-level discounts
select distinct
[DISCOUNT].[ID],
[DISCOUNT].[NAME],
dbo.UFN_DISCOUNT_GENERATEVALUEDESCRIPTION([DISCOUNT].[ID]) as [DESCRIPTION],
null as [PROMOTIONALCODE],
case
when [DISCOUNT].[APPLIESTOCODE] = 0 then
null
when [LIMIT].[ID] is not null or [DISCOUNT].[LIMITDISCOUNTSPERORDER] = 1 then
1
else
0
end [LIMITAPPLICATIONTYPECODE],
case
when [LIMIT].[ID] is not null then
[LIMIT].[NUMBEROFDISCOUNTSPERORDER]
when [DISCOUNT].[LIMITDISCOUNTSPERORDER] = 1 then
[DISCOUNT].[NUMBEROFDISCOUNTSPERORDER]
else
null
end [TIMESLIMITED],
[DISCOUNT].[APPLICATIONTYPECODE],
case
when [LIMITDISCOUNTSPERORDER] = 1 then
[DISCOUNT].[NUMBEROFDISCOUNTSPERORDER]
else
-1
end [MAXLIMIT],
[DISCOUNTTYPECODE]
from dbo.[SALESORDERITEMITEMDISCOUNT]
inner join dbo.[SALESORDERITEM] on
[SALESORDERITEMITEMDISCOUNT].[SALESORDERITEMID] = [SALESORDERITEM].[ID]
inner join dbo.[DISCOUNT] on
[SALESORDERITEMITEMDISCOUNT].[DISCOUNTID] = [DISCOUNT].[ID]
left join dbo.[SALESORDERDISCOUNTLIMITOVERRIDE] [LIMIT] on
[LIMIT].[DISCOUNTID] = [SALESORDERITEMITEMDISCOUNT].[DISCOUNTID] and
[LIMIT].[SALESORDERID] = @SALESORDERID
where [SALESORDERITEM].[SALESORDERID] = @SALESORDERID
and [DISCOUNT].[ID] not in (select [DISCOUNTID] from [SALESORDERMANUALDISCOUNT] where [SALESORDERID] = @SALESORDERID)
union all
--Get all automatically applied order-level discounts
select
[DISCOUNT].[ID],
[DISCOUNT].[NAME],
dbo.UFN_DISCOUNT_GENERATEVALUEDESCRIPTION([DISCOUNT].[ID]) as [DESCRIPTION],
null as [PROMOTIONALCODE],
case
when [DISCOUNT].[APPLIESTOCODE] = 0 then
null
when [LIMIT].[ID] is not null or [DISCOUNT].[LIMITDISCOUNTSPERORDER] = 1 then
1
else
0
end [LIMITAPPLICATIONTYPECODE],
case
when [LIMIT].[ID] is not null then
[LIMIT].[NUMBEROFDISCOUNTSPERORDER]
when [DISCOUNT].[LIMITDISCOUNTSPERORDER] = 1 then
[DISCOUNT].[NUMBEROFDISCOUNTSPERORDER]
else
null
end [TIMESLIMITED],
[DISCOUNT].[APPLICATIONTYPECODE],
case
when [LIMITDISCOUNTSPERORDER] = 1 then
[DISCOUNT].[NUMBEROFDISCOUNTSPERORDER]
else
-1
end [MAXLIMIT],
[DISCOUNTTYPECODE]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMORDERDISCOUNT] on
[SALESORDERITEMORDERDISCOUNT].[ID] = [SALESORDERITEM].[ID]
inner join dbo.[DISCOUNT] on
[SALESORDERITEMORDERDISCOUNT].[DISCOUNTID] = [DISCOUNT].[ID]
left join dbo.[SALESORDERDISCOUNTLIMITOVERRIDE] [LIMIT] on
[LIMIT].[DISCOUNTID] = [DISCOUNT].[ID] and
[LIMIT].[SALESORDERID] = @SALESORDERID
where [SALESORDERITEM].[SALESORDERID] = @SALESORDERID
and [DISCOUNT].[ID] not in (select [DISCOUNTID] from dbo.[SALESORDERMANUALDISCOUNT] where [SALESORDERID] = @SALESORDERID)
-- Get membership promos
union all
select
MEMBERSHIPPROMO.[ID],
MEMBERSHIPPROMO.[NAME],
MEMBERSHIPPROMO.FORMATTEDVALUE as [DESCRIPTION],
SALESORDERMEMBERSHIPPROMO.[PROMOTIONALCODE],
null as [LIMITAPPLICATIONTYPECODE],
null as [TIMESLIMITED],
MEMBERSHIPPROMO.[APPLICATIONTYPECODE] + 1 as APPLICATIONTYPECODE,
-1 as [MAXLIMIT],
MEMBERSHIPPROMO.PROMOTIONTYPECODE + 10 as [DISCOUNTTYPECODE]
from dbo.SALESORDERMEMBERSHIPPROMO
inner join dbo.MEMBERSHIPPROMO on SALESORDERMEMBERSHIPPROMO.MEMBERSHIPPROMOID = MEMBERSHIPPROMO.ID
where
SALESORDERMEMBERSHIPPROMO.SALESORDERID = @SALESORDERID
-- Get adjustable discount
union all
select
SALESORDERADJUSTABLEDISCOUNT.[ID],
SALESORDERITEMORDERDISCOUNT.[DISCOUNTNAME] [NAME],
SALESORDERITEMORDERDISCOUNT.[DISCOUNTNAME] as [DESCRIPTION],
null [PROMOTIONALCODE],
null as [LIMITAPPLICATIONTYPECODE],
null as [TIMESLIMITED],
1 as APPLICATIONTYPECODE,
-1 as [MAXLIMIT],
0 as [DISCOUNTTYPECODE]
from dbo.SALESORDERITEM
inner join dbo.SALESORDERADJUSTABLEDISCOUNT on SALESORDERITEM.SALESORDERID = SALESORDERADJUSTABLEDISCOUNT.SALESORDERID
inner join dbo.SALESORDERITEMORDERDISCOUNT on SALESORDERITEM.ID = SALESORDERITEMORDERDISCOUNT.ID
where
SALESORDERITEM.SALESORDERID = @SALESORDERID and
SALESORDERITEMORDERDISCOUNT.DISCOUNTID is null
-- Get applied ticket promos
union all
select
SALESORDERITEMMEMBERSHIPITEMPROMOTION.[ID],
SALESORDERITEMMEMBERSHIPITEMPROMOTION.[PROMOTIONNAME] as [NAME],
[SALESORDERITEM].[DESCRIPTION] as [DESCRIPTION],
null as [PROMOTIONALCODE],
null as [LIMITAPPLICATIONTYPECODE],
null as [TIMESLIMITED],
1 as APPLICATIONTYPECODE,
-1 as [MAXLIMIT],
14 as [DISCOUNTTYPECODE]
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTION on SALESORDERITEM.ID = SALESORDERITEMMEMBERSHIPITEMPROMOTION.SALESORDERITEMID
where
SALESORDERITEM.SALESORDERID = @SALESORDERID and
SALESORDERITEMMEMBERSHIPITEMPROMOTION.MEMBERSHIPPROMOID is null