Tower: upload tk_construction_management 18.0.2.0.8 (was 18.0.2.0.8, via marketplace)

This commit is contained in:
2026-05-08 19:20:12 +00:00
parent c412640ca2
commit 63c62699f5
174 changed files with 44759 additions and 0 deletions

View File

@@ -0,0 +1,430 @@
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data>
<!--Project Budget-->
<record id="sub_project_budget_view_form" model="ir.ui.view">
<field name="name">sub.project.budget.view.form</field>
<field name="model">sub.project.budget</field>
<field name="arch" type="xml">
<form create="false">
<header>
<field name="status" widget="statusbar" statusbar_visible="draft,waiting_approval,approved,in_progress"/>
<button name="action_department_approval" type="object" string="Department Approval" invisible="status != 'draft'"/>
<button name="action_approve_budget" type="object" string="Approve" class="btn btn-success" invisible="status != 'waiting_approval'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
<button name="action_reject_budget" type="object" string="Reject" class="btn btn-danger" invisible="status != 'waiting_approval'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
<button name="action_complete_budget" type="object" string="Complete" class="btn btn-primary" invisible="status != 'approved'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
<button name="action_reset_draft_budget" type="object" string="Reset to Draft" invisible="status not in ['reject', 'cancel']" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
<button name="action_cancel_budget" type="object" string="Cancel" class="btn btn-danger" invisible="status not in ['reject', 'waiting_approval']"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button class="oe_stat_button" type="object" name="action_view_budget_line" icon="fa-tasks">
<field name="budget_count" string="Budget Line" widget="statinfo"/>
</button>
</div>
<div class="row">
<div class="col-9">
<h1>
<field name="name" required="1" placeholder="Title"/>
</h1>
</div>
<div class="col-3" style="text-align:right;">
<field name="progress" widget="percentpie"/>
</div>
</div>
<group>
<group string="Project Details">
<field name="site_id" required="1" readonly="1" force_save="1"/>
<field name="sub_project_id" required="1" readonly="1" force_save="1"/>
<field name="company_id" required="1"/>
</group>
<group string="Other Details">
<field name="progress" invisible="1"/>
<field name="start_date" required="1" readonly="1" force_save="1"/>
<field name="end_date" required="1" readonly="1" force_save="1"/>
<field name="responsible_id" widget="many2one_avatar_user"/>
</group>
</group>
<group>
<group string="Budget Details">
<field name="total_budget_amount"/>
<field name="utilization_amount"/>
</group>
</group>
<group>
<field name="reject_reason" invisible="status != 'reject'"/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="sub_project_budget_view_tree" model="ir.ui.view">
<field name="name">sub.project.budget.view.tree</field>
<field name="model">sub.project.budget</field>
<field name="arch" type="xml">
<list create="false">
<field name="name"/>
<field name="site_id"/>
<field name="sub_project_id"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="total_budget_amount"/>
<field name="utilization_amount"/>
<field name="progress" widget="badge" decoration-info="progress"/>
</list>
</field>
</record>
<record id="sub_project_budget_action" model="ir.actions.act_window">
<field name="name">Sub Project Budget</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sub.project.budget</field>
<field name="view_mode">list,form,activity</field>
</record>
<!--Budget
Line-->
<record id="project_budget_view_tree" model="ir.ui.view">
<field name="name">project.budget.view.tree</field>
<field name="model">project.budget</field>
<field name="arch" type="xml">
<list create="false" editable="bottom" decoration-success="remaining_budget &gt; 0" decoration-danger="remaining_budget &lt; 0" decoration-primary="remaining_budget == 0">
<field name="job_type_id" required="1" readonly="1" force_save="1"/>
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
<field name="company_id" invisible="1"/>
<field name="currency_id" invisible="1"/>
<field name="project_id" invisible="1"/>
<field name="site_id" invisible="1"/>
<field name="boq_qty" readonly="1" force_save="1"/>
<field name="additional_qty"/>
<field name="total_qty" invisible="1"/>
<field name="rate_analysis_id" required="1" domain="[('activity_id','=',job_type_id),('sub_activity_id','=',sub_category_id),('project_id','=',project_id),('site_id','=',site_id)]"/>
<field name="price_per_qty" readonly="1" force_save="1"/>
<field name="untaxed_amount" readonly="1" force_save="1"/>
<field name="tax_amount" readonly="1" force_save="1"/>
<field name="budget" sum="budget" readonly="1" force_save="1"/>
<field name="material_spent" sum="material_spent"/>
<button name="action_view_material_budget" type="object" string=" " icon="fa-eye"/>
<field name="equipment_spent" sum="equipment_spent"/>
<button name="action_view_equipment_budget" type="object" string=" " icon="fa-eye"/>
<field name="labour_spent" sum="labour_spent"/>
<button name="action_view_labour_budget" type="object" string=" " icon="fa-eye"/>
<field name="overhead_spent" sum="overhead_spent"/>
<button name="action_view_overhead_budget" type="object" string=" " icon="fa-eye"/>
<field name="remaining_budget" sum="remaining_budget"/>
<field name="total_spent" widget="percentpie"/>
</list>
</field>
</record>
<record id="project_budget_view_form" model="ir.ui.view">
<field name="name">project.budget.view.form</field>
<field name="model">project.budget</field>
<field name="arch" type="xml">
<form create="false">
<sheet>
<div class="row">
<div class="col-8">
<h1>
<field name="job_type_id" required="1" placeholder="Work Type" readonly="1" force_save="1"/>
</h1>
<h5>
<field name="sub_category_id" placeholder="Work Sub Type" required="1" readonly="1" force_save="1"/>
</h5>
</div>
<div class="col-4" style="text-align:right;">
<field name="total_spent" widget="percentpie"/>
</div>
</div>
<br/>
<field name="company_id" invisible="1"/>
<field name="currency_id" invisible="1"/>
<group>
<group>
<field name="project_id" force_save="1" readonly="1" required="1"/>
</group>
</group>
<group>
<group string="Qty">
<field name="boq_qty" readonly="1" force_save="1"/>
<field name="additional_qty" readonly="1" force_save="1"/>
<field name="total_qty" readonly="1" force_save="1"/>
</group>
<group string="Budget">
<field name="rate_analysis_id" readonly="1" force_save="1"/>
<field name="untaxed_amount" readonly="1" force_save="1"/>
<field name="tax_amount" readonly="1" force_save="1"/>
<field name="price_per_qty" readonly="1" force_save="1"/>
</group>
</group>
<group>
<group string="Spent">
<field name="material_spent"/>
<field name="equipment_spent"/>
<field name="labour_spent"/>
<field name="overhead_spent"/>
</group>
<group string="Budget Spent">
<field name="budget"/>
<field name="remaining_budget"/>
<field name="boq_used_qty"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="project_budget_kanban_view" model="ir.ui.view">
<field name="name">project.budget.kanban.view</field>
<field name="model">project.budget</field>
<field name="arch" type="xml">
<kanban create="false">
<field name="job_type_id"/>
<field name="sub_category_id"/>
<field name="budget"/>
<field name="remaining_budget"/>
<field name="company_id"/>
<field name="currency_id"/>
<field name="material_spent"/>
<field name="equipment_spent"/>
<field name="labour_spent"/>
<field name="overhead_spent"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="row mb4">
<div class="col-5">
<h3>
<strong>
<field name="job_type_id" class="text-primary"/>
</strong>
</h3>
</div>
<div class="col-7" style="text-align:right;">
<field name="sub_category_id" widget="badge"/>
</div>
</div>
<hr style="margin: 5px 0px 5px 0px;"/>
<div class="row">
<div class="col-6">
<field name="currency_id" invisible="1"/> Budget: <br/>
<strong>
<field name="budget"/>
</strong>
</div>
<div class="col-6"> Remaining Budget: <br/>
<strong>
<field name="remaining_budget"/>
</strong>
</div>
</div>
<hr style="margin: 5px 0px 5px 0px;"/>
<h6 class="text-center text-primary">
<strong>
Budget Utilization
</strong>
</h6>
<hr style="margin: 5px 0px 5px 0px;"/>
<div class="row" style="padding: 0px 15px;">
<div class="col-5 p-2 m-2 bg-white rounded">
<img src="/tk_construction_management/static/src/img/material.svg" alt="Material" style="width:25px;height:25px;"/>
<strong class="ms-1">
Material
</strong>
<br/>
<field name="material_spent"/>
<button name="action_view_material_budget" type="object" string=" " class="btn btn-outline-dark border-0">
<i class="fa fa-external-link" role="img" aria-label="Warehouse" title="Warehouse"/>
</button>
</div>
<div class="col-1 p-0"/>
<div class="col-5 p-2 m-2 bg-white rounded">
<img src="/tk_construction_management/static/src/img/equip.svg" alt="Equipment" style="width:25px;height:25px;"/>
<strong class="ms-2">Equipment</strong>
<br/>
<field name="equipment_spent"/>
<button name="action_view_equipment_budget" type="object" class="btn btn-outline-dark border-0">
<i class="fa fa-external-link" role="img" aria-label="Warehouse" title="Warehouse"/>
</button>
</div>
<div class="col-5 p-2 m-2 bg-white rounded">
<img src="/tk_construction_management/static/src/img/overhead.svg" alt="Overhead" style="width:25px;height:25px;"/>
<strong class="ms-2">Overhead</strong>
<br/>
<field name="overhead_spent"/>
<button name="action_view_overhead_budget" type="object" class="btn btn-outline-dark border-0">
<i class="fa fa-external-link" role="img" aria-label="Warehouse" title="Warehouse"/>
</button>
</div>
<div class="col-1 p-0"/>
<div class="col-5 p-2 m-2 bg-white rounded">
<img src="/tk_construction_management/static/src/img/labour.svg" alt="Labour" style="width:25px;height:25px;"/>
<strong class="ms-2">Labour</strong>
<br/>
<field name="labour_spent"/>
<button name="action_view_labour_budget" type="object" class="btn btn-outline-dark border-0">
<i class="fa fa-external-link" role="img" aria-label="Warehouse" title="Warehouse"/>
</button>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="project_budget_view_search" model="ir.ui.view">
<field name="name">project.budget.view.search</field>
<field name="model">project.budget</field>
<field name="arch" type="xml">
<search>
<searchpanel>
<field name="job_type_id" icon="fa-filter" enable_counters="1"/>
<field name="sub_category_id" icon="fa-filter" enable_counters="1"/>
</searchpanel>
</search>
</field>
</record>
<!--Job
Order Material line-->
<record id="budget_job_order_material_view_tree" model="ir.ui.view">
<field name="name">budget.job.order.material.view.tree</field>
<field name="model">order.material.line</field>
<field name="arch" type="xml">
<list>
<field name="job_sheet_id"/>
<field name="job_order_id"/>
<field name="material_id"/>
<field name="name"/>
<field name="qty" sum="qty"/>
<field name="price"/>
<field name="total_price" sum="total_price"/>
<field name="uom_id"/>
</list>
</field>
</record>
<record id="budget_job_order_material_view_search" model="ir.ui.view">
<field name="name">budget.job.order.material.view.search</field>
<field name="model">order.material.line</field>
<field name="arch" type="xml">
<search>
<group expand="1" string="Group By">
<filter string="Product" name="group_by_product" context="{'group_by': 'material_id'}"/>
</group>
<searchpanel>
<field name="job_sheet_id" icon="fa-filter" enable_counters="1"/>
<field name="job_order_id" icon="fa-filter" enable_counters="1"/>
</searchpanel>
</search>
</field>
</record>
<!--Job
Order Equipment line-->
<record id="budget_job_order_equipment_view_tree" model="ir.ui.view">
<field name="name">budget.job.order.equipment.view.tree</field>
<field name="model">order.equipment.line</field>
<field name="arch" type="xml">
<list>
<field name="job_sheet_id"/>
<field name="job_order_id"/>
<field name="vendor_id"/>
<field name="equipment_id"/>
<field name="desc"/>
<field name="cost_type"/>
<field name="qty" sum="qty"/>
<field name="cost"/>
<field name="total_cost" sum="total_cost"/>
</list>
</field>
</record>
<record id="budget_job_order_equipment_view_search" model="ir.ui.view">
<field name="name">budget.job.order.equipment.view.search</field>
<field name="model">order.equipment.line</field>
<field name="arch" type="xml">
<search>
<group expand="1" string="Group By">
<filter string="Product" name="group_by_product" context="{'group_by': 'equipment_id'}"/>
<filter string="Vendor" name="group_by_vendor" context="{'group_by': 'vendor_id'}"/>
</group>
<searchpanel>
<field name="job_sheet_id" icon="fa-filter" enable_counters="1"/>
<field name="job_order_id" icon="fa-filter" enable_counters="1"/>
</searchpanel>
</search>
</field>
</record>
<!--Job
Order Labour line-->
<record id="budget_job_order_labour_view_tree" model="ir.ui.view">
<field name="name">budget.job.order.labour.view.tree</field>
<field name="model">order.labour.line</field>
<field name="arch" type="xml">
<list>
<field name="job_sheet_id"/>
<field name="job_order_id"/>
<field name="vendor_id"/>
<field name="product_id"/>
<field name="name"/>
<field name="hours"/>
<field name="cost" sum="cost"/>
<field name="sub_total" sum="sub_total"/>
</list>
</field>
</record>
<record id="budget_job_order_labour_view_search" model="ir.ui.view">
<field name="name">budget.job.order.labour.view.search</field>
<field name="model">order.labour.line</field>
<field name="arch" type="xml">
<search>
<group expand="1" string="Group By">
<filter string="Product" name="group_by_product" context="{'group_by': 'product_id'}"/>
<filter string="Vendor" name="group_by_vendor" context="{'group_by': 'vendor_id'}"/>
</group>
<searchpanel>
<field name="job_sheet_id" icon="fa-filter" enable_counters="1"/>
<field name="job_order_id" icon="fa-filter" enable_counters="1"/>
</searchpanel>
</search>
</field>
</record>
<!--Job
Order Overhead line-->
<record id="budget_job_order_overhead_view_tree" model="ir.ui.view">
<field name="name">budget.job.order.overhead.view.tree</field>
<field name="model">order.overhead.line</field>
<field name="arch" type="xml">
<list>
<field name="job_sheet_id"/>
<field name="job_order_id"/>
<field name="vendor_id"/>
<field name="product_id"/>
<field name="name"/>
<field name="qty" sum="qty"/>
<field name="uom_id"/>
<field name="cost" sum="cost"/>
<field name="sub_total" sum="sub_total"/>
</list>
</field>
</record>
<record id="budget_job_order_overhead_view_search" model="ir.ui.view">
<field name="name">budget.job.order.overhead.view.search</field>
<field name="model">order.overhead.line</field>
<field name="arch" type="xml">
<search>
<group expand="1" string="Group By">
<filter string="Product" name="group_by_product" context="{'group_by': 'product_id'}"/>
<filter string="Vendor" name="group_by_vendor" context="{'group_by': 'vendor_id'}"/>
</group>
<searchpanel>
<field name="job_sheet_id" icon="fa-filter" enable_counters="1"/>
<field name="job_order_id" icon="fa-filter" enable_counters="1"/>
</searchpanel>
</search>
</field>
</record>
</data>
</odoo>