USP_ADDOPPORTUNITIESPROCESS
runs an instance of Add Opportunities Process
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@NUMBERPROCESSED | int | INOUT | |
@NUMBEREXCEPTIONS | int | INOUT | |
@OUTPUTTABLENAME | nvarchar(128) | IN |
Definition
Copy
CREATE procedure [dbo].[USP_ADDOPPORTUNITIESPROCESS]
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@NUMBERPROCESSED int output,
@NUMBEREXCEPTIONS int output,
@OUTPUTTABLENAME nvarchar(128)
)
as
begin
set @NUMBERPROCESSED = 0;
set @NUMBEREXCEPTIONS = 0;
declare @PROCESSDATE date = getdate();
declare @IDSETREGISTERID uniqueidentifier;
declare @OPPORTUNITYTYPECODEID uniqueidentifier;
declare @OPPORTUNITYSTATUSCODE tinyint;
declare @EXPECTEDASKAMOUNT money;
declare @ASKAMOUNT money;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @EXPECTEDASKDATE datetime;
declare @ASKDATE datetime;
declare @RESPONSEDATE datetime;
declare @COMMENT nvarchar(255);
declare @LIKELIHOODTYPECODEID uniqueidentifier;
declare @SQL nvarchar(250);
set @SQL = N'insert into dbo.' + @OUTPUTTABLENAME + ' (PROSPECTPLANID, OPPORTUNITYID, RESULTCODE) values (@PPID, @OID, @RC)';
declare @PARAMDEF nvarchar(75);
set @PARAMDEF = N'@PPID uniqueidentifier, @OID uniqueidentifier, @RC tinyint';
---------------------------------------------------------------------
-- get parameters
select
@IDSETREGISTERID = IDSETREGISTERID,
@OPPORTUNITYTYPECODEID = OPPORTUNITYTYPECODEID,
@OPPORTUNITYSTATUSCODE = OPPORTUNITYSTATUSCODE,
@EXPECTEDASKAMOUNT = EXPECTEDASKAMOUNT,
@ASKAMOUNT = ASKAMOUNT,
@TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
@EXPECTEDASKDATE = EXPECTEDASKDATE,
@ASKDATE = ASKDATE,
@RESPONSEDATE = RESPONSEDATE,
@COMMENT = COMMENT,
@LIKELIHOODTYPECODEID = LIKELIHOODTYPECODEID
from dbo.ADDOPPORTUNITIESPROCESS
where ID = @ID;
declare @OPPORTUNITYDESIGNATIONSXML xml =
(select DESIGNATIONID, AMOUNT, SEQUENCE, TRANSACTIONCURRENCYID, FUNDINGMETHODCODEID,
CATEGORYCODEID, TYPECODEID, USECODEID
from dbo.ADDOPPORTUNITIESPROCESSOPPORTUNITYDESIGNATION
where ADDOPPORTUNITIESPROCESSID = @ID
for xml raw('ITEM'),type,elements,root('DESIGNATION'),BINARY BASE64);
---------------------------------------------------------------------
-- get prospect plans
declare @PROSPECTPLANID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @COMBOISVALID bit = 0;
declare @INVALIDCURRENCYPAIRMSG nvarchar(60) = 'Invalid combination of base and transaction currencies';
declare PROSPECTPLANCURSOR cursor local fast_forward for
select ID
from dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID)
open PROSPECTPLANCURSOR;
begin try
begin transaction;
fetch next from PROSPECTPLANCURSOR into @PROSPECTPLANID;
while (@@FETCH_STATUS = 0)
begin
begin try
save transaction OPPORTUNITYTX;
-- check for invalid combination of prospect plan base currency id and opportunity transaction currency id
select @BASECURRENCYID = BASECURRENCYID from dbo.PROSPECTPLAN where ID = @PROSPECTPLANID
set @COMBOISVALID = dbo.UFN_CURRENCYSET_BASEANDTRANSACTIONCURRENCYCOMBOISVALID(@BASECURRENCYID, @TRANSACTIONCURRENCYID)
if @COMBOISVALID = 0
raiserror(@INVALIDCURRENCYPAIRMSG, 13, 1);
---------------------------------------------------------------------
-- create opportunities
declare @OPPORTUNITYID uniqueidentifier = NEWID();
exec dbo.USP_DATAFORMTEMPLATE_OPPORTUNITY_ADD
@ID = @OPPORTUNITYID output,
@CHANGEAGENTID = @CHANGEAGENTID,
@PROSPECTPLANID = @PROSPECTPLANID,
@EXPECTEDASKAMOUNT = @EXPECTEDASKAMOUNT,
@ASKAMOUNT = @ASKAMOUNT,
@DESIGNATION = @OPPORTUNITYDESIGNATIONSXML,
@OPPORTUNITYTYPECODEID = @OPPORTUNITYTYPECODEID,
@STATUSCODE = @OPPORTUNITYSTATUSCODE,
@TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,
@EXPECTEDASKDATE = @EXPECTEDASKDATE,
@ASKDATE = @ASKDATE,
@RESPONSEDATE = @RESPONSEDATE,
@COMMENT = @COMMENT,
@LIKELIHOODTYPECODEID = @LIKELIHOODTYPECODEID
---------------------------------------------------------------------
-- reporting
exec sp_executesql @SQL, @PARAMDEF, @PROSPECTPLANID, @OPPORTUNITYID, 0
set @NUMBERPROCESSED = @NUMBERPROCESSED + 1;
end try
begin catch
rollback transaction OPPORTUNITYTX;
declare @STATUSCODE tinyint;
if error_message() like '%' + @INVALIDCURRENCYPAIRMSG + '%'
set @STATUSCODE = 1;
if error_message() like '%CK_OPPORTUNITY_QUALIFIEDONLYWHENACTIVE%'
set @STATUSCODE = 3;
if @STATUSCODE in (1,2,3)
begin
-- ignore errors due to invalid combination of plan base currency + opportunity tx currency
exec sp_executesql @SQL, @PARAMDEF, @PROSPECTPLANID, null, @STATUSCODE
set @NUMBEREXCEPTIONS = @NUMBEREXCEPTIONS + 1;
end
else
exec dbo.USP_RAISE_ERROR;
end catch
fetch next from PROSPECTPLANCURSOR into @PROSPECTPLANID;
end
close PROSPECTPLANCURSOR;
deallocate PROSPECTPLANCURSOR;
commit transaction;
end try
begin catch
close PROSPECTPLANCURSOR;
deallocate PROSPECTPLANCURSOR;
rollback transaction;
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
end