Git Product home page Git Product logo

community-features's People

Contributors

orlangur avatar vrann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

community-features's Issues

Test Issue

Preconditions

Steps to reproduce

Expected result

Actual result

  1. [Screenshot, logs]

Enable Reindexing from Admin Panel

Originally recorded in MAGETWO-87804

Requires Merchant Documentation: Yes

Proposed Release Note:

This feature allows merchants to reindex specific indexes from the Admin Panel. Before this feature, reindexing was only possible from the command line.


πŸ’‘ Initial feedback for story provided by Solution Partner Something Digital

Card:

As a merchant I want to reindex one or more indexes from the Admin Panel so that I can update my site content without having to use the command line or contact a developer.

Background:

In Magento 1, it was possible to reindex one or more indexes from the Admin Panel. This feature was deprecated from the Admin Panel in Magento 2, and it's only possible to reindex sites from the command line using the following commands:

Command Description
indexer:info Shows allowed Indexers
indexer:reindex Reindexes Data
indexer:reset Resets indexer status to invalid
indexer:set-mode Sets index mode type
indexer:show-mode Shows Index Mode
indexer:status Shows status of Indexer

Many merchants cannot reindex from the command line, for several possible reasons:

  • They do not understand how to use the command line and command syntax
  • They prefer to manage their site from a graphical user interface
  • They do not have access to use the command line (may be blocked by developer or solution partner)

Merchants who have to contact a developer or Solution Partner to reindex the site may incur additional development cost.

Feature Description:

In the Admin Panel merchants can view Indexes and status through the System > Index Management menu. This page shows all indexes, along with the description, mode (save/schedule), status, and last updated timestamp for each index. Merchant users can select one, more than one, or all indexes using the selection grid.

A new action should be added named 'Reindex' to the existing action drop-down menu. The existing options are 'Update on Save' and 'Update by Schedule'. If the user selects 'Reindex' a button appears labeled 'Submit'. Next to the button is a status that shows the number of records shown and selected in the grid: 'x records found (x selected)'. When the user clicks 'Submit' the selected indexes are reindexed.

Acceptance Criteria:

  • User can select one, more than one, or all records from grid
  • After user clicks 'Submit' selected indexes are reindexed
  • Reindex action is identical to reindex initiated from the command line
  • Page is refreshed after 'Submit' click action to show current status of each index
  • Success or failure message is shown to user after clicking 'Submit'
  • Status of each index is displayed in the 'Status' column (existing behavior)
  • Merchant documentation for feature created
  • Developer documentation for CLI index commands updated to reference new feature in admin panel

Additional Information:

Screenshot showing how feature was possible from M1 Admin Panel:

m1 admin reindex

Screenshot from Magento 2 Admin Panel:

  • Shows existing Index Management Grid
  • Shows in-process state of Product Price Index (PROCESSING)
  • Shows summary of user-selected grid items: 10 records found (2 selected)

m2 admin index

Improves cms page options in the adminhtml configuration

This issue was originally raised in magento/magento2#10426 by @hostep but unfortunately he cannot continue at the current time. The aim is to improve the admin usability for multiple store setups and the selection of cms pages in the store configuration.

Preconditions

  1. PHP 7.*
  2. Magento 2.*

Steps to reproduce

  1. Login to the Magento Admin with a multiple store setup,
  2. Create multiple CMS pages with the same name, e.g. a Home Page for each of your stores,
  3. Visit the configuration settings for "Default Pages",
  4. See multiple "Home Pages"

Expected result

  1. On the default store you will see only CMS pages attached to all store views and on a specific store you will see only CMS pages attached to that store.

end-results-aim

  1. Result should us UI component see https://github.com/okorshenko/magento2/pull/4/files for an example build.

Actual result

  1. Hard to read simple drop down.

cms-before

Original Report: magento/magento2#11416 by @dmanners

Layered Navigation Supports Multi-Select Within Field Group

Card

As a customer I can select multiple filters within a filter group so that I can more quickly filter my search results down for price or preferred colors or other such criteria to quickly find what I'm looking to purchase.

Notes / Details

  • For performance testing would suggest use of B2C medium profile; performant defined as no more then a 3% degradation
  • Example of multi-select mockup

screen shot 2017-09-28 at 4 35 08 pm

  • Selections within filter groups are treated as an 'or'
  • If easier/improves performance # results per filter selection can be dropped (similar to Amazon behavior)

Acceptance Criteria (AC)

  1. Layered navigation supports selecting multiple filters (treated as an or) within a filter group
  2. Performance of un-cached category pages & search results (initial render and filter action) and pages with this change should be optimized for performance

Original Report: magento/magento2#11130 by @choukalos

Eliminate the need for inheritance for action controllers

By design, all Magento action controllers should implement \Magento\Framework\App\ActionInterface. But some crucial request processing behavior (event dispatching, authorisation, etc) resides in classes like \Magento\Framework\App\Action\Action and \Magento\Backend\App\AbstractAction. So if an action controller implements the ActionInterface but does not inherit from one of these "layer supertype" classes, it will lose that crucial behavior.

So, Magento module developers do not have a way to create an action controller without using inheritance. To avoid inheritance (see why), the request processing behavior should be extracted from "layer supertypes". Proposed solution is to move the behavior to action controller plugins.

