|
@@ -284,14 +285,14 @@
+ t-if="doc.planned_date_begin or doc.date_deadline">
Planned start:
- Planned end:
+ Planned end:
@@ -444,7 +445,12 @@
-
+
+
+
+
+
+
diff --git a/bemade_fsm/reports/worksheet_custom_reports.xml b/bemade_fsm/reports/worksheet_custom_reports.xml
index e8daf4e..5dd1bd7 100644
--- a/bemade_fsm/reports/worksheet_custom_reports.xml
+++ b/bemade_fsm/reports/worksheet_custom_reports.xml
@@ -2,15 +2,11 @@
- Work Order Report (PDF)
- bemade_fsm.work_order
- bemade_fsm.work_order
'%s %s' % (
object.planned_date_begin.strftime('%Y-%m-%d') if object.planned_date_begin else time.strftime('%Y-%m-%d'),
object.name
)
- qweb-pdf
diff --git a/bemade_fsm/tests/__init__.py b/bemade_fsm/tests/__init__.py
index 4b317ee..538909c 100644
--- a/bemade_fsm/tests/__init__.py
+++ b/bemade_fsm/tests/__init__.py
@@ -5,3 +5,4 @@ from . import test_equipment
from . import test_fsm_contact_setting
from . import test_fsm_visit
from . import test_task
+from . import test_task_report
diff --git a/bemade_fsm/tests/test_bemade_fsm_common.py b/bemade_fsm/tests/test_bemade_fsm_common.py
index 695c489..cd9f7a6 100644
--- a/bemade_fsm/tests/test_bemade_fsm_common.py
+++ b/bemade_fsm/tests/test_bemade_fsm_common.py
@@ -4,6 +4,12 @@ from odoo import Command
@tagged("-at_install", "post_install")
class BemadeFSMBaseTest(TransactionCase):
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.env.user.groups_id += cls.env.ref("account.group_delivery_invoice_address")
+ cls.env.company.create_default_fsm_visit = True
+
@classmethod
def _generate_project_manager_user(cls, name, login):
@@ -37,7 +43,11 @@ class BemadeFSMBaseTest(TransactionCase):
user_group_fsm_user = cls.env.ref('industry_fsm.group_fsm_user')
user_group_sales_user = cls.env.ref('sales_team.group_sale_salesman')
user_group_sales_manager = cls.env.ref('sales_team.group_sale_manager')
- user_product_customer = cls.env.ref('customer_product_code.group_product_customer_code_user')
+ # TODO: Split this out into a bemade_fsm_customer_product_code module if it's wanted
+ user_product_customer = cls.env.ref(
+ 'customer_product_code.group_product_customer_code_user',
+ raise_if_not_found=False
+ )
group_ids = [user_group_employee.id,
user_group_project_user.id,
diff --git a/bemade_fsm/tests/test_equipment.py b/bemade_fsm/tests/test_equipment.py
index 879f129..16e06e2 100644
--- a/bemade_fsm/tests/test_equipment.py
+++ b/bemade_fsm/tests/test_equipment.py
@@ -19,7 +19,3 @@ class TestEquipment(BemadeFSMBaseTest):
partner_company.write({'equipment_ids': [Command.set([])]})
with self.assertRaises(MissingError):
equipment.name
-
- def test_compute_complete_name_when_name_blank(self):
- equipment = self._generate_equipment(name=False)
- complete_name = equipment.complete_name
diff --git a/bemade_fsm/tests/test_fsm_visit.py b/bemade_fsm/tests/test_fsm_visit.py
index 96fc03d..fd83869 100644
--- a/bemade_fsm/tests/test_fsm_visit.py
+++ b/bemade_fsm/tests/test_fsm_visit.py
@@ -89,7 +89,7 @@ class FSMVisitTest(BemadeFSMBaseTest):
so.action_confirm()
visit_task = visit.task_id
- self.assertEqual(visit_task.planned_hours, 8.0)
+ self.assertEqual(visit_task.allocated_hours, 8.0)
def test_adding_visit_creates_one_sale_order_line(self):
partner = self._generate_partner()
diff --git a/bemade_fsm/tests/test_sale_order.py b/bemade_fsm/tests/test_sale_order.py
index 1e39371..87eb491 100644
--- a/bemade_fsm/tests/test_sale_order.py
+++ b/bemade_fsm/tests/test_sale_order.py
@@ -19,7 +19,7 @@ class TestSalesOrder(BemadeFSMBaseTest):
task = sol.task_id
self.assertTrue(task)
self.assertTrue(task_template.name in task.name)
- self.assertTrue(task_template.planned_hours == task.planned_hours)
+ self.assertTrue(task_template.planned_hours == task.allocated_hours)
def test_task_template_tree_order_confirmation(self):
partner = self._generate_partner()
diff --git a/bemade_fsm/tests/test_task_report.py b/bemade_fsm/tests/test_task_report.py
new file mode 100644
index 0000000..bcc837a
--- /dev/null
+++ b/bemade_fsm/tests/test_task_report.py
@@ -0,0 +1,38 @@
+from .test_bemade_fsm_common import BemadeFSMBaseTest
+from odoo.tests import Form
+
+
+class TestTaskReport(BemadeFSMBaseTest):
+ def test_split_time_materials_setting(self):
+ settings = Form(self.env['res.config.settings'])
+ settings.module_bemade_fsm_separate_time_on_work_orders = True
+ settings.save()
+
+ so = self._generate_sale_order()
+ service_product = self._generate_product()
+ material_product = self._generate_product(
+ name="Material Product",
+ product_type='product',
+ service_tracking='no',
+ )
+ sol = self._generate_sale_order_line(sale_order=so, product=service_product)
+ sol2 = self._generate_sale_order_line(sale_order=so, product=material_product)
+ so.action_confirm()
+ task = sol.task_id
+
+ html_content = self.env['ir.actions.report']._render(
+ 'industry_fsm_report.worksheet_custom',
+ [task.id],
+ )[0].decode('utf-8').split('\n')
+
+ strings_to_find = [
+ " Materials",
+ "Material Product"
+ ]
+
+ for line in strings_to_find:
+ line_found = False
+ for html_line in html_content:
+ if line in html_line:
+ line_found = True
+ self.assertTrue(line_found, f"{line} should be in file.")
diff --git a/bemade_fsm/wizard/__init__.py b/bemade_fsm/wizard/__init__.py
index 5cc0245..d7ab68a 100644
--- a/bemade_fsm/wizard/__init__.py
+++ b/bemade_fsm/wizard/__init__.py
@@ -1 +1,2 @@
from . import new_task_from_template
+from . import res_config_settings
diff --git a/bemade_fsm/wizard/res_config_settings.py b/bemade_fsm/wizard/res_config_settings.py
new file mode 100644
index 0000000..69541e6
--- /dev/null
+++ b/bemade_fsm/wizard/res_config_settings.py
@@ -0,0 +1,23 @@
+from odoo import models, fields, api
+
+
+class ResConfigSettings(models.TransientModel):
+ _inherit = "res.config.settings"
+
+ module_bemade_fsm_separate_time_on_work_orders = fields.Boolean("Separate Time from Materials on Work Order")
+ module_bemade_fsm_create_default_fsm_visit = fields.Boolean("Create Default Visit for FSM Sales Orders")
+
+ def set_values(self):
+ super().set_values()
+ self.env.company.split_time_from_materials_on_service_work_orders = \
+ self.module_bemade_fsm_separate_time_on_work_orders
+ self.env.company.create_default_fsm_visit = self.module_bemade_fsm_create_default_fsm_visit
+
+ def get_values(self):
+ res = super().get_values()
+ res.update({
+ 'module_bemade_fsm_separate_time_on_work_orders':
+ self.env.company.split_time_from_materials_on_service_work_orders,
+ 'module_bemade_fsm_create_default_fsm_visit': self.env.company.create_default_fsm_visit
+ })
+ return res
diff --git a/bemade_fsm/wizard/res_config_settings.xml b/bemade_fsm/wizard/res_config_settings.xml
new file mode 100644
index 0000000..2779b1a
--- /dev/null
+++ b/bemade_fsm/wizard/res_config_settings.xml
@@ -0,0 +1,22 @@
+
+
+
+ res.config.settings.view.form.inherit.bemade.fsm
+ res.config.settings
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bemade_margin_vendor_pricelist/views/sale_order.xml b/bemade_margin_vendor_pricelist/views/sale_order.xml
index 8c7eb40..5dad852 100644
--- a/bemade_margin_vendor_pricelist/views/sale_order.xml
+++ b/bemade_margin_vendor_pricelist/views/sale_order.xml
@@ -7,12 +7,14 @@
+
+
@@ -24,6 +26,7 @@
+
@@ -34,12 +37,15 @@
sale.order
+
+
+
|