[IMP] hr, hr_*, project, sale, sales_team, stock: in dashboards, add color picker, add domains on reports and style improvements
This commit is contained in:
@@ -46,8 +46,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div t-if="widget.view.is_action_enabled('edit')" class="row o_kanban_card_manage_settings">
|
||||
<a type="edit">Settings</a>
|
||||
|
||||
<div t-if="widget.view.is_action_enabled('edit')" class="o_kanban_card_manage_settings row">
|
||||
<div class="col-xs-8">
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
</div>
|
||||
<div class="col-xs-4 text-right">
|
||||
<a type="edit">Settings</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.o_hr_kanban {
|
||||
.oe_kanban_view.o_kanban_dashboard.o_hr_kanban {
|
||||
.oe_kanban_record {
|
||||
max-width: 500px !important;
|
||||
min-width: 400px !important;
|
||||
min-height: 200px !important;
|
||||
max-width: 500px;
|
||||
min-width: 400px;
|
||||
min-height: 200px;
|
||||
}
|
||||
}
|
||||
@@ -79,6 +79,7 @@ class hr_attendance(osv.osv):
|
||||
'action': fields.selection([('sign_in', 'Sign In'), ('sign_out', 'Sign Out'), ('action','Action')], 'Action', required=True),
|
||||
'action_desc': fields.many2one("hr.action.reason", "Action Reason", domain="[('action_type', '=', action)]", help='Specifies the reason for Signing In/Signing Out in case of extra hours.'),
|
||||
'employee_id': fields.many2one('hr.employee', "Employee", required=True, select=True),
|
||||
'department_id': fields.many2one('hr.department', "Department", related="employee_id.department_id"),
|
||||
'worked_hours': fields.function(_worked_hours_compute, type='float', string='Worked Hours', store=True),
|
||||
}
|
||||
_defaults = {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
<search string="Hr Attendance Search">
|
||||
<field name="name" string="Attendance"/>
|
||||
<field name="action"/>
|
||||
<field name="department_id"/>
|
||||
<filter string="Today" name="today" domain="[('name','>=',datetime.datetime.now().replace(hour=0, minute=0, second=0)),('name','<=',datetime.datetime.now().replace(hour=23, minute=59, second=59))]" />
|
||||
<filter string="Current Month" domain="[('name','>=', datetime.datetime.now().strftime('%Y-%m-01'))]" />
|
||||
<separator/>
|
||||
@@ -107,6 +108,18 @@
|
||||
<field name="view_id"></field> <!-- force empty -->
|
||||
</record>
|
||||
|
||||
<record id="action_hr_attendance_graph_filtered" model="ir.actions.act_window">
|
||||
<field name="name">Attendance Analysis</field>
|
||||
<field name="res_model">hr.attendance</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">pivot,graph</field>
|
||||
<field name="context">{
|
||||
'search_default_department_id': [active_id],
|
||||
'default_department_id': active_id}
|
||||
</field>
|
||||
<field name="view_id"></field> <!-- force empty -->
|
||||
</record>
|
||||
|
||||
<menuitem id="timesheet_menu_root" name="Timesheets" sequence="10" icon="fa-user" groups="base.group_user,base.group_hr_user,base.group_hr_manager"/>
|
||||
<menuitem id="menu_hr_time_tracking" name="Time Tracking" parent="timesheet_menu_root" sequence="5" />
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_manage_reports')]" position="inside">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-left">
|
||||
<a name="%(action_hr_attendance_graph)d" type="action">
|
||||
<a name="%(action_hr_attendance_graph_filtered)d" type="action">
|
||||
Attendances
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_manage_reports')]" position="inside">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-left">
|
||||
<a name="%(action_evaluation_report_all)d" type="action">
|
||||
<a name="%(action_evaluation_report_filtered)d" type="action">
|
||||
Appraisals
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -63,6 +63,22 @@
|
||||
<field name="search_view_id" ref="view_evaluation_report_search"/>
|
||||
</record>
|
||||
|
||||
<record id="action_evaluation_report_filtered" model="ir.actions.act_window">
|
||||
<field name="name">Appraisal Analysis</field>
|
||||
<field name="res_model">hr.evaluation.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">pivot,graph</field>
|
||||
<field name="context">{
|
||||
'search_default_year':1,
|
||||
'search_default_month':1,
|
||||
'search_default_employee':1,
|
||||
'search_default_department_id': [active_id],
|
||||
'default_department_id': active_id
|
||||
}
|
||||
</field>
|
||||
<field name="search_view_id" ref="view_evaluation_report_search"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window.view" id="action_evaluation_view_report_pivot">
|
||||
<field name="sequence" eval="2"/>
|
||||
<field name="view_mode">pivot</field>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_manage_reports')]" position="inside">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-left">
|
||||
<a name="%(action_hr_expense_report_all)d" type="action">
|
||||
<a name="%(action_hr_expense_report_filtered)d" type="action">
|
||||
Expenses
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -67,6 +67,21 @@
|
||||
<field name="search_view_id" ref="view_hr_expense_report_search"/>
|
||||
</record>
|
||||
|
||||
<record id="action_hr_expense_report_filtered" model="ir.actions.act_window">
|
||||
<field name="name">Expenses Analysis</field>
|
||||
<field name="res_model">hr.expense.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">pivot,graph</field>
|
||||
<field name="context">{
|
||||
'search_default_year':1,
|
||||
'search_default_month':1,
|
||||
'search_default_employee':1,
|
||||
'search_default_department_id': [active_id],
|
||||
'default_department_id': active_id}
|
||||
</field>
|
||||
<field name="search_view_id" ref="view_hr_expense_report_search"/>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_hr_expense_report_all" id="menu_hr_expense_analysis" parent="menu_hr_expense_report" sequence="1"/>
|
||||
|
||||
</data>
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_primary_right')]" position="after">
|
||||
<div class="col-xs-12 o_kanban_primary_bottom">
|
||||
<field name="absence_of_today" widget="progress" options="{'title': 'Absence', 'current_value': 'absence_of_today', 'max_value': 'total_employee'}"/>
|
||||
<field name="absence_of_today" widget="progress" options="{'title': 'Absence', 'current_value': 'absence_of_today', 'max_value': 'total_employee', 'editable': false}"/>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_manage_reports')]" position="inside">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-left">
|
||||
<a name="%(action_hr_holidays_leaves_analysis)d" type="action">
|
||||
<a name="%(action_hr_holidays_leaves_analysis_filtered)d" type="action">
|
||||
Leaves
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -702,5 +702,18 @@
|
||||
<field name="search_view_id" ref="view_hr_holidays_filter"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_hr_holidays_leaves_analysis_filtered">
|
||||
<field name="name">Leaves Analysis</field>
|
||||
<field name="res_model">hr.holidays</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">pivot,graph</field>
|
||||
<field name="domain">[('holiday_type','=','employee')]</field>
|
||||
<field name="context">{
|
||||
'search_default_department_id': [active_id],
|
||||
'default_department_id': active_id}
|
||||
</field>
|
||||
<field name="search_view_id" ref="view_hr_holidays_filter"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_manage_reports')]" position="inside">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-left">
|
||||
<a name="%(action_hr_recruitment_report_all)d" type="action">
|
||||
<a name="%(action_hr_recruitment_report_filtered_department)d" type="action">
|
||||
Recruitments
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<odoo>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_hr_job_new_application">
|
||||
<record model="ir.actions.act_window" id="action_hr_job_new_application">
|
||||
<field name="name">New Application</field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="view_type">form</field>
|
||||
@@ -43,49 +43,49 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="container o_kanban_card_content o_visible">
|
||||
<t t-if="record.state.raw_value == 'recruit'">
|
||||
<div class="row">
|
||||
<div class="col-xs-6 o_kanban_primary_left">
|
||||
<button class="btn btn-primary" name="%(action_hr_job_applications)d" type="action"><t t-esc="record.application_ids.raw_value.length"/> Application(s)</button>
|
||||
</div>
|
||||
<div class="col-xs-6 o_kanban_primary_right">
|
||||
<div t-if="record.document_ids.raw_value.length > 0" class="row">
|
||||
<div class="col-xs-9">
|
||||
<a name="action_get_attachment_tree_view" type="object">
|
||||
Document(s)
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<span><t t-esc="record.document_ids.raw_value.length"/></span>
|
||||
</div>
|
||||
</div>
|
||||
<t t-if="record.state.raw_value == 'recruit'">
|
||||
<div class="row">
|
||||
<div class="col-xs-6 o_kanban_primary_left">
|
||||
<button class="btn btn-primary" name="%(action_hr_job_applications)d" type="action"><t t-esc="record.application_ids.raw_value.length"/> Application(s)</button>
|
||||
</div>
|
||||
<div class="col-xs-6 o_kanban_primary_right">
|
||||
<div t-if="record.document_ids.raw_value.length > 0" class="row">
|
||||
<div class="col-xs-9">
|
||||
<a name="action_get_attachment_tree_view" type="object">
|
||||
Document(s)
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<span><t t-esc="record.document_ids.raw_value.length"/></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<a t-if="record.survey_id.raw_value" name="action_print_survey" type="object" class="oe_kanban_action">Print Interview</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<a t-if="record.survey_id.raw_value" name="action_print_survey" type="object" class="oe_kanban_action">Print Interview</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<a t-if="record.state.raw_value == 'recruit'" name="job_open" type="object">Recruitment Done</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 o_kanban_primary_bottom">
|
||||
<field name="no_of_hired_employee" widget="progress" options="{'title': 'Hired Employees:', 'current_value': 'no_of_hired_employee', 'max_value': 'no_of_recruitment', 'editable': true, 'edit_max_value': true, 'on_change': 'action_set_no_of_recruitment'}"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
<t t-if="record.state.raw_value == 'open'">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 o_kanban_primary_left">
|
||||
<button class="btn btn-primary" name="job_recruitment" type="object">Start Recruitment</button>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<a t-if="record.state.raw_value == 'recruit'" name="job_open" type="object">Recruitment Done</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 o_kanban_primary_bottom">
|
||||
<field name="no_of_hired_employee" widget="progress" options="{'title': 'Hired Employees', 'current_value': 'no_of_hired_employee', 'max_value': 'no_of_recruitment', 'editable': true, 'edit_max_value': true, 'on_change': 'action_set_no_of_recruitment'}"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
<t t-if="record.state.raw_value == 'open'">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 o_kanban_primary_left">
|
||||
<button class="btn btn-primary" name="job_recruitment" type="object">Start Recruitment</button>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</div><div class="container o_kanban_card_manage_pane o_invisible">
|
||||
<div class="row">
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_view">
|
||||
@@ -94,13 +94,13 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<a name="%(action_hr_job_applications)d" type="action">Applications</a>
|
||||
<a name="%(action_hr_job_applications)d" type="action">Applications</a>
|
||||
</div>
|
||||
<div>
|
||||
<a name="action_get_attachment_tree_view" type="object">Documents</a>
|
||||
<a name="action_get_attachment_tree_view" type="object">Documents</a>
|
||||
</div>
|
||||
<div>
|
||||
<a name="action_print_survey" type="object">Print Interview</a>
|
||||
<a name="action_print_survey" type="object">Print Interview</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_new">
|
||||
@@ -109,7 +109,7 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<a name="%(action_hr_job_new_application)d" type="action">Application</a>
|
||||
<a name="%(action_hr_job_new_application)d" type="action">Application</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_reports">
|
||||
@@ -118,7 +118,7 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<a name="%(action_hr_recruitment_report_all)d" type="action">Recruitment</a>
|
||||
<a name="%(action_hr_recruitment_report_filtered_job)d" type="action">Recruitment</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -85,6 +85,30 @@
|
||||
<field name="search_view_id" ref="view_hr_recruitment_report_search"/>
|
||||
<field name="context">{}</field> <!-- force empty -->
|
||||
</record>
|
||||
|
||||
<record id="action_hr_recruitment_report_filtered_department" model="ir.actions.act_window">
|
||||
<field name="name">Recruitment Analysis</field>
|
||||
<field name="res_model">hr.recruitment.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">pivot,graph</field>
|
||||
<field name="search_view_id" ref="view_hr_recruitment_report_search"/>
|
||||
<field name="context">{
|
||||
'search_default_department_id': [active_id],
|
||||
'default_department_id': active_id}
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hr_recruitment_report_filtered_job" model="ir.actions.act_window">
|
||||
<field name="name">Recruitment Analysis</field>
|
||||
<field name="res_model">hr.recruitment.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">pivot,graph</field>
|
||||
<field name="search_view_id" ref="view_hr_recruitment_report_search"/>
|
||||
<field name="context">{
|
||||
'search_default_job_id': [active_id],
|
||||
'default_job_id': active_id}
|
||||
</field>
|
||||
</record>
|
||||
<menuitem action="action_hr_recruitment_report_all" id="menu_hr_recruitment_report_all" parent="report_hr_recruitment" sequence="0"/>
|
||||
|
||||
</data>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_manage_reports')]" position="inside">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-left">
|
||||
<a name="%(action_hr_timesheet_report_stat_all)d" type="action">
|
||||
<a name="%(action_hr_timesheet_report_stat_filtered)d" type="action">
|
||||
Timesheets
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -59,6 +59,17 @@
|
||||
<field name="context">{}</field> <!-- force empty -->
|
||||
</record>
|
||||
|
||||
<record id="action_hr_timesheet_report_stat_filtered" model="ir.actions.act_window">
|
||||
<field name="name">Timesheet Analysis</field>
|
||||
<field name="res_model">hr.timesheet.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">pivot,graph</field>
|
||||
<field name="context">{
|
||||
'search_default_department_id': [active_id],
|
||||
'default_department_id': active_id}
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_timesheets_reports" name="Reports"
|
||||
parent="hr_attendance.timesheet_menu_root" sequence="99" groups="base.group_hr_manager"/>
|
||||
<menuitem action="action_hr_timesheet_report_stat_all" id="menu_hr_timesheet_report_all"
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<field name="date"/>
|
||||
<field name="color"/>
|
||||
<field name="task_count"/>
|
||||
<field name="label_tasks"/>
|
||||
<field name="task_ids"/>
|
||||
<field name="alias_id"/>
|
||||
<field name="alias_name"/>
|
||||
@@ -18,7 +19,7 @@
|
||||
<field name="doc_count"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="o_kanban_flexbox #{kanban_color(record.color.raw_value)}">
|
||||
<div t-attf-class="o_kanban_flexbox #{kanban_color(record.color.raw_value)} oe_kanban_global_click">
|
||||
<div class="o_project_kanban_main">
|
||||
<div class="o_kanban_card_content o_visible">
|
||||
<div class="o_kanban_primary_left">
|
||||
@@ -30,20 +31,20 @@
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="o_kanban_card_manage_pane o_invisible">
|
||||
<div class="o_kanban_card_manage_section o_kanban_manage_view">
|
||||
<div t-if="widget.view.is_action_enabled('edit')" groups="base.group_user">
|
||||
<a type="edit">Edit Project</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_card_manage_section o_kanban_manage_reports">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>Reports</span>
|
||||
<div>
|
||||
<a type="edit">Settings</a>
|
||||
</div>
|
||||
<div>
|
||||
<a name="%(dblc_proj)d" type="action">Tasks</a>
|
||||
</div>
|
||||
<div>
|
||||
<a name="%(action_view_task_history_cumulative)d" type="action">Cumulative Flow</a>
|
||||
<a name="%(action_view_task_history_cumulative_filter)d" type="action">Cumulative Flow</a>
|
||||
</div>
|
||||
</div>
|
||||
<div t-if="widget.view.is_action_enabled('edit')" class="o_kanban_card_manage_settings">
|
||||
<div class="col-xs-12">
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -55,12 +56,12 @@
|
||||
</div>
|
||||
|
||||
<div class="o_project_kanban_boxes">
|
||||
<a t-if="record.use_tasks.raw_value" class="o_project_kanban_box" name="%(act_project_project_2_project_task_all)d" type="action">
|
||||
<span class="o_value"><field name="task_count"/></span>
|
||||
<span class="o_label"><field name="label_tasks"/></span>
|
||||
<a t-if="record.use_tasks.raw_value and record.task_count.raw_value" class="o_project_kanban_box" name="%(act_project_project_2_project_task_all)d" type="action">
|
||||
<span class="o_value"><t t-esc="record.task_count.value"/></span>
|
||||
<span class="o_label"><t t-esc="record.label_tasks.value"/></span>
|
||||
</a>
|
||||
<a t-if="record.doc_count.raw_value" class="o_project_kanban_box" name="attachment_tree_view" type="object">
|
||||
<span class="o_value"><field name="doc_count"/></span>
|
||||
<span class="o_value"><t t-esc="record.doc_count.value"/></span>
|
||||
<span class="o_label">Documents</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -67,6 +67,21 @@
|
||||
<field name="context">{"search_default_open":1, "search_default_this_month": 1}</field>
|
||||
<field name="view_id"></field> <!-- force empty -->
|
||||
</record>
|
||||
<record id="action_view_task_history_cumulative_filter" model="ir.actions.act_window">
|
||||
<field name="name">Cumulative Flow</field>
|
||||
<field name="res_model">project.task.history.cumulative</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">pivot,graph</field>
|
||||
<field name="filter" eval="False"/>
|
||||
<field name="context">{
|
||||
'search_default_open':1,
|
||||
'search_default_this_month': 1,
|
||||
'search_default_project_id': [active_id],
|
||||
'default_project_id': active_id,
|
||||
}
|
||||
</field>
|
||||
<field name="view_id"></field> <!-- force empty -->
|
||||
</record>
|
||||
<menuitem action="action_view_task_history_cumulative"
|
||||
id="menu_action_view_task_history_cumulative"
|
||||
parent="base.menu_project_report"/>
|
||||
|
||||
@@ -5,4 +5,14 @@ var KanbanView = require('web_kanban.KanbanView');
|
||||
var data = require('web.data');
|
||||
var session = require('web.session');
|
||||
|
||||
|
||||
kanban_common.KanbanRecord.include({
|
||||
on_card_clicked: function() {
|
||||
if (this.view.dataset.model === 'project.project') {
|
||||
this.$('.o_project_kanban_boxes a').first().click();
|
||||
} else {
|
||||
this._super.apply(this, arguments);
|
||||
}
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,84 +1,80 @@
|
||||
.o_project_kanban {
|
||||
.oe_kanban_view.o_kanban_dashboard.o_project_kanban {
|
||||
|
||||
&.o_kanban_dashboard {
|
||||
@odoo-brand-optional: #21b799;
|
||||
|
||||
@odoo-brand-optional: #21b799;
|
||||
.o_kanban_flexbox {
|
||||
display: flex;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.o_kanban_flexbox {
|
||||
display: flex;
|
||||
position: relative;
|
||||
}
|
||||
.oe_kanban_record {
|
||||
min-width: 300px;
|
||||
max-width: 350px;
|
||||
}
|
||||
|
||||
.oe_kanban_record {
|
||||
padding: 0 !important;
|
||||
min-width: 300px;
|
||||
max-width: 350px;
|
||||
}
|
||||
/*
|
||||
.oe_kanban_record:hover .o_project_kanban_manage {
|
||||
visibility: visible;
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
.oe_kanban_record:hover .o_project_kanban_manage {
|
||||
visibility: visible;
|
||||
}
|
||||
*/
|
||||
.o_project_kanban_main {
|
||||
margin-bottom: 40px; // give space for manage section at the bottom
|
||||
width: 75%;
|
||||
|
||||
.o_project_kanban_main {
|
||||
margin-bottom: 40px; // give space for manage section at the bottom
|
||||
width: 75%;
|
||||
.o_primary {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.o_primary {
|
||||
font-size: larger;
|
||||
.o_project_kanban_manage {
|
||||
visibility: visible;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.o_kanban_card_manage_pane {
|
||||
border-color: lightgrey;
|
||||
border-bottom-style: solid;
|
||||
border-bottom-width: 1px;
|
||||
|
||||
.o_kanban_card_manage_title {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.o_project_kanban_manage {
|
||||
visibility: visible;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.o_kanban_card_manage_pane {
|
||||
border-color: #EEEEEE;
|
||||
border-bottom-style: solid;
|
||||
border-bottom-width: 1px;
|
||||
.o_project_kanban_boxes {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
align-content: stretch;
|
||||
|
||||
.o_kanban_card_manage_title {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
width: 25%;
|
||||
|
||||
.o_project_kanban_boxes {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
align-content: stretch;
|
||||
.o_value {
|
||||
font-size: x-large;
|
||||
color: white;
|
||||
display: block;
|
||||
}
|
||||
.o_label {
|
||||
color: white;
|
||||
}
|
||||
|
||||
width: 25%;
|
||||
|
||||
.o_value {
|
||||
font-size: x-large;
|
||||
color: white;
|
||||
display: block;
|
||||
}
|
||||
.o_label {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.o_project_kanban_box {
|
||||
text-align: center;
|
||||
padding: 15px 0 15px 0;
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.o_project_kanban_box:nth-child(even) {
|
||||
background-color: grey;
|
||||
}
|
||||
.o_project_kanban_box:nth-child(odd) {
|
||||
background-color: @odoo-brand-optional;
|
||||
}
|
||||
}
|
||||
}
|
||||
.o_project_kanban_box {
|
||||
text-align: center;
|
||||
padding: 15px 0 15px 0;
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.o_project_kanban_box:nth-child(even) {
|
||||
background-color: grey;
|
||||
}
|
||||
.o_project_kanban_box:nth-child(odd) {
|
||||
background-color: @odoo-brand-optional;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,13 @@
|
||||
<span class="o_label"><field name="label_issues"/></span>
|
||||
</a>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_manage_reports')]" position="inside">
|
||||
<div>
|
||||
<a name="%(action_project_issue_report)d" type="action">Issues</a>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -15,13 +15,14 @@
|
||||
<field name="inherit_id" ref="project.view_project_kanban"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_manage_view')]" position="inside">
|
||||
<div>
|
||||
<a name="open_contract" type="object">Edit Contract</a>
|
||||
</div>
|
||||
<div>
|
||||
<a name="open_timesheets" type="object">Timesheets</a>
|
||||
</div>
|
||||
<field name="use_tasks" position="after">
|
||||
<field name="total_hours"/>
|
||||
</field>
|
||||
<xpath expr="//div[contains(@class, 'o_project_kanban_boxes')]" position="inside">
|
||||
<a t-if="record.total_hours.value and record.total_hours.value > 0" class="o_project_kanban_box" name="open_timesheets" type="object">
|
||||
<span class="o_value"><t t-raw="record.total_hours.value"/></span>
|
||||
<span class="o_label">Hours</span>
|
||||
</a>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
|
||||
@@ -43,8 +43,7 @@
|
||||
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_primary_right')]" position="after">
|
||||
<div class="col-xs-12 o_kanban_primary_bottom" t-if="record.invoiced_target.raw_value">
|
||||
<!-- TODO: use progressbar widget when available on kanban view -->
|
||||
<field name="invoiced_forecast" widget="progress" options="{'title': 'Forecast', 'current_value': 'invoiced_forecast', 'max_value': 'invoiced_target', 'editable': 'true', 'on_change': 'action_forecast'}"/>
|
||||
<field name="invoiced_forecast" widget="progress" options="{'title': 'Forecast', 'current_value': 'invoiced_forecast', 'max_value': 'invoiced_target', 'editable': true, 'on_change': 'action_forecast'}"/>
|
||||
</div>
|
||||
<div t-if="!record.invoiced_target.raw_value" class="col-xs-12 o_kanban_primary_bottom">
|
||||
Define an invoicing target in the sales team settings to see the period's achievement and forecast at a glance.
|
||||
|
||||
@@ -48,7 +48,12 @@
|
||||
</div>
|
||||
|
||||
<div t-if="widget.view.is_action_enabled('edit')" class="o_kanban_card_manage_settings row">
|
||||
<a type="edit">Settings</a>
|
||||
<div class="col-xs-8">
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
</div>
|
||||
<div class="col-xs-4 text-right">
|
||||
<a type="edit">Settings</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.o_salesteam_kanban {
|
||||
.oe_kanban_view.o_kanban_dashboard.o_salesteam_kanban {
|
||||
.oe_kanban_record {
|
||||
min-height: 200px !important;
|
||||
min-width: 500px !important;
|
||||
max-width: 600px !important;
|
||||
min-height: 200px;
|
||||
min-width: 500px;
|
||||
max-width: 600px;
|
||||
}
|
||||
}
|
||||
@@ -10,15 +10,6 @@
|
||||
.openerp .oe_stock_scan_image:hover {
|
||||
opacity: 1
|
||||
}
|
||||
.oe_gauge_labels {
|
||||
width: 100%;
|
||||
}
|
||||
.oe_gauge_labels .oe_gauge_label_column {
|
||||
width: 49%;
|
||||
text-align: center;
|
||||
display: inline-block;
|
||||
margin: -7px;
|
||||
}
|
||||
|
||||
.oe_stock_scan_image_btn {
|
||||
/*height : 42px;*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.o_stock_kanban {
|
||||
.oe_kanban_view.o_kanban_dashboard.o_stock_kanban {
|
||||
.oe_kanban_record {
|
||||
max-width: 500px !important;
|
||||
min-width: 350px !important;
|
||||
max-width: 500px;
|
||||
min-width: 350px;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
<kanban class="oe_background_grey o_kanban_dashboard o_stock_kanban" create="0">
|
||||
<field name="complete_name"/>
|
||||
<field name="color"/>
|
||||
<field name="code"/>
|
||||
<field name="count_picking_ready"/>
|
||||
<field name="count_picking_draft"/>
|
||||
<field name="count_picking_waiting"/>
|
||||
@@ -26,18 +27,14 @@
|
||||
<div class="container o_kanban_card_content o_visible">
|
||||
<div class="row">
|
||||
<div class="col-xs-6 o_kanban_primary_left">
|
||||
<button class="btn btn-primary" name="%(action_picking_tree)d" type="action">Transfers</button>
|
||||
<button class="btn btn-primary" name="%(action_picking_tree_ready)d" type="action">
|
||||
<span t-if="record.code.raw_value =='incoming'"><t t-esc="record.count_picking_ready.value"/> To Receive</span>
|
||||
<span t-if="record.code.raw_value =='outgoing'"><t t-esc="record.count_picking_ready.value"/> To Do</span>
|
||||
<span t-if="record.code.raw_value =='internal'"><t t-esc="record.count_picking_ready.value"/> Transfers</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-xs-6 o_kanban_primary_right">
|
||||
<div t-if="record.count_picking_ready.raw_value > 0" class="row">
|
||||
<div class="col-xs-9">
|
||||
<a name="%(action_picking_tree_ready)d" type="action">
|
||||
Ready
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<field name="count_picking_ready"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div t-if="record.count_picking_waiting.raw_value > 0" class="row">
|
||||
@@ -76,7 +73,7 @@
|
||||
</div>
|
||||
</div><div class="container o_kanban_card_manage_pane o_invisible">
|
||||
<div class="row">
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_view">
|
||||
<div class="col-xs-6 o_kanban_card_manage_section o_kanban_manage_view">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>View</span>
|
||||
</div>
|
||||
@@ -93,7 +90,7 @@
|
||||
<a name="%(action_picking_tree_backorder)d" type="action">Back Orders</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_new">
|
||||
<div class="col-xs-6 o_kanban_card_manage_section o_kanban_manage_new">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>New</span>
|
||||
</div>
|
||||
@@ -101,21 +98,15 @@
|
||||
<a name="%(action_picking_form)d" type="action" >Transfer</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_reports">
|
||||
<div class="o_kanban_card_manage_title">
|
||||
<span>Reports</span>
|
||||
</div>
|
||||
<div>
|
||||
<a name="%(action_stock_level_forecast_report)d" type="action" >Stock Level Forecast</a>
|
||||
</div>
|
||||
<div>
|
||||
<a name="%(action_stock_line_date)d" type="action" >Latest Inventories & Moves</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div t-if="widget.view.is_action_enabled('edit')" class="o_kanban_card_manage_settings row">
|
||||
<a type="edit">Settings</a>
|
||||
<div class="col-xs-8">
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
</div>
|
||||
<div class="col-xs-4 text-right">
|
||||
<a type="edit">Settings</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -24,14 +24,6 @@
|
||||
</a>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//div[contains(@class, 'o_kanban_manage_reports')]" position="inside">
|
||||
<div>
|
||||
<a name="%(action_wizard_stock_valuation_history)d" type="action">
|
||||
Inventory Valuation
|
||||
</a>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
|
||||
Reference in New Issue
Block a user