First Commit

This commit is contained in:
2026-05-31 10:17:09 +07:00
commit 17a9c69379
4547 changed files with 1170384 additions and 0 deletions
@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_grt_ifc_kpi_dashboard_list" model="ir.ui.view">
<field name="name">grt.ifc.kpi.dashboard.list</field>
<field name="model">grt.ifc.kpi.dashboard</field>
<field name="arch" type="xml">
<list string="IFC KPI Dashboard" create="0" edit="0" delete="0">
<field name="name"/>
<field name="total_count"/>
<field name="in_validation_count"/>
<field name="waiting_production_count"/>
<field name="waiting_provisioning_count"/>
<field name="approved_count"/>
<field name="approved_month_count"/>
<field name="rejected_count"/>
</list>
</field>
</record>
<record id="view_grt_ifc_kpi_dashboard_form" model="ir.ui.view">
<field name="name">grt.ifc.kpi.dashboard.form</field>
<field name="model">grt.ifc.kpi.dashboard</field>
<field name="arch" type="xml">
<form string="IFC KPI Dashboard" create="0" edit="0" delete="0">
<sheet>
<group>
<field name="name" readonly="1"/>
<field name="company_id" readonly="1"/>
</group>
<group string="My KPI Cards">
<button name="action_open_my_todo" type="object" class="oe_stat_button" icon="fa-tasks">
<field name="my_todo_count" widget="statinfo" string="My To Do"/>
</button>
<button name="action_open_my_overdue" type="object" class="oe_stat_button" icon="fa-exclamation-triangle">
<field name="my_overdue_count" widget="statinfo" string="My Overdue"/>
</button>
<button name="action_open_my_validation" type="object" class="oe_stat_button" icon="fa-check-square">
<field name="my_validation_count" widget="statinfo" string="My Validation"/>
</button>
<button name="action_open_my_production" type="object" class="oe_stat_button" icon="fa-industry">
<field name="my_production_count" widget="statinfo" string="My Produksi"/>
</button>
<button name="action_open_my_provisioning" type="object" class="oe_stat_button" icon="fa-cubes">
<field name="my_provisioning_count" widget="statinfo" string="My Provisioning"/>
</button>
</group>
<group string="Approval Workload">
<button name="action_open_waiting_production" type="object" class="oe_stat_button" icon="fa-clock-o">
<field name="waiting_production_count" widget="statinfo" string="Pending Produksi"/>
</button>
<button name="action_open_waiting_provisioning" type="object" class="oe_stat_button" icon="fa-hourglass-half">
<field name="waiting_provisioning_count" widget="statinfo" string="Pending Provisioning"/>
</button>
<button name="action_open_validation" type="object" class="oe_stat_button" icon="fa-check-square-o">
<field name="in_validation_count" widget="statinfo" string="In Validation"/>
</button>
</group>
<group string="Outcome">
<button name="action_open_approved" type="object" class="oe_stat_button" icon="fa-thumbs-up">
<field name="approved_count" widget="statinfo" string="Approved"/>
</button>
<button name="action_open_rejected" type="object" class="oe_stat_button" icon="fa-thumbs-down">
<field name="rejected_count" widget="statinfo" string="Rejected"/>
</button>
<button name="action_open_all_documents" type="object" class="oe_stat_button" icon="fa-folder-open">
<field name="total_count" widget="statinfo" string="Total Documents"/>
</button>
</group>
<group>
<field name="approved_month_count" readonly="1"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_grt_ifc_kpi_dashboard_graph" model="ir.ui.view">
<field name="name">grt.ifc.kpi.dashboard.graph</field>
<field name="model">grt.ifc.kpi.dashboard</field>
<field name="arch" type="xml">
<graph string="IFC KPI Dashboard" type="bar">
<field name="name" type="row"/>
<field name="in_validation_count" type="measure"/>
<field name="waiting_production_count" type="measure"/>
<field name="waiting_provisioning_count" type="measure"/>
<field name="approved_count" type="measure"/>
<field name="rejected_count" type="measure"/>
</graph>
</field>
</record>
<record id="view_grt_ifc_kpi_dashboard_pivot" model="ir.ui.view">
<field name="name">grt.ifc.kpi.dashboard.pivot</field>
<field name="model">grt.ifc.kpi.dashboard</field>
<field name="arch" type="xml">
<pivot string="IFC KPI Dashboard">
<field name="name" type="row"/>
<field name="in_validation_count" type="measure"/>
<field name="waiting_production_count" type="measure"/>
<field name="waiting_provisioning_count" type="measure"/>
<field name="approved_count" type="measure"/>
<field name="rejected_count" type="measure"/>
</pivot>
</field>
</record>
<record id="action_grt_ifc_kpi_dashboard" model="ir.actions.act_window">
<field name="name">Engineering KPI Dashboard</field>
<field name="res_model">grt.ifc.kpi.dashboard</field>
<field name="view_mode">list,form,graph,pivot</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">Pantau KPI approval dokumen IFC per perusahaan.</p>
</field>
</record>
</odoo>
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="action_grt_ifc_engineering_document" model="ir.actions.act_window">
<field name="name">Engineering IFC Documents</field>
<field name="res_model">grt.ifc.project</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_grt_ifc_project_search_engineering"/>
<field name="context">{'search_default_filter_my_documents': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">Buat dokumen IFC engineering pertama Anda</p>
</field>
</record>
<record id="view_grt_ifc_project_search_engineering" model="ir.ui.view">
<field name="name">grt.ifc.project.search.engineering</field>
<field name="model">grt.ifc.project</field>
<field name="arch" type="xml">
<search string="Engineering IFC Documents">
<field name="name"/>
<field name="document_ref"/>
<field name="uploaded_by_id"/>
<filter name="filter_my_documents" string="My Documents" domain="[('uploaded_by_id', '=', uid)]"/>
<filter name="filter_waiting_production" string="Waiting Produksi" domain="[('approval_state', '=', 'waiting_production')]"/>
<filter name="filter_waiting_provisioning" string="Waiting Provisioning" domain="[('approval_state', '=', 'waiting_provisioning')]"/>
<filter name="filter_approved" string="Approved" domain="[('approval_state', '=', 'approved')]"/>
<group expand="0" string="Group By">
<filter name="group_uploaded_by" string="Uploaded By" context="{'group_by': 'uploaded_by_id'}"/>
<filter name="group_approval_state" string="Approval State" context="{'group_by': 'approval_state'}"/>
</group>
</search>
</field>
</record>
<menuitem
id="menu_grt_ifc_document_management"
name="Document Management"
parent="grt_ifcopenshell.menu_grt_ifc_root"
action="action_grt_ifc_engineering_document"
sequence="20"
groups="base.group_user"
/>
<menuitem
id="menu_grt_ifc_kpi_dashboard"
name="KPI Dashboard"
parent="menu_grt_ifc_document_management"
action="action_grt_ifc_kpi_dashboard"
sequence="30"
groups="base.group_user"
/>
</odoo>
@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_grt_ifc_project_tree_inherit_engineering" model="ir.ui.view">
<field name="name">grt.ifc.project.tree.inherit.engineering</field>
<field name="model">grt.ifc.project</field>
<field name="inherit_id" ref="grt_ifcopenshell.view_grt_ifc_project_tree"/>
<field name="arch" type="xml">
<xpath expr="//list/field[@name='name']" position="before">
<field name="document_ref"/>
</xpath>
<xpath expr="//list/field[@name='state']" position="before">
<field name="approval_state"/>
<field name="last_revision_label" optional="show"/>
</xpath>
</field>
</record>
<record id="view_grt_ifc_project_form_inherit_engineering" model="ir.ui.view">
<field name="name">grt.ifc.project.form.inherit.engineering</field>
<field name="model">grt.ifc.project</field>
<field name="inherit_id" ref="grt_ifcopenshell.view_grt_ifc_project_form"/>
<field name="arch" type="xml">
<xpath expr="//form/header" position="inside">
<button name="action_request_validation"
string="Request Validation"
type="object"
class="btn-secondary"
invisible="state != 'parsed' or approval_state not in ('draft', 'rejected')"/>
<button name="action_submit_for_approval"
string="Submit Approval"
type="object"
class="btn-primary"
invisible="state != 'parsed' or approval_state not in ('draft', 'in_validation', 'rejected')"/>
<button name="action_approve_production"
string="Approve Produksi"
type="object"
class="btn-primary"
groups="grt_product_engineering.group_ifc_manager_production"
invisible="approval_state != 'waiting_production'"/>
<button name="action_approve_provisioning"
string="Approve Provisioning"
type="object"
class="btn-primary"
groups="grt_product_engineering.group_ifc_manager_provisioning"
invisible="approval_state != 'waiting_provisioning'"/>
<button name="action_reject_document"
string="Reject"
type="object"
class="btn-secondary"
groups="grt_product_engineering.group_ifc_manager_production,grt_product_engineering.group_ifc_manager_provisioning"
invisible="approval_state not in ('in_validation', 'waiting_production', 'waiting_provisioning')"/>
<button name="action_back_to_draft"
string="Back to Draft"
type="object"
class="btn-secondary"
invisible="approval_state == 'draft'"/>
<field name="approval_state" widget="statusbar" statusbar_visible="draft,in_validation,waiting_production,waiting_provisioning,approved,rejected"/>
</xpath>
<xpath expr="//form/sheet" position="inside">
<div class="oe_button_box" name="button_box">
<button name="action_view_estimated_bom"
type="object"
class="oe_stat_button"
icon="fa-sitemap"
invisible="estimated_bom_count == 0">
<field name="estimated_bom_count" widget="statinfo" string="Estimated BoM"/>
</button>
</div>
</xpath>
<xpath expr="//form/sheet/group[1]" position="before">
<group string="Document Management">
<group>
<field name="document_ref"/>
<field name="uploaded_date"/>
<field name="uploaded_by_id"/>
<field name="last_update"/>
</group>
<group>
<field name="last_revision_label"/>
<field name="last_revision_date"/>
<field name="revised_by_id"/>
<field name="last_revision_note"/>
</group>
</group>
</xpath>
<xpath expr="//group[field[@name='sample_file_key']]" position="inside">
<field name="revision_note_input" placeholder="Catatan perubahan revisi..."/>
</xpath>
<xpath expr="//form/sheet/notebook" position="inside">
<page string="Revisions">
<field name="revision_ids" readonly="1">
<list string="Revision History" create="0" delete="0">
<field name="revision_label"/>
<field name="revision_date"/>
<field name="revised_by_id"/>
<field name="revision_note"/>
<field name="is_current"/>
<field name="file_name" optional="show"/>
</list>
</field>
</page>
<page string="Approval &amp; Activity History">
<field name="history_ids" readonly="1">
<list string="Activity History" create="0" delete="0">
<field name="activity_date"/>
<field name="activity_type"/>
<field name="user_id"/>
<field name="state_snapshot"/>
<field name="note"/>
</list>
</field>
</page>
<page string="BoM Estimation">
<group>
<field name="estimated_product_tmpl_id"/>
<field name="estimated_bom_id" readonly="1"/>
</group>
<group>
<button name="action_create_bom_estimate" type="object" class="btn-primary" string="Generate / Update Estimated BoM"/>
</group>
</page>
</xpath>
<xpath expr="//form" position="inside">
<chatter/>
</xpath>
</field>
</record>
</odoo>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_mrp_bom_form_inherit_ifc_project" model="ir.ui.view">
<field name="name">mrp.bom.form.inherit.ifc.project</field>
<field name="model">mrp.bom</field>
<field name="inherit_id" ref="mrp.mrp_bom_form_view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='code']" position="after">
<field name="ifc_project_id" readonly="1"/>
</xpath>
</field>
</record>
</odoo>