Action controller should contain only its custom behavior.

AC:

  • module developer does not have to extend from any class to create a fully functional action controller, implementing \Magento\Framework\App\ActionInterface is enough
  • controllers "supertypes" (\Magento\Backend\App\AbstractAction, \Magento\Framework\App\Action\Action, \Magento\Framework\App\Action\AbstractAction) are deprecated
  • magento supports both controller implementations (inheritance based and non-inheritance based)
  • [optional] controllers are migrated

Original Report: magento/magento2#9582 by @antonkril

Return the user to the previously opened page after relogin due to expired session

I was adding a new attribute to a configuration product and I had to leave for a while. When I came back and I keep on working my user session expired. When I clicked on the "Create New Attribute" button, the modal opened and asked me to login. After I inserted my credentials rather than allowing me to keep on working it showed me the admin home panel.

Magento ver. 2.1.9

Steps to reproduce

  1. Sign in Admin panel
  2. Go to catalog product
  3. Add a configurable product
  4. Create configuration
  5. WAIT 10 minutes Or delete user session
  6. Create new attribute

Actual result

  1. [Screenshot, logs]
    step1
    step2
    step3
    step4
    step5

Suggestion: Change "adjustment refund" and "adjustment fee"

For credit memo, the terms "adjustment refund" and "adjustment fee" are confusing. They are neither proper accounting terms nor do they make sense. And the impetus to get terms right is because the actions are irreversible and it is easy to make mistakes if terms don't make sense.

Let me state my case.

"Adjustment Refund"
Any figure entered here is added to the refund total. There are hardly any case which you need to refund a customer more than what he paid for. And the term isn't intuitive at all to tell you what it does is to add the amount to the refund total. Further, to do a partial refund, it makes sense that you are finding a field that says "adjustment to refund", and the closest you have is "Adjustment Refund", which sounds like what you want to do here except it doesn't -- it adds the amount to the refund total.

"Adjustment Fee"
Any figure entered here is subtracted to the refund total. This is actually how you would do a partial refund. However, very few people will understand what is the meaning of an adjustment fee. A partial refund is a partial refund. You would say "I got a partial refund". You wont say "I got a full refund but charged an adjustment fee" -- which is exactly what the box really mean. Because nobody will understand the latter statement, nobody will understand this term "adjustment fee".

The solution is simple.

Provide a box that says "refund" and populate it with the default full product price. Then the admin can choose to refund less than the product price or more than the product price (which I state is rare but yes we may want to allow that to happen).

Then finally, the last line should be "Total amount to refund" instead of "subtotal". And this should be javascript binded to change according to the amounts entered.

Exactly because the process is 1) Very important because you are dealing with money, 2) Irreversible and 3) Error prone at present, therefore it is important to change it and improve with the above recommended features.

Preconditions

Magento version 2.1.8

Steps to reproduce

Attempt a refund

Expected result

Refunding makes sense.

Actual result

Refunding doesn't make sense.

Original Report: magento/magento2#9053 by @calvintwr

ambiguity for cleanup-database option for M2 installation from CLI

All options for CLI have a predefined value, or are booleans and are solvable by 1/0. This particular option has none and is activated only by its simple presence, as documented here:

To drop database tables before installing the Magento software, specify this parameter without a value. Otherwise, the Magento database is left intact.

In order to automate the installation (for example using Ansible, but this is by no means required), one wants to loop through all installation options, get their given/default values and create the full install string for CLI without having special cases like the one above. For consistency sake is better to have all options with predefined values, than doing decision only based on the presence of the parameter.

Preconditions

  1. Magento CLI version 2.1.3

Steps to reproduce

N/A.

Expected result/proposal

Have a default value of 0, that will not drop the databases, and with value of 1 to drop.

Original Report: magento/magento2#8471 by @valugi

Feature: extra arguments for setup:config:set

Preconditions

  1. Imported Magento 2.2 environment

Steps to reproduce

  1. Import database from production backup
  2. Download/copy/sync app/etc/config.php from production
  3. Set deployment config to your environment using bin/magento setup:config:set
  4. Run bin/magento setup:upgrade
  5. Go to your webserver and it'll tell you that the environment is not installed yet.

Expected result

  1. It would be great if one could tell the setup:config:set command that the environment is installed.
  2. The environment works after these steps

Actual result

  1. The install configuration is missing in app/etc/env.php
  2. I can't use the environment, except by adding the install configuration to app/etc/env.php

I would really like the following arguments to be added to the setup:config:set command:

  • --install Set install date
  • --mage-mode Set mage mode

If you agree, I'd gladly make a Pull Request to make this happen!

Original Report: magento/magento2#11318 by @tdgroot

The bin/magento setup:upgrade Command will Enable Non-Enabled modules

Preconditions

  1. Magento installed via composer --create-project method, confirmed 2.1.3, 2.1.5, 2.1.6

