Filtering problem on Item and Item ledger entry table

IF((StartDate<>0D) AND(EndDate<>0D)) THEN BEGIN
SETRANGE("Item Ledger Entry"."Posting Date", StartDate, EndDate);
END;

IF (ProductSubGroupCode<>'') THEN BEGIN
"Item Ledger Entry".SETFILTER("Item Ledger Entry"."Product Sub Group Code", '=%1',ProductSubGroupCode) ;
END;

IF ( ProductSize<>'') THEN BEGIN

"Item Ledger Entry".SETFILTER( "Item Ledger Entry"."Product Size", '=%1',ProductSize) ;
END;

IF ( Color<>'') THEN BEGIN
SETFILTER("Item Ledger Entry".Color, '=%1', Color) ;

END;

IF ( Material<>'') THEN BEGIN

"Item Ledger Entry".SETFILTER("Item Ledger Entry".Material, '=%1', Material) ;
END;

IF (FORMAT( SeasonYear)<>'') THEN BEGIN

CASE SeasonYear OF

2001: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2001) ;

END;

2002: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2002) ;

END;

2003: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2003) ;
END;

2004: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2004) ;
END;

2005: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2005) ;
END;

2006: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2006) ;
END;
2007: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2007) ;
END;
2008: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2008) ;
END;
2009: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2009) ;
END;

2010: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2010) ;
END;

2011: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2011) ;
END;

2012: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2012) ;
END;

2013: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2013) ;
END;
2014: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2014) ;
END;
2015: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2015) ;
END;
2016: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2016) ;
END;
2017: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2017) ;
END;
2018: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2018) ;
END;
2019: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2019) ;
END;

2020: BEGIN
"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Season Year",2020) ;
END;

END;
END;

IF (FORMAT( Season)<>'') THEN BEGIN
CASE Season OF

Season::Spring: BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Season,'=%1',Season::Spring) ;
END;

Season::Summer:BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Season,'=%1',Season::Summer) ;
END;
Season::"Spring-Summer":BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Season,'=%1',Season::"Spring-Summer") ;
END;
Season::Autumn:BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Season,'=%1',Season::Autumn) ;
END;
Season::Winter:BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Season,'=%1',Season::Winter) ;
END;
Season::"Autumn-Winter":BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Season,'=%1',Season::"Autumn-Winter") ;
END;
END;
END;

IF (FORMAT( Style)<>'') THEN BEGIN

CASE Style OF
Style::premium: BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Style,'=%1',Style::premium) ;
END;
Style::economy:BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Style,'=%1',Style::economy) ;
END;
Style::casual:BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Style,'=%1',Style::casual) ;
END;

Style::classic:BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Style,'=%1',Style::classic) ;
END;
Style::fashion:BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Style,'=%1',Style::fashion) ;
END;

Style::biom:BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Style,'=%1',Style::biom) ;
END;

Style::performance:BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry".Style,'=%1',Style::performance) ;
END;

END;

END;

IF (BuyerNo<>'') THEN BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry"."Buyer No.", '=%1',BuyerNo) ;
END;

IF (ItemCategoryCode<>'') THEN BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry"."Item Category Code", '=%1',ItemCategoryCode) ;
END;

IF (ProductGroupCode<>'') THEN BEGIN
"Item Ledger Entry".SETFILTER("Item Ledger Entry"."Product Group Code", '=%1',ProductGroupCode) ;
END;

IF (ItemNo<>'') THEN BEGIN

"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Item No.",ItemNo) ;
END;

IF (ItemNo2<>'') THEN BEGIN

"Item Ledger Entry".SETRANGE("Item Ledger Entry"."Item No. 2",ItemNo2) ;
END;

IF (GlobalDimension2Code<>'') THEN BEGIN
SETRANGE("Item Ledger Entry"."Global Dimension 2 Code",GlobalDimension2Code) ;

END;

IF (LocationCode<>'') THEN BEGIN
"Item Ledger Entry".SETFILTER( "Item Ledger Entry"."Location Code", '=%1', LocationCode);
END;

IF (Description<>'') THEN BEGIN

"Item Ledger Entry".SETFILTER("Item Ledger Entry".Description, '=%1',Description);
END;

////////////////////////////////////

"Item Ledger Entry".SETFILTER("Entry Type", '=%1',"Item Ledger Entry"."Entry Type"::Purchase);

what is the suitable filtering system for which field?

when we should use setrange and when we should use setfilter?

check whether whole seasonyear filter code can be replaced with

IF SeasonYear <> 0 THEN
SETRANGE(“Season Year”,SeasonYear) ;

It is not working.

it was not a solution…it was a suggetion to correct one of the code problems in many…

So SeasonYear is a custom field you have added to the item ledger entry table…correct?

And SeasonYear is of type OPTION with options ranging from 2001 to 2020…correct?