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