USP_DATAFORMTEMPLATE_EDIT_SALESDEPOSITTEMPLATE_3
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@NAME | nvarchar(100) | IN | |
@BANKACCOUNTID | uniqueidentifier | IN | |
@REFERENCECODE | tinyint | IN | |
@SALESCHANNELOPTIONCODE | tinyint | IN | |
@PAYMENTMETHODOPTIONCODE | tinyint | IN | |
@PAYMENTTYPE | xml | IN | |
@SALESCHANNEL | xml | IN | |
@CURRENCYOPTIONCODE | tinyint | IN | |
@CURRENCY | xml | IN |
Definition
Copy
create procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SALESDEPOSITTEMPLATE_3
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@NAME nvarchar(100),
@BANKACCOUNTID uniqueidentifier,
@REFERENCECODE tinyint,
@SALESCHANNELOPTIONCODE tinyint,
@PAYMENTMETHODOPTIONCODE tinyint,
@PAYMENTTYPE xml,
@SALESCHANNEL xml,
@CURRENCYOPTIONCODE tinyint,
@CURRENCY xml
)
as
set nocount on;
if @ID is null
set @ID = newid()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
update dbo.[SALESDEPOSITTEMPLATE] set
[ID] = @ID,
[NAME] = @NAME,
[BANKACCOUNTID] = @BANKACCOUNTID,
[REFERENCECODE] = @REFERENCECODE,
[SALESCHANNELOPTIONCODE] = @SALESCHANNELOPTIONCODE,
[PAYMENTMETHODOPTIONCODE] = @PAYMENTMETHODOPTIONCODE,
[CURRENCYOPTIONCODE] = @CURRENCYOPTIONCODE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where ID = @ID;
merge dbo.[SALESDEPOSITTEMPLATESALESCHANNEL] as T
using dbo.UFN_SALESDEPOSITTEMPLATE_SALESCHANNELS_FROMITEMLISTXML(@SALESCHANNEL) as S
on (T.SALESMETHODTYPECODE = S.SALESMETHODTYPECODE and T.SALESDEPOSITTEMPLATEID = @ID)
when not matched by target and S.INCLUDE = 1 and @SALESCHANNELOPTIONCODE = 1
then insert([ID], [SALESDEPOSITTEMPLATEID], [SALESMETHODTYPECODE], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
values(newid(), @ID, S.SALESMETHODTYPECODE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
when matched and (S.INCLUDE = 0 or @SALESCHANNELOPTIONCODE = 0)
then delete;
merge dbo.[SALESDEPOSITTEMPLATEPAYMENTMETHOD] as T
using dbo.UFN_SALESDEPOSITTEMPLATE_PAYMENTMETHODS_FROMITEMLISTXML(@PAYMENTTYPE) as S
on (
T.SALESDEPOSITTEMPLATEID = @ID
and T.PAYMENTMETHODCODE = S.PAYMENTMETHODCODE
and (T.CREDITTYPECODEID = S.CREDITTYPECODEID or (T.CREDITTYPECODEID is null and S.CREDITTYPECODEID is null))
and (T.OTHERPAYMENTMETHODCODEID = S.OTHERPAYMENTMETHODCODEID or (T.OTHERPAYMENTMETHODCODEID is null and S.OTHERPAYMENTMETHODCODEID is null))
)
when not matched by target and S.INCLUDE = 1 and @PAYMENTMETHODOPTIONCODE = 1
then insert([ID], [SALESDEPOSITTEMPLATEID], [PAYMENTMETHODCODE], [CREDITTYPECODEID], [OTHERPAYMENTMETHODCODEID],
[ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
values(newid(), @ID, S.PAYMENTMETHODCODE, S.CREDITTYPECODEID, S.OTHERPAYMENTMETHODCODEID,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
when matched and (S.INCLUDE = 0 or @PAYMENTMETHODOPTIONCODE = 0)
then delete;
merge dbo.[SALESDEPOSITTEMPLATECURRENCY] as T
using dbo.UFN_SALESDEPOSITTEMPLATE_CURRENCY_FROMITEMLISTXML(@CURRENCY) as S
on (T.CURRENCYID = S.CURRENCYID and T.SALESDEPOSITTEMPLATEID = @ID)
when not matched by target and S.INCLUDE = 1 and @CURRENCYOPTIONCODE = 1
then insert([ID], [SALESDEPOSITTEMPLATEID], [CURRENCYID], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
values(newid(), @ID, S.CURRENCYID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
when matched and (S.INCLUDE = 0 or @CURRENCYOPTIONCODE = 0)
then delete;
if exists(select 1
from dbo.SALESDEPOSITTEMPLATE T1
left join dbo.SALESDEPOSITTEMPLATESALESCHANNEL C1 on T1.ID = C1.SALESDEPOSITTEMPLATEID
left join dbo.SALESDEPOSITTEMPLATEPAYMENTMETHOD PM1 on T1.ID = PM1.SALESDEPOSITTEMPLATEID
left join dbo.SALESDEPOSITTEMPLATECURRENCY TC1 on T1.ID = TC1.SALESDEPOSITTEMPLATEID
inner join dbo.SALESDEPOSITTEMPLATE T2 on T1.ID != T2.ID
left join dbo.SALESDEPOSITTEMPLATESALESCHANNEL C2 on T2.ID = C2.SALESDEPOSITTEMPLATEID
left join dbo.SALESDEPOSITTEMPLATEPAYMENTMETHOD PM2 on T2.ID = PM2.SALESDEPOSITTEMPLATEID
left join dbo.SALESDEPOSITTEMPLATECURRENCY TC2 on T2.ID = TC2.SALESDEPOSITTEMPLATEID
left join dbo.SALESDEPOSITPROCESS SDP1 on SDP1.ID = T1.SALESDEPOSITPROCESSID
left join dbo.SALESDEPOSITPROCESS SDP2 on SDP2.ID = T2.SALESDEPOSITPROCESSID
where T1.ID = @ID and T1.INCLUDEINPROCESS = 1 and T2.INCLUDEINPROCESS = 1
and (SDP1.ID is null or SDP2.ID = SDP1.ID)
and ((T1.PAYMENTMETHODOPTIONCODE = 0 and (T2.PAYMENTMETHODOPTIONCODE = 0 or PM2.ID is not null))
or (T2.PAYMENTMETHODOPTIONCODE = 0 and (T1.PAYMENTMETHODOPTIONCODE = 0 or PM1.ID is not null))
or (PM1.PAYMENTMETHODCODE = PM2.PAYMENTMETHODCODE
and ((PM1.CREDITTYPECODEID is null and PM2.CREDITTYPECODEID is null)
or (PM1.CREDITTYPECODEID = PM2.CREDITTYPECODEID))
and ((PM2.OTHERPAYMENTMETHODCODEID is null and PM2.OTHERPAYMENTMETHODCODEID is null)
or (PM1.OTHERPAYMENTMETHODCODEID = PM2.OTHERPAYMENTMETHODCODEID))))
and ((T1.SALESCHANNELOPTIONCODE = 0 and (T2.SALESCHANNELOPTIONCODE = 0 or C2.ID is not null))
or (T2.SALESCHANNELOPTIONCODE = 0 and (T1.SALESCHANNELOPTIONCODE = 0 or C1.ID is not null))
or (C1.SALESMETHODTYPECODE = C2.SALESMETHODTYPECODE))
and ((T1.CURRENCYOPTIONCODE = 0 and (T2.CURRENCYOPTIONCODE = 0 or TC2.ID is not null))
or (T2.CURRENCYOPTIONCODE = 0 and (T1.CURRENCYOPTIONCODE = 0 or TC1.ID is not null))
or (TC1.CURRENCYID = TC2.CURRENCYID)))
raiserror('BBERR_SALESDEPOSITTEMPLATE_CONFLICT', 16, 1)
declare @isChannel bit = 0
if (@SALESCHANNELOPTIONCODE = 0) or exists(select ID from dbo.[SALESDEPOSITTEMPLATESALESCHANNEL] where SALESDEPOSITTEMPLATEID = @ID)
set @isChannel = 1
declare @isMethod bit = 0
if (@PAYMENTMETHODOPTIONCODE = 0) or exists(select ID from dbo.[SALESDEPOSITTEMPLATEPAYMENTMETHOD] where SALESDEPOSITTEMPLATEID = @ID)
set @isMethod = 1
declare @isCurrency bit = 0
if (@CURRENCYOPTIONCODE = 0) or exists(select ID from dbo.[SALESDEPOSITTEMPLATECURRENCY] where SALESDEPOSITTEMPLATEID = @ID)
set @isCurrency = 1
if (@isChannel = 0 and @isMethod = 0)
begin
raiserror('BBERR_MISSING_ALL', 16, 1)
return 1
end
else if (@isChannel = 0)
begin
raiserror('BBERR_MISSING_CHANNEL', 16, 1)
return 1
end
else if (@isMethod = 0)
begin
raiserror('BBERR_MISSING_METHOD', 16, 1)
return 1
end
if (@isCurrency = 0)
begin
raiserror('BBERR_MISSING_CURRENCY', 16, 1)
return 1
end
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;