UFN_SALESDEPOSITPROCESS_GETACCOUNTSYSTEMTRANSACTIONS

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@SALESDEPOSITPROCESSID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_SALESDEPOSITPROCESS_GETACCOUNTSYSTEMTRANSACTIONS
(
    @SALESDEPOSITPROCESSID uniqueidentifier
)
RETURNS TABLE AS
RETURN (
    with NOTPOSTEDTRANSACTIONS as (
        select FT.ID, FT.TRANSACTIONCURRENCYID, FT.PDACCOUNTSYSTEMID, FT.DATE, FT.TRANSACTIONAMOUNT
        from dbo.ADJUSTMENT
        inner join dbo.FINANCIALTRANSACTION as FT on FT.ID = ADJUSTMENT.REVENUEID
        where
            ADJUSTMENT.POSTSTATUSCODE = 1  -- Not posted

            and FT.TYPECODE = 0  -- Payment

            and FT.DELETEDON is null

        union
        select ID, TRANSACTIONCURRENCYID, PDACCOUNTSYSTEMID, DATE, TRANSACTIONAMOUNT
        from dbo.FINANCIALTRANSACTION
        where
            TYPECODE = 0  -- Payment

            and DELETEDON is null
            and POSTSTATUSCODE <> 2  -- Posted

    )
    select
        PAYMENT.ID,
        SALESORDER.TRANSACTIONDATE,
        REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
        coalesce(OTHERPAYMENTMETHODCODE.DESCRIPTION, CREDITTYPECODE.DESCRIPTION, REVENUEPAYMENTMETHOD.PAYMENTMETHOD) as PAYMENTMETHOD,
        SALESORDER.SALESMETHODTYPECODE as SALESMETHODCODE,
        SALESORDER.SALESMETHODTYPE as SALESMETHOD,
        CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID,
        OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID,
        PAYMENT.AMOUNT,
        0 as ISREFUND,
        FT.TRANSACTIONCURRENCYID
    from
        NOTPOSTEDTRANSACTIONS as FT
    inner join
        dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = FT.ID
    inner join (
        select ID, AMOUNT, PAYMENTID, SALESORDERID, RECONCILIATIONID, DONOTRECONCILE from dbo.SALESORDERPAYMENT
        union all
        select ID, AMOUNT, PAYMENTID, RESERVATIONID as SALESORDERID, RECONCILIATIONID, 1 as DONOTRECONCILE from dbo.RESERVATIONSECURITYDEPOSITPAYMENT
    ) as PAYMENT on PAYMENT.PAYMENTID = FT.ID
    inner join
        dbo.SALESORDER on SALESORDER.ID = PAYMENT.SALESORDERID
    left outer join
        dbo.RECONCILIATION on RECONCILIATION.ID = PAYMENT.RECONCILIATIONID
    left outer join
        dbo.CREDITCARDPAYMENTMETHODDETAIL on CREDITCARDPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID
    left outer join
        dbo.CREDITTYPECODE on CREDITTYPECODE.ID = CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID
    left outer join
        dbo.OTHERPAYMENTMETHODDETAIL on OTHERPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID
    left outer join
        dbo.OTHERPAYMENTMETHODCODE on OTHERPAYMENTMETHODCODE.ID = OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID
    where
        (
            RECONCILIATION.STATUSCODE in (2, 3)  -- Approved, Deposited

            or (RECONCILIATION.ID is null and PAYMENT.DONOTRECONCILE = 1 and SALESORDER.STATUSCODE = 1 /* Complete */)
        )
        and (OTHERPAYMENTMETHODDETAIL.ID is null or OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID not in (select ID from dbo.NONDEPOSITABLEPAYMENTMETHOD))
        and PAYMENT.PAYMENTID not in (select ID from dbo.BANKACCOUNTDEPOSITPAYMENT with (nolock) where DEPOSITID is not null)
        and (@SALESDEPOSITPROCESSID is null or FT.PDACCOUNTSYSTEMID = (select PDACCOUNTSYSTEMID from dbo.SALESDEPOSITPROCESS where ID = @SALESDEPOSITPROCESSID))

    union all
    select 
        CP.ID
        ,cast(FT.DATE as datetime)
        ,CP.PAYMENTMETHODCODE
        ,COALESCE(O.[DESCRIPTION], CC.[DESCRIPTION], CP.PAYMENTMETHOD) as PAYMENTMETHOD
        ,isnull(SO.SALESMETHODTYPECODE, 4) as SALESMETHODTYPECODE
        ,COALESCE(SO.SALESMETHODTYPE, 'Back Office Revenue') as SALESMETHODTYPE
        ,case CP.PAYMENTMETHODCODE
      when 2 then
        CCD.CREDITTYPECODEID
      else
        null
    end as CREDITTYPECODEID
        ,CP.OTHERPAYMENTMETHODCODEID
        ,CP.AMOUNT
        ,1 ISREFUND
        ,FT.TRANSACTIONCURRENCYID
    from dbo.CREDITPAYMENT CP
    inner join dbo.FINANCIALTRANSACTION FT on FT.ID = CP.CREDITID
    inner join dbo.CREDIT_EXT CX on CX.ID = FT.ID
    left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT BADCP on BADCP.ID = CP.ID
    left join dbo.RECONCILIATION R on R.ID = CP.RECONCILIATIONID
    outer apply (
        select top 1 ID
        from (
            select REVENUEPAYMENTMETHOD.ID from dbo.REVENUEPAYMENTMETHOD where REVENUEPAYMENTMETHOD.REVENUEID = CP.REVENUEID
            union
            select REVENUEPAYMENTMETHOD.ID
            from dbo.REVENUEPAYMENTMETHOD
            inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = REVENUEPAYMENTMETHOD.REVENUEID
            where LI.ID = CP.REVENUESPLITID
        ) as REVENUEPAYMENTMETHOD
    ) as REVENUEPAYMENTMETHOD
    left join dbo.CREDITCARDPAYMENTMETHODDETAIL CCD on CCD.ID = REVENUEPAYMENTMETHOD.ID
    left join dbo.CREDITTYPECODE CC on CC.ID = CCD.CREDITTYPECODEID and PAYMENTMETHODCODE = 2
    left join dbo.OTHERPAYMENTMETHODCODE O on O.ID = CP.OTHERPAYMENTMETHODCODEID and PAYMENTMETHODCODE = 10
    left join dbo.SALESORDER SO on SO.ID = CX.SALESORDERID
    where
        (
            R.STATUSCODE in (2,3)  -- Approved, Deposited

            or SO.ID is null
        )
        and (CP.REFUNDPROCESSED = 1)
        and (FT.POSTSTATUSCODE <> 2)  -- Posted

        and (CP.OTHERPAYMENTMETHODCODEID is null or CP.OTHERPAYMENTMETHODCODEID not in (select ID from dbo.NONDEPOSITABLEPAYMENTMETHOD))
        and (BADCP.DEPOSITID is null)
        and (@SALESDEPOSITPROCESSID is null or FT.PDACCOUNTSYSTEMID = (select PDACCOUNTSYSTEMID from dbo.SALESDEPOSITPROCESS where ID = @SALESDEPOSITPROCESSID))

    union all
    select distinct
        FT.ID,
        FT.DATE,
        PM.PAYMENTMETHODCODE,
        coalesce(O.[DESCRIPTION], CC.[DESCRIPTION], PM.PAYMENTMETHOD) as PAYMENTMETHOD,
        case RSX.APPLICATIONCODE when 11 then 5 else 4 end as SALESMETHODCODE,
        case RSX.APPLICATIONCODE 
            when 11 then 'Treasury Miscellaneous Payments' 
            else 'Back Office Revenue' end as SALESMETHOD,
        CCD.CREDITTYPECODEID,
        OD.OTHERPAYMENTMETHODCODEID,
        FT.TRANSACTIONAMOUNT,
        0 as ISREFUND
        ,FT.TRANSACTIONCURRENCYID
    from NOTPOSTEDTRANSACTIONS as 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.REVENUEREFERENCE on REVENUEREFERENCE.ID = FT.ID
    left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = FT.ID
    left join dbo.ADJUSTMENT on ADJUSTMENT.REVENUEID = REVENUEPOSTED.ID
    left join dbo.OTHERPAYMENTMETHODDETAIL OD on OD.ID = PM.ID
    left join dbo.CREDITCARDPAYMENTMETHODDETAIL CCD on CCD.ID = PM.ID
    left join dbo.CREDITTYPECODE CC on CC.ID = CCD.CREDITTYPECODEID
    left join dbo.OTHERPAYMENTMETHODCODE O on O.ID = OD.OTHERPAYMENTMETHODCODEID
    where
        BANKACCOUNTDEPOSITPAYMENT.DEPOSITID is null
        and PM.PAYMENTMETHODCODE in (0,1,2,10)  -- Cash, Check, Credit Card, Other

        and not exists(select ID from dbo.NONDEPOSITABLEPAYMENTMETHOD where ID = OD.OTHERPAYMENTMETHODCODEID)
        and RSX.APPLICATIONCODE <> 10  -- Order

        and (@SALESDEPOSITPROCESSID is null or FT.PDACCOUNTSYSTEMID = (select PDACCOUNTSYSTEMID from dbo.SALESDEPOSITPROCESS where ID = @SALESDEPOSITPROCESSID))
        and FT.ID not in (select PAYMENTID from dbo.SALESORDERPAYMENT)
)