Skip to content

Commit 37fe385

Browse files
committed
[ADD] purchase_request: add button box buttons to purchase order to link to related purchase request and purchase request lines
1 parent 5811ced commit 37fe385

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

purchase_request/models/purchase_order.py

+48
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,54 @@
77
class PurchaseOrder(models.Model):
88
_inherit = "purchase.order"
99

10+
purchase_request_count = fields.Integer(
11+
compute="_compute_purchase_request_count",
12+
default=0,
13+
)
14+
purchase_request_line_count = fields.Integer(
15+
compute="_compute_purchase_request_line_count",
16+
default=0,
17+
)
18+
19+
@api.depends("order_line.purchase_request_lines")
20+
def _compute_purchase_request_count(self):
21+
for order in self:
22+
order.purchase_request_count = len(
23+
order.order_line.mapped("purchase_request_lines.request_id")
24+
)
25+
26+
@api.depends("order_line.purchase_request_lines")
27+
def _compute_purchase_request_line_count(self):
28+
for order in self:
29+
order.purchase_request_line_count = len(
30+
order.order_line.mapped("purchase_request_lines")
31+
)
32+
33+
def action_open_purchase_request(self):
34+
self.ensure_one()
35+
requests = self.order_line.mapped("purchase_request_lines.request_id")
36+
action = self.env["ir.actions.act_window"]._for_xml_id(
37+
"purchase_request.purchase_request_form_action"
38+
)
39+
action["context"] = {}
40+
if len(requests) == 1:
41+
action.update({
42+
"res_id": requests.id,
43+
"views": [(False, "form")],
44+
})
45+
else:
46+
action["domain"] = [("id", "in", requests.ids)]
47+
return action
48+
49+
def action_open_purchase_request_lines(self):
50+
self.ensure_one()
51+
request_line_ids = self.order_line.mapped("purchase_request_lines").ids
52+
action = self.env["ir.actions.act_window"]._for_xml_id(
53+
"purchase_request.purchase_request_line_form_action"
54+
)
55+
action["domain"] = [("id", "in", request_line_ids)]
56+
return action
57+
1058
def _purchase_request_confirm_message_content(self, request, request_dict=None):
1159
self.ensure_one()
1260
if not request_dict:

purchase_request/views/purchase_order_view.xml

+12
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@
77
<field name="model">purchase.order</field>
88
<field name="inherit_id" ref="purchase.purchase_order_form" />
99
<field name="arch" type="xml">
10+
<xpath expr="//div[@name='button_box']" position="inside">
11+
<button type="object" name="action_open_purchase_request"
12+
class="oe_stat_button"
13+
icon="fa-folder-open-o" invisible="purchase_request_count == 0">
14+
<field name="purchase_request_count" widget="statinfo" string="Purchase Request"/>
15+
</button>
16+
<button type="object" name="action_open_purchase_request_lines"
17+
class="oe_stat_button"
18+
icon="fa-bars" invisible="purchase_request_line_count == 0">
19+
<field name="purchase_request_line_count" widget="statinfo" string="Purchase Request Lines"/>
20+
</button>
21+
</xpath>
1022
<xpath expr="//field[@name='order_line']/tree" position="inside">
1123
<field name="purchase_request_lines" column_invisible="1" />
1224
<button

0 commit comments

Comments
 (0)