USP_CHARGELINEITEMRESPONSIBILITY_EDIT
Insert, update, and delete charge responsibility records for a charge.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHARGELINEITEMRESPONSIBILITY | xml | IN |
Definition
Copy
create procedure dbo.USP_CHARGELINEITEMRESPONSIBILITY_EDIT
(
@CHANGEAGENTID uniqueidentifier = null,
@CHARGELINEITEMRESPONSIBILITY xml
)
as
set nocount on;
-- Get the change agent if one was not passed in
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
-- Get the current date
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
begin try
--Cache current context information
declare @CONTEXTCACHE varbinary(128);
set @CONTEXTCACHE = CONTEXT_INFO();
set CONTEXT_INFO @CHANGEAGENTID;
declare @temp table (
ID uniqueidentifier NOT NULL,
FINANCIALTRANSACTIONLINEITEMID uniqueidentifier NOT NULL,
CONSTITUENTID uniqueidentifier NOT NULL,
PERCENTAGE decimal NOT NULL);
insert into @temp
(ID, FINANCIALTRANSACTIONLINEITEMID, CONSTITUENTID, PERCENTAGE)
select isnull(ID, newid()), FINANCIALTRANSACTIONLINEITEMID, CONSTITUENTID, PERCENTAGE
from dbo.UFN_CHARGELINEITEMRESPONSIBILITY_FROMITEMLISTXML(@CHARGELINEITEMRESPONSIBILITY);
merge dbo.CHARGELINEITEMRESPONSIBILITY as target
using (select
ID,
FINANCIALTRANSACTIONLINEITEMID,
CONSTITUENTID,
PERCENTAGE
from @temp) as source (
ID,
FINANCIALTRANSACTIONLINEITEMID,
CONSTITUENTID,
PERCENTAGE)
on ((target.ID = source.ID) and (target.FINANCIALTRANSACTIONLINEITEMID in (select FINANCIALTRANSACTIONLINEITEMID from @temp)))
when not matched by source and (target.FINANCIALTRANSACTIONLINEITEMID in (select FINANCIALTRANSACTIONLINEITEMID from @temp)) then DELETE
when matched then
update set
ID = source.ID,
FINANCIALTRANSACTIONLINEITEMID = source.FINANCIALTRANSACTIONLINEITEMID,
CONSTITUENTID = source.CONSTITUENTID,
PERCENTAGE = source.PERCENTAGE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
when not matched then
insert (
ID,
FINANCIALTRANSACTIONLINEITEMID,
CONSTITUENTID,
PERCENTAGE,
ADDEDBYID,
DATEADDED,
CHANGEDBYID,
DATECHANGED)
values (
source.ID,
source.FINANCIALTRANSACTIONLINEITEMID,
source.CONSTITUENTID,
source.PERCENTAGE,
@CHANGEAGENTID,
@CURRENTDATE,
@CHANGEAGENTID,
@CURRENTDATE);
if not @CONTEXTCACHE is null
set CONTEXT_INFO @CONTEXTCACHE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;