UFN_TREASURYDEPOSITTEMPLATE_GETUNLINKEDPAYMENTS

Return

Return Type
table

Parameters

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

Definition

Copy


CREATE function dbo.UFN_TREASURYDEPOSITTEMPLATE_GETUNLINKEDPAYMENTS
(
    @SALESDEPOSITTEMPLATEID uniqueidentifier
    ,@POSTSTATUSCODE tinyint = null -- 1 = Not posted, 2 = Posted, 3 = Do not post

    ,@TRANSACTIONDATE date = null
    ,@PAYMENTDATE date = null
)
returns table
as
    return
select distinct
    FT.ID, 
    FT.DATE as TRANSACTIONDATE, 
    PM.PAYMENTMETHOD,
    FT.TRANSACTIONAMOUNT as AMOUNT,
    FT.TYPE as TRANSACTIONTYPE,
    so.SALESMETHODTYPECODE,
    FT.TRANSACTIONCURRENCYID
from 
    dbo.FINANCIALTRANSACTION FT
    inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.FINANCIALTRANSACTIONID = FT.ID
    inner join dbo.REVENUEPAYMENTMETHOD PM on PM.REVENUEID = FT.ID
    inner join dbo.REVENUESPLIT_EXT RSX on RSX.ID = LI.ID
    left join dbo.BANKACCOUNTDEPOSITPAYMENT on FT.ID = BANKACCOUNTDEPOSITPAYMENT.ID
    left join dbo.SALESORDERPAYMENT SOP on SOP.PAYMENTID = FT.ID
    left join dbo.RESERVATIONSECURITYDEPOSITPAYMENT RSDP on RSDP.PAYMENTID = FT.ID
    left join dbo.SALESORDER SO on SO.ID = SOP.SALESORDERID or SO.ID = RSDP.RESERVATIONID
    left join dbo.RECONCILIATION R1 on SOP.RECONCILIATIONID = R1.ID or RSDP.RECONCILIATIONID = R1.ID
    left join dbo.OTHERPAYMENTMETHODDETAIL OD on OD.ID = PM.ID
    left join dbo.CREDITCARDPAYMENTMETHODDETAIL CCD on CCD.ID = PM.ID
where
    BANKACCOUNTDEPOSITPAYMENT.DEPOSITID is null
    AND FT.TYPECODE = 0
    and PM.PAYMENTMETHODCODE in (0,1,2,10)
    and (NOT (FT.POSTSTATUSCODE = 2 and LI.POSTSTATUSCODE = 3))
    and (@POSTSTATUSCODE is null 
        or (@POSTSTATUSCODE = FT.POSTSTATUSCODE)
        or (@POSTSTATUSCODE = LI.POSTSTATUSCODE and FT.POSTSTATUSCODE = 2))
    and (NOT exists(select ID from dbo.NONDEPOSITABLEPAYMENTMETHOD where ID = OD.OTHERPAYMENTMETHODCODEID))
    and ((SOP.DONOTRECONCILE = 1 and SO.STATUSCODE = 1)
        or (R1.STATUSCODE > 1 or R1.ID is null))
    and exists(select 1
                from dbo.SALESDEPOSITTEMPLATE SDT
                inner join dbo.SALESDEPOSITPROCESS SDP on SDT.SALESDEPOSITPROCESSID = SDP.ID
                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 SDP.PDACCOUNTSYSTEMID = FT.PDACCOUNTSYSTEMID
                    and (SDT.PAYMENTMETHODOPTIONCODE = 0
                        or ((SDTPM.PAYMENTMETHODCODE = PM.PAYMENTMETHODCODE)
                        and ((SDTPM.CREDITTYPECODEID is null and CCD.CREDITTYPECODEID is null)
                            or SDTPM.CREDITTYPECODEID = CCD.CREDITTYPECODEID)
                        and ((SDTPM.OTHERPAYMENTMETHODCODEID is null and OD.OTHERPAYMENTMETHODCODEID is null)
                            or SDTPM.OTHERPAYMENTMETHODCODEID = OD.OTHERPAYMENTMETHODCODEID)))
                    and (SDT.SALESCHANNELOPTIONCODE = 0
                        or (SDTSC.SALESMETHODTYPECODE = SO.SALESMETHODTYPECODE)
                        or (SDTSC.SALESMETHODTYPECODE = 4 and SOP.ID is null and RSX.APPLICATIONCODE not in(10, 11))
                        or (SDTSC.SALESMETHODTYPECODE = 5 and SOP.ID is null and RSX.APPLICATIONCODE = 11))
          and (SDT.CURRENCYOPTIONCODE = 0
            or (SDTC.CURRENCYID = FT.TRANSACTIONCURRENCYID)))
    and (((FT.CALCULATEDDATE <= @PAYMENTDATE and (SO.ID is null or SOP.DONOTRECONCILE = 1))
            or (CAST((SELECT max(FT2.CALCULATEDDATE) 
                    from dbo.RECONCILIATION R2
                    left join dbo.SALESORDERPAYMENT SOP2 on SOP2.RECONCILIATIONID = R2.ID
                    left join dbo.RESERVATIONSECURITYDEPOSITPAYMENT RSDP2 on RSDP2.RECONCILIATIONID = R2.ID
                    inner join FINANCIALTRANSACTION FT2 on FT2.ID = SOP2.PAYMENTID or FT2.ID =  RSDP2.PAYMENTID
                    where R2.ID = R1.ID) as DATE) <= @PAYMENTDATE))
        or @PAYMENTDATE is null)
    and (@TRANSACTIONDATE is null or FT.CALCULATEDDATE = @TRANSACTIONDATE)