USP_SEARCHLIST_BILLINGITEM
Search for a Billing Item.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@NAME | nvarchar(100) | IN | Name |
@TYPECODE | tinyint | IN | Type |
@INCLUDEINACTIVE | bit | IN | Include inactive |
@STARTDATE | date | IN | Start date |
@ENDDATE | date | IN | End date |
@COST | money | IN | Cost |
@CHARGEDATE | date | IN | Charge date |
@MAXROWS | smallint | IN | Input parameter indicating the maximum number of rows to return. |
@INCLUDEFLATRATE | tinyint | IN | INCLUDEFLATRATE |
Definition
Copy
CREATE procedure dbo.USP_SEARCHLIST_BILLINGITEM
(
@NAME nvarchar(100) = null,
@TYPECODE tinyint = null,
@INCLUDEINACTIVE bit = null,
@STARTDATE date = null,
@ENDDATE date = null,
@COST Money = null,
@CHARGEDATE date = null,
@MAXROWS smallint = 500,
@INCLUDEFLATRATE tinyint = 1
)
as
set nocount on;
declare @CURRENTDATE date
set @CURRENTDATE = GetDate()
select distinct top(@MAXROWS)
BILLINGITEM.ID,
PRODUCT.NAME,
case when BILLINGITEM.PRICETYPECODE = 1 then '$' + Convert(varchar,Coalesce((select TOP 1 PRICE from dbo.BILLINGITEMPRICE where BILLINGITEMPRICE.BILLINGITEMID=BILLINGITEM.ID and (DATERANGETYPECODE=0 OR (STARTDATE<=@CURRENTDATE and (ENDDATE>=@CURRENTDATE or ENDDATE IS NULL))) order by STARTDATE asc), (select TOP 1 PRICE from dbo.BILLINGITEMPRICE where BILLINGITEMPRICE.BILLINGITEMID=BILLINGITEM.ID order by STARTDATE desc)),1) else null end as COST,
dbo.UFN_BILLINGITEM_GETALLVALIDDATES(BILLINGITEM.ID) as DATES,
BILLINGITEM.PRICETYPE,
BILLINGITEM.DESCRIPTION,
case when BILLINGITEM.ISINACTIVE =0 then 1 else 0 end as ACTIVE
from dbo.BILLINGITEM inner join dbo.PRODUCT on BILLINGITEM.ID=PRODUCT.ID
where (@NAME is null or (PRODUCT.NAME like @NAME + '%')) and
(dbo.UFN_BILLINGITEM_VALIDFORSPECIFIEDDATE(BILLINGITEM.[ID], @CHARGEDATE)=1 or (@CHARGEDATE is null)) and
((@INCLUDEINACTIVE = 1) or (ISINACTIVE = 0)) and
((@TYPECODE is null) or (BILLINGITEM.PRICETYPECODE=@TYPECODE)) and
((@INCLUDEFLATRATE = 1) or (BILLINGITEM.PRICETYPECODE <> 1)) and
((@STARTDATE is null) or (BILLINGITEM.PRICETYPECODE = 1 and exists(select * from dbo.BILLINGITEMPRICE where BILLINGITEMPRICE.BILLINGITEMID=BILLINGITEM.ID and STARTDATE=@STARTDATE)) or (BILLINGITEM.PRICETYPECODE in (2,3) and exists(select * from dbo.BILLINGITEMDATES BID where BID.BILLINGITEMID=BILLINGITEM.ID and STARTDATE=@STARTDATE))) and
((@ENDDATE is null) or (BILLINGITEM.PRICETYPECODE = 1 and exists(select * from dbo.BILLINGITEMPRICE where BILLINGITEMPRICE.BILLINGITEMID=BILLINGITEM.ID and ENDDATE=@ENDDATE)) or (BILLINGITEM.PRICETYPECODE in (2,3) and exists(select * from dbo.BILLINGITEMDATES BID where BID.BILLINGITEMID=BILLINGITEM.ID and ENDDATE=@ENDDATE))) and
((@COST is null) or
(BILLINGITEM.PRICETYPECODE = 1 and
(exists(select * from BILLINGITEMPRICE where ID in (select TOP 1 ID from dbo.BILLINGITEMPRICE BIP where BIP.BILLINGITEMID=BILLINGITEM.ID and (DATERANGETYPECODE=0 OR (STARTDATE<=@CURRENTDATE and (ENDDATE>=@CURRENTDATE or ENDDATE IS NULL))) order by STARTDATE asc)
and PRICE=@COST) or
exists(select * from BILLINGITEMPRICE where ID in (select TOP 1 ID from dbo.BILLINGITEMPRICE BIP where BIP.BILLINGITEMID=BILLINGITEM.ID order by STARTDATE desc)
and PRICE=@COST))) or
(BILLINGITEM.PRICETYPECODE = 2 and
(exists(select * from dbo.BILLINGITEMPRICEBYGRADELEVEL BIP where BIP.BILLINGITEMDATESID in (select TOP 1 ID from dbo.BILLINGITEMDATES BID where BID.BILLINGITEMID=BILLINGITEM.ID and (DATERANGETYPECODE=0 OR (STARTDATE<=@CURRENTDATE and (ENDDATE>=@CURRENTDATE or ENDDATE IS NULL))) order by STARTDATE asc) and PRICE=@COST) or
exists(select * from dbo.BILLINGITEMPRICEBYGRADELEVEL BIP where BIP.BILLINGITEMDATESID in (select TOP 1 ID from dbo.BILLINGITEMDATES BID where BID.BILLINGITEMID=BILLINGITEM.ID order by STARTDATE desc) and PRICE=@COST))) or
(BILLINGITEM.PRICETYPECODE = 3 and
(exists(select * from dbo.BILLINGITEMPRICEBYSCHOOL BIP where BIP.BILLINGITEMDATESID in (select TOP 1 ID from dbo.BILLINGITEMDATES BID where BID.BILLINGITEMID=BILLINGITEM.ID and (DATERANGETYPECODE=0 OR (STARTDATE<=@CURRENTDATE and (ENDDATE>=@CURRENTDATE or ENDDATE IS NULL))) order by STARTDATE asc) and PRICE=@COST) or
exists(select * from dbo.BILLINGITEMPRICEBYSCHOOL BIP where BIP.BILLINGITEMDATESID in (select TOP 1 ID from dbo.BILLINGITEMDATES BID where BID.BILLINGITEMID=BILLINGITEM.ID order by STARTDATE desc) and PRICE=@COST))))
order by PRODUCT.NAME asc