UFN_SALESDEPOSITTEMPLATEPAYMENTMETHOD_VALIDSALESDEPOSIT

Verifies that a payment type has not already been assigned a deposit template within the process.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN

Definition

Copy


        CREATE function dbo.UFN_SALESDEPOSITTEMPLATEPAYMENTMETHOD_VALIDSALESDEPOSIT
        (
            @ID uniqueidentifier
        )
        returns bit
        with execute as caller
        as begin

            declare @PAYMENTMETHODCODE tinyint = null
            declare @CREDITTYPECODE uniqueidentifier = null
            declare @OTHERPAYMENTMETHODCODEID uniqueidentifier = null
            declare @SALESDEPOSITPROCESSID uniqueidentifier = null

            select 
                @PAYMENTMETHODCODE = [SALESDEPOSITTEMPLATEPAYMENTMETHOD].[PAYMENTMETHODCODE],
                @CREDITTYPECODE = [SALESDEPOSITTEMPLATEPAYMENTMETHOD].[CREDITTYPECODEID],
                @SALESDEPOSITPROCESSID = [SALESDEPOSITTEMPLATE].[SALESDEPOSITPROCESSID],
                @OTHERPAYMENTMETHODCODEID = [SALESDEPOSITTEMPLATEPAYMENTMETHOD].[OTHERPAYMENTMETHODCODEID]
            from dbo.[SALESDEPOSITTEMPLATEPAYMENTMETHOD]
            inner join dbo.[SALESDEPOSITTEMPLATE]
                on [SALESDEPOSITTEMPLATEPAYMENTMETHOD].[SALESDEPOSITTEMPLATEID] = [SALESDEPOSITTEMPLATE].[ID]
            where 
                [SALESDEPOSITTEMPLATEPAYMENTMETHOD].[ID] = @ID

            return (
                case 
                    when coalesce((
                        select count(*)
                        from dbo.[SALESDEPOSITTEMPLATEPAYMENTMETHOD]
                        inner join dbo.[SALESDEPOSITTEMPLATE]
                            on [SALESDEPOSITTEMPLATEPAYMENTMETHOD].[SALESDEPOSITTEMPLATEID] = [SALESDEPOSITTEMPLATE].[ID]
                        where 
                            [SALESDEPOSITTEMPLATEPAYMENTMETHOD].[PAYMENTMETHODCODE] = @PAYMENTMETHODCODE and
                            ([SALESDEPOSITTEMPLATEPAYMENTMETHOD].[CREDITTYPECODEID] = @CREDITTYPECODE or @CREDITTYPECODE is null) and
                            ([SALESDEPOSITTEMPLATEPAYMENTMETHOD].[OTHERPAYMENTMETHODCODEID] = @OTHERPAYMENTMETHODCODEID or @OTHERPAYMENTMETHODCODEID is null) and                            
                            [SALESDEPOSITTEMPLATE].[SALESDEPOSITPROCESSID] = @SALESDEPOSITPROCESSID
                        ),0) > 1 then 0
                    else 1
                end
            )
        end