Code Monkey home page Code Monkey logo

magento2-module-retailer-offer's Introduction

Smile Retailer Offer

This module is a plugin for ElasticSuite.

This module add the ability to manage offers per Retailer Shop.

Requirements

The module requires:

How to use

  1. Install the module via Composer :
ElasticSuite Version Module Version
ElasticSuite 2.1.x Latest release : composer require smile/module-retailer-offer:"^1.3"
ElasticSuite 2.3.x Latest release : composer require smile/module-retailer-offer:"^1.3"
ElasticSuite 2.6.x Latest release : composer require smile/module-retailer-offer:"^1.3"
ElasticSuite 2.7.x Latest release : composer require smile/module-retailer-offer:"1.4.0"
ElasticSuite 2.8.x Latest release : composer require smile/module-retailer-offer:"^1.5"
ElasticSuite 2.9.x Latest release : composer require smile/module-retailer-offer:"^1.6"
ElasticSuite 2.11.x Latest release : composer require smile/module-retailer-offer:"^2.0"
  1. Enable it:

bin/magento module:enable Smile_RetailerOffer

  1. Install the module and rebuild the DI cache:

bin/magento setup:upgrade

How to configure offers

Go to magento backoffice

Menu : Sellers > Retailer Offers

magento2-module-retailer-offer's People

Contributors

afoucret avatar fdec avatar livca-smile avatar lmilin-absolunet avatar macfja avatar matiasnombarasco avatar pawandeepalw avatar rbayet avatar romainruaud avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magento2-module-retailer-offer's Issues

The getProductCount method on category may return a wrong number

Preconditions

Magento Version : 2.4.2 CE

Module Retailer Offer Version : 1.7.0

Environment : Developer

Third party modules : retailer suite + retailer inventory

Steps to reproduce

  1. Create a custom block with a list of categories and in your foreach call the getProductCount method
  2. Add your custom block in the category view page
  3. Display the category page

Expected result

  1. Your custom block with the right number of products in the categories
  2. The list of products with the products attached to the displayed category

Actual result

  1. The list of products displays products which are not attached to the category

The problem comes from the CategoryPlugin the collection is retrieved via the layer

Retro compatibilty addFacet

Error on Model/Layer/Filter/Price.php, function addFacet().
Actual version no compatible with ES 2.6, just for 2.7.
And this function does not exist in ES 2.8.

=> todo : create different release based on ES version 2.6/2.7/2.8.

Offers Grid is slow

Preconditions

Magento Version : 2.2.5

Module Retailer Offer Version :1.3.4

Environment : Developer

Steps to reproduce

  1. Create lot of offers (in my case, we have 600 000 offers)
  2. In backoffice, go to Sellers > Retailer Offers

Expected result

  1. Display 20 offers quickly

Actual result

  1. Slow display of offers

Change the method to inject the offers filter

Description

To facilitate the addition of features (such as graphql) and the maintence of this module, we should review the method to inject the filter in the Elasticsearch request.

We must use the injected filters like the Stock filter in the elasticsuite modules.
This solution has the advantage of injecting the filter for each "typed" request as: search, autocompletion or product listing. Currently, we inject the filter via plugins, example:

<plugin name="filterAvailableOffer" type="Smile\RetailerOffer\Plugin\LayerPlugin" sortOrder="10"/>

The impacts of this change must be verified, especially in the backoffice.

Example

For example, we can create an elasticsuite_search_request.xml and the associate PHP class:

<requests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="urn:magento:module:Smile_ElasticsuiteCore:etc/elasticsuite_search_request.xsd">
    <request name="quick_search_container" label="Catalog Product Search" index="catalog_product" track_total_hits="true" fulltext="true">
        <filters>
            <filter name="stockFilter">Smile\RetailerOffer\Model\Product\Search\Request\Container\Filter\CurrentStore</filter>
        </filters>
    </request>
    <request name="catalog_product_autocomplete" label="Catalog Product Autocomplete" index="catalog_product" track_total_hits="0" fulltext="true">
        <filters>
            <filter name="stockFilter">Smile\RetailerOffer\Model\Product\Search\Request\Container\Filter\CurrentStore</filter>
        </filters>
    </request>
    <request name="catalog_view_container" label="Category Product View" index="catalog_product" track_total_hits="true" fulltext="false">
        <filters>
            <filter name="stockFilter">Smile\RetailerOffer\Model\Product\Search\Request\Container\Filter\CurrentStore</filter>
        </filters>
    </request>