Steps to reproduce

  1. Create a new module in app/code ($ pestle.phar magento2:generate:module AbcCorp Testbed 0.0.1
  2. Run php bin/magento setup:upgrade
  3. Examine app/etc/config.php

Expected result

  1. AbcCorp_Testbed should not appear in app/etc/config.php

Actual result

  1. AbcCorp_Testbed appears in app/etc/config.php, and is enabled

It's a reasonable developer expectation that setup:update should not enable modules that were not previously enabled. This bug came from real world interactions with working developers who hit this bug. This bug caused unexpected Setup Upgrade code to run, and resulted in lost real world working billable hours.

Original Report: magento/magento2#9516 by @astorm

Output of setup:static-content:deploy contains red color, should be a friendlier color

Preconditions

  1. macOS 10.12.6
  2. iTerm2 3.1.5 with Solarized Dark theme
  3. Magento 2.2.1
  4. PHP 7.0.25

Steps to reproduce

  1. Setup a fresh Magento 2.2.1 installation
  2. Execute: bin/magento setup:static-content:deploy -f --theme Magento/blank en_US

Expected result

  1. Output with friendly colors that don't give the impression that something went wrong

Actual result

  1. Seeing a bunch of red colors on the screen, which makes you think something went wrong.
    screen shot 2017-11-22 at 15 57 39

Discussion

I actually didn't notice this when working locally, but when deploying to a server. We see in the output of our deployment scripts a bunch of red colors, which almost always means something is going terribly wrong, but when looking closer at the output, it was just telling us what strategy is being used and how long it took.
I would suggest changing this color to something more friendly, like blue or green for example.
I don't know if there are some kind of Magento standards for the colors being used in the output of cli commands?

Original Report: magento/magento2#12404 by @hostep

Need Autocomplete Preview Feature for Site Search

Card

As a customer I want an autocomplete / preview of suggested search terms and top products displayed to me as I'm typing in my search query so that I can find what I want to buy faster.

Notes / Details

  • Top suggested products should display product name, short description,product picture, product price
  • Admin should be able to configure # of suggested search terms (default 3) and suggested products (default 3)
  • Should work well for tablets and mobiles
  • Autocomplete/Preview results should be cached for performance.
    -- To keep effort low, cache can be managed by TTL configuration or manual purge action by admin

Coding Details / Pointers to Interfaces to use

screen shot 2017-09-27 at 5 07 11 pm

- Rough Mockup of Autocomplete/Preview:

screen shot 2017-09-27 at 5 07 04 pm

Acceptance Criteria (AC)

  1. As customer types in search query they see top suggested search terms and top suggested products for the partially matched search query.
  2. A customer can select a suggested search terms or top suggested product and execute that search term query or go right to that product page. They can also select all product results link. Alternatively they can hit enter and execute their search query as they have entered it.
  3. An administrator can configure how many top suggested products and top suggested search terms to display
  4. Developed using public apis; adding appropriate public apis so feature can be easily customized or extended in the future

Original Report: magento/magento2#11104 by @choukalos

Annoying delayed notifications at admin area - that moves content down

Hi. This is not a bug, but annoying "feature". Screenshot: http://prntscr.com/het06v
All M2 notification comes with delay 0.2-0.5s after page is loaded, it makes me crazy, when I like to click save, and the content goes down because of annoying notification is just showed on the page.
Please make it with better UX, increase Z-index with postion: fixed or just make it looking the same way as Magento 1 has.
This is total 1 thing makes me crazy, each page reload. this really hurts store UX and should be improved

Thanks

Original Report: magento/magento2#12438 by @tomekjordan

Order CSV Export Issue with MS Excel

Preconditions

  1. Magento 2.1.10
  2. PHP 7.0

Steps to reproduce

  1. In Admin navigate to the Sales Order grid
  2. Filter the orders according to your needs
  3. Export as CSV
  4. Attempt to open the file in Microsoft Excel

Expected result

  1. The file should open as a spreadsheet.

Actual result

  1. Excel prompts with an error - "Excel has detected that 'export.csv' is a SYLK file, but cannot load it. Either the file has errors or it is not a SYLK file format. Click OK to try to open the file in a different format."
  2. When clicking OK it works for some users and not others. So far it seems to work for Excel for Mac but does not work for Excel on Windows.

Basically Excel sees the first two characters as "ID" and assumed it is a SYLK format. The easiest way to fix this is to change the ID column to have a different label. Locally I changed it to "Order ID" and that fixed the issue. It is a small change for a unique use-case, but I hope we can implement this at some point.

Technically this is a bug with Microsoft Excel, but as it is highly unlikely for them to implement a fix for this as it has been around for a long time I believe, I am submitting this bug as an attempt to work around the unique requirements of Excel.

Original Report: magento/magento2#12473 by @rain2o

Tier price configurable products not working correct

Preconditions

Magento 2.2.1
PHP 7.0.25
MySQL 5.7

Steps to reproduce

We have configurable products (for example colors red, blue and green) with tier price. All child products have same price and same tier prices. For example:
Buy 1 for € 6,36
Buy 12 for € 5,88
Buy 96 for € 4,80

Expected result

If a customer buys 15 green products and 5 red products (total 20 products) he should get tier price for ALL 20 products (in example he should get price of € 5,88 for 15 green and 5 red).

Actual result

magento only use tier price for 15 green products, but not for 5 red.
t1
t2

Original Report: magento/magento2#12233 by @matin73

Create New CLI command: Collect Magento Information

In order to understand the environment configuration of Magento, administrator should collect information about the settings from the different sources: config files, installed services, Admin UI.

Providing CLI command which will output all basic Magento settings can help to understand the particular deployment situation faster and better. CLI command can provide following information:

  • Information about Magento version
  • number of core business entities
  • info on the configuration of the caches, queues, etc
  • number of web nodes and db nodes

Original Report: magento/magento2#9201 by @vrann

PayPal failed eCheck change order status to Validated instead of Canceled

When the IPN callback from Paypal is coming back few days after an echeck submission, the order get a history comment saying that the IPN Failed but change the order status to Validated instead of Canceled

Preconditions

  1. Magento 2.1.7, MySQL 5.7, PHP 7.0
  2. Nginx Server

Steps to reproduce

  1. Create an order and use Paypal to pay with a delayed payment (eCheck)
  2. Order status is changed to "Payment_reviewed"
  3. Paypal IPN callback is called on Magento website and returns a payment_status=failed (For example, there was insufficient funds on the customer bank account)
  4. Magento is adding the comment "IPN Failed" and changes the status to Validated

Expected result

  1. Magento is adding the comment "IPN Failed" and changes the status to Canceled

Actual result

  1. Magento is adding the comment "IPN Failed" and changes the status to Validated

screenshot from 2017-08-21 14-33-54

There is clearly a problem in Magento/Paypal/Model/Ipn _registerPaymentFailure() where the order is canceled. Invoices should be canceled before the order because the order cancellation cause a Validated status. So it's the exact opposite of what should happen and results in orders shipped without a received payment.

This is huge and was there already in Magento 1. I dont understand why it wasn't fixed earlier.

Integration tests create stub modules in app/code

When even a single integration test is executed, the following files and directories are created:

app/code/Magento
β”œβ”€β”€ TestModuleDirectoryZipCodes
β”‚Β Β  β”œβ”€β”€ etc
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ module.xml
β”‚Β Β  β”‚Β Β  └── zip_codes.xml
β”‚Β Β  └── registration.php
β”œβ”€β”€ TestModuleFakePaymentMethod
β”‚Β Β  β”œβ”€β”€ Gateway
β”‚Β Β  β”‚Β Β  └── Command
β”‚Β Β  β”‚Β Β      └── DoNothingCommand.php
β”‚Β Β  β”œβ”€β”€ etc
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ config.xml
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ di.xml
β”‚Β Β  β”‚Β Β  └── module.xml
β”‚Β Β  └── registration.php
└── TestModuleSample
    β”œβ”€β”€ composer.json
    β”œβ”€β”€ etc
    β”‚Β Β  └── module.xml
    └── registration.php

(Note: the module Magento_TestModuleFakePaymentMethod is not generated in Magento 2.2.0).
This is a problem because running integration tests should not affect the installed Magento instance.

Preconditions

Reproduced on fresh installations of Magento 2.2.0 and 2.2.2. I haven't tried on Magento 2.2.1.

Steps to reproduce

  1. Install Magento, e.g. composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition . and so on.
  2. Run all integration tests or create a custom module with nothing but a single integration test.
  3. Run the test, e.g. /var/www/example/vendor/phpunit/phpunit/phpunit --configuration /var/www/example/dev/tests/integration/phpunit.xml /var/www/example/app/code/Example/Foo/Test/Integration

Expected result

  1. Only the specified tests should run in isolation.
  2. Potential production code should not be affected.

Actual result

The modules are created in app/code/Magento potentially affect production code and are created independently if they are used in any test.

It should be possible to create the modules under dev/tests/integration/tmp in the sandbox directory and register them in the test process with the component registrar instead, leaving the app/code directory unmodified.

Original Report: magento/magento2#12696 by @Vinai

Additional repository kills Web Setup Wizard Component Manager performance

Steps to reproduce

  1. Install Magento 2.1.0-rc1
  2. Add a custom repository to your main composer.json
  3. Navigate from the admin to the Web Setup Wizard
  4. Open the Component Manager

Expected result

  1. Component Manager is functional

Actual result

  1. Component Manager never finishes loading the grid in a timely manner (tested with 10 minute timeout)

Cause

This code here https://github.com/magento/magento2/blob/2.1.0-rc2/setup/src/Magento/Setup/Model/PackagesData.php#L361 causes an avalanche of individual composer commands for every single package including Magento ones, if more than 1 repository is present

Original Report: magento/magento2#4986 by @fooman

Add argument on app:config:dump to skip dumping all system settings.

Description

Add option config-types on app:config:dump to skip dumping all system settings. That allows to dump only scope, theme for easier maintainability.

Fixed Issues

When using app:config:dump in real projects, we normally do not want to dump all thousands core_config_data settings into config files. That makes the files difficult to read and maintain. Imho dumping scopes and themes makes a lot of sense. However, the system settings should be kept small and simple. They must be progressively added according to project needs.

On the other hand, the main purpose of config.php is to propagate configuration that must be same in all environments, specially for PRD and Build systems. These settings should be just a few, like for example css and js configuration needed for setup:static-content:deploy. Of course others settings might be needed depending on the project but all the others are better managed into core_config_data table or by using setup scripts.

This new option config-types makes possible to dump scopes and themes automatically (needed for build system) while managing system settings manually using config:set --lock-config as requested in PR:

  • #12178

It also fixes this issue:

Manual testing scenarios

Example of workflow on a real project:

  1. When creating the project we dump all settings with app:config:dump scopes themes

  2. That creates the needed settings for scopes and themes but skips system core config data

  3. We also add shared settings needed for PRD and Build environments

    bin/magento config:set --lock-config dev/js/merge_files 1
    bin/magento config:set --lock-config dev/css/merge_css_files 1
    bin/magento config:set --lock-config dev/static/sign 1
    
  4. As project evolves, we add a new stores and themes, so we need to update our config.php settings.

    bin/magento app:config:dump  scopes themes
    
  5. At the same time, if we ever need to share system settings on all environments, we can use the command bin/magento config:set --lock-config without needing to dump all hundreds of settings into the config.php

Contribution checklist

  • Pull request has a meaningful description of its purpose
  • All commits are accompanied by meaningful commit messages
  • All new or changed code is covered with unit/integration tests (if applicable)
  • All automated tests passed successfully (all builds on Travis CI are green)

Original Report: magento/magento2#12410 by @jalogut

Unable to add extension_attributes for ProductCustomOptionValuesInterface

Preconditions

I would love to be able be able to add extension attributes to Magento\Catalog\Api\Data\ProductCustomOptionValueInterface
however it does not extend Magento\Framework\Api\ExtensibleDataInterface

Many other related interfaces allow this. Some examples:

  • ProductInterface
  • ProductCustomOptionInterface
  • ProductCustomOptionTypeInterface
  • etc

Is there a reason why this does not exist on ProductCustomOptionValueInterface?

Original Report: magento/magento2#8675 by @danbuchal

Allow 'contains' as a search criteria condition type

As an API consumer, I don't want to have to think about formatting 'like' conditions for my search criteria, and would like to be able to use a 'contains' search criteria condition type.

Preconditions

  1. Magento 2.2.1

Steps to reproduce

  1. Install Magento 2.2.1
  2. Install sample data using bin/magento sampledata:deploy
  3. Deactivate WebApi security settings in Admin > Store > Configuration > Services > Magento WebAPI
  4. Send request to http://[magento host]/rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=sku&searchCriteria[filter_groups][0][filters][0][value]=red&searchCriteria[filter_groups][0][filters][0][condition_type]=contains

Expected result

  1. Response xml contains products with 'red' in their sku.

Actual result

  1. No products returned.

Original Report: magento/magento2#12458 by @nbennett25

Test Issue

Preconditions

Steps to reproduce

Expected result

Actual result

  1. [Screenshot, logs]

Cannot select existing simple products for a new configurable product

I am creating a new Configurable product via the Admin Panel (based on color). My simple products (children) already exist via a product import. When I click on "Edit Configurations" it takes me down the path of creating new simple variations. I don't want to do this. I simply want to select the existing products.

Interestingly if I go ahead and generate some simple variations via the "Edit Configurations" after the product save I can see a new link "Add Products Manually" beside "Edit Configurations". That's what I want to see the first time around after I inform it that the new configurable product is based on color.

The "Edit Configurations" wizard needs to allow me to select existing products after I've told it what configurable attributes I'm working with e.g. color or size.

Is this a known issue?

Thanks
Tadhg

Preconditions

  1. Have a configurable product with no simples attached

Steps to reproduce

  1. Have a configurable product
  2. Click on Edit configurations
  3. Go to step 4
  4. no way to add simples.

Expected result

  1. abbility to add simple products instead of fake product first
  2. then remove fake product and and simples

Actual result

  1. No button to add simple product directly
    image

Google Analytics code being placed in body instead of head

Preconditions

  1. Magento version 2.1.5
  2. Google Analytics Account

Steps to reproduce

  1. Enable Google Analytics in Magento by going to Stores->Configuration->Sales->Google API
  2. Add your Google Account Number and Save

Expected result

  1. The Google Analytics code should be output neat the top the the tag on the page

Actual result

  1. The Google Analytics code is output near the top of the tag

Reference: https://developers.google.com/analytics/devguides/collection/analyticsjs/

Original Report: magento/magento2#8837 by @mombrea

Sortable Requisition List Items

As a customer, I would like to sort my wishlist or requisition list items individually so that I can can group products together and organize my lists

Preconditions

  1. Magento 2.2 w/B2B extension

Expected result

  1. While on a requisition list with more than one item
  2. Dragging my items will change their order within the list
  3. On drop, the item position will be saved via ajax
  4. On refresh, my item positions will be preserved

Original Report: magento/magento2#11547 by @brian-labelle

customer export missing entity_id

Problem: The customer id (entity_id) should be included in the customers export for referential checks & database/SQL update capabilities

Version affected: 2.2
Steps: admin panel-> export customers
Expected: customer ID is included in export file so it can be used to later import the customers and update fields
Actual: customer ID is not included

Original Report: magento/magento2#1838 by @markoshust

Adress Book - Default billing address overrides default shipping address.

Preconditions

  1. Magento 2.1.8
  2. Php 7

Steps to reproduce

  1. Create Account
  2. Go to Address Book
  3. Enter address and save
  4. Edit default billing address and save

Expected result

  1. Default billing address gets saved
  2. Default shipping address will remain the same

Actual result

  1. Shipping address gets overridden, too - and vice versa

A customer wrote us this after trying to change the address for 20 minutes he ordered via email then.

shippingbillingdisaster

Original Report: magento/magento2#10556 by @johnny-longneck

Customer entity the field is_active is not working

I'm trying to lock some customers for they not being able to login neither place orders, etc. There is a field named is_active on the table customer_entity, but seems it does nothing.

Preconditions

  1. Magento 2.1.7
  2. PHP 7.0.18
  3. MySQL 5.7.18

Steps to reproduce

  1. Create a new customer
  2. Set is_active=0 on the table customer_entity in the ddbb manually for this customer
  3. Login with the customer's credentials.

Expected result

  1. It should deny the login, showing some error like this account is blocked or simply credentials are wrong.

Actual result

  1. It logged in successfully

Original Report: magento/magento2#10362 by @slayerbleast

Test Issue

Preconditions

Steps to reproduce

Expected result

Actual result

  1. [Screenshot, logs]

PSR-11 Support / Custom factories

We're using third party libraries more and more because Magento is pretty much completely compatible with third party libraries. Unfortunately I see more libraries using PSR-11 and that is causing headaches when trying to use those libraries.

For example, I'm using this library: https://github.com/prooph/event-sourcing
This library makes use of the ContainerInterface to instantiate its objects.. it would be nice if Magento would support custom factories for objects.

Not sure how that would exactly work, how the config would be used in the config, etc.

Config examples:

Maybe define something like:

<type name="ReachDigital\ProophJira\Infrastructure\Repository\EventStoreUserCollection">
    <factory type="Prooph\EventSourcing\Container\Aggregate\AggregateRepositoryFactory"/>
</type>

This probably needs to be thought out more ;)

