USP_DATAFORMTEMPLATE_EDITLOAD_RECURRINGGIFTPAYMENTDETAILS_3

The load procedure used by the edit dataform template "Recurring Gift Payment Details Edit Form 3"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@PAYMENTMETHODCODE tinyint INOUT Payment method
@AUTOPAY bit INOUT Pay automatically by:
@CARDHOLDERNAME nvarchar(255) INOUT Name on card
@CREDITCARDNUMBER nvarchar(20) INOUT Card number
@CREDITTYPECODEID uniqueidentifier INOUT Card type
@EXPIRESON UDT_FUZZYDATE INOUT Expires on
@REFERENCEDATE UDT_FUZZYDATE INOUT Reference date
@REFERENCENUMBER nvarchar(20) INOUT Reference number
@ACCOUNTID uniqueidentifier INOUT Account
@CONSTITUENTID uniqueidentifier INOUT Constituent
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@CREDITCARDTOKEN uniqueidentifier INOUT Card token
@STANDINGORDERSETUP bit INOUT Standing order has been setup
@STANDINGORDERSETUPDATE datetime INOUT Setup on
@DDISOURCECODEID uniqueidentifier INOUT DDI source
@DDISOURCEDATE date INOUT DDI source date
@SENDPMINSTRUCTION bit INOUT Send instruction
@PMINSTRUCTIONTOSENDCODE tinyint INOUT Send instruction
@PMINSTRUCTIONDATE_NEW date INOUT New instruction sent
@PMINSTRUCTIONDATE_CANCEL date INOUT Cancel instruction sent
@PMINSTRUCTIONDATE_SETUP date INOUT Set-up instruction sent
@PMADVANCENOTICESENTDATE date INOUT Advance notice sent
@UPDATEOTHERTRANSACTIONSTOUSENEWCREDITCARD bit INOUT Update other transactions to use new credit card
@OTHERTRANSACTIONSUSEEXISTINGCREDITCARD bit INOUT Other transactions use existing credit card?
@USESYSTEMGENERATEDREFERENCENUMBER bit INOUT Use system-generated reference number
@STANDINGORDERREFERENCENUMBER nvarchar(18) INOUT Reference number
@SEPAMANDATEID uniqueidentifier INOUT
@TRANSACTIONCURRENCYID uniqueidentifier INOUT
@OTHERPAYMENTMETHODCODEID uniqueidentifier INOUT

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_RECURRINGGIFTPAYMENTDETAILS_3
                    (
                        @ID uniqueidentifier,
                        @DATALOADED bit = 0 output,
                        @PAYMENTMETHODCODE tinyint = null output,
                        @AUTOPAY bit = null output,
                        @CARDHOLDERNAME nvarchar(255) = null output,
                        @CREDITCARDNUMBER nvarchar(20) = null output,
                        @CREDITTYPECODEID uniqueidentifier = null output,
                        @EXPIRESON dbo.UDT_FUZZYDATE = null output,
                        @REFERENCEDATE dbo.UDT_FUZZYDATE = null output,
                        @REFERENCENUMBER nvarchar(20) = null output,
                        @ACCOUNTID uniqueidentifier = null output,
                        @CONSTITUENTID uniqueidentifier = null output,
                        @TSLONG bigint = 0 output,
                        @CREDITCARDTOKEN uniqueidentifier = null output,
                        @STANDINGORDERSETUP bit = null output,
                        @STANDINGORDERSETUPDATE datetime = null output,
                        @DDISOURCECODEID uniqueidentifier = null output,
                        @DDISOURCEDATE date = null output,
                        @SENDPMINSTRUCTION bit = null output,
                        @PMINSTRUCTIONTOSENDCODE tinyint = null output,
                        @PMINSTRUCTIONDATE_NEW date = null output,
                        @PMINSTRUCTIONDATE_CANCEL date = null output,
                        @PMINSTRUCTIONDATE_SETUP date = null output,
                        @PMADVANCENOTICESENTDATE date = null output,
                        @UPDATEOTHERTRANSACTIONSTOUSENEWCREDITCARD bit = null output,
                        @OTHERTRANSACTIONSUSEEXISTINGCREDITCARD bit = null output
                        @USESYSTEMGENERATEDREFERENCENUMBER bit = null output,
                        @STANDINGORDERREFERENCENUMBER nvarchar(18) = null output,
                        @SEPAMANDATEID uniqueidentifier = null output,
                        @TRANSACTIONCURRENCYID uniqueidentifier = null output,
                        @OTHERPAYMENTMETHODCODEID uniqueidentifier = null output
                    )
                    as
                    set nocount on;

                    set @DATALOADED = 0;
                    set @TSLONG = 0;
                    set @UPDATEOTHERTRANSACTIONSTOUSENEWCREDITCARD = 0;

                    declare @CREDITCARDID uniqueidentifier;                    
                    select 
                        @DATALOADED = 1,
                        @PAYMENTMETHODCODE = case when (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 2 and REVENUESCHEDULE.CREDITCARDID is null) then 98 else REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE end,
                        @CARDHOLDERNAME = [CARD].CARDHOLDERNAME,
                        @CREDITCARDNUMBER = [CARD].CREDITCARDPARTIALNUMBER,
                        @CREDITTYPECODEID = [CARD].CREDITTYPECODEID,
                        @EXPIRESON = [CARD].EXPIRESON,
                        @CONSTITUENTID = REVENUE.CONSTITUENTID,
                        @TSLONG = REVENUE.TSLONG,
                        @CREDITCARDTOKEN = CARD.CREDITCARDTOKEN,
                        @CREDITCARDID = [CARD].ID,
                        @TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID
                    from dbo.REVENUE 
                    inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
                    left join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
                    left join dbo.CREDITCARD as [CARD] on REVENUESCHEDULE.CREDITCARDID = CARD.ID
                    where REVENUE.ID = @ID and REVENUE.TRANSACTIONTYPECODE = 2

                    -- if this is a reference only credit card method then retrieve the cc details from the CREDITCARDPAYMENTMETHODDETAIL table

                    if @PAYMENTMETHODCODE = 98
                        select 
                            @CARDHOLDERNAME = D.CARDHOLDERNAME,
                            @CREDITCARDNUMBER = D.CREDITCARDPARTIALNUMBER,
                            @CREDITTYPECODEID = D.CREDITTYPECODEID,
                            @EXPIRESON = D.EXPIRESON
                        from dbo.REVENUEPAYMENTMETHOD M
                        left join dbo.CREDITCARDPAYMENTMETHODDETAIL D on M.ID =  D.ID
                        where M.REVENUEID = @ID;

                    set @OTHERTRANSACTIONSUSEEXISTINGCREDITCARD = 0;
                    if exists ( select 1
                                from dbo.REVENUESCHEDULE
                                where
                                    CREDITCARDID = @CREDITCARDID and
                                    ID <> @ID

                                union all

                                select 1
                                from dbo.BATCHREVENUE
                                inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
                                where
                                    BATCH.STATUSCODE = 0 and -- Uncommitted

                                    BATCHREVENUE.AUTHORIZATIONCODE = N'' and --Bug 234607 Don't change authorized cards because they have already been charged

                                    CREDITCARDID = @CREDITCARDID)
                        set @OTHERTRANSACTIONSUSEEXISTINGCREDITCARD = 1;

                    if @PAYMENTMETHODCODE = 3 --Direct Debit        

                        --Direct Debit w/ Paperless mandate fields is UK only                        

                        if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 1
                        begin
                            select 
                                @REFERENCEDATE = REVENUESCHEDULEDIRECTDEBITPAYMENT.REFERENCEDATE,
                                @REFERENCENUMBER = REVENUESCHEDULEDIRECTDEBITPAYMENT.REFERENCENUMBER,
                                @ACCOUNTID = REVENUESCHEDULEDIRECTDEBITPAYMENT.CONSTITUENTACCOUNTID,
                                @DDISOURCECODEID =REVENUESCHEDULEDIRECTDEBITPAYMENT.DDISOURCECODEID,
                                @DDISOURCEDATE = REVENUESCHEDULEDIRECTDEBITPAYMENT.DDISOURCEDATE,
                                @SENDPMINSTRUCTION = REVENUESCHEDULEDIRECTDEBITPAYMENT.SENDPMINSTRUCTION,
                                @PMINSTRUCTIONTOSENDCODE = case when REVENUESCHEDULEDIRECTDEBITPAYMENT.PMINSTRUCTIONTOSENDCODE = 0 then null else REVENUESCHEDULEDIRECTDEBITPAYMENT.PMINSTRUCTIONTOSENDCODE end,
                                @PMINSTRUCTIONDATE_NEW = REVENUESCHEDULEDIRECTDEBITPAYMENT.PMINSTRUCTIONDATE_NEW,
                                @PMINSTRUCTIONDATE_CANCEL = REVENUESCHEDULEDIRECTDEBITPAYMENT.PMINSTRUCTIONDATE_CANCEL,
                                @PMINSTRUCTIONDATE_SETUP = REVENUESCHEDULEDIRECTDEBITPAYMENT.PMINSTRUCTIONDATE_SETUP,
                                @PMADVANCENOTICESENTDATE = REVENUESCHEDULEDIRECTDEBITPAYMENT.PMADVANCENOTICESENTDATE,
                                @SEPAMANDATEID = REVENUESCHEDULEDIRECTDEBITPAYMENT.SEPAMANDATEID
                            from dbo.REVENUESCHEDULEDIRECTDEBITPAYMENT
                                where REVENUESCHEDULEDIRECTDEBITPAYMENT.ID = @ID 
                        end
                        else
                        begin
                            select 
                                @REFERENCEDATE = REVENUESCHEDULEDIRECTDEBITPAYMENT.REFERENCEDATE,
                                @REFERENCENUMBER = REVENUESCHEDULEDIRECTDEBITPAYMENT.REFERENCENUMBER,
                                @ACCOUNTID = REVENUESCHEDULEDIRECTDEBITPAYMENT.CONSTITUENTACCOUNTID,
                                @SEPAMANDATEID = REVENUESCHEDULEDIRECTDEBITPAYMENT.SEPAMANDATEID
                            from dbo.REVENUESCHEDULEDIRECTDEBITPAYMENT
                                where REVENUESCHEDULEDIRECTDEBITPAYMENT.ID = @ID
                        end

                    if @PAYMENTMETHODCODE = 11 --Standing order

                        select 
                            @REFERENCEDATE = REFERENCEDATE,
                            @STANDINGORDERREFERENCENUMBER = dbo.UFN_STANDINGORDER_REFERENCENUMBER_FORDISPLAY(REVENUESCHEDULESTANDINGORDERPAYMENT.ID),
                            @ACCOUNTID = CONSTITUENTACCOUNTID,
                            @STANDINGORDERSETUP = STANDINGORDERSETUP,
                            @STANDINGORDERSETUPDATE = STANDINGORDERSETUPDATE,
                            @USESYSTEMGENERATEDREFERENCENUMBER = USESYSTEMGENERATEDREFERENCENUMBER
                        from dbo.REVENUESCHEDULESTANDINGORDERPAYMENT
                            left join dbo.REVENUESTANDINGORDER on REVENUESTANDINGORDER.ID = REVENUESCHEDULESTANDINGORDERPAYMENT.ID
                        where REVENUESCHEDULESTANDINGORDERPAYMENT.ID = @ID

                    if @PAYMENTMETHODCODE = 10 --Other

                        select 
                            @REFERENCEDATE = REFERENCEDATE,
                            @REFERENCENUMBER = REFERENCENUMBER,
                            @OTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODCODEID
                        from dbo.OTHERPAYMENTMETHODDETAIL 
                            inner join dbo.REVENUEPAYMENTMETHOD on OTHERPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID
                        where REVENUEPAYMENTMETHOD.REVENUEID = @ID;

                    -- Recurring gifts are no longer using this flag, however it's still needed in the UiModel which is also shared by the Pledge payment edits.

                    set @AUTOPAY = 1;

                    return 0