USP_DATAFORMTEMPLATE_EDITSAVE_SALESMETHODPAYMENTMETHOD
The save procedure used by the edit dataform template "Edit Sales Method Payment Methods".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@PAYMENTMETHODS | xml | IN | Payment methods |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITSAVE_SALESMETHODPAYMENTMETHOD
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@PAYMENTMETHODS xml
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CHANGEDATE datetime;
set @CHANGEDATE = getdate();
begin try
declare @TEMP table
(ID uniqueidentifier,
PAYMENTTYPECODE tinyint,
OTHERPAYMENTMETHODCODEID uniqueidentifier);
insert into @TEMP
select coalesce(P.ID, newid()),
case when P.PAYMENTTYPEID = 'CF693144-0204-4FFD-90EF-335E509F9C69' then 0
when P.PAYMENTTYPEID = '49BCEDF6-213C-4734-896B-BB183B487D22' then 1
when P.PAYMENTTYPEID = '3D8F2B59-3647-48F0-831A-ABC527C3B7AB' then 2
else 10 end as [PAYMENTTYPECODE],
case when P.PAYMENTTYPEID = 'CF693144-0204-4FFD-90EF-335E509F9C69' then null
when P.PAYMENTTYPEID = '49BCEDF6-213C-4734-896B-BB183B487D22' then null
when P.PAYMENTTYPEID = '3D8F2B59-3647-48F0-831A-ABC527C3B7AB' then null
else P.PAYMENTTYPEID end as [OTHERPAYMENTMETHODCODEID]
from
(SELECT
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
T.c.value('(PAYMENTTYPEID)[1]','uniqueidentifier') AS 'PAYMENTTYPEID'
FROM @PAYMENTMETHODS.nodes('/PAYMENTMETHODS/ITEM') T(c)) AS P;
declare @contextCache varbinary(128);
-- cache current context information
set @contextCache = CONTEXT_INFO();
-- set CONTEXT_INFO to @CHANGEAGENTID
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
-- delete any items that no longer exist in the XML table
delete from dbo.[SALESMETHODPAYMENTMETHOD]
where [SALESMETHODPAYMENTMETHOD].SALESMETHODID = @ID
and [SALESMETHODPAYMENTMETHOD].ID in
(select ID from dbo.SALESMETHODPAYMENTMETHOD
EXCEPT select ID from @TEMP)
-- reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
-- update the items that exist in the XML table and the db
update [SALESMETHODPAYMENTMETHOD]
set [SALESMETHODPAYMENTMETHOD].[ID]=temp.[ID],
[SALESMETHODPAYMENTMETHOD].[OTHERPAYMENTMETHODCODEID]=temp.[OTHERPAYMENTMETHODCODEID],
[SALESMETHODPAYMENTMETHOD].[PAYMENTTYPECODE]=temp.[PAYMENTTYPECODE],
[SALESMETHODPAYMENTMETHOD].CHANGEDBYID = @CHANGEAGENTID,
[SALESMETHODPAYMENTMETHOD].DATECHANGED = @CHANGEDATE
from dbo.[SALESMETHODPAYMENTMETHOD] inner join @TEMP as [temp] on [SALESMETHODPAYMENTMETHOD].ID = [temp].ID
where ([SALESMETHODPAYMENTMETHOD].[PAYMENTTYPECODE] = 10 and [SALESMETHODPAYMENTMETHOD].[OTHERPAYMENTMETHODCODEID]<>temp.[OTHERPAYMENTMETHODCODEID]) or
([SALESMETHODPAYMENTMETHOD].[PAYMENTTYPECODE]<>temp.[PAYMENTTYPECODE])
-- insert new items
insert into [SALESMETHODPAYMENTMETHOD]
([SALESMETHODID],
[ID],
[OTHERPAYMENTMETHODCODEID],
[PAYMENTTYPECODE],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select @ID,
[ID],
[OTHERPAYMENTMETHODCODEID],
[PAYMENTTYPECODE],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from @TEMP as [temp]
where not exists (select ID from dbo.[SALESMETHODPAYMENTMETHOD] as data where data.ID = [temp].ID)
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;