From f0bb02edf120f1a34f53a38b6e8f093f437133a1 Mon Sep 17 00:00:00 2001 From: hparfr Date: Wed, 11 Apr 2018 10:49:41 +0200 Subject: [PATCH] Add purchase buyer module --- purchase_order_buyer/README.rst | 31 ++++++++++++++++++ purchase_order_buyer/__init__.py | 2 ++ purchase_order_buyer/__manifest__.py | 19 +++++++++++ purchase_order_buyer/models/__init__.py | 3 ++ purchase_order_buyer/models/purchase_order.py | 28 ++++++++++++++++ .../static/description/icon.png | Bin 0 -> 9769 bytes purchase_order_buyer/views/purchase_order.xml | 26 +++++++++++++++ 7 files changed, 109 insertions(+) create mode 100644 purchase_order_buyer/README.rst create mode 100644 purchase_order_buyer/__init__.py create mode 100644 purchase_order_buyer/__manifest__.py create mode 100644 purchase_order_buyer/models/__init__.py create mode 100644 purchase_order_buyer/models/purchase_order.py create mode 100644 purchase_order_buyer/static/description/icon.png create mode 100644 purchase_order_buyer/views/purchase_order.xml diff --git a/purchase_order_buyer/README.rst b/purchase_order_buyer/README.rst new file mode 100644 index 0000000..826b3c1 --- /dev/null +++ b/purchase_order_buyer/README.rst @@ -0,0 +1,31 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +==================== +Purchase Order Buyer +==================== + +Adds a buyer on the Purchase Order. (Like a vendor on sales). + +A prefered buyer can be set on the supplier. + +Usage +===== + +To use this module, you need to go to Purchase > Purchase Order: there a new field "Buyer" +It will use buy default the user_id of the supplier and fallback to current user. + +Credits +======= + + +Contributors +------------ + +* Raphaƫl Reverdy + +Maintainer +---------- + +Akretion \ No newline at end of file diff --git a/purchase_order_buyer/__init__.py b/purchase_order_buyer/__init__.py new file mode 100644 index 0000000..a0fdc10 --- /dev/null +++ b/purchase_order_buyer/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import models diff --git a/purchase_order_buyer/__manifest__.py b/purchase_order_buyer/__manifest__.py new file mode 100644 index 0000000..4104d0c --- /dev/null +++ b/purchase_order_buyer/__manifest__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Akretion (https://akretion.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Purchase Order Buyer", + "summary": "Add a buyer (user) on POs", + "version": "10.0.1.1.0", + "author": "Akretion", + "website": "https://github.com/akretion/odoo-usability", + "category": "Purchases", + "depends": ["purchase"], + "data": [ + 'views/purchase_order.xml', + ], + "license": "AGPL-3", + "installable": True, + "application": False, +} diff --git a/purchase_order_buyer/models/__init__.py b/purchase_order_buyer/models/__init__.py new file mode 100644 index 0000000..16dca48 --- /dev/null +++ b/purchase_order_buyer/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import purchase_order diff --git a/purchase_order_buyer/models/purchase_order.py b/purchase_order_buyer/models/purchase_order.py new file mode 100644 index 0000000..1ee8647 --- /dev/null +++ b/purchase_order_buyer/models/purchase_order.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Raphael Reverdy https://akretion.com +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models + + +class PurchaseOrder(models.Model): + _inherit = 'purchase.order' + + user_id = fields.Many2one( + 'res.users', + string='Buyer', index=True, + track_visibility='onchange', + default=lambda self: self.env.user) + + @api.multi + @api.onchange('partner_id') + def onchange_partner_id(self): + """Update the user_id (buyer)""" + for rec in self: + if rec.partner_id and rec.partner_id.user_id: + user_id = rec.partner_id.user_id.id + else: + user_id = self.env.user + return rec.update({ + 'user_id': user_id, + }) diff --git a/purchase_order_buyer/static/description/icon.png b/purchase_order_buyer/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c91da7980d9ac757c41eb45c5388e69281434b76 GIT binary patch literal 9769 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 + + + + purchase.order.tree + purchase.order + + + + + + + + + + purchase.order.form + purchase.order + + + + + + + + +