Media Gallery Scopes

Terms and Concepts

Warning! This document uses simplified terms and concepts to explain products media gallery desired behavior and implementation.
For more accurate terms definition please check out Magento Glossary.

Scope β€” set of data at Magento instance that may be accessible at the same time. Scopes are 4-level hierarchical structure and include global, websites, stores and store views.
Each level of scope has access to underlying layer's data and my redefine it as well as may introduce own data (e.g. store level has access to all data defined at website level plus own data).
Each level has own semantic meaning. In this document, we will consider only global and store view levels.

Global Scope β€” represents data itself. You may think about this scope as a place where all models are live.

Store View β€” represent data displaying options for a store front. Namely, store view defines what data from global scope will see a customer at your site and how it will see them.

Technically Global Scope is implemented as a default store view with id=0. Default store view also may be referenced as Admin store view.

Don't be confused! Magento 2 admin uses terms Store and Store view while in code Store is corresponding to Store Group and Store View to Store.
After installation, Magento 2 has Default Store View which usually have id=1 and does not have any special meaning. When code refers to \Magento\Store\Model\Store::DEFAULT_STORE_ID it uses store view not visible in Admin panel and holding data of the Global scope.

Product β€” is a data of the things that are available for a customer to purchase. This is a model. As a result, products stored in the Global scope. You can not create a product that will exist in one store but will not exists in another. However, you may disable product for some website (product will exist on a website but will not be accessible by a customer).

