Product Categories. By ID
On the supplier form first page, in the "General buttons" section, there is a button "Use category ID":

If you enable it, then the "Category and Margin" tab can be left blank.
But in the price list, in the category columns should be your site category_id:

The category ID can be found in the database in the category_description table and in the admin when you open a category for edit, the ID is in the page URL.:

Settings
In the "Category" field, it is enough to enter the numbers of these columns, and the plugin will distribute the products into categories when is set to adding mode.

or

This method has one drawback - the product images will be uploaded to one folder - image/catalog/photo

Which can slow down the site.
This happens because the "Category and Margin" tab was not filled with categories and folders for product images:

and the plugin doesn't know where to upload product images for these categories. By default, the preset folder is used -image/catalog/photo.
Adding many images to one folder is not a good practice
How to fix it?
You have two options in "Tools" tab:

In the first case, the plugin will evenly divide all the images in the photo folder into 10 sub-folders, and in the second case, each of these sub-folders will be divided into another 10 sub-sub-folders.
Thus, all images will be distributed into 100 folders.
Product Quantity
This row in the supplier's form is responsible for the product quantity:

Field "Quantity"
If you enter the number of the price list column containing any number in the "Quantity" field, then this number will be loaded as the product quantity.
If in the price list, in the specified column 14 (see example above), there is no number or is 0, then the plugin will set the quantity by default - to 9 (see example above).
Any non-numeric text is treated by the plugin as 0.
If you don't provide product quantity in the price list and the quantity by default is not set: In add mode, the product will not be added. In update mode, the product price will not be updated.
It often happens in the price list that the quantity of the product is in several columns
You can sum the quantities from different columns of the price list this way:

(use a comma as a separator, spaces are not allowed)
Interpreter
However, there may be other ways to set the quantity in the price list. For example:

All values from column 14 except row 6 will be interpreted as 0 unless you use your own interpreter:

You don't need to interpret the values "No" and "Out of stock" as they are already zero.
Numerical values can also be interpreted.
"Subtract Stock" button
Has a dual purpose:
- sets product setting "Subtract Stock"
- sets product options setting "Subtract Stock"
The button works both when adding a product and when updating.
"Discount(%)" field
With this field, you can set quantity discount in percent.

(comma separator. When buying from 4 to 9 pieces - 2% discount, when buying from 10 to 14 pieces - 5% discount ...)
Product with options
If the product has options, then the product quantity is calculated automatically as the sum of the option values quantities. In this case, the quantity from column 14 (see example above) is ignored.
Product Exhausted. Status
There is a product with a zero quantity in the price list
1. In the product add mode, the plugin will create a zero-stock product in the store
2. In the product update mode, the plugin will take into account whether the product is assigned to this supplier:
- if the product is assigned to the supplier whose price list is being processed at the moment, then the product quantity will be set to 0
- if the product is assigned to another supplier (suppliers have the same SKUs for this product), then the plugin will not set quantity 0 for the product and will not update the price.
If the product is not assigned to the supplier its quantity will not be set to 0 even in the price list the quantity for this SKU is 0.
The product is no longer in the price list
It often happens that the supplier removes products from the price list (discontinued, for example), but this product is on your site with status available.
To avoid this situation, it is necessary to reset all supplier's product quantities before processing the price list.
Then, after the update, those products that were not in the price list will remain with zero quantity, and those products that are updated will have the quantity from the price list.
In the "Tools" tab, there are three functions for zeroing the product quantity:

1. Works very quickly. Sets product quantity to 0 for the products assigned to this supplier or to all suppliers. Takes into account this filter setting and all other filters are ignored:

2. If you enter the number 0 in Field1 and click "Start", the plugin will not only reset the product quantities selected in the filter (all filters work) but also will add sort order 100000 to each zeroed product.
After processing the price list, all updated products will receive a quantity bigger than 0, and their sort order will be reset to 0. Non-updated products will remain with zero quantity and big sort order so they will be at the end of the category and manufacturer pages.
This function is much slower than function 1.
The disadvantage of this function is that during the processing of the price list, the supplier's products are shown on the site as "Out of stock".
3. This function works after the price list processing and is safer because during the update the products are available on the site's front.
Stock status
The product stock status is displayed on the product page:

OpenCart displays in stock text if the product quantity is greater than zero and has unlimited out of stock statuses (all for products with quantity 0).
Admin -> System -> Localisation -> Stock Statuses:

Under certain conditions, the status "In Stock" can be displayed in Opencart even when the quantity is zero. For example, when the product has zero quantity, but can be purchased (this should be set in Admin-> System-> Settings).
The "Out of Stock" status that should be set in the product with 0 quantity can be selected in the supplier form:

Please note that the menu option is marked with red, which means that it only works in product add mode.
In update mode, the plugin does not change the out of stock product statuses.
Using this tool you can change the out of stock product status for already imported products:

In default Opencart installation the status with ID 5 is "Out of stock".
All stock statuses are recorded in the database in table stock_status:

Product Exhausted. Parsing
Let's say that the supplier's product pages display the product quantity and the code fragment looks like this:

The quantity is underlined with a red line.
If the product URL is in column 12. The parsing parameters will be: qu=" and " since the number 23 is between them:

(the parameters are separated by a comma).
But the qu=" parameter is also found above (underlined with a blue line). In this case, the plugin will parse the first occurrence: "UAH".
So you need to indicate the text from which the plugin should start parsing the web page:

(the blue underlined text).
Usually, the quantity of the product is not available on the product page. The above example is intended to show how parsing is set up. Updating product quantities by parsing is not reliable. The best way to keep the quantities up to date is to update them regularly from the supplier's price list.
Most often, the supplier's page code fragment looks like this:

On product pages you can find a text indicating the product stock: "few items left", "available" or "In Stock". Also, you can find the product availability text if the structured data is generated on the page.
OpenCart requires the product quantity to be a number, that's why we have to add an interpreter in the settings:

Product Price
The product price row looks like this:

In the "Price" field, enter the number of the price list column, which contains the product price. The plugin can work with different price formats:
- numbers with a decimal point or comma: 1234.5 or 1234,5
- numbers with currency symbol: 1234,5 грн. or $1234.5
- numbers with a thousands separator: 1 234.5 ор 1'234.5
During processing, prices are rounded to 2 decimal places: 1234.50
Product add - Empty price or price 0
If there is no product price in the price list, the product will be skipped. Only products with prices greater than 0 are processed:

(in column 4, in this example).
You can change this rule using the "Set minimum option price as product price" button. This setting has a dual purpose:
- sets minimum option price as to product price
- allows the product in the price list to have an empty, text, or zero price (the price will be set as 0).
Product update - Empty price or price 0
The product price will not be updated if the quantity in the price list is zero.
You can change this rule by forcing a price update:

No other Actions will update the price.
Recommended price
Sometimes suppliers require products to be sold no cheaper than their recommended price, which is located in the price list in a separate column. In this case, in the "Recommended price" field, enter the number of this column:

For the plugin, column 5 will take precedence over column 4. I.e. if in column 5, in a certain product, there is a number, then it will become the price of the product, otherwise, the product price will be the number from column 4.
The recommended price is the final price and margin settings are not processed.
Field "Currency Code"
If in the price list, the product's prices are presented in different currencies, a column with a currency code is required. For example:

In this case, you should set column 3 in the field "Currency code":

The plugin will recalculate the prices according to the respective currency values in the site settings.
This method only works when recalculating the product price. The module "Валюта плюс" is required to recalculate option prices, discounts, and specials.
Price list currency
If all prices in the price list are in the same currency, but this currency is not your site's default currency, you can set the currency code for the entire form:

or set the rate as a number: 27.3
Setting "Update price if"
If different suppliers have the same product with the same SKU, then the product price will be set according to the supplier's price list that was processed last.
If you select this option:

The product will have the lowest price among all suppliers whose price lists have been processed.
The first price list processing should be done in "Update price if: Always" mode.
The other options are self-explaining.
The purchase price

is used with "Analysis of competitor's prices" only.
Do not fill in this field if you do not use this feature!
Price Margin
There are 4 methods to add a margin to the product price. The margin is added to the price list price or to the parsed from the donor site price.
1. Using the currency rate
If, for example, today's rate is 27.30, then by setting the rate to 27.31 we will add 1% to all product prices. That will be updated or added when processing the price list:

To reduce the price by 1% we need to set an exchange rate of 27.29
2. Margin per category
You can set a margin for each category. This is done on the "Category and margin" tab, for example, like this:

In this example, the price of products from the category of "Alt-car" increases by 5%, and those of the category of "SLR" by 2%.
Here is the algorithm:
- the plugin reads the product data from the price list
- finds the product in the store by SKU
- defines the product category
- if the category is "Alt-car", increase the price from the price list by 5% and update the product price
- if the category is "SLR", increase the price from the price list by 2% and update the product price
In update mode, there is no need to fill in the number of the column containing the category:

The plugin can apply the margin using the already set product category.
Margin per manufacturer (update mode only)
If you fill in the column number containing manufacturers in the "Category" field and set the margins for these manufacturers in the "Category and margin" tab, the update will apply the margin for these manufacturers:

"Category and margin" settings:

Margin formula
The margin may depend on the product price value. If the product price falls within a certain price range, then the corresponding margin is calculated. For example:
(0-100)10,(100-200)+9.5%,(200-500)-8,(500-1000)+30,(1000-2000)+2%-1,(2000-100000000)+2%
(without spaces)
Explanation:
In the price range (0-100) - the price is increased by 10%
In the price range (100-200) - the price is increased by 9,5%
In the price range (200-500) - the price is reduced by 8
In the price range (500-1000) - the price is increased by 30
In the price range (1000-2000) - the price is increased by 2% and reduced by 1
In the price range (2000-100000000) - all other prices are increased by 2%
Common mistake: (0-100)3,(101-200)2
The product with a price of 100.5 is out of the price range.
"Category and margin" settings:

