Skip to content

Commit d486ee4

Browse files
committed
Merge PR #1332 into 16.0
Signed-off-by pedrobaeza
2 parents 5feebae + 24f7431 commit d486ee4

File tree

3 files changed

+69
-32
lines changed

3 files changed

+69
-32
lines changed

fieldservice_account/tests/test_fsm_account.py

+44-29
Original file line numberDiff line numberDiff line change
@@ -3,55 +3,70 @@
33

44
from datetime import datetime, timedelta
55

6+
from odoo.tests import tagged
67
from odoo.tests.common import TransactionCase
78

89

10+
@tagged("-at_install", "post_install")
911
class FSMAccountCase(TransactionCase):
10-
def setUp(self):
11-
super(FSMAccountCase, self).setUp()
12-
self.Wizard = self.env["fsm.wizard"]
13-
self.WorkOrder = self.env["fsm.order"]
14-
self.AccountInvoice = self.env["account.move"]
15-
self.AccountInvoiceLine = self.env["account.move.line"]
12+
@classmethod
13+
def setUpClass(cls):
14+
super().setUpClass()
15+
if not cls.env.company.chart_template_id:
16+
# Load a CoA if there's none in current company
17+
coa = cls.env.ref("l10n_generic_coa.configurable_chart_template", False)
18+
if not coa:
19+
# Load the first available CoA
20+
coa = cls.env["account.chart.template"].search(
21+
[("visible", "=", True)], limit=1
22+
)
23+
coa.try_loading(company=cls.env.company, install_demo=False)
24+
cls.Wizard = cls.env["fsm.wizard"]
25+
cls.WorkOrder = cls.env["fsm.order"]
26+
cls.AccountInvoice = cls.env["account.move"]
27+
cls.AccountInvoiceLine = cls.env["account.move.line"]
1628
# create a Res Partner
17-
self.test_partner = self.env["res.partner"].create(
29+
cls.test_partner = cls.env["res.partner"].create(
1830
{"name": "Test Partner", "phone": "123", "email": "tp@email.com"}
1931
)
2032
# create a Res Partner to be converted to FSM Location/Person
21-
self.test_loc_partner = self.env["res.partner"].create(
33+
cls.test_loc_partner = cls.env["res.partner"].create(
2234
{"name": "Test Loc Partner", "phone": "ABC", "email": "tlp@email.com"}
2335
)
24-
self.test_loc_partner2 = self.env["res.partner"].create(
36+
cls.test_loc_partner2 = cls.env["res.partner"].create(
2537
{"name": "Test Loc Partner 2", "phone": "123", "email": "tlp@example.com"}
2638
)
2739
# create expected FSM Location to compare to converted FSM Location
28-
self.test_location = self.env["fsm.location"].create(
29-
{
30-
"name": "Test Location",
31-
"phone": "123",
32-
"email": "tp@email.com",
33-
"partner_id": self.test_loc_partner.id,
34-
"owner_id": self.test_loc_partner.id,
35-
}
40+
cls.test_location = (
41+
cls.env["fsm.location"]
42+
.with_context(default_owner_id=cls.test_loc_partner.id)
43+
.create(
44+
{
45+
"name": "Test Location",
46+
"phone": "123",
47+
"email": "tp@email.com",
48+
"partner_id": cls.test_loc_partner.id,
49+
}
50+
)
3651
)
37-
self.test_order = self.env["fsm.order"].create(
52+
cls.test_order = cls.env["fsm.order"].create(
3853
{
39-
"location_id": self.test_location.id,
54+
"location_id": cls.test_location.id,
4055
"date_start": datetime.today(),
4156
"date_end": datetime.today() + timedelta(hours=2),
4257
"request_early": datetime.today(),
4358
}
4459
)
45-
self.test_order2 = self.env["fsm.order"].create(
60+
cls.test_order2 = cls.env["fsm.order"].create(
4661
{
47-
"location_id": self.test_location.id,
62+
"location_id": cls.test_location.id,
4863
"date_start": datetime.today(),
4964
"date_end": datetime.today() + timedelta(hours=2),
5065
"request_early": datetime.today(),
5166
}
5267
)
53-
company = self.env.user.company_id
54-
self.default_account_revenue = self.env["account.account"].search(
68+
company = cls.env.user.company_id
69+
cls.default_account_revenue = cls.env["account.account"].search(
5570
[
5671
("company_id", "=", company.id),
5772
("account_type", "=", "income"),
@@ -64,9 +79,9 @@ def setUp(self):
6479
limit=1,
6580
)
6681

67-
self.test_invoice = self.env["account.move"].create(
82+
cls.test_invoice = cls.env["account.move"].create(
6883
{
69-
"partner_id": self.test_partner.id,
84+
"partner_id": cls.test_partner.id,
7085
"move_type": "out_invoice",
7186
"invoice_date": datetime.today().date(),
7287
"invoice_line_ids": [
@@ -86,23 +101,23 @@ def setUp(self):
86101
0,
87102
{
88103
"name": "line_debit",
89-
"account_id": self.default_account_revenue.id,
104+
"account_id": cls.default_account_revenue.id,
90105
},
91106
),
92107
(
93108
0,
94109
0,
95110
{
96111
"name": "line_credit",
97-
"account_id": self.default_account_revenue.id,
112+
"account_id": cls.default_account_revenue.id,
98113
},
99114
),
100115
],
101116
}
102117
)
103-
self.test_invoice2 = self.env["account.move"].create(
118+
cls.test_invoice2 = cls.env["account.move"].create(
104119
{
105-
"partner_id": self.test_partner.id,
120+
"partner_id": cls.test_partner.id,
106121
"move_type": "out_invoice",
107122
"invoice_date": datetime.today().date(),
108123
"invoice_line_ids": [

fieldservice_account_analytic/models/fsm_location.py

+11
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ class FSMLocation(models.Model):
1111
"account.analytic.account", string="Analytic Account", company_dependent=True
1212
)
1313

14+
@api.model
15+
def default_get(self, fields):
16+
res = super().default_get(fields)
17+
if (
18+
res.get("owner_id")
19+
and "customer_id" in fields
20+
and not res.get("customer_id")
21+
):
22+
res["customer_id"] = res.get("owner_id")
23+
return res
24+
1425
@api.model
1526
def get_default_customer(self):
1627
if self.fsm_parent_id:

fieldservice_sale/tests/test_fsm_sale_order.py

+14-3
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,25 @@
33

44
from odoo import fields
55
from odoo.exceptions import ValidationError
6+
from odoo.tests import tagged
67

78
from .test_fsm_sale_common import TestFSMSale
89

910

11+
@tagged("-at_install", "post_install")
1012
class TestFSMSaleOrder(TestFSMSale):
1113
@classmethod
1214
def setUpClass(cls):
13-
super(TestFSMSaleOrder, cls).setUpClass()
15+
super().setUpClass()
16+
if not cls.env.company.chart_template_id:
17+
# Load a CoA if there's none in current company
18+
coa = cls.env.ref("l10n_generic_coa.configurable_chart_template", False)
19+
if not coa:
20+
# Load the first available CoA
21+
coa = cls.env["account.chart.template"].search(
22+
[("visible", "=", True)], limit=1
23+
)
24+
coa.try_loading(company=cls.env.company, install_demo=False)
1425
cls.test_location = cls.env.ref("fieldservice.test_location")
1526

1627
# Setup products that when sold will create some FSM orders
@@ -21,8 +32,8 @@ def setUpClass(cls):
2132
"company_id": False,
2233
}
2334
)
24-
cls.pricelist_usd = cls.env["product.pricelist"].search(
25-
[("currency_id.name", "=", "USD")], limit=1
35+
cls.pricelist_usd = cls.env["product.pricelist"].create(
36+
{"name": "Test pricelist", "currency_id": cls.env.company.currency_id.id}
2637
)
2738
# Create some sale orders that will use the above products
2839
SaleOrder = cls.env["sale.order"].with_context(tracking_disable=True)

0 commit comments

Comments
 (0)