spTransactions_AddUpdateDonation
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PKID | int | INOUT | |
@xmlData | ntext | IN | |
@ClientsID | int | IN | |
@UserID | int | IN | |
@ClientDonationsID | int | IN | |
@EmailID | int | IN | |
@GiftAmount | numeric(30, 6) | IN | |
@GiftPaymentMethod | int | IN | |
@GiftCurrencyType | int | IN | |
@LastName | nvarchar(256) | IN | |
@TransactionGUID | uniqueidentifier | IN | |
@ProcessedDate | datetime | IN | |
@BackOfficeUserID | int | IN | |
@DateAdded | datetime | IN | |
@Status | int | IN | |
@QueueForDownload | bit | IN | |
@EmailJobRecipientID | int | IN | |
@OrderID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.spTransactions_AddUpdateDonation
(
@PKID int output,
@xmlData ntext,
@ClientsID int,
@UserID int,
@ClientDonationsID int,
@EmailID int,
@GiftAmount numeric(30,6),
@GiftPaymentMethod int,
@GiftCurrencyType int,
@LastName nvarchar(256),
@TransactionGUID uniqueidentifier,
@ProcessedDate datetime,
@BackOfficeUserID int,
@DateAdded datetime = getutcdate,
@Status int,
@QueueForDownload bit,
@EmailJobRecipientID int,
@OrderID uniqueidentifier = null
)
as
begin
if datalength(@xmlData)<8
begin
RAISERROR ('Unable to insert transaction - DonationTransactions.XMLObjectData cannot be a zero-length string and must be well formed XML',16,1)
return 0
end
if @UserID=0 set @UserID=NULL
if @ClientDonationsID=0 set @ClientDonationsID=NULL
if @EmailJobRecipientID <= 0 set @EmailJobRecipientID = NULL
begin transaction
if (@PKID<=0)
begin
insert into dbo.DonationTransactions
(
ClientsID,
ClientDonationsID,
AddedByUserID,
XMLObjectData,
EmailID,
GiftAmount,
GiftPaymentMethod,
GiftCurrencyType,
LastName,
TransactionGUID,
processed_date,
DateAdded,
[Status],
[EmailJobRecipientID]
)
values
(
@ClientsID,
@ClientDonationsID,
@UserID,
@xmlData,
@EmailID,
@GiftAmount,
@GiftPaymentMethod,
@GiftCurrencyType,
@LastName,
@TransactionGUID,
@ProcessedDate,
@DateAdded,
@Status,
@EmailJobRecipientID
)
SELECT @PKID = SCOPE_IDENTITY()
--Update pKid in XML
update dbo.DONATIONTRANSACTIONS set XMLOBJECTDATA = replace(cast(@xmlData AS nvarchar(max)),'<PKID>0</PKID>', '<PKID>'+cast(@PKID as nvarchar(15))+'</PKID>') where DONATIONTRANSACTIONSID=@PKID;
end
else
begin
UPDATE dbo.DonationTransactions SET
ClientsID =@ClientsID,
AddedByUserID =@UserID,
XMLObjectData =@xmlData,
IsDeleted =0,
EmailID = @EmailID,
GiftAmount = @GiftAmount,
GiftPaymentMethod = @GiftPaymentMethod,
GiftCurrencyType = @GiftCurrencyType,
LastName = @LastName,
TransactionGUID =@TransactionGUID,
processed_date =@ProcessedDate,
[Status] =@Status,
[EmailJobRecipientID] = @EmailJobRecipientID,
DateAdded =@DateAdded --CR303623-062708
WHERE DonationTransactionsID=@PKID
end
if @QueueForDownload = 1 and @Status = 1
begin
--This will save the transaction into the BBNCTransactions Table
declare @BBNCTransactionsPKID int
set @BBNCTransactionsPKID = 0
declare @TransactionType nvarchar(100)
set @TransactionType = '{5705B543-4033-4a3a-BBCD-A731403EE1E6}'
exec spTransactions_InsertTransaction @BBNCTransactionsPKID, @PKID, @TransactionType, @xmlData, @UserID, @BackOfficeUserID
-- this check is a workaround for the new payment design
-- OrderID will be null for the earlier framework
-- this check will be removed once the new design is implemented elsewhere
if @OrderID is null
begin
delete dbo.CMSTransactionState
where TransactionId = @TransactionGUID
end
else
begin
update dbo.DonationTransactions
set OrderID = @OrderID
where DonationTransactionsID = @PKID
END
if @EmailJobRecipientID IS NOT NULL and @EmailID IS NOT NULL and @EmailID > 0
begin
insert into EMAILJOB_RECIPIENT_DONATED
(
EMAILJOBRECIPIENTID,
EMAILID,
DONATIONDATE
)
values
(
@EmailJobRecipientID,
@EmailID,
getutcdate()
);
end
end
end
commit transaction