3. Margin by a formula for the entire price list
If you fill in the margin formula in this field (in the "General buttons"):

and set "Set margin as defined in the Category and Margin tab" to "No", each product price will be recalculated by the formula regardless of the category to which belongs.
The "Set margin as defined in the Category and Margin tab" button has priority.
4. Margin from the price list column
You can use a column in the price list, enter margins in it without the % sign, and fill in the column number in this field:

Specials and Discounts
Customer Groups provide a greater organizational scheme for the customer list. This is helpful in selecting customer groups for discounted products and specials in the store, and for sending out emails to select customers. The default customer group for OpenCart is called "Default" and all unregistered users belong to it. You can create unlimited customer groups and assign the registred users to them :

Each customer group has an ID:

For each product and for each customer group, you can set a separate Discount or Special price, valid for a given period of time: from the "start date" to the "end date".
When creating a Promotion or Discount, the plugin sets the "start date" to yesterday and the "end date" to 10 days later.
Specials
The special price is displayed on the product page along with the regular price and doesn't depend on the purchased quantity:

You can set a different special price for each customer group. When the special prices are imported from a price list, they have to be in separated columns for each customer group. For example 4,8 and 9

Text 4,8,,,9 explanation:
- column 4 contains the price for customer group ID 1
- column 8 contains the price for customer group ID 2
- column 9 contains the price for customer group ID 5
The special price cannot be more than the product price, the plugin checks this.
Note
Often suppliers indicate the promotional price in this form:

if there is an "Old price" in the price list, it means that the column "Special price for Gr.2" contains the special price, and if there is no "Old price", it means that the column "Special price for Gr.2" contains the regular product price.
The plugin can work with this format. You have to fill in the old price column number in the field "Price" and the special price column number in the field "special prices":

Discounts
Discount price is the product price that a customer who belongs to a certain customer group sees.
The discount, unlike the special one, depends on the purchased quantity.
Discounts are set in the "Price" field. For example:

Text 5,4,8(6)7(3)10(11),,,9(20=) explanation:
- column 5 - regular price
- column 4 - price for group ID 1 when buying one piece
- column 8 - price for group ID 2 when buying quantity from column 6
- column 7 - price for group ID 2 when buying quantity from column 3
- column 10 - price for group ID 2 when buying quantity from column 11
- column 9 - price for group ID 5 when buying from 20 pieces
For example: Set the price for the customer group ID 2 - "Distributors" from price list column 7, when buying 4 pcs. : 5,,7(4=)
- column 5 - regular price
- in column 7 - the price for customer group ID 2 is after the 2nd comma
- (4=) means: when buying 4 pcs.
Tools
The Tools tab has several functions for working with specials and discounts::

1. All products selected according to the filter above the Action will have a special price set as a percentage of the product price. For example, to set a special price 5% less than the regular product price for customer group ID 2, you need to do the following:

2. Specials and promotions' start or end date is set in the format yyyy-mm-dd, for example:

3. To set a fake action means raising the product's regular price and at the same time lowering it to the same value with a special price. For example, the product has a regular price of 100, but after applying the tool:

this is what will happen:

Specials and Discounts default date start and date and
When updating a promotion or discount in product data, the plugin automatically sets the start date to yesterday, and the end date is 10 days later.
The "Fake action" start date is set as 2000-01-02 which is a flag for the plugin to distinguish the fake special prices.
When you change the product supplier, the old promotions or discounts are deleted.
If you want to change the default time period (9 days), you have to change the module code. Open the file admin/model/catalog/suppler.php and change all lines:
$plus_days = mktime(0, 0, 0, date('m'), date('d')+10, date('Y'));
replace the number of days (the number 10) with what is better for you.
Product Price. Parsing
The price is parsed according to the same rules as the name, SKU, description, manufacturer... everything that is plain text.
For example, in the page code, the product price is between the parameters content=" and "

In order for the plugin not to confuse the text content="199.00" with the text content="PLN", you need to specify the parsing start parameter itemprop="price":

Price parsing is different from title or description parsing
Since the price is a number, the plugin removes all characters from the parsed fragment that are not numbers. For example, the price 199.00 could be parsed with these parameters: itemprop="price",data

All characters except 190.00 will be removed from the resulting fragment content="199.00".
This plugin feature allows you to parse complicated text fragments. For example, in this text, there are two prices (regular price and special price). We need to parse the special one, if it exists, else the regular one:
<prices>
<msrp>510</msrp>
<special>500</special>
</prices>
Parsing parameters should be set as follows: <prices>,</prices>,2

the last 2 mean that we need the second number from the parsed fragment.
If there is no second number, the plugin will take the first one.
Another example:
<prices>
<msrp style="30 px">510</msrp>
<special>500</special>
</prices>
Here the regular price is the second number and the special one is the third:
- you can parse the special price this way: <prices>,</prices>,3
- the regular price: <prices>,</prices>,2
You can parse the special price with these parameters as well: <prices>,</prices>,5