- moduł został kompletnie przepisany + dodano masę nowych opcji
Key features and benefits
- Bulk price updates: a single CSV file can indicate many products, which reduces the need to open and edit their pages separately.
- Adaptation to the supplier's price list: separator selection, header support, and column mapping make it possible to use different data layouts without manually rearranging each column.
- Repeatable price calculation: saved markup, discount, and rounding settings are used in subsequent imports of base products.
- Control before updating: simulation shows the planned decisions without saving prices in the catalog.
- Result transparency: the summary and report make it possible to distinguish changes, skipped items, unknown identifiers, and rows stopped by limits.
- Ability to restore saved values: history provides rollback for runs for which the appropriate restoration data has been preserved.
- Support for regular price list deliveries: file download and import can be triggered by an external CRON schedule.
CSV import and product matching
The default format includes two columns: identifier and price. On the mapping page, other column positions can be assigned to the identifier, selling price, and purchase cost, while the remaining fields can be skipped. The module shows a sample of the uploaded file and can suggest assignments based on recognized headers; the suggestion requires verification and saving.
- Identifiers: product reference, i.e. SKU code, EAN13, UPC, product ID, and combination ID in combination mode. MPN is available if the relevant field exists in the database of the given installation.
- Repeated codes in the catalog: the setting allows updating the first match or all records with the same identifier.
- Number format: comma or dot decimal separators, spaces in amounts, and currency symbols next to the number are supported. Removing the currency symbol does not mean exchange rate conversion.
- File format: configurable separator, including tab, optional header row, quoted fields, and removal of the BOM marker from a UTF-8 file.
- Manual re-import control: you can block the use of a file name previously recorded in the history of applied manual imports for a given store. Simulations and CRON runs are not included in this control.
Example of a basic CSV price list
reference;price
PROD-001;99.90
PROD-002;149,50
PROD-003;219.00
For this example, select reference as the identifier, semicolon as the separator, and enable skipping the first row as a header. The first column is the identifier, and the second is the price. The way amounts are interpreted as net or gross is set separately.
Selling price calculation and pricing rules
For base products, the starting point may be the price from the CSV, the purchase cost from the assigned CSV column, or the purchase price already saved in the catalog. The cost read from the file is used for calculations; the module does not save it as the product's new purchase price.
- Markup on cost: the price is calculated according to the formula: cost × (1 + percentage / 100). For example, a cost of PLN 100 and a markup of 30% give a price of PLN 130 before any rounding.
- Percentage discount: the module subtracts the selected percentage from the value indicated as the starting point.
- Rounding: available options are two decimal places, ending with .99, full units up, nearest full unit, and leaving the result without additional rounding.
- Minimum markup on cost: after rounding, the price can be raised to the level resulting from the set minimum markup, provided that a positive purchase cost is available.
- Conditional rules: you can define separate behavior for the manufacturer, supplier indicated in the product, default category, input value range, or all products covered by the import. A rule can also exclude items from the update.
- Rule order: the first matching active rule decides. When none matches, the default settings are applied. The rule list is assigned to the target store.
Markup and margin mean different calculations here. A 30% markup on a cost of PLN 100 gives PLN 130, which means a margin of about 23.08% of the selling price. In the summary, the module calculates margin according to the formula: (net selling price − net cost) / net selling price. The statement applies to items for which the cost required for the calculation is available.
Net prices, gross prices, and product combinations
Importing net prices saves values without tax conversion. For gross prices, you can choose a fixed VAT rate or conversion according to the product's tax rule for the default country of the target store. For a gross file, pricing rules and rounding operate on gross amounts, and only the result is then converted to net. The absence of the rate required for conversion is shown in the summary.
In combination mode, the file specifies the variant's impact on the product's base price. With a base price of PLN 100 and a combination impact of PLN 20, the total is PLN 120 net before tax and other store pricing mechanisms. You can also enable resetting the base price of products whose combinations have been updated; such a change affects the other variants of the same product. Markup, percentage discount, and rounding rules, as well as creating discounts as specific prices, apply to base product imports.
Simulation, change limits, and discounts as reductions
Simulation lets you check how the module will read the price list and what decisions it will make, without saving product prices. In the limit settings, you can control the maximum percentage increase and decrease, zero price, and for base products with a saved purchase price also selling below cost and the minimum markup above the catalog cost.
- Skipping a row: an item that violates a limit goes to the report, while the remaining items can be updated.
- Stopping the entire run: the analysis preceding the save checks active limits; their violation causes the import to be rejected before prices are changed.
- Unmatched item limit: reaching the set threshold for the share of unmatched rows stops the run before saving.
- Handling invalid data: missing required columns, an empty identifier, or an invalid required price are reported as skipped items.
The discounts-as-reductions option keeps the base product's catalog price, and the difference between it and the lower resulting price is saved as a PrestaShop specific amount price. Subsequent imports manage the reductions saved by the module. In installations updated from the 1.1.x line, the mechanism for cleaning up older reductions may also include a former unconditional amount reduction added manually for this store.
Reports, history, and rollback of updates
The summary shows the number of rows read, changed products and combinations, unchanged prices, skips, mismatches, and blocks. It also includes information about price increases and decreases, the largest changes, and the results of applying pricing rules.
- CSV report: contains the decision for the item, the reason, row number, identifier, product or combination ID, and available values before and after the change.
- Difference preview in the panel: allows filtering by result, change direction, and minimum percentage change. The full report can be downloaded to a file.
- Run history: provides saved results of imports and simulations, reports, and actions for restoring and deleting entries.
- Remembering previous prices: after enabling this option, you can restore the values saved before a given run. By default, rollback data for the last 10 runs is stored separately for each store.
- Email summary: after an applied update, a message can be sent to the specified address. A report smaller than 2 MiB is attached to the message; a larger one remains available for download in the panel.
Rollback can also remove reductions created by the run and restore deleted reductions if their record has been preserved. Restoring an earlier price may overwrite a later edit of the same field. The availability of this operation depends on the preserved history data and does not replace a store database backup.
Downloading price lists, supplier profiles, and CRON
The source of the price list can be a file uploaded from a computer or a supplier address. Remote download supports HTTP/HTTPS, FTP with optional FTPS, and SFTP if the cURL library on the server provides this protocol. Connection data includes, respectively, address, host, port, path, login, and password.
A supplier profile saves import and export settings, column mapping, default price calculation settings, limits, and the file source under a name. Profiles belong to the target store, but do not store its selection, the uploaded file, the CRON secret, or the supplier password. The list of conditional rules remains assigned to the store. After changing the supplier, authentication data must be checked.
The module provides a secret-protected CRON address and operations for file download, import, download combined with import, and status reading. The schedule is set on the server or in a service that calls the address periodically. The call can indicate a profile, and subsequent calls continue the started import. Profiles do not serve as storage for separate passwords for multiple suppliers; compliance of the current password with the profile is checked during an automatic call requiring authentication.
Price export, larger files, and multistore
The export generates a CSV with identifiers and current net prices of the selected store. You can choose base products or combinations, the identifier type, and the separator. For combinations, the impact on the base price is exported. Re-import requires checking the mapping, selecting net prices, and rule settings so as not to recalculate already prepared amounts.
Files of at least 512 KiB launched in the panel are processed in stages with progress information. After closing the tab, subsequent stages are not executed by the browser; returning to the import page allows continuation from the saved point. The file limit in the module is 32 MiB, and PHP settings may additionally limit the size of the uploaded file.
In a multistore installation, the target import store and the export store are selected. Prices are updated in the selected store, while the basic module settings are shared across the installation. Profiles, conditional rules, and history data are linked to the store.
How to prepare a price update?
- Select the target store, update scope, and an identifier consistent with the catalog data.
- Upload or download the file, check the preview, separator, header, and column mapping.
- Set net or gross, the required pricing rules, change limits, and remembering previous prices.
- Run a simulation and check the summary and difference report.
- Run the update with simulation disabled, and then check its result in history.
Scope of operation and requirements
CSV Price Import Pro updates the price data of existing products and combinations. It does not create new products or import stock levels, descriptions, images, weights, or identification codes into product pages. Excel and other spreadsheets can be used to prepare the price list, but the file must be saved in CSV format; the module does not directly import XLSX or XML.
For version 1.4.0, the module declares support for PrestaShop from 1.7.6 to 9.x. The documentation specifies a PHP range of 7.0–8.5, with the PHP version also having to meet the requirements of the PrestaShop version in use. Remote download requires cURL, and scheduled updates require a configured external CRON.
Link to the module demo:
Admin panel demo:
https://moduly-prestashop.eu/masowa-aktualizacja-csv-cen/admin-dev
Front office demo:
https://moduly-prestashop.eu/masowa-aktualizacja-csv-cen