From c57d2a05649f364949dac1d35a7e28595ad7b4a5 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 30 Jul 2019 09:31:10 +0200 Subject: [PATCH] Add module sale_order_route --- sale_order_route/__init__.py | 3 +++ sale_order_route/__manifest__.py | 22 ++++++++++++++++++++++ sale_order_route/models/__init__.py | 3 +++ sale_order_route/models/sale_order.py | 22 ++++++++++++++++++++++ sale_order_route/views/sale_order.xml | 21 +++++++++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 sale_order_route/__init__.py create mode 100644 sale_order_route/__manifest__.py create mode 100644 sale_order_route/models/__init__.py create mode 100644 sale_order_route/models/sale_order.py create mode 100644 sale_order_route/views/sale_order.xml diff --git a/sale_order_route/__init__.py b/sale_order_route/__init__.py new file mode 100644 index 0000000..cde864b --- /dev/null +++ b/sale_order_route/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/sale_order_route/__manifest__.py b/sale_order_route/__manifest__.py new file mode 100644 index 0000000..f2ef82c --- /dev/null +++ b/sale_order_route/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2019 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Sale Order Route', + 'version': '12.0.1.0.0', + 'category': 'Sales', + 'license': 'AGPL-3', + 'summary': 'Set route on sale order', + 'description': """ +This small module adds the possibility to set a route on a sale order. Upon sale order confirmation, the route will be copied to all the sale order lines. + +This module has been written by Alexis de Lattre from Akretion +. + """, + 'author': 'Akretion', + 'website': 'http://www.akretion.com', + 'depends': ['sale_stock'], + 'data': ['views/sale_order.xml'], + 'installable': True, +} diff --git a/sale_order_route/models/__init__.py b/sale_order_route/models/__init__.py new file mode 100644 index 0000000..6064afe --- /dev/null +++ b/sale_order_route/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import sale_order diff --git a/sale_order_route/models/sale_order.py b/sale_order_route/models/sale_order.py new file mode 100644 index 0000000..30dfd99 --- /dev/null +++ b/sale_order_route/models/sale_order.py @@ -0,0 +1,22 @@ +# Copyright 2019 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + route_id = fields.Many2one( + 'stock.location.route', string='Route', + ondelete='restrict', readonly=True, + states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, + domain=[('sale_selectable', '=', True)]) + + def _action_confirm(self): + for order in self.filtered(lambda o: o.route_id): + order.order_line.filtered( + lambda l: l.product_id.type in ('product', 'consu')).write( + {'route_id': order.route_id.id}) + super(SaleOrder, self)._action_confirm() diff --git a/sale_order_route/views/sale_order.xml b/sale_order_route/views/sale_order.xml new file mode 100644 index 0000000..950890e --- /dev/null +++ b/sale_order_route/views/sale_order.xml @@ -0,0 +1,21 @@ + + + + + + + sale.order.route.form + sale.order + + + + + + + + +