|
| 1 | +<?xml version='1.0' encoding='UTF-8'?> |
| 2 | +<odoo> |
| 3 | + <record id="field_various_material_budget" model="ir.model.fields"> |
| 4 | + <field name="name">x_various_materials_budget</field> |
| 5 | + <field name="ttype">monetary</field> |
| 6 | + <field name="copied" eval="True"/> |
| 7 | + <field name="field_description">Various Materials Budget</field> |
| 8 | + <field name="model_id" ref="sale.model_sale_order"/> |
| 9 | + <field name="currency_field">currency_id</field> |
| 10 | + </record> |
| 11 | + <record id="new_material_budget_related_field" model="ir.model.fields"> |
| 12 | + <field name="name">x_related_material_budget_field</field> |
| 13 | + <field name="ttype">monetary</field> |
| 14 | + <field name="related">sale_order_id.x_various_materials_budget</field> |
| 15 | + <field name="field_description">Materials Budget</field> |
| 16 | + <field name="model_id" ref="project.model_project_task"/> |
| 17 | + <field name="readonly" eval="True"/> |
| 18 | + <field name="store" eval="False"/> |
| 19 | + <field name="currency_field">currency_id</field> |
| 20 | + </record> |
| 21 | + <record id="x_task_field" model="ir.model.fields"> |
| 22 | + <field name="name">x_task_id</field> |
| 23 | + <field name="ttype">many2one</field> |
| 24 | + <field name="copied" eval="True"/> |
| 25 | + <field name="field_description">Task</field> |
| 26 | + <field name="model_id" ref="account.model_account_move"/> |
| 27 | + <field name="relation">project.task</field> |
| 28 | + </record> |
| 29 | + <record id="x_x_task_account_move_count_field" model="ir.model.fields"> |
| 30 | + <field name="name">x_x_task_account_move_count</field> |
| 31 | + <field name="compute"><![CDATA[ |
| 32 | +for record in self: |
| 33 | + record['x_x_task_account_move_count'] = self.env['account.move'].search_count([('x_task_id', '=', record.id)])]]></field> |
| 34 | + <field name="ttype">integer</field> |
| 35 | + <field name="field_description">Task count</field> |
| 36 | + <field name="model_id" ref="project.model_project_task"/> |
| 37 | + <field name="selectable" eval="False"/> |
| 38 | + <field name="store" eval="False"/> |
| 39 | + <field name="readonly" eval="True"/> |
| 40 | + </record> |
| 41 | + <record id="x_vendor_bills_field" model="ir.model.fields"> |
| 42 | + <field name="name">x_vendor_bills</field> |
| 43 | + <field name="compute"><![CDATA[ |
| 44 | +bills = self.env['account.move']._read_group(domain=[('x_task_id', 'in', self.ids)], groupby=['x_task_id'], aggregates=['amount_untaxed:sum']) |
| 45 | +mapped_data = {task.id: total for task, total in bills} |
| 46 | +for task in self: |
| 47 | + task['x_vendor_bills'] = mapped_data.get(task.id, 0)]]></field> |
| 48 | + <field name="ttype">monetary</field> |
| 49 | + <field name="field_description">Vendor Bills</field> |
| 50 | + <field name="model_id" ref="project.model_project_task"/> |
| 51 | + <field name="readonly" eval="True"/> |
| 52 | + <field name="selectable" eval="False"/> |
| 53 | + <field name="store" eval="False"/> |
| 54 | + <field name="currency_field">currency_id</field> |
| 55 | + </record> |
| 56 | + <record id="x_percent_bills_1_field" model="ir.model.fields"> |
| 57 | + <field name="name">x_percent_bills_1</field> |
| 58 | + <field name="compute"><![CDATA[ |
| 59 | +for task in self: |
| 60 | + task['x_percent_bills_1'] = task.x_vendor_bills / task.x_related_material_budget_field if task.x_related_material_budget_field else 0]]></field> |
| 61 | + <field name="ttype">float</field> |
| 62 | + <field name="depends">name</field> |
| 63 | + <field name="field_description">Percent bills</field> |
| 64 | + <field name="model_id" ref="project.model_project_task"/> |
| 65 | + <field name="readonly" eval="True"/> |
| 66 | + <field name="selectable" eval="False"/> |
| 67 | + <field name="store" eval="False"/> |
| 68 | + </record> |
| 69 | +</odoo> |
0 commit comments