UFN_DOCUMENT_GETSALESDOCUMENTSTOPRINT

Returns sales document to print and reprint for an order.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@SALESORDERID uniqueidentifier IN

Definition

Copy


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

    select @SALESMETHODTYPECODE = SALESMETHODTYPECODE from dbo.SALESORDER where ID = @SALESORDERID

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

    if @CURRENCYSYMBOL is null
        set @CURRENCYSYMBOL = '$'

    if @SALESMETHODTYPECODE = 3 begin
        insert into @SALESDOCUMENTSTOPRINT
        --already printed documents

        select distinct
            PRINTINGHISTORY.TYPE,
            PRINTINGHISTORY.TYPECODE,
            case when TYPECODE = 1 then null else PRINTINGHISTORY.CREDITCARDPAYMENTMETHODDETAILID end,
            PRINTINGHISTORY.CREDITID,
            PRINTINGHISTORY.CREDITPAYMENTID,
            1 PRINTED,
            0 TOPRINT
        from dbo.UFN_DOCUMENT_GETPRINTINGHISTORY(@SALESORDERID) PRINTINGHISTORY
        where PRINTINGHISTORY.TYPECODE in (1,2,5,6)  -- (Itemized Receipt, Credit Card Receipt, Refund Itemized Receipt, Refund Credit Card Receipt


        union all                            
        --credit card receipts that should print based on sales method but have not been printed

        select distinct           
            DOCUMENT.TYPE + ':  ' + @CURRENCYSYMBOL +
                cast(CREDITCARDPAYMENT.AMOUNT as nvarchar) + ' *' +  
                CREDITCARDPAYMENTMETHODDETAIL.CREDITCARDPARTIALNUMBER + ' ' + 
                dbo.UFN_CREDITTYPECODE_GETDESCRIPTION(CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID) as TYPE,
            DOCUMENT.TYPECODE,                        
            CREDITCARDPAYMENTMETHODDETAIL.ID CREDITCARDPAYMENTMETHODDETAILID,
            null CREDITID,
            null CREDITPAYMENTID,
            0 PRINTED,
            1 TOPRINT
        from
            dbo.SALESORDERPAYMENT CREDITCARDPAYMENT
        inner join
            dbo.REVENUEPAYMENTMETHOD CREDITCARDREVENUEPAYMENTMETHOD on CREDITCARDPAYMENT.PAYMENTID = CREDITCARDREVENUEPAYMENTMETHOD.REVENUEID and CREDITCARDREVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 2
        inner join
            dbo.CREDITCARDPAYMENTMETHODDETAIL on CREDITCARDREVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
        left outer join
            dbo.DOCUMENTPRINTINGHISTORY on CREDITCARDPAYMENTMETHODDETAIL.ID = DOCUMENTPRINTINGHISTORY.CREDITCARDPAYMENTMETHODDETAILID and DOCUMENTPRINTINGHISTORY.TYPECODE = 2
        outer apply
            dbo.DOCUMENT                                            
        where
            CREDITCARDPAYMENT.SALESORDERID = @SALESORDERID and
            DOCUMENT.PRINTFORGROUPSALES = 1 and                                
            DOCUMENT.TYPECODE = 2 and  -- Credit Card Receipt

            DOCUMENTPRINTINGHISTORY.ID is null

        union all
        --credit card receipts that exist, but are not set up to print based on sales method

        select distinct           
            DOCUMENT.TYPE + ':  ' + @CURRENCYSYMBOL +
                cast(CREDITCARDPAYMENT.AMOUNT as nvarchar) + ' *' +  
                CREDITCARDPAYMENTMETHODDETAIL.CREDITCARDPARTIALNUMBER + ' ' + 
                dbo.UFN_CREDITTYPECODE_GETDESCRIPTION(CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID) as TYPE,
            DOCUMENT.TYPECODE,                        
            CREDITCARDPAYMENTMETHODDETAIL.ID CREDITCARDPAYMENTMETHODDETAILID,
            null CREDITID,
            null CREDITPAYMENTID,
            0 PRINTED,
            0 TOPRINT
        from
            dbo.SALESORDERPAYMENT CREDITCARDPAYMENT
        inner join
            dbo.REVENUEPAYMENTMETHOD CREDITCARDREVENUEPAYMENTMETHOD on CREDITCARDREVENUEPAYMENTMETHOD.REVENUEID = CREDITCARDPAYMENT.PAYMENTID and CREDITCARDREVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 2
        inner join
            dbo.CREDITCARDPAYMENTMETHODDETAIL on CREDITCARDREVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
        left outer join
            dbo.DOCUMENTPRINTINGHISTORY on CREDITCARDPAYMENTMETHODDETAIL.ID = DOCUMENTPRINTINGHISTORY.CREDITCARDPAYMENTMETHODDETAILID and DOCUMENTPRINTINGHISTORY.TYPECODE = 2
        outer apply
            dbo.DOCUMENT
        where
            CREDITCARDPAYMENT.SALESORDERID = @SALESORDERID and
            DOCUMENT.TYPECODE = 2 and -- Credit Card Receipt

            DOCUMENTPRINTINGHISTORY.ID is null and
            not exists
                (
                    select DOCUMENT.ID
                    from dbo.DOCUMENT
                    where DOCUMENT.TYPECODE = 2 and  -- Credit Card Receipt

                    DOCUMENT.PRINTFORGROUPSALES = 1
                )

        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) as TYPE,
            DOCUMENT.TYPECODE,                        
            null CREDITCARDPAYMENTMETHODDETAILID,
            FT.ID CREDITID,
            CREDITPAYMENT.ID,
            0 PRINTED,
            DOCUMENT.PRINTFORGROUPSALES TOPRINT
        from
            dbo.UFN_SALESORDER_REFUNDS(@SALESORDERID) as REFUNDTRANSACTIONS
        inner join
            dbo.FINANCIALTRANSACTION as FT on FT.ID = REFUNDTRANSACTIONS.ID
        inner join
            dbo.CREDITPAYMENT on CREDITPAYMENT.CREDITID = FT.ID
        inner join
            dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = CREDITPAYMENT.REVENUEID
        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
            DOCUMENT.TYPECODE = 6 and  -- Refund Credit Card Receipt

            DOCUMENTPRINTINGHISTORY.ID is null and
            DOCUMENT.PRINTFORGROUPSALES = 1

        union all
        select distinct
            DOCUMENT.TYPE,
            DOCUMENT.TYPECODE,                        
            null CREDITCARDPAYMENTMETHODDETAILID,
            null CREDITID,
            null CREDITPAYMENTID,
            0 PRINTED,
            0 TOPRINT
        from
            dbo.DOCUMENT 
        inner join
            dbo.DOCUMENTPRINTINGRULE on DOCUMENT.ID = DOCUMENTPRINTINGRULE.DOCUMENTID
        inner join
            dbo.DOCUMENTPRINTINGRULESALESMETHOD on DOCUMENTPRINTINGRULE.ID = DOCUMENTPRINTINGRULESALESMETHOD.DOCUMENTPRINTINGRULEID    
        inner join
            dbo.SALESMETHOD on DOCUMENTPRINTINGRULESALESMETHOD.SALESMETHODID = SALESMETHOD.ID
        left outer join
            dbo.DOCUMENTPRINTINGHISTORY on DOCUMENT.TYPECODE = DOCUMENTPRINTINGHISTORY.TYPECODE and DOCUMENTPRINTINGHISTORY.SALESORDERID = @SALESORDERID        
        where
            DOCUMENT.TYPECODE = 1 and  -- Itemized Receip

            DOCUMENTPRINTINGHISTORY.ID is null and
            not exists (
                select DPR.ID 
                from dbo.DOCUMENTPRINTINGRULE DPR 
                inner join dbo.DOCUMENTPRINTINGRULESALESMETHOD DPRSM on DPR.ID = DPRSM.DOCUMENTPRINTINGRULEID
                inner join dbo.SALESMETHOD SM on DPRSM.SALESMETHODID = SM.ID
                inner join dbo.SALESORDER SO on DPR.DELIVERYMETHODID = SO.DELIVERYMETHODID and SM.TYPECODE = SO.SALESMETHODTYPECODE
                where SO.ID = @SALESORDERID and DPR.DOCUMENTID = DOCUMENT.ID
            )

        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,
            FT.ID CREDITID,
            CREDITPAYMENT.ID CREDITPAYMENTID,
            0 PRINTED,
            1 TOPRINT
        from
            dbo.UFN_SALESORDER_REFUNDS(@SALESORDERID) as REFUNDTRANSACTIONS
        inner join
            dbo.FINANCIALTRANSACTION as FT on FT.ID = REFUNDTRANSACTIONS.ID
        inner join
            dbo.CREDITPAYMENT on CREDITPAYMENT.CREDITID = FT.ID
        left outer join
            dbo.DOCUMENTPRINTINGHISTORY on DOCUMENTPRINTINGHISTORY.TYPECODE = 5 and DOCUMENTPRINTINGHISTORY.CREDITID = FT.ID
        outer apply
            dbo.DOCUMENT
        where    
            DOCUMENT.TYPECODE = 5 and  -- Refund Itemized Receipt

            DOCUMENTPRINTINGHISTORY.ID is null
    end
    else begin
        insert into @SALESDOCUMENTSTOPRINT
        --already printed documents

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

        union all
        --itemized receipts, mailing header, and will call headers that should print based on sales method and delivery method but have not been printed.

        select distinct
            DOCUMENT.TYPE,
            DOCUMENT.TYPECODE,                        
            null CREDITCARDPAYMENTMETHODDETAILID,
            null CREDITID,
            null CREDITPAYMENTID,
            0 PRINTED,
            1 TOPRINT
        from
            dbo.DOCUMENT 
        inner join
            dbo.DOCUMENTPRINTINGRULE on DOCUMENT.ID = DOCUMENTPRINTINGRULE.DOCUMENTID
        inner join
            dbo.DOCUMENTPRINTINGRULESALESMETHOD on DOCUMENTPRINTINGRULE.ID = DOCUMENTPRINTINGRULESALESMETHOD.DOCUMENTPRINTINGRULEID    
        inner join
            dbo.SALESMETHOD on DOCUMENTPRINTINGRULESALESMETHOD.SALESMETHODID = SALESMETHOD.ID
        inner join
            dbo.SALESORDER on SALESMETHOD.TYPECODE = SALESORDER.SALESMETHODTYPECODE and DOCUMENTPRINTINGRULE.DELIVERYMETHODID = SALESORDER.DELIVERYMETHODID
        left outer join
            dbo.DOCUMENTPRINTINGHISTORY on DOCUMENTPRINTINGHISTORY.SALESORDERID = SALESORDER.ID and DOCUMENTPRINTINGHISTORY.TYPECODE = DOCUMENT.TYPECODE
        where
            SALESORDER.ID = @SALESORDERID and                        
            DOCUMENT.TYPECODE in (1,3,4) and  -- Itemized Receipt, Mailing Header, Will Call Header

            DOCUMENTPRINTINGHISTORY.ID is null

        union all
        --credit card receipts that should print based on sales method and delivery method but have not been printed

        select distinct           
            DOCUMENT.TYPE + ':  ' + @CURRENCYSYMBOL +
            cast(CREDITCARDPAYMENT.AMOUNT as nvarchar) + ' *' +  
            CREDITCARDPAYMENTMETHODDETAIL.CREDITCARDPARTIALNUMBER + ' ' + 
            dbo.UFN_CREDITTYPECODE_GETDESCRIPTION(CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID)
            TYPE,
            DOCUMENT.TYPECODE,                        
            CREDITCARDPAYMENTMETHODDETAIL.ID CREDITCARDPAYMENTMETHODDETAILID,
            null CREDITID,
            null CREDITPAYMENTID,
            0 PRINTED,
            1 TOPRINT
        from
            dbo.DOCUMENT
        inner join
            dbo.DOCUMENTPRINTINGRULE on DOCUMENT.ID = DOCUMENTPRINTINGRULE.DOCUMENTID
        inner join
            dbo.DOCUMENTPRINTINGRULESALESMETHOD on DOCUMENTPRINTINGRULE.ID = DOCUMENTPRINTINGRULESALESMETHOD.DOCUMENTPRINTINGRULEID
        inner join
            dbo.SALESMETHOD on DOCUMENTPRINTINGRULESALESMETHOD.SALESMETHODID = SALESMETHOD.ID
        inner join
            dbo.SALESORDER on SALESMETHOD.TYPECODE = SALESORDER.SALESMETHODTYPECODE and DOCUMENTPRINTINGRULE.DELIVERYMETHODID = SALESORDER.DELIVERYMETHODID    
        --credit card receipts

        inner join
            dbo.SALESORDERPAYMENT CREDITCARDPAYMENT on SALESORDER.ID = CREDITCARDPAYMENT.SALESORDERID        
        inner join
            dbo.REVENUEPAYMENTMETHOD CREDITCARDREVENUEPAYMENTMETHOD on CREDITCARDREVENUEPAYMENTMETHOD.REVENUEID = CREDITCARDPAYMENT.PAYMENTID and CREDITCARDREVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 2
        inner join
            dbo.CREDITCARDPAYMENTMETHODDETAIL on CREDITCARDREVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID        
        left outer join
            dbo.DOCUMENTPRINTINGHISTORY on SALESORDER.ID = DOCUMENTPRINTINGHISTORY.SALESORDERID and DOCUMENT.TYPECODE = DOCUMENTPRINTINGHISTORY.TYPECODE
        where
            SALESORDER.ID = @SALESORDERID and
            DOCUMENT.TYPECODE = 2 and  -- Credit Card Receipt

            DOCUMENTPRINTINGHISTORY.ID is null

        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,
            FT.ID CREDITID,
            null CREDITPAYMENTID,
            0 PRINTED,
            1 TOPRINT
        from
            dbo.UFN_SALESORDER_REFUNDS(@SALESORDERID) as REFUNDTRANSACTIONS
        inner join
            dbo.FINANCIALTRANSACTION as FT on FT.ID = REFUNDTRANSACTIONS.ID
        left outer join
            dbo.DOCUMENTPRINTINGHISTORY on DOCUMENTPRINTINGHISTORY.TYPECODE = 5 and DOCUMENTPRINTINGHISTORY.CREDITID = FT.ID
        outer apply
            dbo.DOCUMENT
        where
            DOCUMENT.TYPECODE = 5 and  -- Refund Itemized Receipt

            DOCUMENTPRINTINGHISTORY.ID is null

        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,                        
            null CREDITCARDPAYMENTMETHODDETAILID,
            FT.ID CREDITID,
            CREDITPAYMENT.ID,
            0 PRINTED,
            1 TOPRINT
        from
            dbo.UFN_SALESORDER_REFUNDS(@SALESORDERID) as REFUNDTRANSACTIONS
        inner join
            dbo.FINANCIALTRANSACTION as FT on FT.ID = REFUNDTRANSACTIONS.ID
        inner join
            dbo.CREDITPAYMENT on CREDITPAYMENT.CREDITID = FT.ID
        left outer join
            dbo.FINANCIALTRANSACTIONLINEITEM as REFUNDEDLI on REFUNDEDLI.ID = CREDITPAYMENT.REVENUESPLITID
        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
            DOCUMENT.TYPECODE = 6 and  -- Refund Credit Card Receipt

            DOCUMENTPRINTINGHISTORY.ID is null

        union all    
        --itemized receipts, mailing header, and will call headers that exist, but are not set up to print based on sales method and delivery method

        select distinct
            DOCUMENT.TYPE,
            DOCUMENT.TYPECODE,                        
            null CREDITCARDPAYMENTMETHODDETAILID,
            null CREDITID,
            null CREDITPAYMENTID,
            0 PRINTED,
            0 TOPRINT
        from
            dbo.DOCUMENT 
        inner join
            dbo.DOCUMENTPRINTINGRULE on DOCUMENT.ID = DOCUMENTPRINTINGRULE.DOCUMENTID
        inner join
            dbo.DOCUMENTPRINTINGRULESALESMETHOD on DOCUMENTPRINTINGRULE.ID = DOCUMENTPRINTINGRULESALESMETHOD.DOCUMENTPRINTINGRULEID    
        inner join
            dbo.SALESMETHOD on DOCUMENTPRINTINGRULESALESMETHOD.SALESMETHODID = SALESMETHOD.ID
        left outer join
            dbo.DOCUMENTPRINTINGHISTORY on DOCUMENT.TYPECODE = DOCUMENTPRINTINGHISTORY.TYPECODE and DOCUMENTPRINTINGHISTORY.SALESORDERID = @SALESORDERID        
        where
            DOCUMENT.TYPECODE in (1,3,4) and  -- Itemized Receipt, Mailing Header, Will Call Header

            DOCUMENTPRINTINGHISTORY.ID is null and
            not exists (
                select DPR.ID 
                from dbo.DOCUMENTPRINTINGRULE DPR 
                inner join dbo.DOCUMENTPRINTINGRULESALESMETHOD DPRSM on DPR.ID = DPRSM.DOCUMENTPRINTINGRULEID
                inner join dbo.SALESMETHOD SM on DPRSM.SALESMETHODID = SM.ID
                inner join dbo.SALESORDER SO on DPR.DELIVERYMETHODID = SO.DELIVERYMETHODID and SM.TYPECODE = SO.SALESMETHODTYPECODE
                where SO.ID = @SALESORDERID and DPR.DOCUMENTID = DOCUMENT.ID
            )

        union all
        --credit card receipts that exist, but are not set up to print based on sales method and delivery method

        select distinct           
            DOCUMENT.TYPE + ':  ' + @CURRENCYSYMBOL +
                cast(CREDITCARDPAYMENT.AMOUNT as nvarchar) + ' *' +  
                CREDITCARDPAYMENTMETHODDETAIL.CREDITCARDPARTIALNUMBER + ' ' + 
                dbo.UFN_CREDITTYPECODE_GETDESCRIPTION(CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID) as TYPE,
            DOCUMENT.TYPECODE,                        
            CREDITCARDPAYMENTMETHODDETAIL.ID CREDITCARDPAYMENTMETHODDETAILID,
            null CREDITID,
            null CREDITPAYMENTID,
            0 PRINTED,
            0 TOPRINT
        from
            dbo.SALESORDERPAYMENT CREDITCARDPAYMENT
        inner join dbo.REVENUE CREDITCARDREVENUE on
            CREDITCARDPAYMENT.PAYMENTID = CREDITCARDREVENUE.ID
        inner join
            dbo.REVENUEPAYMENTMETHOD CREDITCARDREVENUEPAYMENTMETHOD on CREDITCARDREVENUEPAYMENTMETHOD.REVENUEID = CREDITCARDPAYMENT.PAYMENTID and CREDITCARDREVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 2
        inner join
            dbo.CREDITCARDPAYMENTMETHODDETAIL on CREDITCARDREVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
        outer apply
            dbo.DOCUMENT 
        left outer join
            dbo.DOCUMENTPRINTINGHISTORY on DOCUMENT.TYPECODE = DOCUMENTPRINTINGHISTORY.TYPECODE and DOCUMENTPRINTINGHISTORY.SALESORDERID = CREDITCARDPAYMENT.SALESORDERID
        where
            CREDITCARDPAYMENT.SALESORDERID = @SALESORDERID and
            DOCUMENT.TYPECODE = 2 and
            DOCUMENTPRINTINGHISTORY.ID is null and
            not exists
                (
                    select DPR.ID 
                    from dbo.DOCUMENTPRINTINGRULE DPR 
                    inner join dbo.DOCUMENTPRINTINGRULESALESMETHOD DPRSM on DPR.ID = DPRSM.DOCUMENTPRINTINGRULEID
                    inner join dbo.SALESMETHOD SM on DPRSM.SALESMETHODID = SM.ID
                    inner join dbo.SALESORDER SO on DPR.DELIVERYMETHODID = SO.DELIVERYMETHODID and SM.TYPECODE = SO.SALESMETHODTYPECODE
                    where SO.ID = @SALESORDERID and DPR.DOCUMENTID = DOCUMENT.ID
                )
    end

    return
end