Skip to content

Commit 7fd6494

Browse files
committed
Merge PR #1314 into 17.0
Signed-off-by brian10048
2 parents bb6ec03 + 4ca514b commit 7fd6494

File tree

6 files changed

+70
-5
lines changed

6 files changed

+70
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"pull_requests": {
3+
"OCA/field-service#997": "dotfiles",
4+
"OCA/field-service#999": "(auto) Nothing to port from PR #999"
5+
}
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"pull_requests": {
3+
"OCA/field-service#931": "(auto) Nothing to port from PR #931",
4+
"OCA/field-service#1122": "(auto) Nothing to port from PR #1122"
5+
}
6+
}

fieldservice_account/models/fsm_stage.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ def _get_invoiceable_stage(self):
1515
by other criteria
1616
:return:
1717
"""
18-
return self.search(["is_invoiceable", "=", "True"])
18+
return self.search([("is_invoiceable", "=", "True")])
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,46 @@
11
<odoo>
2+
23
<!-- fsm.location -->
4+
<record id="analytic_account_test_location" model="account.analytic.account">
5+
<field name="code">FSM-TEST</field>
6+
<field name="name">FSM Test Location</field>
7+
<field name="plan_id" ref="analytic.analytic_plan_internal" />
8+
</record>
39
<record id="fieldservice.test_location" model="fsm.location">
410
<field name="customer_id" eval="ref('fieldservice.test_loc_partner')" />
11+
<field name="analytic_account_id" ref="analytic_account_test_location" />
512
</record>
13+
614
<!-- Other locations -->
15+
16+
<record id="analytic_account_location_1" model="account.analytic.account">
17+
<field name="code">FSM-LOC1</field>
18+
<field name="name">FSM Test Location 1</field>
19+
<field name="plan_id" ref="analytic.analytic_plan_internal" />
20+
</record>
721
<record id="fieldservice.location_1" model="fsm.location">
822
<field name="customer_id" eval="ref('fieldservice.location_partner_1')" />
23+
<field name="analytic_account_id" ref="analytic_account_location_1" />
24+
</record>
25+
26+
<record id="analytic_account_location_2" model="account.analytic.account">
27+
<field name="code">FSM-LOC2</field>
28+
<field name="name">FSM Test Location 3</field>
29+
<field name="plan_id" ref="analytic.analytic_plan_internal" />
930
</record>
1031
<record id="fieldservice.location_2" model="fsm.location">
1132
<field name="customer_id" eval="ref('fieldservice.location_partner_2')" />
33+
<field name="analytic_account_id" ref="analytic_account_location_2" />
34+
</record>
35+
36+
<record id="analytic_account_location_3" model="account.analytic.account">
37+
<field name="code">FSM-LOC3</field>
38+
<field name="name">FSM Test Location 3</field>
39+
<field name="plan_id" ref="analytic.analytic_plan_internal" />
1240
</record>
1341
<record id="fieldservice.location_3" model="fsm.location">
1442
<field name="customer_id" eval="ref('fieldservice.location_partner_3')" />
43+
<field name="analytic_account_id" ref="analytic_account_location_3" />
1544
</record>
45+
1646
</odoo>

fieldservice_sale/models/sale_order_line.py

+25-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright (C) 2019 Brian McMaster
22
# Copyright (C) 2019 Open Source Integrators
33
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
4-
from odoo import api, fields, models
4+
from odoo import Command, api, fields, models
55

66

77
class SaleOrderLine(models.Model):
@@ -53,8 +53,31 @@ def create(self, vals_list):
5353
line.order_id._field_service_generation()
5454
return lines
5555

56+
def _get_invoiceable_fsm_order_domain(self):
57+
"""
58+
Override this method to define more search criteria for invoiceable
59+
fsm order
60+
:return:
61+
"""
62+
invoiceable_stage_ids = self.env["fsm.stage"]._get_invoiceable_stage()
63+
dom = [
64+
"|",
65+
("sale_line_id", "=", self.id),
66+
("sale_id", "=", self.order_id.id),
67+
("invoice_lines", "=", False),
68+
]
69+
if invoiceable_stage_ids:
70+
dom.append(("stage_id", "in", invoiceable_stage_ids.ids))
71+
return dom
72+
73+
def _get_invoiceable_fsm_order(self):
74+
dom = self._get_invoiceable_fsm_order_domain()
75+
return self.env["fsm.order"].search(dom)
76+
5677
def _prepare_invoice_line(self, **optional_values):
5778
res = super()._prepare_invoice_line(**optional_values)
5879
if self.fsm_order_id:
59-
res.update({"fsm_order_ids": [(4, self.fsm_order_id.id)]})
80+
fsm_orders = self._get_invoiceable_fsm_order()
81+
if fsm_orders:
82+
res.update({"fsm_order_ids": [Command.set(fsm_orders.ids)]})
6083
return res

fieldservice_sale_recurring/models/sale_order_line.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Copyright (C) 2019 Open Source Integrators
33
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
44

5-
from odoo import _, fields, models
5+
from odoo import Command, _, fields, models
66

77

88
class SaleOrderLine(models.Model):
@@ -89,5 +89,5 @@ def _prepare_invoice_line(self, **optional_values):
8989
if self.fsm_recurring_id:
9090
fsm_orders = self._get_invoiceable_fsm_order()
9191
if fsm_orders:
92-
res.update({"fsm_order_ids": [(6, 0, fsm_orders.ids)]})
92+
res.update({"fsm_order_ids": [Command.set(fsm_orders.ids)]})
9393
return res

0 commit comments

Comments
 (0)