Media Gallery β€” set of media resources related to a product. It's implemented as a product attribute. As for any model, data of media gallery must be stored on the global level.

Media Gallery Entry β€” is a media resource model (image or video). It must be stored on the global level as well. Meaningful are file path and media type properties.

In term of DDD Product is an Aggregation Root and holds Media Gallery that holds Media Gallery Entries. As this is the same aggregate all its parts are stored on the same (Global) level.

Product has image, small image and thumbnail attributes which define what images will be displayed to customer on store front at catalog and product pages. As this is data related to product displaying these options are store on the store view level. Image, small image and thumbnail attributes reference to media gallery entries by file path.

Displaying of Media Gallery Entry may be configured with options:

  • alt text β€” sets a text that displayed if entry can not be loaded on store front.
  • position β€” defines order of images on product page.
  • disable β€” allows to hide gallery image on store front.

Role property displayed at Media Gallery Entry admin page, in fact, corresponds to Product attributes.

To summarize:

  • Product, Product Media Gallery and Media Gallery Entry are models and stored on the global level.
  • image, small image and thumbnail product attributes as well as alt text, position and disable gallery entry attributes define how product will be displayed on store front and managed on a store view level.

Media Gallery management

Media Gallery may be managed on an admin product page under Images and Videos tab. Any change to a media gallery applied after product save. Admin product page uses scope switcher to define what scope should be used for persisting data. In the switcher All store view value correspond to the default (admin) store view, which is equal to the global scope. Saving some value for All store view actually does not change value in all store views. Instead, value persisted in the default store view and this value may be used as fallback if it is missed for some store view.

