{"action":"created","comment":{"url":"https://api.github.com/repos/Elico-Corp/odoo/pulls/comments/47759512","id":47759512,"diff_hunk":"@@ -0,0 +1,277 @@\n+# -*- coding: utf-8 -*-\n+# © 2015 Elico Corp (www.elico-corp.com).\n+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).\n+\n+from openerp import api, fields, models\n+\n+\n+class ReportQuantity(models.TransientModel):\n+    _name = 'report.quantity'\n+\n+    product_product = fields.Many2many(\n+        'product.product', string='Product'\n+    )\n+    partner_id = fields.Many2one('res.partner', 'Customer')\n+    sale_order = fields.Many2one('sale.order', 'Sale order')\n+    start_date = fields.Date('From')\n+    end_date = fields.Date('To')\n+\n+    # This function join the below tabels:\n+    #   mrp_production\n+    #   mrp_production_workcenter_line\n+    #   mrp_workcenter_line_reporting\n+    #   res_users\n+    #   mrp_workcenter\n+    #   resource_resource\n+    #   sale_order\n+    #\n+    # It returns the records of total finished qty for\n+    # sale order under current user's company\n+    #\n+    # Example:\n+    # sale_id | customer_id | product_name | product_qty |   process_name    | finished_qty\n+    # ---------+-------------+--------------+-------------+-------------------+--------------\n+    #      13 |          75 |          188 |    1110.000 | C1                |           99\n+    #      13 |          75 |          188 |    1110.000 | B1                |          300\n+    #      13 |          75 |          188 |    1110.000 | A1                |          100\n+    #         |             |           33 |       1.000 | Repairs workshop  |\n+    #         |             |            4 |       3.000 | Assemble          |         1088\n+    #         |             |           10 |       2.000 | Assemble          |\n+    #         |             |           33 |       1.000 | Assembly workshop |\n+    def _get_res_from_sql(self):\n+        user_id = self._context['uid']\n+\n+        select_statement = \"\"\"\n+            select s.id as sale_id,\n+                s.partner_id as customer_id,\n+                p.id as product_name,\n+                mo.product_qty as product_qty,\n+                rr.name as process_name,\n+                sum(r.finished_qty) as finished_qty\n+        \"\"\"\n+\n+        from_statement = \"\"\"\n+            from mrp_production mo\n+                join mrp_production_workcenter_line wol\n+                    on mo.id = wol.production_id\n+                left join mrp_workcenter_line_reporting r\n+                    on wol.id = r.workcenter_line_id\n+                join product_product p\n+                    on mo.product_id = p.id\n+                join res_users u\n+                    on u.id = %s\n+                join mrp_workcenter mw\n+                    on mw.id = wol.workcenter_id\n+                join resource_resource rr\n+                    on mw.resource_id = rr.id\n+                left join sale_order s\n+                    on position(\n+                        s.name || ':' in mo.origin) > 0\n+        \"\"\" % user_id\n+\n+        where_statement = 'where mo.company_id = u.company_id'\n+        if self.start_date and self.end_date:\n+            where_statement = \"\"\"\n+                where\n+                    wol.date_start >= cast('%s' as date)\n+                    and wol.date_start <= cast('%s' as date)\n+                    and mo.company_id = u.company_id\n+            \"\"\" % (self.start_date, self.end_date)\n+        elif self.start_date and not self.end_date:\n+            where_statement = \"\"\"\n+                where\n+                    wol.date_start >= cast('%s' as date)\n+                    and mo.company_id = u.company_id\n+            \"\"\" % self.start_date\n+        elif not self.start_date and self.end_date:\n+            where_statement = \"\"\"\n+                where\n+                    wol.date_start <= cast('%s' as date)\n+                    and mo.company_id = u.company_id\n+            \"\"\" % self.end_date\n+\n+        group_statement = \"\"\"\n+            group by s.id,\n+                     s.partner_id,\n+                     p.id,\n+                     mo.product_qty,\n+                     rr.name,\n+                     rr.code\n+        \"\"\"\n+\n+        order_statement = \"\"\"\n+            order by\n+                s.id, p.id\n+        \"\"\"\n+\n+        psql_statement = \"\"\"\n+            select sale_id,\n+                   customer_id,\n+                   product_name,\n+                   product_qty,\n+                   process_name,\n+                   finished_qty\n+            from\n+                (%s %s %s %s %s) as l\n+        \"\"\" % (\n+            select_statement, from_statement, where_statement,\n+            group_statement, order_statement\n+        )\n+\n+        self._cr.execute(psql_statement)\n+\n+        return self._cr.fetchall()\n+\n+    def _get_workcenters_name(self):\n+        workcenters = sorted(\n+            self.env['mrp.workcenter'].search([]),\n+            key=lambda rec: rec['code']\n+        )\n+\n+        return [workcenter.name for workcenter in workcenters]\n+\n+    def _is_product_id_not_in_ids(self, id):\n+        if self.product_product:\n+            for product in self.product_product:\n+                if product.id == id:\n+                    return False\n+            return True\n+\n+        return False\n+\n+    def _get_product_attributes(self, res, ids):\n+        if not res:\n+            return {}\n+\n+        products = self.env['product.product'].search([('id', 'in', ids)])\n+\n+        vals = {}\n+        for product in products:\n+            vals[product.id] = {\n+                'bottom': \"\",\n+                'inside': \"\",\n+                'outside': \"\",\n+            }\n+            for attribue_line_id in product.attribute_line_ids:\n+                if attribue_line_id.attribute_id:\n+                    if attribue_line_id.value_ids:\n+                        if attribue_line_id.attribute_id.name == u'底部پایین':\n+                            vals[product.id]['bottom'] = \\\n+                                attribue_line_id.value_ids.name\n+                        if attribue_line_id.attribute_id.name == u'内涂توو':\n+                            vals[product.id]['inside'] = \\\n+                                attribue_line_id.value_ids.name\n+                        if attribue_line_id.attribute_id.name == u'\\\n+                        外涂پوشش داده شده':\n+                            vals[product.id]['outside'] = \\\n+                                attribue_line_id.value_ids.name\n+        return vals\n+\n+    def _get_lines_write_excel(self):\n+        res = self._get_res_from_sql()\n+\n+        product_ids = list(set([line[2] for line in res]))\n+        attributes = self._get_product_attributes(res, product_ids)\n+\n+        vals = {}\n+        for record in res:\n+            name = record[0] or False\n+            customer = record[1] or False\n+            product = record[2]\n+            quantity = record[3]\n+            process = record[4]\n+            finished_qty = record[5] or 0\n+\n+            if self.sale_order and self.sale_order.id != name:\n+                continue\n+\n+            if self.partner_id and self.partner_id.id != customer:\n+                continue\n+\n+            if self._is_product_id_not_in_ids(product):\n+                continue\n+\n+            if name:\n+                name = self.env['sale.order'].browse(name).name\n+            else:\n+                name = \"\"\n+\n+            if customer:\n+                customer = self.env['res.partner'].browse(customer).name\n+            else:\n+                customer = \"\"\n+\n+            product_name = self.env['product.product'].browse(product).name\n+\n+            key = str(product) + \":\" + name\n+\n+            if key in vals.keys():\n+                if process in vals[key]['process']:\n+                    vals[key]['finished_qty'][process] += finished_qty\n+                else:\n+                    vals[key]['process'].append(process)\n+                    vals[key]['finished_qty'][process] = finished_qty\n+            else:\n+                vals[key] = {\n+                    'name': name,\n+                    'customer': customer,\n+                    'product': product_name,\n+                    'quantity': quantity,\n+                    'process': [process],\n+                    'finished_qty': {\n+                        process: finished_qty\n+                    },\n+                }\n+\n+                vals[key]['bottom'] = attributes[product]['bottom']\n+                vals[key]['inside'] = attributes[product]['inside']\n+                vals[key]['outside'] = attributes[product]['outside']\n+\n+        return vals\n+\n+    def _get_process_len(self, vals):\n+        length = 0\n+\n+        for key, val in vals.items():\n+            if len(val['process']) > length:\n+                length = len(val['process'])\n+\n+        return length\n+\n+    def _get_table_titile(self, process_len):\n+        # save the format in col:title\n+        title = {\n+            u'0': u\"销售订单سفارش فروش\",","path":"mrp_production_workcenter_line_reporting_excel/wizard/report_quantity.py","position":244,"original_position":244,"commit_id":"911f3ddecd82c33a06114f41d30399fa0ad0da3e","original_commit_id":"911f3ddecd82c33a06114f41d30399fa0ad0da3e","user":{"login":"elicoidal","id":7600613,"avatar_url":"https://avatars.githubusercontent.com/u/7600613?v=3","gravatar_id":"","url":"https://api.github.com/users/elicoidal","html_url":"https://github.com/elicoidal","followers_url":"https://api.github.com/users/elicoidal/followers","following_url":"https://api.github.com/users/elicoidal/following{/other_user}","gists_url":"https://api.github.com/users/elicoidal/gists{/gist_id}","starred_url":"https://api.github.com/users/elicoidal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elicoidal/subscriptions","organizations_url":"https://api.github.com/users/elicoidal/orgs","repos_url":"https://api.github.com/users/elicoidal/repos","events_url":"https://api.github.com/users/elicoidal/events{/privacy}","received_events_url":"https://api.github.com/users/elicoidal/received_events","type":"User","site_admin":false},"body":"English","created_at":"2015-12-16T10:31:02Z","updated_at":"2015-12-16T10:31:02Z","html_url":"https://github.com/Elico-Corp/odoo/pull/42#discussion_r47759512","pull_request_url":"https://api.github.com/repos/Elico-Corp/odoo/pulls/42","_links":{"self":{"href":"https://api.github.com/repos/Elico-Corp/odoo/pulls/comments/47759512"},"html":{"href":"https://github.com/Elico-Corp/odoo/pull/42#discussion_r47759512"},"pull_request":{"href":"https://api.github.com/repos/Elico-Corp/odoo/pulls/42"}}},"pull_request":{"url":"https://api.github.com/repos/Elico-Corp/odoo/pulls/42","id":51322427,"html_url":"https://github.com/Elico-Corp/odoo/pull/42","diff_url":"https://github.com/Elico-Corp/odoo/pull/42.diff","patch_url":"https://github.com/Elico-Corp/odoo/pull/42.patch","issue_url":"https://api.github.com/repos/Elico-Corp/odoo/issues/42","number":42,"state":"open","locked":false,"title":"[IMP]10703 add module mrp_production_workcenter_line_reporting_excel","user":{"login":"Rona111","id":10403636,"avatar_url":"https://avatars.githubusercontent.com/u/10403636?v=3","gravatar_id":"","url":"https://api.github.com/users/Rona111","html_url":"https://github.com/Rona111","followers_url":"https://api.github.com/users/Rona111/followers","following_url":"https://api.github.com/users/Rona111/following{/other_user}","gists_url":"https://api.github.com/users/Rona111/gists{/gist_id}","starred_url":"https://api.github.com/users/Rona111/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Rona111/subscriptions","organizations_url":"https://api.github.com/users/Rona111/orgs","repos_url":"https://api.github.com/users/Rona111/repos","events_url":"https://api.github.com/users/Rona111/events{/privacy}","received_events_url":"https://api.github.com/users/Rona111/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-11-20T06:31:10Z","updated_at":"2015-12-16T10:31:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"33dfd7c7ff9ec0c5f37ecfd58c81c8ba2e12b65d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Elico-Corp/odoo/pulls/42/commits","review_comments_url":"https://api.github.com/repos/Elico-Corp/odoo/pulls/42/comments","review_comment_url":"https://api.github.com/repos/Elico-Corp/odoo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Elico-Corp/odoo/issues/42/comments","statuses_url":"https://api.github.com/repos/Elico-Corp/odoo/statuses/911f3ddecd82c33a06114f41d30399fa0ad0da3e","head":{"label":"Rona111:10703-move-all-incubator-modules-of-elico8-to-public-github-mrp_production_workcenter_line_reporting_excel","ref":"10703-move-all-incubator-modules-of-elico8-to-public-github-mrp_production_workcenter_line_reporting_excel","sha":"911f3ddecd82c33a06114f41d30399fa0ad0da3e","user":{"login":"Rona111","id":10403636,"avatar_url":"https://avatars.githubusercontent.com/u/10403636?v=3","gravatar_id":"","url":"https://api.github.com/users/Rona111","html_url":"https://github.com/Rona111","followers_url":"https://api.github.com/users/Rona111/followers","following_url":"https://api.github.com/users/Rona111/following{/other_user}","gists_url":"https://api.github.com/users/Rona111/gists{/gist_id}","starred_url":"https://api.github.com/users/Rona111/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Rona111/subscriptions","organizations_url":"https://api.github.com/users/Rona111/orgs","repos_url":"https://api.github.com/users/Rona111/repos","events_url":"https://api.github.com/users/Rona111/events{/privacy}","received_events_url":"https://api.github.com/users/Rona111/received_events","type":"User","site_admin":false},"repo":{"id":42165952,"name":"odoo-1","full_name":"Rona111/odoo-1","owner":{"login":"Rona111","id":10403636,"avatar_url":"https://avatars.githubusercontent.com/u/10403636?v=3","gravatar_id":"","url":"https://api.github.com/users/Rona111","html_url":"https://github.com/Rona111","followers_url":"https://api.github.com/users/Rona111/followers","following_url":"https://api.github.com/users/Rona111/following{/other_user}","gists_url":"https://api.github.com/users/Rona111/gists{/gist_id}","starred_url":"https://api.github.com/users/Rona111/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Rona111/subscriptions","organizations_url":"https://api.github.com/users/Rona111/orgs","repos_url":"https://api.github.com/users/Rona111/repos","events_url":"https://api.github.com/users/Rona111/events{/privacy}","received_events_url":"https://api.github.com/users/Rona111/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Rona111/odoo-1","description":"","fork":true,"url":"https://api.github.com/repos/Rona111/odoo-1","forks_url":"https://api.github.com/repos/Rona111/odoo-1/forks","keys_url":"https://api.github.com/repos/Rona111/odoo-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Rona111/odoo-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Rona111/odoo-1/teams","hooks_url":"https://api.github.com/repos/Rona111/odoo-1/hooks","issue_events_url":"https://api.github.com/repos/Rona111/odoo-1/issues/events{/number}","events_url":"https://api.github.com/repos/Rona111/odoo-1/events","assignees_url":"https://api.github.com/repos/Rona111/odoo-1/assignees{/user}","branches_url":"https://api.github.com/repos/Rona111/odoo-1/branches{/branch}","tags_url":"https://api.github.com/repos/Rona111/odoo-1/tags","blobs_url":"https://api.github.com/repos/Rona111/odoo-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Rona111/odoo-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Rona111/odoo-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/Rona111/odoo-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Rona111/odoo-1/statuses/{sha}","languages_url":"https://api.github.com/repos/Rona111/odoo-1/languages","stargazers_url":"https://api.github.com/repos/Rona111/odoo-1/stargazers","contributors_url":"https://api.github.com/repos/Rona111/odoo-1/contributors","subscribers_url":"https://api.github.com/repos/Rona111/odoo-1/subscribers","subscription_url":"https://api.github.com/repos/Rona111/odoo-1/subscription","commits_url":"https://api.github.com/repos/Rona111/odoo-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/Rona111/odoo-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/Rona111/odoo-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/Rona111/odoo-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/Rona111/odoo-1/contents/{+path}","compare_url":"https://api.github.com/repos/Rona111/odoo-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Rona111/odoo-1/merges","archive_url":"https://api.github.com/repos/Rona111/odoo-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Rona111/odoo-1/downloads","issues_url":"https://api.github.com/repos/Rona111/odoo-1/issues{/number}","pulls_url":"https://api.github.com/repos/Rona111/odoo-1/pulls{/number}","milestones_url":"https://api.github.com/repos/Rona111/odoo-1/milestones{/number}","notifications_url":"https://api.github.com/repos/Rona111/odoo-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Rona111/odoo-1/labels{/name}","releases_url":"https://api.github.com/repos/Rona111/odoo-1/releases{/id}","created_at":"2015-09-09T08:25:43Z","updated_at":"2015-07-09T03:58:01Z","pushed_at":"2015-12-16T09:46:02Z","git_url":"git://github.com/Rona111/odoo-1.git","ssh_url":"git@github.com:Rona111/odoo-1.git","clone_url":"https://github.com/Rona111/odoo-1.git","svn_url":"https://github.com/Rona111/odoo-1","homepage":null,"size":8137,"stargazers_count":0,"watchers_count":0,"language":null,"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":"Elico-Corp:8.0","ref":"8.0","sha":"c9d505f2dc58ff32b5a98a30d74a1c6765c1903d","user":{"login":"Elico-Corp","id":7600618,"avatar_url":"https://avatars.githubusercontent.com/u/7600618?v=3","gravatar_id":"","url":"https://api.github.com/users/Elico-Corp","html_url":"https://github.com/Elico-Corp","followers_url":"https://api.github.com/users/Elico-Corp/followers","following_url":"https://api.github.com/users/Elico-Corp/following{/other_user}","gists_url":"https://api.github.com/users/Elico-Corp/gists{/gist_id}","starred_url":"https://api.github.com/users/Elico-Corp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Elico-Corp/subscriptions","organizations_url":"https://api.github.com/users/Elico-Corp/orgs","repos_url":"https://api.github.com/users/Elico-Corp/repos","events_url":"https://api.github.com/users/Elico-Corp/events{/privacy}","received_events_url":"https://api.github.com/users/Elico-Corp/received_events","type":"Organization","site_admin":false},"repo":{"id":30578647,"name":"odoo","full_name":"Elico-Corp/odoo","owner":{"login":"Elico-Corp","id":7600618,"avatar_url":"https://avatars.githubusercontent.com/u/7600618?v=3","gravatar_id":"","url":"https://api.github.com/users/Elico-Corp","html_url":"https://github.com/Elico-Corp","followers_url":"https://api.github.com/users/Elico-Corp/followers","following_url":"https://api.github.com/users/Elico-Corp/following{/other_user}","gists_url":"https://api.github.com/users/Elico-Corp/gists{/gist_id}","starred_url":"https://api.github.com/users/Elico-Corp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Elico-Corp/subscriptions","organizations_url":"https://api.github.com/users/Elico-Corp/orgs","repos_url":"https://api.github.com/users/Elico-Corp/repos","events_url":"https://api.github.com/users/Elico-Corp/events{/privacy}","received_events_url":"https://api.github.com/users/Elico-Corp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Elico-Corp/odoo","description":"","fork":false,"url":"https://api.github.com/repos/Elico-Corp/odoo","forks_url":"https://api.github.com/repos/Elico-Corp/odoo/forks","keys_url":"https://api.github.com/repos/Elico-Corp/odoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Elico-Corp/odoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Elico-Corp/odoo/teams","hooks_url":"https://api.github.com/repos/Elico-Corp/odoo/hooks","issue_events_url":"https://api.github.com/repos/Elico-Corp/odoo/issues/events{/number}","events_url":"https://api.github.com/repos/Elico-Corp/odoo/events","assignees_url":"https://api.github.com/repos/Elico-Corp/odoo/assignees{/user}","branches_url":"https://api.github.com/repos/Elico-Corp/odoo/branches{/branch}","tags_url":"https://api.github.com/repos/Elico-Corp/odoo/tags","blobs_url":"https://api.github.com/repos/Elico-Corp/odoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Elico-Corp/odoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Elico-Corp/odoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/Elico-Corp/odoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Elico-Corp/odoo/statuses/{sha}","languages_url":"https://api.github.com/repos/Elico-Corp/odoo/languages","stargazers_url":"https://api.github.com/repos/Elico-Corp/odoo/stargazers","contributors_url":"https://api.github.com/repos/Elico-Corp/odoo/contributors","subscribers_url":"https://api.github.com/repos/Elico-Corp/odoo/subscribers","subscription_url":"https://api.github.com/repos/Elico-Corp/odoo/subscription","commits_url":"https://api.github.com/repos/Elico-Corp/odoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/Elico-Corp/odoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/Elico-Corp/odoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/Elico-Corp/odoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/Elico-Corp/odoo/contents/{+path}","compare_url":"https://api.github.com/repos/Elico-Corp/odoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Elico-Corp/odoo/merges","archive_url":"https://api.github.com/repos/Elico-Corp/odoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Elico-Corp/odoo/downloads","issues_url":"https://api.github.com/repos/Elico-Corp/odoo/issues{/number}","pulls_url":"https://api.github.com/repos/Elico-Corp/odoo/pulls{/number}","milestones_url":"https://api.github.com/repos/Elico-Corp/odoo/milestones{/number}","notifications_url":"https://api.github.com/repos/Elico-Corp/odoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Elico-Corp/odoo/labels{/name}","releases_url":"https://api.github.com/repos/Elico-Corp/odoo/releases{/id}","created_at":"2015-02-10T06:35:10Z","updated_at":"2015-12-01T07:41:07Z","pushed_at":"2015-12-16T09:46:02Z","git_url":"git://github.com/Elico-Corp/odoo.git","ssh_url":"git@github.com:Elico-Corp/odoo.git","clone_url":"https://github.com/Elico-Corp/odoo.git","svn_url":"https://github.com/Elico-Corp/odoo","homepage":null,"size":97547,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":60,"forks":4,"open_issues":60,"watchers":1,"default_branch":"8.0"}},"_links":{"self":{"href":"https://api.github.com/repos/Elico-Corp/odoo/pulls/42"},"html":{"href":"https://github.com/Elico-Corp/odoo/pull/42"},"issue":{"href":"https://api.github.com/repos/Elico-Corp/odoo/issues/42"},"comments":{"href":"https://api.github.com/repos/Elico-Corp/odoo/issues/42/comments"},"review_comments":{"href":"https://api.github.com/repos/Elico-Corp/odoo/pulls/42/comments"},"review_comment":{"href":"https://api.github.com/repos/Elico-Corp/odoo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Elico-Corp/odoo/pulls/42/commits"},"statuses":{"href":"https://api.github.com/repos/Elico-Corp/odoo/statuses/911f3ddecd82c33a06114f41d30399fa0ad0da3e"}}}}