USP_REPORT_MERCHANDISEINVENTORYSALES
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DEPARTMENTID | uniqueidentifier | IN | |
@DEPARTMENTQUERY | uniqueidentifier | IN | |
@VENDORID | uniqueidentifier | IN | |
@FROMDATE | date | IN | |
@TODATE | date | IN | |
@ONLYSHOWITEMSWITHSALES | bit | IN |
Definition
Copy
create procedure dbo.USP_REPORT_MERCHANDISEINVENTORYSALES
(
@DEPARTMENTID uniqueidentifier = null,
@DEPARTMENTQUERY uniqueidentifier = null,
@VENDORID uniqueidentifier = null,
@FROMDATE date = null,
@TODATE date = null,
@ONLYSHOWITEMSWITHSALES bit = 0
)
as
set nocount on;
with MERCHANDISEREFUNDS_CTE as
(
select
MERCHANDISEPRODUCTINSTANCEID,
sum(CREDITITEM.QUANTITY) as REFUNDEDQUANTITY
from dbo.CREDIT
inner join dbo.CREDITITEM on
CREDITITEM.CREDITID = CREDIT.ID
inner join dbo.SALESORDERITEMMERCHANDISE on
SALESORDERITEMMERCHANDISE.ID = CREDITITEM.SALESORDERITEMID
where convert(date, CREDIT.TRANSACTIONDATE) between @FROMDATE and @TODATE
group by MERCHANDISEPRODUCTINSTANCEID
),
MERCHANDISEWITHSALESORDERS_CTE as
(
select
SALESORDERITEM.QUANTITY,
SALESORDERITEMMERCHANDISE.MERCHANDISEPRODUCTINSTANCEID,
SALESORDER.ID as SALESORDERID
from dbo.SALESORDER
inner join dbo.SALESORDERITEM on
SALESORDER.ID = SALESORDERITEM.SALESORDERID
inner join dbo.SALESORDERITEMMERCHANDISE on
SALESORDERITEM.ID= SALESORDERITEMMERCHANDISE.ID
where convert(date, SALESORDER.TRANSACTIONDATE) between @FROMDATE and @TODATE
and SALESORDER.STATUSCODE = 1 -- Completed Orders Only
)
select
MERCHANDISEPRODUCTINSTANCE.BARCODE BARCODE,
MERCHANDISEPRODUCTINSTANCE.ITEMDETAILS DESCRIPTION,
MERCHANDISEDEPARTMENT.NAME DEPARTMENT,
MERCHANDISEDEPARTMENTCATEGORY.NAME CATEGORY,
CONSTITUENT.NAME VENDOR,
MERCHANDISEPRODUCTINSTANCE.ONHANDQUANTITY QUANTITYONHAND,
isnull(sum(MERCHANDISEWITHSALESORDERS_CTE.QUANTITY), 0) - isnull(MERCHANDISEREFUNDS_CTE.REFUNDEDQUANTITY, 0) as QUANTITYSOLD
from dbo.MERCHANDISEPRODUCTINSTANCE
inner join dbo.MERCHANDISEPRODUCT on
MERCHANDISEPRODUCTINSTANCE.MERCHANDISEPRODUCTID = MERCHANDISEPRODUCT.ID
inner join dbo.MERCHANDISEDEPARTMENT on
MERCHANDISEPRODUCT.MERCHANDISEDEPARTMENTID = MERCHANDISEDEPARTMENT.ID
inner join dbo.PRODUCTVENDOR on
PRODUCTVENDOR.PRODUCTID = MERCHANDISEPRODUCT.ID
left join dbo.CONSTITUENT on
CONSTITUENT.ID = PRODUCTVENDOR.VENDORID
left join dbo.MERCHANDISEDEPARTMENTCATEGORY on
MERCHANDISEPRODUCT.MERCHANDISEDEPARTMENTCATEGORYID = MERCHANDISEDEPARTMENTCATEGORY.ID
left join MERCHANDISEWITHSALESORDERS_CTE on
MERCHANDISEWITHSALESORDERS_CTE.MERCHANDISEPRODUCTINSTANCEID = MERCHANDISEPRODUCTINSTANCE.ID
left join MERCHANDISEREFUNDS_CTE on
MERCHANDISEREFUNDS_CTE.MERCHANDISEPRODUCTINSTANCEID = MERCHANDISEPRODUCTINSTANCE.ID
where
((@ONLYSHOWITEMSWITHSALES = 0) or (@ONLYSHOWITEMSWITHSALES = 1
and (MERCHANDISEWITHSALESORDERS_CTE.SALESORDERID is not null or MERCHANDISEREFUNDS_CTE.MERCHANDISEPRODUCTINSTANCEID is not null)))
and (@DEPARTMENTID is null or MERCHANDISEDEPARTMENT.ID = @DEPARTMENTID)
and (@DEPARTMENTQUERY is null or MERCHANDISEDEPARTMENT.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@DEPARTMENTQUERY)))
and ((@VENDORID is null) or (PRODUCTVENDOR.VENDORID = @VENDORID))
group by MERCHANDISEPRODUCTINSTANCE.BARCODE,
MERCHANDISEPRODUCTINSTANCE.ITEMDETAILS,
MERCHANDISEDEPARTMENT.NAME,
MERCHANDISEDEPARTMENTCATEGORY.NAME,
MERCHANDISEPRODUCTINSTANCE.ONHANDQUANTITY,
CONSTITUENT.NAME,
MERCHANDISEREFUNDS_CTE.REFUNDEDQUANTITY
order by MERCHANDISEDEPARTMENT.NAME, MERCHANDISEPRODUCTINSTANCE.ITEMDETAILS