USP_DATALIST_ORDERSALESDOCUMENTSTOPRINT

Returns a list of sales documents and prioritized printers to print for an order.

Parameters

Parameter Parameter Type Mode Description
@SALESORDERID uniqueidentifier IN Sales order ID
@WORKSTATIONMACHINENAME nvarchar(255) IN Workstation machine name

Definition

Copy


CREATE procedure dbo.USP_DATALIST_ORDERSALESDOCUMENTSTOPRINT (
    @SALESORDERID uniqueidentifier,
    @WORKSTATIONMACHINENAME nvarchar(255)
) as
    set nocount on;

    declare @WORKSTATIONID uniqueidentifier = dbo.UFN_WORKSTATION_GETIDBYMACHINENAME(@WORKSTATIONMACHINENAME);

    declare @DOCUMENTS table (
        DOCUMENTID uniqueidentifier,
        DOCUMENTTYPE nvarchar(100),
        DOCUMENTREPORTCATALOGID uniqueidentifier,
        PRINTERNAME nvarchar(255),
        PRINTERSEQUENCE int,
        DOCUMENTTYPECODE tinyint,
        DOCUMENTSEQUENCE int,
        DOCUMENTPRINTFORZEROBALANCEORDER bit,
        SVGTEMPLATE nvarchar(max)
    )

    insert into @DOCUMENTS
    select
        DOCUMENT.ID,
        DOCUMENT.TYPE,
        DOCUMENT.REPORTCATALOGID,
        WORKSTATIONPRINTER.PRINTERNAME,
        WORKSTATIONPRINTER.SEQUENCE,
        DOCUMENT.TYPECODE,
        DOCUMENT.SEQUENCE,
        DOCUMENT.PRINTFORZEROBALANCEORDER,
        DOCUMENTSVGTEMPLATE.TEMPLATE as SVGTEMPLATE
    from 
        dbo.SALESORDER
    inner join
        dbo.SALESMETHOD on SALESMETHOD.TYPECODE = SALESORDER.SALESMETHODTYPECODE
    inner join
        dbo.DOCUMENTPRINTINGRULESALESMETHOD on DOCUMENTPRINTINGRULESALESMETHOD.SALESMETHODID = SALESMETHOD.ID
    inner join
        dbo.DOCUMENTPRINTINGRULE on DOCUMENTPRINTINGRULESALESMETHOD.DOCUMENTPRINTINGRULEID = DOCUMENTPRINTINGRULE.ID and SALESORDER.DELIVERYMETHODID = DOCUMENTPRINTINGRULE.DELIVERYMETHODID
    inner join
        dbo.DELIVERYMETHOD on SALESORDER.DELIVERYMETHODID = DELIVERYMETHOD.ID and DELIVERYMETHOD.PRINTCODE = 1    
    inner join
        dbo.DOCUMENT on DOCUMENTPRINTINGRULE.DOCUMENTID = DOCUMENT.ID
    inner join
        dbo.PRINTERLISTITEM on DOCUMENT.PRINTERLISTID = PRINTERLISTITEM.PRINTERLISTID
    inner join
        dbo.WORKSTATIONPRINTER on PRINTERLISTITEM.PRINTERNAME = WORKSTATIONPRINTER.PRINTERNAME
    left outer join
        dbo.DOCUMENTSVGTEMPLATE on DOCUMENT.ID = DOCUMENTSVGTEMPLATE.ID
    where
        SALESORDER.ID = @SALESORDERID
        and WORKSTATIONPRINTER.WORKSTATIONID = @WORKSTATIONID
        and DOCUMENT.ISACTIVE = 1;

    select
        DOCUMENTS.DOCUMENTID as ID,
        DOCUMENTS.DOCUMENTTYPE as TYPE,
        0 TEMPLATEPRINTORDER,    
        DOCUMENTS.DOCUMENTREPORTCATALOGID as REPORTCATALOGID,
        null PROGRAMID,
        DOCUMENTS.PRINTERNAME,
        DOCUMENTS.PRINTERSEQUENCE as SEQUENCE,
        DOCUMENTS.DOCUMENTTYPECODE TEMPLATETYPECODE,
        CREDITCARDPAYMENTMETHODDETAIL.ID CREDITCARDPAYMENTMETHODDETAILID,
        1 as ISMERCHANTCOPY,
        @SALESORDERID SALESORDERID,
        null DOCUMENTPRINTINGHISTORYID,
        null CREDITPAYMENTID,
        null CREDITID,
        DOCUMENTS.DOCUMENTSEQUENCE,
        0 as SHOULDPRINTMERCHANTANDCUSTOMERCOPIES,
        DOCUMENTS.SVGTEMPLATE
    from 
        @DOCUMENTS as DOCUMENTS
    inner join
        dbo.SALESORDERPAYMENT on SALESORDERPAYMENT.SALESORDERID = @SALESORDERID
    inner join
        dbo.REVENUEPAYMENTMETHOD on SALESORDERPAYMENT.PAYMENTID = REVENUEPAYMENTMETHOD.REVENUEID
    inner join
        dbo.CREDITCARDPAYMENTMETHODDETAIL on CREDITCARDPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID
    where
        DOCUMENTS.DOCUMENTTYPECODE = 2 -- Credit Card Receipt


    union
    select
        DOCUMENTS.DOCUMENTID as ID,
        DOCUMENTS.DOCUMENTTYPE as TYPE,
        DOCUMENTS.DOCUMENTTYPECODE TEMPLATEPRINTORDER,    
        DOCUMENTS.DOCUMENTREPORTCATALOGID as REPORTCATALOGID,
        null PROGRAMID,
        DOCUMENTS.PRINTERNAME,
        DOCUMENTS.PRINTERSEQUENCE as SEQUENCE,
        DOCUMENTS.DOCUMENTTYPECODE TEMPLATETYPECODE,
        null CREDITCARDPAYMENTMETHODDETAILID,
        0 ISMERCHANTCOPY,
        @SALESORDERID SALESORDERID,
        null DOCUMENTPRINTINGHISTORYID,
        null CREDITPAYMENTID,
        null CREDITID,
        DOCUMENTS.DOCUMENTSEQUENCE,
        0 as SHOULDPRINTMERCHANTANDCUSTOMERCOPIES,
        DOCUMENTS.SVGTEMPLATE
    from 
        @DOCUMENTS as DOCUMENTS
    outer apply
        dbo.UFN_SALESORDER_TOTALS(@SALESORDERID) as TOTALS
    where
        DOCUMENTS.DOCUMENTTYPECODE not in (0, 2) and  -- Ticket, Credit Card Receipt

        (DOCUMENTS.DOCUMENTPRINTFORZEROBALANCEORDER = 1 or TOTALS.TOTAL <> 0)

    union
    select
        DOCUMENTS.DOCUMENTID as ID,
        PROGRAM.NAME as TYPE
        2 TEMPLATEPRINTORDER, 
        DOCUMENTS.DOCUMENTREPORTCATALOGID as REPORTCATALOGID,
        PROGRAMDOCUMENT.PROGRAMID,
        DOCUMENTS.PRINTERNAME,
        DOCUMENTS.DOCUMENTSEQUENCE as SEQUENCE,
        10 TEMPLATETYPECODE,
        null CREDITCARDPAYMENTMETHODDETAILID,
        0 ISMERCHANTCOPY,
        @SALESORDERID SALESORDERID,
        null DOCUMENTPRINTINGHISTORYID,
        null CREDITPAYMENTID,
        null CREDITID,
        PROGRAMDOCUMENT.SEQUENCE DOCUMENTSEQUENCE,
        0 as SHOULDPRINTMERCHANTANDCUSTOMERCOPIES,
        DOCUMENTS.SVGTEMPLATE
    from 
        @DOCUMENTS as DOCUMENTS
    inner join
        dbo.SALESORDERITEM on SALESORDERITEM.SALESORDERID = @SALESORDERID
    inner join
        dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
    inner join
        dbo.PROGRAM on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
    inner join
        dbo.PROGRAMDOCUMENT on PROGRAMDOCUMENT.PROGRAMID = PROGRAM.ID and PROGRAMDOCUMENT.DOCUMENTID = DOCUMENTS.DOCUMENTID
    where
        DOCUMENTS.DOCUMENTTYPECODE = 0  -- Ticket

    order by
        TEMPLATEPRINTORDER, DOCUMENTSEQUENCE, CREDITCARDPAYMENTMETHODDETAILID, ISMERCHANTCOPY desc, PROGRAMID, REPORTCATALOGID, DOCUMENTS.PRINTERSEQUENCE;

    return 0;