Support: Storing, Allocating and Grouping
Warehouse Stock Allocation
Introduction
Effective stock allocation and categorization are crucial for optimizing warehouse operations. Proper management ensures efficient use of space, quick retrieval of items, and accurate inventory tracking. This guide explains the key concepts and strategies used in stock allocation and categorization in a warehouse system.
Stock Allocation
Stock allocation involves assigning storage locations to different items within a warehouse. This process is essential for maintaining order and ensuring efficient space utilization. Key strategies for stock allocation include:
1. ABC Analysis
ABC Analysis categorizes inventory into three groups based on value and turnover rate:
- A Items: High-value items with low turnover. These are stored in easily accessible locations.
- B Items: Moderate-value items with moderate turnover. These are stored in intermediate locations.
- C Items: Low-value items with high turnover. These are stored in less accessible locations.
- Fixed Slotting: Each item is assigned a specific location. This method is easy to manage but may lead to inefficient space use.
- Random Slotting: Items are stored in any available location. This method maximizes space utilization but requires a robust tracking system.
3. Zoning
Zoning divides the warehouse into different areas based on product characteristics, such as size, weight, and temperature requirements. For example:
- Cold Zone: For perishable goods requiring refrigeration.
- Heavy Zone: For bulky and heavy items that require special handling equipment.
- Fast-Pick Zone: For high-turnover items that need quick retrieval.
Warehouse Stock Categorisation
Stock Categorization
Categorizing inventory items is crucial for efficient warehouse management and overall business operations. Proper categorization enables quick identification and retrieval of items, reducing the time and effort required for stock handling and order fulfillment. It helps in maintaining accurate inventory levels, preventing stockouts or overstock situations that can lead to lost sales or increased holding costs. Categorization also aids in analyzing sales patterns and inventory turnover, allowing for more informed decision-making regarding purchasing, stocking, and marketing strategies. By organizing items based on factors such as type, status, and demand, businesses can optimize storage space, improve workflow efficiency, and enhance customer satisfaction through faster and more reliable service.
Stock categorization involves classifying inventory based on various attributes to streamline management and retrieval. Common categorization methods include:
1. Product Type
- Raw Materials: Unprocessed materials used in production.
- Work-in-Progress (WIP): Items in the process of being manufactured.
- Finished Goods: Completed products ready for sale.
- Components and Parts: Parts used to assemble finished products.
- MRO Supplies: Items for maintenance and repairs, not part of the final product.
2. Product Category
- Electronics: TVs, smartphones, laptops, etc.
- Apparel: Clothing, footwear, accessories.
- Food and Beverage: Perishables, non-perishables, beverages.
- Home Goods: Furniture, kitchenware, decor.
- Automotive: Car parts, accessories, tools.
3. Stock Status
- In Stock: Items currently available in inventory.
- Out of Stock: Items not currently available.
- Backordered: Items not available but can be ordered and shipped when available.
- Discontinued: Items no longer produced or stocked.
4. Product Condition
- New: Brand new items.
- Refurbished: Items restored to like-new condition.
- Used: Previously owned and used items.
- Damaged: Items that are damaged but may be sellable at a discount.
Stock Allocation and Categorisation
-
Navigate to the folder containing the extracted project package and double-click the
SmartAdminCore.slnfile -
Once the solution has finished loading open the
nav.jsonfile in the root of the project -
Scroll down to about
Line 141to find the Tools & Components menu item -
You should see a new property that was added in this release to the menu item called
roles:"roles": [ "Administrator" ]
- As you can see we have added an extra instruction that this menu item should only be visible for Administrators
-
So let's check this now, it seems that you are currently logged in as the
GuestroleThis means you are currently not logged in! Let's fix that by clicking here: LoginAs you might have noticed, the menu on the left may not have changed at all by logging in or viewing it as a Guest! This is because by default the Navigation is not enabled to be role aware, so let's change that! - Open the
Default.cshtmlfile in the Views/Shared/Components/Navigation folder of your project -
With the file open goto around
Line 6and you should see the following line of code:@foreach (var group in menu.Lists)
-
Change or Replace this line of code with the following line of code:
@foreach (var group in menu.Lists.AuthorizeFor(User))
Authorization is now enabled and theAuthorizeForextension method will verify the user role with that of the menu item. If the menu item has no roles available it will be shown regardless of role. - Now refresh this page and/or Login and you should see the menu change!
Item Categories
-
Navigate to the folder containing the extracted project package and double-click the
SmartAdminCore.slnfile -
Once the solution has finished loading open the
Startup.csfile in the root of the project -
With the file open goto around
Line 35and you should see the following line of code:services.AddDbContext<ApplicationDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("DefaultConnection"))); -
Change or Replace this line of code with the following line of code:
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); -
This will instruct Entity Framework to connect to a Microsoft SQL Server Database.
Note: You might get a warning or an error stating that
UseSqlServeris not recognized, this means we will need to add a reference to the SqlServer NuGet package for Entity Framework Core - Right click the SmartAdmin.WebUI project and choose the option:
Edit Project File -
With the file open goto around
Line 17and you should see the following line of code:<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.2" />
-
Change or Replace this line of code with the following line of code:
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.2" />
Note: You can also change the NuGet packages of your project by right-clicking the SmartAdminCore solution and choosing the option:Manage NuGet Packages for Solution.. - Last but not least we will need to modify the ConnectionString of the application to connect to your SQL Server instance
- Open the
appsettings.jsonfile in the root of your project -
With the file open goto around
Line 3and you should see the following line of code:"DefaultConnection": "DataSource=app.db"
-
Change or Replace this line of code with the following line of code:
"DefaultConnection": "Data Source=YourServerAddress;Initial Catalog=YourDatabase;User ID=YourUser;Password=YourPassword;Connect Timeout=20;ApplicationIntent=ReadWrite;MultipleActiveResultSets=true"
Note: Be sure to replace theYourXxxxvalues with the actual values of your SQL Server instance and credentials! -
In order to re-create the database schema in your new targeted database we will have to remove the Migrations folder from the project.
Once this has been done you can re-apply the new schema by typing the following:
Add-Migration InitialCreate
Followed by updating your targeted database, by typing the following:Update-Database
Product Categories
-
Navigate to the folder containing the extracted project package and double-click the
SmartAdminCore.slnfile -
Once the solution has finished loading open the
Startup.csfile in the root of the project -
With the file open goto around
Line 48and you should see the following line of code:services.AddRazorPages();
-
Add the following line of code directly beneath:
services.AddServerSideBlazor();
-
Now goto around
Line 85and you should see the following line of code:endpoints.MapRazorPages();
-
Add the following line of code directly beneath:
endpoints.MapBlazorHub();
-
This will instruct .NET to setup the Blazor Hub and establish a connection upon startup.
Note: You might get a warning or an error stating that
No connection could be established, this means that a plugin might be interfering with the definition of WebSocket. -
Let's fix that error right-away! Open the
_ScriptBasePlugins.cshtmlfile in the Views/Shared folder of the project -
With the file open goto around
Line 2and you should see the following line of code:<script src="~/js/app.bundle.js"></script>
-
Add the following lines of code directly beneath:
<script> // this call is required to remap WebSocket as this is overridden by Pace.js plugin ! :-( Object.defineProperty(WebSocket, 'OPEN', { value: 1 }); </script> <script src="~/_framework/blazor.server.js"></script> -
This will enable the listener framework to be setup as such that the pages can "communicate" with your code.
Note: The
blazor.server.jsfile is generated at runtime, as such it is not available on disk or in your project. -
Now rebuild your project and launch it! If everything went well then the item below should show you the rendered contents
of the
HelloWorld.razorfile located in the Pages folder in the root of your Project; Blazor support should now be available in SmartAdmin!
Stock Allocation
-
Navigate to the folder containing the extracted project package and double-click the
SmartAdminCore.slnfile -
Once the solution has finished loading open the
Startup.csfile in the root of the project -
With the file open goto around
Line 48and you should see the following line of code:services.AddRazorPages();
-
Add the following line of code directly beneath:
services.AddServerSideBlazor();
-
Now goto around
Line 85and you should see the following line of code:endpoints.MapRazorPages();
-
Add the following line of code directly beneath:
endpoints.MapBlazorHub();
-
This will instruct .NET to setup the Blazor Hub and establish a connection upon startup.
Note: You might get a warning or an error stating that
No connection could be established, this means that a plugin might be interfering with the definition of WebSocket. -
Let's fix that error right-away! Open the
_ScriptBasePlugins.cshtmlfile in the Views/Shared folder of the project -
With the file open goto around
Line 2and you should see the following line of code:<script src="~/js/app.bundle.js"></script>
-
Add the following lines of code directly beneath:
<script> // this call is required to remap WebSocket as this is overridden by Pace.js plugin ! :-( Object.defineProperty(WebSocket, 'OPEN', { value: 1 }); </script> <script src="~/_framework/blazor.server.js"></script> -
This will enable the listener framework to be setup as such that the pages can "communicate" with your code.
Note: The
blazor.server.jsfile is generated at runtime, as such it is not available on disk or in your project. -
Now rebuild your project and launch it! If everything went well then the item below should show you the rendered contents
of the
HelloWorld.razorfile located in the Pages folder in the root of your Project; Blazor support should now be available in SmartAdmin!
Units of Measure (UOM or Item Attribute)
-
Navigate to the folder containing the extracted project package and double-click the
SmartAdminCore.slnfile -
Once the solution has finished loading open the
Startup.csfile in the root of the project -
With the file open goto around
Line 48and you should see the following line of code:services.AddRazorPages();
-
Add the following line of code directly beneath:
services.AddServerSideBlazor();
-
Now goto around
Line 85and you should see the following line of code:endpoints.MapRazorPages();
-
Add the following line of code directly beneath:
endpoints.MapBlazorHub();
-
This will instruct .NET to setup the Blazor Hub and establish a connection upon startup.
Note: You might get a warning or an error stating that
No connection could be established, this means that a plugin might be interfering with the definition of WebSocket. -
Let's fix that error right-away! Open the
_ScriptBasePlugins.cshtmlfile in the Views/Shared folder of the project -
With the file open goto around
Line 2and you should see the following line of code:<script src="~/js/app.bundle.js"></script>
-
Add the following lines of code directly beneath:
<script> // this call is required to remap WebSocket as this is overridden by Pace.js plugin ! :-( Object.defineProperty(WebSocket, 'OPEN', { value: 1 }); </script> <script src="~/_framework/blazor.server.js"></script> -
This will enable the listener framework to be setup as such that the pages can "communicate" with your code.
Note: The
blazor.server.jsfile is generated at runtime, as such it is not available on disk or in your project. -
Now rebuild your project and launch it! If everything went well then the item below should show you the rendered contents
of the
HelloWorld.razorfile located in the Pages folder in the root of your Project; Blazor support should now be available in SmartAdmin!