UFN_DOCUMENT_GETSALESDOCUMENTSTOPRINTCREDIT

Returns sales document to print and reprint for a refund.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CREDITID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_DOCUMENT_GETSALESDOCUMENTSTOPRINTCREDIT(@CREDITID uniqueidentifier)
returns @SALESDOCUMENTSTOPRINT table
(
    TYPE nvarchar(100),
    TYPECODE tinyint,                
    CREDITCARDPAYMENTMETHODDETAILID uniqueidentifier,                
    CREDITPAYMENTID uniqueidentifier,
    PRINTED bit,
    TOPRINT bit
)
as begin
    declare @CURRENCYSYMBOL nvarchar(5)

    select top 1 @CURRENCYSYMBOL = CURRENCYSYMBOL from dbo.CURRENCY where ISORGANIZATIONCURRENCY = 1

    declare @ISSECURITYDEPOSITREFUND bit = 0

    if exists (
        select *
        from dbo.FINANCIALTRANSACTIONLINEITEM as LI
        inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
        where LI.FINANCIALTRANSACTIONID = @CREDITID and EXT.TYPECODE = 12  -- Reservation security deposit

    ) begin
        set @ISSECURITYDEPOSITREFUND = 1
    end

    insert into @SALESDOCUMENTSTOPRINT
    --already printed documents

    select distinct
        PRINTINGHISTORY.TYPE,
        PRINTINGHISTORY.TYPECODE,                        
        PRINTINGHISTORY.CREDITCARDPAYMENTMETHODDETAILID,                                
        PRINTINGHISTORY.CREDITPAYMENTID,
        1 PRINTED,
        0 TOPRINT
    from
        dbo.UFN_DOCUMENT_GETPRINTINGHISTORYCREDIT(@CREDITID) PRINTINGHISTORY

    union all
    --refunds itemized receipts that should print

    select distinct
        DOCUMENT.TYPE + ':  (' + @CURRENCYSYMBOL +
        cast(FT.TRANSACTIONAMOUNT as nvarchar) + ') ' +
        convert(nvarchar, FT.DATEADDED, 101) TYPE,
        DOCUMENT.TYPECODE,                        
        null CREDITCARDPAYMENTMETHODDETAILID,                                
        null CREDITPAYMENTID,
        0 PRINTED,
        1 TOPRINT
    from
        dbo.FINANCIALTRANSACTION as FT
    left outer join
        dbo.DOCUMENTPRINTINGHISTORY on DOCUMENTPRINTINGHISTORY.TYPECODE = 5 and DOCUMENTPRINTINGHISTORY.CREDITID = FT.ID
    outer apply
        dbo.DOCUMENT
    where
        FT.ID = @CREDITID and
        FT.TYPECODE = 23 and  -- Refund

        DOCUMENT.TYPECODE = 5 and  -- Refund Itemized Receipt

        DOCUMENTPRINTINGHISTORY.ID is null and
        @ISSECURITYDEPOSITREFUND = 0

    union all
    --refund credit card receipts that should print

    select distinct
        DOCUMENT.TYPE + ':  (' + @CURRENCYSYMBOL +
        cast(CREDITPAYMENT.AMOUNT as nvarchar) + ') ' + ' *' +  
        CREDITCARDPAYMENTMETHODDETAIL.CREDITCARDPARTIALNUMBER + ' ' + 
        dbo.UFN_CREDITTYPECODE_GETDESCRIPTION(CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID) + ' ' +
        convert(nvarchar, FT.DATEADDED, 101)
        TYPE,
        DOCUMENT.TYPECODE,                        
        CREDITCARDPAYMENTMETHODDETAIL.ID CREDITCARDPAYMENTMETHODDETAILID,                                
        CREDITPAYMENT.ID,
        0 PRINTED,
        1 TOPRINT
    from
        dbo.FINANCIALTRANSACTION as FT
    inner join
        dbo.CREDITPAYMENT on CREDITPAYMENT.CREDITID = FT.ID
    left outer join
        dbo.FINANCIALTRANSACTIONLINEITEM as REFUNDEDLI on REFUNDEDLI.ID = CREDITPAYMENT.REVENUESPLITID and REFUNDEDLI.DELETEDON is null and REFUNDEDLI.TYPECODE <> 1  -- Reversal

    inner join
        dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = isnull(CREDITPAYMENT.REVENUEID, REFUNDEDLI.FINANCIALTRANSACTIONID)
    inner join
        dbo.CREDITCARDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 2 and CREDITCARDPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID    
    left outer join
        dbo.DOCUMENTPRINTINGHISTORY on DOCUMENTPRINTINGHISTORY.TYPECODE = 6 and DOCUMENTPRINTINGHISTORY.CREDITPAYMENTID = CREDITPAYMENT.ID
    outer apply
        dbo.DOCUMENT
    where
        FT.ID = @CREDITID and
        FT.TYPECODE = 23 and  -- Refund

        DOCUMENT.TYPECODE = 6 and  -- Refund Credit Card Receipt

        DOCUMENTPRINTINGHISTORY.ID is null

    return
end