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
+
+
+
+
+
+
+
+