UFN_TREASURYDEPOSITTEMPLATE_GETUNLINKEDCREDITPAYMENTS

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@SALESDEPOSITTEMPLATEID uniqueidentifier IN
@POSTSTATUSCODE tinyint IN
@PAYMENTMETHODCODE tinyint IN
@TRANSACTIONDATE date IN
@PAYMENTDATE date IN

Definition

Copy


CREATE function dbo.UFN_TREASURYDEPOSITTEMPLATE_GETUNLINKEDCREDITPAYMENTS
(
    @SALESDEPOSITTEMPLATEID uniqueidentifier = null
  ,@POSTSTATUSCODE tinyint = null
    ,@PAYMENTMETHODCODE tinyint = null
    ,@TRANSACTIONDATE date = null
  ,@PAYMENTDATE date = null
)
returns table
as
    return
  select
        CP.ID
        ,CP.AMOUNT
        ,CAST(SO.SEQUENCEID as nvarchar(20)) as SALESORDERNUMBER
        ,CP.PAYMENTMETHODCODE
        ,COALESCE(OC.[DESCRIPTION], CC.[DESCRIPTION], CP.PAYMENTMETHOD) as PAYMENTTYPE
        ,CCD.CREDITCARDPARTIALNUMBER
        ,CP.DATEADDED as TRANSACTIONDATE
    ,FT.TRANSACTIONCURRENCYID
    from dbo.CREDITPAYMENT CP
    inner join dbo.FINANCIALTRANSACTION FT on CP.CREDITID = FT.ID
    inner join dbo.CREDIT_EXT CX on CX.ID = FT.ID
    left join dbo.RECONCILIATION R on CP.RECONCILIATIONID = R.ID
    left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT BADCP on BADCP.ID = CP.ID
    left join dbo.SALESORDER SO on SO.ID = CX.SALESORDERID
    left join dbo.CREDITCARDPAYMENTMETHODDETAIL CCD 
        on CCD.ID = (select top 1 RPM.ID
                    from dbo.REVENUEPAYMENTMETHOD RPM
                    left join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.FINANCIALTRANSACTIONID = RPM.REVENUEID
                    where CP.REVENUEID = RPM.REVENUEID or CP.REVENUESPLITID = FTLI.ID) and cp.PAYMENTMETHODCODE = 2
    left join dbo.CREDITTYPECODE CC on CC.ID = CCD.CREDITTYPECODEID
    left join dbo.OTHERPAYMENTMETHODCODE OC on OC.ID = CP.OTHERPAYMENTMETHODCODEID
    where (R.STATUSCODE > 1 or SO.ID is null)
    and BADCP.DEPOSITID is null
    and (@POSTSTATUSCODE is null or FT.POSTSTATUSCODE = (case when @POSTSTATUSCODE = 2 then 3 else @POSTSTATUSCODE end))
        and (@PAYMENTMETHODCODE is null or CP.PAYMENTMETHODCODE = @PAYMENTMETHODCODE)
        and (CP.PAYMENTMETHODCODE != 10 or CP.OTHERPAYMENTMETHODCODEID not in (select ID from dbo.NONDEPOSITABLEPAYMENTMETHOD))
        and CP.REFUNDPROCESSED = 1
        and exists(select 1
            from dbo.SALESDEPOSITTEMPLATE SDT
            left join dbo.SALESDEPOSITTEMPLATEPAYMENTMETHOD SDTPM on SDTPM.SALESDEPOSITTEMPLATEID = SDT.ID
            left join dbo.SALESDEPOSITTEMPLATESALESCHANNEL SDTSC on SDTSC.SALESDEPOSITTEMPLATEID = SDT.ID
      left join dbo.SALESDEPOSITTEMPLATECURRENCY SDTC on SDTC.SALESDEPOSITTEMPLATEID = SDT.ID
            where SDT.ID = @SALESDEPOSITTEMPLATEID
                and (SDT.PAYMENTMETHODOPTIONCODE = 0
                    or ((SDTPM.PAYMENTMETHODCODE = CP.PAYMENTMETHODCODE)
                        and ((SDTPM.CREDITTYPECODEID is null and CCD.CREDITTYPECODEID is null)
                            or SDTPM.CREDITTYPECODEID = CCD.CREDITTYPECODEID)
                        and ((SDTPM.OTHERPAYMENTMETHODCODEID is null and CP.OTHERPAYMENTMETHODCODEID is null)
                            or SDTPM.OTHERPAYMENTMETHODCODEID = CP.OTHERPAYMENTMETHODCODEID)))
                and (SDT.SALESCHANNELOPTIONCODE = 0
                    or (SDTSC.SALESMETHODTYPECODE = SO.SALESMETHODTYPECODE)
          or (SDTSC.SALESMETHODTYPECODE = 4 and SO.ID is null))
        and (SDT.CURRENCYOPTIONCODE = 0
          or (SDTC.CURRENCYID = FT.TRANSACTIONCURRENCYID)))
        and (convert(Date, CP.DATEADDED) = @TRANSACTIONDATE or @TRANSACTIONDATE is null)
        and (((FT.CALCULATEDDATE <= @PAYMENTDATE and SO.ID is null)
            or (CAST((SELECT max(FT2.CALCULATEDDATE) 
                    from dbo.CREDITPAYMENT CP2
                    inner join dbo.FINANCIALTRANSACTION FT2 on FT2.ID = CP2.CREDITID
                    inner join RECONCILIATION R2 on CP2.RECONCILIATIONID = R2.ID
                    where R2.ID = R.ID) as DATE) <= @PAYMENTDATE))
        or @PAYMENTDATE is null)
    and exists (select 1 from dbo.SALESDEPOSITPROCESS SDP
                inner join dbo.SALESDEPOSITTEMPLATE SDT on SDT.SALESDEPOSITPROCESSID = SDP.ID
                where SDP.PDACCOUNTSYSTEMID = FT.PDACCOUNTSYSTEMID
                and SDT.ID = @SALESDEPOSITTEMPLATEID)