Showing ideas with status New.
Show all ideas
Feature request from navarr, posted on GitHub Jul 21, 2016
Steps to reproduce
Install Magento from develop branch.
Begin writing code that interacts with an API that takes, for example, JSON as the body request
Investigate the \Magento\Framework\HTTP\ClientInterface to see how to send this body within the Magento framework
Expected result
post method, or another method allows the sending of raw json or other raw data to the server
Actual result
No such functionality exists, making it impossible to send raw data over the HTTP ClientInterface
As a potential fix, I've opened Pull Request #5407. This enables the post method to send raw data as well as the previously accepted array of data.
... View more
Feature request from ADDISON74, posted on GitHub Jul 22, 2016
1) The number of columns is pretty big. You can get rid off Visibility, Product, SKU columns
2) If you still want keeping those columns, there is an issue with special characters in Product column. ™ appears incorrect &trade
... View more
Feature request from jacquesbh, posted on GitHub Jul 23, 2016
I'm playing with performances issues.
One of them (too much to write an issue for each) is that the Customer is loaded on each page, event if the customer isn't logged in!
There is no test about the possibility of having a customer's ID equal to null in the source code.
Preconditions
Magento EE 2.0.2 (but doesn't matter, it is in CE too…)
Nginx / PHP5-fpm
Steps to reproduce
The problem is there: https://github.com/magento/magento2/blob/2d368d0134597257ef5697a4bcbb7f69f2aebed8/app/code/Magento/Customer/Model/Session.php#L279-L292
If you want to test this just add this before the line 288 on the file above:
syslog(7, 'Value of the customer\'s ID is ' . var_export($this->getCustomerId(), true));
Which results in:
/**
* Retrieve customer model object
*
* @return Customer
* use getCustomerId() instead
*/
public function getCustomer()
{
if ($this->_customerModel === null) {
syslog(7, 'Value of the customer\'s ID is ' . var_export($this->getCustomerId(), true));
$this->_customerModel = $this->_customerFactory->create()->load($this->getCustomerId());
}
return $this->_customerModel;
}
Expected result
If the customer is logged in: look your syslog and you should get something like Jul 23 16:38:16 magento2ee: Value of the customer's ID is 1
If the customer isn't logged in: you shouldn't get any log because a customer with the ID null shouldn't be loaded.
Actual result
We always get a log… and specially a Value of the customer's ID is NULL if the customer isn't logged in.
... View more
Feature request from SamTay, posted on GitHub Apr 13, 2016
Product::isInStock is misleading. This does not check if product is in stock, but just checks if enabled.
Product::getQty does not look for qty key in the correct place. Perhaps in some parts of the app, qty is set on the Product::_data array directly, but my screenshot shows that this is not the case in the product/price/amount/default.phtml template. Because this is the implementation of the SaleableInterface, this is a problem for abstraction.
... View more
Feature request from zinittest, posted on GitHub Apr 25, 2016
Steps to reproduce
Create CSV file for customer import with gender fields filled with valid values (Male, Female, ...).
Choose "Customers Main File", "Add/Update Complex Data" options.
Import data.
Expected result
Gender data is properly saved.
Actual result
None of imported customers have gender info saved. DB fields in customer_entity . gender column are filed with zeroes or nulls.
P. S. Probably error occurs because gender data are not replaced with corresponding constant values on data preparation step (https://github.com/magento/magento2/blob/develop/app/code/Magento/CustomerImportExport/Model/Import/Customer.php#L403), so system is trying to insert string values to DB column of integer type. I was able to import gender data with following ugly piece of code inserted before new customer check https://github.com/magento/magento2/blob/develop/app/code/Magento/CustomerImportExport/Model/Import/Customer.php#L406:
if (false !== strpos($entityRow['gender'], 'Male')) {
$entityRow['gender'] = 1;
} elseif (false !== strpos($entityRow['gender'], 'Female')) {
$entityRow['gender'] = 2;
} else {
$entityRow['gender'] = 3;
}
Of course it requires more proper fix.
... View more
Feature request from paales, posted on GitHub May 04, 2016
https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Block/Product/View/Options/Type/Select.php
It currently renders the HTML in the block, would be nice if is rendered in a template. That would make customization a lot easier.
... View more
Feature request from erikhansen, posted on GitHub Jun 08, 2016
The PayPal Express review page has typically always been lacking in its UI. Here is a screenshot of a live M2 review page with some suggestions for improvement (note: this theme is based on the Magento/blank theme):
As a point of reference, here is a Magento 1 site that has a better UI, in my opinion:
... View more
Feature request from pynej, posted on GitHub May 05, 2016
We have everything configured and can see the approval response from PayFlow in the debug log, but the fronted/spiny wheel never goes away an no order is ever created.
No errors or the logs or in the browser console.
Here is the approval response in the log:
'request' =>
array (
'user' => '****',
'vendor' => '****',
'partner' => '****',
'pwd' => '****',
'verbosity' => 'HIGH',
'BNCODE' => 'Magento_Cart_Community',
'tender' => 'C',
'trxtype' => 'A',
'amt' => 0,
'createsecuretoken' => 'Y',
'securetokenid' => '108d7c2cecc18c90046869377181****',
'returnurl' => 'https://crowehorwath.superior.org/paypal/transparent/response/',
'errorurl' => 'https://crowehorwath.superior.org/paypal/transparent/response/',
'cancelurl' => 'https://crowehorwath.superior.org/paypal/transparent/cancel/',
'disablereceipt' => 'TRUE',
'silenttran' => 'TRUE',
'firstname' => 'Jeremy',
'lastname' => 'Pyne',
'street' => '****',
'city' => 'Kentwood',
'state' => 'MI',
'zip' => '49512',
'country' => 'US',
'email' => 'jpyne@****',
'shiptofirstname' => 'Jeremy',
'shiptolastname' => 'Pyne',
'shiptostreet' => '****',
'shiptocity' => 'Kentwood',
'shiptostate' => 'MI',
'shiptozip' => '49512',
'shiptocountry' => 'US',
),
'result' =>
array (
'result' => '0',
'securetoken' => 'Plgu0x5uu60Krhc0Km3IL****',
'securetokenid' => '108d7c2cecc18c90046869377181****',
'respmsg' => 'Approved',
'result_code' => '0',
),
I'v tried in test and production, with precompiled code and without, in developer mode and production. No luck and no errors anywhere.
Running Magento 2.0.4, Apache 2.4, PHP 5.6.20.
... View more
Feature request from grasdaggel, posted on GitHub Jun 10, 2016
We need to delete the whole pub/static/frontend-folder if we want to have CSS changes and stuff available on the site.
So we do the following:
$ rm -rf var/cache/ var/generation/ var/page_cache/ pub/static/
$ php-cli bin/magento setup:upgrade
$ php-cli bin/magento setup:static-content:deploy de_DE
Here comes the problem. If you delete the backend folder in pub/static Magento tries to allocate the requested URL (i.e. login page for backend) for the en_US language, even if the only user in the backend has selected that his main language is de_DE.
Magento simply tries to access files that are not there and that are not needed to be compiled (in our case: German). There should be an setting in the backend that sets the main language for the whole store to a specific language which get then called by default. This prevents unnecessary white pages.
... View more
Feature request from wienczny, posted on GitHub Jun 13, 2016
According to the Swagger documentation "extension_attributes" is a reference to an attributes object. If there are no extension attributes the API returns an empty array [] . This is illegal according to the Swagger documentation. It has to be either null if there is no object attached or an object {} .
I found this using the Java Swagger client and a product request:
{
"id": 1,
"sku": "test",
"name": "Test",
"attribute_set_id": 4,
"price": 12,
"status": 1,
"visibility": 4,
"type_id": "simple",
"created_at": "2016-04-30 11:02:24",
"updated_at": "2016-06-10 12:47:19",
"weight": 5,
"extension_attributes": [],
"product_links": [],
"options": [],
"media_gallery_entries": [],
"tier_prices": [],
"custom_attributes": [
{
"attribute_code": "meta_title",
"value": "Test"
},
{
"attribute_code": "meta_keyword",
"value": "Test"
},
{
"attribute_code": "meta_description",
"value": "Test "
},
{
"attribute_code": "category_ids",
"value": [
"2",
"3"
]
},
{
"attribute_code": "options_container",
"value": "container2"
},
{
"attribute_code": "required_options",
"value": "0"
},
{
"attribute_code": "has_options",
"value": "0"
},
{
"attribute_code": "url_key",
"value": "test"
},
{
"attribute_code": "tax_class_id",
"value": "2"
}
]
}
I had to modify the swagger definition because of #2310 to get this far.
... View more
Feature request from flancer64, posted on GitHub Jun 15, 2016
Hello,
there is protected property "select" in AbstractSearchResult that is never used
/**
* @var \Magento\Framework\DB\Select
*/
protected $select;
... and there is 'query' property in the constructor that is not defined:
public function __construct(
\Magento\Framework\DB\QueryInterface $query,
...
) {
$this->query = $query;
...
}
I suppose this code:
/**
* @var \Magento\Framework\DB\Query
*/
protected $query;
should be instead of 'select' property.
... View more
Feature request from mackelito, posted on GitHub Jun 09, 2016
Steps to reproduce
Add items to the cart thru the rest API and inspect the result of the xhr
Expected result
Response should be the cart. Same as when requesting '/rest/V1/guest-carts/29c8ee939e3a6146518e7340dfef75eb/totals'
Actual result
The response is the product that we just added. eg:
{"item_id":52,"sku":"MH01-XS-Black","qty":1,"name":"Chaz Kangeroo Hoodie-XS-Black","price":52,"product_type":"simple","quote_id":"569"}
--
If we don´t get the totals as response we need to make twice as many requests..
One for adding item to the cart and then
One to get the cart totals.
It would be way smoother to get the cart totals as the response when adding to the cart.
... View more
Feature request from flancer64, posted on GitHub Jun 08, 2016
Hello,
I create new stock object in case there is no stock with given ID (I know that ID is autoincremented value, this is code to create test data):
try {
/** @var \Magento\CatalogInventory\Api\StockRepositoryInterface $mageRepoStock */
$stock = $mageRepoStock->get(self::DEF_STOCK_ID);
} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
/** @var \Magento\Framework\ObjectManagerInterface $manObj */
$stock = $manObj->create(\Magento\CatalogInventory\Model\Stock::class);
$stock->setStockId(self::DEF_STOCK_ID); // this string should be removed to create new object
} finally {
$stock->setStockName('Stock Name');
$mageRepoStock->save($stock);
}
There is no errors in this code and no new object is created. New object will be created if I remove following string from code:
$stock->setStockId(self::DEF_STOCK_ID);
I debugged code and found that updateObject is called instead of saveNewObject in \Magento\Framework\Model\ResourceModel\Db\AbstractDb::save method:
if ($this->isObjectNotNew($object)) {
$this->updateObject($object);
} else {
$this->saveNewObject($object);
}
This is a code for isObjectNotNew :
protected function isObjectNotNew(\Magento\Framework\Model\AbstractModel $object)
{
return $object->getId() !== null && (!$this->_useIsObjectNew || !$object->isObjectNew());
}
I suppose we need additional validation in isObjectNotNew method or we need a error message.
OK, I will remove the ID setter from code but this behavior is not expected - no result and no error.
... View more
Feature request from aleron75, posted on GitHub Jun 13, 2016
This is a nice to have requirement born from poking with Magento 2 runtime: there isn't an AppInterface implementation for PHP scripts using Magento runtime.
Indeed the bin/magento is a SymfonyApplication and doesn't implement the AppInterface .
Here is the article which originated this thought: http://aleron75.com/2016/06/10/let-s-poke-with-magento-2-runtime/
Thank you!
... View more
Feature request from dzotic9, posted on GitHub Jun 16, 2016
Steps to reproduce
Magento CE 2.0.7 + sample data
App server nginx+php-fpm, Varnish for FPC
default.vcl file - http://pastebin.ru/gsQnLUh0
Expected result
Page should be cached with all resources
Actual result
Cached only static resources, html not cached. Same requests (main page or same search requests) go to app server
... View more
Feature request from ruby10, posted on GitHub Jun 21, 2016
Hi there,
I have an issue regarding setting fields in invoice create API
POST "V1/invoices"
with payload
{
"entity": {
"base_discount_tax_compensation_amount": null,
"base_shipping_discount_tax_compensation_amnt": null,
"discount_tax_compensation_amount": null,
"order_id": 58,
"shipping_discount_tax_compensation_amount": 0,
"total_qty": 2,
"grand_total": 155,
"subtotal": 150,
"items": [
{
"base_discount_tax_compensation_amount": null,
"discount_tax_compensation_amount": null,
"order_item_id": 74,
"sku": null,
"qty": 56,
"row_total": 150,
"tax_amount": 152,
"discount_amount": 23,
"price": 154
}
]
}
}
Here I am setting fields "grand_total", "subtotal" on body level and fields "qty", "row_total", "tax_amount", "discount_amount" inside items array.
As a API user, I am expected to pass Magento API with orderId, Items object array with order_item_id and qty, shipping cost ( again validation where this cost should be less then order shipping cost ) ,
but if I just provide these fields , they are displayed as '0' in invoice created on admin panel
... View more
Feature request from karanbhomiagit, posted on GitHub Jun 29, 2016
Steps to reproduce
Install Magento from develop branch.
Try creating a simple product by making a call to REST API POST /V1/products.
[Example]
{ "product": { "sku": "atoi-item", "name": "atoi-item", "status": "1", "type_id": "simple", "visibility": "4", "attribute_set_id": "4", "price": "3", "custom_attributes": [ { "attribute_code": "description", "value": "descreeeeeeption" }, { "attribute_code": "category_ids", "value": [ "1", "2" ] } ] } }
I get a response : Status code 400.
Body : {
"message": "Unable to save product"
}
Expected result
Error message in the response body should be more specific.
There are so many field values that are required to be set on the request JSON, there is no way for the person making the request to identify where the request went wrong.
Actual result
[Example] Error message appears: "Unable to save product".
... View more
Feature request from adlogic, posted on GitHub Jun 24, 2016
Steps to reproduce
$trigger = $triggerFactory->create();
$trigger->setTable('some_table');
$trigger->setTime(Trigger::TIME_BEFORE);
$trigger->setEvent(Trigger::EVENT_INSERT);
$trigger->setName('some_trigger');
$trigger->addStatement('/* dummy */');
$setup->getConnection()->createTrigger($trigger);
Expected result
Trigger is successfully created.
Actual result
[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';END' at line 13
More info
Magento generates following query:
CREATE TRIGGER some_trigger BEFORE INSERT ON some_table FOR EACH ROW
BEGIN
/* dummy */;
END
So, ::addStatement should use some heuristics for auto-adding semicolon after each statement, or doesn't add it at all.
... View more