USP_DATALIST_DISBURSEMENTPROCESS_TRANSACTIONS

Lists transactions that belong to a specific disbursement process.

Parameters

Parameter Parameter Type Mode Description
@DISBURSEMENTPROCESSID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_DISBURSEMENTPROCESS_TRANSACTIONS(@DISBURSEMENTPROCESSID uniqueidentifier)
as
    set nocount on;

-- Transactions being paid

select 
    ID
  -- display fields

    , VENDORNAME
    , AMOUNT
    , DISCOUNTAMOUNT 
    , NETAMOUNT
  , AMOUNTTOPAY
    , DUEDATE
    , PAYMENTMETHOD
  , REMITADDRESS
  -- grid interaction fields

  , PARENTID
  , DISBURSEMENTID
  , TYPECODE
  , TRANSACTIONRECORDID
    , RECORDID
  , VENDORSORTORDERNAME   -- Used to sort by constituent.keyname since individuals need to be sorted by last name but we want to display constituent.name

from (
 select
    FTS.ID
    , case when len(FTPAID.USERDEFINEDID) = 0 
            then '' 
            else FTPAID.USERDEFINEDID + ' '
        end +
        case 
            when CM.ID is null and I.ID is not null then 'Invoice: '
            when I.ID is null and CM.ID is not null then 'Credit memo: '
            else ''
        end +
        convert(varchar(10), FTPAID.[DATE], 101
        [VENDORNAME]
    ,case 
    when I.ID is null and CM.ID is not null then -FTS.AMOUNT 
    when CM.ID is null and I.ID is not null then FTS.AMOUNT 
    else null
   end AMOUNT
    ,FTDISC.DISCOUNTAMOUNT
  ,case 
    when FTPAID.TYPECODE = 102 then -FTS.AMOUNT --Credit memos

    else FTS.AMOUNT + coalesce(FTDISC.DISCOUNTAMOUNT, 0)
   end NETAMOUNT
    ,case 
    when FTPAID.TYPECODE = 102 then -FTA.AMOUNT --Credit memos

    else FTA.AMOUNT
  end AMOUNTTOPAY
    ,FTS.DUEDATE DUEDATE
    ,'' PAYMENTMETHOD
  ,'' REMITADDRESS
    ,1 SORTORDER
  ,FT.ID PARENTID
  ,FT.ID DISBURSEMENTID
  ,FTPAID.TYPECODE
  ,FTPAID.ID TRANSACTIONRECORDID
    ,FTA.ID RECORDID
  ,null VENDORSORTORDERNAME
    from dbo.FINANCIALTRANSACTION as FT
        inner join dbo.CONSTITUENT as C on FT.CONSTITUENTID = C.ID
        inner join dbo.DISBURSEMENTPROCESSDISBURSEMENT as DPD on FT.ID = DPD.ID
        inner join dbo.FINANCIALTRANSACTIONAPPLICATION as FTA on FT.ID = FTA.FINANCIALTRANSACTIONID and FTA.TYPECODE = 0 and FTA.STATUSCODE != 2
        inner join dbo.FINANCIALTRANSACTIONSCHEDULE as FTS on FTA.FINANCIALTRANSACTIONSCHEDULEID = FTS.ID and FTS.DELETED = 0
        inner join dbo.FINANCIALTRANSACTION as FTPAID on FTS.FINANCIALTRANSACTIONID = FTPAID.ID
        left outer join (
            select
                FTA.FINANCIALTRANSACTIONSCHEDULEID
                ,-FTA.AMOUNT [DISCOUNTAMOUNT]
            from dbo.FINANCIALTRANSACTIONAPPLICATION FTA
            where FTA.TYPECODE = 1 and FTA.STATUSCODE != 2
        ) as FTDISC on FTA.FINANCIALTRANSACTIONSCHEDULEID = FTDISC.FINANCIALTRANSACTIONSCHEDULEID

        left outer join dbo.INVOICE as I on FTPAID.ID= I.ID
        left outer join dbo.CREDITMEMO as CM on FTPAID.ID = CM.ID        
where
    DPD.DISBURSEMENTPROCESSID = @DISBURSEMENTPROCESSID
    and FT.TYPECODE = 255
    and FTA.AMOUNT > 0

union all

-- Disbursements Created

select 
    FT.ID
    ,C.NAME  VENDORNAME
    ,APPLIED.NETAMOUNT [TRANSACTIONAMOUNT]
    ,-APPLIED.DISCOUNTAMOUNT
    ,APPLIED.NETAMOUNT - APPLIED.DISCOUNTAMOUNT [NETAMOUNT]
    ,FT.TRANSACTIONAMOUNT [AMOUNTTOPAY]
    ,null DUEDATE
    ,'Check' PAYMENTMETHOD
    ,dbo.UFN_VENDOR_FORMATADDRESS(DPD.REMITADDRESSID) REMITADDRESS
    ,0 SORTORDER
    ,null PARENTID
    ,FT.ID DISBURSEMENTID
    ,-1 TYPECODE  -- Using a negative to keep from clashing with FT typecodes.

    ,C.ID TRANSACTIONRECORDID
    ,DPD.ID RECORDID
  ,C.KEYNAME VENDORSORTORDERNAME
    from dbo.FINANCIALTRANSACTION as FT
        inner join dbo.CONSTITUENT as C on FT.CONSTITUENTID = C.ID
        inner join dbo.DISBURSEMENTPROCESSDISBURSEMENT as DPD on FT.ID = DPD.ID
        inner join (
            select sum(
                        case FTA.TYPECODE 
                            when 1 then FTA.AMOUNT
                            else 0 
                        end
                     ) DISCOUNTAMOUNT
          , sum(
                        case FT.TYPECODE 
                            when 101 then FTA.AMOUNT
              when 102 then -FTA.AMOUNT
                            else 0 
                        end
                    ) AMOUNTTOPAY
                    , sum(
                        case FTA.TYPECODE 
                            when 0 then 
                            case FT.TYPECODE
                                when 101 then FTS.AMOUNT
                                when 102 then -FTS.AMOUNT
                                else 0
                            end
                            else 0 
                        end
                    ) NETAMOUNT
                    , FTA.FINANCIALTRANSACTIONID
                from 
                    dbo.FINANCIALTRANSACTIONAPPLICATION as FTA
                    inner join dbo.FINANCIALTRANSACTIONSCHEDULE as FTS on FTA.FINANCIALTRANSACTIONSCHEDULEID=FTS.ID and FTS.DELETED = 0
                    inner join dbo.FINANCIALTRANSACTION as FT on FTS.FINANCIALTRANSACTIONID = FT.ID
                where FTA.AMOUNT > 0
                group by FTA.FINANCIALTRANSACTIONID
        ) as APPLIED on APPLIED.FINANCIALTRANSACTIONID = FT.ID
where
    DPD.DISBURSEMENTPROCESSID = @DISBURSEMENTPROCESSID
    and FT.TYPECODE = 255
    and APPLIED.AMOUNTTOPAY >= 0
) AS T
order by T.VENDORSORTORDERNAME ASC, T.VENDORNAME ASC, T.NETAMOUNT DESC, T.SORTORDER ASC;