UFN_SALESDEPOSITTEMPLATE_PAYMENTMETHODS_TOITEMLISTXML

Return

Return Type
xml

Parameters

Parameter Parameter Type Mode Description
@SALESDEPOSITTEMPLATEID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_SALESDEPOSITTEMPLATE_PAYMENTMETHODS_TOITEMLISTXML
(
    @SALESDEPOSITTEMPLATEID uniqueidentifier = null
)
returns xml
as begin
    declare @XML xml

        --The payment types temp table selectable in form

    declare @PAYMENTTYPES table (
        [PAYMENTMETHOD] nvarchar(100),
        [PAYMENTMETHODCODE] tinyint,
        [CREDITTYPECODEID] uniqueidentifier,
        [OTHERPAYMENTMETHODCODEID] uniqueidentifier
    )

    insert into @PAYMENTTYPES
    select
        dbo.UFN_REVENUEPAYMENTMETHOD_PAYMENTMETHODCODE_GETDESCRIPTION(0) as [PAYMENTMETHOD],
        0 as [PAYMENTMETHODCODE],
        null as [CREDITTYPECODEID],
        null as [OTHERPAYMENTMETHODCODEID]

    union all
    select
        dbo.UFN_REVENUEPAYMENTMETHOD_PAYMENTMETHODCODE_GETDESCRIPTION(1) as [PAYMENTMETHOD],
        1 as [PAYMENTMETHODCODE],
        null as [CREDITTYPECODEID],
        null as [OTHERPAYMENTMETHODCODEID]

    union all
    select
        dbo.UFN_REVENUEPAYMENTMETHOD_PAYMENTMETHODCODE_GETDESCRIPTION(2) as [PAYMENTMETHOD],
        2 as [PAYMENTMETHODCODE],
        null as [CREDITTYPECODEID],
        null as [OTHERPAYMENTMETHODCODEID]

    union all
    select 
        [CREDITTYPECODE].[DESCRIPTION] as [PAYMENTMETHOD],
        2 as [PAYMENTMETHODCODE],
        [CREDITTYPECODE].[ID] as [CREDITTYPECODEID],
        null as [OTHERPAYMENTMETHODCODEID]        
    from dbo.[CREDITTYPECODE]
    where [ACTIVE] = 1

    union all
    select 
        [OTHERPAYMENTMETHODCODE].[DESCRIPTION] as [PAYMENTMETHOD],
        10 as [PAYMENTMETHODCODE],
        null as [CREDITTYPECODEID],
        [OTHERPAYMENTMETHODCODE].[ID] as [OTHERPAYMENTMETHODCODEID]
    from dbo.[OTHERPAYMENTMETHODCODE]
    where [ACTIVE] = 1
        and [ID] not in (select ID from dbo.NONDEPOSITABLEPAYMENTMETHOD);

    set @XML = (
        select
            PM.ID
            ,case when @SALESDEPOSITTEMPLATEID is null then 1 else case when PM.ID is null then 0 else 1 end end as [INCLUDE]
            ,P.PAYMENTMETHODCODE
            ,P.PAYMENTMETHOD
            ,P.CREDITTYPECODEID
            ,P.OTHERPAYMENTMETHODCODEID
        from @PAYMENTTYPES P
        left join dbo.SALESDEPOSITTEMPLATEPAYMENTMETHOD PM 
            on @SALESDEPOSITTEMPLATEID is not null 
                and P.PAYMENTMETHODCODE = PM.PAYMENTMETHODCODE
                and (P.CREDITTYPECODEID = PM.CREDITTYPECODEID or (P.CREDITTYPECODEID is null and PM.CREDITTYPECODEID is null))
                and (P.OTHERPAYMENTMETHODCODEID = PM.OTHERPAYMENTMETHODCODEID or (P.OTHERPAYMENTMETHODCODEID is null or PM.OTHERPAYMENTMETHODCODEID is null))
                and PM.SALESDEPOSITTEMPLATEID = @SALESDEPOSITTEMPLATEID
        order by P.PAYMENTMETHODCODE, P.PAYMENTMETHOD
        for xml raw('ITEM'), type, elements, root('PAYMENTTYPE'), BINARY BASE64
    )

    return @XML

end