diff --git a/book_pricelist/__init__.py b/book_pricelist/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/book_pricelist/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/book_pricelist/__manifest__.py b/book_pricelist/__manifest__.py new file mode 100644 index 00000000000..860577ce775 --- /dev/null +++ b/book_pricelist/__manifest__.py @@ -0,0 +1,14 @@ +{ + 'name': "Book Pricelist", + 'category': '', + 'version': '0.1', + 'depends': ['sale'], + 'sequence': 1, + 'application': True, + 'installable': True, + 'data': [ + 'views/sale_order_views.xml', + 'views/account_move_view.xml', + ], + 'license': 'AGPL-3' +} diff --git a/book_pricelist/models/__init__.py b/book_pricelist/models/__init__.py new file mode 100644 index 00000000000..ea3d9579546 --- /dev/null +++ b/book_pricelist/models/__init__.py @@ -0,0 +1,2 @@ +from . import sale_order_line +from . import account_move_line diff --git a/book_pricelist/models/account_move_line.py b/book_pricelist/models/account_move_line.py new file mode 100644 index 00000000000..712a7808228 --- /dev/null +++ b/book_pricelist/models/account_move_line.py @@ -0,0 +1,21 @@ +from odoo import fields, models, api + + +class AccountMoveLine(models.Model): + _inherit = 'account.move.line' + + book_price = fields.Float(string='Book Price', compute='_compute_book_price') + + @api.depends('product_id', 'quantity', 'sale_line_ids') + def _compute_book_price(self): + for rec in self: + if rec.product_id: + pricelist = rec.sale_line_ids.order_id.pricelist_id + if pricelist: + rec.book_price = pricelist._get_product_price( + rec.product_id, rec.quantity + ) + else: + rec.book_price = rec.product_id.lst_price + else: + rec.book_price = 0 diff --git a/book_pricelist/models/sale_order_line.py b/book_pricelist/models/sale_order_line.py new file mode 100644 index 00000000000..6947a2bd453 --- /dev/null +++ b/book_pricelist/models/sale_order_line.py @@ -0,0 +1,21 @@ +from odoo import fields, models, api + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + book_price = fields.Float(string='Book Price', compute='_compute_book_price') + + @api.depends('product_id', 'product_uom_qty', 'order_id.pricelist_id') + def _compute_book_price(self): + for rec in self: + if not rec.product_id: + rec.book_price = 0 + continue + pricelist = rec.order_id.pricelist_id + if rec.product_id and pricelist: + rec.book_price = pricelist._get_product_price( + rec.product_id, rec.product_uom_qty + ) + else: + rec.book_price = rec.product_id.lst_price diff --git a/book_pricelist/views/account_move_view.xml b/book_pricelist/views/account_move_view.xml new file mode 100644 index 00000000000..9f1f3d2b239 --- /dev/null +++ b/book_pricelist/views/account_move_view.xml @@ -0,0 +1,15 @@ + + + + + account.move.view.form.inherit + account.move + + + + + + + + + diff --git a/book_pricelist/views/sale_order_views.xml b/book_pricelist/views/sale_order_views.xml new file mode 100644 index 00000000000..5c2ba39a788 --- /dev/null +++ b/book_pricelist/views/sale_order_views.xml @@ -0,0 +1,13 @@ + + + + sale.order.inherited.form.pricelist + sale.order + + + + + + + +