From cf2464dfa4eae67c15b0b62b04733402e920284e Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 29 Nov 2018 12:34:34 +0100 Subject: [PATCH] Add module sale_order_full_dropship --- sale_order_full_dropship/__init__.py | 3 +++ sale_order_full_dropship/__manifest__.py | 30 ++++++++++++++++++++++++ sale_order_full_dropship/sale.py | 29 +++++++++++++++++++++++ sale_order_full_dropship/sale_view.xml | 23 ++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 sale_order_full_dropship/__init__.py create mode 100644 sale_order_full_dropship/__manifest__.py create mode 100644 sale_order_full_dropship/sale.py create mode 100644 sale_order_full_dropship/sale_view.xml diff --git a/sale_order_full_dropship/__init__.py b/sale_order_full_dropship/__init__.py new file mode 100644 index 0000000..78a9604 --- /dev/null +++ b/sale_order_full_dropship/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import sale diff --git a/sale_order_full_dropship/__manifest__.py b/sale_order_full_dropship/__manifest__.py new file mode 100644 index 0000000..5939299 --- /dev/null +++ b/sale_order_full_dropship/__manifest__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 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 Full Dropship', + 'version': '10.0.1.0.0', + 'category': 'Sales', + 'license': 'AGPL-3', + 'summary': 'Adds an option full dropship on sale orders', + 'description': """ +Sale Order Full Dropship +======================== + +This module adds a boolean field *Full Dropship* on sale order form. If enabled on a quotation, Odoo will enable the *Dropship* route on all sale order lines of that order. That way, for a full dropship order, the user won't have to open each order line to set the Dropship route. + +This module has been written by Alexis de Lattre from Akretion . + """, + 'author': 'Akretion', + 'website': 'http://www.akretion.com', + 'depends': [ + 'sale_stock', + 'stock_dropshipping', + ], + 'data': [ + 'sale_view.xml', + ], + 'installable': True, +} diff --git a/sale_order_full_dropship/sale.py b/sale_order_full_dropship/sale.py new file mode 100644 index 0000000..2b9a297 --- /dev/null +++ b/sale_order_full_dropship/sale.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 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, _ +from odoo.exceptions import UserError + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + dropship = fields.Boolean( + string='Dropship', readonly=True, + states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, + help="If enabled, all the order lines will be set with the " + "'Drop Shipping' route upon confirmation of the order.") + + def action_confirm(self): + try: + ds_route = self.env.ref('stock_dropshipping.route_drop_shipping') + except ValueError: + raise UserError(_("Drop shipping route not found.")) + for order in self: + if order.dropship: + # no need to exclude service lines + # by default, the don't generate a procurement + order.order_line.write({'route_id': ds_route.id}) + return super(SaleOrder, self).action_confirm() diff --git a/sale_order_full_dropship/sale_view.xml b/sale_order_full_dropship/sale_view.xml new file mode 100644 index 0000000..2d38b33 --- /dev/null +++ b/sale_order_full_dropship/sale_view.xml @@ -0,0 +1,23 @@ + + + + + + + + sale_order_full_dropship.sale.order.form + sale.order + + + + + + + + + +