USP_DATAFORMTEMPLATE_ADD_REVENUEOPPORTUNITYLINK

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@REVENUEID uniqueidentifier IN
@OPPORTUNITYID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@RESETSOLICITORCREDITS bit IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_REVENUEOPPORTUNITYLINK
(
  @ID uniqueidentifier = null output,
  @REVENUEID uniqueidentifier,
  @OPPORTUNITYID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @RESETSOLICITORCREDITS bit = null
)
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 =  getdate();

if @RESETSOLICITORCREDITS = 1
begin
  delete from dbo.REVENUESOLICITOR where REVENUESOLICITOR.REVENUESPLITID in (select ID from dbo.FINANCIALTRANSACTIONLINEITEM where FINANCIALTRANSACTIONID = @REVENUEID);

  declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();                
  declare @BASECURRENCYID uniqueidentifier;
  declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
  declare @PROSPECTPLANID uniqueidentifier;

  select
    @BASECURRENCYID = REVENUE_EXT.NONPOSTABLEBASECURRENCYID,
    @ORGANIZATIONEXCHANGERATEID = FINANCIALTRANSACTION.ORGEXCHANGERATEID
  from dbo.REVENUE_EXT
    inner join dbo.FINANCIALTRANSACTION on REVENUE_EXT.ID = FINANCIALTRANSACTION.ID
  where REVENUE_EXT.ID = @REVENUEID;

  select
    @PROSPECTPLANID = PROSPECTPLANID
  from
    dbo.OPPORTUNITY
  where
    ID = @OPPORTUNITYID;

  insert into dbo.REVENUESOLICITOR
  (
    REVENUESPLITID,
    CONSTITUENTID,
    AMOUNT,
    SEQUENCE,
    DATEADDED,
    DATECHANGED,
    ADDEDBYID,
    CHANGEDBYID,
    BASECURRENCYID,
    ORGANIZATIONAMOUNT,
    ORGANIZATIONEXCHANGERATEID
  )
  select
    FINANCIALTRANSACTIONLINEITEM.ID,
    SOLICITORS.ID,
    (SOLICITORS.CREDITPERCENTAGE * FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT) / 100.0,
    SOLICITORS.SEQUENCE,
    @CURRENTDATE,
    @CURRENTDATE,
    @CHANGEAGENTID,
    @CHANGEAGENTID,
    @BASECURRENCYID BASECURRENCYID,
    case  --Multicurrency - AdamBu 3/30/10 - Calculate organization amount.

      when @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
        then dbo.UFN_CURRENCY_CONVERT((SOLICITORS.CREDITPERCENTAGE * FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT) / 100.0, @ORGANIZATIONEXCHANGERATEID)
      else (SOLICITORS.CREDITPERCENTAGE * FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT) / 100.0
    end ORGANIZATIONAMOUNT,
    @ORGANIZATIONEXCHANGERATEID ORGANIZATIONEXCHANGERATEID
  from FINANCIALTRANSACTIONLINEITEM
    cross join dbo.UFN_PROSPECTPLAN_GETFUNDRAISERSANDCREDITS_2(@PROSPECTPLANID, @OPPORTUNITYID) as SOLICITORS
  where FINANCIALTRANSACTIONID = @REVENUEID;
end

begin try
  insert into dbo.REVENUEOPPORTUNITY
  (
    ID,
    OPPORTUNITYID,
    ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
  )
  select
      FINANCIALTRANSACTIONLINEITEM.ID,
      @OPPORTUNITYID,
      @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
  from dbo.FINANCIALTRANSACTIONLINEITEM
  where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null

  union all

  select
      FINANCIALTRANSACTIONLINEITEM.ID,
      @OPPORTUNITYID,
      @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
  from dbo.FINANCIALTRANSACTIONLINEITEM
    left join dbo.FINANCIALTRANSACTIONLINEITEM SOURCE on SOURCE.ID = FINANCIALTRANSACTIONLINEITEM.SOURCELINEITEMID
  where FINANCIALTRANSACTIONLINEITEM.SOURCELINEITEMID = SOURCE.ID
    and SOURCE.FINANCIALTRANSACTIONID = @REVENUEID and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null;
end try
begin catch
  exec dbo.USP_RAISE_ERROR;
  return 1;
end catch

return 0;