Regardless of scope switcher value, some fields may be stored on more higher level of scopes hierarchy. Usually, this is reflected in UI.

As was discussed previously add and delete operations always [should be] executed on the global level. Update operation may be performed on a store view level respecting product save scope switcher.

To prevent errors in media gallery management system does not allow to delete image if it has special role in store view another then current edit scope.

Implementation details

Media Gallery uses 4 tables for data persisting:

  1. catalog_product_entity_media_gallery β€” holds data of media gallery entries which are stored on the global level (model data).
  2. catalog_product_entity_media_gallery_value β€” holds data of media gallery entries which are stored on a store view level (presentation data).
  3. catalog_product_entity_media_gallery_value_to_entity β€” links media gallery entry to product on a global level.
  4. catalog_product_entity_media_gallery_value_video β€” holds video specific data on a store view level.

Product image, small image and thumbnail attributes stored in catalog_product_entity_varchar table.

Media gallery and Content Staging

Media gallery supports Magento Content Staging. As a result schema for Magento Open Source (CE) and for Magento Commerce (EE) with Staging enabled are different.
Schema without enabled Staging uses entity_id field for foreign key. Staging modifies schema and replace entity_id field with row_id. To use proper column name in PHP code Magento\Framework\EntityManager\EntityMetadataInterface::getLinkField should be used.

