Browse Source

[ADD] Initial Commit

pull/195/head
Ajmal Cybro 3 years ago
parent
commit
da73a6c0fc
  1. 49
      front_office_management/README.rst
  2. 23
      front_office_management/__init__.py
  3. 49
      front_office_management/__manifest__.py
  4. 6
      front_office_management/doc/RELEASE_NOTES.md
  5. 30
      front_office_management/models/__init__.py
  6. 68
      front_office_management/models/fo_property_counter.py
  7. 131
      front_office_management/models/fo_visit.py
  8. 63
      front_office_management/models/fo_visitor.py
  9. 92
      front_office_management/report/fo_property_label.xml
  10. 124
      front_office_management/report/fo_visitor_label.xml
  11. 39
      front_office_management/report/report.xml
  12. 116
      front_office_management/report/visitors_report.xml
  13. 17
      front_office_management/security/fo_security.xml
  14. 14
      front_office_management/security/ir.model.access.csv
  15. BIN
      front_office_management/static/description/assets/icons/check.png
  16. BIN
      front_office_management/static/description/assets/icons/chevron.png
  17. BIN
      front_office_management/static/description/assets/icons/cogs.png
  18. BIN
      front_office_management/static/description/assets/icons/consultation.png
  19. BIN
      front_office_management/static/description/assets/icons/ecom-black.png
  20. BIN
      front_office_management/static/description/assets/icons/education-black.png
  21. BIN
      front_office_management/static/description/assets/icons/hotel-black.png
  22. BIN
      front_office_management/static/description/assets/icons/license.png
  23. BIN
      front_office_management/static/description/assets/icons/lifebuoy.png
  24. BIN
      front_office_management/static/description/assets/icons/logo.png
  25. BIN
      front_office_management/static/description/assets/icons/manufacturing-black.png
  26. BIN
      front_office_management/static/description/assets/icons/pos-black.png
  27. BIN
      front_office_management/static/description/assets/icons/puzzle.png
  28. BIN
      front_office_management/static/description/assets/icons/restaurant-black.png
  29. BIN
      front_office_management/static/description/assets/icons/service-black.png
  30. BIN
      front_office_management/static/description/assets/icons/trading-black.png
  31. BIN
      front_office_management/static/description/assets/icons/training.png
  32. BIN
      front_office_management/static/description/assets/icons/update.png
  33. BIN
      front_office_management/static/description/assets/icons/user.png
  34. BIN
      front_office_management/static/description/assets/icons/wrench.png
  35. BIN
      front_office_management/static/description/assets/modules/approval_image.png
  36. BIN
      front_office_management/static/description/assets/modules/budget_image.png
  37. BIN
      front_office_management/static/description/assets/modules/export_image.png
  38. BIN
      front_office_management/static/description/assets/modules/magento_image.png
  39. BIN
      front_office_management/static/description/assets/modules/pos_image.png
  40. BIN
      front_office_management/static/description/assets/modules/shopify_image.png
  41. BIN
      front_office_management/static/description/assets/screenshots/front-1.png
  42. BIN
      front_office_management/static/description/assets/screenshots/front-2.png
  43. BIN
      front_office_management/static/description/assets/screenshots/front-3.png
  44. BIN
      front_office_management/static/description/assets/screenshots/front-4.png
  45. BIN
      front_office_management/static/description/assets/screenshots/front-5.png
  46. BIN
      front_office_management/static/description/assets/screenshots/front-6.png
  47. BIN
      front_office_management/static/description/assets/screenshots/hero.png
  48. BIN
      front_office_management/static/description/banner.png
  49. BIN
      front_office_management/static/description/icon.png
  50. 706
      front_office_management/static/description/index.html
  51. 99
      front_office_management/views/fo_property_counter.xml
  52. 194
      front_office_management/views/fo_visit.xml
  53. 159
      front_office_management/views/fo_visitor.xml

49
front_office_management/README.rst

