From 62c3ada8515764aa16c9fc4bfc8652b3565f6b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 8 Jun 2017 10:23:16 +0200 Subject: [PATCH] [MOV] sale_*: move sale-related payment code to sale_payment website_portal_sale contains code on sale.order and crm.team models related to payments. This code is moved into the sale_payment module that is the bridge between sale and payment and therefore is the location where it belongs. First step toward removing content of website_portal_sale module. --- addons/sale_payment/__manifest__.py | 2 ++ addons/sale_payment/models/__init__.py | 1 + .../models/crm_team.py | 0 addons/sale_payment/models/sale_order.py | 27 +++++++++++++++++++ .../views/crm_team_views.xml | 0 .../views/sale_order_views.xml | 0 addons/website_portal_sale/__manifest__.py | 2 -- addons/website_portal_sale/models/__init__.py | 1 - .../website_portal_sale/models/sale_order.py | 25 ----------------- addons/website_sale/__manifest__.py | 2 +- 10 files changed, 31 insertions(+), 29 deletions(-) rename addons/{website_portal_sale => sale_payment}/models/crm_team.py (100%) rename addons/{website_portal_sale => sale_payment}/views/crm_team_views.xml (100%) rename addons/{website_portal_sale => sale_payment}/views/sale_order_views.xml (100%) diff --git a/addons/sale_payment/__manifest__.py b/addons/sale_payment/__manifest__.py index 6c1caaef606..1cdf5c31956 100644 --- a/addons/sale_payment/__manifest__.py +++ b/addons/sale_payment/__manifest__.py @@ -17,6 +17,8 @@ Provide tools for sale-related payment 'depends': ['payment', 'sale'], 'data': [ 'views/payment_views.xml', + 'views/crm_team_views.xml', + 'views/sale_order_views.xml', ], 'installable': True, 'auto_install': False, diff --git a/addons/sale_payment/models/__init__.py b/addons/sale_payment/models/__init__.py index 51af63e66bb..3f93126a308 100644 --- a/addons/sale_payment/models/__init__.py +++ b/addons/sale_payment/models/__init__.py @@ -2,4 +2,5 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import payment +from . import crm_team from . import sale_order \ No newline at end of file diff --git a/addons/website_portal_sale/models/crm_team.py b/addons/sale_payment/models/crm_team.py similarity index 100% rename from addons/website_portal_sale/models/crm_team.py rename to addons/sale_payment/models/crm_team.py diff --git a/addons/sale_payment/models/sale_order.py b/addons/sale_payment/models/sale_order.py index a731975734b..dd0876f06f4 100644 --- a/addons/sale_payment/models/sale_order.py +++ b/addons/sale_payment/models/sale_order.py @@ -9,6 +9,15 @@ class SaleOrder(models.Model): payment_tx_id = fields.Many2one('payment.transaction', string='Last Transaction', copy=False) payment_acquirer_id = fields.Many2one('payment.acquirer', string='Payment Acquirer', related='payment_tx_id.acquirer_id', store=True) + payment_transaction_count = fields.Integer( + string="Number of payment transactions", + compute='_compute_payment_transaction_count') + + def _compute_payment_transaction_count(self): + transaction_data = self.env['payment.transaction'].read_group([('sale_order_id', 'in', self.ids)], ['sale_order_id'], ['sale_order_id']) + mapped_data = dict([(m['sale_order_id'][0], m['sale_order_id_count']) for m in transaction_data]) + for order in self: + order.payment_transaction_count = mapped_data.get(order.id, 0) def _force_lines_to_invoice_policy_order(self): for line in self.order_line: @@ -16,3 +25,21 @@ class SaleOrder(models.Model): line.qty_to_invoice = line.product_uom_qty - line.qty_invoiced else: line.qty_to_invoice = 0 + + def action_view_transaction(self): + action = { + 'type': 'ir.actions.act_window', + 'name': 'Payment Transactions', + 'res_model': 'payment.transaction', + } + if self.payment_transaction_count == 1: + action.update({ + 'res_id': self.env['payment.transaction'].search([('sale_order_id', '=', self.id)]).id, + 'view_mode': 'form', + }) + else: + action.update({ + 'view_mode': 'tree,form', + 'domain': [('sale_order_id', '=', self.id)], + }) + return action diff --git a/addons/website_portal_sale/views/crm_team_views.xml b/addons/sale_payment/views/crm_team_views.xml similarity index 100% rename from addons/website_portal_sale/views/crm_team_views.xml rename to addons/sale_payment/views/crm_team_views.xml diff --git a/addons/website_portal_sale/views/sale_order_views.xml b/addons/sale_payment/views/sale_order_views.xml similarity index 100% rename from addons/website_portal_sale/views/sale_order_views.xml rename to addons/sale_payment/views/sale_order_views.xml diff --git a/addons/website_portal_sale/__manifest__.py b/addons/website_portal_sale/__manifest__.py index 0c46f60dd96..4d46dd6521b 100644 --- a/addons/website_portal_sale/__manifest__.py +++ b/addons/website_portal_sale/__manifest__.py @@ -16,8 +16,6 @@ Add your sales document in the frontend portal. Your customers will be able to c 'website_payment', ], 'data': [ - 'views/crm_team_views.xml', - 'views/sale_order_views.xml', 'views/website_portal_sale_templates.xml', 'security/ir.model.access.csv', 'security/sale_order_security.xml', diff --git a/addons/website_portal_sale/models/__init__.py b/addons/website_portal_sale/models/__init__.py index 34290388641..00b62d54b4a 100644 --- a/addons/website_portal_sale/models/__init__.py +++ b/addons/website_portal_sale/models/__init__.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from . import crm_team from . import sale_order diff --git a/addons/website_portal_sale/models/sale_order.py b/addons/website_portal_sale/models/sale_order.py index 0f8f42f97d4..e29f0fdd430 100644 --- a/addons/website_portal_sale/models/sale_order.py +++ b/addons/website_portal_sale/models/sale_order.py @@ -12,18 +12,11 @@ class SaleOrder(models.Model): _inherit = 'sale.order' website_url = fields.Char('Website URL', compute='_website_url', help='The full URL to access the document through the website.') - payment_transaction_count = fields.Integer(compute='_compute_payment_transaction_count', string="Number of payment transactions") def _website_url(self): for so in self: so.website_url = '/my/orders/%s' % (so.id) - def _compute_payment_transaction_count(self): - transaction_data = self.env['payment.transaction'].read_group([('sale_order_id', 'in', self.ids)], ['sale_order_id'], ['sale_order_id']) - mapped_data = dict([(m['sale_order_id'][0], m['sale_order_id_count']) for m in transaction_data]) - for order in self: - order.payment_transaction_count = mapped_data.get(order.id, 0) - @api.multi def get_access_action(self, access_uid=None): """ Instead of the classic form view, redirect to the online order for @@ -72,24 +65,6 @@ class SaleOrder(models.Model): model=self._name, res_id=self.id)[self.partner_id.id] - def action_view_transaction(self): - action = { - 'type': 'ir.actions.act_window', - 'name': 'Payment Transactions', - 'res_model': 'payment.transaction', - } - if self.payment_transaction_count == 1: - action.update({ - 'res_id': self.env['payment.transaction'].search([('sale_order_id', '=', self.id)]).id, - 'view_mode': 'form', - }) - else: - action.update({ - 'view_mode': 'tree,form', - 'domain': [('sale_order_id', '=', self.id)], - }) - return action - class SaleOrderLine(models.Model): diff --git a/addons/website_sale/__manifest__.py b/addons/website_sale/__manifest__.py index 23f22e84946..acc040da8c2 100644 --- a/addons/website_sale/__manifest__.py +++ b/addons/website_sale/__manifest__.py @@ -6,7 +6,7 @@ 'website': 'https://www.odoo.com/page/e-commerce', 'version': '1.0', 'description': "", - 'depends': ['website', 'sale', 'payment', 'website_payment', 'website_portal_sale', 'website_account', 'website_mail', 'website_form', 'website_rating'], + 'depends': ['website', 'sale', 'sale_payment', 'payment', 'website_payment', 'website_portal_sale', 'website_account', 'website_mail', 'website_form', 'website_rating'], 'data': [ 'security/ir.model.access.csv', 'security/website_sale.xml',