Issues in current implementation

Current implementation has several issues that complicate understanding of desired behavior, leads to misunderstanding and bad user experience.

UI of Media Gallery does not reflect in what scope data is persisted

On images above fields that should be stored at different scope levels displayed together and user can not determine what scope will be modified.

New image may be stored not in the global scope

If gallery entry added not in All Store Views mode table catalog_product_entity_media_gallery_value does not contain record for store_id=0.
As a result fallback mechanism for other store views is broken.

Missed possibility to use default store view options

To allow use default value provided by default scope product attributes uses Use Default value checkbox.

Media Gallery Entry attributes don't have same mechanism. As a result, image attributes always persisted in a scope defined by product scope switcher. That means, if product saved for some store view scope all media gallery attributes are copied from default store view even if there are no changes in images.

Duplication of image attributes on store view complicates gallery management:

  1. Admin create a product (global scope)
  2. Admin add images to product and set one as an image, small image and thumbnail (global scope)
  3. Admin switch to some store view and edit any field not related to gallery (store view scope)
  4. Admin save product. At this moment attributes for all images are copied from default (admin) store view to edited store view
  5. Admin switch back to global scope
  6. Admin can not properly manage gallery from global scope
    6.1 Admin edit image attributes but they are not reflected on store front as store view already has own copy of attributes
    6.2 Admin try to delete image with special role but system shows error message (edited scope has own information about image role so blocks image deletion)

Required fixes (in order of severity)

  1. Provide possibility to use default value for Media Gallery Entry attributes (should be enabled by default).
  2. Always persist new media gallery entry in default (admin) store view.
  3. Add scope labels to UI for media gallery entries.

Original Report: magento/magento2#10863 by @vkublytskyi

Magento 2.1.7 : Impossible to get UK friendly retail prices

Preconditions

Magento 2.1.7. Impossible to get friendly retail prices in UK. This was an issue for many of our stores in Magento 1 and we had to update core code to work around this issue. Please I would like to know thoughts on the following issue.

Steps to reproduce

  1. Create Tax Rule - VAT, Retail Customer, Taxable Goods, VAT, 0, 0, 0
  2. Create Tax Zone - VAT, United Kingdom, *, *, 20
  3. Configure TAX - Stores > Configuration, Sales > Tax:
  • Default Country : United Kingdom
  • Display Product Prices in Catalog : Including Tax
  1. Edit Random Product - price 3.325 ex VAT (3.99 in VAT)
  2. Save
  3. Product is rounded to 3.33
  4. Product displays on frontend as 4.00 and not 3.99
  5. Other prices are affected: try to get 6.99 for example

Expected result

  1. Not round price. Allow 4 decimal points

Actual result

  1. Price is rounded to 2 decimal points

[2.2.x] How to disable modules per environment?

As of 2.2 it is recommended to include the config.php file in version control as it provides common settings that are shared across environments. The problem is that sometimes you want to install extension only for development so if this is the case then you'll get an error if the module is included in the config.php file but not actually installed.

Preconditions

  1. Magento 2.2.1
  2. PHP 7.0

Steps to reproduce

  1. Install fresh version of Magento 2.2.1
  2. Install development only extension as a dev dependency, eg: composer require honl/magento2-templatehints --dev
  3. Run php bin/magento setup:upgrade, the config.php file gets updated with the new extension and everything works as expected.
  4. Mimic a "production" environment by deleting the vendor folder and running composer install --no-dev and deleting the Ho_Templatehints row in the setup_module table.
  5. Clear cache.

Expected result

  1. Website should load normally with extension disabled.

Actual result

  1. You get a Setup version for module 'Ho_Templatehints' is not specified error.

The error is to be expected because Magento is trying to load a module that hasn't been installed, I though I could only enable the module in the env.php file since this is environment specific but that didn't work.

Unable to identify dynamic price bundle product from order API

Steps to reproduce

  1. Create two product one with dynamic pricing enable and disabled
  2. Create two orders with separate items
  3. check both orders via API

Expected result

  1. There should be any field in item array which will tell us bundle product is created with dynamic pricing enabled or disabled.

Actual result

  1. Unable to identify the bundle product used to create order has dynamic pricing enabled or disabled

Select All checkmark behavior is inconsistent in Admin

Preconditions

  1. Magento v2.1.2

Steps to reproduce

  1. Go to Admin / System / Cache Management
  2. Click on the checkmark circled in red below

image

Expected result

  1. All items should be selected, similar to the behavior on Admin / Products / Catalog. Instead, you have to perform one more click (click "Select All" in dropdown). The behavior should be consistent across all pages where there is a list of items with checkboxes.

Actual result

  1. Dropdown menu opens instead, forcing you to do one more click, which is inconsistent with the behavior in Admin / Products / Catalog.

