USP_DATAFORMTEMPLATE_EDIT_PAYMENTMETHOD

The save procedure used by the edit dataform template "Payment Method Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@REFERENCE nvarchar(255) IN Description
@PAYMENTMETHODCODE tinyint IN Payment method
@OTHERPAYMENTMETHODCODEID uniqueidentifier IN Other method
@CHECKDATE UDT_FUZZYDATE IN Check date
@CHECKNUMBER nvarchar(20) IN Check number
@REFERENCEDATE UDT_FUZZYDATE IN Reference date
@REFERENCENUMBER nvarchar(20) IN Reference number
@CARDHOLDERNAME nvarchar(255) IN Name on card
@CREDITCARDNUMBER nvarchar(4) IN Card number
@CREDITTYPECODEID uniqueidentifier IN Card type
@AUTHORIZATIONCODE nvarchar(20) IN Authorization code
@EXPIRESON UDT_FUZZYDATE IN Expires on
@ISSUER nvarchar(100) IN Issuer
@NUMBEROFUNITS int IN Number of units
@SYMBOL nvarchar(25) IN Symbol
@MEDIANPRICE decimal(19, 4) IN Median price
@GIFTINKINDSUBTYPECODEID uniqueidentifier IN Subtype
@PROPERTYSUBTYPECODEID uniqueidentifier IN Subtype
@CONSTITUENTACCOUNTID uniqueidentifier IN Account
@DIRECTDEBITRESULTCODE nvarchar(10) IN Result code
@LOWPRICE decimal(19, 4) IN Low price
@HIGHPRICE decimal(19, 4) IN High price

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PAYMENTMETHOD
                        (
                            @ID uniqueidentifier,
                            @CHANGEAGENTID uniqueidentifier,
                            @REFERENCE nvarchar(255),
                            @PAYMENTMETHODCODE tinyint,
                            @OTHERPAYMENTMETHODCODEID uniqueidentifier,
                            @CHECKDATE dbo.UDT_FUZZYDATE,
                            @CHECKNUMBER nvarchar(20),
                            @REFERENCEDATE dbo.UDT_FUZZYDATE,
                            @REFERENCENUMBER nvarchar(20),
                            @CARDHOLDERNAME nvarchar(255),
                            @CREDITCARDNUMBER nvarchar(4),
                            @CREDITTYPECODEID uniqueidentifier,
                            @AUTHORIZATIONCODE nvarchar(20),
                            @EXPIRESON dbo.UDT_FUZZYDATE,
                            @ISSUER nvarchar(100),
                            @NUMBEROFUNITS int,
                            @SYMBOL nvarchar(25),
                            @MEDIANPRICE decimal(19,4),
                            @GIFTINKINDSUBTYPECODEID uniqueidentifier,
                            @PROPERTYSUBTYPECODEID uniqueidentifier,
                            @CONSTITUENTACCOUNTID uniqueidentifier,
                            @DIRECTDEBITRESULTCODE nvarchar(10),
                            @LOWPRICE decimal(19,4),
                            @HIGHPRICE decimal(19,4)
                        )
                        as
                        set nocount on;

                        if @CHANGEAGENTID is null
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                        declare @CURRENTDATE datetime;
                        set @CURRENTDATE = GetDate();

                        declare @CLEARALLGLDISTRIBUTIONS bit;
                        declare @CLEARSTOCKGLDISTRIBUTION bit;

                        set @CLEARALLGLDISTRIBUTIONS = 0;
                        set @CLEARSTOCKGLDISTRIBUTION = 0;

            declare @POSTSTATUSCODE tinyint;
            declare @AMOUNT money;
            select @AMOUNT= REVENUE.AMOUNT, 
              @POSTSTATUSCODE = case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end
                  from dbo.REVENUE
                  left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
                  where REVENUE.ID = @ID and REVENUE.TRANSACTIONTYPECODE = 0 

                        declare @contextCache varbinary(128);

                        --cache current context information
                        set @contextCache = CONTEXT_INFO();

                        --set CONTEXT_INFO to @CHANGEAGENTID
                        set CONTEXT_INFO @CHANGEAGENTID;

                        begin try
                declare @ORIGINALPAYMETHODID uniqueidentifier, @ORIGINALPAYMENTMETHODCODE tinyint
                            select
                                @ORIGINALPAYMETHODID = ID,
                                @ORIGINALPAYMENTMETHODCODE = PAYMENTMETHODCODE
                            from dbo.REVENUEPAYMENTMETHOD
                            where REVENUEID = @ID

                            -- check to see if payment method has changed
                            if @ORIGINALPAYMENTMETHODCODE <> @PAYMENTMETHODCODE
                            begin
                                set @CLEARALLGLDISTRIBUTIONS = 1;
                            end

                            declare @SALEDATE datetime
                            declare @SALEAMOUNT money
                            declare @BROKERFEE money
                            declare @SALEPOSTDATE datetime
                            declare @SALEPOSTSTATUSCODE tinyint

                            if @PAYMENTMETHODCODE = 5
                            begin                                
                                select top 1
                                    @SALEDATE = SALEDATE,
                                    @SALEAMOUNT = SALEAMOUNT,
                                    @BROKERFEE = BROKERFEE,
                                    @SALEPOSTDATE = SALEPOSTDATE,
                                    @SALEPOSTSTATUSCODE = SALEPOSTSTATUSCODE
                                from dbo.PROPERTYDETAIL
                                where ID = @ORIGINALPAYMETHODID and ISSOLD = 1
                            end

                            -- Reset stock GL distribution when the number of units or median price changed
                            if @PAYMENTMETHODCODE = 4
                            begin
                                declare @ORIGINALNUMBEROFUNITS int, @ORIGINALMEDIANPRICE decimal(19,4)
                                select
                                    @ORIGINALNUMBEROFUNITS = NUMBEROFUNITS,
                                    @ORIGINALMEDIANPRICE = MEDIANPRICE
                                from dbo.STOCKDETAIL where ID = @ORIGINALPAYMETHODID

                                if (@ORIGINALNUMBEROFUNITS <> @NUMBEROFUNITS or @ORIGINALMEDIANPRICE <> @MEDIANPRICE) and 
                                    exists (select 1 from dbo.STOCKSALE where STOCKDETAILID = @ORIGINALPAYMETHODID)
                                begin
                                    set @CLEARSTOCKGLDISTRIBUTION = 1
                                end
                            end

                            if @REFERENCE is null
                          exec dbo.USP_REVENUEREFERENCE_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
                      else
                      begin
                          if exists(select top 1 ID from dbo.REVENUEREFERENCE where ID = @ID)
                              update dbo.REVENUEREFERENCE
                              set REFERENCE = @REFERENCE,
                                  CHANGEDBYID = @CHANGEAGENTID
                                  DATECHANGED = @CURRENTDATE
                              where ID = @ID;
                          else    
                              insert into dbo.REVENUEREFERENCE (ID, REFERENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values (@ID, @REFERENCE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
                            end

                            update dbo.REVENUEPAYMENTMETHOD set 
                                PAYMENTMETHODCODE = @PAYMENTMETHODCODE,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ORIGINALPAYMETHODID

                            exec dbo.USP_REVENUE_UPDATEPAYMENTDETAILS 
                                @PAYMENTMETHODID = @ORIGINALPAYMETHODID,
                                @PAYMENTMETHODCODE = @PAYMENTMETHODCODE
                                @CHECKDATE = @CHECKDATE
                                @CHECKNUMBER = @CHECKNUMBER
                                @CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID
                                @REFERENCEDATE = @REFERENCEDATE
                                @REFERENCENUMBER = @REFERENCENUMBER
                                @CARDHOLDERNAME = @CARDHOLDERNAME
                                @CREDITCARDNUMBER = @CREDITCARDNUMBER
                                @CREDITTYPECODEID = @CREDITTYPECODEID
                                @AUTHORIZATIONCODE = @AUTHORIZATIONCODE
                                @EXPIRESON = @EXPIRESON
                                @ISSUER = @ISSUER
                                @NUMBEROFUNITS = @NUMBEROFUNITS
                                @SYMBOL = @SYMBOL
                                @MEDIANPRICE = @MEDIANPRICE
                                @PROPERTYSUBTYPECODEID = @PROPERTYSUBTYPECODEID
                                @GIFTINKINDSUBTYPECODEID = @GIFTINKINDSUBTYPECODEID
                                @CHANGEAGENTID = @CHANGEAGENTID,
                                @CHANGEDATE = @CURRENTDATE
                                @KEYALREADYOPEN = 0,
                                @OTHERPAYMENTMETHODCODEID = @OTHERPAYMENTMETHODCODEID,
                                @DIRECTDEBITRESULTCODE = @DIRECTDEBITRESULTCODE,
                                @LOWPRICE = @LOWPRICE,
                                @HIGHPRICE = @HIGHPRICE,
                                @SALEDATE = @SALEDATE,
                                @SALEAMOUNT = @SALEAMOUNT,
                                @BROKERFEE = @BROKERFEE,
                                @SALEPOSTDATE = @SALEPOSTDATE,
                                @SALEPOSTSTATUSCODE = @SALEPOSTSTATUSCODE,
                                @REVENUEAMOUNT = @AMOUNT

                            -- clear the user-defined gl distributions
                            if @CLEARALLGLDISTRIBUTIONS = 1
                            begin                                
                                -- Clear GL
                                delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;    
                                delete from dbo.STOCKSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
                                delete from dbo.PROPERTYDETAILGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;

                                -- Add new GL distributions
                                if @POSTSTATUSCODE <> 2
                                begin

                                    -- Add new GL distributions
                                    exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;

                                    -- Add new stock detail GL distributions
                                    exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;

                                    -- Add new property detail GL distributions
                                    exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
                                end
                            end
                            else
                            begin
                                if @CLEARSTOCKGLDISTRIBUTION = 1
                                begin
                                    delete from dbo.STOCKSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;

                                    -- Add new stock detail GL distributions
                                    if @POSTSTATUSCODE <> 2
                                        exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
                                end
                            end
                        end try

                        begin catch
                            --reset CONTEXT_INFO to previous value
                            if not @contextCache is null
                                set CONTEXT_INFO @contextCache;

                            exec dbo.USP_RAISE_ERROR;

                            return 1;
                        end catch

                        --reset CONTEXT_INFO to previous value
                        if not @contextCache is null
                            set CONTEXT_INFO @contextCache;

                        return 0;