USP_DISCOUNTRESULTS_ADDTOCACHE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SCENARIOHASH | varbinary | IN | |
@ITEMDISCOUNTS | UDT_APPLYDISCOUNTS_SALESORDERAVAILABLEDISCOUNT | IN | |
@SALESORDERID | uniqueidentifier | IN | |
@ELAPSEDTIME | time | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_DISCOUNTRESULTS_ADDTOCACHE
(
@SCENARIOHASH varbinary(20), -- the precomputed hash of this discount/order scenario (not computed here because it's expensive and we know it already exists in the caller)
@ITEMDISCOUNTS UDT_APPLYDISCOUNTS_SALESORDERAVAILABLEDISCOUNT readonly, -- the discounts we calculated results for
@SALESORDERID uniqueidentifier, -- the sales order we computed results for
@ELAPSEDTIME time(4), -- How long it took to calculate the discounts
@CHANGEAGENTID uniqueidentifier
)
as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATETIME datetime = getdate();
insert into dbo.CACHEDDISCOUNTRESULTAPPLICATION
(ID, INPUTHASH, DISCOUNTID, PROGRAMID, EVENTID, PRICETYPECODEID, MERCHANDISEPRODUCTINSTANCEID, AMOUNT, NUMBEROFDISCOUNTEDITEMS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
@SCENARIOHASH,
ITEMDISCOUNT.DISCOUNTID,
TICKETITEM.PROGRAMID,
TICKETITEM.EVENTID,
TICKETITEM.PRICETYPECODEID,
MERCHITEM.MERCHANDISEPRODUCTINSTANCEID,
ITEMDISCOUNT.AMOUNT,
ITEMDISCOUNT.NUMBEROFDISCOUNTEDITEMS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATETIME,
@CURRENTDATETIME
from dbo.SALESORDERITEMITEMDISCOUNT ITEMDISCOUNT
inner join dbo.SALESORDERITEM on SALESORDERITEM.ID = ITEMDISCOUNT.SALESORDERITEMID
left join dbo.SALESORDERITEMTICKET TICKETITEM on SALESORDERITEM.ID = TICKETITEM.ID
left join dbo.SALESORDERITEMMERCHANDISE MERCHITEM on SALESORDERITEM.ID = MERCHITEM.ID
where SALESORDERITEM.SALESORDERID = @SALESORDERID;
insert into dbo.CACHEDDISCOUNTRESULT
(ID, INPUTHASH, LASTUSED, TIMESUSED, CALCULATIONTIME, CACHEUSAGETIME)
values
(newid(), @SCENARIOHASH, @CURRENTDATETIME, 1, @ELAPSEDTIME, null);
end