Tower: upload tk_construction_management 18.0.2.0.8 (was 18.0.2.0.8, via marketplace)
This commit is contained in:
9
addons/tk_construction_management/views/assets.xml
Normal file
9
addons/tk_construction_management/views/assets.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="action_tk_construction_dashboard" model="ir.actions.client">
|
||||
<field name="name">Construction Management</field>
|
||||
<field name="tag">construction_dashboard</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!--Activity-->
|
||||
<record id="job_type_view_tree" model="ir.ui.view">
|
||||
<field name="name">job.type.view.tree</field>
|
||||
<field name="model">job.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<list editable="bottom">
|
||||
<field name="name" required="1"/>
|
||||
<field name="sub_category_ids" required="1" widget="many2many_tags"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="job_type_action" model="ir.actions.act_window">
|
||||
<field name="name">Work Type</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">job.type</field>
|
||||
<field name="view_mode">list</field>
|
||||
</record>
|
||||
<!--Sub Category-->
|
||||
<record id="job_category_view_tree" model="ir.ui.view">
|
||||
<field name="name">job.category.view.tree</field>
|
||||
<field name="model">job.sub.category</field>
|
||||
<field name="arch" type="xml">
|
||||
<list editable="bottom">
|
||||
<field name="name" required="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="job_category_action" model="ir.actions.act_window">
|
||||
<field name="name">Work Sub Type</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">job.sub.category</field>
|
||||
<field name="view_mode">list</field>
|
||||
</record>
|
||||
<!--Policy Risk-->
|
||||
<record id="policy_risk_view_tree" model="ir.ui.view">
|
||||
<field name="name">policy.risk.view.tree</field>
|
||||
<field name="model">insurance.risk</field>
|
||||
<field name="arch" type="xml">
|
||||
<list editable="bottom">
|
||||
<field name="name" required="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="policy_risk_action" model="ir.actions.act_window">
|
||||
<field name="name">Policy Risk</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">insurance.risk</field>
|
||||
<field name="view_mode">list</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,142 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="construction_department_view_form" model="ir.ui.view">
|
||||
<field name="name">construction.department.view.form</field>
|
||||
<field name="model">construction.department</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<h1>
|
||||
<field name="name" placeholder="Department Name" required="1"/>
|
||||
</h1>
|
||||
<group>
|
||||
<group>
|
||||
<field name="department_id" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Managers">
|
||||
<field name="manager_ids">
|
||||
<kanban class="o_kanban_mobile">
|
||||
<field name="id"/>
|
||||
<field name="name"/>
|
||||
<field name="login"/>
|
||||
<field name="active"/>
|
||||
<field name="partner_id"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div class="o_kanban_image">
|
||||
<img alt="Avatar"
|
||||
t-att-src="kanban_image('res.users', 'avatar_128', record.id.raw_value)"/>
|
||||
</div>
|
||||
<div class="oe_kanban_details">
|
||||
<ul>
|
||||
<li class="text-success float-end mb4"
|
||||
t-if="record.active.raw_value">
|
||||
<i class="fa fa-circle" role="img" aria-label="Ok"
|
||||
title="Ok"/>
|
||||
</li>
|
||||
<li class="text-danger float-end mb4"
|
||||
t-if="!record.active.raw_value">
|
||||
<i class="fa fa-circle" role="img" aria-label="Invalid"
|
||||
title="Invalid"/>
|
||||
</li>
|
||||
<li class="mb4">
|
||||
<strong>
|
||||
<field name="name"/>
|
||||
</strong>
|
||||
</li>
|
||||
<li class="mb4">
|
||||
<strong>
|
||||
<field name="partner_id"
|
||||
widget="many2one_clickable"/>
|
||||
</strong>
|
||||
</li>
|
||||
<li class="mb4" t-if="record.login.raw_value" title="Login">
|
||||
Email :
|
||||
<field name="login"/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Engineers">
|
||||
<field name="user_ids" required="1">
|
||||
<kanban class="o_kanban_mobile">
|
||||
<field name="id"/>
|
||||
<field name="name"/>
|
||||
<field name="login"/>
|
||||
<field name="active"/>
|
||||
<field name="partner_id"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div class="o_kanban_image">
|
||||
<img alt="Avatar"
|
||||
t-att-src="kanban_image('res.users', 'avatar_128', record.id.raw_value)"/>
|
||||
</div>
|
||||
<div class="oe_kanban_details">
|
||||
<ul>
|
||||
<li class="text-success float-end mb4"
|
||||
t-if="record.active.raw_value">
|
||||
<i class="fa fa-circle" role="img" aria-label="Ok"
|
||||
title="Ok"/>
|
||||
</li>
|
||||
<li class="text-danger float-end mb4"
|
||||
t-if="!record.active.raw_value">
|
||||
<i class="fa fa-circle" role="img" aria-label="Invalid"
|
||||
title="Invalid"/>
|
||||
</li>
|
||||
<li class="mb4">
|
||||
<strong>
|
||||
<field name="name"/>
|
||||
</strong>
|
||||
</li>
|
||||
<li class="mb4">
|
||||
<strong>
|
||||
<field name="partner_id"
|
||||
widget="many2one_clickable"/>
|
||||
</strong>
|
||||
</li>
|
||||
<li class="mb4" t-if="record.login.raw_value" title="Login">
|
||||
Email :
|
||||
<field name="login"/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_department_view_tree" model="ir.ui.view">
|
||||
<field name="name">construction.department.view.tree</field>
|
||||
<field name="model">construction.department</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="manager_ids" widget="many2many_tags"/>
|
||||
<field name="user_ids" widget="many2many_tags"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_department_action" model="ir.actions.act_window">
|
||||
<field name="name">Department</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">construction.department</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="construction_template_view_form" model="ir.ui.view">
|
||||
<field name="name">construction.template.view.form</field>
|
||||
<field name="model">construction.product.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<h1>
|
||||
<field name="name" required="1" placeholder="Title."/>
|
||||
</h1>
|
||||
<notebook>
|
||||
<page string="Template">
|
||||
<field name="template_ids">
|
||||
<list editable="bottom">
|
||||
<field name="product_id" required="1"/>
|
||||
<field name="name" required="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_template_view_tree" model="ir.ui.view">
|
||||
<field name="name">construction.template.view.tree</field>
|
||||
<field name="model">construction.product.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_template_action" model="ir.actions.act_window">
|
||||
<field name="name">Material Template</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">construction.product.template</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="construction_project_form_inherit" model="ir.ui.view">
|
||||
<field name="name">construction.project.form.inherit</field>
|
||||
<field name="model">project.task</field>
|
||||
<field name="inherit_id" ref="project.view_task_form2"/>
|
||||
<field name="priority" eval="8"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='project_id']" position="before">
|
||||
<field name="is_inspection_task" readonly="1" force_save="1"
|
||||
invisible="not is_inspection_task"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='tag_ids']" position="after">
|
||||
<field name="job_order_id"/>
|
||||
<field name="con_project_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="con_project_project_form" model="ir.ui.view">
|
||||
<field name="name">con.project.project.form</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field name="priority" eval="8"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='label_tasks']" position="after">
|
||||
<field name="construction_project_id" readonly="1" force_save="1"
|
||||
invisible="not construction_project_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_view_all_task_construction" model="ir.actions.act_window">
|
||||
<field name="name">Tasks</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="view_mode">kanban,list,form,calendar,pivot,graph,activity</field>
|
||||
<field name="context">{'search_default_stage': 1}</field>
|
||||
<field name="domain">[('con_project_id','!=',False)]</field>
|
||||
<field name="search_view_id" ref="project.view_task_search_form"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No tasks found. Let's create one!
|
||||
</p>
|
||||
<p>
|
||||
Organize your tasks by dispatching them across the pipeline.
|
||||
<br/>
|
||||
Collaborate efficiently by chatting in real-time or via email.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,391 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="constriction_project_view_form" model="ir.ui.view">
|
||||
<field name="name">construction.project.view.form</field>
|
||||
<field name="model">tk.construction.project</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<field name="id" invisible="1"/>
|
||||
<field name="stage" widget="statusbar"/>
|
||||
<button name="action_project_planning" type="object" string="Planning"
|
||||
invisible="stage != 'draft'"/>
|
||||
<button name="%(project_warehouse_action)d" type="action"
|
||||
string="Warehouse Selection" class="btn btn-primary"
|
||||
invisible="stage != 'Planning' or warehouse_id != False"/>
|
||||
<button name="%(budget_construction_action)d" type="action"
|
||||
string="Create Budget" class="btn btn-primary"
|
||||
invisible="stage != 'Planning' or budget_id != False"/>
|
||||
<button name="action_stage_procurement" type="object" string="Procurement"
|
||||
invisible="stage != 'Planning'"/>
|
||||
<button name="action_stage_construction" type="object"
|
||||
string="Start Construction"
|
||||
invisible="stage != 'Procurement'"/>
|
||||
<button name="%(project_phase_action)d" type="action"
|
||||
string="Create Project Phase (WBS)" class="btn btn-primary"
|
||||
invisible="stage != 'Construction'"/>
|
||||
<button name="action_stage_handover" type="object" string="Handover"
|
||||
invisible="stage != 'Construction'"/>
|
||||
<button name="action_print_budget_excel_report" type="object" string="Print Budget Excel Report"
|
||||
invisible="stage not in ['Handover','Construction']"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button class="oe_stat_button" type="object"
|
||||
name="action_view_project_task" icon="fa-tasks">
|
||||
<field name="task_count" string='Tasks' widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object"
|
||||
name="action_view_project_task_inspection" icon="fa-star">
|
||||
<field name="inspection_task_count" string='Inspection Tasks'
|
||||
widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object"
|
||||
name="action_view_job_sheet" icon="fa-files-o">
|
||||
<field name="job_sheet_count" string='Project Phase(WBS)'
|
||||
widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object"
|
||||
name="action_view_job_order" icon="fa-folder-open">
|
||||
<field name="job_order_count" string='Work Order' widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object"
|
||||
name="action_view_material_requisition" icon="fa-gears">
|
||||
<field name="mrq_count" string='Material Requisition'
|
||||
widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object"
|
||||
invisible="budget_id == False"
|
||||
name="action_view_budget" icon="fa-folder">
|
||||
<field name="budget_count" string='Budget' widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object"
|
||||
name="action_view_mrq_purchase_orders" icon="fa-list-ul">
|
||||
<field name="mrq_po_count" string='MRQ PO' widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object"
|
||||
name="action_view_jo_purchase_orders" icon="fa-list-ul">
|
||||
<field name="jo_po_count" string='Work Order PO' widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object" name="action_gmap_location"
|
||||
icon="fa-location-arrow" string="Map Location"
|
||||
invisible="longitude == False and latitude == False">
|
||||
</button>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-9">
|
||||
<h1>
|
||||
<field name="name" placeholder="Title" required="1"/>
|
||||
</h1>
|
||||
<h5>
|
||||
<field name="construction_site_id"
|
||||
placeholder="Construction Project" required="1"/>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-3" style="text-align:right;">
|
||||
<field name="project_progress" widget="percentpie"/>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code" required="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="warehouse_id" readonly="1" force_save="1"
|
||||
invisible="warehouse_id == False"/>
|
||||
<field name="project_id" readonly="1" force_save="1"
|
||||
invisible="project_id == False"/>
|
||||
<field name="budget_id" readonly="1" force_save="1"
|
||||
invisible="budget_id == False"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Department">
|
||||
<field name="department_id" required="1"/>
|
||||
<field name="manager_ids" required="1" widget="many2many_tags"/>
|
||||
<field name="user_id" required="1"/>
|
||||
</group>
|
||||
<group string="Duration">
|
||||
<field name="project_progress" invisible="1"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="responsible_id" widget="many2one_avatar_user"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Address">
|
||||
<group>
|
||||
<span class="o_form_label o_td_label" name="address_name">
|
||||
<b>Address</b>
|
||||
</span>
|
||||
<div class="o_address_format">
|
||||
<field name="street" placeholder="Street..."
|
||||
class="o_address_street"/>
|
||||
<field name="street2" placeholder="Street 2..."
|
||||
class="o_address_street"/>
|
||||
<field name="city" placeholder="City" class="o_address_city"/>
|
||||
<field name="state_id" class="o_address_state"
|
||||
placeholder="State"
|
||||
options="{'no_open': True, 'no_quick_create': True}"/>
|
||||
<field name="zip" placeholder="ZIP" class="o_address_zip"/>
|
||||
<field name="country_id" placeholder="Country"
|
||||
class="o_address_country"
|
||||
options="{'no_open': True, 'no_quick_create': True}"/>
|
||||
</div>
|
||||
</group>
|
||||
<group>
|
||||
<field name="longitude"/>
|
||||
<field name="latitude"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Engineers">
|
||||
<field name="engineer_ids">
|
||||
<kanban class="o_hr_employee_kanban"
|
||||
js_class="hr_employee_kanban" sample="1">
|
||||
<field name="id"/>
|
||||
<field name="hr_presence_state"/>
|
||||
<field name="user_id"/>
|
||||
<field name="user_partner_id"/>
|
||||
<field name="hr_icon_display"/>
|
||||
<field name="show_hr_icon_display"/>
|
||||
<field name="image_128"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div
|
||||
class="oe_kanban_global_click o_kanban_record_has_image_fill o_hr_kanban_record">
|
||||
<field name="image_1024"
|
||||
class="o_kanban_image_fill_left d-block"
|
||||
preview_image="image_128"
|
||||
widget="background_image"
|
||||
options="{'zoom': true, 'zoom_delay': 1000}"/>
|
||||
<div class="oe_kanban_details">
|
||||
<div class="o_kanban_record_top">
|
||||
<div class="o_kanban_record_headings">
|
||||
<strong
|
||||
class="o_kanban_record_title">
|
||||
<t
|
||||
t-if="record.show_hr_icon_display.raw_value">
|
||||
<div class="float-end"
|
||||
t-if="record.hr_icon_display.raw_value == 'presence_present'"
|
||||
name="presence_present">
|
||||
<span
|
||||
class="fa fa-circle text-success"
|
||||
role="img"
|
||||
aria-label="Present"
|
||||
title="Present"
|
||||
name="presence_present">
|
||||
</span>
|
||||
</div>
|
||||
<div class="float-end"
|
||||
t-if="record.hr_icon_display.raw_value == 'presence_absent'"
|
||||
name="presence_absent">
|
||||
<span
|
||||
class="fa fa-circle-o text-muted"
|
||||
role="img"
|
||||
aria-label="Absent"
|
||||
title="Absent"
|
||||
name="presence_absent">
|
||||
</span>
|
||||
</div>
|
||||
<div class="float-end"
|
||||
t-if="record.hr_icon_display.raw_value == 'presence_absent_active'"
|
||||
name="presence_absent_active">
|
||||
<span
|
||||
class="fa fa-circle-o text-success"
|
||||
role="img"
|
||||
aria-label="Present but not active"
|
||||
title="Present but not active"
|
||||
name="presence_absent_active">
|
||||
</span>
|
||||
</div>
|
||||
<div class="float-end"
|
||||
t-if="record.hr_icon_display.raw_value == 'presence_to_define'"
|
||||
name="presence_to_define">
|
||||
<span
|
||||
class="fa fa-circle text-warning"
|
||||
role="img"
|
||||
aria-label="To define"
|
||||
title="To define"
|
||||
name="presence_to_define">
|
||||
</span>
|
||||
</div>
|
||||
</t>
|
||||
<field name="name"
|
||||
placeholder="Employee's Name"/>
|
||||
</strong>
|
||||
<span
|
||||
t-if="record.job_title.raw_value"
|
||||
class="o_kanban_record_subtitle">
|
||||
<field name="job_title"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<field name="category_ids"
|
||||
widget="many2many_tags"
|
||||
options="{'color_field': 'color'}"
|
||||
groups="hr.group_hr_user"/>
|
||||
<ul>
|
||||
<li id="last_login"/>
|
||||
<li t-if="record.work_email.raw_value"
|
||||
class="o_text_overflow">
|
||||
<field name="work_email"/>
|
||||
</li>
|
||||
<li t-if="record.work_phone.raw_value"
|
||||
class="o_force_ltr">
|
||||
<field name="work_phone"/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div
|
||||
class="oe_kanban_content o_hr_employee_kanban_bottom position-absolute bottom-0 start-0 end-0 me-2 pe-none">
|
||||
<div class="o_kanban_record_bottom">
|
||||
<div class="oe_kanban_bottom_left"/>
|
||||
<div
|
||||
class="oe_kanban_bottom_right float-end pe-auto">
|
||||
<widget name="hr_employee_chat"/>
|
||||
<div
|
||||
class="hr_activity_container mb-1 me-n1">
|
||||
<field name="activity_ids"
|
||||
widget="kanban_activity"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Documents" name="building_documets">
|
||||
<field name="document_ids">
|
||||
<list editable="bottom">
|
||||
<field name="document_type_id" required="1"/>
|
||||
<field name="file_name" invisible="True"/>
|
||||
<field name="document" filename="file_name" widget="binary"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Insurance" name="building_insurance">
|
||||
<field name="policy_ids">
|
||||
<list editable="bottom">
|
||||
<field name="vendor_id" required="1"/>
|
||||
<field name="issue_date" required="1"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="policy_no" required="1"/>
|
||||
<field name="risk_ids" widget="many2many_tags"/>
|
||||
<field name="file_name" invisible="1"/>
|
||||
<field name="document" filename="file_name" widget="binary"/>
|
||||
<field name="total_charge" required="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="bill_id" readonly="1" force_save="1"
|
||||
widget="many2one_clickable"/>
|
||||
<button name="action_create_bil" type="object"
|
||||
string="Create Bill" class="btn btn-primary"
|
||||
invisible="bill_id != False"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Extra Expense">
|
||||
<field name="expense_ids">
|
||||
<list editable="bottom">
|
||||
<field name="date" required="1"/>
|
||||
<field name="vendor_id" required="1"/>
|
||||
<field name="product_id" required="1"/>
|
||||
<field name="note"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="cost" required="1"/>
|
||||
<field name="bill_id" readonly="1" force_save="1"
|
||||
widget="many2one_clickable"/>
|
||||
<button name="action_create_expense_bill" type="object"
|
||||
string="Create Bill" class="btn btn-primary"
|
||||
invisible="bill_id != False"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="BOQ">
|
||||
<group>
|
||||
<group>
|
||||
<field name="is_use_measure"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="boq_budget_ids"
|
||||
readonly="budget_id != False" force_save="1">
|
||||
<list editable="bottom">
|
||||
<field name="site_id" invisible="1"/>
|
||||
<field name="activity_id" required="1"/>
|
||||
<field name="sub_activity_ids" invisible="1"/>
|
||||
<field name="sub_activity_id" required="1"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="is_use_measure" invisible="1"/>
|
||||
<field name="length"
|
||||
column_invisible="not parent.is_use_measure" required="is_use_measure"/>
|
||||
<field name="width"
|
||||
column_invisible="not parent.is_use_measure" required="is_use_measure"/>
|
||||
<field name="height"
|
||||
column_invisible="not parent.is_use_measure" required="is_use_measure"/>
|
||||
<field name="total_qty" required="1"
|
||||
column_invisible="not parent.is_use_measure"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_project_view_tree" model="ir.ui.view">
|
||||
<field name="name">construction.project.view.tree</field>
|
||||
<field name="model">tk.construction.project</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="construction_site_id"/>
|
||||
<field name="code"/>
|
||||
<field name="warehouse_id"/>
|
||||
<field name="construction_site_id"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="department_id"/>
|
||||
<field name="project_progress" widget="progressbar" nolabel="1"/>
|
||||
<field name="stage" widget="badge" decoration-success="stage=='Handover'"
|
||||
decoration-primary="stage=='Procurement'"
|
||||
decoration-warning="stage=='Planning'"
|
||||
decoration-info="stage=='Construction'"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_project_view_search" model="ir.ui.view">
|
||||
<field name="name">construction.project.view.search</field>
|
||||
<field name="model">tk.construction.project</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Project" name="group_by_job_sheet"
|
||||
context="{'group_by': 'construction_site_id'}"/>
|
||||
<filter string="Department" name="group_by_department"
|
||||
context="{'group_by': 'department_id'}"/>
|
||||
</group>
|
||||
<searchpanel>
|
||||
<field name="stage" icon="fa-filter" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_project_action_act" model="ir.actions.act_window">
|
||||
<field name="name">Construction Sub Project</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">tk.construction.project</field>
|
||||
<field name="view_mode">list,form,activity</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="construction_res_user_form_inherit_view" model="ir.ui.view">
|
||||
<field name="name">construction.res.user.form.inherit.view</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//notebook" position="before">
|
||||
<group>
|
||||
<group>
|
||||
<field name="department_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,340 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="constriction_site_view_form" model="ir.ui.view">
|
||||
<field name="name">construction.site.view.form</field>
|
||||
<field name="model">tk.construction.site</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<field name="status" widget="statusbar"/>
|
||||
<button name="%(construction_site_project_action)d" type="action" string="Create Sub Project"
|
||||
invisible="status == 'complete'" class="btn btn-primary"/>
|
||||
<button name="action_site_complete" type="object" string="Complete"
|
||||
invisible="status != 'in_progress'" class="btn btn-primary"/>
|
||||
<button name="action_site_in_progress" type="object" string="In Progress"
|
||||
invisible="status != 'draft'" class="btn btn-primary"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button class="oe_stat_button"
|
||||
type="object"
|
||||
name="action_view_project"
|
||||
icon="fa-briefcase">
|
||||
<field name="project_count"
|
||||
string='Sub Projects'
|
||||
widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button"
|
||||
type="object"
|
||||
name="action_gmap_location"
|
||||
icon="fa-location-arrow"
|
||||
string="Map Location"
|
||||
invisible="longitude == False and latitude == False">
|
||||
</button>
|
||||
<button class="oe_stat_button"
|
||||
type="object"
|
||||
name="action_site_document"
|
||||
icon="fa-file-text">
|
||||
<field name="document_count"
|
||||
string='Documents'
|
||||
widget="statinfo"/>
|
||||
</button>
|
||||
</div>
|
||||
<h1>
|
||||
<field name="name" placeholder="Project Name" required="1"/>
|
||||
</h1>
|
||||
<br/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="warehouse_id" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Address">
|
||||
<span class="o_form_label o_td_label" name="address_name">
|
||||
<b>Address</b>
|
||||
</span>
|
||||
<div class="o_address_format">
|
||||
<field name="street" placeholder="Street..." class="o_address_street"/>
|
||||
<field name="street2" placeholder="Street 2..." class="o_address_street"/>
|
||||
<field name="city" placeholder="City" class="o_address_city"/>
|
||||
<field name="state_id" class="o_address_state" placeholder="State"
|
||||
options="{'no_open': True, 'no_quick_create': True}"/>
|
||||
<field name="zip" placeholder="ZIP" class="o_address_zip"/>
|
||||
<field name="country_id" placeholder="Country" class="o_address_country"
|
||||
options="{'no_open': True, 'no_quick_create': True}"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Duration">
|
||||
<field name="start_date" required="1"/>
|
||||
<field name="end_date" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Geographic Location">
|
||||
<field name="longitude"/>
|
||||
<field name="latitude"/>
|
||||
</group>
|
||||
<group string="Contact Details">
|
||||
<field name="phone" widget="phone"/>
|
||||
<field name="mobile" widget="phone"/>
|
||||
<field name="email" widget="email"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Sub Projects" name="con_project">
|
||||
<field name="construction_project_ids" readonly="1" force_save="1">
|
||||
<kanban>
|
||||
<field name="name"/>
|
||||
<field name="project_progress"/>
|
||||
<field name="code"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div class="row mb4">
|
||||
<div class="col-8">
|
||||
<h3>
|
||||
<field name="name" class="text-primary"/>
|
||||
</h3>
|
||||
<h6 t-if="record.warehouse_id.raw_value">
|
||||
<i class="fa fa-building-o" role="img"
|
||||
aria-label="Warehouse"
|
||||
title="Warehouse"/>
|
||||
<field name="warehouse_id" class="ms-1"/>
|
||||
</h6>
|
||||
<h6 t-if="record.department_id.raw_value">
|
||||
<i class="fa fa-users" role="img"
|
||||
aria-label="department"
|
||||
title="Department"/>
|
||||
<field name="department_id" class="ms-1"/>
|
||||
</h6>
|
||||
</div>
|
||||
<div class="col-4" style="text-align:right;">
|
||||
<field name="project_progress" widget="percentpie"
|
||||
nolabel="1"/>
|
||||
<field name="stage" widget="badge"
|
||||
decoration-success="stage=='Handover'"
|
||||
decoration-primary="stage=='Procurement'"
|
||||
decoration-warning="stage=='Planning'"
|
||||
decoration-info="stage=='Construction'"/>
|
||||
</div>
|
||||
</div>
|
||||
<hr style="margin: 5px 0px 5px 0px;"/>
|
||||
<h6 class="text-center text-primary">
|
||||
<strong>
|
||||
Project States
|
||||
</strong>
|
||||
</h6>
|
||||
<hr style="margin: 5px 0px 5px 0px;"/>
|
||||
<div class="row">
|
||||
<div class="col-6 mb4">
|
||||
<button name="action_view_budget"
|
||||
type="object"
|
||||
class="btn btn-outline-primary w-100"
|
||||
icon="fa-briefcase">
|
||||
Budget Analysis
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-6 mb4">
|
||||
<button class="btn btn-outline-primary w-100"
|
||||
type="object"
|
||||
name="action_view_job_sheet"
|
||||
icon="fa-files-o">
|
||||
Phase(WBS)
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-6 mb4">
|
||||
<button class="btn btn-outline-primary w-100"
|
||||
type="object"
|
||||
name="action_view_job_order"
|
||||
icon="fa-folder-open">
|
||||
Work Order
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-6 mb4">
|
||||
<button class="btn btn-outline-primary w-100"
|
||||
type="object"
|
||||
name="action_view_jo_purchase_orders"
|
||||
icon="fa-list-ul">
|
||||
Work Order PO
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-6 mb4">
|
||||
<button class="btn btn-outline-primary w-100"
|
||||
type="object"
|
||||
name="action_view_material_requisition"
|
||||
icon="fa-gears">
|
||||
MREQ
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-6 mb4">
|
||||
<button class="btn btn-outline-primary w-100"
|
||||
type="object"
|
||||
name="action_view_mrq_purchase_orders"
|
||||
icon="fa-list-ol">
|
||||
MREQ PO
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</page>
|
||||
<page string="StackHolder" name="construction_stakeholder">
|
||||
<field name="stakeholder_ids">
|
||||
<form>
|
||||
<group>
|
||||
<group>
|
||||
<field name="stakeholder_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="percentage"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
<kanban>
|
||||
<field name="id"/>
|
||||
<field name="stakeholder_id"/>
|
||||
<field name="percentage"/>
|
||||
<field name="phone"/>
|
||||
<field name="email"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<div class="o_kanban_image">
|
||||
<img alt="Contact image"
|
||||
t-att-src="kanban_image('stakeholder.line', 'image_1920', record.id.raw_value)"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6" style="padding-left: 0px;">
|
||||
<div class="oe_kanban_details">
|
||||
<field name="stakeholder_id"/>
|
||||
<div t-if="record.email.raw_value">
|
||||
<field name="email" widget="email"/>
|
||||
</div>
|
||||
<div t-if="record.phone.raw_value">Phone:
|
||||
<t t-esc="record.phone.value"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3"
|
||||
style="text-align:right;vertical-align:middle">
|
||||
<field name="percentage" widget="percentpie"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Images" name="site_images">
|
||||
<field name="site_image_ids">
|
||||
<form>
|
||||
<div class="oe_title float-left">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<div style="width:40%;height:40%;" class="float-right">
|
||||
<field name="image" style="width:40%;height:40%;"
|
||||
class="img-thumbnail float-right"
|
||||
widget="image" required="1"/>
|
||||
</div>
|
||||
</form>
|
||||
<kanban>
|
||||
<field name="id"/>
|
||||
<field name="name"/>
|
||||
<field name="image"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click border-0"
|
||||
style="width:333px;margin-top: -5px;margin-bottom: 0px;margin-right:-14px;">
|
||||
<img alt="Avtar"
|
||||
t-att-src="kanban_image('site.images','image',record.id.raw_value)"
|
||||
style="width:30rem;height:20rem;"
|
||||
class="img-thumbnail"/>
|
||||
<span style="font-size: 1.625rem;line-height: 1.625rem;min-height: 3.25rem;">
|
||||
<center style="background-color: whitesmoke;">
|
||||
<field name="name"/>
|
||||
</center>
|
||||
</span>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</page>
|
||||
<page name="site_dimension" string="Project Measurement">
|
||||
<field name="site_dimension_ids">
|
||||
<list editable="bottom">
|
||||
<field name="name" required="1"/>
|
||||
<field name="length" required="1"/>
|
||||
<field name="width" required="1"/>
|
||||
<field name="area" string="Area(m²)"/>
|
||||
</list>
|
||||
</field>
|
||||
<group>
|
||||
<group class="oe_subtotal_footer oe_right" style="text-align: right">
|
||||
<field name="total_area" string="Total Area(m²)"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Permits & Approvals" name="document_permit">
|
||||
<field name="document_permit_ids">
|
||||
<list editable="bottom">
|
||||
<field name="date"/>
|
||||
<field name="document_type_id" required="1"/>
|
||||
<field name="file_name" invisible="True"/>
|
||||
<field name="document" filename="file_name" widget="binary"/>
|
||||
<field name="submitted_by" required="1"/>
|
||||
<field name="feedback"/>
|
||||
<field name="status" widget="badge" decoration-success="status=='a'"
|
||||
decoration-danger="status=='r'"/>
|
||||
<button name="action_approve" type="object" string="Approve"
|
||||
invisible="status == 'a'" class="btn btn-success"/>
|
||||
<button name="action_reject" type="object" string="Reject"
|
||||
invisible="status == 'r'" class="btn btn-danger"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_site_view_tree" model="ir.ui.view">
|
||||
<field name="name">construction.site.tree.view</field>
|
||||
<field name="model">tk.construction.site</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="warehouse_id"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="city"/>
|
||||
<field name="country_id"/>
|
||||
<field name="status" widget="badge" decoration-success="status=='complete'"
|
||||
decoration-warning="status=='in_progress'"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_site_action" model="ir.actions.act_window">
|
||||
<field name="name">Construction Project</field>
|
||||
<field name="res_model">tk.construction.site</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="view_mode">list,form,activity</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
35
addons/tk_construction_management/views/document_view.xml
Normal file
35
addons/tk_construction_management/views/document_view.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!--Document View-->
|
||||
<record id="site_documents_view_tree" model="ir.ui.view">
|
||||
<field name="name">site.documents.view.tree</field>
|
||||
<field name="model">site.documents</field>
|
||||
<field name="arch" type="xml">
|
||||
<list editable="bottom">
|
||||
<field name="site_id" readonly="1" force_save="1"/>
|
||||
<field name="document_type_id" required="1"/>
|
||||
<field name="date"/>
|
||||
<field name="file_name" invisible="True"/>
|
||||
<field name="document" filename="file_name" widget="binary"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<!--Document Type-->
|
||||
<record id="document_type_view_tree" model="ir.ui.view">
|
||||
<field name="name">document.type.tree.view</field>
|
||||
<field name="model">site.document.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<list editable="bottom">
|
||||
<field name="name" required="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="site_document_type_action" model="ir.actions.act_window">
|
||||
<field name="name">Documents Types</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">site.document.type</field>
|
||||
<field name="view_mode">list</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,215 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="internal_transfer_view_form" model="ir.ui.view">
|
||||
<field name="name">internal.transfer.view.form</field>
|
||||
<field name="model">internal.transfer</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="stage" widget="statusbar"/>
|
||||
<field name="is_order_created" invisible="1"/>
|
||||
<field name="is_forward_transfer" invisible="1"/>
|
||||
<field name="delivery_order_check" invisible="1"/>
|
||||
<button name="action_ready_transfer"
|
||||
type="object"
|
||||
string="Ready for Transfer"
|
||||
class="btn btn-primary"
|
||||
invisible="stage != 'draft' or not internal_line_ids"/>
|
||||
<button name="action_complete_transfer" type="object" string="Done" class="btn btn-primary"
|
||||
invisible="stage != 'in_progress' or not delivery_order_check or not is_order_created"/>
|
||||
<button name="action_cancel_transfer" type="object" string="Cancel" class="btn btn-danger"
|
||||
confirm="Are you sure you want to cancel internal transfer ?"
|
||||
invisible="stage != 'in_progress' or is_order_created"/>
|
||||
<button name="action_forward_transfer"
|
||||
type="object"
|
||||
string="Create Forward Transfer"
|
||||
class="btn btn-primary"
|
||||
invisible="stage != 'done' or is_forward_transfer or forward_transfer_id != False"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button class="oe_stat_button"
|
||||
type="object"
|
||||
name="action_view_delivery_order"
|
||||
icon="fa-truck"
|
||||
invisible="delivery_count == 0">
|
||||
<field name="delivery_count"
|
||||
string='Delivery Orders'
|
||||
widget="statinfo"/>
|
||||
</button>
|
||||
</div>
|
||||
<h1>
|
||||
<field name="name" readonly="1" force_save="1"/>
|
||||
</h1>
|
||||
<h5>
|
||||
<field name="title" required="1"/>
|
||||
</h5>
|
||||
<br/>
|
||||
<group>
|
||||
<group string="Project Details">
|
||||
<field name="site_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="project_id" readonly="1" force_save="1"/>
|
||||
<field name="warehouse_id" invisible="1"/>
|
||||
<field name="company_id" required="1"/>
|
||||
</group>
|
||||
<group string="Other Details">
|
||||
<field name="date"/>
|
||||
<field name="responsible_id" widget="many2one_avatar_user"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Work Type & Project Phase(WBS)">
|
||||
<field name="work_type_id" readonly="1" force_save="1"/>
|
||||
<field name="job_sheet_id" readonly="1" force_save="1"/>
|
||||
<field name="work_order_id" readonly="1" force_save="1"/>
|
||||
<field name="material_req_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group string="Department">
|
||||
<field name="department_id" readonly="1" force_save="1"/>
|
||||
<field name="manager_ids" widget="many2many_tags" readonly="1" force_save="1"/>
|
||||
<field name="user_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<br/>
|
||||
<group string="Internal Transfer">
|
||||
<group>
|
||||
<field name="internal_ref" readonly="1" force_save="1"
|
||||
invisible="internal_ref == False"/>
|
||||
<field name="forward_transfer_id" readonly="1" force_save="1"
|
||||
invisible="forward_transfer_id == False"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Internal Transfer" name="internal_transfer">
|
||||
<field name="internal_line_ids" force_save="1" readonly="1">
|
||||
<form>
|
||||
<group>
|
||||
<group>
|
||||
<field name="delivery_order_id" readonly="1" force_save="1"
|
||||
invisible="delivery_order_id == False"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="sub_category_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Product">
|
||||
<group>
|
||||
<field name="product_id" required="1"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="uom_id" required="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="name" required="1"/>
|
||||
<field name="forcast_qty" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Warehouse">
|
||||
<group>
|
||||
<field name="pickup_warehouse_id" required="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="delivery_warehouse_id" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
<list decoration-success="state == 'done'" decoration-danger="state != 'done'">
|
||||
<field name="sub_category_id" required="1"/>
|
||||
<field name="product_id"/>
|
||||
<field name="name"/>
|
||||
<field name="qty"/>
|
||||
<field name="forcast_qty"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="pickup_warehouse_id"/>
|
||||
<field name="delivery_warehouse_id"/>
|
||||
<field name="delivery_order_id" readonly="1" force_save="1"
|
||||
widget="many2one_clickable"
|
||||
invisible="delivery_order_id == False"/>
|
||||
<field name="state" optional="show" widget="badge"
|
||||
decoration-danger="state=='cancel'" decoration-info="state== 'assigned'"
|
||||
decoration-muted="state == 'draft'" decoration-success="state == 'done'"
|
||||
decoration-warning="state not in ('draft','cancel','done','assigned')"/>
|
||||
</list>
|
||||
</field>
|
||||
<div class="row">
|
||||
<div class="col-12 text-end">
|
||||
<button name="action_internal_transfer"
|
||||
type="object"
|
||||
string="Create Internal Transfer"
|
||||
class="btn btn-primary"
|
||||
invisible="stage != 'in_progress' or is_order_created"/>
|
||||
</div>
|
||||
</div>
|
||||
</page>
|
||||
<page string="Additional Info" name="additional_info">
|
||||
<group string="Vehicle Details">
|
||||
<group>
|
||||
<field name="vehicle_no"/>
|
||||
<field name="model"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="vehicle_name"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Driver Details">
|
||||
<group>
|
||||
<field name="driver_name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="phone" widget="phone"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="internal_transfer_view_tree" model="ir.ui.view">
|
||||
<field name="name">internal.transfer.view.tree</field>
|
||||
<field name="model">internal.transfer</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="name"/>
|
||||
<field name="date"/>
|
||||
<field name="responsible_id" widget="many2one_avatar_user"/>
|
||||
<field name="company_id"/>
|
||||
<field name="stage" widget="badge"
|
||||
decoration-danger="stage=='cancel'"
|
||||
decoration-success="stage=='done'"
|
||||
decoration-warning="stage=='in_progress'"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="internal_transfer_view_search" model="ir.ui.view">
|
||||
<field name="name">internal.transfer.view.search</field>
|
||||
<field name="model">internal.transfer</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<searchpanel>
|
||||
<field name="stage" string="Status" enable_counters="1" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Date" name="group_by_date" context="{'group_by': 'date'}"/>
|
||||
<filter string="Forward Transfer" name="filter_by_date"
|
||||
domain="[('is_forward_transfer','=',True)]"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="internal_transfer_action" model="ir.actions.act_window">
|
||||
<field name="name">Internal Transfer</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">internal.transfer</field>
|
||||
<field name="view_mode">list,form,activity</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
235
addons/tk_construction_management/views/job_costing_view.xml
Normal file
235
addons/tk_construction_management/views/job_costing_view.xml
Normal file
@@ -0,0 +1,235 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="job_costing_view_form" model="ir.ui.view">
|
||||
<field name="name">job.costing.view.form</field>
|
||||
<field name="model">job.costing</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="status" widget="statusbar"
|
||||
statubar_visible="draft,waiting_approval,approved,in_progress,complete"/>
|
||||
<button name="%(wbs_entries_action)d" type="action" string="Create Phase(WBS) Entries"
|
||||
class="btn btn-primary"
|
||||
invisible="status != 'draft'"/>
|
||||
<button name="action_create_work_order" type="object" string="Create Work Order"
|
||||
confirm="Work orders default to forecasted quantities for materials, equipment, labor, and overhead. Please specify desired quantities to create work order."
|
||||
class="btn btn-primary"
|
||||
invisible="status != 'in_progress'"/>
|
||||
<button name="action_department_approval" type="object" string="Department Approval"
|
||||
class="btn btn-primary"
|
||||
invisible="status != 'draft'"/>
|
||||
<button name="action_approve_phase" 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_phase" type="object" string="Reject"
|
||||
class="btn btn-danger"
|
||||
groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"
|
||||
invisible="status != 'waiting_approval'"/>
|
||||
<button name="action_in_progress" type="object" string="In Progress" class="btn btn-primary"
|
||||
invisible="status != 'approved'"
|
||||
groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="action_reset_to_draft" type="object" string="Reset to Draft"
|
||||
invisible="status != 'reject'"/>
|
||||
<button name="action_cancel_phase" type="object" string="Cancel" class="btn btn-danger"
|
||||
invisible="status not in ['reject','in_progress','draft']"
|
||||
groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="action_complete_phase" type="object" string="Complete"
|
||||
invisible="status != 'in_progress'"
|
||||
groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button class="oe_stat_button"
|
||||
type="object"
|
||||
name="action_view_job_order"
|
||||
icon="fa-files-o">
|
||||
<field name="job_order_count"
|
||||
string='Work Order'
|
||||
widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button"
|
||||
type="object"
|
||||
name="action_view_mrq"
|
||||
icon="fa-gears">
|
||||
<field name="mrq_count"
|
||||
string='Material Requisition'
|
||||
widget="statinfo"/>
|
||||
</button>
|
||||
</div>
|
||||
<h1>
|
||||
<field name="name" readonly="1"/>
|
||||
</h1>
|
||||
<br/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="title" required="1" placeholder="Title"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Project Details">
|
||||
<field name="site_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="project_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="company_id"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
</group>
|
||||
<group string="Other Details">
|
||||
<field name="create_date" readonly="1" force_save="1"/>
|
||||
<field name="close_date" readonly="1" force_save="1"/>
|
||||
<field name="responsible_id" widget="many2one_avatar_user"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Work Type">
|
||||
<field name="activity_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="sub_work_type_ids" widget="many2many_tags" invisible="1"/>
|
||||
</group>
|
||||
<group string="Department">
|
||||
<field name="department_id" readonly="1" force_save="1"/>
|
||||
<field name="manager_ids" readonly="1" force_save="1" widget="many2many_tags"/>
|
||||
<field name="user_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Materials" name="cost_material">
|
||||
<field name="cost_material_ids" force_save="1"
|
||||
readonly="status != 'draft'">
|
||||
<list editable="bottom" create="false" delet="false">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="material_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="budget_qty"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="forcast_qty"/>
|
||||
<field name="remain_qty"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="cost" required="1" readonly="1" force_save="1"/>
|
||||
<field name="tax_id" readonly="1" force_save="1"/>
|
||||
<field name="total_cost"/>
|
||||
<field name="boq_per_qty" readonly="1" force_save="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Equipments" name="cost_equipment">
|
||||
<field name="cost_equipment_ids" force_save="1"
|
||||
readonly="status != 'draft'">
|
||||
<list editable="bottom" create="false" delete="false">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="equipment_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="cost_type" required="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="budget_qty"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="forcast_qty"/>
|
||||
<field name="remain_qty"/>
|
||||
<field name="cost" required="1" readonly="1" force_save="1"/>
|
||||
<field name="tax_id" readonly="1" force_save="1"/>
|
||||
<field name="total_cost"/>
|
||||
<field name="boq_per_qty" readonly="1" force_save="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Labours" name="cost_labour">
|
||||
<field name="cost_labour_ids" force_save="1"
|
||||
readonly="status != 'draft'">
|
||||
<list editable="bottom" create="false" delete="false">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="product_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="hours" widget="float_time"/>
|
||||
<field name="forcast_qty"/>
|
||||
<field name="remain_qty"/>
|
||||
<field name="budget_qty"/>
|
||||
<field name="cost" required="1" readonly="1" force_save="1"/>
|
||||
<field name="tax_id" readonly="1" force_save="1"/>
|
||||
<field name="sub_total"/>
|
||||
<field name="boq_per_qty" readonly="1" force_save="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Overheads" name="cost_overhead">
|
||||
<field name="cost_overhead_ids" force_save="1"
|
||||
readonly="status != 'draft'">
|
||||
<list editable="bottom" create="false" delete="false">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="product_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="budget_qty"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="forcast_qty"/>
|
||||
<field name="remain_qty"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="cost" required="1" readonly="1" force_save="1"/>
|
||||
<field name="tax_id" readonly="1" force_save="1"/>
|
||||
<field name="sub_total"/>
|
||||
<field name="boq_per_qty" readonly="1" force_save="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
<group>
|
||||
<group string="Actual Cost">
|
||||
<field name="material_actual_cost"/>
|
||||
<field name="equipment_actual_cost"/>
|
||||
<field name="labour_actual_cost"/>
|
||||
<field name="overhead_actual_cost"/>
|
||||
</group>
|
||||
<group class="oe_subtotal_footer oe_right" string="Total Cost">
|
||||
<field name="material_total_cost"/>
|
||||
<field name="equipment_total_cost"/>
|
||||
<field name="labour_total_cost"/>
|
||||
<field name="overhead_total_cost"/>
|
||||
</group>
|
||||
</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="job_costing_view_tree" model="ir.ui.view">
|
||||
<field name="name">job.costing.view.tree</field>
|
||||
<field name="model">job.costing</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="name"/>
|
||||
<field name="title"/>
|
||||
<field name="project_id"/>
|
||||
<field name="responsible_id" widget="many2one_avatar_user"/>
|
||||
<field name="company_id"/>
|
||||
<field name="create_date"/>
|
||||
<field name="close_date"/>
|
||||
<field name="status" widget="badge"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="job_costing_view_search" model="ir.ui.view">
|
||||
<field name="name">job.costing.view.search</field>
|
||||
<field name="model">job.costing</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<field name="title"/>
|
||||
<field name="company_id"/>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Department" name="group_by_department" context="{'group_by': 'department_id'}"/>
|
||||
<filter string="Project" name="group_by_project" context="{'group_by': 'project_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="job_costing_action" model="ir.actions.act_window">
|
||||
<field name="name">Project Phases</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">job.costing</field>
|
||||
<field name="view_mode">list,form,search,activity</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
283
addons/tk_construction_management/views/job_order_view.xml
Normal file
283
addons/tk_construction_management/views/job_order_view.xml
Normal file
@@ -0,0 +1,283 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="job_order_view_form" model="ir.ui.view">
|
||||
<field name="name">job.order.view.form</field>
|
||||
<field name="model">job.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="state" widget="statusbar"/>
|
||||
<field name="id" invisible="1"/>
|
||||
<field name="is_material_requisition" invisible="1"/>
|
||||
<field name="is_user" invisible="1"/>
|
||||
<button name="action_request_material" type="object" string="Material Request" class="btn btn-primary" invisible="not id or (state != 'draft' or not is_material_requisition)"/>
|
||||
<button name="action_in_progress" type="object" string="In Progress" class="btn btn-primary" invisible="state != 'material_arrive'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="action_in_progress" type="object" string="In Progress" class="btn btn-primary" invisible="is_material_requisition or state != 'draft'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="action_complete_work_order" type="object" string="Complete" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" class="btn btn-primary" invisible="state != 'in_progress'"/>
|
||||
<button name="action_reset_draft" type="object" string="Reset to Draft" invisible="state not in ['complete', 'cancel']" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button class="oe_stat_button" type="object" name="action_view_purchase_order" icon="fa-credit-card" invisible="po_count == 0">
|
||||
<field name="po_count" string="Purchase Order" widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object" name="action_view_bills" icon="fa-money" invisible="bill_count == 0">
|
||||
<field name="bill_count" string="Bills" widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object" name="action_view_delivery_order" icon="fa-truck" invisible="delivery_count == 0">
|
||||
<field name="delivery_count" string="Delivery Orders" widget="statinfo"/>
|
||||
</button>
|
||||
</div>
|
||||
<h1>
|
||||
<field name="name" readonly="1"/>
|
||||
</h1>
|
||||
<h5>
|
||||
<field name="title" required="1" placeholder="Title"/>
|
||||
</h5>
|
||||
<br/>
|
||||
<group>
|
||||
<group string="Project Details">
|
||||
<field name="site_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="project_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="company_id" force_save="1" readonly="state in ['complete', 'cancel']"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="warehouse_id"/>
|
||||
</group>
|
||||
<group string="Other Details">
|
||||
<field name="start_date" required="1" force_save="1" readonly="state in ['complete', 'cancel']"/>
|
||||
<field name="end_date" required="1" force_save="1" readonly="state in ['complete', 'cancel']"/>
|
||||
<field name="responsible_id" required="1" widget="many2one_avatar_user" force_save="1" readonly="state in ['complete', 'cancel']"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Work Type & Phase(WBS)">
|
||||
<field name="work_type_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="job_sheet_id" required="1" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group string="Department Details">
|
||||
<field name="department_id" readonly="1" force_save="1"/>
|
||||
<field name="manager_ids" readonly="1" force_save="1" widget="many2many_tags"/>
|
||||
<field name="user_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Task Details">
|
||||
<group>
|
||||
<group>
|
||||
<field name="project_project_id"/>
|
||||
<field name="task_name" required="1" placeholder="Task Title" force_save="1" readonly="state in ['complete', 'cancel']"/>
|
||||
<field name="assignees_ids" widget="many2many_tags" reaquired="1" force_save="1" readonly="state in ['complete', 'cancel']"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="task_id" readonly="1" force_save="1" invisible="not task_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="task_desc" required="1" placeholder="Task Description" force_save="1" readonly="state in ['complete', 'cancel']"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Required Materials" name="order_material">
|
||||
<div class="row" invisible="state in ['draft', 'material_request', 'cancel']">
|
||||
<div class="col-6 text-start">
|
||||
<button name="action_create_material_consume_order" type="object" invisible="state not in ['in_progress']" string="Create Consume Order" class="btn btn-primary" confirm="Are you sure you want to create consume order"/>
|
||||
</div>
|
||||
<div class="col-6 text-end">
|
||||
<button class="btn btn-outline-dark" type="object" name="action_view_material_consume_order" invisible="state not in ['in_progress', 'complete']">
|
||||
<span class="badge badge-dark border border-dark me-1">
|
||||
<field name="material_consume_count" nolabel="1"/>
|
||||
</span>
|
||||
View Consume Orders
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="material_req_id" readonly="1" force_save="1" invisible="not material_req_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="material_order_ids" readonly="state in ['in_progress', 'complete', 'cancel', 'material_request']">
|
||||
<list editable="bottom" create="false" delete="false" decoration-success="phase_forcast_qty > qty" decoration-warning="qty > phase_forcast_qty">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="material_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="qty" required="1" readonly="state == 'material_arrive'"/>
|
||||
<field name="usage_qty" required="1" readonly="1" force_save="1"/>
|
||||
<field name="remain_qty" required="1" readonly="1" force_save="1"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="price" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="tax_id" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="total_price" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="phase_forcast_qty" invisible="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Required Equipments" name="order_equipment">
|
||||
<div class="row">
|
||||
<div class="col-6 text-start">
|
||||
<button name="action_create_equipment_subcontract" type="object" string="Create Subcontract" class="btn btn-primary" invisible="state != 'in_progress'"/>
|
||||
</div>
|
||||
<div class="col-6 text-end">
|
||||
<button class="btn btn-outline-dark" type="object" name="action_view_contract_equipment" invisible="state not in ['in_progress', 'complete']">
|
||||
<span class="badge badge-dark border border-dark me-1">
|
||||
<field name="equip_contract_count" nolabel="1"/>
|
||||
</span>
|
||||
View Contract
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<field name="equipment_order_ids" force_save="1" readonly="state in ['in_progress', 'complete', 'cancel']">
|
||||
<list editable="bottom" create="false" delete="false" decoration-success="phase_forcast_qty > qty" decoration-warning="qty > phase_forcast_qty">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="vendor_id" required="1"/>
|
||||
<field name="equipment_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="cost_type" required="1"/>
|
||||
<field name="desc" required="1" readonly="1" force_save="1"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="cost" required="1" readonly="1" force_save="1" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="tax_id" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="total_cost" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="equip_sub_contract_id" readonly="1" force_save="1" widget="many2one_clickable"/>
|
||||
<field name="phase_forcast_qty" invisible="1"/>
|
||||
<field name="job_sheet_id" invisible="1"/>
|
||||
<field name="project_id" invisible="1"/>
|
||||
<field name="work_type_id" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
</list>
|
||||
</field>
|
||||
<group class="oe_subtotal_footer oe_right">
|
||||
<field name="equipment_total_cost" class="oe_subtotal_footer_separator"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Required Labours" name="order_labour">
|
||||
<div class="row">
|
||||
<div class="col-6 text-start">
|
||||
<button name="action_create_labour_subcontract" type="object" string="Create Subcontract" class="btn btn-primary" invisible="state != 'in_progress'"/>
|
||||
</div>
|
||||
<div class="col-6 text-end">
|
||||
<button class="btn btn-outline-dark" type="object" name="action_view_contract_labour" invisible="state not in ['in_progress', 'complete']">
|
||||
<span class="badge badge-dark border border-dark me-1">
|
||||
<field name="labour_contract_count" nolabel="1"/>
|
||||
</span>
|
||||
View Subcontract
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<field name="labour_order_ids" create="false" delete="false" readonly="state in ['in_progress', 'complete', 'cancel']">
|
||||
<list editable="bottom" decoration-success="phase_forcast_qty > hours" decoration-warning="hours > phase_forcast_qty">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="vendor_id" required="1"/>
|
||||
<field name="product_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="hours" widget="float_time"/>
|
||||
<field name="remain_hours" widget="float_time" readonly="1" force_save="1"/>
|
||||
<field name="cost" required="1" readonly="1" force_save="1" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="tax_id" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="sub_total" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="labour_sub_contract_id" readonly="1" force_save="1" widget="many2one_clickable"/>
|
||||
<field name="phase_forcast_qty" invisible="1"/>
|
||||
<field name="job_sheet_id" invisible="1"/>
|
||||
<field name="project_id" invisible="1"/>
|
||||
<field name="work_type_id" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
</list>
|
||||
</field>
|
||||
<group class="oe_subtotal_footer oe_right">
|
||||
<field name="labour_total_cost" class="oe_subtotal_footer_separator"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Required Overheads" name="order_overhead">
|
||||
<div class="row">
|
||||
<div class="col-6 text-start">
|
||||
<button name="action_create_overhead_subcontract" type="object" string="Create Subcontract" class="btn btn-primary" invisible="state != 'in_progress'"/>
|
||||
</div>
|
||||
<div class="col-6 text-end">
|
||||
<button class="btn btn-outline-dark" type="object" name="action_view_contract_overhead" invisible="state not in ['in_progress', 'complete']">
|
||||
<span class="badge badge-dark border border-dark me-1">
|
||||
<field name="overhead_contract_count" nolabel="1"/>
|
||||
</span>
|
||||
View Subcontract
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<field name="overhead_order_ids" create="false" delete="false" readonly="state in ['in_progress', 'complete', 'cancel']">
|
||||
<list editable="bottom" decoration-success="phase_forcast_qty > qty" decoration-warning="qty > phase_forcast_qty">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="vendor_id" required="1"/>
|
||||
<field name="product_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="cost" required="1" readonly="1" force_save="1" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="tax_id" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="sub_total" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="overhead_sub_contract_id" readonly="1" force_save="1" widget="many2one_clickable"/>
|
||||
<field name="phase_forcast_qty" invisible="1"/>
|
||||
<field name="job_sheet_id" invisible="1"/>
|
||||
<field name="project_id" invisible="1"/>
|
||||
<field name="work_type_id" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
</list>
|
||||
</field>
|
||||
<group class="oe_subtotal_footer oe_right">
|
||||
<field name="overhead_total_cost" class="oe_subtotal_footer_separator"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="job_order_view_tree" model="ir.ui.view">
|
||||
<field name="name">job.order.view.tree</field>
|
||||
<field name="model">job.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="name"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="job_sheet_id"/>
|
||||
<field name="company_id"/>
|
||||
<field name="project_id"/>
|
||||
<field name="state" widget="badge"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="job_order_view_search" model="ir.ui.view">
|
||||
<field name="name">job.order.view.search</field>
|
||||
<field name="model">job.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<field name="job_sheet_id"/>
|
||||
<field name="project_id"/>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Phase(WBS)" name="group_by_job_sheet" context="{'group_by': 'job_sheet_id'}"/>
|
||||
<filter string="Department" name="group_by_department" context="{'group_by': 'department_id'}"/>
|
||||
<filter string="Project" name="group_by_project" context="{'group_by': 'project_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="job_order_action" model="ir.actions.act_window">
|
||||
<field name="name">Work Orders</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">job.order</field>
|
||||
<field name="view_mode">list,form,activity</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,282 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="material_requisition_view_form" model="ir.ui.view">
|
||||
<field name="name">material.requisition.view.form</field>
|
||||
<field name="model">material.requisition</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="allow_resubmit" invisible="1"/>
|
||||
<field name="is_back_order" invisible="1"/>
|
||||
<field name="po_created" invisible="1"/>
|
||||
<field name="delivery_ready" invisible="1"/>
|
||||
<field name="is_any_back_order" invisible="1"/>
|
||||
<field name="stage" widget="statusbar" statusbar_visible="draft,department_approval,approve,material_arrived,internal_transfer,ready_delivery"/>
|
||||
<button name="action_department_approval" type="object" string="Department Approval" class="btn btn-primary" invisible="stage != 'draft'"/>
|
||||
<button name="action_approve_requisition" type="object" string="Approve" class="btn btn-success" invisible="stage != 'department_approval'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="%(requisition_reject_action)d" type="action" string="Reject" class="btn btn-danger" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" invisible="stage != 'department_approval'"/>
|
||||
<button name="action_draft_requisition" type="object" string="Draft" invisible="stage != 'reject' or not allow_resubmit"/>
|
||||
<button name="action_draft_requisition" type="object" string="Draft" invisible="stage != 'ready_delivery'"/>
|
||||
<button name="action_create_purchase_order" type="object" string="Create PO" invisible="po_created or stage != 'approve'" class="btn btn-primary" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="action_ready_delivery" type="object" string="Ready for Delivery" invisible="not delivery_ready or stage != 'approve'" class="btn btn-primary" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="action_create_back_order" type="object" string="Create Back Order" class="btn btn-primary" invisible="back_order_id or (is_back_order or (stage in ['draft', 'department_approval'] or not is_any_back_order))" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="action_create_internal_transfer" type="object" string="Create Internal Transfer" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" class="btn btn-primary" invisible="stage != 'ready_delivery' or not material_transfer_ids"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button class="oe_stat_button" type="object" name="action_view_purchase_order" icon="fa-credit-card" invisible="po_count == 0">
|
||||
<field name="po_count" string="Purchase Order" widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object" name="action_view_bills" icon="fa-money" invisible="bill_count == 0">
|
||||
<field name="bill_count" string="Bills" widget="statinfo"/>
|
||||
</button>
|
||||
<button class="oe_stat_button" type="object" name="action_view_delivery_order" icon="fa-truck" invisible="delivery_count == 0">
|
||||
<field name="delivery_count" string="Delivery Orders" widget="statinfo"/>
|
||||
</button>
|
||||
</div>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
<h5>
|
||||
<field name="title" required="1" placeholder="Title"/>
|
||||
</h5>
|
||||
<group>
|
||||
<group string="Project Details">
|
||||
<field name="site_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="project_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="warehouse_id"/>
|
||||
<field name="company_id"/>
|
||||
</group>
|
||||
<group string="Other Details">
|
||||
<field name="date"/>
|
||||
<field name="responsible_id" widget="many2one_avatar_user"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Work Type & Project Phase">
|
||||
<field name="work_type_id" readonly="1" force_save="1"/>
|
||||
<field name="work_order_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="job_sheet_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group string="Department">
|
||||
<field name="department_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="manager_ids" required="1" widget="many2many_tags" readonly="1" force_save="1"/>
|
||||
<field name="user_id" required="1" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<br/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="internal_transfer_id" force_save="1" readonly="1" invisible="not internal_transfer_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="material_req_ref" readonly="1" force_save="1" invisible="not material_req_ref"/>
|
||||
<field name="back_order_id" readonly="1" invisible="not back_order_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Material Requisition" name="material_requisition">
|
||||
<field name="material_line_ids" context="{'default_warehouse_id':warehouse_id,'default_job_sheet_id':job_sheet_id}" readonly="stage in ['ready_delivery', 'reject', 'internal_transfer', 'material_arrived']">
|
||||
<form>
|
||||
<group>
|
||||
<group>
|
||||
<field name="material_id"/>
|
||||
<field name="qty"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="warehouse_id" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="sub_category_id"/>
|
||||
<field name="forcast_qty" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="operation_type" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
<list editable="bottom" create="false" delete="false">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="job_sheet_id" required="1" invisible="1"/>
|
||||
<field name="material_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="forcast_check" invisible="1"/>
|
||||
<field name="qty" required="1" readonly="1" force_save="1"/>
|
||||
<field name="remain_qty" readonly="1" force_save="1" invisible="1"/>
|
||||
<field name="forcast_qty" required="1" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="is_created" invisible="1"/>
|
||||
<field name="stage" invisible="1"/>
|
||||
<field name="warehouse_id" required="1" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<field name="operation_type" required="1" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="validate_material_line" type="object" string="Validate" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" class="btn btn-primary" invisible="stage != 'department_approval' or (is_created or forcast_check)"/>
|
||||
|
||||
</list>
|
||||
</field>
|
||||
<div class="row">
|
||||
<div class="col-12 text-end">
|
||||
<button name="validate_material_line_all" type="object" string="Validate All" invisible="stage != 'department_approval'" class="btn btn-primary" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</div>
|
||||
</div>
|
||||
</page>
|
||||
<page string="Material Purchase" name="material_purchase" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department">
|
||||
<field name="material_purchase_ids" readonly="stage in ['ready_delivery', 'reject', 'internal_transfer', 'material_arrived']">
|
||||
<form>
|
||||
<group>
|
||||
<group>
|
||||
<field name="job_sheet_id" invisible="not job_sheet_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="sub_category_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Product">
|
||||
<group>
|
||||
<field name="product_id"/>
|
||||
<field name="qty"/>
|
||||
<field name="uom_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="forcast_qty"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="price"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="total_price"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Warehouse">
|
||||
<group>
|
||||
<field name="purchase_warehouse_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Vendor">
|
||||
<group>
|
||||
<field name="vendor_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="purchase_order_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
<list editable="bottom" decoration-danger="qty > forcast_qty" create="false" delete="false">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="job_sheet_id" required="1" invisible="1"/>
|
||||
<field name="product_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="qty" required="1" readonly="1" force_save="1"/>
|
||||
<field name="forcast_qty" required="1"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="price" required="1"/>
|
||||
<field name="total_price"/>
|
||||
<field name="purchase_warehouse_id" required="1"/>
|
||||
<field name="vendor_id" required="1"/>
|
||||
<field name="purchase_order_id" readonly="1" force_save="1" widget="many2one_clickable"/>
|
||||
<field name="status" widget="badge" decoration-danger="status=='incomplete'" decoration-info="status=='partial_complete'" decoration-success="status=='complete'"/>
|
||||
</list>
|
||||
</field>
|
||||
<div class="row">
|
||||
<field name="line_added" invisible="1"/>
|
||||
<div class="col-12 text-end">
|
||||
<button name="action_insert_internal_transfer" type="object" class="btn btn-primary" invisible="stage != 'approve' or (not delivery_ready or line_added)" string="Add to Internal Transfer"/>
|
||||
</div>
|
||||
</div>
|
||||
</page>
|
||||
<page string="Internal Transfer" name="material_internal_transfer" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department">
|
||||
<field name="material_transfer_ids" readonly="stage in ['ready_delivery', 'reject', 'internal_transfer', 'material_arrived']">
|
||||
<form>
|
||||
<group>
|
||||
<group>
|
||||
<field name="sub_category_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="product_id"/>
|
||||
<field name="qty"/>
|
||||
<field name="pickup_warehouse_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="forcast_qty"/>
|
||||
<field name="delivery_warehouse_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
<list editable="bottom" decoration-danger="qty > forcast_qty" create="false" delete="false">
|
||||
<field name="sub_category_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="job_sheet_id" required="1" invisible="1"/>
|
||||
<field name="product_id" required="1" readonly="1" force_save="1"/>
|
||||
<field name="name" required="1" readonly="1" force_save="1"/>
|
||||
<field name="pickup_warehouse_id" required="1"/>
|
||||
<field name="delivery_warehouse_id" required="1"/>
|
||||
<field name="qty" required="1" readonly="1" force_save="1"/>
|
||||
<field name="forcast_qty" required="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Description">
|
||||
<field name="desc" placeholder="Description / Justification"/>
|
||||
</page>
|
||||
<page string="Reject Reason" invisible="stage != 'reject'">
|
||||
<field name="reject_reason"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="material_requisition_view_tree" model="ir.ui.view">
|
||||
<field name="name">material.requisition.view.tree</field>
|
||||
<field name="model">material.requisition</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="name"/>
|
||||
<field name="date"/>
|
||||
<field name="company_id"/>
|
||||
<field name="project_id"/>
|
||||
<field name="project_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="manager_ids" widget="many2many_tags"/>
|
||||
<field name="responsible_id" widget="many2one_avatar_user"/>
|
||||
<field name="stage" widget="badge" decoration-success="stage in ['delivery_order','internal_transfer']" decoration-info="stage in ['approve']" decoration-warning="stage=='department_approval'" decoration-danger="stage in ['reject','cancel']" decoration-primary="stage in ['ready_delivery','material_arrived']"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="material_requisition_view_search" model="ir.ui.view">
|
||||
<field name="name">material.requisition.view.search</field>
|
||||
<field name="model">material.requisition</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<field name="project_id"/>
|
||||
<field name="internal_transfer_id"/>
|
||||
<searchpanel>
|
||||
<field name="stage" string="Status" enable_counters="1" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Back Orders" name="filter_by_back_order" domain="[('is_back_order','=',True)]"/>
|
||||
<filter string="Project" name="group_by_project" context="{'group_by': 'project_id'}"/>
|
||||
<filter string="Department" name="group_by_department" context="{'group_by': 'department_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="material_requisition_action" model="ir.actions.act_window">
|
||||
<field name="name">Material Requisition</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">material.requisition</field>
|
||||
<field name="view_mode">list,form,activity,search</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
148
addons/tk_construction_management/views/menus.xml
Normal file
148
addons/tk_construction_management/views/menus.xml
Normal file
@@ -0,0 +1,148 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!--Root Menu-->
|
||||
<menuitem name="Construction" id="menu_advance_construction_root" sequence="-1"
|
||||
web_icon="tk_construction_management,static/description/icon.png"/>
|
||||
|
||||
<!--Dashboard Menu-->
|
||||
<menuitem name="Dashboard" id="menu_construction_dashboard" action="action_tk_construction_dashboard"
|
||||
sequence="0" parent="menu_advance_construction_root"
|
||||
groups="tk_construction_management.advance_construction_manager"/>
|
||||
|
||||
<!--Construction Site-->
|
||||
<menuitem id="menu_construction_site" name="Projects" parent="menu_advance_construction_root" sequence="1"
|
||||
action="construction_site_action"
|
||||
groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_user"/>
|
||||
|
||||
<!--Construction Project-->
|
||||
<menuitem id="menu_advance_con_project" name="Sub Projects" parent="menu_advance_construction_root"
|
||||
action="construction_project_action_act" sequence="2" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_user"/>
|
||||
|
||||
<!--Budget-->
|
||||
<menuitem id="menu_sub_project_budget" name="Budgets" parent="menu_advance_construction_root"
|
||||
action="sub_project_budget_action" sequence="3"
|
||||
groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
|
||||
<!--Rate Analysis-->
|
||||
<menuitem id="menu_advance_rate_analysis" name="Rate Analysis" parent="menu_advance_construction_root"
|
||||
action="rate_analysis_action" sequence="4" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_user"/>
|
||||
|
||||
<!--Job Costing-->
|
||||
<menuitem id="menu_execution" name="Executions" parent="menu_advance_construction_root" sequence="5" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_user"/>
|
||||
<!--Project Phase-->
|
||||
<menuitem id="menu_project_phase" name="Project Phases (WBS)" parent="menu_execution"
|
||||
action="job_costing_action"
|
||||
sequence="1"/>
|
||||
<!--Work Order-->
|
||||
<menuitem id="menu_work_orders" name="Work Orders" parent="menu_execution" action="job_order_action"
|
||||
sequence="2"/>
|
||||
<!--Material Requisition-->
|
||||
<menuitem id="menu_material_requisition" name="Material Requests" parent="menu_execution"
|
||||
action="material_requisition_action" sequence="3"/>
|
||||
|
||||
|
||||
<!--Tasks-->
|
||||
<menuitem id="menu_construction_project_task" name="Tasks" parent="menu_advance_construction_root"
|
||||
action="action_view_all_task_construction" sequence="6"
|
||||
groups="tk_construction_management.advance_construction_manager"/>
|
||||
|
||||
|
||||
<!--Operations-->
|
||||
<menuitem id="menu_con_operations" name="Operations" parent="menu_advance_construction_root" sequence="7"
|
||||
groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<!--Internal Transfer-->
|
||||
<menuitem id="menu_internal_transfer" name="Internal Transfers" parent="menu_con_operations"
|
||||
action="internal_transfer_action" sequence="1"/>
|
||||
<!--Scrap Order-->
|
||||
<menuitem id="menu_scrap_order" name="Scrap Orders" parent="menu_con_operations" action="scrap_order_action"
|
||||
sequence="2"/>
|
||||
<!--Delivery Orders-->
|
||||
<menuitem id="menu_delivery_order" name="Delivery Orders" parent="menu_con_operations"
|
||||
action="stock.action_picking_tree_all" sequence="3"/>
|
||||
|
||||
<!--Contract-->
|
||||
<menuitem id="menu_con_sub_contract" name="Contracts" parent="menu_advance_construction_root" sequence="8"
|
||||
groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<!--Equipment Subcontract-->
|
||||
<menuitem id="menu_equipment_subcontract" name="Equipments" parent="menu_con_sub_contract"
|
||||
action="equipment_subcontract_action" sequence="1"/>
|
||||
<!--Labour Subcontract-->
|
||||
<menuitem id="menu_labour_subcontract" name="Labours" parent="menu_con_sub_contract"
|
||||
action="labour_subcontract_action" sequence="2"/>
|
||||
<!--Overhead Subcontract-->
|
||||
<menuitem id="menu_overhead_subcontract" name="Overheads" parent="menu_con_sub_contract"
|
||||
action="overhead_subcontract_action" sequence="3"/>
|
||||
|
||||
<!--Quality Check-->
|
||||
<menuitem id="menu_con_qc_check" name="Quality Checks" parent="menu_advance_construction_root" sequence="9" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<!-- Equipment Quality Check -->
|
||||
<menuitem id="menu_con_equipment_qc_check" name="Equipments" parent="menu_con_qc_check"
|
||||
action="equip_contract_line_action" sequence="1" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<!-- Labour Quality Check -->
|
||||
<menuitem id="menu_con_labour_qc_check" name="Labours" parent="menu_con_qc_check"
|
||||
action="labour_contract_line_action" sequence="2" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<!-- Overhead Quality Check -->
|
||||
<menuitem id="menu_con_overhead_qc_check" name="Overheads" parent="menu_con_qc_check"
|
||||
action="overhead_contract_line_action" sequence="3" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<!-- Material Quality Check -->
|
||||
<menuitem id="menu_con_material_qc_check" name="Materials" parent="menu_con_qc_check"
|
||||
action="material_consume_action" sequence="4" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_user"/>
|
||||
|
||||
<!--Department-->
|
||||
<menuitem id="menu_construction_team" name="Departments" parent="menu_advance_construction_root"
|
||||
action="construction_department_action" sequence="10"
|
||||
groups="tk_construction_management.advance_construction_manager"/>
|
||||
|
||||
|
||||
<!--Construction Tools-->
|
||||
<menuitem id="menu_product_root" name="Tools" parent="menu_advance_construction_root" sequence="11" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_user"/>
|
||||
<menuitem id="menu_construction_material" name="Materials" parent="menu_product_root"
|
||||
action="construction_product_material_action" sequence="1"/>
|
||||
<menuitem id="menu_construction_equipment" name="Equipments" parent="menu_product_root"
|
||||
action="construction_product_equipment_action" sequence="2"/>
|
||||
<menuitem id="menu_construction_labour" name="Labours" parent="menu_product_root"
|
||||
action="construction_product_labour_action" sequence="3"/>
|
||||
<menuitem id="menu_construction_overhead" name="Overheads" parent="menu_product_root"
|
||||
action="construction_product_overhead_action" sequence="4"/>
|
||||
<menuitem id="menu_construction_expense" name="Expenses" parent="menu_product_root"
|
||||
action="construction_product_expense_action" sequence="5"/>
|
||||
|
||||
|
||||
<!--Configuration-->
|
||||
<menuitem id="configuration_root" name="Configurations" parent="menu_advance_construction_root" sequence="20"
|
||||
groups="tk_construction_management.advance_construction_manager"/>
|
||||
|
||||
<!--Work Type-->
|
||||
<menuitem id="configuration_job_types_root" name="Work Types" parent="configuration_root" sequence="1"/>
|
||||
<!--Work Type-->
|
||||
<menuitem id="menu_job_type" name="Work Types" parent="configuration_job_types_root" action="job_type_action"
|
||||
sequence="1"/>
|
||||
<!--Work Sub Type-->
|
||||
<menuitem id="menu_job_category" name="Work Sub Types" parent="configuration_job_types_root"
|
||||
action="job_category_action" sequence="2"/>
|
||||
|
||||
<!--Users-->
|
||||
<menuitem id="menu_construction_employee_root" name="Users" parent="configuration_root" sequence="2"/>
|
||||
<!--Engineers-->
|
||||
<menuitem id="menu_construction_employee_engineers" name="Engineers" parent="menu_construction_employee_root"
|
||||
action="hr.open_view_employee_list_my" sequence="1"/>
|
||||
<!--Stack Holder-->
|
||||
<menuitem id="menu_construction_site_stack_holder" name="Stakeholders" parent="menu_construction_employee_root"
|
||||
sequence="2" action="construction_stack_holder_action"/>
|
||||
|
||||
|
||||
<!--Types-->
|
||||
<menuitem id="configuration_types_root" name="Types" parent="configuration_root" sequence="3"/>
|
||||
<!--Document Type-->
|
||||
<menuitem id="menu_document_type" name="Document Types" parent="configuration_types_root"
|
||||
action="site_document_type_action" sequence="1"/>
|
||||
<!--Insurance Risk-->
|
||||
<menuitem id="menu_insurance_risk" name="Insurance Risks" parent="configuration_types_root"
|
||||
action="policy_risk_action" sequence="2"/>
|
||||
<!--Employee Type-->
|
||||
<menuitem id="menu_construction_employee_tags" name="Employee Types" parent="configuration_types_root"
|
||||
action="hr.open_view_categ_form" sequence="3"/>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
430
addons/tk_construction_management/views/project_budget_view.xml
Normal file
430
addons/tk_construction_management/views/project_budget_view.xml
Normal 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 > 0" decoration-danger="remaining_budget < 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>
|
||||
@@ -0,0 +1,130 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!--Purchase-->
|
||||
<record id="construction_purchase_view_form_inherit" model="ir.ui.view">
|
||||
<field name="name">construction.purchase.view.form.inherit</field>
|
||||
<field name="model">purchase.order</field>
|
||||
<field name="inherit_id" ref="purchase.purchase_order_form"/>
|
||||
<field name="priority" eval="8"/>
|
||||
<field name="arch" type="xml">
|
||||
|
||||
<xpath expr="//field[@name='currency_id']" position="after">
|
||||
<field name="material_req_id" readonly="1" force_save="1" invisible="not material_req_id"/>
|
||||
<field name="project_id" readonly="1" force_save="1" invisible="not material_req_id"/>
|
||||
<field name="job_order_id" readonly="1" force_save="1" invisible="not job_order_id"/>
|
||||
<field name="purchase_order" readonly="1" force_save="1" invisible="not job_order_id"/>
|
||||
<field name="equipment_subcontract_id" readonly="1" force_save="1" invisible="not equipment_subcontract_id"/>
|
||||
<field name="labour_subcontract_id" readonly="1" force_save="1" invisible="not labour_subcontract_id"/>
|
||||
<field name="overhead_subcontract_id" readonly="1" force_save="1" invisible="not overhead_subcontract_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!--Stock-->
|
||||
<record id="construction_stock_warehouse_view_form" model="ir.ui.view">
|
||||
<field name="name">construction.stock.warehouse.view.form</field>
|
||||
<field name="model">stock.warehouse</field>
|
||||
<field name="inherit_id" ref="stock.view_warehouse"/>
|
||||
<field name="priority" eval="8"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='code']" position="after">
|
||||
<field name="project_id" readonly="1" force_save="1" invisible="not project_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<!--Products-->
|
||||
<record id="construction_product_form_inherit_view" model="ir.ui.view">
|
||||
<field name="name">construction.product.form.inherit.view</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="priority" eval="8"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//label[@for='purchase_ok']" position="after">
|
||||
<span class="d-inline-block">
|
||||
<field name="is_material"/>
|
||||
<label for="is_material"/>
|
||||
</span>
|
||||
<span class="d-inline-block">
|
||||
<field name="is_equipment"/>
|
||||
<label for="is_equipment"/>
|
||||
</span>
|
||||
<span class="d-inline-block">
|
||||
<field name="is_labour"/>
|
||||
<label for="is_labour"/>
|
||||
</span>
|
||||
<span class="d-inline-block">
|
||||
<field name="is_overhead"/>
|
||||
<label for="is_overhead"/>
|
||||
</span>
|
||||
<span class="d-inline-block">
|
||||
<field name="is_expense"/>
|
||||
<label for="is_expense"/>
|
||||
</span>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_product_material_action" model="ir.actions.act_window">
|
||||
<field name="name">Material</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.product</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="domain">[('is_material','=',True),('detailed_type','=','product')]</field>
|
||||
<field name="context">{'default_is_material':True,'default_detailed_type':'product'}</field>
|
||||
</record>
|
||||
<record id="construction_product_equipment_action" model="ir.actions.act_window">
|
||||
<field name="name">Equipment</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.product</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="domain">[('is_equipment','=',True),('detailed_type','=','service')]</field>
|
||||
<field name="context">{'default_is_equipment':True,'default_detailed_type':'service'}</field>
|
||||
</record>
|
||||
<record id="construction_product_labour_action" model="ir.actions.act_window">
|
||||
<field name="name">Labour</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.product</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="domain">[('is_labour','=',True),('detailed_type','=','service')]</field>
|
||||
<field name="context">{'default_is_labour':True,'default_detailed_type':'service'}</field>
|
||||
</record>
|
||||
<record id="construction_product_overhead_action" model="ir.actions.act_window">
|
||||
<field name="name">Overhead</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.product</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="domain">[('is_overhead','=',True)]</field>
|
||||
<field name="context">{'default_is_overhead':True}</field>
|
||||
</record>
|
||||
<record id="construction_product_expense_action" model="ir.actions.act_window">
|
||||
<field name="name">Expense</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.product</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="domain">[('is_expense','=',True)]</field>
|
||||
<field name="context">{'default_is_expense':True}</field>
|
||||
</record>
|
||||
|
||||
<!--Account-->
|
||||
<record id="construction_account_view_form_inherit" model="ir.ui.view">
|
||||
<field name="name">construction.account.view.form.inherit</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="inherit_id" ref="account.view_move_form"/>
|
||||
<field name="priority" eval="8"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='invoice_vendor_bill_id']" position="after">
|
||||
<field name="material_req_id" readonly="1" force_save="1" invisible="not material_req_id"/>
|
||||
<field name="project_id" readonly="1" force_save="1" invisible="not material_req_id"/>
|
||||
<field name="job_order_id" invisible="not job_order_id" readonly="1" force_save="1"/>
|
||||
<field name="purchase_order" invisible="not job_order_id" readonly="1" force_save="1"/>
|
||||
<field name="equipment_subcontract_id" readonly="1" force_save="1" invisible="not equipment_subcontract_id"/>
|
||||
<field name="labour_subcontract_id" readonly="1" force_save="1" invisible="not labour_subcontract_id"/>
|
||||
<field name="overhead_subcontract_id" readonly="1" force_save="1" invisible="not overhead_subcontract_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
346
addons/tk_construction_management/views/quality_check_view.xml
Normal file
346
addons/tk_construction_management/views/quality_check_view.xml
Normal file
@@ -0,0 +1,346 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Equipment QC Check-->
|
||||
<record id="equip_contract_line_view_form" model="ir.ui.view">
|
||||
<field name="name">equip.contract.line.view.form</field>
|
||||
<field name="model">equip.contract.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="qc_status" widget="statusbar"/>
|
||||
<button string="QC Request" name="action_quality_check" type="object" class="oe_highlight" invisible="qc_status != 'draft'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button string="Approve" name="action_quality_check_approve" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reject" name="action_quality_check_reject" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reset to Draft" name="action_reset_to_draft" type="object" class="oe_highlight" invisible="qc_status != 'reject'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button string="Create Bill/PO" name="action_create_ra_bill" type="object" class="oe_highlight" invisible="bill_id or (purchase_order_id or qc_status != 'approve')" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="contract_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="po_bill" invisible="1"/>
|
||||
<field name="date" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not bill_id or po_bill != 'bill'">
|
||||
<group>
|
||||
<field name="bill_id" readonly="1" widget="many2one_clickable" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="payment_state" widget="badge" decoration-success="payment_state=='paid'" decoration-danger="payment_state=='not_paid'" decoration-info="payment_state=='in_payment'" decoration-primary="payment_state=='partial'" decoration-warning="payment_state=='reversed'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not purchase_order_id or po_bill != 'purchase_order'">
|
||||
<group>
|
||||
<field name="purchase_order_id" widget="many2one_clickable" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="state" widget="badge" decoration-success="state == 'purchase' or state == 'done'" decoration-warning="state == 'to approve'" decoration-info="state == 'draft' or state == 'sent'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qty" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
<field name="percentage" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="amount" required="1" sum="amount"/>
|
||||
<field name="retention_percentage" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)"/>
|
||||
<field name="retention_amount" required="1"/>
|
||||
<field name="final_amount" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qc_user_id" invisible="not qc_user_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remark" required="0" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reject_reason" invisible="qc_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="equip_contract_line_view_tree" model="ir.ui.view">
|
||||
<field name="name">equip.contract.line.view.tree</field>
|
||||
<field name="model">equip.contract.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="contract_id"/>
|
||||
<field name="date"/>
|
||||
<field name="qty" sum="qty"/>
|
||||
<field name="percentage" sum="percentage"/>
|
||||
<field name="amount" sum="amount"/>
|
||||
<field name="remark"/>
|
||||
<field name="qc_status" widget="badge" decoration-danger="qc_status == 'reject'" decoration-success="qc_status == 'approve'" decoration-info="qc_status == 'request'"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="equip_contract_line_view_search" model="ir.ui.view">
|
||||
<field name="name">equip.contract.line.view.search</field>
|
||||
<field name="model">equip.contract.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="contract_id"/>
|
||||
<field name="qc_user_id"/>
|
||||
<field name="remark"/>
|
||||
<field name="amount"/>
|
||||
<field name="date"/>
|
||||
<searchpanel>
|
||||
<field name="qc_status" string="Status" enable_counters="1" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Contract" name="group_by_contract" context="{'group_by': 'contract_id'}"/>
|
||||
<filter string="QC Responsible" name="group_by_qc_user" context="{'group_by': 'qc_user_id'}"/>
|
||||
<filter string="Date" name="group_by_date" context="{'group_by': 'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="equip_contract_line_action" model="ir.actions.act_window">
|
||||
<field name="name">Equipment Quality Check</field>
|
||||
<field name="res_model">equip.contract.line</field>
|
||||
<field name="view_mode">list,form,search,activity</field>
|
||||
</record>
|
||||
|
||||
<!-- Labour QC Check-->
|
||||
<record id="labour_contract_line_view_form" model="ir.ui.view">
|
||||
<field name="name">labour.contract.line.view.form</field>
|
||||
<field name="model">labour.contract.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="qc_status" widget="statusbar"/>
|
||||
<button string="QC Request" name="action_quality_check" type="object" class="oe_highlight" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" invisible="qc_status != 'draft'"/>
|
||||
<button string="Approve" name="action_quality_check_approve" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reject" name="action_quality_check_reject" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reset to Draft" name="action_reset_to_draft" type="object" class="oe_highlight" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" invisible="qc_status != 'reject'"/>
|
||||
<button string="Create Bill/PO" name="action_create_ra_bill" type="object" class="oe_highlight" invisible="bill_id or (purchase_order_id or qc_status != 'approve')" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="contract_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="po_bill" invisible="1"/>
|
||||
<field name="date" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not bill_id or po_bill != 'bill'">
|
||||
<group>
|
||||
<field name="bill_id" readonly="1" widget="many2one_clickable" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="payment_state" widget="badge" decoration-success="payment_state=='paid'" decoration-danger="payment_state=='not_paid'" decoration-info="payment_state=='in_payment'" decoration-primary="payment_state=='partial'" decoration-warning="payment_state=='reversed'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not purchase_order_id or po_bill != 'purchase_order'">
|
||||
<group>
|
||||
<field name="purchase_order_id" widget="many2one_clickable" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="state" widget="badge" decoration-success="state == 'purchase' or state == 'done'" decoration-warning="state == 'to approve'" decoration-info="state == 'draft' or state == 'sent'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="hours" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
<field name="percentage" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="amount" required="1" sum="amount"/>
|
||||
<field name="retention_percentage" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)"/>
|
||||
<field name="retention_amount"/>
|
||||
<field name="final_amount" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qc_user_id" invisible="not qc_user_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remark" required="0" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reject_reason" invisible="qc_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="labour_contract_line_view_tree" model="ir.ui.view">
|
||||
<field name="name">labour.contract.line.view.tree</field>
|
||||
<field name="model">labour.contract.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="contract_id"/>
|
||||
<field name="date"/>
|
||||
<field name="hours" sum="hours"/>
|
||||
<field name="percentage" sum="percentage"/>
|
||||
<field name="amount" sum="amount"/>
|
||||
<field name="remark"/>
|
||||
<field name="qc_status" widget="badge" decoration-danger="qc_status == 'reject'" decoration-success="qc_status == 'approve'" decoration-info="qc_status == 'request'"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="labour_contract_line_view_search" model="ir.ui.view">
|
||||
<field name="name">labour.contract.line.view.search</field>
|
||||
<field name="model">labour.contract.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="contract_id"/>
|
||||
<field name="qc_user_id"/>
|
||||
<field name="remark"/>
|
||||
<field name="amount"/>
|
||||
<field name="date"/>
|
||||
<searchpanel>
|
||||
<field name="qc_status" string="Status" enable_counters="1" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Contract" name="group_by_contract" context="{'group_by': 'contract_id'}"/>
|
||||
<filter string="QC Responsible" name="group_by_qc_user" context="{'group_by': 'qc_user_id'}"/>
|
||||
<filter string="Date" name="group_by_date" context="{'group_by': 'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="labour_contract_line_action" model="ir.actions.act_window">
|
||||
<field name="name">Labour Quality Check</field>
|
||||
<field name="res_model">labour.contract.line</field>
|
||||
<field name="view_mode">list,form,activity,search</field>
|
||||
</record>
|
||||
|
||||
<!--Overhead Quality Check-->
|
||||
<record id="overhead_contract_line_view_form" model="ir.ui.view">
|
||||
<field name="name">overhead.contract.line.view.form</field>
|
||||
<field name="model">overhead.contract.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="qc_status" widget="statusbar"/>
|
||||
<button string="QC Request" name="action_quality_check" type="object" class="oe_highlight" invisible="qc_status != 'draft'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button string="Approve" name="action_quality_check_approve" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reject" name="action_quality_check_reject" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reset to Draft" name="action_reset_to_draft" type="object" class="oe_highlight" invisible="qc_status != 'reject'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button string="Create Bill/PO" name="action_create_ra_bill" type="object" class="oe_highlight" invisible="bill_id or (purchase_order_id or qc_status != 'approve')" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="contract_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="po_bill" invisible="1"/>
|
||||
<field name="date" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not bill_id or po_bill != 'bill'">
|
||||
<group>
|
||||
<field name="bill_id" readonly="1" widget="many2one_clickable" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="payment_state" widget="badge" decoration-success="payment_state=='paid'" decoration-danger="payment_state=='not_paid'" decoration-info="payment_state=='in_payment'" decoration-primary="payment_state=='partial'" decoration-warning="payment_state=='reversed'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not purchase_order_id or po_bill != 'purchase_order'">
|
||||
<group>
|
||||
<field name="purchase_order_id" widget="many2one_clickable" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="state" widget="badge" decoration-success="state == 'purchase' or state == 'done'" decoration-warning="state == 'to approve'" decoration-info="state == 'draft' or state == 'sent'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qty" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
<field name="percentage" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="amount" required="1" sum="amount"/>
|
||||
<field name="retention_percentage" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)"/>
|
||||
<field name="retention_amount"/>
|
||||
<field name="final_amount" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qc_user_id" invisible="not qc_user_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remark" required="0" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reject_reason" invisible="qc_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="overhead_contract_line_view_tree" model="ir.ui.view">
|
||||
<field name="name">overhead.contract.line.view.tree</field>
|
||||
<field name="model">overhead.contract.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="contract_id"/>
|
||||
<field name="date"/>
|
||||
<field name="qty"/>
|
||||
<field name="percentage" sum="percentage"/>
|
||||
<field name="amount" sum="amount"/>
|
||||
<field name="remark"/>
|
||||
<field name="qc_status" widget="badge" decoration-danger="qc_status == 'reject'" decoration-success="qc_status == 'approve'" decoration-info="qc_status == 'request'"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="overhead_contract_line_view_search" model="ir.ui.view">
|
||||
<field name="name">overhead.contract.line.view.search</field>
|
||||
<field name="model">overhead.contract.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="contract_id"/>
|
||||
<field name="qc_user_id"/>
|
||||
<field name="remark"/>
|
||||
<field name="amount"/>
|
||||
<field name="date"/>
|
||||
<searchpanel>
|
||||
<field name="qc_status" string="Status" enable_counters="1" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Contract" name="group_by_contract" context="{'group_by': 'contract_id'}"/>
|
||||
<filter string="QC Responsible" name="group_by_qc_user" context="{'group_by': 'qc_user_id'}"/>
|
||||
<filter string="Date" name="group_by_date" context="{'group_by': 'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="overhead_contract_line_action" model="ir.actions.act_window">
|
||||
<field name="name">Overhead Quality Check</field>
|
||||
<field name="res_model">overhead.contract.line</field>
|
||||
<field name="view_mode">list,form,activity,search</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
149
addons/tk_construction_management/views/rate_analysis_view.xml
Normal file
149
addons/tk_construction_management/views/rate_analysis_view.xml
Normal file
@@ -0,0 +1,149 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<record id="rate_analysis_view_form" model="ir.ui.view">
|
||||
<field name="name">rate.analysis.view.form</field>
|
||||
<field name="model">rate.analysis</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<h1>
|
||||
<field name="name" required="1" placeholder="Title"/>
|
||||
</h1>
|
||||
<group>
|
||||
<group string="Project Details">
|
||||
<field name="site_id" required="1"/>
|
||||
<field name="project_id" required="1"/>
|
||||
<field name="company_id"/>
|
||||
</group>
|
||||
<group string="Work Type">
|
||||
<field name="activity_id" required="1"/>
|
||||
<field name="sub_activity_ids" invisible="1"/>
|
||||
<field name="sub_activity_id" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Other Details">
|
||||
<group>
|
||||
<field name="unit_id" required="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Material" name="material">
|
||||
<field name="material_analysis_ids">
|
||||
<list editable="bottom">
|
||||
<field name="product_id" required="1"/>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="price" required="1"/>
|
||||
<field name="tax_id"/>
|
||||
<field name="untaxed_amount"/>
|
||||
<field name="tax_amount"/>
|
||||
<field name="total_amount"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Equipment" name="equipment">
|
||||
<field name="equipment_analysis_ids">
|
||||
<list editable="bottom">
|
||||
<field name="product_id" required="1"/>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="price" required="1"/>
|
||||
<field name="tax_id"/>
|
||||
<field name="untaxed_amount"/>
|
||||
<field name="tax_amount"/>
|
||||
<field name="total_amount"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Labour" name="labour">
|
||||
<field name="labour_analysis_ids">
|
||||
<list editable="bottom">
|
||||
<field name="product_id" required="1"/>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="price" required="1"/>
|
||||
<field name="tax_id"/>
|
||||
<field name="untaxed_amount"/>
|
||||
<field name="tax_amount"/>
|
||||
<field name="total_amount"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Overhead" name="overhead">
|
||||
<field name="overhead_analysis_ids">
|
||||
<list editable="bottom">
|
||||
<field name="product_id" required="1"/>
|
||||
<field name="code"/>
|
||||
<field name="name" required="1"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="price" required="1"/>
|
||||
<field name="tax_id"/>
|
||||
<field name="untaxed_amount"/>
|
||||
<field name="tax_amount"/>
|
||||
<field name="total_amount"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
<group class="oe_subtotal_footer oe_right">
|
||||
<field name="untaxed_amount"/>
|
||||
<field name="tax_amount"/>
|
||||
<field name="total_amount"/>
|
||||
</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="rate_analysis_view_tree" model="ir.ui.view">
|
||||
<field name="name">rate.analysis.view.tree</field>
|
||||
<field name="model">rate.analysis</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="site_id"/>
|
||||
<field name="project_id"/>
|
||||
<field name="date"/>
|
||||
<field name="activity_id"/>
|
||||
<field name="sub_activity_id"/>
|
||||
<field name="total_amount"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="rate_analysis_view_search" model="ir.ui.view">
|
||||
<field name="name">rate.analysis.view.search</field>
|
||||
<field name="model">rate.analysis</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="">
|
||||
<field name="name"/>
|
||||
<field name="site_id"/>
|
||||
<field name="project_id"/>
|
||||
<field name="activity_id"/>
|
||||
<field name="sub_activity_id"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="rate_analysis_action" model="ir.actions.act_window">
|
||||
<field name="name">Rate Analysis</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">rate.analysis</field>
|
||||
<field name="view_mode">list,form,activity,search</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
45
addons/tk_construction_management/views/res_config_views.xml
Normal file
45
addons/tk_construction_management/views/res_config_views.xml
Normal file
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="res_config_settings_view_form_construction" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.view.form.construction</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="priority" eval="40"/>
|
||||
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//form" position="inside">
|
||||
<app class="app_settings_block" data-string="Construction" string="Construction"
|
||||
data-key="tk_construction_management">
|
||||
<h2>Sequences</h2>
|
||||
<setting class="row mt16 o_settings_container">
|
||||
<div class="col-lg-12 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">Sequence</span>
|
||||
<div class="text-muted">
|
||||
Set Sequence prefix for Project Phase(WBS)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</setting>
|
||||
<setting class="row mt16 o_settings_container">
|
||||
<div class="col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<div class="content-group">
|
||||
<div class="row mt16">
|
||||
<label for="phase_prefix" class="col-lg-3 o_light_label"/>
|
||||
<field name="phase_prefix" required="1"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</setting>
|
||||
</app>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
24
addons/tk_construction_management/views/res_partner_view.xml
Normal file
24
addons/tk_construction_management/views/res_partner_view.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="construction_site_res_partner_form" model="ir.ui.view">
|
||||
<field name="name">construction.site.res.partner.form</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="priority" eval="8"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='vat']" position="after">
|
||||
<field name="stack_holder" widget="boolean_toggle" invisible="stack_holder"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="construction_stack_holder_action" model="ir.actions.act_window">
|
||||
<field name="name">Stockholders</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">res.partner</field>
|
||||
<field name="domain">[('stack_holder','=',True)]</field>
|
||||
<field name="context">{'default_stack_holder':True}</field>
|
||||
<field name="view_mode">kanban,list,form,activity</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
72
addons/tk_construction_management/views/scrap_order_view.xml
Normal file
72
addons/tk_construction_management/views/scrap_order_view.xml
Normal file
@@ -0,0 +1,72 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="scrap_order_view_form" model="ir.ui.view">
|
||||
<field name="name">scrap.order.view.form</field>
|
||||
<field name="model">scrap.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<button name="action_create_invoice" type="object" string="Create Invoice" class="btn btn-primary" invisible="invoice_id or not scrap_order_line_ids"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<h1>
|
||||
<field name="name" readonly="1"/>
|
||||
</h1>
|
||||
<br/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="vendor_id" required="1"/>
|
||||
<field name="job_order_id" required="1"/>
|
||||
<field name="note"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date" required="1"/>
|
||||
<field name="invoice_id" invisible="not invoice_id" readonly="1" force_sace="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Scrap Order">
|
||||
<field name="scrap_order_line_ids">
|
||||
<list editable="bottom">
|
||||
<field name="scrap_type" required="1"/>
|
||||
<field name="product_id" required="1"/>
|
||||
<field name="qty" required="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="dep_cost" required="1"/>
|
||||
<field name="net_total" required="1"/>
|
||||
</list>
|
||||
</field>
|
||||
<group class="oe_subtotal_footer oe_right">
|
||||
<field name="total" class="oe_subtotal_footer_separator"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="scrap_order_view_tree" model="ir.ui.view">
|
||||
<field name="name">scrap.order.view.tree</field>
|
||||
<field name="model">scrap.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="date"/>
|
||||
<field name="total"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="scrap_order_action" model="ir.actions.act_window">
|
||||
<field name="name">Scrap Order</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">scrap.order</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
755
addons/tk_construction_management/views/sub_contract_view.xml
Normal file
755
addons/tk_construction_management/views/sub_contract_view.xml
Normal file
@@ -0,0 +1,755 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!--Equipment Subcontract-->
|
||||
<record id="equipment_subcontract_view_form" model="ir.ui.view">
|
||||
<field name="name">equipment.subcontract.view.form</field>
|
||||
<field name="model">equipment.subcontract</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="stage" widget="statusbar"/>
|
||||
<button string="In Progress" name="action_in_progress" type="object" class="oe_highlight" invisible="stage != 'draft'"/>
|
||||
<button string="Done" name="action_state_done" type="object" class="oe_highlight" invisible="stage in ['done', 'draft'] or progress != 100"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h1>
|
||||
<field name="seq"/>
|
||||
</h1>
|
||||
<h4>
|
||||
<field name="po_bill" widget="radio" options="{'horizontal':True}" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-6 text-end">
|
||||
<field name="progress" widget="progressbar"/>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<group>
|
||||
<group string="Project Details">
|
||||
<field name="project_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="job_order_id" readonly="1" force_save="1"/>
|
||||
<field name="task_id"/>
|
||||
</group>
|
||||
<group string="Department Details">
|
||||
<field name="department_id"/>
|
||||
<field name="manager_ids" readonly="1" force_save="1" widget="many2many_tags"/>
|
||||
<field name="user_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Equipment Details">
|
||||
<group>
|
||||
<field name="name" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="vendor_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="equipment_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="job_type_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="cost" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="cost_type" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="sub_category_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Calculation">
|
||||
<group>
|
||||
<field name="qty" readonly="1" force_save="1"/>
|
||||
<field name="total_cost" readonly="1" force_save="1"/>
|
||||
<field name="completion_date" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remain_qty" readonly="1" force_save="1"/>
|
||||
<field name="remaining_amount" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="equipment_ra_bill" string="Subcontract Bills/PO">
|
||||
<field name="ra_bill_ids" readonly="stage == 'draft' or progress == 100">
|
||||
<form>
|
||||
<header>
|
||||
<field name="qc_status" widget="statusbar"/>
|
||||
</header>
|
||||
<group>
|
||||
<group>
|
||||
<field name="po_bill" invisible="1"/>
|
||||
<field name="date" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not bill_id or po_bill != 'bill'">
|
||||
<group>
|
||||
<field name="bill_id" readonly="1" widget="many2one_clickable" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="payment_state" widget="badge" decoration-success="payment_state=='paid'" decoration-danger="payment_state=='not_paid'" decoration-info="payment_state=='in_payment'" decoration-primary="payment_state=='partial'" decoration-warning="payment_state=='reversed'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not purchase_order_id or po_bill != 'purchase_order'">
|
||||
<group>
|
||||
<field name="purchase_order_id" widget="many2one_clickable" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="state" widget="badge" decoration-success="state == 'purchase' or state == 'done'" decoration-warning="state == 'to approve'" decoration-info="state == 'draft' or state == 'sent'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qty" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
<field name="percentage" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="amount" required="1" sum="amount"/>
|
||||
<field name="retention_percentage" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)"/>
|
||||
<field name="retention_amount"/>
|
||||
<field name="final_amount" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qc_user_id" invisible="not qc_user_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remark" required="0" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
||||
</group>
|
||||
</form>
|
||||
<list decoration-success="qc_status == 'approve'" decoration-danger="qc_status == 'reject'">
|
||||
<field name="date"/>
|
||||
<field name="qty"/>
|
||||
<field name="percentage"/>
|
||||
<field name="amount"/>
|
||||
<field name="retention_percentage"/>
|
||||
<field name="retention_amount"/>
|
||||
<field name="final_amount"/>
|
||||
<field name="remark"/>
|
||||
<field name="purchase_order_id" widget="many2one_clickable" column_invisible="parent.po_bill == 'bill'"/>
|
||||
<field name="state" widget="badge" column_invisible="parent.po_bill == 'bill'" decoration-success="state == 'purchase' or state == 'done'" decoration-warning="state == 'to approve'" decoration-info="state == 'draft' or state == 'sent'"/>
|
||||
<field name="bill_id" widget="many2one_clickable" column_invisible="parent.po_bill == 'purchase_order'"/>
|
||||
<field name="payment_state" widget="badge" column_invisible="parent.po_bill == 'purchase_order'" decoration-success="payment_state=='paid'" decoration-danger="payment_state=='not_paid'" decoration-info="payment_state=='in_payment'" decoration-primary="payment_state=='partial'" decoration-warning="payment_state=='reversed'"/>
|
||||
<field name="qc_status" widget="badge" decoration-danger="qc_status == 'reject'" decoration-success="qc_status == 'approve'" decoration-info="qc_status == 'request'"/>
|
||||
<button string="QC Request" name="action_quality_check" type="object" class="oe_highlight" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" invisible="qc_status != 'draft'"/>
|
||||
<button string="Approve" name="action_quality_check_approve" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reject" name="action_quality_check_reject" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reset to Draft" name="action_reset_to_draft" type="object" class="oe_highlight" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" invisible="qc_status != 'reject'"/>
|
||||
<button string="Create Bill/PO" name="action_create_ra_bill" type="object" class="oe_highlight" invisible="bill_id or (purchase_order_id or qc_status != 'approve')" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="equipment_subcontract_view_tree" model="ir.ui.view">
|
||||
<field name="name">equipment.subcontract.view.tree</field>
|
||||
<field name="model">equipment.subcontract</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="seq"/>
|
||||
<field name="name"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="vendor_id"/>
|
||||
<field name="cost_type"/>
|
||||
<field name="qty"/>
|
||||
<field name="cost"/>
|
||||
<field name="total_cost"/>
|
||||
<field name="stage" widget="badge" decoration-success="stage == 'done'" decoration-warning="stage == 'in_progress'"/>
|
||||
<field name="progress" widget="progressbar"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="equipment_subcontract_view_search" model="ir.ui.view">
|
||||
<field name="name">equipment.subcontract.view.search</field>
|
||||
<field name="model">equipment.subcontract</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="seq"/>
|
||||
<field name="name"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="vendor_id"/>
|
||||
<field name="project_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="task_id"/>
|
||||
<field name="vendor_id"/>
|
||||
<field name="stage"/>
|
||||
<field name="progress"/>
|
||||
<searchpanel>
|
||||
<field name="po_bill" string="Type" enable_counters="1" icon="fa-filter"/>
|
||||
<field name="stage" string="Status" enable_counters="1" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Department" name="group_by_department" context="{'group_by': 'department_id'}"/>
|
||||
<filter string="Project" name="group_by_project" context="{'group_by': 'project_id'}"/>
|
||||
<filter string="Phase(WBS)" name="group_by_phase" context="{'group_by': 'phase_id'}"/>
|
||||
<filter string="Work Order" name="group_by_work_order" context="{'group_by': 'job_order_id'}"/>
|
||||
<filter string="Task" name="group_by_task" context="{'group_by': 'task_id'}"/>
|
||||
<filter string="Vendor" name="group_by_vendor" context="{'group_by': 'vendor_id'}"/>
|
||||
<filter string="Work Type" name="group_by_job_type" context="{'group_by': 'job_type_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="equipment_subcontract_action" model="ir.actions.act_window">
|
||||
<field name="name">Equipment Subcontract</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">equipment.subcontract</field>
|
||||
<field name="view_mode">list,form,search</field>
|
||||
</record>
|
||||
<!--Labour Subcontract-->
|
||||
<record id="labour_subcontract_view_form" model="ir.ui.view">
|
||||
<field name="name">labour.subcontract.view.form</field>
|
||||
<field name="model">labour.subcontract</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="stage" widget="statusbar"/>
|
||||
<button string="In Progress" name="action_in_progress" type="object" class="oe_highlight" invisible="stage != 'draft'"/>
|
||||
<button string="Done" name="action_state_done" type="object" class="oe_highlight" invisible="stage in ['done', 'draft'] or progress != 100"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h1>
|
||||
<field name="seq"/>
|
||||
</h1>
|
||||
<h4>
|
||||
<field name="po_bill" widget="radio" options="{'horizontal':True}" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-6 text-end">
|
||||
<field name="progress" widget="progressbar"/>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<group>
|
||||
<group string="Project Details">
|
||||
<field name="project_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="job_order_id" readonly="1" force_save="1"/>
|
||||
<field name="task_id"/>
|
||||
</group>
|
||||
<group string="Department Details">
|
||||
<field name="department_id"/>
|
||||
<field name="manager_ids" readonly="1" force_save="1" widget="many2many_tags"/>
|
||||
<field name="user_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Labour Details">
|
||||
<group>
|
||||
<field name="name" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="vendor_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="product_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="cost" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="job_type_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="sub_category_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Calculation">
|
||||
<group>
|
||||
<field name="hours" readonly="1" force_save="1" widget="float_time"/>
|
||||
<field name="total_cost" readonly="1" force_save="1"/>
|
||||
<field name="completion_date" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remain_hours" readonly="1" widget="float_time" force_save="1"/>
|
||||
<field name="remaining_amount" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="equipment_ra_bill" string="Subcontract Bills/PO">
|
||||
<field name="ra_bill_ids" readonly="stage == 'draft' or progress == 100">
|
||||
<form>
|
||||
<header>
|
||||
<field name="qc_status" widget="statusbar"/>
|
||||
</header>
|
||||
<group>
|
||||
<group>
|
||||
<field name="po_bill" invisible="1"/>
|
||||
<field name="date" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not bill_id or po_bill != 'bill'">
|
||||
<group>
|
||||
<field name="bill_id" readonly="1" widget="many2one_clickable" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="payment_state" widget="badge" decoration-success="payment_state=='paid'" decoration-danger="payment_state=='not_paid'" decoration-info="payment_state=='in_payment'" decoration-primary="payment_state=='partial'" decoration-warning="payment_state=='reversed'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not purchase_order_id or po_bill != 'purchase_order'">
|
||||
<group>
|
||||
<field name="purchase_order_id" widget="many2one_clickable" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="state" widget="badge" decoration-success="state == 'purchase' or state == 'done'" decoration-warning="state == 'to approve'" decoration-info="state == 'draft' or state == 'sent'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="hours" required="1" widget="float_time" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
<field name="percentage" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="amount" required="1" sum="amount"/>
|
||||
<field name="retention_percentage" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)"/>
|
||||
<field name="retention_amount"/>
|
||||
<field name="final_amount" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qc_user_id" invisible="not qc_user_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remark" required="0" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
||||
</group>
|
||||
</form>
|
||||
<list decoration-success="qc_status == 'approve'" decoration-danger="qc_status == 'reject'">
|
||||
<field name="date"/>
|
||||
<field name="hours" widget="float_time"/>
|
||||
<field name="amount"/>
|
||||
<field name="percentage"/>
|
||||
<field name="retention_percentage"/>
|
||||
<field name="retention_amount"/>
|
||||
<field name="final_amount"/>
|
||||
<field name="remark" required="0" readonly="purchase_order_id or bill_id" force_save="1"/>
|
||||
<field name="purchase_order_id" widget="many2one_clickable" readonly="1" force_save="1" column_invisible="parent.po_bill == 'bill'"/>
|
||||
<field name="state" widget="badge" column_invisible="parent.po_bill == 'bill'" decoration-success="state == 'purchase' or state == 'done'" decoration-warning="state == 'to approve'" decoration-info="state == 'draft' or state == 'sent'"/>
|
||||
<field name="bill_id" readonly="1" widget="many2one_clickable" force_save="1" column_invisible="parent.po_bill == 'purchase_order'"/>
|
||||
<field name="payment_state" widget="badge" column_invisible="parent.po_bill == 'purchase_order'" decoration-success="payment_state=='paid'" decoration-danger="payment_state=='not_paid'" decoration-info="payment_state=='in_payment'" decoration-primary="payment_state=='partial'" decoration-warning="payment_state=='reversed'"/>
|
||||
<field name="qc_status" widget="badge" decoration-danger="qc_status == 'reject'" decoration-success="qc_status == 'approve'" decoration-info="qc_status == 'request'"/>
|
||||
<button string="QC Request" name="action_quality_check" type="object" class="oe_highlight" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" invisible="qc_status != 'draft'"/>
|
||||
<button string="Approve" name="action_quality_check_approve" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reject" name="action_quality_check_reject" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reset to Draft" name="action_reset_to_draft" type="object" class="oe_highlight" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" invisible="qc_status != 'reject'"/>
|
||||
<button string="Create Bill/PO" name="action_create_ra_bill" type="object" class="oe_highlight" invisible="bill_id or (purchase_order_id or qc_status != 'approve')" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="labour_subcontract_view_tree" model="ir.ui.view">
|
||||
<field name="name">labour.subcontract.view.tree</field>
|
||||
<field name="model">labour.subcontract</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="seq"/>
|
||||
<field name="name"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="vendor_id"/>
|
||||
<field name="hours" widget="float_time"/>
|
||||
<field name="cost"/>
|
||||
<field name="total_cost"/>
|
||||
<field name="stage" widget="badge" decoration-success="stage == 'done'" decoration-warning="stage == 'in_progress'"/>
|
||||
<field name="progress" widget="progressbar"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="labour_subcontract_view_search" model="ir.ui.view">
|
||||
<field name="name">labour.subcontract.view.search</field>
|
||||
<field name="model">labour.subcontract</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="seq"/>
|
||||
<field name="name"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="vendor_id"/>
|
||||
<field name="project_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="task_id"/>
|
||||
<field name="vendor_id"/>
|
||||
<field name="stage"/>
|
||||
<field name="progress"/>
|
||||
<searchpanel>
|
||||
<field name="po_bill" string="Type" enable_counters="1" icon="fa-filter"/>
|
||||
<field name="stage" string="Status" enable_counters="1" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Department" name="group_by_department" context="{'group_by': 'department_id'}"/>
|
||||
<filter string="Project" name="group_by_project" context="{'group_by': 'project_id'}"/>
|
||||
<filter string="Phase(WBS)" name="group_by_phase" context="{'group_by': 'phase_id'}"/>
|
||||
<filter string="Work Order" name="group_by_work_order" context="{'group_by': 'job_order_id'}"/>
|
||||
<filter string="Task" name="group_by_task" context="{'group_by': 'task_id'}"/>
|
||||
<filter string="Vendor" name="group_by_vendor" context="{'group_by': 'vendor_id'}"/>
|
||||
<filter string="Work Type" name="group_by_job_type" context="{'group_by': 'job_type_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="labour_subcontract_action" model="ir.actions.act_window">
|
||||
<field name="name">Labour Subcontract</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">labour.subcontract</field>
|
||||
<field name="view_mode">list,form,search</field>
|
||||
</record>
|
||||
<!--Overhead Subcontract-->
|
||||
<record id="overhead_subcontract_view_form" model="ir.ui.view">
|
||||
<field name="name">overhead.subcontract.view.form</field>
|
||||
<field name="model">overhead.subcontract</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="stage" widget="statusbar"/>
|
||||
<button string="In Progress" name="action_in_progress" type="object" class="oe_highlight" invisible="stage != 'draft'"/>
|
||||
<button string="Done" name="action_state_done" type="object" class="oe_highlight" invisible="stage in ['done', 'draft'] or progress != 100"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h1>
|
||||
<field name="seq"/>
|
||||
</h1>
|
||||
<h4>
|
||||
<field name="po_bill" widget="radio" options="{'horizontal':True}" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-6 text-end">
|
||||
<field name="progress" widget="progressbar"/>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<group>
|
||||
<group string="Project Details">
|
||||
<field name="project_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="job_order_id" readonly="1" force_save="1"/>
|
||||
<field name="task_id"/>
|
||||
</group>
|
||||
<group string="Department Details">
|
||||
<field name="department_id"/>
|
||||
<field name="manager_ids" readonly="1" force_save="1" widget="many2many_tags"/>
|
||||
<field name="user_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Overhead Details">
|
||||
<group>
|
||||
<field name="name" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="vendor_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="product_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="job_type_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
<field name="cost" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="uom_id"/>
|
||||
<field name="sub_category_id" required="1" readonly="stage in ['in_progress', 'done']" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Calculation">
|
||||
<group>
|
||||
<field name="qty" readonly="1" force_save="1"/>
|
||||
<field name="total_cost" readonly="1" force_save="1"/>
|
||||
<field name="completion_date" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remain_qty" readonly="1" force_save="1"/>
|
||||
<field name="remaining_amount" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="equipment_ra_bill" string="Subcontract Bills/PO">
|
||||
<field name="ra_bill_ids" readonly="stage == 'draft' or progress == 100">
|
||||
<form>
|
||||
<header>
|
||||
<field name="qc_status" widget="statusbar"/>
|
||||
</header>
|
||||
<group>
|
||||
<group>
|
||||
<field name="po_bill" invisible="1"/>
|
||||
<field name="date" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not bill_id or po_bill != 'bill'">
|
||||
<group>
|
||||
<field name="bill_id" readonly="1" widget="many2one_clickable" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="payment_state" widget="badge" decoration-success="payment_state=='paid'" decoration-danger="payment_state=='not_paid'" decoration-info="payment_state=='in_payment'" decoration-primary="payment_state=='partial'" decoration-warning="payment_state=='reversed'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group invisible="not purchase_order_id or po_bill != 'purchase_order'">
|
||||
<group>
|
||||
<field name="purchase_order_id" widget="many2one_clickable" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="state" widget="badge" decoration-success="state == 'purchase' or state == 'done'" decoration-warning="state == 'to approve'" decoration-info="state == 'draft' or state == 'sent'"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qty" required="1" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
<field name="percentage" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="amount" required="1" sum="amount"/>
|
||||
<field name="retention_percentage" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)"/>
|
||||
<field name="retention_amount"/>
|
||||
<field name="final_amount" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="qc_user_id" invisible="not qc_user_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remark" required="0" readonly="purchase_order_id or (qc_status != 'draft' or bill_id)" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
||||
</group>
|
||||
</form>
|
||||
<list decoration-success="qc_status == 'approve'" decoration-danger="qc_status == 'reject'">
|
||||
<field name="date"/>
|
||||
<field name="qty"/>
|
||||
<field name="percentage" sum="percentage"/>
|
||||
<field name="amount" sum="amount"/>
|
||||
<field name="retention_percentage"/>
|
||||
<field name="retention_amount" sum="amount"/>
|
||||
<field name="final_amount"/>
|
||||
<field name="remark"/>
|
||||
<field name="purchase_order_id" widget="many2one_clickable" readonly="1" force_save="1" column_invisible="parent.po_bill == 'bill'"/>
|
||||
<field name="state" widget="badge" column_invisible="parent.po_bill == 'bill'" decoration-success="state == 'purchase' or state == 'done'" decoration-warning="state == 'to approve'" decoration-info="state == 'draft' or state == 'sent'"/>
|
||||
<field name="bill_id" readonly="1" widget="many2one_clickable" force_save="1" column_invisible="parent.po_bill == 'purchase_order'"/>
|
||||
<field name="payment_state" widget="badge" column_invisible="parent.po_bill == 'purchase_order'" decoration-success="payment_state=='paid'" decoration-danger="payment_state=='not_paid'" decoration-info="payment_state=='in_payment'" decoration-primary="payment_state=='partial'" decoration-warning="payment_state=='reversed'"/>
|
||||
<field name="qc_status" widget="badge" decoration-danger="qc_status == 'reject'" decoration-success="qc_status == 'approve'" decoration-info="qc_status == 'request'"/>
|
||||
<button string="QC Request" name="action_quality_check" type="object" class="oe_highlight" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" invisible="qc_status != 'draft'"/>
|
||||
<button string="Approve" name="action_quality_check_approve" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reject" name="action_quality_check_reject" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department,tk_construction_management.advance_construction_qc_user"/>
|
||||
<button string="Reset to Draft" name="action_reset_to_draft" type="object" class="oe_highlight" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department" invisible="qc_status != 'reject'"/>
|
||||
<button string="Create Bill/PO" name="action_create_ra_bill" type="object" class="oe_highlight" invisible="bill_id or (purchase_order_id or qc_status != 'approve')" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="overhead_subcontract_view_tree" model="ir.ui.view">
|
||||
<field name="name">overhead.subcontract.view.tree</field>
|
||||
<field name="model">overhead.subcontract</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="false">
|
||||
<field name="seq"/>
|
||||
<field name="name"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="vendor_id"/>
|
||||
<field name="qty"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="cost"/>
|
||||
<field name="total_cost"/>
|
||||
<field name="stage" widget="badge" decoration-success="stage == 'done'" decoration-warning="stage == 'in_progress'"/>
|
||||
<field name="progress" widget="progressbar"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="overhead_subcontract_view_search" model="ir.ui.view">
|
||||
<field name="name">overhead.subcontract.view.search</field>
|
||||
<field name="model">overhead.subcontract</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="seq"/>
|
||||
<field name="name"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="vendor_id"/>
|
||||
<field name="project_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="task_id"/>
|
||||
<field name="vendor_id"/>
|
||||
<field name="stage"/>
|
||||
<field name="progress"/>
|
||||
<searchpanel>
|
||||
<field name="po_bill" string="Type" enable_counters="1" icon="fa-filter"/>
|
||||
<field name="stage" string="Status" enable_counters="1" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Department" name="group_by_department" context="{'group_by': 'department_id'}"/>
|
||||
<filter string="Project" name="group_by_project" context="{'group_by': 'project_id'}"/>
|
||||
<filter string="Phase(WBS)" name="group_by_phase" context="{'group_by': 'phase_id'}"/>
|
||||
<filter string="Work Order" name="group_by_work_order" context="{'group_by': 'job_order_id'}"/>
|
||||
<filter string="Task" name="group_by_task" context="{'group_by': 'task_id'}"/>
|
||||
<filter string="Vendor" name="group_by_vendor" context="{'group_by': 'vendor_id'}"/>
|
||||
<filter string="Work Type" name="group_by_job_type" context="{'group_by': 'job_type_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="overhead_subcontract_action" model="ir.actions.act_window">
|
||||
<field name="name">Overhead Subcontract</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">overhead.subcontract</field>
|
||||
<field name="view_mode">list,form,search</field>
|
||||
</record>
|
||||
<!-- Material Consume-->
|
||||
<record id="material_consume_view_form" model="ir.ui.view">
|
||||
<field name="name">material.consume.view.form</field>
|
||||
<field name="model">material.consume</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="false">
|
||||
<header>
|
||||
<field name="qc_status" widget="statusbar"/>
|
||||
<button string="QC Request" name="action_quality_check" type="object" class="oe_highlight" invisible="qc_status != 'draft'"/>
|
||||
<button string="Approve" name="action_quality_check_approve" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button string="Reject" name="action_quality_check_reject" type="object" class="oe_highlight" invisible="qc_status != 'request'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button string="Reset to Draft" name="action_reset_to_draft" type="object" class="oe_highlight" invisible="qc_status not in ['reject', 'cancel']"/>
|
||||
<button string="Create Consume Order" name="action_create_consume_order" type="object" class="oe_highlight" invisible="consume_order_id or qc_status != 'approve'" groups="tk_construction_management.advance_construction_manager,tk_construction_management.advance_construction_department"/>
|
||||
<button name="action_cancel_consume_order" type="object" string="Cancel" class="btn btn-danger" invisible="qc_status in ['approve', 'reject', 'cancel']"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h1>
|
||||
<field name="seq"/>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="date" required="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="warehouse_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<group string="Project Details">
|
||||
<field name="project_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="job_order_id" readonly="1" force_save="1"/>
|
||||
<field name="task_id"/>
|
||||
</group>
|
||||
<group string="Department Details">
|
||||
<field name="department_id"/>
|
||||
<field name="manager_ids" readonly="1" force_save="1" widget="many2many_tags"/>
|
||||
<field name="user_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<hr/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="remark" required="0" readonly="qc_status != 'draft'"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="qc_user_id" readonly="1" force_save="1" invisible="not qc_user_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
||||
</group>
|
||||
<br/>
|
||||
<group invisible="not consume_order_id">
|
||||
<group>
|
||||
<field name="consume_order_id" readonly="1" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="state" widget="badge" decoration-danger="state=='cancel'" decoration-info="state== 'assigned'" decoration-muted="state == 'draft'" decoration-success="state == 'done'" decoration-warning="state not in ('draft','cancel','done','assigned')"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Consume Orders">
|
||||
<field name="consume_order_ids" create="false">
|
||||
<list editable="bottom">
|
||||
<field name="material_id" readonly="1" force_save="1"/>
|
||||
<field name="name" readonly="1" force_save="1"/>
|
||||
<field name="qc_status" invisible="1"/>
|
||||
<field name="qty" readonly="qc_status != 'draft'"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="material_line_id" invisible="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="material_consume_view_tree" model="ir.ui.view">
|
||||
<field name="name">material.consume.view.tree</field>
|
||||
<field name="model">material.consume</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="seq"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="qc_status" widget="badge" decoration-danger="qc_status == 'reject'" decoration-success="qc_status == 'approve'" decoration-info="qc_status == 'request'"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
<record id="material_consume_view_search" model="ir.ui.view">
|
||||
<field name="name">material.consume.view.search</field>
|
||||
<field name="model">material.consume</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="seq"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="job_order_id"/>
|
||||
<field name="project_id"/>
|
||||
<field name="task_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="qc_status"/>
|
||||
<searchpanel>
|
||||
<field name="qc_status" string="Status" enable_counters="1" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Department" name="group_by_department" context="{'group_by': 'department_id'}"/>
|
||||
<filter string="Project" name="group_by_project" context="{'group_by': 'project_id'}"/>
|
||||
<filter string="Phase(WBS)" name="group_by_phase" context="{'group_by': 'phase_id'}"/>
|
||||
<filter string="Work Order" name="group_by_work_order" context="{'group_by': 'job_order_id'}"/>
|
||||
<filter string="Task" name="group_by_task" context="{'group_by': 'task_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="material_consume_action" model="ir.actions.act_window">
|
||||
<field name="name">Material Quality Check</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">material.consume</field>
|
||||
<field name="view_mode">list,form,search</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user