@ -0,0 +1,49 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Front Office Management v15
===========================
Helps You To Manage Front Office Operations.
Installation
============
* Just install the module and set the permission for Reception
Configuration
=============
* No additional configurations needed
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developers: Anusha P P @cybrosys
Niyas Raphy @cybrosys
version 14: Vinaya S B @cybrosys
version 15: Amal Prasad @cybrosys
Contacts
--------
* Mail Contact : odoo@cybrosys.com
* Website : https://cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
This module is maintained by Cybrosys Technologies.
For support and more information, please visit `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

23
front_office_management/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Anusha P P (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import models

49
front_office_management/__manifest__.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Anusha P P (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': "Front Office Management",
'version': '15.0.1.0.0',
'summary': """Manage Front Office Operations:Visitors, Devices Carrying Register, Actions""",
'description': """Helps You To Manage Front Office Operations, Odoo 15""",
'author': "Cybrosys Techno Solutions",
'maintainer': 'Cybrosys Techno Solutions',
'company': "Cybrosys Techno Solutions",
'website': "https://www.cybrosys.com",
'category': 'Industries',
'depends': ['base', 'hr'],
'data': [
'views/fo_visit.xml',
'views/fo_visitor.xml',
'views/fo_property_counter.xml',
'report/report.xml',
'report/fo_property_label.xml',
'report/fo_visitor_label.xml',
'report/visitors_report.xml',
'security/fo_security.xml',
'security/ir.model.access.csv',
],
'images': ['static/description/banner.png'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
}

6
front_office_management/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <front_office_management>
#### 19.09.2021
#### Version 15.0.1.0.0
##### ADD
- Migrated to version 15

30
front_office_management/models/__init__.py

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Anusha P P (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import fo_visitor
from . import fo_property_counter
from . import fo_visit

68
front_office_management/models/fo_property_counter.py

@ -0,0 +1,68 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: odoo@cybrosys.com
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import models, fields, _
from odoo.exceptions import UserError
class VisitDetails(models.Model):
_name = 'fo.property.counter'
_inherit = 'mail.thread'
_rec_name = 'employee'
_description = 'Property Details'
employee = fields.Many2one('hr.employee', string="Employee",
required=True)
date = fields.Date(string="Date", required=True)
visitor_belongings = fields.One2many('fo.belongings',
'belongings_id_fov_employee',
string="Personal Belongings",
copy=False)
state = fields.Selection([
('draft', 'Draft'),
('prop_in', 'Taken In'),
('prop_out', 'Taken out'),
('cancel', 'Cancelled'),
], tracking=True, default='draft', help='If the employee taken the '
'belongings to the company change '
'state to ""Taken In""when he/she '
'leave office change the state to '
'""Taken out""')
def action_cancel(self):
self.state = "cancel"
def action_prop_in(self):
count = 0
number = 0
for data in self.visitor_belongings:
if not data.property_count:
raise UserError(_('Please Add the Count.'))
if data.permission == '1':
count += 1
number = data.number
if number == count:
raise UserError(_('No property can be taken in.'))
else:
self.state = 'prop_in'
def action_prop_out(self):
self.state = "prop_out"

131
front_office_management/models/fo_visit.py

@ -0,0 +1,131 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: odoo@cybrosys.com
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
import datetime
from odoo import models, fields, api, _
class VisitDetails(models.Model):
_name = 'fo.visit'
_inherit = ['mail.thread']
_description = 'Visit'
name = fields.Char(string="sequence", default=lambda self: _('New'))
visitor = fields.Many2one("fo.visitor", string='Visitor')
phone = fields.Char(string="Phone", required=True)
email = fields.Char(string="Email", required=True)
reason = fields.Many2many('fo.purpose', string='Purpose Of Visit',
required=True,
help='Enter the reason for visit')
visitor_belongings = fields.One2many('fo.belongings',
'belongings_id_fov_visitor',
string="Personal Belongings",
help='Add the belongings details '
'here.')
check_in_date = fields.Datetime(string="Check In Time",
help='Visitor check in time automatically'
' fills when he checked in to the office.')
check_out_date = fields.Datetime(string="Check Out Time",
help='Visitor check out time'
' automatically fills when he '
'checked out from the office.')
visiting_person = fields.Many2one('hr.employee', string="Meeting With")
department = fields.Many2one('hr.department', string="Department")
state = fields.Selection([
('draft', 'Draft'),
('check_in', 'Checked In'),
('check_out', 'Checked Out'),
('cancel', 'Cancelled'),
], tracking=True, default='draft')
@api.model
def create(self, vals):
if vals:
vals['name'] = self.env['ir.sequence'].next_by_code(
'fo.visit') or _('New')
result = super(VisitDetails, self).create(vals)
return result
def action_cancel(self):
self.state = "cancel"
def action_check_in(self):
self.state = "check_in"
self.check_in_date = datetime.datetime.now()
def action_check_out(self):
self.state = "check_out"
self.check_out_date = datetime.datetime.now()
@api.onchange('visitor')
def visitor_details(self):
if self.visitor:
if self.visitor.phone:
self.phone = self.visitor.phone
if self.visitor.email:
self.email = self.visitor.email
@api.onchange('visiting_person')
def get_employee_dpt(self):
if self.visiting_person:
self.department = self.visiting_person.department_id
class PersonalBelongings(models.Model):
_name = 'fo.belongings'
_description = 'Personal Belongings'
property_name = fields.Char(string="Property",
help='Employee belongings name')
property_count = fields.Char(string="Count", help='Count of property')
number = fields.Integer(compute='get_number', store=True, string="Sl")
belongings_id_fov_visitor = fields.Many2one('fo.visit',
string="Belongings")
belongings_id_fov_employee = fields.Many2one('fo.property.counter',
string="Belongings")
permission = fields.Selection([
('0', 'Allowed'),
('1', 'Not Allowed'),
('2', 'Allowed With Permission'),
], 'Permission', required=True, index=True, default='0', tracking=True)
@api.depends('belongings_id_fov_visitor', 'belongings_id_fov_employee')
def get_number(self):
for visit in self.mapped('belongings_id_fov_visitor'):
number = 1
for line in visit.visitor_belongings:
line.number = number
number += 1
for visit in self.mapped('belongings_id_fov_employee'):
number = 1
for line in visit.visitor_belongings:
line.number = number
number += 1
class VisitPurpose(models.Model):
_name = 'fo.purpose'
_description = 'Visit Purpose'
name = fields.Char(string='Purpose', required=True,
help='Meeting purpose in short term.eg:Meeting.')
description = fields.Text(string='Description Of Purpose',
help='Description for the Purpose.')

63
front_office_management/models/fo_visitor.py

@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: odoo@cybrosys.com
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import models, fields
class VisitorDetails(models.Model):
_name = 'fo.visitor'
_description = 'Visitor Details'
name = fields.Char(string="Visitor", required=True)
visitor_image = fields.Binary(string='Image', attachment=True)
street = fields.Char(string="Street")
street2 = fields.Char(string="Street2")
zip = fields.Char(change_default=True)
city = fields.Char()
state_id = fields.Many2one("res.country.state", string='State',
ondelete='restrict')
country_id = fields.Many2one('res.country', string='Country',
ondelete='restrict')
phone = fields.Char(string="Phone", required=True)
email = fields.Char(string="Email", required=True)
id_proof = fields.Many2one('id.proof', string="ID Proof")
id_proof_no = fields.Char(string="ID Number", help='Id proof number')
company_info = fields.Many2one('res.partner', string="Company",
help='Visiting persons company details')
visit_count = fields.Integer(compute='_no_visit_count', string='# Visits')
_sql_constraints = [
('field_uniq_email_and_id_proof', 'unique (email,id_proof)',
"Please give the correct data !"),
]
def _no_visit_count(self):
data = self.env['fo.visit'].search(
[('visitor', 'in', self.ids), ('state', '!=', 'cancel')]).ids
self.visit_count = len(data)
class VisitorProof(models.Model):
_name = 'id.proof'
_rec_name = 'id_proof'
_description = 'Visitor Proof'
id_proof = fields.Char(string="Name")
code = fields.Char(string="Code")

92
front_office_management/report/fo_property_label.xml

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="report_property_label">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t>
<div class="page">
<div class="oe_structure"/>
<div class="row">
<div class="col-xs-2" style="margin:auto;">
</div>
<center>
<div class="col-xs-8" style="margin:auto">
<table class="table table-condensed"
style="border: 3px solid black !important;">
<tr>
<td width="100%">
<p style="text-align:center;padding-top:10px;">
<img t-if="not o.employee.image_1920"
t-att-src="'/web/static/src/img/placeholder.png'"
height="120"
border="1"
width="120"/>
<img t-if="o.employee.image_1920"
t-att-src="image_data_uri( o.employee.image_1920)"
class="float-left"
alt="Logo"
height="120"
border="1"
width="120"/>
</p>
<p style="text-align:center;">
Name :
<strong>
<span t-field="o.employee.name"/>
</strong>
</p>
<p style="text-align:center;">
Department :
<strong>
<span t-field="o.employee.department_id.name"/>
</strong>
</p>
<h4 style="margin-left:50px">
<b>Personal
Belongings
</b>
</h4>
<table width="90%"
style="border:1px solid black;margin-left:15px">
<thead>
<th style="border:1px solid black;"
width="13%">
Name
</th>
<th style="border:1px solid black;"
width="13%">
Count
</th>
</thead>
<tbody>
<t t-foreach="o.visitor_belongings"
t-as="l">
<t t-if="l.permission=='1'">
<tr>
<td style="border:1px solid black;">
<span t-esc="l.property_name"
style="font-size:16px;"/>
</td>
<td style="border:1px solid black;">
<span t-esc="l.property_count"
style="font-size:16px;"/>
</td>
</tr>
</t>
</t>
</tbody>
</table>
</td>
</tr>
</table>
</div>
</center>
</div>
</div>
</t>
</t>
</t>
</template>
</data>
</odoo>

124
front_office_management/report/fo_visitor_label.xml

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="report_visitor_label">
<t t-call="web.html_container">
<t t-call="web.external_layout">
<t t-foreach="docs" t-as="o">
<t>
<div class="page">
<div class="oe_structure"/>
<div class="row">
<div class="col-xs-2" style="margin:auto;">
</div>
<center>
<div class="col-xs-8"
style="margin:auto">
<br/>
<table class="table table-condensed"
style="border: 2px solid black !important;">
<tr>
<td width="40%">
<p style="text-align:center;padding-top:10px;">
<img t-if="not o.visitor.visitor_image"
t-att-src="'/web/static/src/img/placeholder.png'"
height="120"
border="1"
width="120"/>
<img t-if="o.visitor.visitor_image"
t-att-src="image_data_uri(o.visitor.visitor_image)"
class="float-left"
alt="Logo"
height="120"
border="1"
width="120"/>
</p>
<p style="text-align:center;">
<strong>
<span t-field="o.visitor"/>
</strong>
</p>
</td>
<td width="50%">
<table>
<tr>
<t t-if="o.visiting_person">
<td>
<p style="text-align:right;padding-top:10px;">
<strong>
Visitor
ID:
</strong>
</p>
<p style="text-align:right;">
<strong>
Phone:
</strong>
</p>
<t t-if="o.visiting_person">
<p style="text-align:right;">
<strong>
Meeting
With:
</strong>
</p>
</t>
<t t-if="o.visiting_person">
<p style="text-align:right;">
<strong>
Department:
</strong>
</p>
</t>
</td>
<td>
<p style="text-align:left;padding-top:10px;padding-left:10px;"
t-field="o.name"/>
<p style="text-align:left;padding-left:10px;"
t-field="o.phone"/>
<t t-if="o.visiting_person">
<p style="text-align:left;padding-left:10px;"
t-field="o.visiting_person"/>
</t>
<t t-if="o.visiting_person">
<p style="text-align:left;padding-left:10px;"
t-field="o.department"/>
</t>
</td>
</t>
<t t-if="not o.visiting_person">
<td>
<p style="text-align:right;padding-top:30px;">
<strong>
VisitorID:
</strong>
</p>
<p style="text-align:right;padding-top:30px;">
<strong>
Phone:
</strong>
</p>
</td>
<td>
<p style="text-align:left;padding-top:30px;"
t-field="o.visitor"/>
<p style="text-align:left;padding-top:30px;"
t-field="o.phone"/>
</td>
</t>
</tr>
</table>
</td>
</tr>
</table>
</div>
</center>
</div>
</div>
</t>
</t>
</t>
</t>
</template>
</data>
</odoo>

39
front_office_management/report/report.xml

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="action_print_visit_card" model="ir.actions.report">
<field name="name">Visitor Pass</field>
<field name="model">fo.visit</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">front_office_management.report_visitor_label</field>
<field name="report_file">front_office_management.report_visitor_label</field>
<field name="print_report_name">'Visitor Pass'</field>
<field name="binding_model_id" ref="model_fo_visit"/>
<field name="binding_type">report</field>
</record>
<record id="action_print_visit_report" model="ir.actions.report">
<field name="name">Visitors Report</field>
<field name="model">fo.visit</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">front_office_management.report_visitor_report</field>
<field name="report_file">front_office_management.report_visitor_report</field>
<field name="print_report_name">'Visitors Report'</field>
<field name="binding_model_id" ref="model_fo_visit"/>
<field name="binding_type">report</field>
</record>
<record id="action_print_property_label" model="ir.actions.report">
<field name="name">Property Label</field>
<field name="model">fo.property.counter</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">front_office_management.report_property_label</field>
<field name="report_file">front_office_management.report_property_label</field>
<field name="print_report_name">'Property Label'</field>
<field name="binding_model_id" ref="model_fo_property_counter"/>
<field name="binding_type">report</field>
</record>
</data>
</odoo>

116
front_office_management/report/visitors_report.xml

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<template id="report_visitor_report">
<t t-call="web.html_container">
<t t-call="web.external_layout">
<t t-foreach="docs" t-as="o">
<div class="page">
<div class="oe_structure"/>
<t t-if="o and 'company_id' in o">
<t t-set="company" t-value="o.company_id"></t>
</t>
<t t-if="not o or not 'company_id' in o">
<t t-set="company" t-value="res_company"></t>
</t>
<br/>
<h3 style="text-align:center;margin-top:50;">
<b>Visitor Report</b>
</h3>
<br/>
<table width="100%"
style="margin-left:50px;margin-top:5px;border: None solid black;">
<tr class="tr2">
<td style="width:50px;height:25px;">
<span>Visitor:</span>
<span t-att-style="style"
t-esc="o.visitor.name"/>
</td>
<td style="width:50px;height:25px;">
<span>Email:</span>
<span t-att-style="style"
t-esc="o.email"/>
</td>
<td style="width:50px;height:25px;">
<span>phone:</span>
<span t-att-style="style"
t-esc="o.phone"/>
</td>
</tr>
<tr class="tr2">
<t t-if="o.visiting_person">
<td style="width:50px;height:25px;">
<span>Meeting With :</span>
<span t-att-style="style"
t-esc="o.visiting_person.name"/>
</td>
</t>
<t t-if="o.visiting_person">
<td style="width:50px;height:25px;">
<span>Department :</span>
<span t-att-style="style"
t-esc="o.department.name"/>
</td>
</t>
</tr>
</table>
<br/>
<br/>
<h4 style="margin-left:50px">
<b>In Out Details</b>
</h4>
<table width="99%"
style="margin-left:50px;margin-top:5px;border: None solid black;">
<tr class="tr2">
<td style="width:50px;height:25px;">
<span>Check In :</span>
<span t-att-style="style"
t-esc="o.check_in_date"/>
</td>
<td style="width:50px;height:25px;">
<span>Check Out :</span>
<span t-att-style="style"
t-esc="o.check_out_date"/>
</td>
</tr>
</table>
<br/>
<br/>
<h4 style="margin-left:50px">
<b>Personal Belongings</b>
</h4>
<table width="90%"
style="border:1px solid black;margin-left:50px">
<thead>
<th style="border:1px solid black;"
width="13%">Name
</th>
<th style="border:1px solid black;"
width="13%">Count
</th>
</thead>
<tbody>
<t t-foreach="o.visitor_belongings"
t-as="l">
<tr>
<td style="border:1px solid black;">
<span t-esc="l.property_name"
style="font-size:16px;"/>
</td>
<td style="border:1px solid black;">
<span t-esc="l.property_count"
style="font-size:16px;"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
<p style="page-break-after:always"/>
</t>
</t>
</t>
</template>
</data>
</odoo>

17
front_office_management/security/fo_security.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.module.category" id="module_fo_front_office">
<field name="name">Reception</field>
<field name="sequence">0</field>
<field name="visible" eval="0" />
</record>
<record id="group_receptionist" model="res.groups">
<field name="name">Receptionist</field>
<field name="category_id" ref="module_fo_front_office"/>
</record>
</data>
</odoo>

14
front_office_management/security/ir.model.access.csv

@ -0,0 +1,14 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_fo_visit_receptionist,fo.visit,model_fo_visit,front_office_management.group_receptionist,1,1,1,1
access_fo_visitor_receptionist,fo_visitor,model_fo_visitor,front_office_management.group_receptionist,1,1,1,1
access_fo_belongings_receptionist,fo.belongings,model_fo_belongings,front_office_management.group_receptionist,1,1,1,1
access_id_proof_receptionist,id.proof,model_id_proof,front_office_management.group_receptionist,1,1,1,1
access_fo_property_counter_receptionist,fo.property.counter,model_fo_property_counter,front_office_management.group_receptionist,1,1,1,1
access_fo_purpose_receptionist,fo.purpose,model_fo_purpose,front_office_management.group_receptionist,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_fo_visit_receptionist fo.visit model_fo_visit front_office_management.group_receptionist 1 1 1 1
3 access_fo_visitor_receptionist fo_visitor model_fo_visitor front_office_management.group_receptionist 1 1 1 1
4 access_fo_belongings_receptionist fo.belongings model_fo_belongings front_office_management.group_receptionist 1 1 1 1
5 access_id_proof_receptionist id.proof model_id_proof front_office_management.group_receptionist 1 1 1 1
6 access_fo_property_counter_receptionist fo.property.counter model_fo_property_counter front_office_management.group_receptionist 1 1 1 1
7 access_fo_purpose_receptionist fo.purpose model_fo_purpose front_office_management.group_receptionist 1 1 1 1

BIN
front_office_management/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
front_office_management/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
front_office_management/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
front_office_management/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
front_office_management/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
front_office_management/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
front_office_management/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
front_office_management/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
front_office_management/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
front_office_management/static/description/assets/icons/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
front_office_management/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
front_office_management/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
front_office_management/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
front_office_management/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
front_office_management/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
front_office_management/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
front_office_management/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
front_office_management/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
front_office_management/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
front_office_management/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
front_office_management/static/description/assets/modules/approval_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
front_office_management/static/description/assets/modules/budget_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
front_office_management/static/description/assets/modules/export_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
front_office_management/static/description/assets/modules/magento_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
front_office_management/static/description/assets/modules/pos_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
front_office_management/static/description/assets/modules/shopify_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
front_office_management/static/description/assets/screenshots/front-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
front_office_management/static/description/assets/screenshots/front-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
front_office_management/static/description/assets/screenshots/front-3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
front_office_management/static/description/assets/screenshots/front-4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
front_office_management/static/description/assets/screenshots/front-5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
front_office_management/static/description/assets/screenshots/front-6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
front_office_management/static/description/assets/screenshots/hero.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
front_office_management/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
front_office_management/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

706
front_office_management/static/description/index.html

@ -0,0 +1,706 @@
<div class="container" style="padding: 1rem !important; margin-bottom: 1rem !important;">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between"
style="border-bottom: 1px solid #d5d5d5;">
<div class="my-3">
<img src="./assets/icons/logo.png" style="width: auto !important; height: 40px !important;">
</div>
<div class="my-3 d-flex align-items-center">
<div
style="background-color: #7C7BAD !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Community
</div>
<div
style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
</div>
</div>
</div>
</div>
<div class="container" style="padding: 0rem 1.5rem 4rem !important">
<div class="row" style="height: 900px !important;">
<div class="col-sm-12 col-md-12 col-lg-12"
style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;">
<h1
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important; font-size: 3.5rem !important; text-align: center !important;">
Front Office Management</h1>
<p
style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important; font-size: 1.4rem !important; text-align: center !important;">
Manages Visitors and Employee Belongings
</p>
<img src="./assets/screenshots/hero.png" class="img-responsive" width="100%" height="auto" />
</div>
</div>
<div class="row">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin-bottom: 2rem !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-compass mr-2"></i>Explore this module
</h2>
</div>
<div class="col-md-6">
<a href="#overview" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Overview</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
Learn more about this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#features" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Features</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
View features of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#screenshots" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Screenshots</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
See key screenshots of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<!-- <div class="col-md-6">
<a href="#video" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Video</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
Watch tutorial video on this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div> -->
</div>
<div class="row" id="overview">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-pie-chart mr-2"></i>Overview
</h2>
</div>
<div class="col-mg-12 pl-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;">
This app will help you to manage the visitors coming to your office by issuing entry passes and handling
their belongings. The app can also manage the belongings of your employees.</p>
</div>
</div>
<div class="row" id="features">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-star mr-2"></i>Features
</h2>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Manage visitors</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Issue Visitor Pass</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Keep Check in, Check out Details of Visitors</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Manage Visitor Belongings</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Print Report Of visitor</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Manage Employee Belongings</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Print Property Label</h4>
</div>
</div>
</div>
<div class="row" id="screenshots">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-image mr-2"></i>Screenshots
</h2>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Visitors</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Create visitors.</p>
<img src="assets/screenshots/front-1.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Visits</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Add visiting details.
</p>
<img src="assets/screenshots/front-2.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Visitor Pass</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Go to Visitor Management -> Visits -> Print -> Visitor Pass
</p>
<img src="assets/screenshots/front-3.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Visitor Report</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Go to Visitor Management -> Visits -> Print -> Visitors Report
</p>
<img src="assets/screenshots/front-4.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Employee Belongings</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Here you can specify the field 'Permission' with the values of Allowed,Not Allowed and Allowed with
permission.
</p>
<img src="assets/screenshots/front-5.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Property Label</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Print the properties name that are not allowed to enter to the office.
</p>
<img src="assets/screenshots/front-6.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
</div>
<!-- <div class="row" id="video">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-image mr-2"></i>Video
</h2>
</div>
<div class="col-12 d-flex justify-content-center">
<div class="s_panel_video" data-video-id="LOQDtQbcVS0">
<img class="img-fluid s_tooltip_tabs_tooltip_image s_figure_link pb0"
src="assets/screenshots/library-management-youtube.png" alt="Cybrosys Cover Video"
style="max-width:100%">
</div>
</div>
</div> -->
<!-- SUGGESTED PRODUCTS -->
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center"
style="text-align: center; padding: 2.5rem 1rem !important;">
<h2 style="color: #212529 !important;">Suggested Products</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/export_stockinfo_xls/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/export_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/dashboard_pos/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/pos_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/product_approval_management/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/approval_image.png">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/base_account_budget/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/budget_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/shopify_odoo_connector/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/shopify_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/odoo11_magento2/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/magento_image.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="left:-25px;width: 35px;color: #000;"> <span class="carousel-control-prev-icon"><i
class="fa fa-chevron-left" style="font-size:24px"></i></span> </a> <a
class="carousel-control-next" href="#demo1" data-slide="next"
style="right:-25px;width: 35px;color: #000;">
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF SUGGESTED PRODUCTS -->
<!-- OUR SERVICES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Services</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</section>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Industries</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</section>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- FOOTER -->
<!-- Footer Section -->
<section class="container" style="margin: 5rem auto 2rem;">
<div class="row" style="max-width:1540px;">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Need Help?</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center"
style="max-width:1540px; margin: 0 auto 2rem auto;">
<div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
<div class="row mt-4">
<div class="col-lg-6">
<a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
</div>
<div class="col-lg-6">
<a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
class="fa fa-whatsapp mr-2"></i>WhatsApp</a>
</div>
</div>
</div>
</div>
<!-- End of Contact Cards -->
</section>
<!-- Footer -->
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;">
<img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto" />
</div>
<!-- End of Logo -->
<div class="col-lg-12">
<hr
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<!-- End of Footer Section -->
</div>
</div>
</section>
<!-- END OF FOOTER -->
</div>

99
front_office_management/views/fo_property_counter.xml

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="fo_property_counter_form_view">
<field name="name">Property Counter</field>
<field name="model">fo.property.counter</field>
<field name="arch" type="xml">
<form string="Visits">
<header>
<button name="action_prop_in"
string="Take In"
type="object"
states="draft"
class="oe_highlight"
/>
<button name="action_prop_out"
string="Take Out"
type="object"
states="prop_in"
class="oe_highlight"
/>
<button name="action_cancel"
string="Cancel"
type="object"
states="draft"
attrs="{'invisible': [('state', 'in', ('prop_in','prop_out'))]}"/>
<field name="state"
widget="statusbar"
statusbar_visible="draft,prop_in,prop_out,cancel"
/>
</header>
<sheet>
<group>
<group>
<field name="employee"/>
<field name="date"/>
</group>
<group>
</group>
</group>
<notebook>
<page string="Personal belongings">
<field name="visitor_belongings"
widget="one2many_list" nolabel="1">
<tree decoration-success="permission == '0' or permission == '2'"
decoration-danger="permission == '1'"
string="Items" editable="bottom">
<field name="number"/>
<field name="property_name"/>
<field name="property_count"/>
<field name="permission"/>
</tree>
</field>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"
widget="mail_followers"
groups="base.group_user"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<record model="ir.ui.view" id="fo_property_counter_tree_view">
<field name="name">Property Counter</field>
<field name="model">fo.property.counter</field>
<field name="arch" type="xml">
<tree string="Visits" decoration-success="state == 'prop_in'"
decoration-muted="state == 'prop_out'">
<field name="employee"/>
<field name="date"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="fo_property_counter_action">
<field name="name">Property Counter</field>
<field name="res_model">fo.property.counter</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Record Personal Belongings.
</p>
</field>
</record>
<menuitem id="fo_property_counter_menu" name="Property Counter"
parent="front_office_mgmnt_main"
sequence="4"/>
<menuitem id="fo_property_counter_menu_child" name="Property Counter"
parent="fo_property_counter_menu"
action="fo_property_counter_action"
groups="base.group_user" sequence="2"/>
</data>
</odoo>

194
front_office_management/views/fo_visit.xml

@ -0,0 +1,194 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="fo_visit_form_view">
<field name="name">Visits</field>
<field name="model">fo.visit</field>
<field name="arch" type="xml">
<form string="Visits">
<header>
<button name="action_check_in"
string="Check In"
type="object"
states="draft"
class="oe_highlight"
/>
<button name="action_check_out"
string="Check Out"
type="object"
states="check_in"
class="oe_highlight"
/>
<button name="action_cancel"
string="Cancel"
type="object"
states="draft"
attrs="{'invisible': [('state', 'in', ('check_in','check_out'))]}"/>
<field name="state"
widget="statusbar"
statusbar_visible="draft,check_in,check_out,cancel"
/>
</header>
<sheet>
<div class="oe_title">
<h1>
<field name="name" readonly="1"/>
</h1>
</div>
<group>
<group>
<field name="visitor"/>
<field name="phone"/>
<field name="email"/>
</group>
<group string="Check In/Out Details">
<field name="check_in_date"/>
<field name="check_out_date"/>
</group>
</group>
<group string="Purpose Of Visit">
<group>
<field name="visiting_person"/>
<field name="department"/>
<field name="reason" widget="many2many_tags"/>
</group>
<group>
</group>
</group>
<notebook>
<page string="Personal Belongings">
<field name="visitor_belongings"
widget="one2many_list" nolabel="1">
<tree decoration-success="permission == '0' or permission == '2'"
decoration-danger="permission == '1'"
string="Items" editable="bottom">
<field name="number"/>
<field name="property_name"/>
<field name="property_count"/>
<field name="permission"/>
</tree>
</field>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"
widget="mail_followers"
groups="base.group_user"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<record model="ir.ui.view" id="fo_visit_tree_view">
<field name="name">Visits</field>
<field name="model">fo.visit</field>
<field name="arch" type="xml">
<tree string="Visits" decoration-success="state == 'check_in'"
decoration-muted="state == 'check_out'">
<field name="visitor"/>
<field name="reason"/>
<field name="visiting_person"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="fo_visit_action">
<field name="name">Visits</field>
<field name="res_model">fo.visit</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Create Visits.
</p>
<p>
The check in time will be automatically filled when the
visitor check in to the office.
</p>
<p>
The check out time automatically filled when the visitor
check out from office.
</p>
</field>
</record>
<record id="fo_today_visit_action" model="ir.actions.act_window">
<field name="name">Today's Visits</field>
<field name="res_model">fo.visit</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('check_in_date', '&gt;=',((context_today()-datetime.timedelta(days=0)).strftime('%Y-%m-%d 00:00:00'))),
('check_in_date', '&lt;=',((context_today()-datetime.timedelta(days=0)).strftime('%Y-%m-%d 23:59:59')))]
</field>
</record>
<record model="ir.sequence" id="seq_lab_visit">
<field name="name">Visits</field>
<field name="code">fo.visit</field>
<field name="prefix">VID</field>
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
<record model="ir.ui.view" id="fo_belongings_form_view">
<field name="name">Belongings</field>
<field name="model">fo.belongings</field>
<field name="arch" type="xml">
<form string="Belongings">
<sheet>
<group>
<group>
<field name="property_name"/>
</group>
<group>
<field name="property_count"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!--Proof Form view-->
<record model="ir.ui.view" id="fo_id_proof_form_view">
<field name="name">ID Proof</field>
<field name="model">id.proof</field>
<field name="arch" type="xml">
<form string="ID Proof">
<sheet>
<group>
<group>
<field name="id_proof"/>
</group>
<group>
<field name="code"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!--visiting purpose view-->
<record model="ir.ui.view" id="fo_visiting_purpose_form_view">
<field name="name">Visiting Purpose</field>
<field name="model">fo.purpose</field>
<field name="arch" type="xml">
<form string="Visiting Purpose">
<sheet>
<group>
<group>
<field name="name"/>
</group>
<group>
<field name="description"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
</data>
</odoo>

159
front_office_management/views/fo_visitor.xml

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="fo_visitor_form_view">
<field name="name">Visitors</field>
<field name="model">fo.visitor</field>
<field name="arch" type="xml">
<form string="Visitors">
<sheet>
<div class="oe_button_box" name="button_box">
<button class="oe_stat_button"
name="%(fo_visit_action)d" type="action"
icon="fa-arrows-v"
context="{'default_visitor': [active_id],'search_default_visitor': [active_id]}">
<field name="visit_count" widget="statinfo"
string="Visits"
style="margin-right:50px"/>
</button>
</div>
<field name="visitor_image" widget="image"
class="oe_avatar" style="margin-right:50px"/>
<div name="title_name" class="oe_title">
<h1>
<table>
<tr>
<td>
<field name="name"
placeholder="FullName"
style="padding-right:10px"/>
</td>
</tr>
</table>
</h1>
</div>
<group>
<group>
<label for="street" string="Address"/>
<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}'/>
<field name="zip" placeholder="ZIP"
class="o_address_zip"/>
<field name="country_id"
placeholder="Country"
class="o_address_country"
options='{"no_open": True, "no_create": True}'/>
</div>
<field name="company_info"/>
</group>
<group>
<field name="phone"/>
<field name="email"/>
<field name="id_proof"/>
<field name="id_proof_no"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="fo_visitor_kanban_view" model="ir.ui.view">
<field name="name">fo.visitor.kanban</field>
<field name="model">fo.visitor</field>
<field name="arch" type="xml">
<kanban>
<field name="id"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click">
<div class="o_kanban_image">
<img t-att-src="kanban_image('fo.visitor', 'visitor_image', record.id.value)"/>
</div>
<div class="oe_kanban_details">
<strong>
<ul>
<li>Name :
<field name="name"/>
</li>
<li>Phone:
<field name="phone"/>
</li>
</ul>
</strong>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record model="ir.ui.view" id="fo_visitor_tree_view">
<field name="name">Visitors</field>
<field name="model">fo.visitor</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string='Visitors'>
<field name="name"/>
<field name="phone"/>
<field name="company_info"/>
</tree>
</field>
</record>
<record id="fo_visitor_action" model="ir.actions.act_window">
<field name="name">Visitors</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">fo.visitor</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_id" ref="fo_visitor_kanban_view"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create New Visitor.
</p>
</field>
</record>
<menuitem id="front_office_mgmnt_main"
name="Front Office"
sequence="2"/>
<menuitem id="visitor_mgmnt_menu"
name="Visitor Management"
parent="front_office_mgmnt_main"
sequence="1"/>
<menuitem id="visitor_menu"
name="Visitor"
parent="visitor_mgmnt_menu"
action="fo_visitor_action"
groups="base.group_user"
sequence="1"/>
<menuitem id="fo_visit_menu"
name="Visits"
parent="visitor_mgmnt_menu"
action="fo_visit_action"
sequence="2"/>
<menuitem id="fo_today_visit_menu"
name="Today's Visits"
parent="front_office_mgmnt_main"
sequence="2"/>
<menuitem id="fo_today_visit_menu_child"
name="Today's Visits"
parent="fo_today_visit_menu"
action="fo_today_visit_action"
groups="base.group_user"
sequence="2"/>
</data>
</odoo>
Loading…
Cancel
Save