@ -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>`__ |
@ -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 |
@ -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, |
|||
} |
@ -0,0 +1,6 @@ |
|||
## Module <front_office_management> |
|||
|
|||
#### 19.09.2021 |
|||
#### Version 15.0.1.0.0 |
|||
##### ADD |
|||
- Migrated to version 15 |
@ -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 |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
@ -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" |
@ -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.') |
@ -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") |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
|
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 15 KiB |
@ -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 & 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> |
@ -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> |
@ -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', '>=',((context_today()-datetime.timedelta(days=0)).strftime('%Y-%m-%d 00:00:00'))), |
|||
('check_in_date', '<=',((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> |
@ -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> |