{"action":"created","comment":{"url":"https://api.github.com/repos/Sylius/Sylius/pulls/comments/104884993","pull_request_review_id":25738596,"id":104884993,"diff_hunk":"@@ -0,0 +1,27 @@\n+<?php\n+\n+/*\n+ * This file is part of the Sylius package.\n+ *\n+ * (c) Paweł Jędrzejewski\n+ *\n+ * For the full copyright and license information, please view the LICENSE\n+ * file that was distributed with this source code.\n+ */\n+\n+namespace Sylius\\Component\\Core\\Promotion\\Reverser;\n+\n+use Sylius\\Component\\Core\\Model\\OrderInterface;\n+use Sylius\\Component\\Promotion\\Model\\PromotionInterface;\n+\n+/**\n+ * @author Gorka Laucirica <gorka.lauzirika@gmail.com>\n+ */\n+interface OrderItemPromotionAdjustmentsReverserInterface\n+{\n+    /**\n+     * @param OrderInterface $order\n+     * @param PromotionInterface $promotion\n+     */\n+    public function revert(OrderInterface $order, PromotionInterface $promotion);","path":"src/Sylius/Component/Core/Promotion/Reverser/OrderItemPromotionAdjustmentsReverserInterface.php","position":26,"original_position":26,"commit_id":"6d9d77de9ec72a5a3341dfae78b20b3dc1eeba17","original_commit_id":"334e8d9cc60192d425e08430b75ed9858c7806d2","user":{"login":"gorkalaucirica","id":1749891,"avatar_url":"https://avatars1.githubusercontent.com/u/1749891?v=3","gravatar_id":"","url":"https://api.github.com/users/gorkalaucirica","html_url":"https://github.com/gorkalaucirica","followers_url":"https://api.github.com/users/gorkalaucirica/followers","following_url":"https://api.github.com/users/gorkalaucirica/following{/other_user}","gists_url":"https://api.github.com/users/gorkalaucirica/gists{/gist_id}","starred_url":"https://api.github.com/users/gorkalaucirica/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gorkalaucirica/subscriptions","organizations_url":"https://api.github.com/users/gorkalaucirica/orgs","repos_url":"https://api.github.com/users/gorkalaucirica/repos","events_url":"https://api.github.com/users/gorkalaucirica/events{/privacy}","received_events_url":"https://api.github.com/users/gorkalaucirica/received_events","type":"User","site_admin":false},"body":"How would you name it?","created_at":"2017-03-08T10:13:44Z","updated_at":"2017-03-08T10:13:44Z","html_url":"https://github.com/Sylius/Sylius/pull/7680#discussion_r104884993","pull_request_url":"https://api.github.com/repos/Sylius/Sylius/pulls/7680","_links":{"self":{"href":"https://api.github.com/repos/Sylius/Sylius/pulls/comments/104884993"},"html":{"href":"https://github.com/Sylius/Sylius/pull/7680#discussion_r104884993"},"pull_request":{"href":"https://api.github.com/repos/Sylius/Sylius/pulls/7680"}}},"pull_request":{"url":"https://api.github.com/repos/Sylius/Sylius/pulls/7680","id":109152481,"html_url":"https://github.com/Sylius/Sylius/pull/7680","diff_url":"https://github.com/Sylius/Sylius/pull/7680.diff","patch_url":"https://github.com/Sylius/Sylius/pull/7680.patch","issue_url":"https://api.github.com/repos/Sylius/Sylius/issues/7680","number":7680,"state":"open","locked":false,"title":"Major promotion command refactor","user":{"login":"gorkalaucirica","id":1749891,"avatar_url":"https://avatars1.githubusercontent.com/u/1749891?v=3","gravatar_id":"","url":"https://api.github.com/users/gorkalaucirica","html_url":"https://github.com/gorkalaucirica","followers_url":"https://api.github.com/users/gorkalaucirica/followers","following_url":"https://api.github.com/users/gorkalaucirica/following{/other_user}","gists_url":"https://api.github.com/users/gorkalaucirica/gists{/gist_id}","starred_url":"https://api.github.com/users/gorkalaucirica/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gorkalaucirica/subscriptions","organizations_url":"https://api.github.com/users/gorkalaucirica/orgs","repos_url":"https://api.github.com/users/gorkalaucirica/repos","events_url":"https://api.github.com/users/gorkalaucirica/events{/privacy}","received_events_url":"https://api.github.com/users/gorkalaucirica/received_events","type":"User","site_admin":false},"body":"| Q               | A\r\n| --------------- | ---\r\n| Bug fix?        | no|\r\n| New feature?    | no |\r\n| BC breaks?      | yes |\r\n| Related tickets | #7141 |\r\n| License         | MIT |\r\n\r\nThis PR aims to allow easier adjustment apply/revert code reusability. Before this PR lot of code was hidden behind abstract classes, harder to tests and reuse. With this PR promotion adjustment applicators and reverser have been created. This services are injected to the commands as required. There are two type of applicators/reverses:\r\n\r\n* **Order applicator/reverser** that is responsible of distributing promotion amount among order items and reverting. Applies `order_promotion` adjustment.\r\n* **Order item applicator/reverser** that is resposible of applying given amount across all units of the given item. Applies `order_unit_promotion` adjustment.\r\n\r\n**Changes made**\r\n\r\n* Renamed `UnitPromotionAdjustmentsApplicatior` to `OrderPromotionAdjustmentsApplicator` to keep consistent\r\n* Created `OrderItemPromotionAdjustmentsApplicator`\r\n* Created reversers\r\n* Removed `DiscountPromotionActionCommand` and `UnitDiscountPromotionActionCommand` abstracts and rely in applicator/reverser colaborators\r\n","created_at":"2017-03-05T15:30:52Z","updated_at":"2017-03-08T10:13:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"47e2bca5d6be50b30cfb17f864e6ee3c1c1e5f13","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Sylius/Sylius/pulls/7680/commits","review_comments_url":"https://api.github.com/repos/Sylius/Sylius/pulls/7680/comments","review_comment_url":"https://api.github.com/repos/Sylius/Sylius/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Sylius/Sylius/issues/7680/comments","statuses_url":"https://api.github.com/repos/Sylius/Sylius/statuses/6d9d77de9ec72a5a3341dfae78b20b3dc1eeba17","head":{"label":"gorkalaucirica:refactor/promotion-commands","ref":"refactor/promotion-commands","sha":"6d9d77de9ec72a5a3341dfae78b20b3dc1eeba17","user":{"login":"gorkalaucirica","id":1749891,"avatar_url":"https://avatars1.githubusercontent.com/u/1749891?v=3","gravatar_id":"","url":"https://api.github.com/users/gorkalaucirica","html_url":"https://github.com/gorkalaucirica","followers_url":"https://api.github.com/users/gorkalaucirica/followers","following_url":"https://api.github.com/users/gorkalaucirica/following{/other_user}","gists_url":"https://api.github.com/users/gorkalaucirica/gists{/gist_id}","starred_url":"https://api.github.com/users/gorkalaucirica/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gorkalaucirica/subscriptions","organizations_url":"https://api.github.com/users/gorkalaucirica/orgs","repos_url":"https://api.github.com/users/gorkalaucirica/repos","events_url":"https://api.github.com/users/gorkalaucirica/events{/privacy}","received_events_url":"https://api.github.com/users/gorkalaucirica/received_events","type":"User","site_admin":false},"repo":{"id":64747731,"name":"Sylius","full_name":"gorkalaucirica/Sylius","owner":{"login":"gorkalaucirica","id":1749891,"avatar_url":"https://avatars1.githubusercontent.com/u/1749891?v=3","gravatar_id":"","url":"https://api.github.com/users/gorkalaucirica","html_url":"https://github.com/gorkalaucirica","followers_url":"https://api.github.com/users/gorkalaucirica/followers","following_url":"https://api.github.com/users/gorkalaucirica/following{/other_user}","gists_url":"https://api.github.com/users/gorkalaucirica/gists{/gist_id}","starred_url":"https://api.github.com/users/gorkalaucirica/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gorkalaucirica/subscriptions","organizations_url":"https://api.github.com/users/gorkalaucirica/orgs","repos_url":"https://api.github.com/users/gorkalaucirica/repos","events_url":"https://api.github.com/users/gorkalaucirica/events{/privacy}","received_events_url":"https://api.github.com/users/gorkalaucirica/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gorkalaucirica/Sylius","description":"eCommerce PHP framework built on top of Symfony with component-based architecture and format-agnostic rendering. (HTML/JSON/XML)","fork":true,"url":"https://api.github.com/repos/gorkalaucirica/Sylius","forks_url":"https://api.github.com/repos/gorkalaucirica/Sylius/forks","keys_url":"https://api.github.com/repos/gorkalaucirica/Sylius/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gorkalaucirica/Sylius/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gorkalaucirica/Sylius/teams","hooks_url":"https://api.github.com/repos/gorkalaucirica/Sylius/hooks","issue_events_url":"https://api.github.com/repos/gorkalaucirica/Sylius/issues/events{/number}","events_url":"https://api.github.com/repos/gorkalaucirica/Sylius/events","assignees_url":"https://api.github.com/repos/gorkalaucirica/Sylius/assignees{/user}","branches_url":"https://api.github.com/repos/gorkalaucirica/Sylius/branches{/branch}","tags_url":"https://api.github.com/repos/gorkalaucirica/Sylius/tags","blobs_url":"https://api.github.com/repos/gorkalaucirica/Sylius/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gorkalaucirica/Sylius/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gorkalaucirica/Sylius/git/refs{/sha}","trees_url":"https://api.github.com/repos/gorkalaucirica/Sylius/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gorkalaucirica/Sylius/statuses/{sha}","languages_url":"https://api.github.com/repos/gorkalaucirica/Sylius/languages","stargazers_url":"https://api.github.com/repos/gorkalaucirica/Sylius/stargazers","contributors_url":"https://api.github.com/repos/gorkalaucirica/Sylius/contributors","subscribers_url":"https://api.github.com/repos/gorkalaucirica/Sylius/subscribers","subscription_url":"https://api.github.com/repos/gorkalaucirica/Sylius/subscription","commits_url":"https://api.github.com/repos/gorkalaucirica/Sylius/commits{/sha}","git_commits_url":"https://api.github.com/repos/gorkalaucirica/Sylius/git/commits{/sha}","comments_url":"https://api.github.com/repos/gorkalaucirica/Sylius/comments{/number}","issue_comment_url":"https://api.github.com/repos/gorkalaucirica/Sylius/issues/comments{/number}","contents_url":"https://api.github.com/repos/gorkalaucirica/Sylius/contents/{+path}","compare_url":"https://api.github.com/repos/gorkalaucirica/Sylius/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gorkalaucirica/Sylius/merges","archive_url":"https://api.github.com/repos/gorkalaucirica/Sylius/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gorkalaucirica/Sylius/downloads","issues_url":"https://api.github.com/repos/gorkalaucirica/Sylius/issues{/number}","pulls_url":"https://api.github.com/repos/gorkalaucirica/Sylius/pulls{/number}","milestones_url":"https://api.github.com/repos/gorkalaucirica/Sylius/milestones{/number}","notifications_url":"https://api.github.com/repos/gorkalaucirica/Sylius/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gorkalaucirica/Sylius/labels{/name}","releases_url":"https://api.github.com/repos/gorkalaucirica/Sylius/releases{/id}","deployments_url":"https://api.github.com/repos/gorkalaucirica/Sylius/deployments","created_at":"2016-08-02T10:28:00Z","updated_at":"2016-08-02T10:28:12Z","pushed_at":"2017-03-08T10:13:09Z","git_url":"git://github.com/gorkalaucirica/Sylius.git","ssh_url":"git@github.com:gorkalaucirica/Sylius.git","clone_url":"https://github.com/gorkalaucirica/Sylius.git","svn_url":"https://github.com/gorkalaucirica/Sylius","homepage":"http://Sylius.org","size":57200,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Sylius:master","ref":"master","sha":"01b4b80d06c40a3a2f8135352e08d920f4e38627","user":{"login":"Sylius","id":719423,"avatar_url":"https://avatars1.githubusercontent.com/u/719423?v=3","gravatar_id":"","url":"https://api.github.com/users/Sylius","html_url":"https://github.com/Sylius","followers_url":"https://api.github.com/users/Sylius/followers","following_url":"https://api.github.com/users/Sylius/following{/other_user}","gists_url":"https://api.github.com/users/Sylius/gists{/gist_id}","starred_url":"https://api.github.com/users/Sylius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sylius/subscriptions","organizations_url":"https://api.github.com/users/Sylius/orgs","repos_url":"https://api.github.com/users/Sylius/repos","events_url":"https://api.github.com/users/Sylius/events{/privacy}","received_events_url":"https://api.github.com/users/Sylius/received_events","type":"Organization","site_admin":false},"repo":{"id":2717549,"name":"Sylius","full_name":"Sylius/Sylius","owner":{"login":"Sylius","id":719423,"avatar_url":"https://avatars1.githubusercontent.com/u/719423?v=3","gravatar_id":"","url":"https://api.github.com/users/Sylius","html_url":"https://github.com/Sylius","followers_url":"https://api.github.com/users/Sylius/followers","following_url":"https://api.github.com/users/Sylius/following{/other_user}","gists_url":"https://api.github.com/users/Sylius/gists{/gist_id}","starred_url":"https://api.github.com/users/Sylius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sylius/subscriptions","organizations_url":"https://api.github.com/users/Sylius/orgs","repos_url":"https://api.github.com/users/Sylius/repos","events_url":"https://api.github.com/users/Sylius/events{/privacy}","received_events_url":"https://api.github.com/users/Sylius/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Sylius/Sylius","description":"eCommerce PHP framework built on top of Symfony with component-based architecture and format-agnostic rendering. (HTML/JSON/XML)","fork":false,"url":"https://api.github.com/repos/Sylius/Sylius","forks_url":"https://api.github.com/repos/Sylius/Sylius/forks","keys_url":"https://api.github.com/repos/Sylius/Sylius/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Sylius/Sylius/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Sylius/Sylius/teams","hooks_url":"https://api.github.com/repos/Sylius/Sylius/hooks","issue_events_url":"https://api.github.com/repos/Sylius/Sylius/issues/events{/number}","events_url":"https://api.github.com/repos/Sylius/Sylius/events","assignees_url":"https://api.github.com/repos/Sylius/Sylius/assignees{/user}","branches_url":"https://api.github.com/repos/Sylius/Sylius/branches{/branch}","tags_url":"https://api.github.com/repos/Sylius/Sylius/tags","blobs_url":"https://api.github.com/repos/Sylius/Sylius/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Sylius/Sylius/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Sylius/Sylius/git/refs{/sha}","trees_url":"https://api.github.com/repos/Sylius/Sylius/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Sylius/Sylius/statuses/{sha}","languages_url":"https://api.github.com/repos/Sylius/Sylius/languages","stargazers_url":"https://api.github.com/repos/Sylius/Sylius/stargazers","contributors_url":"https://api.github.com/repos/Sylius/Sylius/contributors","subscribers_url":"https://api.github.com/repos/Sylius/Sylius/subscribers","subscription_url":"https://api.github.com/repos/Sylius/Sylius/subscription","commits_url":"https://api.github.com/repos/Sylius/Sylius/commits{/sha}","git_commits_url":"https://api.github.com/repos/Sylius/Sylius/git/commits{/sha}","comments_url":"https://api.github.com/repos/Sylius/Sylius/comments{/number}","issue_comment_url":"https://api.github.com/repos/Sylius/Sylius/issues/comments{/number}","contents_url":"https://api.github.com/repos/Sylius/Sylius/contents/{+path}","compare_url":"https://api.github.com/repos/Sylius/Sylius/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Sylius/Sylius/merges","archive_url":"https://api.github.com/repos/Sylius/Sylius/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Sylius/Sylius/downloads","issues_url":"https://api.github.com/repos/Sylius/Sylius/issues{/number}","pulls_url":"https://api.github.com/repos/Sylius/Sylius/pulls{/number}","milestones_url":"https://api.github.com/repos/Sylius/Sylius/milestones{/number}","notifications_url":"https://api.github.com/repos/Sylius/Sylius/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Sylius/Sylius/labels{/name}","releases_url":"https://api.github.com/repos/Sylius/Sylius/releases{/id}","deployments_url":"https://api.github.com/repos/Sylius/Sylius/deployments","created_at":"2011-11-05T22:05:52Z","updated_at":"2017-03-08T06:17:52Z","pushed_at":"2017-03-08T10:13:11Z","git_url":"git://github.com/Sylius/Sylius.git","ssh_url":"git@github.com:Sylius/Sylius.git","clone_url":"https://github.com/Sylius/Sylius.git","svn_url":"https://github.com/Sylius/Sylius","homepage":"http://Sylius.org","size":57361,"stargazers_count":2849,"watchers_count":2849,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1044,"mirror_url":null,"open_issues_count":466,"forks":1044,"open_issues":466,"watchers":2849,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Sylius/Sylius/pulls/7680"},"html":{"href":"https://github.com/Sylius/Sylius/pull/7680"},"issue":{"href":"https://api.github.com/repos/Sylius/Sylius/issues/7680"},"comments":{"href":"https://api.github.com/repos/Sylius/Sylius/issues/7680/comments"},"review_comments":{"href":"https://api.github.com/repos/Sylius/Sylius/pulls/7680/comments"},"review_comment":{"href":"https://api.github.com/repos/Sylius/Sylius/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Sylius/Sylius/pulls/7680/commits"},"statuses":{"href":"https://api.github.com/repos/Sylius/Sylius/statuses/6d9d77de9ec72a5a3341dfae78b20b3dc1eeba17"}}}}
{"actor":{"display_login":"gorkalaucirica"}}