</requests>

Cache is not cleared when creating or editing an offer

Preconditions

Magento Version : 2.2.5

Module Retailer Offer Version : 1.3.4

Environment : Developer

Steps to reproduce

  1. Change Navigation mode to Drive
  2. Add or edit an offer
  3. In front, go to a category or product

Expected result

  1. New or updated offer price is display for the current store

Actual result

  1. Old price is displayed, we have to clear caches so that the offer is displayed

Function visibility problem on getFilterField

Description

The visibility of the private method : getFilterField causes a problem for us when displaying the price slider filter of elasticsuite.
When we called this method in the DecimalFilterTrait.php of elasticsuite catalog in _getItemsData() method to get items :

    /**
     * @SuppressWarnings(PHPMD.CamelCaseMethodName)
     * Get data array for building attribute filter items
     *
     * @return array
     * @throws \Magento\Framework\Exception\LocalizedException
     */
protected function _getItemsData()
    {
        $attribute = $this->getAttributeModel();
        $this->_requestVar = $attribute->getAttributeCode();

        /** @var \Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection $productCollection */
        $productCollection = $this->getLayer()->getProductCollection();
        $facets = $productCollection->getFacetedData($this->getFilterField());

The function calls a magic method and not the correct method because it is private :

$facets = $productCollection->getFacetedData($this->getFilterField());
// $this->getFilterField()) calls magic method

And so, the method returns null and this causes the price slider not to display because there are 0 items.

Solution

To fix this problem, we recommende to modify the visibility method as protected to be able to use it without problem.

For all same methods in module-elasticsuite-catalog :

private function getFilterField()

to

protected function getFilterField()

The patch, we made to fix this issue is the following :

diff --git a/src/module-elasticsuite-catalog-graph-ql/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/ViewMore.php b/src/module-elasticsuite-catalog-graph-ql/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/ViewMore.php
index 9c47b6f..8a76068 100644
--- a/src/module-elasticsuite-catalog-graph-ql/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/ViewMore.php
+++ b/src/module-elasticsuite-catalog-graph-ql/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/ViewMore.php
@@ -113,7 +113,7 @@ class ViewMore implements ModifierInterface
      *
      * @return bool|string
      */
-    private function getFilterField()
+    protected function getFilterField()
     {
         try {
             $attribute = $this->getAttribute();
diff --git a/src/module-elasticsuite-catalog/Model/Layer/Filter/Decimal.php b/src/module-elasticsuite-catalog/Model/Layer/Filter/Decimal.php
index 17fabe9..d9686a2 100644
--- a/src/module-elasticsuite-catalog/Model/Layer/Filter/Decimal.php
+++ b/src/module-elasticsuite-catalog/Model/Layer/Filter/Decimal.php
@@ -114,7 +114,7 @@ class Decimal extends \Magento\CatalogSearch\Model\Layer\Filter\Decimal
      *
      * @return string
      */
-    private function getFilterField()
+    protected function getFilterField()
     {
         return $this->requestFieldMapper->getMappedFieldName(
             $this->getAttributeModel()->getAttributeCode()
diff --git a/src/module-elasticsuite-catalog/Model/Layer/Filter/Price.php b/src/module-elasticsuite-catalog/Model/Layer/Filter/Price.php
index b4c9f56..0a92bc9 100644
--- a/src/module-elasticsuite-catalog/Model/Layer/Filter/Price.php
+++ b/src/module-elasticsuite-catalog/Model/Layer/Filter/Price.php
@@ -136,7 +136,7 @@ class Price extends \Magento\CatalogSearch\Model\Layer\Filter\Price
      *
      * @return string
      */
-    private function getFilterField()
+    protected function getFilterField()
     {
         return $this->requestFieldMapper->getMappedFieldName('price');
     }
diff --git a/src/module-elasticsuite-catalog/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/AjaxFilter.php b/src/module-elasticsuite-catalog/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/AjaxFilter.php
index a1063ef..874c96e 100644
--- a/src/module-elasticsuite-catalog/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/AjaxFilter.php
+++ b/src/module-elasticsuite-catalog/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/AjaxFilter.php
@@ -118,7 +118,7 @@ class AjaxFilter implements ModifierInterface
      *
      * @return bool|string
      */
-    private function getFilterField()
+    protected function getFilterField()
     {
         try {
             $attribute = $this->getAttribute();

Function visibility problem on getFilterField

Description

The visibility of the private method : getFilterField causes a problem for us when displaying the price slider filter of elasticsuite.
When we called this method in the DecimalFilterTrait.php of elasticsuite catalog in _getItemsData() method to get items :

    /**
     * @SuppressWarnings(PHPMD.CamelCaseMethodName)
     * Get data array for building attribute filter items
     *
     * @return array
     * @throws \Magento\Framework\Exception\LocalizedException
     */
protected function _getItemsData()
    {
        $attribute = $this->getAttributeModel();
        $this->_requestVar = $attribute->getAttributeCode();

        /** @var \Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection $productCollection */
        $productCollection = $this->getLayer()->getProductCollection();
        $facets = $productCollection->getFacetedData($this->getFilterField());

The function calls a magic method and not the correct method because it is private :

$facets = $productCollection->getFacetedData($this->getFilterField());
// $this->getFilterField()) calls magic method

And so, the method returns null and this causes the price slider not to display because there are 0 items.

Solution

To fix this problem, we recommende to modify the visibility method as protected to be able to use it without problem.

For all same methods in module-elasticsuite-catalog :

private function getFilterField()

to

protected function getFilterField()

The patch, we made to fix this issue is the following :

diff --git a/src/module-elasticsuite-catalog-graph-ql/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/ViewMore.php b/src/module-elasticsuite-catalog-graph-ql/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/ViewMore.php
index 9c47b6f..8a76068 100644
--- a/src/module-elasticsuite-catalog-graph-ql/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/ViewMore.php
+++ b/src/module-elasticsuite-catalog-graph-ql/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/ViewMore.php
@@ -113,7 +113,7 @@ class ViewMore implements ModifierInterface
      *
      * @return bool|string
      */
-    private function getFilterField()
+    protected function getFilterField()
     {
         try {
             $attribute = $this->getAttribute();
diff --git a/src/module-elasticsuite-catalog/Model/Layer/Filter/Decimal.php b/src/module-elasticsuite-catalog/Model/Layer/Filter/Decimal.php
index 17fabe9..d9686a2 100644
--- a/src/module-elasticsuite-catalog/Model/Layer/Filter/Decimal.php
+++ b/src/module-elasticsuite-catalog/Model/Layer/Filter/Decimal.php
@@ -114,7 +114,7 @@ class Decimal extends \Magento\CatalogSearch\Model\Layer\Filter\Decimal
      *
      * @return string
      */
-    private function getFilterField()
+    protected function getFilterField()
     {
         return $this->requestFieldMapper->getMappedFieldName(
             $this->getAttributeModel()->getAttributeCode()
diff --git a/src/module-elasticsuite-catalog/Model/Layer/Filter/Price.php b/src/module-elasticsuite-catalog/Model/Layer/Filter/Price.php
index b4c9f56..0a92bc9 100644
--- a/src/module-elasticsuite-catalog/Model/Layer/Filter/Price.php
+++ b/src/module-elasticsuite-catalog/Model/Layer/Filter/Price.php
@@ -136,7 +136,7 @@ class Price extends \Magento\CatalogSearch\Model\Layer\Filter\Price
      *
      * @return string
      */
-    private function getFilterField()
+    protected function getFilterField()
     {
         return $this->requestFieldMapper->getMappedFieldName('price');
     }
diff --git a/src/module-elasticsuite-catalog/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/AjaxFilter.php b/src/module-elasticsuite-catalog/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/AjaxFilter.php
index a1063ef..874c96e 100644
--- a/src/module-elasticsuite-catalog/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/AjaxFilter.php
+++ b/src/module-elasticsuite-catalog/Search/Request/Product/Aggregation/Provider/FilterableAttributes/Modifier/AjaxFilter.php
@@ -118,7 +118,7 @@ class AjaxFilter implements ModifierInterface
      *
      * @return bool|string
      */
-    private function getFilterField()
+    protected function getFilterField()
     {
         try {
             $attribute = $this->getAttribute();

Return of the getItemsCount method is wrong

Preconditions

  1. Magento 2.2.2
  2. smile/module-retailer-offer 1.3.2 and Navigation mode is set to "Drive"

Steps to reproduce

  1. Add product with taxes to cart with price offer different to product price
  2. Go to cart
  3. Remove this product

Expected result

  1. Empty cart page with message "You have no items in your shopping cart."

Actual result

  1. Cart page without product in table and Order Total is wrong

Cart


Problem

In plugin Smile\RetailerOffer\Plugin\QuoteItemPlugin, we call the collectTotals by item when an offer exist $resultItem->getQuote()->setTotalsCollectedFlag(false)->collectTotals()->save();. And when magento remove item from cart and save it, the collectTotals is not dispatched because the flag is true

The comparison between the price of offer and the price of cart item: the $resultItem->getPrice() get the cart item price excluding taxes and if in offer we specify a price including taxes, the prices is always different

Prevent Tier Prices to be applied

In the Smile\RetailerOffer\Plugin\ProductPlugin, the parameter $qty of getFinalPrice is not passed to the around plugin function aroundGetFinalPrice.

The result is that $qty has always the value null and so the tier price rules are never applied.

It can be fixed quickly by adding de missing param like this

public function aroundGetFinalPrice(\Magento\Catalog\Model\Product $product, \Closure $proceed, $qty = null) { $price = $proceed($qty);

Thanks,

Import with API or CSV

Feature Import/Update Retailer with a Web API

As a developer, I would like to create a retailer to show them on the store locator.
This Feature will help to reduce the time for maintenance for any customer.

Distinguish product without offer and product with unavailable offer

In Drive mode :

We should be able to distinguish between :

  • a product having no offer for the current store (this product should never be displayed)

  • a product having an offer but set as unavailable (should be displayed if the store is configured to display out of stock products)

Not correct Product Name for SKU's on EE Magento for Smile Retailer Offers grid

Hi,

Preconditions

We faced issue when use module on Magento EE 2.4.4. When we go to the Retailer Offers Grid page we see that some product has not correct Product Name for some of SKU's. Also if we go to the offer detail page we will see Product Name different that was shown on grid. During investigation I see that for grid was generated query :

SELECT `main_table`.`offer_id`, `smile_seller_entity`.*, `smile_seller_name_d`.`value` AS `retailer_name`, `catalog_product_name_d`.`value` AS `product_name` FROM `smile_offer` AS `main_table` LEFT JOIN `smile_seller_entity` ON smile_seller_entity.entity_id = main_table.seller_id AND smile_seller_entity.attribute_set_id = 90 LEFT JOIN `smile_seller_entity_varchar` AS `smile_seller_name_d` ON smile_seller_name_d.entity_id = main_table.seller_id AND smile_seller_name_d.attribute_id = 2056 LEFT JOIN `catalog_product_entity_varchar` AS `catalog_product_name_d` ON catalog_product_name_d.row_id = main_table.product_id AND catalog_product_name_d.attribute_id = 65 WHERE (smile_seller_name_d.store_id = 0) AND (catalog_product_name_d.store_id = 0) GROUP BY `main_table`.`offer_id`, `main_table`.`offer_id`;

As you can see join for product_name column was on row_id = product_id, but product_id this is column that contain value of entity_id from catalog_product_entity table.

During investigation I found that in class : vendor/smile/module-retailer-offer/Ui/Component/Offer/Listing/AddProductNameFieldToCollection.php

exists line :
if ($this->productMetadata->getEdition() == self::MAGENTO_EE_EDITION_NAME) {

but in my case expression $this->productMetadata->getEdition() will return Enterprise value and constant MAGENTO_EE_EDITION_NAME has B2B value. But if I some modify this condition (allow to execute inner code) then I receive additional join that resolve issue with product names.

Magento Version : 2.4.4 EE

Module Retailer Offer Version : 1.8.1

Environment : Production

Third party modules : -

Steps to reproduce

  1. Install module
  2. Need create product that will have different row_id and entity_id
  3. Go to retailer offers page and check product -> you will see not correct product name

Expected result

  1. Product name will be correct

Actual result

  1. Product name not correct

M2.3.4 Don't load offer price on product page

Preconditions

Magento Version : CE 2.3.4

Module Retailer Offer Version : 1.5.2

Environment : Developer

Third party modules : /

Steps to reproduce

  1. Go on product page
  2. choose an offer on link "View availability in stores"

Expected result

  1. load price by offer and display on product page

Actual result

  1. Nothing is load, default price stay display

Errors during compilation: Smile\RetailerOffer\Model\Layer\Filter\Price

Hi there we are getting following error sind yesterday
Errors during compilation:
Smile\RetailerOffer\Model\Layer\Filter\Price
Incompatible argument type: Required type: array. Actual type: \Smile\ElasticsuiteCore\Search\Request\Query\QueryFactory; File:
/var/www/html/vendor/smile/module-retailer-offer/Model/Layer/Filter/Price.php

apparantly you are passing $queryFactory to the parent::__construct and the parent class does not allow this
the weird thing is that we are using this extension since two months and the error appeared yesterday only. Any ideas how we could fix this?

Cheers Sam

Retailer Offers List & New Retailer Offer pages are blocked -> too many retailer

For information, it's not the same problem with this ticket :
#27
In our case, it's because we have more than 7000 retailers.

Preconditions

Magento Version : CE 2.3.2

Module Retailer Offer Version : 1.5.1

Environment : Developer & Production

Third party modules :
Smile_ElasticSuite
Smile_Backend
Smile_Dataflow
Smile_Map
Smile_Offer
Smile_Retailer
Smile_Retailer_Offer
Smile_Seller
Smile_Store_Locator

Steps to reproduce

  1. Create more than 5000 retailers
  2. Go to Retailer Offers List page Or New Retailer Offer page

Expected result

  1. The retailer offer page is loaded

Actual result

  1. The retailer offer list&create page are blocked
    image

Origin of the problem

The module load all retailers and send them in json.
After dom ready, the js get this list and create a select input with all the retailers like options, that's what creates the problem.

Direct access to product via URL

Despite products not being shown in layered navigation in Drive mode, they remains accessible via their URL or the catalog/product/view pattern.

We may prevent this (configurable option ?) if the product has no offer for the current store.

[Cache] Offer ids not correctly added to product page availability block identities

Private method \Smile\RetailerOffer\Block\Catalog\Product\Retailer\Availability::getStoreOffers is called twice when displaying the availability block :

  • once to initialize the JS component
  • a second time to provide identities for the block

Unfortunately, the second time, the list of offers stored in $this->storeOffers is reset to an empty array.

This means that the block/page cache might not be cleared when a listed offer changes (availability, price or stock change).

Filter additional product listing blocks

Despite the filtering works properly on the layer when using Drive mode, other blocks are still showing products without filtering :

  • upsell / crossell / related
  • any product listing block

We should apply the filtering on those blocks too.

Price filter

The filter is made on the product price and not the offer price.

Group Price doesn't work when extension is enabled

Preconditions

  • Magento EE 2.2.2
  • smile/module-retailer-offer 1.3.2
  • A product with a price specific for a customer group
  • A customer that belongs to the specified customer group

Steps to reproduce

  • Login as the customer that belongs to the customer group specified in the preconditions
  • Add the product to cart
  • Go to cart

Expected result

Special price being applied

Actual result

Regular price its being applied

Notes

Noticed while working with this extension, the $qty are not being passed in the aroundGetFinalPrice plugin which causes to be null and subsequently makes the calculation for the layered price fail since the product quantity is required to drive that calculation.

This can affect to scenarios like wholesale price not working with the extension enabled.

Create order by admin and choose the seller

When we create order by admin, we can't choose the retailer to have the good price and if we have custom development based on the seller_id, like promotion cart rule, or a specific shipping method rule we can't use it.

Preconditions

Magento EE 2.2.5, with magento2-module-retailer-offer

Magento Version : EE 2.2.5

Module Retailer Offer Version : 1.3.6

Environment : Developer (Production in 3 weeks)

Third party modules :
Amasty Warehouse Inventory
Amasty Special Promo
Amasty Free Gift
...

Steps to reproduce

  1. Create an order in BO

Expected result

  1. Can choose the seller/retailer to ave a seller_id in sales_order table

Actual result

  1. the seller_id in the sales_order is null

Price not updated in cart

The price of the items added in cart is not updated after backoffice offer change.

Steps to reproduce :

  • Choose pickup store and pickup date
  • Add a product to cart
  • In backoffice, change the price of the corresponding offer
    -> In the cart, the price is not updated

Also, we need to know when a price is updated in cart, to advise the customer about it (like deleted products).

Regards,
Aymeric

Backoffice - Wrong product name in collection

Initial : Smile-SA/magento2-module-offer#11

Preconditions
Magento Version : 2.3.2 EE
Module Offer Version : 1.3.4
Environment : Developer

Third party modules : Smile_Retailer, Smile_RetailerOffer, Smile_Seller

Steps to reproduce
Create (or having) a product having its row_id different than its entity_id (table 'catalog_product_entity')
Create an offer for the previous product
Go on Retailer Offers List in backoffice
Expected result
We should have product name in offer listing
Actual result
We have the name of another product
Some informations
When retrieving product information for listing purpose, we are using 'entity_id' field of the product. But the product 'name' is stocked in table 'catalog_product_entity_varchar', and is identified by product 'row_id'.

Whenever a product does not have the same value for fields 'row_id' and 'entity_id', we are loading the name of another product.

Error 500 : Cannot access BO Stores > Configuration

Preconditions

Magento Version : "magento/product-community-edition": "2.3.1"
Module Retailer Offer Version : "smile/elasticsuite-for-retailer": "~1.6.0" => "smile/module-retailer-offer": "~1.5.0"
Environment : developer
Third party modules : none (this is the first I'm installing for this brand new project)

Steps to reproduce

  1. Follow Readme.md : composer require smile/elasticsuite-for-retailer:"~1.6.0", enable relevant modules including Smile_RetailerOffer (btw, you should add Smile_Map in the list), run setup:upgrade
  2. Login to admin
  3. Go to Stores > Configuration

Expected result

Normally browse configuration pages

Actual result

  1. You get an 500 error with exception :
Exception #0 (Exception): Notice: Undefined index: id in /var/www/html/vendor/magento
#1 Magento\Config\Model\Config\Structure\Element\Iterator->setElements(array(/* way too big to display*/)) called at [vendor/magento/module-config/Model/Config/Structure.php:146]
#2 Magento\Config\Model\Config\Structure->getTabs() called at [generated/code/Magento/Config/Model/Config/Structure/Interceptor.php:24]
#3 Magento\Config\Model\Config\Structure\Interceptor->getTabs() called at [vendor/magento/module-config/Model/Config/Structure.php:209]
#4 Magento\Config\Model\Config\Structure->getFirstSection() called at [generated/code/Magento/Config/Model/Config/Structure/Interceptor.php:76]
#5 Magento\Config\Model\Config\Structure\Interceptor->getFirstSection() called at [vendor/magento/module-config/Controller/Adminhtml/System/AbstractConfig.php:60]
#6 Magento\Config\Controller\Adminhtml\System\AbstractConfig->dispatch(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#) called at [vendor/magento/framework/Interception/Interceptor.php:58]
#7 Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->___callParent('dispatch', array(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#)) called at [vendor/magento/framework/Interception/Interceptor.php:138]
#8 Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#) called at [vendor/magento/module-backend/App/Action/Plugin/Authentication.php:143]
#9 Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch(&Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor#0000000012b2b85d000000006f54b282#, &Closure#0000000012b2b859000000006f54b282#, &Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#) called at [vendor/magento/framework/Interception/Interceptor.php:135]
#10 Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#) called at [vendor/magento/framework/Interception/Interceptor.php:153]
#11 Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->___callPlugins('dispatch', array(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#), NULL) called at [generated/code/Magento/Config/Controller/Adminhtml/System/Config/Index/Interceptor.php:39]
#12 Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->dispatch(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#) called at [vendor/magento/framework/App/FrontController.php:159]
#13 Magento\Framework\App\FrontController->processRequest(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#, &Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor#0000000012b2b85d000000006f54b282#) called at [vendor/magento/framework/App/FrontController.php:99]
#14 Magento\Framework\App\FrontController->dispatch(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#) called at [vendor/magento/framework/Interception/Interceptor.php:58]
#15 Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', array(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#)) called at [vendor/magento/framework/Interception/Interceptor.php:138]
#16 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#) called at [vendor/magento/framework/Interception/Interceptor.php:153]
#17 Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', array(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#), array(array('default_store_se...', 'page_cache_from_...', 'storeCookieValid...', 'install', 'configHash'))) called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:26]
#18 Magento\Framework\App\FrontController\Interceptor->dispatch(&Magento\Framework\App\Request\Http#0000000012b2ba56000000006f54b282#) called at [vendor/magento/framework/App/Http.php:136]
#19 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:24]
#20 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:258]
#21 Magento\Framework\App\Bootstrap->run(&Magento\Framework\App\Http\Interceptor#0000000012b2ba18000000006f54b282#) called at [index.php:39]

API for prices and availability

WEB API of magento are currently not connected to retailer-offer so we can't retreive a product real price and availability throught it.

It would be great evolution if we could send as parameter a retailer id or code so that it returns the proper offer price and availability for a product.

This evolution would be great for any concerned API.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.