Feature request from cowmix88, posted on GitHub Feb 08, 2017
Preconditions
Magento 2.1.3
PHP 7.0.13
MySQL 5.6
Steps to reproduce
Create an item with SKU# SDF3123
Do a quick search for 3123
Expected result
Search returns product SDF3123
Actual result
Search returns no products.
Note: Advanced search with a SKU of 3123 does work correctly. Also SDF312 works in quick search so it appears the wildcard character is only being applied to the end of the search string.
Is there any easy way to edit search_request.xml to achieve the desired result?
... View more
Feature request from degaray, posted on GitHub Jan 04, 2017
Preconditions
As of Magento 2.1 there is no endpoint in the webapi to subscribe to the newsletter.
Expected result
There should be a post method to subscribe an email to the newsletter.
... View more
Status:
Investigating
Submitted on
02-10-2017
09:17 AM
Submitted by
apiuser
on
02-10-2017
09:17 AM
Feature request from cedcommerce, posted on GitHub Jan 30, 2017
I am getting 500 internal server error when I am posting wrong parameter in API request. I was trying to create customer through API while posting customer data, I posted groupid instead of group_id and that shows me 500 internal server error.
Preconditions
Magento 2.1.0 CE (or above)
Steps to reproduce
Open magento_site_url/swagger documentation (http://demo.cedcommerce.com/magento2/marketplace/swagger)
Open tab customerAccountManagementV1 ->Post /V1/customers to create account
Post customer data to create customer account with all correct information, instead of passing group_id pass groupid (we can try with any other parameters too).
Click on Try it Out! button
Result
{
"message": "Internal Error. Details are available in Magento log file. Report ID: webapi-588f3c623a140"
}
Expected Result
You had passed invalid parameters in your request, groupid doesn't exist in the request parameters. (Something like this)
As i had the access of server so i got my error but there is no process in magento to handle this error and show a correct/useful message, so that API user will be able to get what exact error they made in their API request. #
... View more
Magento 2.1.3: I've been given the task that when a customer with a certain property registers itself it should get a different e-mail template. What this property is, is not important for the question, but lets say for sake of simplicity I have a Service Contract that can check if the customer qualifies for the different e-mail template or not: $this->customerChecker->hasCertainProperty($customerId); // returns true or false Now this might seem like an easy task right? Just hook into `Magento\Customer\Model\EmailNotification` with a plugin or something, and modify the part where the correct e-mail template is selected. Right? public function newAccount(
CustomerInterface $customer,
$type = self::NEW_ACCOUNT_EMAIL_REGISTERED,
$backUrl = '',
$storeId = 0,
$sendemailStoreId = null
) {
$types = $this->getTemplateTypes();
if (!isset($types[$type])) {
throw new LocalizedException(__('Please correct the transactional account email type.'));
}
if (!$storeId) {
$storeId = $this->getWebsiteStoreId($customer, $sendemailStoreId);
}
$store = $this->storeManager->getStore($customer->getStoreId());
$customerEmailData = $this->getFullCustomerObject($customer);
$this->sendEmailTemplate(
$customer,
$types[$type],
self::XML_PATH_REGISTER_EMAIL_IDENTITY,
['customer' => $customerEmailData, 'back_url' => $backUrl, 'store' => $store],
$storeId
);
} Right... the e-mail template is sent in this method using sendEmailTemplate(). So we can't use a interceptor for this... Well let's just look at the sendEmailTemplate()-method then: private function sendEmailTemplate(
$customer,
$template,
$sender,
$templateParams = [],
$storeId = null,
$email = null
) {
$templateId = $this->scopeConfig->getValue($template, 'store', $storeId);
if ($email === null) {
$email = $customer->getEmail();
}
$transport = $this->transportBuilder->setTemplateIdentifier($templateId)
->setTemplateOptions(['area' => 'frontend', 'store' => $storeId])
->setTemplateVars($templateParams)
->setFrom($this->scopeConfig->getValue($sender, 'store', $storeId))
->addTo($email, $this->customerViewHelper->getCustomerName($customer))
->getTransport();
$transport->sendMessage();
} Darn! The method is private! So an interceptor will definitely not work here. And we also cannot use a rewrite, since private methods are not inherited. The only way to manipulate our desired functionality is by rewriting the EmailNotification and copy/paste everything that is private from this class. Which are a lot of methods and properties. --- I would suggest that the EmailNotification-class gets some refactoring so it makes it's easier for 3rd party modules to extend it's functionality. Or am I missing something here?
... View more
Feature request from craigcarnell, posted on GitHub Jan 09, 2017
Any plans to add 2 factor authentication to the Magento 2 Admin panel?
... View more
Feature request from kanduvisla, posted on GitHub Dec 23, 2016
So I recently 'discovered' that you can set the proper urn's for your IDE with the command bin/magento dev:urn:generate , but if you're running your Magento development environment in a VM (like I am) the paths generated do not match with the path on your development machine.
For example, in my VM, Magento 2 is installed in /var/www/magento , and /var/www is mounted on my local directory /Users/giel/PhpStormProjects/ProjectName .
So when I run bin/magento dev:urn:generate ../misc.xml it generates all mappings to /var/www/magento instead of /Users/giel/PhpStormProjects/ProjectName , rendering this feature useless if you're running it in a VM.
So there are 2 options here:
I can edit misc.xml and find and replace all the paths. Or:
We can add an extra option to the CLI command, --prefix for example.
If we go for option 2, we can do something like:
bin/magento dev:urn:generate --prefix="/Users/giel/PhpStormProjects/ProjectName/" ../misc.xml
Would this be a nice attribution to this function? If so, I wouldn't mind spending some time creating it and sending a PR.
... View more
Right now Shipping Address and Shipping Methods are in the same JavaScript uiComponent. This is fine for the most part, unless you want to add additional sections between them. This would be as easy as adding a new region foreach between the shipping address and shipping method sections of checkout\shipping.html
... View more
See more ideas labeled with:
I have an suggestion to include some simple sample modules (no documentation, but actual modules) that uses KnockoutJs to "Magento 2 sample module" package.
... View more
See more ideas labeled with:
I'm trying to import 250 tax rates, but it only imports 200 of them and then shows the message: 'One of the countries has invalid code'. It would be better feedback if Magento tells us which country / countries these are.
... View more
See more ideas labeled with:
There should be a book or a collection of tutorials how to use jquery, jquery-ui and knockoutjs together in Mangeto 2 for front-end developement (main focus on checkot page customisation) !
... View more
See more ideas labeled with:
Add the ability to insert a widget in the product description for example the link to a page or other product.
... View more
Magento 2 lacks this important feature (Enable Discounts to Subproducts) in Catalog Price Rule that was working in Magento 1.X. I think this is a really important core feature.
... View more
See more ideas labeled with:
The currency symbols choice has a global scope, it should at least have website scope. Stores > Currency > Currency Symbols
... View more
See more ideas labeled with:
Feature request from tiwarimukesh, posted on GitHub Aug 13, 2016
Following is not a bug it can be considered as an improvement or a feature.
In Magento 1 over long time of use media folder size keep growing and it become too huge.(If there a frequent updates of images).
This happens especially for the website having very large catalog. It becomes difficult to identify the unused images and remove them. As an image can be used for multiple products or on multiple pages.
Is there any road map of any feature which will provide a functionality for optimal handling of images in media folder?
... View more
Feature request from devonto, posted on GitHub Oct 13, 2016
There is a typo in the message being displayed to a user when removing a coupon code. One 'l' when it should be two in 'cancelled'.
\vendor\magento\module-checkout\Controller\Cart\CouponPost.php line 137 is currently:
$this->messageManager->addSuccess(__('You canceled the coupon code.'));
And should be:
$this->messageManager->addSuccess(__('You cancelled the coupon code.'));
... View more
Status:
Investigating
Submitted on
12-05-2016
10:56 AM
Submitted by
apiuser
on
12-05-2016
10:56 AM
Feature request from ytorbyk, posted on GitHub Oct 03, 2016
Preconditions
Magento 2.2.0-dev with sample data
Braintree payment method is configured and enabled
"Authorize" payment action is set for Braintree
Steps to reproduce
Log in
Add at least two product into the shopping cart
Place order with Braintree payment method
Go to admin panel
Create two separate invoices (partial invoices) for the order
Open each of them and create credit memo for each one
Expected result
Invoices ID is stored into DB record for the each credit memo in "sales_creditmemo" DB table
Actual result
Invoice ID field is always empty for both cases - credit memo is crated for order or for invoice.
P.S. As improvement it would be nice to have an ability to show Invoice ID in credit memo grid additionally to Order ID.
... View more
Status:
Investigating
Submitted on
12-05-2016
10:56 AM
Submitted by
apiuser
on
12-05-2016
10:56 AM
Feature request from Taral-Patoliya, posted on GitHub Nov 03, 2016
I am working on a store where i need to import products on a daily basis and the number of products may go up to more then 1,90,000. The Store discount heavily depends on the customer groups which are around 8800 including the core ones in number.
The Products are imported seamlessly, but when trying to reindex the Catalog Product Price index , it inserts 130 million records in catalog_product_index_price_final_idx table which takes huge time to complete.
Also the customer groups does not have any alternative. because catalog price rules, and tier prices depend heavily on them.
130 million records are a very huge amount of data on a mysql installations.
Note We have 15000 products as of now, but it is expected to increase to 1,90,000. so the number of records in catalog_product_index_price_final_idx table may got up to 1.65 billion records.
Note: The infrastructure of the server is optimized for high performance, with SSD for storage and MySQL configured using percona db.
... View more
Feature request from schnappenberger, posted on GitHub Nov 09, 2016
if you delete an image a.jpg from a product A gallery and have another product B which uses a.jpg, then a.jpg will be deleted in file system and product B looses this image also.
Preconditions
Magento 2.1.2
PHP7
Apache 2
Mysql 5
Steps to reproduce
Import some Products with the same image gallery
Open a product in admin and delete an image, which is used in other products
Have a look on the gallery of the other products
Expected result
Image relation is deleted from database, the image in filesystems stays if there are relations from other products
Image in filesystem is only deleted if there are no other relations
Actual result
Image relation in database and in filesystem is deleted
Other products which uses this image have now a relation to a non existing image file
... View more
Status:
Investigating
Submitted on
12-05-2016
10:56 AM
Submitted by
apiuser
on
12-05-2016
10:56 AM
Feature request from RUjmiak, posted on GitHub Oct 19, 2016
Magento 2.1.2
Steps to reproduce
Customer login
Create cart (carts/mine)
Add product to cart
Create address (via put customers/me)
Now I have address ID 109115
I checked available shipping for my address (V1/carts/mine/estimate-shipping-methods-by-address-id) and in response I get that flatrate is available.
Expected result
One simple call with which I can add shipping address ID to cart.
Actual result
You need to use POST V1/carts/mine/shipping-information where you cant use just ID
{
"addressInformation": {
"shippingAddress": {
"id": 109115,
"customerAddressId": 109115
},
"shippingMethodCode": "flatrate",
"shippingCarrierCode": "flatrate"
}
}
result: Error 400 Shipping address is not set
or when
{
"addressInformation": {
"shippingAddress": {
"customerAddressId": 109115
},
"shippingMethodCode": "flatrate",
"shippingCarrierCode": "flatrate"
}
}
result: Error 400 Shipping address is not set
or when
{
"addressInformation": {
"shippingAddress": {
"id": 109115
},
"shippingMethodCode": "flatrate",
"shippingCarrierCode": "flatrate"
}
}
result: Error 400 Shipping address is not set
OK lets to add address. Here is another funny part. You cant use address ID because it is not working (and we are just starting)
{
"addressInformation": {
"shippingAddress": {
"id": 109115,
"region": "",
"regionId": 0,
"regionCode": "",
"countryId": "SK",
"street": [
"string"
],
"telephone": "0902222",
"postcode": "82100",
"city": "Bratislava",
"firstname": "My name",
"lastname": "My last name",
"customerAddressId": 109115,
"customerId": 124252
},
"shippingMethodCode": "flatrate",
"shippingCarrierCode": "flatrate"
}
}
response
Error 400: Unable to save shipping information. Please check input data.
Here we can look on another weird thing - why right now we are using another address attribute name asi it is on customers/me calls? For example on customers/me call
region is array, customer_id vs customerId, region_id vs regionId, country_id vs countryId... The right hand does not know what makes left...
So how we can set saved address to cart? We cant... What we need to do is to get address from customers/me, then rewrite it to different structure in shipping-information call AND delete address ID. So call should look like
{
"addressInformation": {
"shippingAddress": {
"region": "",
"regionId": 0,
"regionCode": "",
"countryId": "SK",
"street": [
"string"
],
"telephone": "0902222",
"postcode": "82100",
"city": "Bratislava",
"firstname": "My name",
"lastname": "My last name"
},
"shippingMethodCode": "flatrate",
"shippingCarrierCode": "flatrate"
}
}
Vuala - this is working - but is this good? I think that this is bug and it should be done more simple.
Thanks guys
... View more
Feature request from povesma, posted on GitHub Oct 23, 2016
It is very useful to know number of active products (status = 1) in the search categories API call. Currently we can see total number of all products (including disabled).
Preconditions
Magento 2.1.2
Steps to reproduce
/rest/V1/categories?root_category_id=24
Expected result
{
"id": 24,
"parent_id": 23,
"name": "Best Sellers",
"is_active": true,
"position": 2,
"level": 3,
"product_count": 5,
"active_product_count": 3, <---- add this one or similar, showing active products only
"children_data": []
}
Actual result
{
"id": 24,
"parent_id": 23,
"name": "Best Sellers",
"is_active": true,
"position": 2,
"level": 3,
"product_count": 5, <---- total product count only, which includes disabled products
"children_data": []
}
... View more