The products in ERP Core are defined using the Product Definition entity. This is the master data for all products and services that the company can create business transactions for (purchase, sell, manufacture, transfer etc.).
The Product Definition is a hierarchical typed entity. This means it can have types, parents and children. The Product Definition‘s hierarchical siblings can be for example product variants, versions, alternate products, equivalents and so on.
Journal Record document lines reference Product Definitions (1:1).
The Product Definition has some default characteristics and EAVs. Other characteristics can be added through customization or as EAV values, depending on their role. For example if an index is required on a characteristic, it is best to add an extension (*note that extensions will need also business logic implementations and customization). If an EAV is used for a custom property, then the business logic implementation might not be necessary.
The properties are grouped and sorted in tabs in a form. There are a lot of groups and properties in a Product Definition.
The base properties of a Product Definition entity are:
- Product Definition Type
- Code and Product Code
- Unit of measure
- Is Raw Material flag
- Physical Characteristics
- Conversion Factors
- External Reference Code
- Name Prefix
- Name Suffix
- Product Category
- Product Group
- Perishability characteristics (Is Perishable, Use Time, Life Time, Removal Time, Alert Time)
- Documents (Product Label, BarCode, Printer Assignment)
- Package Product Assignment
- Bill Of Materials (Manufacture flag, Bill Of Materials Inputs, Bill Of Materials Outputs)
- Product Kit Components
- Product Cost
- Finished Products
- Manufacturer Product Definition Links
- Planned Production Orders
- Inventory Tracking Mode
- Subcontracting characteristics
- Supply Chain characteristics
- Sales and distribution (Pricing Conditions, List Prices, Taxes)
- Catalog management (Catalog Section Entry)
- Product Equivalency
- Serial Number Configuration (Lot Numbers, Product Batches, Serial Numbers)
- Inventory (Product Stock Handling, Valuation Method, Product Availability Calculation, Count Cycle)
- Product Route (Reserved Products, Product Stock Management)
- Accounting (Journal Record Line, Account)
- Warehouse (Bin Location)
- Quality Control Configuration
- Transportation (Shipping Parcel Entry, Shipping Unit, Freight Property Value)
- and many other characteristics from future implementations.
As you can see there are a lot of characteristics for the Product Definition. But as we all know, each business is unique and might need customizations. Customizations can be made in the main ERP Core kernel and models or in plug-ins. Usually, customizations that might benefit other business will be implemented in the base models and base repositories. Very specific customizations will be made in plug-ins.
Product definition projections
After seeing all of the above, you can imagine that showing all of those fields in a table would be impossible and non productive. In order to display only the necessary fields we create projections for the entities. In the projections we extract only the required fields for that specific purpose.
The Product Definition Projection exposes some useful fields in the Product Definition entity. The projection has a toolbar attached to it to help calling RFCs on the projected entity. When calling a RFC from a projection’s toolbar, the selected items’s Id(s) are sent to the backend server in order to initialize the RFC.
Please note that the toolbar’s items are activated and deactivated depending on the number of items selected in the table.
Add/Edit/Delete product definition
Some procedures were simplified in order to help the user and hide some of the complexity. This being said, we created a very simple add/edit procedure (see Rfc or Workflow creation) in which we only need to set some of the more important and usual fields such as the Name, Description, Label, Note, Code, Unit of Measure, Group, Printer Assignment, the Raw Material flag etc.
In the product screen you can use the field Label to display something else in the POS or other UI forms besides the Name and Description (Label overrides Description wich overrides Name). You can also use the Note field to display more info about a product in certain places (translations for example), such as the Manufacturing Station Screen.
Bill Of Materials
Products have BOMs. In order to create, edit or delete Bill Of Materials you can access the BOM menu in the toolbar.
This functionality takes a product’s BOM and tries to validate and calculate the product’s cost and aggregates EAV properties according to their rules(for example nutritional values for food items).
In order to check if a BOM is valid you run the Check BOM report. This will check for naming conventions, self reference, raw materials with BOMs, non raw materials without BOMs.
Note that naming conventions check for this report states that: raw material Name and Description must be UPPER CASE, the code of a product must be digits only.
Check All BOMs
If required, you can check all BOMs at once. This will run a job that will generate a *.json file in the storage. You can find those files navigating to: ./file-storage/ErpApiService under CheckAllBoms folder. Files generated can be visualized by right-clicking and choosing View, then click the print button.
After starting the job, it might take a while to finish. You can leave the screen because the job will continue to run. To check the job status you can check in the Jobs screen unde the Admin tools folder.
The report will show by default only the errors. If you need to display all the BOMs click the Show only errors checkbox.