USP_DATAFORMTEMPLATE_OPPORTUNITY_EDIT_3_SAVE
The save procedure used by the edit dataform template "Opportunity Edit 3 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. |
@EXPECTEDASKAMOUNT | money | IN | Expected ask amount |
@ASKAMOUNT | money | IN | Ask amount |
@ACCEPTEDAMOUNT | money | IN | Accepted amount |
@STATUSCODE | tinyint | IN | Status |
@EXPECTEDASKDATE | datetime | IN | Expected ask date |
@ASKDATE | datetime | IN | Ask date |
@RESPONSEDATE | datetime | IN | Response date |
@COMMENT | nvarchar(max) | IN | Comments |
@DESIGNATION | xml | IN | Designation |
@LIKELIHOODTYPECODEID | uniqueidentifier | IN | Likelihood |
@OPPORTUNITYTYPECODEID | uniqueidentifier | IN | Opportunity type |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | Transaction currency |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_OPPORTUNITY_EDIT_3_SAVE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@EXPECTEDASKAMOUNT money,
@ASKAMOUNT money,
@ACCEPTEDAMOUNT money,
@STATUSCODE tinyint,
@EXPECTEDASKDATE datetime,
@ASKDATE datetime,
@RESPONSEDATE datetime,
@COMMENT nvarchar(max),
@DESIGNATION xml,
@LIKELIHOODTYPECODEID uniqueidentifier,
@OPPORTUNITYTYPECODEID uniqueidentifier,
@TRANSACTIONCURRENCYID uniqueidentifier
) as
begin
if @STATUSCODE = 4 or @STATUSCODE = 5
set @LIKELIHOODTYPECODEID = null;
if @STATUSCODE = 0
set @ASKAMOUNT = 0;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CHANGEDATE datetime = getdate();
begin try
declare @DATEADDED datetime;
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXPECTEDASKAMOUNT money;
declare @BASEASKAMOUNT money;
declare @BASEACCEPTEDASKAMOUNT money;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXPECTEDASKAMOUNT money;
declare @ORGANIZATIONASKAMOUNT money;
declare @ORGANIZATIONACCEPTEDASKAMOUNT money;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
if @TRANSACTIONCURRENCYID is null
set @TRANSACTIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
select
@BASECURRENCYID = BASECURRENCYID,
@ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),
@DATEADDED = DATEADDED
from
dbo.OPPORTUNITY
where
OPPORTUNITY.ID = @ID;
set @BASEEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID, @BASECURRENCYID, @DATEADDED, 1, null);
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @ASKAMOUNT, @DATEADDED, @BASECURRENCYID, @BASEEXCHANGERATEID output,
@TRANSACTIONCURRENCYID, @BASEASKAMOUNT output, @ORGANIZATIONCURRENCYID, @ORGANIZATIONASKAMOUNT output,
@ORGANIZATIONEXCHANGERATEID output, 1;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @EXPECTEDASKAMOUNT, @DATEADDED, @BASECURRENCYID, @BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID, @BASEEXPECTEDASKAMOUNT output, @ORGANIZATIONCURRENCYID, @ORGANIZATIONEXPECTEDASKAMOUNT output,
@ORGANIZATIONEXCHANGERATEID, 1;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @ACCEPTEDAMOUNT, @DATEADDED, @BASECURRENCYID, @BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID, @BASEACCEPTEDASKAMOUNT output, @ORGANIZATIONCURRENCYID, @ORGANIZATIONACCEPTEDASKAMOUNT output,
@ORGANIZATIONEXCHANGERATEID, 1;
exec dbo.USP_OPPORTUNITY_VALIDATEDESIGNATIONS @DESIGNATION;
declare @TRANSACTIONCURRENCYCHANGED bit
select @TRANSACTIONCURRENCYCHANGED = CASE TRANSACTIONCURRENCYID
WHEN @TRANSACTIONCURRENCYID THEN 0
ELSE 1
END
FROM dbo.OPPORTUNITY
where
ID = @ID;
update
dbo.OPPORTUNITY
set
STATUSCODE = @STATUSCODE,
EXPECTEDASKAMOUNT = @BASEEXPECTEDASKAMOUNT,
ORGANIZATIONEXPECTEDASKAMOUNT = @ORGANIZATIONEXPECTEDASKAMOUNT,
TRANSACTIONEXPECTEDASKAMOUNT = @EXPECTEDASKAMOUNT,
ASKAMOUNT = @BASEASKAMOUNT,
ORGANIZATIONASKAMOUNT = @ORGANIZATIONASKAMOUNT,
TRANSACTIONASKAMOUNT = @ASKAMOUNT,
ACCEPTEDASKAMOUNT = case @STATUSCODE when 3 then @BASEACCEPTEDASKAMOUNT else 0.0 end,
ORGANIZATIONACCEPTEDASKAMOUNT = @ORGANIZATIONACCEPTEDASKAMOUNT,
TRANSACTIONACCEPTEDASKAMOUNT = @ACCEPTEDAMOUNT,
EXPECTEDASKDATE = @EXPECTEDASKDATE,
ASKDATE = @ASKDATE,
RESPONSEDATE = @RESPONSEDATE,
COMMENT = @COMMENT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE,
LIKELIHOODTYPECODEID = @LIKELIHOODTYPECODEID,
OPPORTUNITYTYPECODEID = @OPPORTUNITYTYPECODEID,
BASECURRENCYID = @BASECURRENCYID,
TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID
where
ID = @ID;
set @DESIGNATION = dbo.UFN_OPPORTUNITYDESIGNATION_CONVERTAMOUNTSINXML(@DESIGNATION, @BASECURRENCYID, @TRANSACTIONCURRENCYID, @BASEEXCHANGERATEID, @DATEADDED);
declare @DESIGNATIONSCHANGED bit;
set @DESIGNATIONSCHANGED = dbo.UFN_OPPORTUNITY_DESIGNATIONSCHANGED_2(@ID, @DESIGNATION);
if @DESIGNATIONSCHANGED = 1 or @TRANSACTIONCURRENCYCHANGED = 1
begin
--We have to always delete and add designations because simply updating them can cause the unique constraint to fail
exec dbo.USP_OPPORTUNITY_DESIGNATION_UPDATEFROMXML_ALWAYSADD @ID, @DESIGNATION, @CHANGEAGENTID;
exec dbo.USP_OPPORTUNITY_CLEARANDADDCAMPAIGNS @OPPORTUNITYID = @ID, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CHANGEDATE;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end;