22 changed files with 785 additions and 388 deletions
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 237 KiB |
After Width: | Height: | Size: 587 KiB |
@ -1,58 +1,254 @@ |
|||
.style_chair { |
|||
text-align: center; |
|||
color: white; |
|||
font-size: 17px; |
|||
background: #0f101000; |
|||
padding: 0 !important; |
|||
text-transform: uppercase; |
|||
font-weight: 600; |
|||
.o_action_manager { |
|||
overflow: auto !important; |
|||
} |
|||
|
|||
.salon_dashboards { |
|||
padding-top: 10px; |
|||
background-color: #f8faff !important; |
|||
} |
|||
|
|||
.salon-card h4 { |
|||
font-size: 1.1rem; |
|||
} |
|||
|
|||
.breadcrumbs { |
|||
margin-top: 0; |
|||
} |
|||
|
|||
/* Widget One |
|||
---------------------------*/ |
|||
.stat-content { |
|||
display: inline-block; |
|||
width: 66%; |
|||
} |
|||
|
|||
.stat-icon { |
|||
display: inline-block; |
|||
} |
|||
|
|||
.stat-widget-one .stat-icon { |
|||
vertical-align: top; |
|||
margin: auto; |
|||
width: 100%; |
|||
color: #01c490; |
|||
} |
|||
|
|||
.stat-widget-one .stat-icon i { |
|||
font-size: 30px; |
|||
font-weight: 900; |
|||
display: inline-block; |
|||
color: #01c490; |
|||
} |
|||
|
|||
.stat-widget-one .stat-text { |
|||
font-size: 14px; |
|||
color: #868e96; |
|||
font-weight: bold; |
|||
} |
|||
.style_chair_booking{ |
|||
|
|||
.stat-widget-one .stat-digit { |
|||
font-size: 24px; |
|||
color: #02448b; |
|||
} |
|||
|
|||
.stat-count { |
|||
font-size: 20px; |
|||
text-align: center; |
|||
color: #000000; |
|||
color: #00438b; |
|||
} |
|||
|
|||
.stat-title { |
|||
font-size: 17px; |
|||
background: #0f101000; |
|||
padding: 0 !important; |
|||
text-transform: uppercase; |
|||
font-weight: 600; |
|||
} |
|||
.style_collection { |
|||
color: black !important; |
|||
font-size: 12px; |
|||
text-align: center; |
|||
background: #29292900 !important; |
|||
padding: 0 !important; |
|||
color: #00438b; |
|||
} |
|||
.style_collection_booking{ |
|||
color: black !important; |
|||
font-size: 12px; |
|||
text-align: center; |
|||
background: #29292900 !important; |
|||
padding: 0 !important; |
|||
|
|||
/*=====================Dashboard===========================*/ |
|||
|
|||
.salon_dashboards { |
|||
background-color: #f8faff !important; |
|||
padding: 0px !important; |
|||
} |
|||
|
|||
.container-fluid.o_hr_dashboard { |
|||
padding: 0px !important; |
|||
} |
|||
|
|||
.salon-card { |
|||
padding: 0px; |
|||
margin-bottom: 1.5rem; |
|||
border-radius: 0px; |
|||
box-shadow: none; |
|||
background: none; |
|||
transition: transform 0.2s ease, box-shadow 0.2s ease; |
|||
will-change: transform, box-shadow; |
|||
} |
|||
.no_of_people { |
|||
|
|||
.salon-card:hover { |
|||
transform: translateY(-2px) translateZ(0) !important; |
|||
box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; |
|||
} |
|||
|
|||
.salon { |
|||
margin-top: 3%; |
|||
margin-bottom: 2%; |
|||
} |
|||
|
|||
.salon .stat-icon { |
|||
border-radius: 15px 0 0 15px; |
|||
width: 30%; |
|||
height: 100px; |
|||
text-align: center; |
|||
font-size: 41px; |
|||
padding: 0 !important; |
|||
background: #4f535600; |
|||
color: white; |
|||
margin-top: 9px; |
|||
margin-bottom: 30px; |
|||
padding-top: 10%; |
|||
background: #314384ff; |
|||
color: #fff; |
|||
} |
|||
span.o_primary.style_collection { |
|||
color: #fff !important; |
|||
|
|||
.salon .salon-card { |
|||
border-radius: 15px; |
|||
transition: transform 0.2s ease, box-shadow 0.2s ease; |
|||
will-change: transform, box-shadow; |
|||
box-shadow: 0 10px 40px 0 rgba(62, 57, 107, 0.07), |
|||
0 2px 9px 0 rgba(62, 57, 107, 0.06); |
|||
} |
|||
.no_of_people_booking{ |
|||
|
|||
.stat-widget-one .stat-text { |
|||
font-size: 14px; |
|||
color: #314384ff; |
|||
margin: 2rem 0rem 1rem 0rem; |
|||
text-align: center; |
|||
font-size: 41px; |
|||
padding: 0 !important; |
|||
background: #4f535600; |
|||
color: #000000; |
|||
margin-top: 9px; |
|||
margin-bottom: 30px; |
|||
} |
|||
.button_background{ |
|||
background-color: Transparent; |
|||
border: transparent; |
|||
cursor: pointer; |
|||
} |
|||
|
|||
.stat-widget-one .stat-digit { |
|||
font-size: 20px; |
|||
font-weight: bolder; |
|||
padding: 1px 10px 2px 0; |
|||
color: #8061a9; |
|||
text-shadow: 0px 0px 20px #000000; |
|||
text-align: center; |
|||
} |
|||
|
|||
.stat-widget-one .stat-icon i { |
|||
/*border-radius: 15px 0 0 15px;*/ |
|||
font-size: 25px; |
|||
font-weight: 900; |
|||
display: inline-block; |
|||
color: #fff; |
|||
} |
|||
|
|||
.stat-widget-one { |
|||
border-radius: 15px; |
|||
background-color: white; |
|||
text-align: inherit !important; |
|||
} |
|||
|
|||
.stat-widget-one { |
|||
width: 100%; |
|||
} |
|||
|
|||
.salon_sales .stat-icon { |
|||
background: #964ec2 !important; |
|||
} |
|||
|
|||
.salon_clients .stat-icon { |
|||
background: #813de6 !important; |
|||
} |
|||
|
|||
.salon_orders .stat-icon { |
|||
background: #6f23a9 !important; |
|||
} |
|||
|
|||
.salon_sales .stat-widget-one .stat-text { |
|||
color: #964ec2; |
|||
} |
|||
|
|||
.salon_clients .stat-widget-one .stat-text { |
|||
color: #813de6; |
|||
} |
|||
|
|||
.salon_orders .stat-widget-one .stat-text { |
|||
color: #6f23a9; |
|||
} |
|||
|
|||
.salon-card-body { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
} |
|||
|
|||
/*Chair*/ |
|||
img { |
|||
padding: 5px; |
|||
} |
|||
|
|||
article { |
|||
display: grid; |
|||
grid-template-columns: repeat(auto-fill, minmax(17em, 1fr)); |
|||
grid-gap: 1em; |
|||
height: fit-content; |
|||
margin-left: 1vw; |
|||
} |
|||
|
|||
@media (max-width: 575.98px) { |
|||
.salon_chair { |
|||
width: 100%; |
|||
position: relative; |
|||
} |
|||
} |
|||
|
|||
.chair_name { |
|||
opacity: 100%; |
|||
position: absolute; |
|||
padding: 26px 26px 3px 73px; |
|||
color: #ffffff; |
|||
font-weight: bolder; |
|||
-webkit-filter: drop-shadow(0px 4px 5px #000000); |
|||
filter: drop-shadow(0px 4px 5px #000000); |
|||
} |
|||
|
|||
.chair_orders { |
|||
opacity: 100%; |
|||
position: absolute; |
|||
padding: 62px 0px 2px 94px; |
|||
color: #ffffff; |
|||
font-weight: bolder; |
|||
-webkit-filter: drop-shadow(0px 4px 5px #000000); |
|||
filter: drop-shadow(0px 4px 5px #000000); |
|||
} |
|||
|
|||
.chair_setting { |
|||
opacity: 0.0; |
|||
-webkit-transition: all 500ms ease-in-out; |
|||
-moz-transition: all 500ms ease-in-out; |
|||
-ms-transition: all 500ms ease-in-out; |
|||
-o-transition: all 500ms ease-in-out; |
|||
transition: all 500ms ease-in-out; |
|||
} |
|||
|
|||
.salon_chair:hover .chair_setting { |
|||
opacity: 1.0; |
|||
padding: 16px 0 0px 165px; |
|||
color: #4d4d4d; |
|||
font-size: medium; |
|||
-webkit-filter: drop-shadow(0px 4px 5px #da9bff); |
|||
filter: drop-shadow(0px 2px 6px #d999ff); |
|||
} |
|||
|
|||
.salon_chair { |
|||
opacity: 85%; |
|||
background-image: url("images/chair.png"); |
|||
background-repeat: no-repeat; |
|||
background-size: contain; |
|||
width: auto; |
|||
height: 100vw; |
|||
} |
|||
|
|||
.salon_chair { |
|||
height: 200px; |
|||
width: 100%; |
|||
} |
|||
|
|||
.salon_chair:hover { |
|||
-webkit-filter: drop-shadow(0px 4px 4px #3e3e3e); |
|||
filter: drop-shadow(0px 4px 4px #373737); |
|||
} |
|||
|
@ -1,46 +1,46 @@ |
|||
.chair_box_website{ |
|||
text-align: center; |
|||
border: 1px solid #666; |
|||
padding: 10px 15px; |
|||
box-shadow: 7px 8px 5px #888888; |
|||
background-color: #337ab7; |
|||
color: #000000; |
|||
.chair_box_website { |
|||
text-align: center; |
|||
border: 1px solid #666; |
|||
padding: 10px 15px; |
|||
box-shadow: 7px 8px 5px #888888; |
|||
background-color: #337ab7; |
|||
color: #000000; |
|||
} |
|||
.field_booking_chair{ |
|||
font-weight: bold; |
|||
.field_booking_chair { |
|||
font-weight: bold; |
|||
} |
|||
input[type="text"]{ |
|||
width: 100%; |
|||
input[type="text"] { |
|||
width: 100%; |
|||
} |
|||
input[type="email"]{ |
|||
width: 100%; |
|||
input[type="email"] { |
|||
width: 100%; |
|||
} |
|||
input[type=checkbox] + label { |
|||
input[type="checkbox"] + label { |
|||
color: #7c7bad; |
|||
font-style: italic; |
|||
} |
|||
input[type=checkbox]:checked + label { |
|||
input[type="checkbox"]:checked + label { |
|||
color: #00a09d; |
|||
font-style: normal; |
|||
} |
|||
select{ |
|||
width: 100%; |
|||
} |
|||
.selection_service{ |
|||
height: 6em; |
|||
overflow: auto; |
|||
border: 1px solid #b3b3b3; |
|||
border-radius: 5px; |
|||
background-color: #fcfcfc; |
|||
} |
|||
#booking_chair_details{ |
|||
height: 200px!important; |
|||
text-align: center; |
|||
border: 1px solid #666; |
|||
padding: 15px 0px; |
|||
box-shadow: 7px 8px 5px #888888; |
|||
background-color:#7c7bad; |
|||
border-radius:58px; |
|||
color:#fff; |
|||
margin-bottom: 10px; |
|||
select { |
|||
width: 100%; |
|||
} |
|||
.selection_service { |
|||
height: 6em; |
|||
overflow: auto; |
|||
border: 1px solid #b3b3b3; |
|||
border-radius: 5px; |
|||
background-color: #fcfcfc; |
|||
} |
|||
#booking_chair_details { |
|||
height: 200px !important; |
|||
text-align: center; |
|||
border: 1px solid #666; |
|||
padding: 15px 0px; |
|||
box-shadow: 7px 8px 5px #888888; |
|||
background-color: #7c7bad; |
|||
border-radius: 58px; |
|||
color: #fff; |
|||
margin-bottom: 10px; |
|||
} |
|||
|
@ -0,0 +1,185 @@ |
|||
odoo.define('salon_management.SalonDashboard', function (require) { |
|||
"use strict"; |
|||
const AbstractAction = require('web.AbstractAction'); |
|||
const core = require('web.core'); |
|||
const rpc = require("web.rpc"); |
|||
var ajax = require("web.ajax"); |
|||
const _t = core._t; |
|||
const QWeb = core.qweb; |
|||
const SalonDashboard = AbstractAction.extend({ |
|||
template: 'SalonDashboardMain', |
|||
events: { |
|||
'click .salon_spa_bookings': 'bookings', |
|||
'click .salon_spa_sales': 'sales', |
|||
'click .salon_spa_clients': 'clients', |
|||
'click .salon_spa_orders': 'orders', |
|||
'click .salon_chair': 'chairs_click', |
|||
'click .chair_setting': 'settings_click' |
|||
}, |
|||
init: function (parent, context) { |
|||
this._super(parent, context); |
|||
this.dashboards_templates = ['SalonSpaDashBoard']; |
|||
|
|||
}, |
|||
|
|||
start: function () { |
|||
|
|||
var self = this; |
|||
this.set("title", 'Dashboard'); |
|||
return this._super().then(function () { |
|||
self.render_dashboards(); |
|||
self.$el.parent().addClass('oe_background_grey'); |
|||
}); |
|||
|
|||
}, |
|||
render_dashboards: function () { |
|||
var self = this; |
|||
var templates = ['SalonSpaDashBoard']; |
|||
_.each(templates, function (template) { |
|||
self.$('.spa_salon_dashboard').append(QWeb.render(template, {widget: self})); |
|||
}); |
|||
rpc.query({ |
|||
model: "salon.booking", |
|||
method: "get_booking_count", |
|||
args: [], |
|||
}) |
|||
.then(function (result) { |
|||
$("#bookings_count").append("<span class='stat-digit'>" + result.bookings + "</span>"); |
|||
$("#recent_count").append("<span class='stat-digit'>" + result.sales + "</span>"); |
|||
$("#orders_count").append("<span class='stat-digit'>" + result.orders + "</span>"); |
|||
$("#clients_count").append("<span class='stat-digit'>" + result.clients + "</span>"); |
|||
// console.log("pass to controller");
|
|||
ajax.jsonRpc("/salon/chairs", "call", {}).then(function (values) { |
|||
$('#chairs_dashboard_view').append(values); |
|||
}); |
|||
}); |
|||
}, |
|||
on_reverse_breadcrumb: function () { |
|||
var self = this; |
|||
self.$('.spa_salon_dashboard').empty(); |
|||
self.render_dashboards(); |
|||
}, |
|||
|
|||
//events
|
|||
chairs_click: function (ev) { |
|||
var self = this; |
|||
ev.stopPropagation(); |
|||
ev.preventDefault(); |
|||
var active_id = event.target.id |
|||
var options = { |
|||
on_reverse_breadcrumb: this.on_reverse_breadcrumb, |
|||
}; |
|||
this.do_action({ |
|||
name: _t("Chair Orders"), |
|||
type: 'ir.actions.act_window', |
|||
res_model: 'salon.order', |
|||
view_mode: 'kanban,tree,form', |
|||
views: [[false, 'kanban'], [false, 'list'], [false, 'form']], |
|||
domain: [['chair_id', '=', parseInt(active_id)]], |
|||
context: { |
|||
default_chair_id: parseInt(active_id) |
|||
}, |
|||
target: 'current' |
|||
}, options); |
|||
}, |
|||
|
|||
settings_click: function (ev) { |
|||
var self = this; |
|||
ev.stopPropagation(); |
|||
ev.preventDefault(); |
|||
var active_id = event.target.id |
|||
console.log(active_id,"acname") |
|||
var options = { |
|||
on_reverse_breadcrumb: this.on_reverse_breadcrumb, |
|||
}; |
|||
this.do_action({ |
|||
name: _t("Chair Orders"), |
|||
type: 'ir.actions.act_window', |
|||
res_model: 'salon.chair', |
|||
view_mode: 'form', |
|||
views: [[false, 'form']], |
|||
context: { |
|||
default_name: active_id |
|||
}, |
|||
target: 'current' |
|||
}, options); |
|||
}, |
|||
|
|||
|
|||
bookings: function (ev) { |
|||
var self = this; |
|||
ev.stopPropagation(); |
|||
ev.preventDefault(); |
|||
var options = { |
|||
on_reverse_breadcrumb: this.on_reverse_breadcrumb, |
|||
}; |
|||
|
|||
this.do_action({ |
|||
name: _t("Salon Bookings"), |
|||
type: 'ir.actions.act_window', |
|||
res_model: 'salon.booking', |
|||
view_mode: 'tree,form', |
|||
views: [[false, 'list'], [false, 'form']], |
|||
domain: [['state', '=', 'approved']], |
|||
target: 'current' |
|||
}, options); |
|||
}, |
|||
|
|||
sales: function (ev) { |
|||
var self = this; |
|||
ev.stopPropagation(); |
|||
ev.preventDefault(); |
|||
|
|||
var options = { |
|||
on_reverse_breadcrumb: this.on_reverse_breadcrumb, |
|||
}; |
|||
|
|||
this.do_action({ |
|||
name: _t("Recent Works"), |
|||
type: 'ir.actions.act_window', |
|||
res_model: 'salon.order', |
|||
view_mode: 'tree,form', |
|||
views: [[false, 'list'], [false, 'form']], |
|||
domain: [['stage_id', 'in', [3, 4]]], |
|||
target: 'current' |
|||
}, options); |
|||
}, |
|||
orders: function (ev) { |
|||
var self = this; |
|||
ev.stopPropagation(); |
|||
ev.preventDefault(); |
|||
|
|||
var options = { |
|||
on_reverse_breadcrumb: this.on_reverse_breadcrumb, |
|||
}; |
|||
|
|||
this.do_action({ |
|||
name: _t("Salon Orders"), |
|||
type: 'ir.actions.act_window', |
|||
res_model: 'salon.order', |
|||
view_mode: 'tree,form,calendar', |
|||
views: [[false, 'list'], [false, 'form']], |
|||
target: 'current' |
|||
}, options); |
|||
}, |
|||
clients: function (e) { |
|||
var self = this; |
|||
e.stopPropagation(); |
|||
e.preventDefault(); |
|||
var options = { |
|||
on_reverse_breadcrumb: self.on_reverse_breadcrumb, |
|||
}; |
|||
self.do_action({ |
|||
name: _t("Clients"), |
|||
type: 'ir.actions.act_window', |
|||
res_model: 'res.partner', |
|||
view_mode: 'tree,form', |
|||
views: [[false, 'list'], [false, 'form']], |
|||
domain: [['partner_salon', '=', true]], |
|||
target: 'current' |
|||
}, options); |
|||
}, |
|||
}); |
|||
core.action_registry.add('salon_dashboard', SalonDashboard); |
|||
return SalonDashboard; |
|||
}); |
@ -1,44 +0,0 @@ |
|||
|
|||
.o_kanban_dashboard.o_salon_kanban { |
|||
|
|||
.o_kanban_record > div { |
|||
width: 180px; |
|||
height: 200px; |
|||
border-radius: 90px 90px 20px 20px; |
|||
background: #cc1f2f; |
|||
background: linear-gradient(#cc1f2f 0%, #cc1f2f 63%, #6d0b0b 63%, #cc1f2f 73%); |
|||
position: relative; |
|||
margin: 25px; |
|||
display: inline-block; |
|||
} |
|||
.o_kanban_record:after, .o_kanban_record:before { |
|||
content: ""; |
|||
display: block; |
|||
width: 33.3333333333px; |
|||
height: 111.1111111111px; |
|||
position: absolute; |
|||
background: #cc1f2f; |
|||
border-radius: 20px; |
|||
border: 1px solid #000; |
|||
bottom: 25px; |
|||
right: 0; |
|||
left: 185px; |
|||
top: 64px; |
|||
} |
|||
.o_kanban_record:before { |
|||
left: 5px; |
|||
z-index: 9; |
|||
} |
|||
.o_kanban_record:after { |
|||
right: -20px; |
|||
z-index: 9; |
|||
} |
|||
.o_kanban_record.notvacant { |
|||
background: #ccc; |
|||
background: linear-gradient(#ccc 0%, #ccc 70%, #000 70%, #ccc 77%); |
|||
} |
|||
.o_kanban_record.notvacant:before, .o_kanban_record.notvacant:after { |
|||
background: #ccc; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,81 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="SalonDashboardMain"> |
|||
<div class="salon_dashboards"> |
|||
<div class="container-fluid spa_salon_dashboard"> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
<t t-name="SalonSpaDashBoard"> |
|||
<link rel="stylesheet" href="/salon_management/static/src/css/salon_dashboard.css"/> |
|||
<div class="row main-section"> |
|||
<div class="col-sm-6 col-md-3-12 col-md-6 col-lg-3 salon_spa_bookings salon salon_bookings"> |
|||
<div class="salon-card"> |
|||
<div class="salon-card-body"> |
|||
<div class="stat-widget-one"> |
|||
<div class="stat-icon"> |
|||
<i class="fa fa-calendar"/> |
|||
</div> |
|||
<div class="stat-content"> |
|||
<div class="stat-text">Bookings</div> |
|||
<div class="stat-digit" id="bookings_count"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="col-sm-6 col-md-3-12 col-md-6 col-lg-3 salon_spa_orders salon salon_orders"> |
|||
<div class="salon-card"> |
|||
<div class="salon-card-body"> |
|||
<div class="stat-widget-one"> |
|||
<div class="stat-icon"> |
|||
<i class="fa fa-calendar"/> |
|||
</div> |
|||
<div class="stat-content"> |
|||
<div class="stat-text">Salon Orders</div> |
|||
<div class="stat-digit" id="orders_count"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="col-sm-6 col-md-3-12 col-md-6 col-lg-3 salon_spa_sales salon salon_sales"> |
|||
<div class="salon-card"> |
|||
<div class="salon-card-body"> |
|||
<div class="stat-widget-one"> |
|||
<div class="stat-icon"> |
|||
<i class="fa fa-money"/> |
|||
</div> |
|||
<div class="stat-content"> |
|||
<div class="stat-text">Recent Works</div> |
|||
<div class="stat-digit" id="recent_count"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="col-sm-6 col-md-3-12 col-md-6 col-lg-3 salon_spa_clients salon salon_clients"> |
|||
<div class="salon-card"> |
|||
<div class="salon-card-body"> |
|||
<div class="stat-widget-one"> |
|||
<div class="stat-icon"> |
|||
<i class="fa fa-user "/> |
|||
</div> |
|||
<div class="stat-content"> |
|||
<div class="stat-text">Salon Clients</div> |
|||
<div class="stat-digit" id="clients_count"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<article role="main" id="chairs_dashboard_view"> |
|||
<!--filled from js--> |
|||
</article> |
|||
</t> |
|||
</templates> |
@ -1,15 +1,13 @@ |
|||
<?xml version="1.0" encoding="utf-8" ?> |
|||
<odoo> |
|||
|
|||
<record id="res_partner_view_form" model="ir.ui.view"> |
|||
<field name="name">res.partner.view.form.inherit.salon_management</field> |
|||
<field name="model">res.partner</field> |
|||
<field name="inherit_id" ref="base.view_partner_form" /> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='user_id']" position="after"> |
|||
<field name="partner_salon" /> |
|||
</xpath> |
|||
</field> |
|||
<field name="name">res.partner.view.form.inherit.salon_management</field> |
|||
<field name="model">res.partner</field> |
|||
<field name="inherit_id" ref="base.view_partner_form" /> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='category_id']" position="after"> |
|||
<field name="partner_salon" /> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
</odoo> |
|||
</odoo> |
|||
|
@ -0,0 +1,17 @@ |
|||
<odoo> |
|||
<data> |
|||
<template id="dashboard_salon_chairs" name="Chairs template"> |
|||
<t t-foreach="s_chairs" t-as="chair"> |
|||
<div class="salon_chair" t-att-id="chair['id']" t-att-value="chair['id']"> |
|||
<h4 class="chair_name" t-att-id="chair['id']"> |
|||
<t t-esc="chair['name']"></t> |
|||
</h4> |
|||
<h2 class="chair_orders" t-att-id="chair['id']"> |
|||
<t t-esc="chair['orders']"></t> |
|||
</h2> |
|||
<i class="fa fa-cog chair_setting" t-att-id="chair['name']"></i> |
|||
</div> |
|||
</t> |
|||
</template> |
|||
</data> |
|||
</odoo> |
@ -1,16 +1,36 @@ |
|||
<?xml version="1.0" encoding="utf-8" ?> |
|||
<odoo> |
|||
<data> |
|||
<menuitem id="salon_management_menu_root" name="Salon" groups="salon_management.group_salon_user" web_icon="salon_management,static/description/icon.png" /> |
|||
<menuitem id="salon_chair_dashboard_menu_action" parent="salon_management_menu_root" action="salon_chair_dashboard_action" /> |
|||
<menuitem id="salon_management_salon_root" name="Salon" parent="salon_management_menu_root" /> |
|||
<menuitem id="salon_chair_menu_action" name="Chair" parent="salon_management_salon_root" action="salon_chair_action" /> |
|||
<menuitem id="salon_service_menu_action" parent="salon_management_salon_root" action="salon_service_action" /> |
|||
<menuitem id="salon_order_menu_action" parent="salon_management_salon_root" name="Salon Orders" action="salon_order_action" /> |
|||
<menuitem id="salon_booking_menu_action" name="Bookings" parent="salon_management_salon_root" action="salon_booking_action" /> |
|||
<menuitem id="salon_management_settings_menu_root" parent="salon_management_menu_root" name="Configuration" /> |
|||
<menuitem id="salon_config_settings_menu_action" parent="salon_management_settings_menu_root" name="Settings" action="salon_config_settings_action" /> |
|||
<menuitem id="salon_working_hours_menu_action" parent="salon_management_settings_menu_root" name="Working Hours" action="salon_working_hours_action" /> |
|||
<menuitem id="salon_management_menu_root" name="Salon" |
|||
groups="salon_management.group_salon_user" |
|||
action="salon_action_dashboard" |
|||
web_icon="salon_management,static/description/icon.png"/> |
|||
<menuitem id="salon_dashboard_menu_action" |
|||
name="Dashboard" parent="salon_management_menu_root" |
|||
action="salon_action_dashboard" |
|||
sequence="-100" /> |
|||
<menuitem id="salon_management_salon_root" name="Salon" |
|||
parent="salon_management_menu_root"/> |
|||
<menuitem id="salon_chair_menu_action" name="Chair" |
|||
parent="salon_management_salon_root" |
|||
action="salon_chair_action"/> |
|||
<menuitem id="salon_service_menu_action" |
|||
parent="salon_management_salon_root" |
|||
action="salon_service_action"/> |
|||
<menuitem id="salon_order_menu_action" |
|||
parent="salon_management_salon_root" name="Salon Orders" |
|||
action="salon_order_action"/> |
|||
<menuitem id="salon_booking_menu_action" name="Bookings" |
|||
parent="salon_management_salon_root" |
|||
action="salon_booking_action"/> |
|||
<menuitem id="salon_management_settings_menu_root" |
|||
parent="salon_management_menu_root" name="Configuration"/> |
|||
<menuitem id="salon_config_settings_menu_action" |
|||
parent="salon_management_settings_menu_root" name="Settings" |
|||
action="salon_config_settings_action"/> |
|||
<menuitem id="salon_working_hours_menu_action" |
|||
parent="salon_management_settings_menu_root" |
|||
name="Working Hours" action="salon_working_hours_action"/> |
|||
|
|||
</data> |
|||
</odoo> |
|||
</odoo> |
|||
|
Loading…
Reference in new issue