USP_SALESORDER_ADDPAYMENT

Adds a payment for a sales order.

Parameters

Parameter Parameter Type Mode Description
@PAYMENTID uniqueidentifier INOUT
@SALESORDERID uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@TRANSACTIONDATE datetime IN
@AMOUNT money IN
@PAYMENTMETHODCODE tinyint IN
@CHECKDATE UDT_FUZZYDATE IN
@CHECKNUMBER nvarchar(20) IN
@CARDHOLDERNAME nvarchar(100) IN
@CREDITCARDNUMBER nvarchar(8) IN
@CREDITTYPECODEID uniqueidentifier IN
@AUTHORIZATIONCODE nvarchar(20) IN
@EXPIRESON UDT_FUZZYDATE IN
@OTHERPAYMENTMETHODCODEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_SALESORDER_ADDPAYMENT
                (@PAYMENTID uniqueidentifier output,
                @SALESORDERID uniqueidentifier,
                @CONSTITUENTID uniqueidentifier,
                @TRANSACTIONDATE datetime,
                @AMOUNT money,
                @PAYMENTMETHODCODE tinyint,
                @CHECKDATE dbo.UDT_FUZZYDATE,
                @CHECKNUMBER nvarchar(20),
                @CARDHOLDERNAME nvarchar(100),
                @CREDITCARDNUMBER nvarchar(8),
                @CREDITTYPECODEID uniqueidentifier,
                @AUTHORIZATIONCODE nvarchar(20),
                @EXPIRESON dbo.UDT_FUZZYDATE,
                @OTHERPAYMENTMETHODCODEID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @CURRENTDATE datetime,
                @CURRENTAPPUSERID uniqueidentifier
                )
            as
            begin
                set nocount on;

                declare @CHANGEDUE money;
                declare @AMOUNTTENDERED money;
                declare @ORDERAMOUNT money;

                set @ORDERAMOUNT = dbo.UFN_SALESORDER_GETAMOUNTDUE(@SALESORDERID);

                set @AMOUNTTENDERED = @AMOUNT;
                set @CHANGEDUE = 0;

                if @PAYMENTMETHODCODE = 0 --cash

                    begin
                    if @AMOUNT > @ORDERAMOUNT
                        begin
                        set @CHANGEDUE = @AMOUNT - @ORDERAMOUNT;
                        set @AMOUNT = @ORDERAMOUNT;
                        end
                    end

                if @PAYMENTID is null
                    set @PAYMENTID = newid();

                --insert a new payment

                insert into dbo.REVENUE
                    (ID,
                    CONSTITUENTID,
                    DATE,
                    POSTDATE,
                    AMOUNT,
                    TRANSACTIONTYPECODE,
                    ADDEDBYID,
                    CHANGEDBYID,
                    DATEADDED,
                    DATECHANGED)
                values (@PAYMENTID,
                    @CONSTITUENTID,
                    @TRANSACTIONDATE,
                    @TRANSACTIONDATE,
                    @AMOUNT,
                    0, --Payment

                    @CHANGEAGENTID
                    @CHANGEAGENTID
                    @CURRENTDATE
                    @CURRENTDATE)    

                -- link the payment to the sales order

                insert into dbo.SALESORDERPAYMENT
                    (ID, SALESORDERID, PAYMENTID, AMOUNTTENDERED, AMOUNT, CHANGEDUE, APPUSERID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                values (newid(), 
                    @SALESORDERID
                    @PAYMENTID
                    @AMOUNTTENDERED
                    @AMOUNT
                    @CHANGEDUE
                    @CURRENTAPPUSERID,
                    @CHANGEAGENTID
                    @CHANGEAGENTID
                    @CURRENTDATE
                    @CURRENTDATE);

                --add payment method details

                declare @REVENUEPAYMETHODID uniqueidentifier                    
                set @REVENUEPAYMETHODID = newid();

                insert into dbo.REVENUEPAYMENTMETHOD 
                    (ID,REVENUEID, PAYMENTMETHODCODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                values (@REVENUEPAYMETHODID,
                    @PAYMENTID,
                    @PAYMENTMETHODCODE,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    @CURRENTDATE);

                -- update the payment information for each revenue record in the transaction

                exec dbo.USP_REVENUE_UPDATEPAYMENTDETAILS @REVENUEPAYMETHODID, @PAYMENTMETHODCODE, @CHECKDATE, @CHECKNUMBER
                        null, '00000000', '', @CARDHOLDERNAME, @CREDITCARDNUMBER, @CREDITTYPECODEID
                        @AUTHORIZATIONCODE, @EXPIRESON, null, null, null, null, null, null, null, null, null, null, null
                        @CHANGEAGENTID,@CURRENTDATE, 0, @OTHERPAYMENTMETHODCODEID;

                return 0;
            end