USP_SALESORDER_ADDDISCOUNTCREDITS
Adds discounts as credits to a sales order.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SALESORDERID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN | |
@REVENUEDATE | datetime | IN | |
@ADJUSTMENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_SALESORDER_ADDDISCOUNTCREDITS
(
@SALESORDERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime,
@REVENUEDATE datetime = null,
@ADJUSTMENTID uniqueidentifier = null -- Used when editing posted orders to group discount GL appropriately.
)
as
begin
set nocount on;
if @CURRENTDATE is null
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @PDACCOUNTSYSTEMID uniqueidentifier;
declare @ALLOWGLDISTRIBUTIONS bit;
select
@PDACCOUNTSYSTEMID = ID,
@ALLOWGLDISTRIBUTIONS = ALLOWGLDISTRIBUTIONS
from
dbo.UFN_PDACCOUNTSYSTEM_DEFAULTORSYSTEM();
declare @INS table(
ID uniqueidentifier
,CREDITID uniqueidentifier
,FINANCIALTRANSACTIONID uniqueidentifier
,AMOUNT money
,TYPECODE tinyint
,DISCOUNTID uniqueidentifier
,MEMBERSHIPPROMOID uniqueidentifier
,SALESORDERITEMMEMBERSHIPITEMPROMOTIONID uniqueidentifier
,REVENUESPLITID uniqueidentifier
,POSTDATE date
,POSTSTATUSCODE tinyint
);
-- Add another typecode for merchandise
declare @DISCOUNTS table
(ID uniqueidentifier,
DISCOUNTID uniqueidentifier,
SALESORDERID uniqueidentifier,
AMOUNT money,
TYPECODE tinyint);
insert into @DISCOUNTS
select newid(), DISCOUNT.DISCOUNTID, @SALESORDERID, sum(DISCOUNT.AMOUNT), 0
from dbo.SALESORDERITEMITEMDISCOUNT as DISCOUNT with (nolock)
inner join dbo.SALESORDERITEM with (nolock) on DISCOUNT.SALESORDERITEMID = SALESORDERITEM.ID
where SALESORDERITEM.SALESORDERID = @SALESORDERID
group by DISCOUNT.DISCOUNTID
union all
select newid(), DISCOUNT.DISCOUNTID, @SALESORDERID, SALESORDERITEM.TOTAL, 1
from dbo.SALESORDERITEM with (nolock)
inner join dbo.SALESORDERITEMORDERDISCOUNT as DISCOUNT with (nolock) on SALESORDERITEM.ID = DISCOUNT.ID
where SALESORDERITEM.SALESORDERID = @SALESORDERID
--applied ticket to membership
union all
select newid(), SOIMP.ID, @SALESORDERID, SOIMP.AMOUNT, 3
from dbo.SALESORDERITEM as SOI with (nolock)
inner join dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTION as SOIMP with (nolock) on SOI.ID = SOIMP.SALESORDERITEMID
where
SOI.SALESORDERID = @SALESORDERID and
SOI.TOTAL > 0 and
SOIMP.AMOUNT > 0;
if @@rowcount > 0 begin
insert into @INS(
ID
,CREDITID
,FINANCIALTRANSACTIONID
,AMOUNT
,TYPECODE
,DISCOUNTID
,SALESORDERITEMMEMBERSHIPITEMPROMOTIONID
,REVENUESPLITID
,POSTDATE
,POSTSTATUSCODE)
select
NEWID()
,DISCOUNT.ID
,SALESORDER.REVENUEID
,SUM(DISCOUNTITEM.AMOUNT)
,SALESORDERITEM.TYPECODE
,case DISCOUNT.TYPECODE
when 3 then null
else DISCOUNT.DISCOUNTID
end
,case DISCOUNT.TYPECODE
when 3 then DISCOUNT.DISCOUNTID
else null
end
,FINANCIALTRANSACTIONLINEITEM.ID
,cast(isnull(@REVENUEDATE, SALESORDER.TRANSACTIONDATE) as date)
,case when FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2 then 1 else FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE end
from @DISCOUNTS as DISCOUNT
inner join dbo.SALESORDERITEMITEMDISCOUNT as DISCOUNTITEM with (nolock) on DISCOUNT.DISCOUNTID = DISCOUNTITEM.DISCOUNTID
inner join dbo.SALESORDERITEM with (nolock) on DISCOUNTITEM.SALESORDERITEMID = SALESORDERITEM.ID
inner join dbo.SALESORDERITEMTICKET with (nolock) on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDER with (nolock) on SALESORDER.ID = SALESORDERITEM.SALESORDERID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on SALESORDER.REVENUEID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLITORDER on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITORDER.ID
where SALESORDER.ID = @SALESORDERID
and (
SALESORDERITEMTICKET.EVENTID = REVENUESPLITORDER.EVENTID
or (
SALESORDERITEMTICKET.PROGRAMID = REVENUESPLITORDER.PROGRAMID
and REVENUESPLITORDER.EVENTID is null
)
)
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
group by DISCOUNT.ID, FINANCIALTRANSACTIONLINEITEM.ID, SALESORDERITEM.TYPECODE, SALESORDER.REVENUEID, SALESORDER.TRANSACTIONDATE, DISCOUNT.TYPECODE, DISCOUNT.DISCOUNTID, FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE;
--item discounts
insert into @INS(
ID
,CREDITID
,FINANCIALTRANSACTIONID
,AMOUNT
,TYPECODE
,DISCOUNTID
,SALESORDERITEMMEMBERSHIPITEMPROMOTIONID
,REVENUESPLITID
,POSTDATE
,POSTSTATUSCODE)
select
NEWID()
,DISCOUNT.ID
,SALESORDER.REVENUEID
,SUM(DISCOUNTITEM.AMOUNT)
,SALESORDERITEM.TYPECODE
,case DISCOUNT.TYPECODE
when 3 then null
else DISCOUNT.DISCOUNTID
end
,case DISCOUNT.TYPECODE
when 3 then DISCOUNT.DISCOUNTID
else null
end
,FINANCIALTRANSACTIONLINEITEM.ID
,cast(isnull(@REVENUEDATE, SALESORDER.TRANSACTIONDATE) as date)
,case when FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2 then 1 else FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE end
from @DISCOUNTS as DISCOUNT
inner join dbo.SALESORDERITEMITEMDISCOUNT as DISCOUNTITEM with (nolock) on DISCOUNT.DISCOUNTID = DISCOUNTITEM.DISCOUNTID
inner join dbo.SALESORDERITEM with (nolock) on DISCOUNTITEM.SALESORDERITEMID = SALESORDERITEM.ID
inner join dbo.SALESORDERITEMMERCHANDISE with (nolock) on SALESORDERITEM.ID = SALESORDERITEMMERCHANDISE.ID
inner join dbo.SALESORDER with (nolock) on SALESORDER.ID = SALESORDERITEM.SALESORDERID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on SALESORDER.REVENUEID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLITORDER on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITORDER.ID
where SALESORDER.ID = @SALESORDERID
and SALESORDERITEMMERCHANDISE.MERCHANDISEPRODUCTINSTANCEID = REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
group by DISCOUNT.ID, FINANCIALTRANSACTIONLINEITEM.ID, SALESORDERITEM.TYPECODE, SALESORDER.REVENUEID, SALESORDER.TRANSACTIONDATE, DISCOUNT.TYPECODE, DISCOUNT.DISCOUNTID, FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE;
if exists(select temp.ID from @DISCOUNTS temp where temp.TYPECODE = 1) begin
--order discounts
--prorate discount over all ticketed items
insert into @INS(
ID
,CREDITID
,FINANCIALTRANSACTIONID
,AMOUNT
,TYPECODE
,DISCOUNTID
,SALESORDERITEMMEMBERSHIPITEMPROMOTIONID
,REVENUESPLITID
,POSTDATE
,POSTSTATUSCODE)
select
NEWID()
,DISCOUNT.ID
,SALESORDER.REVENUEID
,SALESORDERITEMORDERDISCOUNTDETAIL.AMOUNT
,SALESORDERITEM.TYPECODE
,case DISCOUNT.TYPECODE
when 3 then null
else DISCOUNT.DISCOUNTID
end
,case DISCOUNT.TYPECODE
when 3 then DISCOUNT.DISCOUNTID
else null
end
,FINANCIALTRANSACTIONLINEITEM.ID
,cast(isnull(@REVENUEDATE, SALESORDER.TRANSACTIONDATE) as date)
,case when FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2 then 1 else FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE end
from
dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.SALESORDER on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = SALESORDER.REVENUEID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUESPLITORDER on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITORDER.ID
inner join dbo.SALESORDERITEM with(nolock) on SALESORDER.ID = SALESORDERITEM.SALESORDERID
inner join dbo.SALESORDERITEMMERCHANDISE with(nolock) on SALESORDERITEM.ID = SALESORDERITEMMERCHANDISE.ID
inner join dbo.SALESORDERITEMORDERDISCOUNTDETAIL with(nolock) on SALESORDERITEM.ID = SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMID
inner join dbo.SALESORDERITEMORDERDISCOUNT with(nolock) on SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMORDERDISCOUNTID = SALESORDERITEMORDERDISCOUNT.ID
inner join @DISCOUNTS DISCOUNT on DISCOUNT.DISCOUNTID = SALESORDERITEMORDERDISCOUNT.DISCOUNTID
where SALESORDER.ID = @SALESORDERID
and REVENUESPLIT_EXT.TYPECODE = 16
and SALESORDERITEMMERCHANDISE.MERCHANDISEPRODUCTINSTANCEID = REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
union all
select
NEWID()
,DISCOUNT.ID
,SALESORDER.REVENUEID
,SALESORDERITEMORDERDISCOUNTDETAIL.AMOUNT
,SALESORDERITEM.TYPECODE
,case DISCOUNT.TYPECODE
when 3 then null
else DISCOUNT.DISCOUNTID
end
,case DISCOUNT.TYPECODE
when 3 then DISCOUNT.DISCOUNTID
else null
end
,FINANCIALTRANSACTIONLINEITEM.ID
,cast(isnull(@REVENUEDATE, SALESORDER.TRANSACTIONDATE) as date)
,case when FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2 then 1 else FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE end
from
dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.SALESORDER on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = SALESORDER.REVENUEID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUESPLITORDER on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITORDER.ID
inner join dbo.SALESORDERITEM with(nolock) on SALESORDER.ID = SALESORDERITEM.SALESORDERID
inner join dbo.SALESORDERITEMTICKET with(nolock) on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDERITEMORDERDISCOUNTDETAIL with(nolock) on SALESORDERITEM.ID = SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMID
inner join dbo.SALESORDERITEMORDERDISCOUNT with(nolock) on SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMORDERDISCOUNTID = SALESORDERITEMORDERDISCOUNT.ID
inner join @DISCOUNTS DISCOUNT on DISCOUNT.DISCOUNTID = SALESORDERITEMORDERDISCOUNT.DISCOUNTID
where SALESORDER.ID = @SALESORDERID
and REVENUESPLIT_EXT.TYPECODE = 5
and SALESORDERITEMTICKET.PROGRAMID = REVENUESPLITORDER.PROGRAMID
and coalesce(SALESORDERITEMTICKET.EVENTID, SALESORDERITEMTICKET.PROGRAMID) = coalesce(REVENUESPLITORDER.EVENTID, REVENUESPLITORDER.PROGRAMID)
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
union all
select
NEWID()
,DISCOUNT.ID
,SALESORDER.REVENUEID
,SALESORDERITEMORDERDISCOUNTDETAIL.AMOUNT
,SALESORDERITEM.TYPECODE
,case DISCOUNT.TYPECODE
when 3 then null
else DISCOUNT.DISCOUNTID
end
,case DISCOUNT.TYPECODE
when 3 then DISCOUNT.DISCOUNTID
else null
end
,FINANCIALTRANSACTIONLINEITEM.ID
,cast(isnull(@REVENUEDATE, SALESORDER.TRANSACTIONDATE) as date)
,case when FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2 then 1 else FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE end
from @DISCOUNTS DISCOUNT
inner join dbo.SALESORDER with(nolock) on DISCOUNT.SALESORDERID = SALESORDER.ID
inner join dbo.SALESORDERITEM with(nolock) on DISCOUNT.SALESORDERID = SALESORDERITEM.SALESORDERID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on SALESORDER.REVENUEID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUESPLITORDER on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITORDER.ID
inner join dbo.SALESORDERITEMMERCHANDISE with(nolock) on SALESORDERITEM.ID = SALESORDERITEMMERCHANDISE.ID
inner join dbo.SALESORDERITEMORDERDISCOUNTDETAIL with(nolock) on SALESORDERITEM.ID = SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMID
inner join dbo.SALESORDERITEMORDERDISCOUNT with(nolock) on SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMORDERDISCOUNTID = SALESORDERITEMORDERDISCOUNT.ID
where DISCOUNT.DISCOUNTID is null
and DISCOUNT.TYPECODE = 1
and SALESORDER.ID = @SALESORDERID
and REVENUESPLIT_EXT.TYPECODE = 16
and SALESORDERITEMMERCHANDISE.MERCHANDISEPRODUCTINSTANCEID = REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID
and SALESORDERITEMORDERDISCOUNT.DISCOUNTID is null
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
union all
select
NEWID()
,DISCOUNT.ID
,SALESORDER.REVENUEID
,SALESORDERITEMORDERDISCOUNTDETAIL.AMOUNT
,SALESORDERITEM.TYPECODE
,case DISCOUNT.TYPECODE
when 3 then null
else DISCOUNT.DISCOUNTID
end
,case DISCOUNT.TYPECODE
when 3 then DISCOUNT.DISCOUNTID
else null
end
,FINANCIALTRANSACTIONLINEITEM.ID
,cast(isnull(@REVENUEDATE, SALESORDER.TRANSACTIONDATE) as date)
,case when FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2 then 1 else FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE end
from @DISCOUNTS DISCOUNT
inner join dbo.SALESORDER with(nolock) on DISCOUNT.SALESORDERID = SALESORDER.ID
inner join dbo.SALESORDERITEM with(nolock) on DISCOUNT.SALESORDERID = SALESORDERITEM.SALESORDERID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on SALESORDER.REVENUEID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUESPLITORDER on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITORDER.ID
inner join dbo.SALESORDERITEMTICKET with(nolock) on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDERITEMORDERDISCOUNTDETAIL with(nolock) on SALESORDERITEM.ID = SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMID
inner join dbo.SALESORDERITEMORDERDISCOUNT with(nolock) on SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMORDERDISCOUNTID = SALESORDERITEMORDERDISCOUNT.ID
where DISCOUNT.DISCOUNTID is null
and DISCOUNT.TYPECODE = 1
and SALESORDER.ID = @SALESORDERID
and REVENUESPLIT_EXT.TYPECODE = 5
and SALESORDERITEMORDERDISCOUNT.DISCOUNTID is null
and SALESORDERITEMTICKET.PROGRAMID = REVENUESPLITORDER.PROGRAMID
and coalesce(SALESORDERITEMTICKET.EVENTID, SALESORDERITEMTICKET.PROGRAMID) = coalesce(REVENUESPLITORDER.EVENTID, REVENUESPLITORDER.PROGRAMID)
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
end
--applied tickets to membership discounts
insert into @INS(
ID
,CREDITID
,FINANCIALTRANSACTIONID
,AMOUNT
,TYPECODE
,DISCOUNTID
,SALESORDERITEMMEMBERSHIPITEMPROMOTIONID
,REVENUESPLITID
,POSTDATE
,POSTSTATUSCODE)
select
NEWID()
,DISCOUNT.ID
,SALESORDER.REVENUEID
,SUM(DISCOUNTITEM.AMOUNT)
,SALESORDERITEM.TYPECODE
,case DISCOUNT.TYPECODE
when 3 then null
else DISCOUNT.DISCOUNTID
end
,case DISCOUNT.TYPECODE
when 3 then DISCOUNT.DISCOUNTID
else null
end
,MEMBERSHIPTRANSACTION.REVENUESPLITID
,cast(isnull(@REVENUEDATE, SALESORDER.TRANSACTIONDATE) as date)
,case when @ALLOWGLDISTRIBUTIONS = 1 then 1 else 3 end
from @DISCOUNTS as DISCOUNT
inner join dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTION as DISCOUNTITEM with (nolock) on DISCOUNT.DISCOUNTID = DISCOUNTITEM.ID
inner join dbo.SALESORDERITEM with (nolock) on DISCOUNTITEM.SALESORDERITEMID = SALESORDERITEM.ID
inner join dbo.SALESORDERITEMMEMBERSHIP with (nolock) on SALESORDERITEM.ID = SALESORDERITEMMEMBERSHIP.ID
inner join dbo.SALESORDER with (nolock) on SALESORDER.ID = SALESORDERITEM.SALESORDERID
inner join dbo.MEMBERSHIPTRANSACTION with (nolock) on SALESORDERITEMMEMBERSHIP.MEMBERSHIPTRANSACTIONID = MEMBERSHIPTRANSACTION.ID
where
SALESORDER.ID = @SALESORDERID
and DISCOUNT.TYPECODE = 3
group by DISCOUNT.ID, MEMBERSHIPTRANSACTION.REVENUESPLITID, SALESORDERITEM.TYPECODE, SALESORDER.REVENUEID, SALESORDER.TRANSACTIONDATE, DISCOUNT.TYPECODE, DISCOUNT.DISCOUNTID;
insert into dbo.FINANCIALTRANSACTIONLINEITEM (
ID
,FINANCIALTRANSACTIONID
,UNITVALUE
,QUANTITY
,TRANSACTIONAMOUNT
,BASEAMOUNT
,ORGAMOUNT
,SOURCELINEITEMID
,POSTDATE
,POSTSTATUSCODE
,TYPECODE
,FINANCIALTRANSACTIONLINEITEMADJUSTMENTID
,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
I.ID
,I.FINANCIALTRANSACTIONID
,I.AMOUNT
,1
,I.AMOUNT
,I.AMOUNT
,I.AMOUNT
,I.REVENUESPLITID
,I.POSTDATE
,I.POSTSTATUSCODE
,5
,@ADJUSTMENTID
,@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from @INS I;
insert into dbo.CREDITITEM_EXT(
ID
,CREDITID
,DISCOUNTID
,MEMBERSHIPPROMOID
,SALESORDERITEMMEMBERSHIPITEMPROMOTIONID
,TYPECODE
,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
I.ID
,I.CREDITID
,I.DISCOUNTID
,null -- MEMBERSHIPPROMOID is not used; access the promo through SALESORDERITEMMEMBERSHIPITEMPROMOTION instead.
,I.SALESORDERITEMMEMBERSHIPITEMPROMOTIONID
,I.TYPECODE
,@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from @INS I;
end
if @ALLOWGLDISTRIBUTIONS=1 begin
declare @CREDITID uniqueidentifier;
declare @REVENUEID uniqueidentifier;
select @REVENUEID= SO.REVENUEID
from dbo.SALESORDER SO
where SO.ID = @SALESORDERID;
declare CREDITCURSOR cursor local fast_forward
for select distinct EXT.CREDITID
from dbo.CREDITITEM_EXT EXT
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = EXT.ID
where LI.FINANCIALTRANSACTIONID = @REVENUEID
and LI.TYPECODE = 5
and LI.DELETEDON is null;
open CREDITCURSOR
fetch next from CREDITCURSOR INTO @CREDITID
while @@FETCH_STATUS = 0
begin
exec dbo.USP_SALESORDER_CREATEDISCOUNTGLDISTRIBUTION @CREDITID, @CHANGEAGENTID, @CURRENTDATE
fetch next from CREDITCURSOR INTO @CREDITID
end
close CREDITCURSOR
deallocate CREDITCURSOR
end
end