USP_PLEDGE_UPDATEPAYMENT
Adds a payment to a pledge.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@APPLIEDAMOUNT | money | IN | |
@CHANGEDATE | datetime | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@PREVIOUSDATE | datetime | IN | |
@UPDATERECOGNITIONOPTION | tinyint | IN | |
@BASEAPPLIEDAMOUNT | money | IN | |
@ORGANIZATIONAPPLIEDAMOUNT | money | IN | |
@APPLICATIONTYPE | tinyint | IN | |
@APPLICATIONID | uniqueidentifier | IN | |
@UPDATESOLICITORSOPTION | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_PLEDGE_UPDATEPAYMENT
(
@ID uniqueidentifier,
@APPLIEDAMOUNT money,
@CHANGEDATE datetime = null,
@CHANGEAGENTID uniqueidentifier = null,
@PREVIOUSDATE datetime = null,
@UPDATERECOGNITIONOPTION tinyint = null,
@BASEAPPLIEDAMOUNT money = null,
@ORGANIZATIONAPPLIEDAMOUNT money = null,
@APPLICATIONTYPE tinyint = null,
@APPLICATIONID uniqueidentifier = null,
@UPDATESOLICITORSOPTION tinyint = null
)
as
set nocount on
declare @ORIGINALAMOUNT money;
declare @AMOUNTLEFT money;
declare @MAXAMOUNT money;
declare @COUNT integer;
declare @INSTALLMENTID uniqueidentifier;
declare @DESIGNATIONID uniqueidentifier;
declare @INSTALLMENTAMOUNT money;
declare @ORIGINALREVENUESPLITAMOUNT money;
declare @PAYAMOUNT money;
declare @BALANCE money;
declare @SOURCEREVENUESPLITID uniqueidentifier;
declare @INSTALLMENTSPLITID uniqueidentifier;
declare @INSTALLMENTPAYMENTID uniqueidentifier;
declare @PLEDGETYPECODE tinyint;
declare @PLEDGEID uniqueidentifier;
declare @APPLICATIONCODE tinyint;
--Business units - AdiSa 6/14/10 - Store all existing splits business units in a table.
declare @BUSINESSUNITS table (DESIGNATIONID uniqueidentifier, OVERRIDEBUSINESSUNITS bit, REASON uniqueidentifier, BUSINESSUNITCODEID uniqueidentifier, RATIO float)
insert into @BUSINESSUNITS
select
REVENUESPLIT_EXT.DESIGNATIONID,
REVENUESPLIT_EXT.OVERRIDEBUSINESSUNITS,
REVENUESPLIT_EXT.REVENUESPLITBUSINESSUNITOVERRIDECODEID as REASON,
REVENUESPLITBUSINESSUNIT.BUSINESSUNITCODEID,
REVENUESPLITBUSINESSUNIT.AMOUNT/REVENUESPLIT.BASEAMOUNT as RATIO
from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
inner join dbo.REVENUESPLITBUSINESSUNIT on REVENUESPLITBUSINESSUNIT.REVENUESPLITID = REVENUESPLIT.ID
where REVENUESPLIT.ID = @ID and REVENUESPLIT_EXT.OVERRIDEBUSINESSUNITS = 1
declare @PREVIOUSAPPLICATIONEXCHANGERATEID uniqueidentifier;
declare @APPLICATIONCURRENCYID uniqueidentifier;
declare @APPLICATIONEXCHANGERATEID uniqueidentifier;
declare @APPLIEDAMOUNTCONVERTED money;
declare @PAYMENTTRANSACTIONCURRENCYID uniqueidentifier;
declare @PAYMENTBASECURRENCYID uniqueidentifier;
declare @PAYMENTBASEEXCHANGERATEID uniqueidentifier;
declare @PAYMENTORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @REVENUEDATE datetime;
declare @REVENUEID uniqueidentifier;
declare @OVERPAYMENTAPPLICATIONTYPECODE tinyint = null;
select
@PREVIOUSAPPLICATIONEXCHANGERATEID = INSTALLMENTSPLITPAYMENT.APPLICATIONEXCHANGERATEID,
@APPLICATIONCURRENCYID = INSTALLMENTSPLITPAYMENT.APPLICATIONCURRENCYID,
@OVERPAYMENTAPPLICATIONTYPECODE = INSTALLMENTSPLITPAYMENT.OVERPAYMENTAPPLICATIONTYPECODE
from
dbo.INSTALLMENTSPLITPAYMENT
where
INSTALLMENTSPLITPAYMENT.PAYMENTID = @ID;
-- get currency values from the payment
select
@REVENUEDATE = cast(REVENUE.DATE as datetime),
@PAYMENTBASECURRENCYID = CS.BASECURRENCYID,
@PAYMENTTRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID,
@PAYMENTBASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID,
@PAYMENTORGANIZATIONEXCHANGERATEID = REVENUE.ORGEXCHANGERATEID,
@DESIGNATIONID = REVENUESPLIT_EXT.DESIGNATIONID,
@REVENUEID = REVENUE.ID
from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
inner join dbo.PDACCOUNTSYSTEM PD on PD.ID = REVENUE.PDACCOUNTSYSTEMID
inner join dbo.CURRENCYSET CS on CS.ID = PD.CURRENCYSETID
where REVENUESPLIT.ID = @ID;
exec dbo.USP_REVENUE_GETUPDATEDAPPLICATIONEXCHANGERATE
@PREVIOUSAPPLICATIONEXCHANGERATEID = @PREVIOUSAPPLICATIONEXCHANGERATEID,
@PREVIOUSDATE = @PREVIOUSDATE,
@APPLIEDAMOUNT = @APPLIEDAMOUNT,
@DATE = @REVENUEDATE,
@TRANSACTIONCURRENCYID = @PAYMENTTRANSACTIONCURRENCYID,
@BASECURRENCYID = @PAYMENTBASECURRENCYID,
@BASEEXCHANGERATEID = @PAYMENTBASEEXCHANGERATEID,
@APPLICATIONCURRENCYID = @APPLICATIONCURRENCYID,
@APPLICATIONEXCHANGERATEID = @APPLICATIONEXCHANGERATEID output,
@APPLIEDAMOUNTCONVERTED = @APPLIEDAMOUNTCONVERTED output;
-- Convert the applied amount into base and organization amounts if the caller does not pass them in
if @BASEAPPLIEDAMOUNT is null or @ORGANIZATIONAPPLIEDAMOUNT is null
exec dbo.USP_CURRENCY_GETCURRENCYVALUES
@APPLIEDAMOUNT,
@REVENUEDATE,
@PAYMENTBASECURRENCYID,
@PAYMENTBASEEXCHANGERATEID output,
@PAYMENTTRANSACTIONCURRENCYID output,
@BASEAPPLIEDAMOUNT output,
null,
@ORGANIZATIONAPPLIEDAMOUNT output,
@PAYMENTORGANIZATIONEXCHANGERATEID output,
0;
set @ORIGINALAMOUNT = coalesce(
(
select
sum(INSTALLMENTSPLITPAYMENT.AMOUNT)
from
dbo.INSTALLMENTSPLITPAYMENT
where
INSTALLMENTSPLITPAYMENT.PAYMENTID = @ID
), 0);
select @ORIGINALREVENUESPLITAMOUNT = BASEAMOUNT from dbo.FINANCIALTRANSACTIONLINEITEM where ID = @ID;
if @OVERPAYMENTAPPLICATIONTYPECODE is null
set @OVERPAYMENTAPPLICATIONTYPECODE = 255;
if not @OVERPAYMENTAPPLICATIONTYPECODE in (0,1,255)
set @OVERPAYMENTAPPLICATIONTYPECODE = 1;
if @OVERPAYMENTAPPLICATIONTYPECODE = 0
begin
declare @MINSEQUENCE int;
declare @MAXSEQUENCE int;
select @MINSEQUENCE = min(INSTALLMENT.SEQUENCE)
,@MAXSEQUENCE = MAX(INSTALLMENT.SEQUENCE)
from dbo.INSTALLMENTSPLITPAYMENT
inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
inner join dbo.INSTALLMENT on INSTALLMENT.ID = INSTALLMENTSPLIT.INSTALLMENTID
where PAYMENTID = @ID;
declare @PAYFIRSTSEQUENCE int;
select @PAYFIRSTSEQUENCE = @MAXSEQUENCE + 1;
declare PAYMENTCURSOR cursor local fast_forward
for
select [INSTALLMENTSPLITPAYMENT].ID
,[INSTALLMENTSPLITPAYMENT].AMOUNT
from dbo.INSTALLMENTSPLITPAYMENT
inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
inner join dbo.INSTALLMENT on INSTALLMENT.ID = INSTALLMENTSPLIT.INSTALLMENTID
where PAYMENTID = @ID
order by case
when INSTALLMENT.SEQUENCE = @MINSEQUENCE
then @PAYFIRSTSEQUENCE
else INSTALLMENT.SEQUENCE
end desc;
end
else
begin
declare PAYMENTCURSOR cursor local fast_forward for
select
[INSTALLMENTSPLITPAYMENT].ID,
[INSTALLMENTSPLITPAYMENT].AMOUNT
from dbo.INSTALLMENTSPLITPAYMENT
inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
inner join dbo.INSTALLMENT on INSTALLMENT.ID = INSTALLMENTSPLIT.INSTALLMENTID
where PAYMENTID = @ID
order by INSTALLMENT.SEQUENCE;
end
/* reduced payment (this is the easy one)*/
if @APPLIEDAMOUNTCONVERTED < @ORIGINALAMOUNT
begin
set @AMOUNTLEFT = @APPLIEDAMOUNTCONVERTED;
set @COUNT = 0;
--Update Changed Revenue Items
open PAYMENTCURSOR;
fetch next from PAYMENTCURSOR into @INSTALLMENTID, @INSTALLMENTAMOUNT;
while @@FETCH_STATUS = 0
begin
-- LeeCh 12/08/09 Bug#52214
-- If @AMOUNTLEFT is less than $0, also need to delete the installment split payment
-- Also, only update dbo.INSTALLMENTSPLITPAYMENT when @AMOUNTLEFT is greater than $0
-- Comment #Bug 70779 fix since it becomes redundant
if @AMOUNTLEFT <= 0 and @COUNT > 0
exec dbo.USP_INSTALLMENTSPLITPAYMENT_DELETEBYID_WITHCHANGEAGENTID @INSTALLMENTID, @CHANGEAGENTID;
if (@AMOUNTLEFT > 0 and @AMOUNTLEFT < @INSTALLMENTAMOUNT) or (@AMOUNTLEFT = 0 and @COUNT = 0)
update dbo.INSTALLMENTSPLITPAYMENT
set AMOUNT = @AMOUNTLEFT,
APPLICATIONEXCHANGERATEID = @APPLICATIONEXCHANGERATEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @INSTALLMENTID;
set @AMOUNTLEFT = @AMOUNTLEFT - @INSTALLMENTAMOUNT;
-- Bug 70779
--if @AMOUNTLEFT < 0
-- set @AMOUNTLEFT = 0;
set @COUNT = @COUNT + 1;
fetch next from PAYMENTCURSOR into @INSTALLMENTID, @INSTALLMENTAMOUNT;
end
--When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long
close PAYMENTCURSOR;
deallocate PAYMENTCURSOR;
end
/* increased payment (not so easy)*/
if @APPLIEDAMOUNTCONVERTED > @ORIGINALAMOUNT
begin
set @AMOUNTLEFT = @APPLIEDAMOUNTCONVERTED - @ORIGINALAMOUNT;
select
@PLEDGEID = PLEDGEID,
@MAXAMOUNT = dbo.UFN_PLEDGE_GETDESIGNATIONBALANCE(PLEDGEID, @DESIGNATIONID)
from dbo.INSTALLMENTSPLITPAYMENT
where PAYMENTID = @ID;
if @AMOUNTLEFT > @MAXAMOUNT
raiserror('PLEDGEDESIGNATIONMAX_EXCEED',13,1)
if @OVERPAYMENTAPPLICATIONTYPECODE is null
set @OVERPAYMENTAPPLICATIONTYPECODE = 255;
if not @OVERPAYMENTAPPLICATIONTYPECODE in (0,1,255)
set @OVERPAYMENTAPPLICATIONTYPECODE = 1;
--Overpayment option to pay pledge balance, so pay first installment as usual, then pay from last installment forward
if @OVERPAYMENTAPPLICATIONTYPECODE = 0
begin
declare @PAYMENTMINSEQUENCE int;
select @PAYMENTMINSEQUENCE= MIN(INSTALLMENT.SEQUENCE) from INSTALLMENTSPLITPAYMENT
inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
inner join dbo.INSTALLMENT on INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
where INSTALLMENTSPLITPAYMENT.PAYMENTID = @ID
--Find the minimum valid sequence number to be paid
select @MINSEQUENCE = min(INSTALLMENT.SEQUENCE)
from dbo.INSTALLMENTSPLIT
inner join dbo.INSTALLMENT on INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
where (dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITBALANCE(INSTALLMENTSPLIT.ID) > 0)
and INSTALLMENT.REVENUEID = @PLEDGEID;
--Find a sequence number above valid installments for this pledge
select @PAYFIRSTSEQUENCE = (MAX(SEQUENCE) + 1)
from [dbo].[UFN_PLEDGE_GETINSTALLMENTS](@PLEDGEID)
declare INSTALLMENTCURSOR cursor local fast_forward
for
select REVENUESPLIT.ID
,INSTALLMENTSPLIT.ID
,case when @DESIGNATIONID is NULL then dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITBALANCE(INSTALLMENTSPLIT.ID)
else dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITBALANCEBYDESIGNATION(INSTALLMENTSPLIT.ID, @DESIGNATIONID) end
,REVENUESPLIT_EXT.TYPECODE
,case FT.TYPECODE
when 3
then 7
when 4
then 6
when 15
then 19
else 2
end
from dbo.INSTALLMENTSPLIT
inner join dbo.INSTALLMENT on INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUESPLIT.FINANCIALTRANSACTIONID = INSTALLMENTSPLIT.PLEDGEID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
where dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITBALANCE(INSTALLMENTSPLIT.ID) > 0
and INSTALLMENT.REVENUEID = @PLEDGEID
and (INSTALLMENTSPLIT.DESIGNATIONID = @DESIGNATIONID or @DESIGNATIONID is null)
and (REVENUESPLIT_EXT.DESIGNATIONID = @DESIGNATIONID or @DESIGNATIONID is null)
and FT.TYPECODE in (0,1,2,3,4,5,6,7,8,9,15)
and REVENUESPLIT.DELETEDON is null
and REVENUESPLIT.TYPECODE != 1
order by case
--mark the first installment to pay with the highest sequence
when INSTALLMENT.SEQUENCE = @MINSEQUENCE and @PAYMENTMINSEQUENCE = @MINSEQUENCE
then @PAYFIRSTSEQUENCE
else INSTALLMENT.SEQUENCE
end desc;
end
--No overpayment option or overpay to next installments, so pay installments in order
else
begin
declare INSTALLMENTCURSOR cursor local fast_forward for
select REVENUESPLIT.ID, INSTALLMENTSPLIT.ID,
case when @DESIGNATIONID is NULL then dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITBALANCE(INSTALLMENTSPLIT.ID)
else dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITBALANCEBYDESIGNATION(INSTALLMENTSPLIT.ID, @DESIGNATIONID) end
,REVENUESPLIT_EXT.TYPECODE, case FT.TYPECODE when 3 then 7 when 4 then 6 when 15 then 19 else 2 end
from dbo.INSTALLMENTSPLIT
inner join dbo.INSTALLMENT
on INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
on REVENUESPLIT.FINANCIALTRANSACTIONID = INSTALLMENTSPLIT.PLEDGEID
inner join dbo.REVENUESPLIT_EXT
on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
inner join dbo.FINANCIALTRANSACTION FT
on FT.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
where dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITBALANCE(INSTALLMENTSPLIT.ID) > 0
and INSTALLMENT.REVENUEID = @PLEDGEID
and (INSTALLMENTSPLIT.DESIGNATIONID = @DESIGNATIONID or @DESIGNATIONID is null)
and (REVENUESPLIT_EXT.DESIGNATIONID = @DESIGNATIONID or @DESIGNATIONID is null)
and FT.TYPECODE in (0,1,2,3,4,5,6,7,8,9,15) and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1
order by INSTALLMENT.SEQUENCE;
end
open INSTALLMENTCURSOR;
fetch next from INSTALLMENTCURSOR into @SOURCEREVENUESPLITID, @INSTALLMENTSPLITID, @BALANCE, @PLEDGETYPECODE, @APPLICATIONCODE;
while @@FETCH_STATUS = 0
begin
if @AMOUNTLEFT <= 0
break;
/* determine payment amount */
if @AMOUNTLEFT <= @BALANCE
set @PAYAMOUNT = @AMOUNTLEFT;
else
set @PAYAMOUNT = @BALANCE;
set @AMOUNTLEFT = @AMOUNTLEFT - @PAYAMOUNT;
/* see if this payment is already on this installment and just update the balance */
-- LeeCh 12/09/2009 Bug #52215
-- Need to set @INSTALLMENTPAYMENTID to null each time or the next if statement won't work correctly
set @INSTALLMENTPAYMENTID = null;
select @INSTALLMENTPAYMENTID = ID
from INSTALLMENTSPLITPAYMENT
where INSTALLMENTSPLITID = @INSTALLMENTSPLITID and PAYMENTID = @ID
if @INSTALLMENTPAYMENTID is null
begin
insert into dbo.INSTALLMENTSPLITPAYMENT(ID, PAYMENTID, PLEDGEID, INSTALLMENTSPLITID, AMOUNT, OVERPAYMENTAPPLICATIONTYPECODE, APPLICATIONCURRENCYID, APPLICATIONEXCHANGERATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @ID, @PLEDGEID, @INSTALLMENTSPLITID, @PAYAMOUNT, @OVERPAYMENTAPPLICATIONTYPECODE, @APPLICATIONCURRENCYID, @APPLICATIONEXCHANGERATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
end
else
update dbo.INSTALLMENTSPLITPAYMENT
set AMOUNT = AMOUNT + @PAYAMOUNT,
APPLICATIONCURRENCYID = @APPLICATIONCURRENCYID,
APPLICATIONEXCHANGERATEID = @APPLICATIONEXCHANGERATEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @INSTALLMENTPAYMENTID;
fetch next from INSTALLMENTCURSOR into @SOURCEREVENUESPLITID, @INSTALLMENTSPLITID, @BALANCE, @PLEDGETYPECODE, @APPLICATIONCODE;
end
--When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long
close INSTALLMENTCURSOR
deallocate INSTALLMENTCURSOR
end
if @SOURCEREVENUESPLITID is null
select top 1 @SOURCEREVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
from dbo.INSTALLMENTSPLITPAYMENT inner join dbo.FINANCIALTRANSACTIONLINEITEM on INSTALLMENTSPLITPAYMENT.PLEDGEID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
where INSTALLMENTSPLITPAYMENT.PAYMENTID = @ID
and (REVENUESPLIT_EXT.DESIGNATIONID = @DESIGNATIONID or @DESIGNATIONID is null)
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
-- For any installment split payments that were not already touched, update the application exchange rate
update dbo.INSTALLMENTSPLITPAYMENT
set
APPLICATIONEXCHANGERATEID = @APPLICATIONEXCHANGERATEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where
INSTALLMENTSPLITPAYMENT.PAYMENTID = @ID
and INSTALLMENTSPLITPAYMENT.APPLICATIONEXCHANGERATEID <> @APPLICATIONEXCHANGERATEID;
update dbo.FINANCIALTRANSACTIONLINEITEM set
TRANSACTIONAMOUNT = @APPLIEDAMOUNT
,BASEAMOUNT = @BASEAPPLIEDAMOUNT
,ORGAMOUNT = @ORGANIZATIONAPPLIEDAMOUNT
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CHANGEDATE
,SOURCELINEITEMID = @SOURCEREVENUESPLITID
where ID = @ID
--Sourcelineitem will always need updated
-- and (
-- TRANSACTIONAMOUNT != @APPLIEDAMOUNT or
-- BASEAMOUNT != @BASEAPPLIEDAMOUNT or
-- ORGAMOUNT != @ORGANIZATIONAPPLIEDAMOUNT);
/* Update recognitions based on user selection */
exec dbo.USP_REVENUESPLIT_UPDATERECOGNITION @ID, @ORIGINALREVENUESPLITAMOUNT, @UPDATERECOGNITIONOPTION, @CHANGEAGENTID, @CHANGEDATE, @APPLICATIONTYPE, @APPLICATIONID;
exec dbo.USP_REVENUESPLIT_UPDATESOLICITORS
@REVENUESPLITID = @ID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CHANGEDATE = @CHANGEDATE,
@UPDATEOPTION = @UPDATESOLICITORSOPTION;
--Business units - AdiSa 6/12/10 - Re-adjust business unit ratio's with new revenuesplit amount for gift.
update dbo.REVENUESPLITBUSINESSUNIT set
REVENUESPLITBUSINESSUNIT.AMOUNT = REVENUESPLIT.BASEAMOUNT * BU.RATIO
from dbo.REVENUESPLITBUSINESSUNIT
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUESPLIT.ID = REVENUESPLITBUSINESSUNIT.REVENUESPLITID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
inner join @BUSINESSUNITS BU on BU.DESIGNATIONID = REVENUESPLIT_EXT.DESIGNATIONID
where REVENUESPLIT.ID = @ID and REVENUESPLITBUSINESSUNIT.BUSINESSUNITCODEID = BU.BUSINESSUNITCODEID
and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1;