USP_DATAFORMTEMPLATE_ADD_BATCHMEMBERSHIPDUESBATCHROWCOMMIT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@VALIDATEONLY | bit | IN | |
@BATCHNUMBER | nvarchar(100) | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@BILLTOCONSTITUENTID | uniqueidentifier | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN | |
@EXCHANGERATE | decimal(20, 8) | IN | |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@POSTSTATUSCODE | tinyint | IN | |
@POSTDATE | date | IN | |
@DUESTYPECODE | tinyint | IN | |
@MEMBERSHIPRECIPIENT | uniqueidentifier | IN | |
@RENEWALRECIPIENT | tinyint | IN | |
@EFFORTID | uniqueidentifier | IN | |
@FINDERNUMBER | nvarchar(19) | IN | |
@APPEALID | uniqueidentifier | IN | |
@CHANNELCODEID | uniqueidentifier | IN | |
@DATE | date | IN | |
@MEMBERSHIPTRANSACTIONTYPECODE | tinyint | IN | |
@REVENUETYPECODE | tinyint | IN | |
@PAYADDITIONALTONEXTINSTALLMENT | bit | IN | |
@PAYADDITIONALMONEYAMOUNT | money | IN | |
@MEMBERSHIPPROGRAMID | uniqueidentifier | IN | |
@MEMBERSHIPLEVELID | uniqueidentifier | IN | |
@MEMBERSHIPLEVELTERMID | uniqueidentifier | IN | |
@MEMBERSHIPEXPIRESONDATE | date | IN | |
@MEMBERSHIPAMOUNT | money | IN | |
@MEMBERSHIPTRANSACTIONAMOUNT | money | IN | |
@EXISTINGMEMBERSHIPID | uniqueidentifier | IN | |
@MEMBERSHIPPLEDGEAMOUNT | money | IN | |
@CONTRIBUTORYDESIGNATIONID | uniqueidentifier | IN | |
@USEDISCOUNTRADIO | tinyint | IN | |
@DISCOUNTTYPE | uniqueidentifier | IN | |
@PROMOTIONCODE | nvarchar(50) | IN | |
@APPLIEDDISCOUNTID | uniqueidentifier | IN | |
@ADDDONATION | bit | IN | |
@DONATIONAMOUNT | money | IN | |
@GIVENANONYMOUSLY | bit | IN | |
@DONATIONOPPORTUNITYID | uniqueidentifier | IN | |
@DONATIONDESIGNATIONID | uniqueidentifier | IN | |
@DONATIONCATEGORYCODEID | uniqueidentifier | IN | |
@DECLINESGIFTAID | bit | IN | |
@PLEDGEFREQUENCYCODE | tinyint | IN | |
@PLEDGENUMBEROFINSTALLMENTS | int | IN | |
@PLEDGESTARTDATE | datetime | IN | |
@AUTOPAY | bit | IN | |
@SENDPLEDGEREMINDER | bit | IN | |
@CHECKDATE | UDT_FUZZYDATE | IN | |
@CHECKNUMBER | nvarchar(20) | IN | |
@REFERENCENUMBER | nvarchar(20) | IN | |
@REFERENCEDATE | UDT_FUZZYDATE | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@DIRECTDEBITRESULTCODE | nvarchar(10) | IN | |
@DIRECTDEBITISREJECTED | bit | IN | |
@CONSTITUENTACCOUNTID | uniqueidentifier | IN | |
@REFERENCE | nvarchar(255) | IN | |
@AUTOMATICALLYRENEWMEMBERSHIP | bit | IN | |
@CREDITCARDID | uniqueidentifier | IN | |
@CREDITCARDNUMBER | nvarchar(20) | IN | |
@CREDITCARDTOKEN | uniqueidentifier | IN | |
@CARDHOLDERNAME | nvarchar(255) | IN | |
@EXPIRESON | UDT_FUZZYDATE | IN | |
@AUTHORIZATIONCODE | nvarchar(20) | IN | |
@REJECTIONMESSAGE | nvarchar(500) | IN | |
@CREDITTYPECODEID | uniqueidentifier | IN | |
@TRANSACTIONID | uniqueidentifier | IN | |
@PARTIALCREDITCARDNUMBER | nvarchar(4) | IN | |
@DONOTACKNOWLEDGE | bit | IN | |
@TAXDEDUCTIBLEAMOUNT | money | IN | |
@LETTERCODEID | uniqueidentifier | IN | |
@TRIBUTEID | uniqueidentifier | IN | |
@DONOTRECEIPT | bit | IN | |
@COMMENTS | nvarchar(255) | IN | |
@TOTALAMOUNT | money | IN | |
@EXISTINGMEMBERS | xml | IN | |
@EXISTINGCHILDREN | xml | IN | |
@MEMBERSHIPCARDS | xml | IN | |
@MEMBERSHIPRECOGNITION | xml | IN | |
@MEMBERSHIPPROGRAMADDON | xml | IN | |
@IMPORTADDON | xml | IN | |
@CAMPAIGNS | xml | IN | |
@SOLICITORS | xml | IN | |
@RECOGNITIONS | xml | IN | |
@BENEFITS | xml | IN | |
@PERCENTAGEBENEFITS | xml | IN | |
@INSTALLMENTS | xml | IN | |
@IMPORT | bit | IN | |
@NUMBEROFCHILDREN | smallint | IN | |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN | |
@SOURCECODE | nvarchar(50) | IN | |
@MEMBERSHIPDECLINESGIFTAID | bit | IN | |
@DDISOURCECODEID | uniqueidentifier | IN | |
@DDISOURCEDATE | date | IN | |
@VENDORID | nvarchar(50) | IN | |
@MEMBERSHIPLEVELTYPECODEID | uniqueidentifier | IN | |
@CURRENTBATCHROWID | uniqueidentifier | IN | |
@BBNCTRANID | int | IN | |
@ORIGINPAGEID | int | IN | |
@ORIGINPAGE | nvarchar(100) | IN | |
@NAMECODE | tinyint | IN | |
@SIMILARADDRESSCODE | tinyint | IN | |
@UNSIMILARADDRESSCODE | tinyint | IN | |
@NEWADDRESSENDDATECODE | tinyint | IN | |
@NEWADDRESSPRIMARYCODE | tinyint | IN | |
@BIRTHDATERULECODE | tinyint | IN | |
@DIFFERENTPHONECODE | tinyint | IN | |
@NEWPHONEENDDATECODE | tinyint | IN | |
@NEWPHONEPRIMARYCODE | tinyint | IN | |
@DIFFERENTEMAILCODE | tinyint | IN | |
@NEWEMAILENDDATECODE | tinyint | IN | |
@NEWEMAILPRIMARYCODE | tinyint | IN | |
@USEGLOBALSETTINGS | bit | IN | |
@CREATEHISTORICALNAMECODE | tinyint | IN | |
@SEPAMANDATEID | uniqueidentifier | IN | |
@ADDSEPAMANDATE | bit | IN | |
@SEPAMANDATECUSTOMIDENTIFIER | nvarchar(35) | IN | |
@SEPAMANDATESIGNATUREDATE | date | IN | |
@SEPAMANDATETYPECODE | tinyint | IN | |
@REQUIRECREDITCARDPROCESSING | bit | IN | |
@PAYOTHERAMOUNT | money | IN | |
@ISGENERATEDPAYMENT | bit | IN | |
@GLREVENUECATEGORYMAPPINGID | uniqueidentifier | IN | |
@SOLICITCODES | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_BATCHMEMBERSHIPDUESBATCHROWCOMMIT
(
@ID uniqueidentifier = null output,
@VALIDATEONLY bit = 0,
@BATCHNUMBER nvarchar(100),
@CURRENTAPPUSERID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@BILLTOCONSTITUENTID uniqueidentifier = null,
@TRANSACTIONCURRENCYID uniqueidentifier = null,
@BASECURRENCYID uniqueidentifier = null,
@BASEEXCHANGERATEID uniqueidentifier = null,
@EXCHANGERATE decimal(20,8) = null,
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@POSTSTATUSCODE tinyint = 1,
@POSTDATE date = null,
@DUESTYPECODE tinyint = 0,
@MEMBERSHIPRECIPIENT uniqueidentifier = null,
@RENEWALRECIPIENT tinyint = 0,
@EFFORTID uniqueidentifier = null,
@FINDERNUMBER nvarchar(19) = null,
@APPEALID uniqueidentifier = null,
@CHANNELCODEID uniqueidentifier = null,
@DATE date = null,
@MEMBERSHIPTRANSACTIONTYPECODE tinyint = 0,
@REVENUETYPECODE tinyint = 0,
@PAYADDITIONALTONEXTINSTALLMENT bit = 0,
@PAYADDITIONALMONEYAMOUNT money = 0,
@MEMBERSHIPPROGRAMID uniqueidentifier = null,
@MEMBERSHIPLEVELID uniqueidentifier = null,
@MEMBERSHIPLEVELTERMID uniqueidentifier = null,
@MEMBERSHIPEXPIRESONDATE date = null,
@MEMBERSHIPAMOUNT money = null,
@MEMBERSHIPTRANSACTIONAMOUNT money = null,
@EXISTINGMEMBERSHIPID uniqueidentifier = null,
@MEMBERSHIPPLEDGEAMOUNT money = 0,
@CONTRIBUTORYDESIGNATIONID uniqueidentifier = null,
@USEDISCOUNTRADIO tinyint = 0,
@DISCOUNTTYPE uniqueidentifier = null,
@PROMOTIONCODE nvarchar(50) = '',
@APPLIEDDISCOUNTID uniqueidentifier = null,
@ADDDONATION bit = 0,
@DONATIONAMOUNT money = 0,
@GIVENANONYMOUSLY bit = 0,
@DONATIONOPPORTUNITYID uniqueidentifier = null,
@DONATIONDESIGNATIONID uniqueidentifier = null,
@DONATIONCATEGORYCODEID uniqueidentifier = null,
@DECLINESGIFTAID bit = 0,
@PLEDGEFREQUENCYCODE tinyint = 5,
@PLEDGENUMBEROFINSTALLMENTS int = 1,
@PLEDGESTARTDATE datetime = null,
@AUTOPAY bit = 0,
@SENDPLEDGEREMINDER bit = 1,
@CHECKDATE dbo.UDT_FUZZYDATE = '00000000',
@CHECKNUMBER nvarchar(20) = '',
@REFERENCENUMBER nvarchar(20) = '',
@REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
@PAYMENTMETHODCODE tinyint = 1,
@DIRECTDEBITRESULTCODE nvarchar(10) = '',
@DIRECTDEBITISREJECTED bit = 0,
@CONSTITUENTACCOUNTID uniqueidentifier = null,
@REFERENCE nvarchar(255) = '',
@AUTOMATICALLYRENEWMEMBERSHIP bit = 0,
@CREDITCARDID uniqueidentifier = null,
@CREDITCARDNUMBER nvarchar(20) = '',
@CREDITCARDTOKEN uniqueidentifier = null,
@CARDHOLDERNAME nvarchar(255) = '',
@EXPIRESON dbo.UDT_FUZZYDATE = '00000000',
@AUTHORIZATIONCODE nvarchar(20) = '',
@REJECTIONMESSAGE nvarchar(500) = '',
@CREDITTYPECODEID uniqueidentifier = null,
@TRANSACTIONID uniqueidentifier = null,
@PARTIALCREDITCARDNUMBER nvarchar(4) = '',
@DONOTACKNOWLEDGE bit = 0,
@TAXDEDUCTIBLEAMOUNT money = 0,
@LETTERCODEID uniqueidentifier = null,
@TRIBUTEID uniqueidentifier = null,
--@NEWEVENTREGISTRATION bit = 0,
@DONOTRECEIPT bit = 0,
@COMMENTS nvarchar(255) = '',
@TOTALAMOUNT money = 0,
@EXISTINGMEMBERS xml = null,
@EXISTINGCHILDREN xml = null,
@MEMBERSHIPCARDS xml = null,
@MEMBERSHIPRECOGNITION xml = null,
@MEMBERSHIPPROGRAMADDON xml = null,
@IMPORTADDON xml = null,
@CAMPAIGNS xml = null,
@SOLICITORS xml = null,
@RECOGNITIONS xml = null,
@BENEFITS xml = null,
@PERCENTAGEBENEFITS xml = null,
@INSTALLMENTS xml = null,
@IMPORT bit = 0,
@NUMBEROFCHILDREN smallint = 0, -- Temporary workaround for children not being implemented in 2012 Q1
@OTHERPAYMENTMETHODCODEID uniqueidentifier = null,
@SOURCECODE nvarchar(50) = '',
@MEMBERSHIPDECLINESGIFTAID bit = 0,
@DDISOURCECODEID uniqueidentifier = null,
@DDISOURCEDATE date = null,
@VENDORID nvarchar(50) = '',
@MEMBERSHIPLEVELTYPECODEID uniqueidentifier = null,
@CURRENTBATCHROWID uniqueidentifier = null,
@BBNCTRANID int = 0,
@ORIGINPAGEID int = 0,
@ORIGINPAGE nvarchar(100) = '',
@NAMECODE tinyint = 1,
@SIMILARADDRESSCODE tinyint = 3,
@UNSIMILARADDRESSCODE tinyint = 3,
@NEWADDRESSENDDATECODE tinyint = 0,
@NEWADDRESSPRIMARYCODE tinyint = 1,
@BIRTHDATERULECODE tinyint = 0,
@DIFFERENTPHONECODE tinyint = 3,
@NEWPHONEENDDATECODE tinyint = 0,
@NEWPHONEPRIMARYCODE tinyint = 1,
@DIFFERENTEMAILCODE tinyint = 3,
@NEWEMAILENDDATECODE tinyint = 0,
@NEWEMAILPRIMARYCODE tinyint = 1,
@USEGLOBALSETTINGS bit = 1,
@CREATEHISTORICALNAMECODE tinyint = 1,
@SEPAMANDATEID uniqueidentifier = null,
@ADDSEPAMANDATE bit = 0,
@SEPAMANDATECUSTOMIDENTIFIER nvarchar(35) = '',
@SEPAMANDATESIGNATUREDATE date = null,
@SEPAMANDATETYPECODE tinyint = 0,
@REQUIRECREDITCARDPROCESSING bit = 0,
@PAYOTHERAMOUNT money = null,
@ISGENERATEDPAYMENT bit = 0,
@GLREVENUECATEGORYMAPPINGID uniqueidentifier = null,
@SOLICITCODES xml = null
)
as
begin
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();
declare @RECURRINGPROGRAMTYPECODE tinyint = 1;
declare @MEMBERSHIPPROGRAMTYPECODE tinyint;
select @MEMBERSHIPPROGRAMTYPECODE = PROGRAMTYPECODE
from dbo.MEMBERSHIPPROGRAM
where ID = @MEMBERSHIPPROGRAMID;
begin try
/*Because of the way this batch in particular works, the findernumber parameter is a string instead of bigint, so we need to do some extra validation and casting.*/
if len(isnull(@FINDERNUMBER, '')) = 0
set @FINDERNUMBER = 0;
if @REVENUETYPECODE = 3
set @MEMBERSHIPTRANSACTIONAMOUNT = @PAYOTHERAMOUNT
if @REVENUETYPECODE = 3 and @MEMBERSHIPTRANSACTIONAMOUNT <= 0
raiserror('BBERR_INVALIDPAYOTHERAMOUNT', 13, 1);
-- Write Validation logic here.
if @PDACCOUNTSYSTEMID is null
set @PDACCOUNTSYSTEMID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID)
--Set currency parameters for backwards compatibility
if @TRANSACTIONCURRENCYID is null
set @TRANSACTIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
-- Ensure that we can add a payment of this transaction currency to the account system.
if not exists(
select 1
from dbo.CURRENCYSETTRANSACTIONCURRENCY
inner join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSETTRANSACTIONCURRENCY.CURRENCYSETID
where
PDACCOUNTSYSTEM.ID = @PDACCOUNTSYSTEMID and
CURRENCYSETTRANSACTIONCURRENCY.CURRENCYID = @TRANSACTIONCURRENCYID
)
raiserror('TRANSACTIONCURRENCYINVALIDFORACCOUNTSYSTEM',13,1)
if exists (
select * from dbo.MEMBERSHIPTRANSACTION
where
MEMBERSHIPID = @EXISTINGMEMBERSHIPID and
cast(TRANSACTIONDATE as date) > @DATE
)
raiserror('Transaction date cannot be earlier than the last transaction of the membership.', 13,1);
declare @BATCHID uniqueidentifier;
select
@BATCHID = [BATCH].[ID]
from dbo.[BATCH]
inner join dbo.[BATCHMEMBERSHIPDUES] on [BATCH].[ID] = [BATCHMEMBERSHIPDUES].[BATCHID]
where [BATCHMEMBERSHIPDUES].[ID] = @CURRENTBATCHROWID;
if @BBNCTRANID > 0
begin
declare @TEMPSOURCECODE nvarchar(50) = @SOURCECODE;
declare @TEMPMAILINGID uniqueidentifier = @EFFORTID;
declare @TEMPAPPEALID uniqueidentifier = @APPEALID;
declare @TEMPCONSTITUENTID uniqueidentifier = @BILLTOCONSTITUENTID;
exec dbo.[USP_REVENUEBATCH_GETMARKETINGDATA]
@FINDERNUMBER = @FINDERNUMBER,
@CHANGEAGENTID = @CHANGEAGENTID,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@SOURCECODE = @TEMPSOURCECODE output,
@MAILINGID = @TEMPMAILINGID output,
@APPEALID = @TEMPAPPEALID output,
@CONSTITUENTID = @TEMPCONSTITUENTID output,
@BATCHID = @BATCHID,
@IMPORT = @IMPORT;
if @TEMPCONSTITUENTID <> @BILLTOCONSTITUENTID
set @FINDERNUMBER = 0;
end
/* Validate all marketing data and dependent fields */
exec dbo.[USP_REVENUEBATCH_VALIDATEMARKETINGDATA]
@FINDERNUMBER = @FINDERNUMBER,
@SOURCECODE = @SOURCECODE,
@MAILINGID = @EFFORTID,
@APPEALID = @APPEALID,
@CONSTITUENTID = @BILLTOCONSTITUENTID,
@BATCHID = @BATCHID;
if @PAYMENTMETHODCODE = 10 and @OTHERPAYMENTMETHODCODEID is null --Other
begin
raiserror('BBERR_OTHERPAYMENTMETHOD', 13, 1);
end
declare @CONSTITUENTID uniqueidentifier;
declare @BILLTOCONSTITUENTEXISTS bit = 0
if exists (select ID from dbo.CONSTITUENT where ID = @BILLTOCONSTITUENTID)
set @BILLTOCONSTITUENTEXISTS = 1
declare @MEMBERSHIPRECIPIENTEXISTS bit = 0
if exists (select ID from dbo.CONSTITUENT where ID = @MEMBERSHIPRECIPIENT)
set @MEMBERSHIPRECIPIENTEXISTS = 1
declare @BATCHOWNERID uniqueidentifier
select
@BATCHOWNERID = APPUSERID
from dbo.BATCH
inner join dbo.BATCHMEMBERSHIPDUES on BATCH.ID = BATCHMEMBERSHIPDUES.BATCHID
where BATCHMEMBERSHIPDUES.ID = @CURRENTBATCHROWID
-- Validate constituent fields if the constituent hasn't been created yet
if @BILLTOCONSTITUENTEXISTS = 0
exec dbo.USP_REVENUEBATCH_VALIDATENEWCONSTITUENT
@REVENUEBATCHCONSTITUENTID = @BILLTOCONSTITUENTID,
@ISDONOR = 1,
@BATCHROWID = @CURRENTBATCHROWID,
@BATCHOWNERID = @BATCHOWNERID
if @MEMBERSHIPRECIPIENTEXISTS = 0 and @MEMBERSHIPRECIPIENT is not null
exec dbo.USP_REVENUEBATCH_VALIDATENEWCONSTITUENT
@REVENUEBATCHCONSTITUENTID = @MEMBERSHIPRECIPIENT,
@ISDONOR = 1,
@BATCHROWID = @CURRENTBATCHROWID,
@BATCHOWNERID = @BATCHOWNERID
select @CONSTITUENTID =
case @DUESTYPECODE
when 0 then @BILLTOCONSTITUENTID
else @MEMBERSHIPRECIPIENT
end;
if @VALIDATEONLY = 1
begin
--When validating the fields below could be updated by automatch, we have to re-pull them from the row since the values sent in by the validate could be out of date
if @CURRENTBATCHROWID is not null
begin
select
@MEMBERSHIPTRANSACTIONTYPECODE = MEMBERSHIPTRANSACTIONTYPECODE,
@MEMBERSHIPEXPIRESONDATE = MEMBERSHIPEXPIRESONDATE,
@EXISTINGMEMBERSHIPID = EXISTINGMEMBERSHIPID
from dbo.BATCHMEMBERSHIPDUES
where BATCHMEMBERSHIPDUES.ID = @CURRENTBATCHROWID
end
end
if @BBNCTRANID > 0
begin
if @EXISTINGMEMBERSHIPID is not null
begin
-- Adjust benefits
declare @REMOVEBENEFITID uniqueidentifier
declare benefits cursor fast_forward for
select BENEFITID
from dbo.MEMBERSHIPLEVELBENEFIT
where MEMBERSHIPLEVELID = @MEMBERSHIPLEVELID and FREQUENCYCODE = 1
open benefits
fetch next from benefits into @REMOVEBENEFITID
while @@FETCH_STATUS = 0
begin
if @BENEFITS is not null
set @BENEFITS.modify('delete /BENEFITS/ITEM[upper-case(BENEFITID[1]) = upper-case(sql:variable("@REMOVEBENEFITID"))]');
if @PERCENTAGEBENEFITS is not null
set @PERCENTAGEBENEFITS.modify('delete /PERCENTAGEBENEFITS/ITEM[upper-case(BENEFITID[1]) = upper-case(sql:variable("@REMOVEBENEFITID"))]');
fetch next from benefits into @REMOVEBENEFITID
end
close benefits
deallocate benefits
end
end
if @DIRECTDEBITISREJECTED is null
set @DIRECTDEBITISREJECTED = 0;
if @DIRECTDEBITISREJECTED = 1
raiserror('BBERR_DIRECTDEBIT_REJECTED', 13, 1);
-- Adding or renewing or upgrading
if (@MEMBERSHIPTRANSACTIONTYPECODE = 0 or @MEMBERSHIPTRANSACTIONTYPECODE = 1 or @MEMBERSHIPTRANSACTIONTYPECODE = 3)
begin
declare @COMMITONLYCHECK bit = ~@VALIDATEONLY
exec dbo.USP_MEMBERSHIPDUESBATCH_VALIDATE_ADDRENEWPROGRAM
@CURRENTAPPUSERID,
null,
null,
@MEMBERSHIPTRANSACTIONTYPECODE,
@DATE,
@MEMBERSHIPEXPIRESONDATE,
@MEMBERSHIPPROGRAMID,
@MEMBERSHIPLEVELID,
@MEMBERSHIPLEVELTERMID,
@CONSTITUENTID,
@REVENUETYPECODE,
@EXISTINGMEMBERSHIPID,
@MEMBERSHIPPROGRAMADDON,
@EXISTINGMEMBERS,
@MEMBERSHIPCARDS,
@EXISTINGCHILDREN,
@NUMBEROFCHILDREN, -- Temporary workaround for children not being implemented in 2012 Q1
@IMPORTADDON,
@IMPORT,
@COMMITONLYCHECK
-- Creating an installment plan
if @REVENUETYPECODE > 0 and @MEMBERSHIPPROGRAMTYPECODE <> @RECURRINGPROGRAMTYPECODE
exec dbo.USP_MEMBERSHIPDUESBATCH_VALIDATE_PLEDGE @DATE, @MEMBERSHIPPLEDGEAMOUNT, @PLEDGEFREQUENCYCODE, @PLEDGESTARTDATE, @PLEDGENUMBEROFINSTALLMENTS, @INSTALLMENTS;
end
else
exec dbo.USP_MEMBERSHIPDUESBATCH_VALIDATE_PAYPLEDGEDMEMBERSHIP
@MEMBERSHIPTRANSACTIONTYPECODE,
@DATE,
@MEMBERSHIPEXPIRESONDATE,
@MEMBERSHIPPROGRAMID,
@MEMBERSHIPLEVELID,
@MEMBERSHIPLEVELTERMID,
@CONSTITUENTID,
@REVENUETYPECODE,
@EXISTINGMEMBERSHIPID,
@MEMBERSHIPPROGRAMADDON,
@EXISTINGMEMBERS,
@MEMBERSHIPCARDS,
@EXISTINGCHILDREN,
@NUMBEROFCHILDREN; -- Temporary workaround for children not being implemented in 2012 Q1
declare @PLEDGEID uniqueidentifier = dbo.UFN_MEMBERSHIP_GETPLEDGE(@EXISTINGMEMBERSHIPID);
update dbo.REVENUESCHEDULE
set ISPENDING = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from dbo.REVENUESCHEDULE
where REVENUESCHEDULE.ID = @PLEDGEID;
-- only check if there is actually a payment.
-- We don't care if you're only creating a installment plan/recurring...if you include an additional donation or addon(recurring gift only) you could still be charging a card.
if @PAYMENTMETHODCODE = 2 and @TOTALAMOUNT > 0
begin
if @VALIDATEONLY = 0
begin
--If attempting to pay by credit card with the intent to process (token is not null), ensure an authorization code exists.
--This prevents a batch of credit card payments from being committed without the process running.
if @CREDITCARDTOKEN is not null and len(@AUTHORIZATIONCODE) = 0
begin
raiserror('BBERR_CREDITCARD_NOTPROCESSED', 13, 1);
end
end
--If REQUIRECREDITCARDPROCESSING is true and we don't have a token then the only way we want this batch to commit is if the user enters an authorization code.
if @CREDITCARDTOKEN is null and len(@AUTHORIZATIONCODE) = 0 and @REQUIRECREDITCARDPROCESSING = 1
begin
raiserror('BBERR_CREDITCARD_MISSINGTOKEN', 13, 1);
end
end
if @VALIDATEONLY = 1
exec dbo.USP_MEMBERSHIPDUESBATCH_VALIDATE_SOLICITCODES @SOLICITCODES;
if @VALIDATEONLY = 0
begin
-- Temporarily de-XML some collections
declare @TEMP_EXISTINGMEMBERS table
(
CONSTITUENTID uniqueidentifier,
RELATIONTOPRIMARY nvarchar(100),
LOOKUPID nvarchar(50)
)
insert into @TEMP_EXISTINGMEMBERS
select
T.c.value('(CONSTITUENTID)[1]','uniqueidentifier'),
T.c.value('(RELATIONTOPRIMARY)[1]','nvarchar(100)'),
T.c.value('(LOOKUPID)[1]','nvarchar(50)')
from @EXISTINGMEMBERS.nodes('/EXISTINGMEMBERS/ITEM') T(c)
declare @TEMP_MEMBERSHIPCARDS table
(
CONSTITUENTID uniqueidentifier,
NAMEONCARD nvarchar(100),
EXPIRATIONDATE date
)
insert into @TEMP_MEMBERSHIPCARDS
select
T.c.value('(CONSTITUENTID)[1]','uniqueidentifier'),
T.c.value('(NAMEONCARD)[1]','nvarchar(100)'),
T.c.value('(EXPIRATIONDATE)[1]','date')
from @MEMBERSHIPCARDS.nodes('/MEMBERSHIPCARDS/ITEM') T(c)
declare @IDMAPPING xml = null
declare @BATCHCONSTITID uniqueidentifier
declare @RECOGNITIONSTOPASS xml
if @BILLTOCONSTITUENTEXISTS = 0
begin
set @BATCHCONSTITID = @BILLTOCONSTITUENTID;
if exists (select 1 from dbo.UFN_REVENUEBATCH_GETRECOGNITIONS_FROMITEMLISTXML(@RECOGNITIONS) for xml raw('ITEM'), type, elements, root('RECOGNITIONS'), binary base64)
set @RECOGNITIONSTOPASS = @RECOGNITIONS
else
set @RECOGNITIONSTOPASS = null
-- Add new constituent
exec dbo.USP_REVENUEBATCH_CONSTITUENT_ADD
@BILLTOCONSTITUENTID output,
@CHANGEAGENTID,
@BATCHCONSTITID,
@CONSTITUENTACCOUNTID,
@CONSTITUENTACCOUNTID output,
@CURRENTRECOGNITIONS = @RECOGNITIONSTOPASS,
@UPDATEDRECOGNITIONS = @RECOGNITIONS output,
@UPDATEDAPPLICATIONRECOGNITIONS = @RECOGNITIONS output,
@IDMAPPING = @IDMAPPING output;
if @IDMAPPING is not null
begin
update @TEMP_EXISTINGMEMBERS
set CONSTITUENTID = T.c.value('(CONSTITUENTID)[1]','uniqueidentifier')
from @IDMAPPING.nodes('/IDMAPPING/ITEM') T(c)
where CONSTITUENTID = T.c.value('(REVENUEBATCHCONSTITUENTID)[1]','uniqueidentifier')
update @TEMP_MEMBERSHIPCARDS
set CONSTITUENTID = T.c.value('(CONSTITUENTID)[1]','uniqueidentifier')
from @IDMAPPING.nodes('/IDMAPPING/ITEM') T(c)
where CONSTITUENTID = T.c.value('(REVENUEBATCHCONSTITUENTID)[1]','uniqueidentifier')
end
if @FINDERNUMBER > 0
exec dbo.USP_REVENUEBATCH_CONSTITUENTAPPEAL_ADD
@CONSTITUENTID,
@CHANGEAGENTID,
@BATCHCONSTITID,
@FINDERNUMBER;
--delete the temporary batch version of the constituent
exec dbo.USP_REVENUEBATCH_CONSTITUENT_DELETE
@BATCHREVENUECONSTITUENTID = @BATCHCONSTITID,
@CHANGEAGENTID = @CHANGEAGENTID
end
else
begin
-- Apply edits to an existing constituent
if exists (select 'x' from dbo.BATCHCONSTITUENTUPDATE where ID = @CURRENTBATCHROWID)
begin
declare
@CONSTITUENTTYPECODE tinyint,
@LASTNAME nvarchar(100),
@ORGANIZATIONNAME nvarchar(100),
@FIRSTNAME nvarchar(50),
@MIDDLENAME nvarchar(50),
@MAIDENNAME nvarchar(100),
@NICKNAME nvarchar(50),
@TITLECODEID uniqueidentifier,
@SUFFIXCODEID uniqueidentifier,
@GENDERCODE tinyint,
@BIRTHDATE dbo.UDT_FUZZYDATE,
@GIVESANONYMOUSLY bit,
@WEBADDRESS dbo.UDT_WEBADDRESS,
@ADDRESSES xml,
@PHONES xml,
@EMAILADDRESSES xml,
@GROUP_DESCRIPTION nvarchar(300),
@GROUP_GROUPTYPEID uniqueidentifier,
@GROUP_STARTDATE datetime,
@INDUSTRYCODEID uniqueidentifier,
@NUMEMPLOYEES int,
@NUMSUBSIDIARIES int,
@PARENTCORPID uniqueidentifier,
@MARITALSTATUSCODEID uniqueidentifier,
@LOOKUPID nvarchar(100),
@ALTERNATELOOKUPIDS xml,
@SECURITYATTRIBUTES xml,
@DECEASED bit,
@DECEASEDDATE dbo.UDT_FUZZYDATE,
@INTERESTS xml,
@PROSPECTMANAGERFUNDRAISERID uniqueidentifier,
@CONSTITUENCIES xml,
@CONSTITUENT_SITES xml,
-- BBIS fields
@BBISCONSTITUENT_SITES xml,
@BBISSECURITYATTRIBUTES xml,
@BBISCONSTITUENCIES xml,
--spouse and business fields
@SPOUSEID uniqueidentifier,
@SPOUSE_LASTNAME nvarchar(100),
@SPOUSE_FIRSTNAME nvarchar(50),
@SPOUSE_MIDDLENAME nvarchar(50),
@SPOUSE_MAIDENNAME nvarchar(100),
@SPOUSE_NICKNAME nvarchar(50),
@SPOUSE_TITLECODEID uniqueidentifier,
@SPOUSE_SUFFIXCODEID uniqueidentifier,
@SPOUSE_GENDERCODE tinyint,
@SPOUSE_BIRTHDATE dbo.UDT_FUZZYDATE,
@SPOUSE_RECIPROCALTYPECODEID uniqueidentifier,
@SPOUSE_RELATIONSHIPTYPECODEID uniqueidentifier,
@BUSINESSID uniqueidentifier,
@BUSINESS_ADDRESSBLOCK nvarchar(150),
@BUSINESS_ADDRESSTYPECODEID uniqueidentifier,
@BUSINESS_CART nvarchar(10),
@BUSINESS_CITY nvarchar(50),
@BUSINESS_COUNTRYID uniqueidentifier,
@BUSINESS_DONOTMAIL bit,
@BUSINESS_DONOTMAILREASONCODEID uniqueidentifier,
@BUSINESS_DPC nvarchar(8),
@BUSINESS_LOT nvarchar(5),
@BUSINESS_NAME nvarchar(100),
@BUSINESS_NUMBER nvarchar(100),
@BUSINESS_PHONETYPECODEID uniqueidentifier,
@BUSINESS_RELATIONSHIPTYPECODEID uniqueidentifier,
@BUSINESS_RECIPROCALTYPECODEID uniqueidentifier,
@BUSINESS_STATEID uniqueidentifier,
@BUSINESS_POSTCODE nvarchar(12),
@REMOVESPOUSE bit,
@SPOUSE_LOOKUPID nvarchar(100),
@SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS bit,
@SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR decimal(5,2),
@SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit,
@SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR decimal(5,2),
@SPOUSE_PRIMARYRECOGNITIONTYPECODEID uniqueidentifier,
@SPOUSE_RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier,
@REQUESTSNOEMAIL bit,
@GENDERCODEID uniqueidentifier,
@SPOUSE_GENDERCODEID uniqueidentifier
exec dbo.USP_EDITLOAD_BATCHCONSTITUENTUPDATEBATCHROW
@CURRENTBATCHROWID,
null, --@DATALOADED output,
null, --@TSLONG output,
null, --@SEQUENCE
null, --@PRIMARYRECORDID
@CONSTITUENTTYPECODE output,
@BIRTHDATE output,
@FIRSTNAME output,
@GENDERCODE output,
@GIVESANONYMOUSLY output,
@LASTNAME output,
null, --@LOOKUP_ID
@MAIDENNAME output,
@MIDDLENAME output,
@NICKNAME output,
@SUFFIXCODEID output,
@TITLECODEID output,
@WEBADDRESS output,
null, --@ALTERNATELOOKUPIDS
@BBISSECURITYATTRIBUTES output,
null, --@DECEASED
null, --@DECEASEDDATE
null, --@CONSTITUENT_SITEID
null, --@INTERESTS
null, --@PROSPECTMANAGERFUNDRAISERID
@ADDRESSES output,
@PHONES output,
@EMAILADDRESSES output,
@BBISCONSTITUENCIES output,
@GROUP_GROUPTYPEID output,
@GROUP_DESCRIPTION output,
@GROUP_STARTDATE output,
@INDUSTRYCODEID output,
@NUMEMPLOYEES output,
@NUMSUBSIDIARIES output,
@PARENTCORPID output,
@MARITALSTATUSCODEID output,
@SPOUSEID output,
@SPOUSE_TITLECODEID output,
@SPOUSE_FIRSTNAME output,
@SPOUSE_NICKNAME output,
@SPOUSE_MIDDLENAME output,
@SPOUSE_MAIDENNAME output,
@SPOUSE_LASTNAME output,
@SPOUSE_SUFFIXCODEID output,
@SPOUSE_BIRTHDATE output,
@SPOUSE_GENDERCODE output,
@SPOUSE_LOOKUPID output,
@SPOUSE_RELATIONSHIPTYPECODEID output,
@SPOUSE_RECIPROCALTYPECODEID output,
@BUSINESSID output,
@BUSINESS_ADDRESSBLOCK output,
@BUSINESS_ADDRESSTYPECODEID output,
@BUSINESS_CART output,
@BUSINESS_CITY output,
@BUSINESS_COUNTRYID output,
@BUSINESS_DONOTMAIL output,
@BUSINESS_DONOTMAILREASONCODEID output,
@BUSINESS_DPC output,
null, --@BUSINESS_EMAILADDRESS
null, --@BUSINESS_EMAILADDRESSTYPECODEID
null, --@BUSINESS_INDUSTRYCODEID
null, --@BUSINESS_LOOKUPID
@BUSINESS_LOT output,
@BUSINESS_NAME output,
null, --@BUSINESS_NUMEMPLOYEES
null, --@BUSINESS_NUMSUBSIDIARIES
null, --@BUSINESS_PARENTCORPID
@BUSINESS_NUMBER output,
null, --@BUSINESS_PHONE_COUNTRYID
@BUSINESS_PHONETYPECODEID output,
@BUSINESS_RELATIONSHIPTYPECODEID output,
@BUSINESS_RECIPROCALTYPECODEID output,
@BUSINESS_STATEID output,
null, --@BUSINESS_WEBADDRESS
@BUSINESS_POSTCODE output,
null, --@SPOUSE_RELATIONSHIPTYPECODEIDSIMPLELIST
null, --@SPOUSE_RECIPROCALTYPECODEIDSIMPLELIST
null, --@BUSINESS_RELATIONSHIPTYPECODEIDSIMPLELIST
null, --@BUSINESS_RECIPROCALTYPECODEIDSIMPLELIST
null, --@BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS
null, --@BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR
null, --@BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS
null, --@BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR
null, --@BUSINESS_PRIMARYRECOGNITIONTYPECODEID
null, --@BUSINESS_RECIPROCALRECOGNITIONTYPECODEID
null, --@BUSINESS_EMAILADDRESSSTARTDATE
null, --@SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS
null, --@SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR
null, --@SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS
null, --@SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR
null, --@SPOUSE_PRIMARYRECOGNITIONTYPECODEID
null, --@SPOUSE_RECIPROCALRECOGNITIONTYPECODEID
@BBISCONSTITUENT_SITES output,
null, --@SPOUSE_ALTERNATELOOKUPIDS
null, --@SPOUSE_IMPORTLOOKUPID
null, --@ROWFROMBATCHUI
null, --@BBNCTRANID
null, --@PAGEID
null, --@PAGENAME
null, --@BBNCUSERID
@REMOVESPOUSE output,
null, --@DUPLICATERECORDID
null, --@SOCIALMEDIAACCOUNTS
null, --@DOMANUALREVIEWFORAUTOMATCH
null, --@RELATIONSHIPS
null, --@NETCOMMUNITYTRANSACTIONPROCESSORID
null, --@BBNCID
null, --@NAMECODE
null, --@SIMILARADDRESSCODE
null, --@UNSIMILARADDRESSCODE
null, --@NEWADDRESSENDDATECODE
null, --@NEWADDRESSPRIMARYCODE
null, --@BIRTHDATERULECODE
null, --@DIFFERENTPHONECODE
null, --@NEWPHONEENDDATECODE
null, --@NEWPHONEPRIMARYCODE
null, --@DIFFERENTEMAILCODE
null, --@NEWEMAILENDDATECODE
null, --@NEWEMAILPRIMARYCODE
null, --@USEGLOBALSETTINGS
null, --@CREATEHISTORICALNAMECODE
null, --@NAMEFORMATS
null, --@SUBMITTEDLOOKUPID
null, --@SUBMITTEDCLASSYEAR
null, --@SUBMITTEDEDUCATIONALINSTITUTION
@REQUESTSNOEMAIL output,
null, --@ORIGINAL_KEYNAME
null, --@ORIGINAL_FIRSTNAME
@SOLICITCODES output,
@GENDERCODEID output,
@SPOUSE_GENDERCODEID output;
-- Pull in fields not handled by the ERB constituent edit form so they don't get overwritten by CUB commit.
exec dbo.USP_DATAFORMTEMPLATE_EDITLOAD_CONSTITUENTUPDATEBATCHTEMPLATE
@CONSTITUENTID,
@LOOKUPID = @LOOKUPID output,
@ALTERNATELOOKUPIDS = @ALTERNATELOOKUPIDS output,
@SECURITYATTRIBUTES = @SECURITYATTRIBUTES output,
@DECEASED = @DECEASED output,
@DECEASEDDATE = @DECEASEDDATE output,
@INTERESTS = @INTERESTS output,
@PROSPECTMANAGERFUNDRAISERID = @PROSPECTMANAGERFUNDRAISERID output,
@CONSTITUENCIES = @CONSTITUENCIES output,
@CONSTITUENT_SITES = @CONSTITUENT_SITES output,
@SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS =@SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS output,
@SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR=@SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR output,
@SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS=@SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS output,
@SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR=@SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR output,
@SPOUSE_PRIMARYRECOGNITIONTYPECODEID=@SPOUSE_PRIMARYRECOGNITIONTYPECODEID output,
@SPOUSE_RECIPROCALRECOGNITIONTYPECODEID=@SPOUSE_RECIPROCALRECOGNITIONTYPECODEID output
-- add the bbis values to the constituency, sited and security attributes collections
set @CONSTITUENT_SITES = (select * from
(select SITEID
from dbo.UFN_BATCHCONSTITUENTUPDATE_GETSITES_FROMITEMLISTXML(@CONSTITUENT_SITES)
union
select SITEID
from dbo.UFN_BATCHCONSTITUENTUPDATE_GETSITES_FROMITEMLISTXML(@BBISCONSTITUENT_SITES)
where SITEID not in (select SITEID from dbo.UFN_BATCHCONSTITUENTUPDATE_GETSITES_FROMITEMLISTXML(@CONSTITUENT_SITES))) A
for xml raw('ITEM'),type,elements,root('CONSTITUENT_SITES'),BINARY BASE64
)
set @CONSTITUENT_SITES = (select * from
(select SITEID
from dbo.UFN_BATCHCONSTITUENTUPDATE_GETSITES_FROMITEMLISTXML(@CONSTITUENT_SITES)
union
select SITEID
from dbo.UFN_BATCHCONSTITUENTUPDATE_GETSITES_FROMITEMLISTXML(@BBISCONSTITUENT_SITES)
where SITEID not in (select SITEID from dbo.UFN_BATCHCONSTITUENTUPDATE_GETSITES_FROMITEMLISTXML(@CONSTITUENT_SITES))) A
for xml raw('ITEM'),type,elements,root('CONSTITUENT_SITES'),BINARY BASE64
)
set @SECURITYATTRIBUTES = (select * from
(select CONSTIT_SECURITY_ATTRIBUTEID
from dbo.UFN_BATCHCONSTITUENTUPDATE_GETSECURITYATTRIBUTES_FROMITEMLISTXML(@SECURITYATTRIBUTES)
union
select CONSTIT_SECURITY_ATTRIBUTEID
from dbo.UFN_BATCHCONSTITUENTUPDATE_GETSECURITYATTRIBUTES_FROMITEMLISTXML(@BBISSECURITYATTRIBUTES)
where CONSTIT_SECURITY_ATTRIBUTEID not in (select CONSTIT_SECURITY_ATTRIBUTEID from dbo.UFN_BATCHCONSTITUENTUPDATE_GETSECURITYATTRIBUTES_FROMITEMLISTXML(@SECURITYATTRIBUTES))) A
for xml raw('ITEM'),type,elements,root('SECURITYATTRIBUTES'),BINARY BASE64
)
set @CONSTITUENCIES = (select * from
(select CONSTITUENCYCODEID,
DATEFROM,
DATETO,
ORIGINALCONSTITUENCYID
from dbo.UFN_BATCHCONSTITUENTUPDATE_GETCONSTITUENCIES_FROMITEMLISTXML(@CONSTITUENCIES)
union
select CONSTITUENCYCODEID,
DATEFROM,
DATETO,
ORIGINALCONSTITUENCYID
from dbo.UFN_BATCHCONSTITUENTUPDATE_GETCONSTITUENCIES_FROMITEMLISTXML(@BBISCONSTITUENCIES)
where CONSTITUENCYCODEID not in (select CONSTITUENCYCODEID from dbo.UFN_BATCHCONSTITUENTUPDATE_GETCONSTITUENCIES_FROMITEMLISTXML(@CONSTITUENCIES))) A
for xml raw('ITEM'),type,elements,root('CONSTITUENCIES'),BINARY BASE64
)
exec dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTUPDATEBATCHTEMPLATE_15
@ID = @CONSTITUENTID,
@CHANGEAGENTID = @CHANGEAGENTID,
@VALIDATEONLY = @VALIDATEONLY,
@CONSTITUENTTYPECODE = @CONSTITUENTTYPECODE,
@BIRTHDATE = @BIRTHDATE,
@FIRSTNAME = @FIRSTNAME,
@GENDERCODE = @GENDERCODE,
@GIVESANONYMOUSLY = @GIVESANONYMOUSLY,
@KEYNAME = @LASTNAME,
@LOOKUPID = @LOOKUPID,
@MAIDENNAME = @MAIDENNAME,
@MIDDLENAME = @MIDDLENAME,
@NICKNAME = @NICKNAME,
@SUFFIXCODEID = @SUFFIXCODEID,
@TITLECODEID = @TITLECODEID,
@WEBADDRESS = @WEBADDRESS,
@ALTERNATELOOKUPIDS = @ALTERNATELOOKUPIDS,
@SECURITYATTRIBUTES = @SECURITYATTRIBUTES,
@DECEASED = @DECEASED,
@DECEASEDDATE = @DECEASEDDATE,
@CONSTITUENT_SITEID = null,
@INTERESTS = @INTERESTS,
@PROSPECTMANAGERFUNDRAISERID = @PROSPECTMANAGERFUNDRAISERID,
@ADDRESSES = @ADDRESSES,
@EMAILADDRESSES = @EMAILADDRESSES,
@PHONES = @PHONES,
@CONSTITUENCIES = @CONSTITUENCIES,
@GROUPTYPEID = @GROUP_GROUPTYPEID,
@GROUPDESCRIPTION = @GROUP_DESCRIPTION,
@GROUPSTARTDATE = @GROUP_STARTDATE,
@ORG_INDUSTRYCODEID = @INDUSTRYCODEID,
@ORG_NUMEMPLOYEES = @NUMEMPLOYEES,
@ORG_NUMSUBSIDIARIES = @NUMSUBSIDIARIES,
@ORG_PARENTCORPID = @PARENTCORPID,
@MARITALSTATUSCODEID = @MARITALSTATUSCODEID,
@SPOUSE_ID = @SPOUSEID,
@SPOUSE_BIRTHDATE = @SPOUSE_BIRTHDATE,
@SPOUSE_FIRSTNAME = @SPOUSE_FIRSTNAME,
@SPOUSE_GENDERCODE = @SPOUSE_GENDERCODE,
@SPOUSE_LASTNAME = @SPOUSE_LASTNAME,
@SPOUSE_LOOKUPID = @SPOUSE_LOOKUPID,
@SPOUSE_MAIDENNAME = @SPOUSE_MAIDENNAME,
@SPOUSE_MIDDLENAME = @SPOUSE_MIDDLENAME,
@SPOUSE_NICKNAME = @SPOUSE_NICKNAME,
@SPOUSE_SUFFIXCODEID = @SPOUSE_SUFFIXCODEID,
@SPOUSE_TITLECODEID = @SPOUSE_TITLECODEID,
@SPOUSE_RELATIONSHIPTYPECODEID = @SPOUSE_RELATIONSHIPTYPECODEID,
@SPOUSE_RECIPROCALTYPECODEID = @SPOUSE_RECIPROCALTYPECODEID,
@BUSINESS_ADDRESSBLOCK = @BUSINESS_ADDRESSBLOCK,
@BUSINESS_ADDRESSTYPECODEID = @BUSINESS_ADDRESSTYPECODEID,
@BUSINESS_CART = @BUSINESS_CART,
@BUSINESS_CITY = @BUSINESS_CITY,
@BUSINESS_COUNTRYID = @BUSINESS_COUNTRYID,
@BUSINESS_DONOTMAIL = @BUSINESS_DONOTMAIL,
@BUSINESS_DONOTMAILREASONCODEID = @BUSINESS_DONOTMAILREASONCODEID,
@BUSINESS_DPC = @BUSINESS_DPC,
@BUSINESS_EMAILADDRESS = null,
@BUSINESS_EMAILADDRESSTYPECODEID = null,
@BUSINESS_INDUSTRYCODEID = null,
@BUSINESS_LOOKUPID = null,
@BUSINESS_LOT = @BUSINESS_LOT,
@BUSINESS_ID = @BUSINESSID,
@BUSINESS_NAME = @BUSINESS_NAME,
@BUSINESS_NUMEMPLOYEES = null,
@BUSINESS_NUMSUBSIDIARIES = null,
@BUSINESS_PARENTCORPID = null,
@BUSINESS_PHONENUMBER = @BUSINESS_NUMBER,
@BUSINESS_PHONE_COUNTRYID = null,
@BUSINESS_PHONETYPECODEID = @BUSINESS_PHONETYPECODEID,
@BUSINESS_RELATIONSHIPTYPECODEID = @BUSINESS_RELATIONSHIPTYPECODEID,
@BUSINESS_RECIPROCALTYPECODEID = @BUSINESS_RECIPROCALTYPECODEID,
@BUSINESS_STATEID = @BUSINESS_STATEID,
@BUSINESS_WEBADDRESS = null,
@BUSINESS_POSTCODE = @BUSINESS_POSTCODE,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@SPOUSE_RELATIONSHIPTYPECODEIDSIMPLELIST = @SPOUSE_RELATIONSHIPTYPECODEID,
@SPOUSE_RECIPROCALTYPECODEIDSIMPLELIST = @SPOUSE_RECIPROCALTYPECODEID,
@BUSINESS_RELATIONSHIPTYPECODEIDSIMPLELIST = @BUSINESS_RELATIONSHIPTYPECODEID,
@BUSINESS_RECIPROCALTYPECODEIDSIMPLELIST = @BUSINESS_RECIPROCALTYPECODEID,
@BUSINESS_PRIMARYSOFTCREDITRELATIONSHIPEXISTS = null,
@BUSINESS_PRIMARYSOFTCREDITMATCHFACTOR = null,
@BUSINESS_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = null,
@BUSINESS_RECIPROCALSOFTCREDITMATCHFACTOR = null,
@BUSINESS_PRIMARYRECOGNITIONTYPECODEID = null,
@BUSINESS_RECIPROCALRECOGNITIONTYPECODEID = null,
@BUSINESS_EMAILADDRESSSTARTDATE = null,
@SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS = @SPOUSE_PRIMARYSOFTCREDITRELATIONSHIPEXISTS,
@SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR = @SPOUSE_PRIMARYSOFTCREDITMATCHFACTOR,
@SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = @SPOUSE_RECIPROCALSOFTCREDITRELATIONSHIPEXISTS,
@SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR = @SPOUSE_RECIPROCALSOFTCREDITMATCHFACTOR,
@SPOUSE_PRIMARYRECOGNITIONTYPECODEID = @SPOUSE_PRIMARYRECOGNITIONTYPECODEID,
@SPOUSE_RECIPROCALRECOGNITIONTYPECODEID = @SPOUSE_RECIPROCALRECOGNITIONTYPECODEID,
@CONSTITUENT_SITES = @CONSTITUENT_SITES,
@BATCHOWNERID = @BATCHOWNERID,
@BATCHROWID = null,
@SPOUSE_ALTERNATELOOKUPIDS = null,
@SPOUSE_IMPORTLOOKUPID = null,
@ROWFROMBATCHUI = null,
@BBNCTRANID = null,
@REMOVESPOUSE = @REMOVESPOUSE,
@SOCIALMEDIAACCOUNTS = null,
@RELATIONSHIPS = null,
@NETCOMMUNITYTRANSACTIONPROCESSORID = null,
@NEWADDRESSENDDATECODE = @NEWADDRESSENDDATECODE,
@CREATEHISTORICALNAMECODE = @CREATEHISTORICALNAMECODE,
@NEWPHONEENDDATECODE = @NEWPHONEENDDATECODE,
@NEWEMAILENDDATECODE = @NEWEMAILENDDATECODE,
@NAMEFORMATS = null,
@REQUESTSNOEMAIL = @REQUESTSNOEMAIL,
@SOLICITCODES = @SOLICITCODES,
@GENDERCODEID = @GENDERCODEID,
@SPOUSE_GENDERCODEID = @SPOUSE_GENDERCODEID
end
end
if (
select
count(ID)
from
dbo.CONSTITUENTACCOUNT
where
CONSTITUENTACCOUNT.ID = @CONSTITUENTACCOUNTID
) = 0
begin
exec dbo.USP_REVENUEBATCH_GENERATECONSTITUENTACCOUNTS
@BATCHREVENUECONSTITUENTID = @BILLTOCONSTITUENTID,
@CONSTITUENTID = @BILLTOCONSTITUENTID,
@CHANGEAGENTID = @CHANGEAGENTID,
@BATCHREVENUECONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID,
@CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID output;
end
if @MEMBERSHIPRECIPIENTEXISTS = 0 and @MEMBERSHIPRECIPIENT is not null
begin
set @BATCHCONSTITID = @MEMBERSHIPRECIPIENT;
if exists (select 1 from dbo.UFN_REVENUEBATCH_GETRECOGNITIONS_FROMITEMLISTXML(@RECOGNITIONS) for xml raw('ITEM'), type, elements, root('RECOGNITIONS'), binary base64)
set @RECOGNITIONSTOPASS = @RECOGNITIONS
else
set @RECOGNITIONSTOPASS = null
-- Add new constituent
exec dbo.USP_REVENUEBATCH_CONSTITUENT_ADD
@MEMBERSHIPRECIPIENT output,
@CHANGEAGENTID,
@BATCHCONSTITID,
@CONSTITUENTACCOUNTID,
@CONSTITUENTACCOUNTID output,
@CURRENTRECOGNITIONS = @RECOGNITIONSTOPASS,
@UPDATEDRECOGNITIONS = @RECOGNITIONS output,
@UPDATEDAPPLICATIONRECOGNITIONS = @RECOGNITIONS output,
@IDMAPPING = @IDMAPPING output;
if @IDMAPPING is not null
begin
update @TEMP_EXISTINGMEMBERS
set CONSTITUENTID = T.c.value('(CONSTITUENTID)[1]','uniqueidentifier')
from @IDMAPPING.nodes('/IDMAPPING/ITEM') T(c)
where CONSTITUENTID = T.c.value('(REVENUEBATCHCONSTITUENTID)[1]','uniqueidentifier')
update @TEMP_MEMBERSHIPCARDS
set CONSTITUENTID = T.c.value('(CONSTITUENTID)[1]','uniqueidentifier')
from @IDMAPPING.nodes('/IDMAPPING/ITEM') T(c)
where CONSTITUENTID = T.c.value('(REVENUEBATCHCONSTITUENTID)[1]','uniqueidentifier')
end
if @FINDERNUMBER > 0
exec dbo.USP_REVENUEBATCH_CONSTITUENTAPPEAL_ADD
@MEMBERSHIPRECIPIENT,
@CHANGEAGENTID,
@BATCHCONSTITID,
@FINDERNUMBER;
--delete the temporary batch version of the constituent
exec dbo.USP_REVENUEBATCH_CONSTITUENT_DELETE
@BATCHREVENUECONSTITUENTID = @BATCHCONSTITID,
@CHANGEAGENTID = @CHANGEAGENTID
end
declare @NEWMEMBERCONSTITUENTID uniqueidentifier
declare members cursor fast_forward
for
select
CONSTITUENTID
from
@TEMP_EXISTINGMEMBERS
where
CONSTITUENTID is not null and
CONSTITUENTID <> @BILLTOCONSTITUENTID
open members
fetch next from members into @BATCHCONSTITID
while @@FETCH_STATUS = 0
begin
set @NEWMEMBERCONSTITUENTID = null
if not exists (select ID from dbo.CONSTITUENT where ID = @BATCHCONSTITID)
begin
exec dbo.USP_REVENUEBATCH_VALIDATENEWCONSTITUENT
@REVENUEBATCHCONSTITUENTID = @BATCHCONSTITID,
@ISDONOR = 1,
@BATCHROWID = @CURRENTBATCHROWID,
@BATCHOWNERID = @BATCHOWNERID
if exists (select 1 from dbo.UFN_REVENUEBATCH_GETRECOGNITIONS_FROMITEMLISTXML(@RECOGNITIONS) for xml raw('ITEM'), type, elements, root('RECOGNITIONS'), binary base64)
set @RECOGNITIONSTOPASS = @RECOGNITIONS
else
set @RECOGNITIONSTOPASS = null
set @IDMAPPING = null
-- Add new constituent
exec dbo.USP_REVENUEBATCH_CONSTITUENT_ADD
@NEWMEMBERCONSTITUENTID output,
@CHANGEAGENTID,
@BATCHCONSTITID,
@CONSTITUENTACCOUNTID,
@CONSTITUENTACCOUNTID output,
@CURRENTRECOGNITIONS = @RECOGNITIONSTOPASS,
@UPDATEDRECOGNITIONS = @RECOGNITIONS output,
@UPDATEDAPPLICATIONRECOGNITIONS = @RECOGNITIONS output,
@IDMAPPING = @IDMAPPING output;
if @IDMAPPING is not null
begin
update @TEMP_EXISTINGMEMBERS
set CONSTITUENTID = T.c.value('(CONSTITUENTID)[1]','uniqueidentifier')
from @IDMAPPING.nodes('/IDMAPPING/ITEM') T(c)
where CONSTITUENTID = T.c.value('(REVENUEBATCHCONSTITUENTID)[1]','uniqueidentifier')
update @TEMP_MEMBERSHIPCARDS
set CONSTITUENTID = T.c.value('(CONSTITUENTID)[1]','uniqueidentifier')
from @IDMAPPING.nodes('/IDMAPPING/ITEM') T(c)
where CONSTITUENTID = T.c.value('(REVENUEBATCHCONSTITUENTID)[1]','uniqueidentifier')
end
--delete the temporary batch version of the constituent
exec dbo.USP_REVENUEBATCH_CONSTITUENT_DELETE
@BATCHREVENUECONSTITUENTID = @BATCHCONSTITID,
@CHANGEAGENTID = @CHANGEAGENTID
end
fetch next from members into @BATCHCONSTITID
end
close members
deallocate members
-- Update xml collections
set @EXISTINGMEMBERS =
(
select CONSTITUENTID, RELATIONTOPRIMARY, LOOKUPID
from @TEMP_EXISTINGMEMBERS
for xml raw('ITEM'), type, elements, root('EXISTINGMEMBERS'), BINARY BASE64
)
set @MEMBERSHIPCARDS =
(
select CONSTITUENTID, NAMEONCARD, EXPIRATIONDATE
from @TEMP_MEMBERSHIPCARDS
for xml raw('ITEM'), type, elements, root('MEMBERSHIPCARDS'), BINARY BASE64
)
exec dbo.USP_DATAFORMTEMPLATE_ADD_MEMBERSHIPDUES
@ID output,
@CURRENTAPPUSERID,
@CHANGEAGENTID,
@TRANSACTIONCURRENCYID,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@EXCHANGERATE,
@PDACCOUNTSYSTEMID,
@POSTSTATUSCODE,
@POSTDATE,
@DUESTYPECODE,
@MEMBERSHIPRECIPIENT,
@RENEWALRECIPIENT,
@BILLTOCONSTITUENTID,
@EFFORTID,
@FINDERNUMBER,
@APPEALID,
@CHANNELCODEID,
@DATE,
@MEMBERSHIPTRANSACTIONTYPECODE,
@REVENUETYPECODE,
0, -- @PAYREVENUETYPE which is never used in the save proc
@PAYADDITIONALTONEXTINSTALLMENT,
@PAYADDITIONALMONEYAMOUNT,
@MEMBERSHIPPROGRAMID,
@MEMBERSHIPLEVELID,
@MEMBERSHIPLEVELTERMID,
@MEMBERSHIPEXPIRESONDATE,
@MEMBERSHIPTRANSACTIONAMOUNT,
@MEMBERSHIPRECOGNITION,
@CONTRIBUTORYDESIGNATIONID,
@EXISTINGMEMBERSHIPID,
@MEMBERSHIPPLEDGEAMOUNT,
@EXISTINGMEMBERS,
@EXISTINGCHILDREN,
@MEMBERSHIPCARDS,
@USEDISCOUNTRADIO,
@DISCOUNTTYPE,
@PROMOTIONCODE,
@APPLIEDDISCOUNTID,
@MEMBERSHIPPROGRAMADDON,
@ADDDONATION,
@DONATIONAMOUNT,
@GIVENANONYMOUSLY,
@DONATIONOPPORTUNITYID,
@DONATIONDESIGNATIONID,
'', -- @DONATIONCAMPAIGNSLIST,
'', -- @DONATIONSOLICITORSLIST,
'', -- @DONATIONRECOGNITIONSLIST,
@CAMPAIGNS,
@SOLICITORS,
@DONATIONCATEGORYCODEID,
@RECOGNITIONS,
@DECLINESGIFTAID,
@PLEDGEFREQUENCYCODE,
@PLEDGENUMBEROFINSTALLMENTS,
@PLEDGESTARTDATE,
@INSTALLMENTS,
@SENDPLEDGEREMINDER,
@CHECKDATE,
@CHECKNUMBER,
@REFERENCENUMBER,
@REFERENCEDATE,
@PAYMENTMETHODCODE,
@DIRECTDEBITRESULTCODE,
@CONSTITUENTACCOUNTID,
@REFERENCE,
@AUTOMATICALLYRENEWMEMBERSHIP,
@CREDITCARDNUMBER,
@CREDITCARDTOKEN,
@CARDHOLDERNAME,
@EXPIRESON,
0, -- @AUTHORIZECREDITCARD,
@AUTHORIZATIONCODE,
'', -- @CSC
@CREDITTYPECODEID,
null, -- @MERCHANTACCOUNTID
@TRANSACTIONID, --CREDITCARDTRANSACTIONID
@AUTOPAY,
@DONOTACKNOWLEDGE,
@TAXDEDUCTIBLEAMOUNT,
@LETTERCODEID,
@TRIBUTEID,
0, -- @NEWEVENTREGISTRATION,
@TOTALAMOUNT,
@DONOTRECEIPT,
@BENEFITS,
@PERCENTAGEBENEFITS,
@COMMENTS,
@BATCHNUMBER,
@NUMBEROFCHILDREN,
@OTHERPAYMENTMETHODCODEID,
@SOURCECODE,
0, -- Temporary workaround for children not being implemented in 2012 Q1
@MEMBERSHIPDECLINESGIFTAID,
@DDISOURCECODEID,
@DDISOURCEDATE,
@VENDORID,
@MEMBERSHIPLEVELTYPECODEID,
@BBNCTRANID,
@ORIGINPAGE,
@ORIGINPAGEID,
@SEPAMANDATEID,
@CURRENTBATCHROWID,
@GLREVENUECATEGORYMAPPINGID,
@SOLICITCODES;
if @BBNCTRANID > 0
exec spTransactions_MarkMembershipAsProcessed @BBNCTRANID;
end
end try
begin catch
if CURSOR_STATUS('global','members') >= -1
begin
close members
deallocate members
end
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end