# smile/elasticsuite-for-retailer

> Smile ElasticSuite for Retailers - Magento2 toolkit for Retailers : Store Locator, Availability and Prices per store, etc...

`composer require smile/elasticsuite-for-retailer`

Canonical URL: https://packagento.com/smile/elasticsuite-for-retailer

## At a glance

- **Vendor**: smile (https://packagento.com/smile.md)
- **Latest version**: 2.4.2 — released 2024-08-29
- **Pricing**: Free
- **Package type**: Metapackage (bundle of modules)
- **Status**: active, accepting new buyers

## Installation

Packagento is licence-gated, so even free packages need a licence on a project before Composer can resolve them.

1. **Sign in or create an account** at https://packagento.com/customer/account/.

2. **Add the package to your account.** Open https://packagento.com/smile/elasticsuite-for-retailer and complete the free checkout. A licence is minted automatically.

3. **Create or pick a project, then activate the licence on it.**
   - Projects represent the Magento installs you deploy to. Manage them at https://packagento.com/projects/.
   - Activate the new licence on the project you'll deploy this package to. Activation is what generates the Composer credentials scoped to that project.

4. **Add the project credentials to your Magento codebase.**

   Grab the project's public + private key from https://packagento.com/projects/ (open the project, then its Credentials tab), and add them to `auth.json`:

   ```json
   {
     "http-basic": {
       "packagento.com": {
         "username": "ppk_live_...",
         "password": "psk_live_..."
       }
     }
   }
   ```

   Add the Packagento Composer repository to `composer.json`:

   ```json
   {
     "repositories": [
       { "type": "composer", "url": "https://packagento.com" }
     ]
   }
   ```

5. **Install and apply.**

   ```bash
   composer require smile/elasticsuite-for-retailer:*
   bin/magento setup:upgrade
   bin/magento setup:di:compile
   bin/magento cache:flush
   ```

## What it does

Smile ElasticSuite for Retailers - Magento2 toolkit for Retailers : Store Locator, Availability and Prices per store, etc...

## README

#### Compatibility

Due to all new paradigms introduced by Magento 2.1 (entity manager, forms based on UI components, staging for the EE edition, ...), the **required minimum version of Magento for using this module is Magento 2.1**

If your project is based on Magento 2.1.x you can start working with ElasticSuite for Retailer today using the latest **1.2.0-alpha1 release**.

This module support PHP 8.3

#### Requirements

The module requires:

- [ElasticSuite](https://github.com/Smile-SA/elasticsuite) > 2.11.*
- [Offer](https://github.com/Smile-SA/magento2-module-offer) > 2.0.*
- [Seller](https://github.com/Smile-SA/magento2-module-seller) > 2.0.*
- [Retailer](https://github.com/Smile-SA/magento2-module-retailer) > 2.0.*
- [Store Locator](https://github.com/Smile-SA/magento2-module-store-locator) > 2.2.*
- [Retailer Offer](https://github.com/Smile-SA/magento2-module-retailer-offer) > 2.0.*
- [Store Delivery](https://github.com/Smile-SA/magento2-module-store-delivery) > 2.0.*

It's a toolkit module to install the RetailerSuite modules.

#### How to use

1. Install the module via Composer:


ElasticSuite Version   | Module Version
-----------------------|------------------------------------------------------------------------
ElasticSuite **2.1.x** |Latest release: ```composer require smile/elasticsuite-for-retailer:"^1.4"```
ElasticSuite **2.3.x** |Latest release: ```composer require smile/elasticsuite-for-retailer:"^1.4"```
ElasticSuite **2.6.x** |Latest release: ```composer require smile/elasticsuite-for-retailer:"^1.4"```
ElasticSuite **2.7.x** |Latest release: ```composer require smile/elasticsuite-for-retailer:"~1.5.0"```
ElasticSuite **2.8.x** |Latest release: ```composer require smile/elasticsuite-for-retailer:"~1.6.0"```
ElasticSuite **2.9.x** |Latest release: ```composer require smile/elasticsuite-for-retailer:"~2.2.0"```
ElasticSuite **2.11.x** |Latest release: ```composer require smile/elasticsuite-for-retailer:"~2.3.0"```
ElasticSuite **2.11.x** |Latest release: ```composer require smile/elasticsuite-for-retailer:"~2.4.0"```

2. Enable it:

``` bin/magento module:enable Smile_Offer ```

``` bin/magento module:enable Smile_Seller ```

``` bin/magento module:enable Smile_Retailer ```

``` bin/magento module:enable Smile_StoreLocator ```

``` bin/magento module:enable Smile_RetailerOffer ```

``` bin/magento module:enable Smile_StoreDelivery ```

3. Optionnal: Drop old SMILE_RETAILER_ADDRESS_RETAILER_ID unique key

_if you already used older retailersuite modules on your projects, and you want to upgrade it,_
_before upgrading, you will have to DROP your current UNIQUE KEY from table smile_retailer_address : SMILE_RETAILER_ADDRESS_RETAILER_ID_
_This is necessary in order to get a db_schema.xml working correctly._

``` ALTER TABLE smile_retailer_address DROP INDEX SMILE_RETAILER_ADDRESS_RETAILER_ID ```

4. Install the module and rebuild the DI cache:

``` bin/magento setup:upgrade ```

### How to configure

> Stores > Configuration > Elasticsuite > Elastic Suite for Retailer

Navigation mode: Retailer/Drive   
    * Drive mode: the customer will only see the catalog of the chosen retailer in Front Office.    
    * Retail mode: the customer will browse the Web catalog by default.   
Display offers on product page: Yes/No (When enabled, offers of all stores will be displayed on product page.)

### What is ElasticSuite for Retailers ?

This package is a suite of several modules aiming to help merchants dealing with retail and omnichannel mechanics in Magento 2 (Store Locator, Product availability/price per store, pickup in store, etc...).

The package relies on our custom Search and Merchandising tool called ElasticSuite which can be found [here](https://github.com/Smile-SA/elasticsuite).

For more information, read <strong>the User Guide "Smile ElasticSuite for retailer"</strong>. It's available [here](https://github.com/vipra93/elasticsuite-for-retailer/blob/master/doc/static/User%20Guide%20Smile%20ElasticSuite%20for%20Retailer%20Magento%202%20v1.pdf).

### Who is developping ElasticSuite for Retailer ?

<p align="center">
    <a href="http://www.smile-oss.com"><img alt="SmileLab" src="https://github.com/Smile-SA/elasticsuite/raw/master/doc/static/smilelab-logo.png" /></a>
</p>

SmileLab is the innovation and experimentation department of Smile. Smile is the **European leader of Open Source** and also a four-times **Europe Partner of the the Year** (2010-2014) and two-times **Spirit of Excellence** (2015-2016) awarded by Magento.

Our multidisciplinary team brings together experts in technology, innovation, and new applications.

Together we explore, invent, and test technologies of the future, to better serve our clients.

### Main Features

#### Current version

The current **2.4.0** version has been focused on compatibility with Magento 2.4.6:

<br/>
Some functionnalities example:

* **Store Locator :**

    This feature allows you to **create and manage your shops** in Magento's back-office. The module comes by default with several pre-configured attributes such as Shop Address, GPS coordinates, Opening Hours, etc...

    Once you have created all your shops, your customers will be able to navigate through them in the Front-Office on a **map**.

![Stores Map](doc/static/shop-map.png)

Each of your stores has also a **Shop detail page** and eventually a **Contact Shop page** if you enable this option on the store.

Your customer will be able to choose his favorite shop and this will keep it during all his navigation through your website.

<br/>

* **Store Offers:**

    This features let you create **specific offers for a given product and a given shop**: you'll be able to define the price and/or the availability for a product in each shop.

<p align="center">
    <img alt="Offer Step one" src="doc/static/offer-step-one.png" />
    <img alt="Offer Step two" src="doc/static/offer-step-two.png" />
</p>

_(README truncated for .md surface. Full README on https://packagento.com/smile/elasticsuite-for-retailer.)_

## Changelog

All notable changes to this project will be documented in this file.

### [2.4.2] - 2024-08-29
[2.4.2]: https://github.com/Smile-SA/elasticsuite-for-retailer/compare/2.4.1...2.4.2

- PHP 8.3 compatibility check

### 2024-05-03

- Map : Fix geolocalize through header button, see https://github.com/Smile-SA/magento2-module-map/compare/2.1.0...2.1.1
- Map : Add CSP whitelist
- Offer : Fix extensionAttribute - Concrete return type must be specified, see https://github.com/Smile-SA/magento2-module-offer/compare/2.0.0...2.0.1
- Retailer : Fix PSR-0, see https://github.com/Smile-SA/magento2-module-retailer/compare/2.0.0...2.0.1
- RetailerOffer : Add modal map to product page search, see https://github.com/Smile-SA/magento2-module-retailer-offer/compare/2.0.1...2.0.2
- RetailerOffer : Fix show product offer price if shop has been selected, even in Retail mode
- StoreDelivery : Refactor - same search design everywhere, see https://github.com/Smile-SA/magento2-module-store-delivery/compare/2.0.0...2.0.1
- StoreDelivery : Dont show store delivery shipping method if no markers found
- StoreLocator : Refactor - same search design everywhere, see https://github.com/Smile-SA/magento2-module-store-locator/compare/2.2.0...2.2.1
- Update contact form

### 2023-09-20

Dataset compatibility Magento 2.4.6, ES 2.11.x and PHP 8.2

- Fix Dynamic type declaration
- Fix Type hinting
- Replace `Zend_Date` by `DateTime`
- Remove `MutationObserver` support
- Fix UI Component Retailer Offer editing
- Replace `Zend_Validate` by `Laminas\Validator`
- Fix Retailer Grid Column Action
- Fix Retailer Grid Mass Actions
- Fix some translations
- Remove Temando/Shipping Plugin

## Recent Versions

| Version | Released |
|---|---|
| 2.4.2 | 2024-08-29 |
| 2.4.1 | 2024-05-03 |
| 2.4.0 | 2023-09-21 |
| 2.3.0 | 2021-06-22 |
| 2.2.0 | 2021-02-11 |
| 2.1.0 | 2020-08-26 |
| 2.0.0 | 2020-03-18 |
| 1.6.0 | 2019-06-03 |
| 1.5.0 | 2019-05-27 |
| 1.4.5 | 2019-05-27 |

Showing 10 of 19 versions. Full release history on https://packagento.com/smile/elasticsuite-for-retailer.

## Dependencies

### Require

| Package | Constraint |
|---|---|
| magento/framework | >=103.0.4 |
| magento/magento-composer-installer | * |
| php | ^8.1 |
| smile/elasticsuite | ^2.11 |
| smile/module-map | ^2.1 |
| smile/module-offer | ^2.0 |
| smile/module-retailer | ^2.0 |
| smile/module-retailer-offer | ^2.0 |
| smile/module-seller | ^2.0 |
| smile/module-store-delivery | ^2.0 |
| smile/module-store-locator | ^2.2 |

### Require (dev)

| Package | Constraint |
|---|---|
| smile/magento2-smilelab-quality-suite | ^3.0 |

### Suggest

| Package | Constraint |
|---|---|
| smile/module-retailer-admin | Add the ability to manage ACL in admin panel per retailer |
| smile/module-retailer-elasticsuite-search | Index retailers into the search engine and display them into autocomplete and search result. |
| smile/module-retailer-offer-inventory | Add inventory management by offers |
| smile/module-retailer-promotion | Add the ability to add promotion per retailer |
| smile/module-retailer-service | Add the ability to add services per retailer |

## Quality

Latest release (2.4.2) fails the Packagento QA pipeline. Verdicts below are per-cell (Magento line × PHP version) for the matrixed tools, and run-once for the static / security tiers.


### Compatibility

Each Magento line is installed on its supported PHP versions, then the module is built (DI compile + static-content deploy). Cells show passed / failed / untested; staircase gaps render as `–`.

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | not tested | not tested | – | – |
| 2.4.8 | – | not tested | not tested | – |
| 2.4.9 | – | – | not tested | not tested |


### Code Quality

Advisory checks against the module's source. Never affect the Compatibility verdict — a phpcs finding can't make a module incompatible.

#### Static Analysis

Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | N/A | 0 | metapackage ships no source of its own — phpcs skipped (#122) |
| PHPMD | N/A | 0 | metapackage ships no source of its own — phpmd skipped (#122) |
| Cpd | N/A | 0 | metapackage ships no source of its own — cpd skipped (#122) |
| PHP Compatibility | N/A | 0 | metapackage ships no source of its own — php-compatibility skipped (#122) |
| Composer validate | Info | 2 | valid; 2 advisory notes (composer validate --strict) |

#### PHPStan

Type-checks the module against a real Magento install. Re-runs per Magento + PHP version because resolvable symbols differ between releases.

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | 985 | 985 | – | – |
| 2.4.8 | – | 985 | 985 | – |
| 2.4.9 | – | – | 977 | 977 |


### Tests

Unit and integration suites run per Magento + PHP cell. Test failures speak to the module's behaviour, not its compatibility with a line, so they're reported here separately.

#### Unit Tests

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | – | – |
| 2.4.8 | – | N/A | N/A | – |
| 2.4.9 | – | – | N/A | N/A |

#### Integration Tests

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | – | – |
| 2.4.8 | – | N/A | N/A | – |
| 2.4.9 | – | – | N/A | N/A |


### Security

Dependency-advisory audit (composer audit) plus a source malware scan. A malware detection fails the version outright.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| Composer audit | Pass | 0 |  |
| Malware scan | N/A | 0 | metapackage ships no source of its own — malware scan skipped (#122) |

## Licence and pricing

Free. A licence is still minted on checkout and bound to your project for Composer access — no payment step.

Refundable within 14 days of first purchase via https://packagento.com/account/refunds/.

## Install via Claude Code or any MCP client

The Packagento MCP server can run the licence + project + Composer steps above in one tool call:

```
purchase_and_install_packages(
  composer_names=["smile/elasticsuite-for-retailer"],
  project_id="proj_xxx"
)
```

This handles cart, checkout, licence minting, project activation, and writes auth.json credentials. Connect a client with `claude mcp add packagento https://mcp.packagento.com`. Full setup at https://packagento.com/docs/mcp-setup.

## Vendor

smile is a Magento 2 vendor on Packagento. See https://packagento.com/smile.md for their full catalogue.

