{"action":"created","comment":{"url":"https://api.github.com/repos/shoopio/shoop/pulls/comments/40884531","id":40884531,"diff_hunk":"@@ -52,12 +53,17 @@ def deconstruct(self):\n         return (name, path, args, kwargs)\n \n \n-class MoneyField(models.DecimalField):\n+class CurrencyField(models.CharField):","path":"shoop/core/fields/__init__.py","position":13,"original_position":13,"commit_id":"a53c7dfc8ff9ded182fbcdca9e60fd900a6336ff","original_commit_id":"a53c7dfc8ff9ded182fbcdca9e60fd900a6336ff","user":{"login":"akx","id":58669,"avatar_url":"https://avatars.githubusercontent.com/u/58669?v=3","gravatar_id":"","url":"https://api.github.com/users/akx","html_url":"https://github.com/akx","followers_url":"https://api.github.com/users/akx/followers","following_url":"https://api.github.com/users/akx/following{/other_user}","gists_url":"https://api.github.com/users/akx/gists{/gist_id}","starred_url":"https://api.github.com/users/akx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akx/subscriptions","organizations_url":"https://api.github.com/users/akx/orgs","repos_url":"https://api.github.com/users/akx/repos","events_url":"https://api.github.com/users/akx/events{/privacy}","received_events_url":"https://api.github.com/users/akx/received_events","type":"User","site_admin":false},"body":"Sure, no worries. As mentioned, it can be done later, and adding a `formfield` method to a class won't cause new migrations.","created_at":"2015-10-01T07:09:21Z","updated_at":"2015-10-01T07:09:21Z","html_url":"https://github.com/shoopio/shoop/pull/189#discussion_r40884531","pull_request_url":"https://api.github.com/repos/shoopio/shoop/pulls/189","_links":{"self":{"href":"https://api.github.com/repos/shoopio/shoop/pulls/comments/40884531"},"html":{"href":"https://github.com/shoopio/shoop/pull/189#discussion_r40884531"},"pull_request":{"href":"https://api.github.com/repos/shoopio/shoop/pulls/189"}}},"pull_request":{"url":"https://api.github.com/repos/shoopio/shoop/pulls/189","id":46486295,"html_url":"https://github.com/shoopio/shoop/pull/189","diff_url":"https://github.com/shoopio/shoop/pull/189.diff","patch_url":"https://github.com/shoopio/shoop/pull/189.patch","issue_url":"https://api.github.com/repos/shoopio/shoop/issues/189","number":189,"state":"open","locked":false,"title":"Tax clean-up and refactoring (SHOOP-975)","user":{"login":"suutari-ai","id":3531281,"avatar_url":"https://avatars.githubusercontent.com/u/3531281?v=3","gravatar_id":"","url":"https://api.github.com/users/suutari-ai","html_url":"https://github.com/suutari-ai","followers_url":"https://api.github.com/users/suutari-ai/followers","following_url":"https://api.github.com/users/suutari-ai/following{/other_user}","gists_url":"https://api.github.com/users/suutari-ai/gists{/gist_id}","starred_url":"https://api.github.com/users/suutari-ai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/suutari-ai/subscriptions","organizations_url":"https://api.github.com/users/suutari-ai/orgs","repos_url":"https://api.github.com/users/suutari-ai/repos","events_url":"https://api.github.com/users/suutari-ai/events{/privacy}","received_events_url":"https://api.github.com/users/suutari-ai/received_events","type":"User","site_admin":false},"body":"Main part of all this goes to refactoring everything to use\nShop.create_price.  That should prevent taxful/taxless price mismatches\nin a Shop.\n\nPrices and other money amounts are now passed as Money and Price objects\nin the code, which ensures some more type safety. Yeppee!\n\nTaxModule API was rethought through and got some changes.\n\nOrderSource, BaseBasket and StoredBasket now have the price\nunit (=currency+taxfullness) stored in them to avoid mixing units after\na basket load.\n\nCalculation of taxes is made more explicit in OrderSource API.\n\nMade OrderLine, SourceLine and PriceInfo to use unified API for price\nfields (named Priceful).  This should help when implementing template\nhelpers for rendering prices taxful/taxless depending on\nuser's/merchant's preference (Shop's taxfullness could differ from\nrendering taxfullnes as long as TaxModule may calculate taxes\nefficiently, which of course is not always true though.)\n\nThere is some small fixes and refactorings included here and there for\nsome things I found out while implementing this.  Hope you don't mind.\n\nTODO:\n * Assigning customers to correct tax groups on creation (retail\n   customers and company customers)\n * Implementing value-added taxes correctly (i.e. not just selecting the\n   first tax, but actually adding them together)\n * The taxful/taxless price rendering stuff as said above.\n * Cleaning up the TODOs\n * Documentation of the whole system (for developers and for merchants)\n\nGood luck reviewing! Have fun!","created_at":"2015-10-01T05:31:47Z","updated_at":"2015-10-01T07:09:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1c7ddbb8225ed59242376685ad36338a5fc0efea","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/shoopio/shoop/pulls/189/commits","review_comments_url":"https://api.github.com/repos/shoopio/shoop/pulls/189/comments","review_comment_url":"https://api.github.com/repos/shoopio/shoop/pulls/comments{/number}","comments_url":"https://api.github.com/repos/shoopio/shoop/issues/189/comments","statuses_url":"https://api.github.com/repos/shoopio/shoop/statuses/a53c7dfc8ff9ded182fbcdca9e60fd900a6336ff","head":{"label":"suutari-ai:tax-fix3","ref":"tax-fix3","sha":"a53c7dfc8ff9ded182fbcdca9e60fd900a6336ff","user":{"login":"suutari-ai","id":3531281,"avatar_url":"https://avatars.githubusercontent.com/u/3531281?v=3","gravatar_id":"","url":"https://api.github.com/users/suutari-ai","html_url":"https://github.com/suutari-ai","followers_url":"https://api.github.com/users/suutari-ai/followers","following_url":"https://api.github.com/users/suutari-ai/following{/other_user}","gists_url":"https://api.github.com/users/suutari-ai/gists{/gist_id}","starred_url":"https://api.github.com/users/suutari-ai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/suutari-ai/subscriptions","organizations_url":"https://api.github.com/users/suutari-ai/orgs","repos_url":"https://api.github.com/users/suutari-ai/repos","events_url":"https://api.github.com/users/suutari-ai/events{/privacy}","received_events_url":"https://api.github.com/users/suutari-ai/received_events","type":"User","site_admin":false},"repo":{"id":36924160,"name":"shoop","full_name":"suutari-ai/shoop","owner":{"login":"suutari-ai","id":3531281,"avatar_url":"https://avatars.githubusercontent.com/u/3531281?v=3","gravatar_id":"","url":"https://api.github.com/users/suutari-ai","html_url":"https://github.com/suutari-ai","followers_url":"https://api.github.com/users/suutari-ai/followers","following_url":"https://api.github.com/users/suutari-ai/following{/other_user}","gists_url":"https://api.github.com/users/suutari-ai/gists{/gist_id}","starred_url":"https://api.github.com/users/suutari-ai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/suutari-ai/subscriptions","organizations_url":"https://api.github.com/users/suutari-ai/orgs","repos_url":"https://api.github.com/users/suutari-ai/repos","events_url":"https://api.github.com/users/suutari-ai/events{/privacy}","received_events_url":"https://api.github.com/users/suutari-ai/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/suutari-ai/shoop","description":"","fork":true,"url":"https://api.github.com/repos/suutari-ai/shoop","forks_url":"https://api.github.com/repos/suutari-ai/shoop/forks","keys_url":"https://api.github.com/repos/suutari-ai/shoop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/suutari-ai/shoop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/suutari-ai/shoop/teams","hooks_url":"https://api.github.com/repos/suutari-ai/shoop/hooks","issue_events_url":"https://api.github.com/repos/suutari-ai/shoop/issues/events{/number}","events_url":"https://api.github.com/repos/suutari-ai/shoop/events","assignees_url":"https://api.github.com/repos/suutari-ai/shoop/assignees{/user}","branches_url":"https://api.github.com/repos/suutari-ai/shoop/branches{/branch}","tags_url":"https://api.github.com/repos/suutari-ai/shoop/tags","blobs_url":"https://api.github.com/repos/suutari-ai/shoop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/suutari-ai/shoop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/suutari-ai/shoop/git/refs{/sha}","trees_url":"https://api.github.com/repos/suutari-ai/shoop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/suutari-ai/shoop/statuses/{sha}","languages_url":"https://api.github.com/repos/suutari-ai/shoop/languages","stargazers_url":"https://api.github.com/repos/suutari-ai/shoop/stargazers","contributors_url":"https://api.github.com/repos/suutari-ai/shoop/contributors","subscribers_url":"https://api.github.com/repos/suutari-ai/shoop/subscribers","subscription_url":"https://api.github.com/repos/suutari-ai/shoop/subscription","commits_url":"https://api.github.com/repos/suutari-ai/shoop/commits{/sha}","git_commits_url":"https://api.github.com/repos/suutari-ai/shoop/git/commits{/sha}","comments_url":"https://api.github.com/repos/suutari-ai/shoop/comments{/number}","issue_comment_url":"https://api.github.com/repos/suutari-ai/shoop/issues/comments{/number}","contents_url":"https://api.github.com/repos/suutari-ai/shoop/contents/{+path}","compare_url":"https://api.github.com/repos/suutari-ai/shoop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/suutari-ai/shoop/merges","archive_url":"https://api.github.com/repos/suutari-ai/shoop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/suutari-ai/shoop/downloads","issues_url":"https://api.github.com/repos/suutari-ai/shoop/issues{/number}","pulls_url":"https://api.github.com/repos/suutari-ai/shoop/pulls{/number}","milestones_url":"https://api.github.com/repos/suutari-ai/shoop/milestones{/number}","notifications_url":"https://api.github.com/repos/suutari-ai/shoop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/suutari-ai/shoop/labels{/name}","releases_url":"https://api.github.com/repos/suutari-ai/shoop/releases{/id}","created_at":"2015-06-05T09:27:59Z","updated_at":"2015-07-03T08:25:49Z","pushed_at":"2015-10-01T05:46:55Z","git_url":"git://github.com/suutari-ai/shoop.git","ssh_url":"git@github.com:suutari-ai/shoop.git","clone_url":"https://github.com/suutari-ai/shoop.git","svn_url":"https://github.com/suutari-ai/shoop","homepage":null,"size":4037,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"shoopio:master","ref":"master","sha":"faafb2658010e7309fbe2a0512f328b3544a7278","user":{"login":"shoopio","id":12714852,"avatar_url":"https://avatars.githubusercontent.com/u/12714852?v=3","gravatar_id":"","url":"https://api.github.com/users/shoopio","html_url":"https://github.com/shoopio","followers_url":"https://api.github.com/users/shoopio/followers","following_url":"https://api.github.com/users/shoopio/following{/other_user}","gists_url":"https://api.github.com/users/shoopio/gists{/gist_id}","starred_url":"https://api.github.com/users/shoopio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shoopio/subscriptions","organizations_url":"https://api.github.com/users/shoopio/orgs","repos_url":"https://api.github.com/users/shoopio/repos","events_url":"https://api.github.com/users/shoopio/events{/privacy}","received_events_url":"https://api.github.com/users/shoopio/received_events","type":"Organization","site_admin":false},"repo":{"id":36803364,"name":"shoop","full_name":"shoopio/shoop","owner":{"login":"shoopio","id":12714852,"avatar_url":"https://avatars.githubusercontent.com/u/12714852?v=3","gravatar_id":"","url":"https://api.github.com/users/shoopio","html_url":"https://github.com/shoopio","followers_url":"https://api.github.com/users/shoopio/followers","following_url":"https://api.github.com/users/shoopio/following{/other_user}","gists_url":"https://api.github.com/users/shoopio/gists{/gist_id}","starred_url":"https://api.github.com/users/shoopio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shoopio/subscriptions","organizations_url":"https://api.github.com/users/shoopio/orgs","repos_url":"https://api.github.com/users/shoopio/repos","events_url":"https://api.github.com/users/shoopio/events{/privacy}","received_events_url":"https://api.github.com/users/shoopio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/shoopio/shoop","description":"E-Commerce Platform","fork":false,"url":"https://api.github.com/repos/shoopio/shoop","forks_url":"https://api.github.com/repos/shoopio/shoop/forks","keys_url":"https://api.github.com/repos/shoopio/shoop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shoopio/shoop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shoopio/shoop/teams","hooks_url":"https://api.github.com/repos/shoopio/shoop/hooks","issue_events_url":"https://api.github.com/repos/shoopio/shoop/issues/events{/number}","events_url":"https://api.github.com/repos/shoopio/shoop/events","assignees_url":"https://api.github.com/repos/shoopio/shoop/assignees{/user}","branches_url":"https://api.github.com/repos/shoopio/shoop/branches{/branch}","tags_url":"https://api.github.com/repos/shoopio/shoop/tags","blobs_url":"https://api.github.com/repos/shoopio/shoop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shoopio/shoop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shoopio/shoop/git/refs{/sha}","trees_url":"https://api.github.com/repos/shoopio/shoop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shoopio/shoop/statuses/{sha}","languages_url":"https://api.github.com/repos/shoopio/shoop/languages","stargazers_url":"https://api.github.com/repos/shoopio/shoop/stargazers","contributors_url":"https://api.github.com/repos/shoopio/shoop/contributors","subscribers_url":"https://api.github.com/repos/shoopio/shoop/subscribers","subscription_url":"https://api.github.com/repos/shoopio/shoop/subscription","commits_url":"https://api.github.com/repos/shoopio/shoop/commits{/sha}","git_commits_url":"https://api.github.com/repos/shoopio/shoop/git/commits{/sha}","comments_url":"https://api.github.com/repos/shoopio/shoop/comments{/number}","issue_comment_url":"https://api.github.com/repos/shoopio/shoop/issues/comments{/number}","contents_url":"https://api.github.com/repos/shoopio/shoop/contents/{+path}","compare_url":"https://api.github.com/repos/shoopio/shoop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shoopio/shoop/merges","archive_url":"https://api.github.com/repos/shoopio/shoop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shoopio/shoop/downloads","issues_url":"https://api.github.com/repos/shoopio/shoop/issues{/number}","pulls_url":"https://api.github.com/repos/shoopio/shoop/pulls{/number}","milestones_url":"https://api.github.com/repos/shoopio/shoop/milestones{/number}","notifications_url":"https://api.github.com/repos/shoopio/shoop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shoopio/shoop/labels{/name}","releases_url":"https://api.github.com/repos/shoopio/shoop/releases{/id}","created_at":"2015-06-03T12:53:21Z","updated_at":"2015-09-26T06:21:14Z","pushed_at":"2015-10-01T05:46:55Z","git_url":"git://github.com/shoopio/shoop.git","ssh_url":"git@github.com:shoopio/shoop.git","clone_url":"https://github.com/shoopio/shoop.git","svn_url":"https://github.com/shoopio/shoop","homepage":"https://shoop.io","size":7964,"stargazers_count":158,"watchers_count":158,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":40,"mirror_url":null,"open_issues_count":9,"forks":40,"open_issues":9,"watchers":158,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/shoopio/shoop/pulls/189"},"html":{"href":"https://github.com/shoopio/shoop/pull/189"},"issue":{"href":"https://api.github.com/repos/shoopio/shoop/issues/189"},"comments":{"href":"https://api.github.com/repos/shoopio/shoop/issues/189/comments"},"review_comments":{"href":"https://api.github.com/repos/shoopio/shoop/pulls/189/comments"},"review_comment":{"href":"https://api.github.com/repos/shoopio/shoop/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/shoopio/shoop/pulls/189/commits"},"statuses":{"href":"https://api.github.com/repos/shoopio/shoop/statuses/a53c7dfc8ff9ded182fbcdca9e60fd900a6336ff"}}}}