diff --git a/contract_variable_qty_timesheet/__manifest__.py b/contract_variable_qty_timesheet/__manifest__.py index 3503e440b..f6b768260 100644 --- a/contract_variable_qty_timesheet/__manifest__.py +++ b/contract_variable_qty_timesheet/__manifest__.py @@ -2,22 +2,16 @@ # Copyright 2019 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { - 'name': 'Contract Variable Qty Timesheet', - 'summary': 'Add formula to invoice ', - 'version': '12.0.1.0.0', - 'category': 'Contract Management', - 'website': 'https://github.com/oca/contract', - 'author': 'Tecnativa, ' - 'Odoo Community Association (OCA)', - 'license': 'AGPL-3', - 'installable': True, - 'development_status': 'Production/Stable', - 'depends': [ - 'contract_variable_quantity', - 'hr_timesheet', - ], - 'data': [ - 'data/contract_line_qty_formula_data.xml', - ], - 'maintainers': ['carlosdauden', 'pedrobaeza'], + "name": "Contract Variable Qty Timesheet", + "summary": "Add formula to invoice ", + "version": "12.0.1.0.0", + "category": "Contract Management", + "website": "https://github.com/oca/contract", + "author": "Tecnativa, " "Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "development_status": "Production/Stable", + "depends": ["contract_variable_quantity", "hr_timesheet",], + "data": ["data/contract_line_qty_formula_data.xml",], + "maintainers": ["carlosdauden", "pedrobaeza"], } diff --git a/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml b/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml index 213d10749..6ee6d1636 100644 --- a/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml +++ b/contract_variable_qty_timesheet/data/contract_line_qty_formula_data.xml @@ -1,12 +1,14 @@ - + - - - Project Timesheets - group = env['account.analytic.line'].read_group([ + + Project Timesheets + group = env['account.analytic.line'].read_group([ ('account_id', '=', line.analytic_account_id.id), ('product_id', '=', False), ('project_id', '!=', False), @@ -15,11 +17,13 @@ ], fields=['unit_amount'], groupby=[]) result = group and group[0]['unit_amount'] or 0.0 - - - - Task Timesheets - group = env['account.analytic.line'].read_group([ + + + Task Timesheets + group = env['account.analytic.line'].read_group([ ('account_id', '=', line.analytic_account_id.id), ('product_id', '=', False), ('task_id', '!=', False), @@ -28,11 +32,13 @@ result = group and group[0]['unit_amount'] or 0.0 ], fields=['unit_amount'], groupby=[]) result = group and group[0]['unit_amount'] or 0.0 - - - - Analytic Same Product - group = env['account.analytic.line'].read_group([ + + + Analytic Same Product + group = env['account.analytic.line'].read_group([ ('account_id', '=', line.analytic_account_id.id), ('product_id', '=', line.product_id.id), ('date', '>=', period_first_date), @@ -40,6 +46,5 @@ result = group and group[0]['unit_amount'] or 0.0 ], fields=['unit_amount'], groupby=[]) result = group and group[0]['unit_amount'] or 0.0 - - + diff --git a/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py b/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py index bf08e65e6..5f47cfc48 100644 --- a/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py +++ b/contract_variable_qty_timesheet/tests/test_contract_variable_qty_timesheet.py @@ -9,88 +9,82 @@ class TestContractVariableQtyTimesheet(common.SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.partner = cls.env['res.partner'].create({'name': 'Test partner'}) - cls.analytic_account = cls.env['account.analytic.account'].create({ - 'name': 'Test analytic account'}) - cls.contract = cls.env['contract.contract'].create({ - 'name': 'Test contract', - 'partner_id': cls.partner.id}) - cls.product = cls.env['product.product'].create({ - 'name': 'Test product'}) + cls.partner = cls.env["res.partner"].create({"name": "Test partner"}) + cls.analytic_account = cls.env["account.analytic.account"].create( + {"name": "Test analytic account"} + ) + cls.contract = cls.env["contract.contract"].create( + {"name": "Test contract", "partner_id": cls.partner.id} + ) + cls.product = cls.env["product.product"].create({"name": "Test product"}) contract_line_vals = { - 'contract_id': cls.contract.id, - 'analytic_account_id': cls.analytic_account.id, - 'product_id': cls.product.id, - 'uom_id': cls.product.uom_id.id, - 'name': 'Test line contract', - 'recurring_interval': 1, - 'recurring_rule_type': 'monthly', - 'recurring_invoicing_type': 'pre-paid', - 'date_start': '2020-01-01', - 'recurring_next_date': '2020-01-01', - 'qty_type': 'variable', - 'qty_formula_id': cls.env.ref( - 'contract_variable_qty_timesheet.' - 'contract_line_qty_formula_project_timesheet').id, + "contract_id": cls.contract.id, + "analytic_account_id": cls.analytic_account.id, + "product_id": cls.product.id, + "uom_id": cls.product.uom_id.id, + "name": "Test line contract", + "recurring_interval": 1, + "recurring_rule_type": "monthly", + "recurring_invoicing_type": "pre-paid", + "date_start": "2020-01-01", + "recurring_next_date": "2020-01-01", + "qty_type": "variable", + "qty_formula_id": cls.env.ref( + "contract_variable_qty_timesheet." + "contract_line_qty_formula_project_timesheet" + ).id, } - cls.contract_line = cls.env['contract.line'].create( - contract_line_vals) - cls.project = cls.env['project.project'].create({ - 'name': 'Test project', - 'analytic_account_id': cls.analytic_account.id, - }) - cls.task = cls.env['project.task'].create({ - 'project_id': cls.project.id, - 'name': 'Test task', - }) + cls.contract_line = cls.env["contract.line"].create(contract_line_vals) + cls.project = cls.env["project.project"].create( + {"name": "Test project", "analytic_account_id": cls.analytic_account.id,} + ) + cls.task = cls.env["project.task"].create( + {"project_id": cls.project.id, "name": "Test task",} + ) def _contract_invoicing(self, contract): - date_ref = fields.Date.from_string('2020-01-01') + date_ref = fields.Date.from_string("2020-01-01") contract._recurring_create_invoice(date_ref) return contract._get_related_invoices() def _create_analytic_line(self, project, task, date, product, unit_amount): - return self.env['account.analytic.line'].create({ - 'account_id': self.analytic_account.id, - 'project_id': project and project.id, - 'task_id': task and task.id, - 'name': 'Test %s %s' % (date, unit_amount), - 'date': date, - 'product_id': product and product.id, - 'unit_amount': unit_amount, - }) + return self.env["account.analytic.line"].create( + { + "account_id": self.analytic_account.id, + "project_id": project and project.id, + "task_id": task and task.id, + "name": "Test {} {}".format(date, unit_amount), + "date": date, + "product_id": product and product.id, + "unit_amount": unit_amount, + } + ) def test_project_timesheet(self): - self._create_analytic_line( - self.project, self.task, '2020-01-01', False, 3) - self._create_analytic_line( - False, False, '2020-01-01', False, 1) + self._create_analytic_line(self.project, self.task, "2020-01-01", False, 3) + self._create_analytic_line(False, False, "2020-01-01", False, 1) invoice = self._contract_invoicing(self.contract) self.assertEqual(len(invoice.invoice_line_ids), 1) self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3) def test_task_timesheet(self): self.contract_line.qty_formula_id = self.env.ref( - 'contract_variable_qty_timesheet.' - 'contract_line_qty_formula_task_timesheet' + "contract_variable_qty_timesheet." + "contract_line_qty_formula_task_timesheet" ).id - self._create_analytic_line( - self.project, self.task, '2020-01-01', False, 3) - self._create_analytic_line( - self.project, False, '2020-01-01', False, 1) + self._create_analytic_line(self.project, self.task, "2020-01-01", False, 3) + self._create_analytic_line(self.project, False, "2020-01-01", False, 1) invoice = self._contract_invoicing(self.contract) self.assertEqual(len(invoice.invoice_line_ids), 1) self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3) def test_same_product(self): self.contract_line.qty_formula_id = self.env.ref( - 'contract_variable_qty_timesheet.' - 'contract_line_qty_formula_analytic_same_product' + "contract_variable_qty_timesheet." + "contract_line_qty_formula_analytic_same_product" ).id - self._create_analytic_line( - False, False, '2020-01-01', self.product, 3) - self._create_analytic_line( - self.project, False, '2020-01-01', False, 1) + self._create_analytic_line(False, False, "2020-01-01", self.product, 3) + self._create_analytic_line(self.project, False, "2020-01-01", False, 1) invoice = self._contract_invoicing(self.contract) self.assertEqual(len(invoice.invoice_line_ids), 1) self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3)