USP_SALESORDER_SALESDOCUMENTWORKSTATIONPRINTERS
Lists sales document templates and printers for a given template type and workstation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@WORKSTATIONID | uniqueidentifier | IN | Workstation ID |
@TEMPLATETYPE | tinyint | IN | Template type |
@ORDERID | uniqueidentifier | IN | Order ID |
@PROGRAMID | uniqueidentifier | IN | Program ID |
@IGNOREDELIVERYMETHOD | bit | IN | Ignore delivery method |
Definition
Copy
CREATE procedure dbo.USP_SALESORDER_SALESDOCUMENTWORKSTATIONPRINTERS(
@WORKSTATIONID uniqueidentifier,
@TEMPLATETYPE tinyint,
@ORDERID uniqueidentifier,
@PROGRAMID uniqueidentifier,
@IGNOREDELIVERYMETHOD bit=0)
as
begin
declare @SALESMETHODTYPECODE integer
select @SALESMETHODTYPECODE=SALESMETHODTYPECODE from dbo.SALESORDER where ID = @ORDERID;
declare @AVAILABLEDOCUMENTS as TABLE (NUMBERID int identity, DOCUMENTID uniqueidentifier, PRINTERLISTID uniqueidentifier)
if @TEMPLATETYPE = 0 and @PROGRAMID is not null
begin
if @SALESMETHODTYPECODE in (0,1,2) --advance/daily/online sales
begin
insert into @AVAILABLEDOCUMENTS
(DOCUMENTID,
PRINTERLISTID)
select
DOCUMENT.ID,
DOCUMENT.PRINTERLISTID
from
dbo.DOCUMENT
inner join dbo.PROGRAMDOCUMENT on
DOCUMENT.ID = PROGRAMDOCUMENT.DOCUMENTID
inner join dbo.DOCUMENTPRINTINGRULE on
DOCUMENT.ID = DOCUMENTPRINTINGRULE.DOCUMENTID
inner join dbo.DOCUMENTPRINTINGRULESALESMETHOD on
DOCUMENTPRINTINGRULE.ID = DOCUMENTPRINTINGRULESALESMETHOD.DOCUMENTPRINTINGRULEID
inner join dbo.SALESORDER on
DOCUMENTPRINTINGRULE.DELIVERYMETHODID = SALESORDER.DELIVERYMETHODID or
@IGNOREDELIVERYMETHOD = 1
inner join dbo.SALESMETHOD on
SALESMETHOD.TYPECODE = SALESORDER.SALESMETHODTYPECODE and
DOCUMENTPRINTINGRULESALESMETHOD.SALESMETHODID = SALESMETHOD.ID
where
SALESORDER.ID = @ORDERID and
PROGRAMDOCUMENT.PROGRAMID = @PROGRAMID and
DOCUMENT.TYPECODE = @TEMPLATETYPE and
DOCUMENT.ISACTIVE = 1 and
DOCUMENT.PRINTERLISTID is not null
order by
PROGRAMDOCUMENT.SEQUENCE
end
end
else
if @TEMPLATETYPE = 5 or @TEMPLATETYPE = 6
--refund templates
begin
insert into @AVAILABLEDOCUMENTS
(DOCUMENTID,
PRINTERLISTID)
select
DOCUMENT.ID,
DOCUMENT.PRINTERLISTID
from
dbo.DOCUMENT
where
DOCUMENT.TYPECODE = @TEMPLATETYPE and
DOCUMENT.ISACTIVE = 1 and
DOCUMENT.PRINTERLISTID is not null and
((@SALESMETHODTYPECODE = 0 or --daily sales
@SALESMETHODTYPECODE = 1 or --advance sales
@SALESMETHODTYPECODE = 2 or --online sales
(@SALESMETHODTYPECODE = 3 and --group sales
DOCUMENT.PRINTFORGROUPSALES = 1)
or @SALESMETHODTYPECODE is null) or
@IGNOREDELIVERYMETHOD = 1)
order by
DOCUMENT.SEQUENCE
end
else
begin
if @SALESMETHODTYPECODE in (0,1,2) --advance/daily/online sales
begin
insert into @AVAILABLEDOCUMENTS
(DOCUMENTID,
PRINTERLISTID)
select
DOCUMENT.ID,
DOCUMENT.PRINTERLISTID
from
dbo.DOCUMENT inner join dbo.DOCUMENTPRINTINGRULE on
DOCUMENT.ID = DOCUMENTPRINTINGRULE.DOCUMENTID
inner join dbo.DOCUMENTPRINTINGRULESALESMETHOD on
DOCUMENTPRINTINGRULE.ID = DOCUMENTPRINTINGRULESALESMETHOD.DOCUMENTPRINTINGRULEID
inner join dbo.SALESORDER on
DOCUMENTPRINTINGRULE.DELIVERYMETHODID = SALESORDER.DELIVERYMETHODID or
@IGNOREDELIVERYMETHOD = 1
inner join dbo.SALESMETHOD on
SALESMETHOD.TYPECODE = SALESORDER.SALESMETHODTYPECODE and
DOCUMENTPRINTINGRULESALESMETHOD.SALESMETHODID = SALESMETHOD.ID
where
SALESORDER.ID = @ORDERID and
DOCUMENT.TYPECODE = @TEMPLATETYPE and
DOCUMENT.ISACTIVE = 1 and
DOCUMENT.PRINTERLISTID is not null
order by
DOCUMENT.SEQUENCE
end
else
if @SALESMETHODTYPECODE = 3
begin
insert into @AVAILABLEDOCUMENTS
(DOCUMENTID,
PRINTERLISTID)
select
DOCUMENT.ID,
DOCUMENT.PRINTERLISTID
from
dbo.DOCUMENT
where
DOCUMENT.TYPECODE = @TEMPLATETYPE and
(DOCUMENT.PRINTFORGROUPSALES = 1 or
@IGNOREDELIVERYMETHOD = 1) and
DOCUMENT.ISACTIVE = 1 and
DOCUMENT.PRINTERLISTID is not null
order by
DOCUMENT.SEQUENCE
end
end
select
DOCUMENT.REPORTCATALOGID,
PRINTERLISTITEM.PRINTERNAME,
DOCUMENT.PRINTFORZEROBALANCEORDER
from
@AVAILABLEDOCUMENTS AVAILABLEDOCUMENTS
inner join dbo.DOCUMENT on
AVAILABLEDOCUMENTS.DOCUMENTID = DOCUMENT.ID
inner join dbo.PRINTERLIST on
AVAILABLEDOCUMENTS.PRINTERLISTID = PRINTERLIST.ID
inner join dbo.PRINTERLISTITEM on
PRINTERLIST.ID = PRINTERLISTITEM.PRINTERLISTID
inner join dbo.WORKSTATIONPRINTER on
PRINTERLISTITEM.PRINTERNAME = WORKSTATIONPRINTER.PRINTERNAME
where
WORKSTATIONPRINTER.WORKSTATIONID = @WORKSTATIONID
order by
AVAILABLEDOCUMENTS.NUMBERID,
WORKSTATIONPRINTER.SEQUENCE
end