Original Report: magento/magento2#8986 by @thdoan

Include SQL wild cards by default when using 'like' in search criteria

As a developer, I don't want to think about passing SQL wildcard characters when sending 'like' search criteria through a request to the Product API.

Preconditions

  1. Magento CE 2.2.1

Steps to reproduce

  1. Install Magento CE 2.2.1
  2. Install provided sample data using bin/magento sampledata:deploy
  3. Remove WebApi security authorization in Admin > Stores > Configuration > Services > Magento WebApi
  4. Make request to: http://[magento host]/rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=sku&searchCriteria[filter_groups][0][filters][0][value]=red&searchCriteria[filter_groups][0][filters][0][condition_type]=like

Expected result

  1. Products with sku that contains 'red' are returned in the response xml.

Actual result

  1. No products returned.

Original Report: magento/magento2#12456 by @nbennett25

With certain currencies invalid amount is sent to Paypal

Preconditions

  1. Magento 2.1.6
  2. php 5.6

Steps to reproduce

  1. [ADMIN] Select HUF (Hungarian forint) as base & display currency
  2. [ADMIN] Turn on Paypal Express checkout
  3. [FRONTEND] Start checkout flow
  4. [FRONTEND] Try paying with Paypal

Expected result

User can successfully pay

Actual result

Paypal error is thrown, user is unable to pay via Paypal

Error message:
PayPal gateway has rejected request. Item total is invalid (#10426: Transaction refused because of an invalid argument. See additional error messages for details). Tax total is invalid (#10429: Transaction refused because of an invalid argument. See additional error messages for details).

Logs:
Here's the relevant part of the array:
main.DEBUG: array ( 'url' => 'https://api-3t.paypal.com/nvp', 'SetExpressCheckout' => array ( 'PAYMENTACTION' => 'Sale', 'AMT' =>'2990.00', 'CURRENCYCODE' => 'HUF', 'SHIPPINGAMT' =>'0.00', 'ITEMAMT' =>'2354.33', 'TAXAMT' => '635.67',

Compare this with Paypal's official Currency Code advice for developers:

Hungarian Forint | HUF Note:Β Decimal amounts are not supported for this currency. Passing a decimal amount will throw an error.

Original Report: magento/magento2#10954 by @pvj

Internationalized routing for Base Router

Last week, Symfony published a new component for realizing international routes.
http://symfony.com/blog/new-in-symfony-4-1-internationalized-routing

I would like to see this feature in the Magento Base Router.
This will offer us locale specific routes.

e.g.

  • default en_US: /contact
  • de_DE / de_AT / de_CH: /kontakt
  • it_IT: /contacto

This could be solved by adding new config elements to routes.xml.

My idea is to provide a general replacement for a frontName and explicit mapped rewrites for single actions.

Draft Example:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="catalog" frontName="catalog">
            <module name="Magento_Catalog" />

            <localizedFrontName>
                <prefix frontName="katalog" locale="de_DE" />
            </localizedPrefixes>
        </route>

        <localizedActionPreferences>
            <preference for="catalog/product/view" rewrite="katalog/produkt/anzeigen" locale="de_DE" />
            <preference for="catalog/category/view" rewrite="katalog/produkt/anzeigen" locale="de_DE" />
        </localizedActionPreferences>
    </router>
</config>

'header' block name is ambiguous

Preconditions

  1. Magento Enterprise 2.1.0

Steps to reproduce

  1. Add custom content to html/header.phtml for theme, or perform some sort of action on header block in XML via referenceBlock.

Expected result

  1. One would expect, based on the naming convention used here, that the affected block would be the page header.

Actual result

  1. This is actually a block that outputs a welcome message within the header.

I'm not entirely certain if this is the correct place for this discussion. Apologies if it's not.

I'm putting together a blank theme at the moment. This naming issue causes me concern because I am finding it difficult to put together something easy to use. It would be nice if I could use the name header.phtml for my template and the block name header for my page header, as I think this is the most intuituve. I cannot do this however because there is a 'welcome' block in Magento with a template reference hard-coded (not via XML) to my intended template name, and with its block name set to header

Maybe a different name for this block, such as welcome-message, would be more appropriate?

File where template name is set:
vendor/magento/module-theme/Block/Html/Header.php

XML for block, in default.xml:

<referenceBlock name="top.links">
    <block class="Magento\Theme\Block\Html\Header" name="header" as="header" before="-">
        <arguments>
            <argument name="show_part" xsi:type="string">welcome</argument>
        </arguments>
    </block>
</referenceBlock>

Original Report: magento/magento2#6577 by @tommypyatt

Allow optional constructor dependencies

If a constructor asks for an object of a class type and has a default value of NULL, provide NULL instead of throwing an exception if the class type cannot be provided.

This would allow extensions that can support Commerce features to use Dependency Injection for Commerce classes ("or NULL") without having to use ObjectManager directly

customer addresses export missing customer_id

Problem: The customer id should be included in customer addresses export for referential check capabilities
Version affected: 2.2
Steps: admin panel -> export customers addresses
Expected: customer ID/address ID is included in export file so it can be used to later import the customers and update fields
Actual: customer ID/address ID is not included

Original Report: magento/magento2#1839 by @markoshust

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.