Skip to content

Commit

Permalink
[MIG] contract_variable_qty_timesheet: Migration to 17.0
Browse files Browse the repository at this point in the history
  • Loading branch information
juanjosesegui-tecnativa committed Aug 16, 2024
1 parent 87f57c3 commit 435e0d7
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 31 deletions.
5 changes: 5 additions & 0 deletions contract_variable_qty_timesheet/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,16 @@ Contributors
- Carlos Dauden
- Pedro M. Baeza
- Carolina Fernandez
- Juan José Seguí

- `Guadaltech <https://www.guadaltech.es>`__:

- Fernando La Chica <[email protected]>

- `Coopdevs Treball <https://coopdevs.coop>`__:

- Daniel Palomar <[email protected]>>

Maintainers
-----------

Expand Down
2 changes: 1 addition & 1 deletion contract_variable_qty_timesheet/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
{
"name": "Contract Variable Qty Timesheet",
"summary": "Add formula to invoice ",
"version": "15.0.1.0.0",
"version": "17.0.1.0.0",
"category": "Contract Management",
"website": "https://github.com/OCA/contract",
"author": "Tecnativa, " "Odoo Community Association (OCA)",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
model="contract.line.qty.formula"
>
<field name='name'>Project Timesheets</field>
<field name="code">group = env['account.analytic.line'].read_group([
('account_id', '=', line.analytic_account_id.id),
<field name="code">
account_analytic_ids = line.analytic_distribution and [int(_id) for _id in list(line.analytic_distribution.keys())] or []
group = env['account.analytic.line'].read_group([
('account_id', 'in', account_analytic_ids),
('product_id', '=', False),
('project_id', '!=', False),
('date', '&gt;=', period_first_date),
Expand All @@ -23,8 +25,10 @@ result = group and group[0]['unit_amount'] or 0.0
model="contract.line.qty.formula"
>
<field name='name'>Task Timesheets</field>
<field name="code">group = env['account.analytic.line'].read_group([
('account_id', '=', line.analytic_account_id.id),
<field name="code">
account_analytic_ids = line.analytic_distribution and [int(_id) for _id in list(line.analytic_distribution.keys())] or []
group = env['account.analytic.line'].read_group([
('account_id', 'in', account_analytic_ids),
('product_id', '=', False),
('task_id', '!=', False),
('date', '&gt;=', period_first_date),
Expand All @@ -38,8 +42,10 @@ result = group and group[0]['unit_amount'] or 0.0
model="contract.line.qty.formula"
>
<field name='name'>Analytic Same Product</field>
<field name="code">group = env['account.analytic.line'].read_group([
('account_id', '=', line.analytic_account_id.id),
<field name="code">
account_analytic_ids = line.analytic_distribution and [int(_id) for _id in list(line.analytic_distribution.keys())] or []
group = env['account.analytic.line'].read_group([
('account_id', 'in', account_analytic_ids),
('product_id', '=', line.product_id.id),
('date', '&gt;=', period_first_date),
('date', '&lt;=', period_last_date),
Expand Down
3 changes: 3 additions & 0 deletions contract_variable_qty_timesheet/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@
- Carlos Dauden
- Pedro M. Baeza
- Carolina Fernandez
- Juan José Seguí
- [Guadaltech](https://www.guadaltech.es):
- Fernando La Chica \<<[email protected]>\>
- [Coopdevs Treball](https://coopdevs.coop):
- Daniel Palomar \<[email protected]>\>
5 changes: 5 additions & 0 deletions contract_variable_qty_timesheet/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -422,12 +422,17 @@ <h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<li>Carlos Dauden</li>
<li>Pedro M. Baeza</li>
<li>Carolina Fernandez</li>
<li>Juan José Seguí</li>
</ul>
</li>
<li><a class="reference external" href="https://www.guadaltech.es">Guadaltech</a>:<ul>
<li>Fernando La Chica &lt;<a class="reference external" href="mailto:fernandolachica&#64;gmail.com">fernandolachica&#64;gmail.com</a>&gt;</li>
</ul>
</li>
<li><a class="reference external" href="https://coopdevs.coop">Coopdevs Treball</a>:<ul>
<li>Daniel Palomar &lt;<a class="reference external" href="mailto:daniel.palomar&#64;coopdevs.org">daniel.palomar&#64;coopdevs.org</a>&gt;&gt;</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,37 +9,63 @@ class TestContractVariableQtyTimesheet(common.TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.partner = cls.env["res.partner"].create({"name": "Test partner"})
cls.company = cls.env.company
cls.partner = cls.env["res.partner"].create(
{"name": "Test partner", "company_id": cls.company.id}
)
cls.plan = cls.env["account.analytic.plan"].create({"name": "Test Plan"})
cls.analytic_account = cls.env["account.analytic.account"].create(
{"name": "Test analytic account"}
{
"name": "Test analytic account",
"plan_id": cls.plan.id,
"company_id": cls.company.id,
}
)
cls.contract = cls.env["contract.contract"].create(
{"name": "Test contract", "partner_id": cls.partner.id}
{
"name": "Test contract",
"partner_id": cls.partner.id,
"company_id": cls.company.id,
}
)
cls.product = cls.env["product.product"].create(
{"name": "Test product", "company_id": cls.company.id}
)
cls.employee = cls.env["hr.employee"].create(
{
"name": "Test Employee",
"company_id": cls.company.id,
}
)
cls.product = cls.env["product.product"].create({"name": "Test product"})
contract_line_vals = {
"name": "Test contract line",
"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",
"date_end": "2020-12-31",
"product_id": cls.product.id,
"qty_formula_id": cls.env.ref(
"contract_variable_qty_timesheet."
"contract_line_qty_formula_project_timesheet"
"contract_variable_qty_timesheet.contract_line_qty_formula_project_timesheet"
).id,
"sequence": 10,
"state": "in-progress",
"company_id": cls.company.id,
"qty_type": "variable",
"analytic_distribution": {str(cls.analytic_account.id): 100},
}
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}
{
"name": "Test project",
"analytic_account_id": cls.analytic_account.id,
"company_id": cls.company.id,
}
)
cls.task = cls.env["project.task"].create(
{"project_id": cls.project.id, "name": "Test task"}
{
"project_id": cls.project.id,
"name": "Test task",
"company_id": cls.company.id,
}
)

def _contract_invoicing(self, contract):
Expand All @@ -57,34 +83,34 @@ def _create_analytic_line(self, project, task, date, product, unit_amount):
"date": date,
"product_id": product and product.id,
"unit_amount": unit_amount,
"employee_id": self.employee.id,
"company_id": self.company.id,
}
)

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)
invoice = self._contract_invoicing(self.contract)
invoice = self.contract._recurring_create_invoice()
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)
invoice = self._contract_invoicing(self.contract)
invoice = self.contract._recurring_create_invoice()
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)
invoice = self._contract_invoicing(self.contract)
invoice = self.contract._recurring_create_invoice()
self.assertEqual(len(invoice.invoice_line_ids), 1)
self.assertAlmostEqual(invoice.invoice_line_ids.quantity, 3)
1 change: 1 addition & 0 deletions test-requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
odoo-addon-contract-variable-quantity @ git+https://github.com/OCA/contract.git@refs/pull/1103/head#subdirectory=contract_variable_quantity

0 comments on commit 435e0d7

Please sign in to comment.