UFN_SALESDEPOSITTEMPLATE_UNLINKEDRECONCILEDPAYMENTS_GETCASHDIFFERENCE

Returns the difference between the actual and expected amounts of cash to be deposited based on a sales deposit template.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@SALESDEPOSITTEMPLATEID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_SALESDEPOSITTEMPLATE_UNLINKEDRECONCILEDPAYMENTS_GETCASHDIFFERENCE
            (
                @SALESDEPOSITTEMPLATEID uniqueidentifier
            ) 
            returns money
            as begin

                declare @PAYMENTCASHTOTAL money = 0
                declare @CREDITCASHTOTAL money = 0
                declare @ACTUALCASHTOTAL money = 0

                if dbo.UFN_SALESDEPOSITTEMPLATE_HASPAYMENTMETHOD(@SALESDEPOSITTEMPLATEID, 0) = 1
                begin
                    select @PAYMENTCASHTOTAL = coalesce(sum([REVENUE].[AMOUNT]),0)
                    from dbo.[REVENUE]
                    inner join (select ID, SALESORDERID, PAYMENTID, RECONCILIATIONID, AMOUNT from dbo.SALESORDERPAYMENT with (nolock) where [DONOTRECONCILE] = 0
                                      union all 
                                      select ID, RESERVATIONID as SALESORDERID, PAYMENTID, RECONCILIATIONID, AMOUNT from dbo.RESERVATIONSECURITYDEPOSITPAYMENT with (nolock)
                                ) as SALESORDERPAYMENT
                        on [REVENUE].[ID] = [SALESORDERPAYMENT].[PAYMENTID]
                    inner join dbo.[REVENUEPAYMENTMETHOD] 
                        on [REVENUE].[ID] = [REVENUEPAYMENTMETHOD].[REVENUEID]
                    inner join dbo.[RECONCILIATION]
                        on [SALESORDERPAYMENT].[RECONCILIATIONID] = [RECONCILIATION].[ID]
                    where
                        [RECONCILIATION].[STATUSCODE] = 2 and
                        [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] = 0

                    select @CREDITCASHTOTAL = coalesce(sum([CREDITPAYMENT].[AMOUNT]),0)
                    from dbo.[CREDITPAYMENT]
                    inner join dbo.[RECONCILIATION]
                        on [CREDITPAYMENT].[RECONCILIATIONID] = [RECONCILIATION].[ID]
                    where 
                        [RECONCILIATION].[STATUSCODE] = 2 and
                        [CREDITPAYMENT].[PAYMENTMETHODCODE] = 0

                    select @ACTUALCASHTOTAL = coalesce(sum([ACTUALCASH]),0)
                    from dbo.[RECONCILIATION]
                    where [STATUSCODE] = 2
                end

                return  @ACTUALCASHTOTAL - (@PAYMENTCASHTOTAL - @CREDITCASHTOTAL)
            end