USP_DATAFORMTEMPLATE_EDIT_MKTASKLADDER_2
The save procedure used by the edit dataform template "Ask Ladder Edit Form".
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. |
@NAME | nvarchar(100) | IN | Name |
@CURRENCYSYMBOL | nvarchar(3) | IN | Currency symbol |
@RECORDSOURCEID | uniqueidentifier | IN | Record source |
@OBJECTKEY | nvarchar(400) | IN | Amount field |
@ITEMLIST | xml | IN | Ask ladder |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@SITEID | uniqueidentifier | IN | Site |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTASKLADDER_2]
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@NAME nvarchar(100),
@CURRENCYSYMBOL nvarchar(3),
@RECORDSOURCEID uniqueidentifier,
@OBJECTKEY nvarchar(400),
@ITEMLIST xml,
@CURRENTAPPUSERID uniqueidentifier,
@SITEID uniqueidentifier
)
as
set nocount on;
declare @CURRENTDATE datetime;
declare @INUSE bit;
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @ITEMLISTTABLE table (
[ID] uniqueidentifier,
[BASECURRENCYID] uniqueidentifier,
[ITEMVALUE1] decimal(20, 4),
[ITEMVALUE2] decimal(20, 4),
[ITEMVALUE3] decimal(20, 4),
[ITEMVALUE4] decimal(20, 4),
[ITEMVALUE5] decimal(20, 4),
[MINIMUMENTRYAMOUNT] decimal(20, 4),
[ORGANIZATIONEXCHANGERATEID] uniqueidentifier,
[ORGANIZATIONITEMVALUE1] decimal(20, 4),
[ORGANIZATIONITEMVALUE2] decimal(20, 4),
[ORGANIZATIONITEMVALUE3] decimal(20, 4),
[ORGANIZATIONITEMVALUE4] decimal(20, 4),
[ORGANIZATIONITEMVALUE5] decimal(20, 4),
[ORGANIZATIONMINIMUMENTRYAMOUNT] decimal(20, 4),
[ROUNDTOAMOUNT] decimal(20, 4),
[TYPECODE] tinyint,
[WRITEINTEXT] nvarchar(100)
);
begin try
set @INUSE = dbo.[UFN_MKTASKLADDER_ISINUSE](@ID);
-- If any ask amount 1 with a value of 0 in the ITEMLIST collection is of type ("fixed" or "multiply"), don't save.
if @ITEMLIST.exist('/ITEMLIST/ITEM[TYPECODE[(text()[1]) != 0] and ITEMVALUE1[(text()[1]) = 0]] ') = 1
raiserror('ERR_ITEMVALUE1ISZERO', 16, 10);
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
select @BASECURRENCYID = [BASECURRENCYID] from dbo.[MKTASKLADDER] where [ID] = @ID;
set @ORGANIZATIONCURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();
if dbo.[UFN_INSTALLEDPRODUCTS_PRODUCTIS]('97d98e59-5b0b-446f-bf48-de8709f50afe') = 1 -- multicurrency
-- overwrite the currency symbol passed in with the symbol for the base currency
select @CURRENCYSYMBOL = [CURRENCYSYMBOL] from dbo.[CURRENCY] where [ID] = @BASECURRENCYID;
update dbo.[MKTASKLADDER] set
[NAME] = @NAME,
[CURRENCYSYMBOL] = @CURRENCYSYMBOL,
[RECORDSOURCEID] = case when @INUSE = 1 then [RECORDSOURCEID] else @RECORDSOURCEID end,
[OBJECTKEY] = case when @INUSE = 1 then [OBJECTKEY] else @OBJECTKEY end,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE,
[SITEID] = @SITEID
where [ID] = @ID;
if @ITEMLIST is not null and @INUSE = 0
begin
insert into @ITEMLISTTABLE
select
[ID],
[BASECURRENCYID],
[ITEMVALUE1],
isnull([ITEMVALUE2], 0),
isnull([ITEMVALUE3], 0),
isnull([ITEMVALUE4], 0),
isnull([ITEMVALUE5], 0),
isnull([MINIMUMENTRYAMOUNT], 0),
[ORGANIZATIONEXCHANGERATEID],
[ORGANIZATIONITEMVALUE1],
isnull([ORGANIZATIONITEMVALUE2], 0),
isnull([ORGANIZATIONITEMVALUE3], 0),
isnull([ORGANIZATIONITEMVALUE4], 0),
isnull([ORGANIZATIONITEMVALUE5], 0),
isnull([ORGANIZATIONMINIMUMENTRYAMOUNT], 0),
isnull([ROUNDTOAMOUNT], 0),
[TYPECODE],
[WRITEINTEXT]
from dbo.[UFN_MKTASKLADDER_GETITEMLIST_FROMITEMLISTXML](@ITEMLIST);
if @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
begin
set @ORGANIZATIONEXCHANGERATEID = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATESTORGANIZATIONRATE](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, default, default, default);
update @ITEMLISTTABLE set
[BASECURRENCYID] = @BASECURRENCYID,
[ORGANIZATIONEXCHANGERATEID] = @ORGANIZATIONEXCHANGERATEID,
[ORGANIZATIONMINIMUMENTRYAMOUNT] = dbo.[UFN_CURRENCY_CONVERT]([MINIMUMENTRYAMOUNT], @ORGANIZATIONEXCHANGERATEID),
[ORGANIZATIONITEMVALUE1] = dbo.[UFN_CURRENCY_CONVERT]([ITEMVALUE1], @ORGANIZATIONEXCHANGERATEID),
[ORGANIZATIONITEMVALUE2] = dbo.[UFN_CURRENCY_CONVERT]([ITEMVALUE2], @ORGANIZATIONEXCHANGERATEID),
[ORGANIZATIONITEMVALUE3] = dbo.[UFN_CURRENCY_CONVERT]([ITEMVALUE3], @ORGANIZATIONEXCHANGERATEID),
[ORGANIZATIONITEMVALUE4] = dbo.[UFN_CURRENCY_CONVERT]([ITEMVALUE4], @ORGANIZATIONEXCHANGERATEID),
[ORGANIZATIONITEMVALUE5] = dbo.[UFN_CURRENCY_CONVERT]([ITEMVALUE5], @ORGANIZATIONEXCHANGERATEID)
end
else
update @ITEMLISTTABLE set
[BASECURRENCYID] = @BASECURRENCYID,
[ORGANIZATIONEXCHANGERATEID] = null,
[ORGANIZATIONMINIMUMENTRYAMOUNT] = [MINIMUMENTRYAMOUNT],
[ORGANIZATIONITEMVALUE1] = [ITEMVALUE1],
[ORGANIZATIONITEMVALUE2] = [ITEMVALUE2],
[ORGANIZATIONITEMVALUE3] = [ITEMVALUE3],
[ORGANIZATIONITEMVALUE4] = [ITEMVALUE4],
[ORGANIZATIONITEMVALUE5] = [ITEMVALUE5];
set @ITEMLIST = (
select
[ID],
[BASECURRENCYID],
[ITEMVALUE1],
[ITEMVALUE2],
[ITEMVALUE3],
[ITEMVALUE4],
[ITEMVALUE5],
[MINIMUMENTRYAMOUNT],
[ORGANIZATIONEXCHANGERATEID],
[ORGANIZATIONITEMVALUE1],
[ORGANIZATIONITEMVALUE2],
[ORGANIZATIONITEMVALUE3],
[ORGANIZATIONITEMVALUE4],
[ORGANIZATIONITEMVALUE5],
[ORGANIZATIONMINIMUMENTRYAMOUNT],
[ROUNDTOAMOUNT],
[TYPECODE],
[WRITEINTEXT]
from @ITEMLISTTABLE
order by [MINIMUMENTRYAMOUNT]
for xml raw('ITEM'), type, elements, root('ITEMLIST'), binary base64);
exec dbo.[USP_MKTASKLADDER_GETITEMLIST_UPDATEFROMXML] @ID, @ITEMLIST, @CHANGEAGENTID, @CURRENTDATE
end
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1
end catch
return 0;