# Refurbished Products for PrestaShop: installation and setup

> Overview The module adds refurbished products and unique items to PrestaShop 8 and 9. Each condition grade (A, B, C and any you add) is a native attribute value, so…

- Page: <https://www.datafirefly.com/en/documentation/dfrefurbished/>
- Language: en
- Last updated: 2026-10-07
- Other languages: [fr](https://www.datafirefly.com/documentation/dfrefurbished/index.md), [es](https://www.datafirefly.com/es/documentation/dfrefurbished/index.md), [de](https://www.datafirefly.com/de/documentation/dfrefurbished/index.md), [it](https://www.datafirefly.com/it/documentation/dfrefurbished/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfrefurbished/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfrefurbished/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfrefurbished/index.md)
- Index: <https://www.datafirefly.com/en/documentation/llms.txt>

## Overview

The module adds refurbished products and unique items to PrestaShop 8 and 9. Each condition grade (A, B, C and any you add) is a native attribute value, so a refurbished product has combinations such as "128 GB Black, grade A". Each device is a unit with its serial number, photos and tests, and the stock of each grade combination equals the number of available units.

## Installation

1. In **Modules > Module Manager**, click **Upload a module** and send the `dfrefurbished-1.2.1.zip` file.
2. Installation creates the **Grade (DataFirefly)** attribute group, shown as "Condition" in the shop, with grades A, B and C.
3. The **Catalog > Refurbished units** menu appears. The module's Configure button leads to grades and settings.

To update a previous version, simply upload the new ZIP: the upgrade script adds the required columns and tables.

## Configure grades

In the module configuration, the **Condition grades** block lists grades with:

- **Code** (A, B, C...) and **color**, used on cards, badges and labels;
- **Name and description** in each language ("Show all languages" link);
- **Default price impact** as a percentage (0, -10 and -20% at installation);
- **Position**: the first grade is the best one, its gauge is full;
- **Active**.

The last row adds a grade (tick **Add**). A grade cannot be deleted because combinations and orders use it: deactivate it instead.

## Module settings

- **Show grade cards** on the product page, with gauge, price, saving and stock.
- **Hide the native grade selector** when cards are shown.
- **Unit mode: hide the native add to cart button**, the customer then adds a piece with its own button.
- **Mask serial numbers** on public pages (last 4 characters shown).
- **New vs refurbished comparison** and its position: under the product or next to the cart button.
- **Refurbished offer on the new product page**.
- **Default warranties** for refurbished and new, in months.
- **Piece reservation in the cart**, 30 minutes by default.
- **Serial numbers in the order line**, so on the invoice and credit slip.
- **Order statuses that put units back in stock** (cancelled and payment error by default) and status of released units: available or returned (to inspect).
- **Test checklist**: one check per line, in each language. Keep the same order in every language, checks are matched by line number.

The **Tools** block links to the units and resynchronises all stock.

## Prepare a refurbished product

Open the product, **Modules** tab, then **DataFirefly Refurbished & Unique Items**.

1. Tick **This product is sold refurbished**. The native product condition is set to "Refurbished".
2. Choose the **sale mode**: by grade (the piece is assigned at order time) or by unit (the customer picks the exact device).
3. Set the **equivalent new product** for the comparison and the saving shown. Combinations are matched on the same attributes (capacity, color).
4. If needed, set warranties and the **price impact** of each grade for this product, as a percentage or a tax-excluded amount. Left empty, the grade percentage applies.
5. Click **Save refurbished settings**.
6. Click **Create grade combinations**: one combination per base option (capacity, color...) and active grade. The removal option then deletes combinations without grade; past orders keep their lines.
7. Click **Apply grade prices**.

The grade table shows for each grade the number of available, sold, returned and hidden units.

## Add units

In **Catalog > Refurbished units**, click **Add a unit**.

- **Product** (search by name, reference or ID), **base combination** and **grade**. The grade combination is created automatically if it does not exist.
- **Serial number**: unique per shop. The field accepts a barcode scanner.
- **Status**: available, sold, returned, hidden.
- **Battery health**, **warranty** (empty = product or module value) and **refurbishment date**.
- **Own sale price (tax excl.)**: used in unit mode only. Empty = price of the grade combination.
- **Public notes** in each language and **test checklist** (OK, defect, N/A, not tested).
- **Photos**: JPG, PNG, WebP or GIF, 10 MB max each, resized automatically.
- **Internal** panel: SKU, cost price, origin and internal notes, never shown to customers.

**Save and add another** keeps the product, combination and grade to chain entries. The unit page shows its history, a link to its public sheet and a label print button.

## Import units from CSV

**Import a CSV** button in the unit list. UTF-8 file, `;` or `,` separator detected from the header line. A sample file can be downloaded.

- Required: `serial`, `grade` (grade code) and `product_id` or `product_reference`.
- `base_reference`: reference of the combination without grade, empty for a product without other attributes.
- Optional: `status` (available, hidden, returned), `battery`, `warranty_months`, `date_refurbished` (YYYY-MM-DD), `price`, `cost_price`, `origin`, `sku`, `notes`, `internal_notes`.

Tick **Update the units already known** to change existing serial numbers, otherwise they are skipped. A sold unit is never modified by an import.

## In the shop

### Product page

Grade cards show the condition gauge, the price ("From" when pieces have different prices), the saving compared with new and the stock. The **How are grades defined?** link opens a window with each grade's description, the checklist and the warranty.

### Unit mode

Below the cards, the **Choose your piece** list shows each available unit of the selected grade: photo (full-screen viewer on click), masked serial, battery, tests, warranty and price. The **Add this piece** button reserves it in the cart for the set duration; a piece already reserved by another customer shows "Reserved".

### Comparison and new product

The table compares new and each grade: price, saving, cosmetic condition, warranty, availability. On the new product page, a box offers the refurbished option from the cheapest grade.

### Unit sheet and certificate

An available unit has a public sheet (not indexed) with its photos, battery, checklist and technician notes. After the sale, the buyer finds in their order detail a link to the **condition certificate**, with the full number, the warranty end date and a print button.

## Orders

- At validation, units reserved by the cart are assigned first, then the oldest free units. Units with an own price are kept for sales by unit.
- The serial number is added to the order line name if the setting is on.
- The back-office order page shows a **Refurbished units** block with a link to each unit.
- On the chosen statuses, units go back to available or returned, and the event is written to their history.

## Dashboard and labels

Above the unit list: units on sale, to inspect and hidden, stock value at cost price, average age of the stock and number of units on sale for more than 60 days, units sold, tax-excluded revenue and gross margin over 30 days.

The **Print labels** bulk action opens an A4 sheet of 24 labels 63.5 x 33.9 mm (L7159 type): product, grade, battery, serial number and a QR code to the unit sheet. The **Start at label no.** field reuses a partly used sheet. Print at 100%, without margins or headers.

## Known limitations

- A piece's own price only applies in unit mode, and catalog price rules do not apply to pieces with an own price.
- On a refurbished product, stock typed by hand on a grade combination is replaced by the number of available units.
- If an employee without rights on the module edits a product, PrestaShop does not run the module hooks: use the stock resynchronisation.
- Hiding the native grade selector relies on the HTML of the native product page. On a heavily customised theme, the native selector may stay visible next to the cards.
- If a piece's reservation expires while it is still in the cart, another customer can reserve it; the first customer's order then receives another unit of the same grade if one exists.
