Revert "chore(plating): retire fusion_plating_culture — not a priority"
This reverts commit 95310c459d.
This commit is contained in:
43
fusion_plating/fusion_plating_culture/views/fp_menu.xml
Normal file
43
fusion_plating/fusion_plating_culture/views/fp_menu.xml
Normal file
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2026 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Plating product family.
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<!-- ===== CULTURE (top-level under Plating app) ===== -->
|
||||
<menuitem id="menu_fp_culture_root"
|
||||
name="Culture"
|
||||
parent="fusion_plating.menu_fp_root"
|
||||
sequence="80"
|
||||
groups="fusion_plating.group_fusion_plating_operator"/>
|
||||
|
||||
<menuitem id="menu_fp_values"
|
||||
name="Values"
|
||||
parent="menu_fp_culture_root"
|
||||
action="action_fp_value"
|
||||
sequence="10"/>
|
||||
|
||||
<menuitem id="menu_fp_recognitions"
|
||||
name="Recognitions"
|
||||
parent="menu_fp_culture_root"
|
||||
action="action_fp_value_recognition"
|
||||
sequence="20"/>
|
||||
|
||||
<!-- ===== CULTURE CONFIGURATION (under core Configuration menu) ===== -->
|
||||
<menuitem id="menu_fp_value_sets"
|
||||
name="Value Sets"
|
||||
parent="fusion_plating.menu_fp_config"
|
||||
action="action_fp_value_set"
|
||||
sequence="100"
|
||||
groups="fusion_plating.group_fusion_plating_manager"/>
|
||||
|
||||
<menuitem id="menu_fp_value_rotations"
|
||||
name="Value Rotations"
|
||||
parent="fusion_plating.menu_fp_config"
|
||||
action="action_fp_value_rotation"
|
||||
sequence="110"
|
||||
groups="fusion_plating.group_fusion_plating_manager"/>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,158 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2026 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Plating product family.
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<record id="view_fp_value_recognition_list" model="ir.ui.view">
|
||||
<field name="name">fp.value.recognition.list</field>
|
||||
<field name="model">fusion.plating.value.recognition</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Recognitions">
|
||||
<field name="reference"/>
|
||||
<field name="name"/>
|
||||
<field name="recognized_employee_id"/>
|
||||
<field name="value_id"/>
|
||||
<field name="nominated_by_id"/>
|
||||
<field name="nomination_date"/>
|
||||
<field name="state" widget="badge"
|
||||
decoration-info="state == 'draft'"
|
||||
decoration-success="state == 'published'"
|
||||
decoration-muted="state == 'archived'"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_value_recognition_form" model="ir.ui.view">
|
||||
<field name="name">fp.value.recognition.form</field>
|
||||
<field name="model">fusion.plating.value.recognition</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Recognition">
|
||||
<header>
|
||||
<button name="action_publish"
|
||||
type="object"
|
||||
string="Publish"
|
||||
class="btn-primary"
|
||||
invisible="state != 'draft'"/>
|
||||
<button name="action_archive_recognition"
|
||||
type="object"
|
||||
string="Archive"
|
||||
invisible="state != 'published'"/>
|
||||
<button name="action_reset_to_draft"
|
||||
type="object"
|
||||
string="Reset to Draft"
|
||||
invisible="state == 'draft'"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,published,archived"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" placeholder="e.g. Sarah stayed late for the customer"/></h1>
|
||||
<div class="text-muted">
|
||||
<field name="reference"/>
|
||||
</div>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="recognized_employee_id"/>
|
||||
<field name="value_id"/>
|
||||
<field name="set_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="nominated_by_id"/>
|
||||
<field name="nomination_date"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Story">
|
||||
<field name="story" placeholder="What happened? Describe the moment you saw the value being lived."/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_value_recognition_kanban" model="ir.ui.view">
|
||||
<field name="name">fp.value.recognition.kanban</field>
|
||||
<field name="model">fusion.plating.value.recognition</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban default_group_by="state" class="o_fp_recognition_kanban">
|
||||
<field name="id"/>
|
||||
<field name="name"/>
|
||||
<field name="reference"/>
|
||||
<field name="recognized_employee_id"/>
|
||||
<field name="value_id"/>
|
||||
<field name="nomination_date"/>
|
||||
<field name="state"/>
|
||||
<field name="color"/>
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div t-attf-class="o_fp_recognition_card oe_kanban_color_#{record.color.raw_value}">
|
||||
<div class="d-flex align-items-start justify-content-between">
|
||||
<strong><field name="name"/></strong>
|
||||
<i class="fa fa-thumbs-up text-muted" aria-hidden="true"/>
|
||||
</div>
|
||||
<div class="mt-2 small text-muted">
|
||||
<i class="fa fa-user me-1" aria-hidden="true"/>
|
||||
<field name="recognized_employee_id"/>
|
||||
</div>
|
||||
<div class="mt-1 small text-muted">
|
||||
<i class="fa fa-star me-1" aria-hidden="true"/>
|
||||
<field name="value_id"/>
|
||||
</div>
|
||||
<div class="mt-1 small text-muted">
|
||||
<field name="nomination_date"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_value_recognition_search" model="ir.ui.view">
|
||||
<field name="name">fp.value.recognition.search</field>
|
||||
<field name="model">fusion.plating.value.recognition</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Recognitions">
|
||||
<field name="name"/>
|
||||
<field name="recognized_employee_id"/>
|
||||
<field name="value_id"/>
|
||||
<field name="nominated_by_id"/>
|
||||
<filter string="Draft" name="draft" domain="[('state', '=', 'draft')]"/>
|
||||
<filter string="Published" name="published" domain="[('state', '=', 'published')]"/>
|
||||
<filter string="Archived" name="archived_state" domain="[('state', '=', 'archived')]"/>
|
||||
<separator/>
|
||||
<filter string="My Nominations" name="my_nominations"
|
||||
domain="[('nominated_by_id', '=', uid)]"/>
|
||||
<group>
|
||||
<filter string="Employee" name="group_employee" context="{'group_by': 'recognized_employee_id'}"/>
|
||||
<filter string="Value" name="group_value" context="{'group_by': 'value_id'}"/>
|
||||
<filter string="Status" name="group_state" context="{'group_by': 'state'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_value_recognition" model="ir.actions.act_window">
|
||||
<field name="name">Recognitions</field>
|
||||
<field name="res_model">fusion.plating.value.recognition</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Recognize a teammate
|
||||
</p>
|
||||
<p>
|
||||
Record peer recognitions tied to a specific value — a
|
||||
shout-out for someone living the fundamentals in their
|
||||
daily work.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2026 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Plating product family.
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<record id="view_fp_value_rotation_list" model="ir.ui.view">
|
||||
<field name="name">fp.value.rotation.list</field>
|
||||
<field name="model">fusion.plating.value.rotation</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Rotations">
|
||||
<field name="name"/>
|
||||
<field name="set_id"/>
|
||||
<field name="rotation_period"/>
|
||||
<field name="current_value_id"/>
|
||||
<field name="last_rotation_date"/>
|
||||
<field name="next_rotation_date"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_value_rotation_form" model="ir.ui.view">
|
||||
<field name="name">fp.value.rotation.form</field>
|
||||
<field name="model">fusion.plating.value.rotation</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Rotation">
|
||||
<header>
|
||||
<button name="action_advance"
|
||||
type="object"
|
||||
string="Advance Now"
|
||||
class="btn-primary"
|
||||
invisible="not active"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" placeholder="e.g. Weekly Fundamental"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="set_id"/>
|
||||
<field name="rotation_period"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="current_value_id"/>
|
||||
<field name="last_rotation_date"/>
|
||||
<field name="next_rotation_date"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</group>
|
||||
</group>
|
||||
<p class="text-muted mt-3">
|
||||
This module does not ship an ir.cron — wire one to
|
||||
<code>fusion.plating.value.rotation._cron_advance_rotation</code>
|
||||
if you want automatic advancement, or click
|
||||
<em>Advance Now</em> manually at a stand-up.
|
||||
</p>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_value_rotation" model="ir.actions.act_window">
|
||||
<field name="name">Rotations</field>
|
||||
<field name="res_model">fusion.plating.value.rotation</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Set up a rotation schedule
|
||||
</p>
|
||||
<p>
|
||||
A rotation surfaces a "Fundamental of the Day/Week/Month"
|
||||
from one of your value sets.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,106 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2026 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Plating product family.
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<record id="view_fp_value_set_list" model="ir.ui.view">
|
||||
<field name="name">fp.value.set.list</field>
|
||||
<field name="model">fusion.plating.value.set</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Value Sets">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="value_count"/>
|
||||
<field name="is_primary" widget="boolean_toggle"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_value_set_form" model="ir.ui.view">
|
||||
<field name="name">fp.value.set.form</field>
|
||||
<field name="model">fusion.plating.value.set</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Value Set">
|
||||
<header/>
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Primary" bg_color="text-bg-success" invisible="not is_primary"/>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" placeholder="e.g. Our Way, Core Fundamentals"/></h1>
|
||||
<div class="text-muted">
|
||||
<field name="code" placeholder="our_way"/>
|
||||
</div>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="is_primary"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="value_count"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Description">
|
||||
<field name="description" placeholder="What does this set represent? How does the shop use it?"/>
|
||||
</page>
|
||||
<page string="Values">
|
||||
<field name="value_ids" context="{'default_set_id': id}">
|
||||
<list editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="number"/>
|
||||
<field name="name"/>
|
||||
<field name="icon"/>
|
||||
<field name="color" widget="color_picker" optional="show"/>
|
||||
<field name="recognition_count" optional="hide"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_value_set_search" model="ir.ui.view">
|
||||
<field name="name">fp.value.set.search</field>
|
||||
<field name="model">fusion.plating.value.set</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Value Sets">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<filter string="Primary" name="primary" domain="[('is_primary', '=', True)]"/>
|
||||
<filter string="Archived" name="archived" domain="[('active', '=', False)]"/>
|
||||
<group>
|
||||
<filter string="Company" name="group_company" context="{'group_by': 'company_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_value_set" model="ir.actions.act_window">
|
||||
<field name="name">Value Sets</field>
|
||||
<field name="res_model">fusion.plating.value.set</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create your shop's first value set
|
||||
</p>
|
||||
<p>
|
||||
A value set is your shop's named collection of fundamentals,
|
||||
core behaviours, or beliefs. Nothing ships pre-loaded — each
|
||||
shop defines its own.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
134
fusion_plating/fusion_plating_culture/views/fp_value_views.xml
Normal file
134
fusion_plating/fusion_plating_culture/views/fp_value_views.xml
Normal file
@@ -0,0 +1,134 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2026 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Plating product family.
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<record id="view_fp_value_list" model="ir.ui.view">
|
||||
<field name="name">fp.value.list</field>
|
||||
<field name="model">fusion.plating.value</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Values">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="number"/>
|
||||
<field name="name"/>
|
||||
<field name="set_id"/>
|
||||
<field name="recognition_count"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_value_form" model="ir.ui.view">
|
||||
<field name="name">fp.value.form</field>
|
||||
<field name="model">fusion.plating.value</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Value">
|
||||
<header/>
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" placeholder="e.g. Do What's Best for the Customer"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="set_id"/>
|
||||
<field name="number"/>
|
||||
<field name="sequence"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="icon" placeholder="fa-star"/>
|
||||
<field name="color" widget="color_picker"/>
|
||||
<field name="recognition_count"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Description">
|
||||
<field name="description" placeholder="What does this value mean? How does it show up in daily work?"/>
|
||||
</page>
|
||||
<page string="Stories & Examples">
|
||||
<field name="examples" placeholder="Stories of people living this value."/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_value_kanban" model="ir.ui.view">
|
||||
<field name="name">fp.value.kanban</field>
|
||||
<field name="model">fusion.plating.value</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban default_group_by="set_id" class="o_fp_value_kanban">
|
||||
<field name="id"/>
|
||||
<field name="name"/>
|
||||
<field name="number"/>
|
||||
<field name="icon"/>
|
||||
<field name="color"/>
|
||||
<field name="set_id"/>
|
||||
<field name="recognition_count"/>
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div t-attf-class="o_fp_value_card oe_kanban_color_#{record.color.raw_value}">
|
||||
<div class="d-flex align-items-start justify-content-between">
|
||||
<div class="o_fp_value_number">
|
||||
<t t-if="record.number.raw_value">
|
||||
#<field name="number"/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<i t-attf-class="fa #{record.icon.raw_value or 'fa-star'}" aria-hidden="true"/>
|
||||
</t>
|
||||
</div>
|
||||
<i t-attf-class="fa #{record.icon.raw_value or 'fa-star'} o_fp_value_icon text-muted" aria-hidden="true"/>
|
||||
</div>
|
||||
<div class="o_fp_value_name mt-2">
|
||||
<strong><field name="name"/></strong>
|
||||
</div>
|
||||
<div class="o_fp_value_meta mt-2 small text-muted">
|
||||
<i class="fa fa-thumbs-up me-1" aria-hidden="true"/>
|
||||
<field name="recognition_count"/> recognitions
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_value_search" model="ir.ui.view">
|
||||
<field name="name">fp.value.search</field>
|
||||
<field name="model">fusion.plating.value</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Values">
|
||||
<field name="name"/>
|
||||
<field name="set_id"/>
|
||||
<field name="number"/>
|
||||
<filter string="Archived" name="archived" domain="[('active', '=', False)]"/>
|
||||
<group>
|
||||
<filter string="Set" name="group_set" context="{'group_by': 'set_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_value" model="ir.actions.act_window">
|
||||
<field name="name">Values</field>
|
||||
<field name="res_model">fusion.plating.value</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Add a value to your shop's set
|
||||
</p>
|
||||
<p>
|
||||
Values are your shop's fundamentals — short, memorable
|
||||
statements of how people are expected to behave. Create a
|
||||
Value Set first, then add values to it.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2026 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Plating product family.
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<record id="view_hr_employee_form_fp_culture" model="ir.ui.view">
|
||||
<field name="name">hr.employee.form.fp.culture</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//notebook" position="inside">
|
||||
<page string="Culture" name="fp_culture">
|
||||
<group>
|
||||
<group>
|
||||
<field name="x_fc_recognition_count"/>
|
||||
<field name="x_fc_last_recognized_date"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="x_fc_recognition_ids" readonly="1">
|
||||
<list>
|
||||
<field name="reference"/>
|
||||
<field name="name"/>
|
||||
<field name="value_id"/>
|
||||
<field name="nominated_by_id"/>
|
||||
<field name="nomination_date"/>
|
||||
<field name="state" widget="badge"
|
||||
decoration-info="state == 'draft'"
|
||||
decoration-success="state == 'published'"
|
||||
decoration-muted="state == 'archived'"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user