@ -0,0 +1,39 @@ |
|||
Export Product Stock in Excel v12 |
|||
================================= |
|||
This module helps you to take current stock report for all products in each warehouse. |
|||
|
|||
Configuration |
|||
============= |
|||
* No additional configurations needed |
|||
|
|||
Company |
|||
------- |
|||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
|||
|
|||
Credits |
|||
------- |
|||
* Developers: Cybrosys Techno Solutions odoo@cybrosys.com |
|||
|
|||
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,24 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author:Cybrosys Techno Solutions(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 |
|||
from . import controllers |
@ -0,0 +1,48 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author:Cybrosys Techno Solutions(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': 'Export Product Stock in Excel', |
|||
'version': '13.0.1.0.0', |
|||
'summary': "Current Stock Report for all Products in each Warehouse", |
|||
'description': "Current Stock Report for all Products in each Warehouse, Odoo 13,Odoo13", |
|||
'category': 'Warehouse', |
|||
'author': 'Cybrosys Techno Solutions', |
|||
'maintainer': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'website': 'https://www.cybrosys.com', |
|||
'depends': [ |
|||
'base', |
|||
'stock', |
|||
'sale', |
|||
'purchase', |
|||
], |
|||
'data': [ |
|||
'views/wizard_view.xml', |
|||
'views/action_manager.xml', |
|||
], |
|||
'images': ['static/description/banner.jpg'], |
|||
'license': 'AGPL-3', |
|||
'installable': True, |
|||
'auto_install': False, |
|||
'auto_install': False, |
|||
} |
@ -0,0 +1,22 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author:Cybrosys Techno Solutions(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 main |
@ -0,0 +1,56 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author:Cybrosys Techno Solutions(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 json |
|||
from odoo import http |
|||
from odoo.http import content_disposition, request |
|||
from odoo.addons.web.controllers.main import _serialize_exception |
|||
from odoo.tools import html_escape |
|||
|
|||
|
|||
class XLSXReportController(http.Controller): |
|||
|
|||
@http.route('/xlsx_reports', type='http', auth='user', methods=['POST'], csrf=False) |
|||
def get_report_xlsx(self, model, options, output_format, token, report_name, **kw): |
|||
uid = request.session.uid |
|||
report_obj = request.env[model].sudo(uid) |
|||
options = json.loads(options) |
|||
try: |
|||
if output_format == 'xlsx': |
|||
response = request.make_response( |
|||
None, |
|||
headers=[ |
|||
('Content-Type', 'application/vnd.ms-excel'), |
|||
('Content-Disposition', content_disposition(report_name + '.xlsx')) |
|||
] |
|||
) |
|||
report_obj.get_xlsx_report(options, response) |
|||
response.set_cookie('fileToken', token) |
|||
return response |
|||
except Exception as e: |
|||
se = _serialize_exception(e) |
|||
error = { |
|||
'code': 200, |
|||
'message': 'Odoo Server Error', |
|||
'data': se |
|||
} |
|||
return request.make_response(html_escape(json.dumps(error))) |
@ -0,0 +1,9 @@ |
|||
## Module <export_stockinfo_xls> |
|||
|
|||
#### 01.11.2019 |
|||
#### Version 13.0.1.0.0 |
|||
#### Migration |
|||
Migration Of Export Product Stock in Excel |
|||
|
|||
|
|||
|
@ -0,0 +1,24 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author:Cybrosys Techno Solutions(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 res_partner |
|||
from . import wizard |
@ -0,0 +1,41 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author:Cybrosys Techno Solutions(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 Partner(models.Model): |
|||
_inherit = 'res.partner' |
|||
|
|||
supplier_id = fields.Many2many('wizard.stock.history', 'supp_wiz_rel', 'wiz', 'supp', invisible=True) |
|||
|
|||
|
|||
class Category(models.Model): |
|||
_inherit = 'product.category' |
|||
|
|||
obj = fields.Many2many('wizard.stock.history', 'categ_wiz_rel', 'wiz', 'categ', invisible=True) |
|||
|
|||
|
|||
class Warehouse(models.Model): |
|||
_inherit = 'stock.warehouse' |
|||
|
|||
obj = fields.Many2many('wizard.stock.history', 'wh_wiz_rel', 'wiz', 'wh', invisible=True) |
@ -0,0 +1,257 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author:Cybrosys Techno Solutions(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 datetime import datetime |
|||
from datetime import date, datetime |
|||
from odoo import models, fields, api |
|||
import time |
|||
import pytz |
|||
import json |
|||
import datetime |
|||
import io |
|||
from odoo import api, fields, models, _ |
|||
from odoo.exceptions import UserError |
|||
from odoo.exceptions import ValidationError |
|||
from odoo.tools import date_utils |
|||
try: |
|||
from odoo.tools.misc import xlsxwriter |
|||
except ImportError: |
|||
import xlsxwriter |
|||
|
|||
|
|||
class StockReport(models.TransientModel): |
|||
_name = "wizard.stock.history" |
|||
_description = "Current Stock History" |
|||
|
|||
warehouse = fields.Many2many('stock.warehouse', 'wh_wiz_rel', 'wh', 'wiz', string='Warehouse', required=True) |
|||
category = fields.Many2many('product.category', 'categ_wiz_rel', 'categ', 'wiz', string='Warehouse') |
|||
|
|||
def export_xls(self): |
|||
# context = self._context |
|||
# data = {'ids': context.get('active_ids', [])} |
|||
# data['model'] = 'wizard.stock.history' |
|||
# data['form'] = self.read()[0] |
|||
# for field in data['form'].keys(): |
|||
# if isinstance(data['form'][field], tuple): |
|||
# data['form'][field] = data['form'][field][0] |
|||
# if context.get('xls_export'): |
|||
|
|||
# return self.env.ref('export_stockinfo_xls.stock_xlsx').report_action(self, data=datas) |
|||
data = { |
|||
'ids': self.ids, |
|||
'model': self._name, |
|||
'warehouse': self.warehouse.id, |
|||
'category': self.category.id, |
|||
# 'date_start': self.date_start, |
|||
# 'date_end': self.date_end, |
|||
# 'state': self.state, |
|||
# 'product_id': self.product_id.id, |
|||
# 'usage': self.usage, |
|||
} |
|||
return { |
|||
'type': 'ir_actions_xlsx_download', |
|||
'data': {'model': 'wizard.stock.history', |
|||
'options': json.dumps(data, default=date_utils.json_default), |
|||
'output_format': 'xlsx', |
|||
'report_name': 'Current Stock History', |
|||
} |
|||
} |
|||
|
|||
def get_warehouse(self, data): |
|||
wh = data.warehouse.mapped('id') |
|||
obj = self.env['stock.warehouse'].search([('id', 'in', wh)]) |
|||
l1 = [] |
|||
l2 = [] |
|||
for j in obj: |
|||
l1.append(j.name) |
|||
l2.append(j.id) |
|||
return l1, l2 |
|||
|
|||
def get_lines(self, data, warehouse): |
|||
lines = [] |
|||
categ_id = data.mapped('id') |
|||
if categ_id: |
|||
stock_history = self.env['product.product'].search([('categ_id', 'in', categ_id)]) |
|||
else: |
|||
stock_history = self.env['product.product'].search([]) |
|||
for obj in stock_history: |
|||
sale_value = 0 |
|||
purchase_value = 0 |
|||
product = self.env['product.product'].browse(obj.id) |
|||
sale_obj = self.env['sale.order.line'].search([('order_id.state', 'in', ('sale', 'done')), |
|||
('product_id', '=', product.id), |
|||
('order_id.warehouse_id', '=', warehouse)]) |
|||
for i in sale_obj: |
|||
sale_value = sale_value + i.product_uom_qty |
|||
purchase_obj = self.env['purchase.order.line'].search([('order_id.state', 'in', ('purchase', 'done')), |
|||
('product_id', '=', product.id), |
|||
('order_id.picking_type_id', '=', warehouse)]) |
|||
for i in purchase_obj: |
|||
purchase_value = purchase_value + i.product_qty |
|||
available_qty = product.with_context({'warehouse': warehouse}).virtual_available + \ |
|||
product.with_context({'warehouse': warehouse}).outgoing_qty - \ |
|||
product.with_context({'warehouse': warehouse}).incoming_qty |
|||
value = available_qty * product.standard_price |
|||
vals = { |
|||
'sku': product.default_code, |
|||
'name': product.name, |
|||
'category': product.categ_id.name, |
|||
'cost_price': product.standard_price, |
|||
'available': available_qty, |
|||
'virtual': product.with_context({'warehouse': warehouse}).virtual_available, |
|||
'incoming': product.with_context({'warehouse': warehouse}).incoming_qty, |
|||
'outgoing': product.with_context({'warehouse': warehouse}).outgoing_qty, |
|||
'net_on_hand': product.with_context({'warehouse': warehouse}).qty_available, |
|||
'total_value': value, |
|||
'sale_value': sale_value, |
|||
'purchase_value': purchase_value, |
|||
} |
|||
lines.append(vals) |
|||
print(lines) |
|||
return lines |
|||
|
|||
def get_xlsx_report(self, data, response): |
|||
output = io.BytesIO() |
|||
workbook = xlsxwriter.Workbook(output, {'in_memory': True}) |
|||
lines = self.browse(data['ids']) |
|||
print("lines",lines) |
|||
d = lines.category |
|||
get_warehouse = self.get_warehouse(lines) |
|||
print("get_warehouse",get_warehouse) |
|||
count = len(get_warehouse[0]) * 11 + 6 |
|||
print("count",count) |
|||
comp = self.env.user.company_id.name |
|||
print("comp",comp) |
|||
sheet = workbook.add_worksheet('Stock Info') |
|||
format0 = workbook.add_format({'font_size': 20, 'align': 'center', 'bold': True}) |
|||
format1 = workbook.add_format({'font_size': 14, 'align': 'vcenter', 'bold': True}) |
|||
format11 = workbook.add_format({'font_size': 12, 'align': 'center', 'bold': True}) |
|||
format21 = workbook.add_format({'font_size': 10, 'align': 'center', 'bold': True}) |
|||
format3 = workbook.add_format({'bottom': True, 'top': True, 'font_size': 12}) |
|||
format4 = workbook.add_format({'font_size': 12, 'align': 'left', 'bold': True}) |
|||
font_size_8 = workbook.add_format({'font_size': 8, 'align': 'center'}) |
|||
font_size_8_l = workbook.add_format({'font_size': 8, 'align': 'left'}) |
|||
font_size_8_r = workbook.add_format({'font_size': 8, 'align': 'right'}) |
|||
red_mark = workbook.add_format({'font_size': 8, 'bg_color': 'red'}) |
|||
justify = workbook.add_format({'font_size': 12}) |
|||
format3.set_align('center') |
|||
justify.set_align('justify') |
|||
format1.set_align('center') |
|||
red_mark.set_align('center') |
|||
sheet.merge_range(1, 7, 2, 10, 'Product Stock Info', format0) |
|||
sheet.merge_range(3, 7, 3, 10, comp, format11) |
|||
w_house = ', ' |
|||
cat = ', ' |
|||
c = [] |
|||
d1 = d.mapped('id') |
|||
if d1: |
|||
for i in d1: |
|||
c.append(self.env['product.category'].browse(i).name) |
|||
cat = cat.join(c) |
|||
sheet.merge_range(4, 0, 4, 1, 'Category(s) : ', format4) |
|||
sheet.merge_range(4, 2, 4, 3 + len(d1), cat, format4) |
|||
sheet.merge_range(5, 0, 5, 1, 'Warehouse(s) : ', format4) |
|||
w_house = w_house.join(get_warehouse[0]) |
|||
sheet.merge_range(5, 2, 5, 3+len(get_warehouse[0]), w_house, format4) |
|||
user = self.env['res.users'].browse(self.env.uid) |
|||
tz = pytz.timezone(user.tz) |
|||
time = pytz.utc.localize(datetime.datetime.now()).astimezone(tz) |
|||
# print("tz", time) |
|||
sheet.merge_range('A8:G8', 'Report Date: ' + str(time.strftime("%Y-%m-%d %H:%M %p")), format1) |
|||
sheet.merge_range(7, 7, 7, count, 'Warehouses', format1) |
|||
sheet.merge_range('A9:G9', 'Product Information', format11) |
|||
w_col_no = 6 |
|||
w_col_no1 = 7 |
|||
for i in get_warehouse[0]: |
|||
w_col_no = w_col_no + 11 |
|||
sheet.merge_range(8, w_col_no1, 8, w_col_no, i, format11) |
|||
w_col_no1 = w_col_no1 + 11 |
|||
sheet.write(9, 0, 'SKU', format21) |
|||
sheet.merge_range(9, 1, 9, 3, 'Name', format21) |
|||
sheet.merge_range(9, 4, 9, 5, 'Category', format21) |
|||
sheet.write(9, 6, 'Cost Price', format21) |
|||
p_col_no1 = 7 |
|||
for i in get_warehouse[0]: |
|||
sheet.write(9, p_col_no1, 'Available', format21) |
|||
sheet.write(9, p_col_no1 + 1, 'Virtual', format21) |
|||
sheet.write(9, p_col_no1 + 2, 'Incoming', format21) |
|||
sheet.write(9, p_col_no1 + 3, 'Outgoing', format21) |
|||
sheet.merge_range(9, p_col_no1 + 4, 9, p_col_no1 + 5, 'Net On Hand', format21) |
|||
sheet.merge_range(9, p_col_no1 + 6, 9, p_col_no1 + 7, 'Total Sold', format21) |
|||
sheet.merge_range(9, p_col_no1 + 8, 9, p_col_no1 + 9, 'Total Purchased', format21) |
|||
sheet.write(9, p_col_no1 + 10, 'Valuation', format21) |
|||
p_col_no1 = p_col_no1 + 11 |
|||
prod_row = 10 |
|||
prod_col = 0 |
|||
for i in get_warehouse[1]: |
|||
get_line = self.get_lines(d, i) |
|||
for each in get_line: |
|||
sheet.write(prod_row, prod_col, each['sku'], font_size_8) |
|||
sheet.merge_range(prod_row, prod_col + 1, prod_row, prod_col + 3, each['name'], font_size_8_l) |
|||
sheet.merge_range(prod_row, prod_col + 4, prod_row, prod_col + 5, each['category'], font_size_8_l) |
|||
sheet.write(prod_row, prod_col + 6, each['cost_price'], font_size_8_r) |
|||
prod_row = prod_row + 1 |
|||
break |
|||
prod_row = 10 |
|||
prod_col = 7 |
|||
for i in get_warehouse[1]: |
|||
get_line = self.get_lines(d, i) |
|||
for each in get_line: |
|||
if each['available'] < 0: |
|||
sheet.write(prod_row, prod_col, each['available'], red_mark) |
|||
else: |
|||
sheet.write(prod_row, prod_col, each['available'], font_size_8) |
|||
if each['virtual'] < 0: |
|||
sheet.write(prod_row, prod_col + 1, each['virtual'], red_mark) |
|||
else: |
|||
sheet.write(prod_row, prod_col + 1, each['virtual'], font_size_8) |
|||
if each['incoming'] < 0: |
|||
sheet.write(prod_row, prod_col + 2, each['incoming'], red_mark) |
|||
else: |
|||
sheet.write(prod_row, prod_col + 2, each['incoming'], font_size_8) |
|||
if each['outgoing'] < 0: |
|||
sheet.write(prod_row, prod_col + 3, each['outgoing'], red_mark) |
|||
else: |
|||
sheet.write(prod_row, prod_col + 3, each['outgoing'], font_size_8) |
|||
if each['net_on_hand'] < 0: |
|||
sheet.merge_range(prod_row, prod_col + 4, prod_row, prod_col + 5, each['net_on_hand'], red_mark) |
|||
else: |
|||
sheet.merge_range(prod_row, prod_col + 4, prod_row, prod_col + 5, each['net_on_hand'], font_size_8) |
|||
if each['sale_value'] < 0: |
|||
sheet.merge_range(prod_row, prod_col + 6, prod_row, prod_col + 7, each['sale_value'], red_mark) |
|||
else: |
|||
sheet.merge_range(prod_row, prod_col + 6, prod_row, prod_col + 7, each['sale_value'], font_size_8) |
|||
if each['purchase_value'] < 0: |
|||
sheet.merge_range(prod_row, prod_col + 8, prod_row, prod_col + 9, each['purchase_value'], red_mark) |
|||
else: |
|||
sheet.merge_range(prod_row, prod_col + 8, prod_row, prod_col + 9, each['purchase_value'], font_size_8) |
|||
if each['total_value'] < 0: |
|||
sheet.write(prod_row, prod_col + 10, each['total_value'], red_mark) |
|||
else: |
|||
sheet.write(prod_row, prod_col + 10, each['total_value'], font_size_8_r) |
|||
prod_row = prod_row + 1 |
|||
prod_row = 10 |
|||
prod_col = prod_col + 11 |
|||
workbook.close() |
|||
output.seek(0) |
|||
response.stream.write(output.read()) |
|||
output.close() |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 299 KiB |
After Width: | Height: | Size: 337 KiB |
After Width: | Height: | Size: 41 KiB |
@ -0,0 +1,370 @@ |
|||
|
|||
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png);background-repeat:no-repeat;background-size:100%;padding: 4% 0% 2% 15%;background-position-y: -107px;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;"> |
|||
Current Stock XLS |
|||
</h2> |
|||
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;"> |
|||
Current Stock Report for all Products in each Warehouse |
|||
</h3> |
|||
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;"> |
|||
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank">Cybrosys Technologies</a> |
|||
</h5> |
|||
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank"> |
|||
<div style="width: 215px;margin-left: 57%;text-align: center;background: #ffffff;height: 215px;border-radius: 100%;display: flex;justify-content: center;align-items: center;box-shadow: 0 0 12px 4px #00000059;"> |
|||
<img src="https://www.cybrosys.com/images/cybro-logo-oca.png" alt="cybrosys technologies" style="width: 180px;"/> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container" style="padding: 3% 0% 3% 15%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Overview |
|||
</h2> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
This module helps to print Current Stock Report for all Products in each Warehouse with XLS. |
|||
</h3> |
|||
</div> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 300;margin: 0px !important;"> |
|||
Installation |
|||
</h2> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
To install this module, you need also the report_xlsx module. |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
You need to set the Timezone in odoo. |
|||
</h3> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 19% 0% 30% 15%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Features |
|||
</h2> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Select category for products |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Get your stock valuation details</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Negative stock will be highlighted in "red" cells. |
|||
</h3> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 3% 0% 0% 15%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Screenshots |
|||
</h2> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Go to Inventory -> Reports -> Current stock in Excel.<br/> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Now a wizard will appear on your screen. |
|||
<!--<img src="https://www.cybrosys.com/images/ico-tick.png">--> |
|||
Please enter the warehouses which you want to take the report.<br/> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
You can also select category for products(It is Optional).<br/> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Then Click "Export Product with Stock Info" button. |
|||
<!--<img src="https://www.cybrosys.com/images/ico-tick.png">--> |
|||
Then You will get the corresponding report in XLS. |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-current-stock-1.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Per warehouse you can get Available Qty, Virtual Qty, Incoming Qty, Outgoing Qty, Net On Hand Qty, |
|||
Total Sold & Total Purchased Qty.<br/> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
You can get your stock valuation details too. In below screen-shot you |
|||
can see stock details of 2 warehouse exported in single spreadsheet.<br/> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-current-stock-2.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Negative stock will be highlighted in "red" cells. |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-current-stock-3.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container" style="padding: 7px 0% 0% 3%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<a style="color: #080808 !important;" href="https://apps.odoo.com/apps/modules/browse?search=cybrosys" target="_blank"><img src="https://www.cybrosys.com/images/view-more-apps.jpg" alt="cybrosys technologies" style="width: 100%;margin-bottom: 50px;"/></a> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Our Services |
|||
</h2> |
|||
<div style="display:flex;padding-top: 20px;justify-content: space-between;"> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
|||
Odoo Customization |
|||
</a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
|||
Odoo Implementation </a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
|||
Odoo Integration |
|||
</a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
|||
Odoo Support</a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
|||
Hire Odoo Developers</a> |
|||
</h3> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Our Industries |
|||
</h2> |
|||
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
|||
Trading |
|||
</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Easily procure and sell your products. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
|||
Manufacturing</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Plan, track and schedule your operations. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
|||
Restaurant</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Run your bar or restaurant methodical. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
|||
POS</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Easy configuring and convivial selling. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
|||
E-commerce & Website</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Mobile friendly, awe-inspiring product pages. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
|||
Hotel Management</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
An all-inclusive hotel management application. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
|||
Education</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
A Collaborative platform for educational management. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
|||
Service Management</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Keep track of services and invoice accordingly. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;"> |
|||
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;"> |
|||
<div> |
|||
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="mailto:odoo@cybrosys.com"><i class="fa fa-envelope"></i> Email us </a> |
|||
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a> |
|||
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-check-square"></i> Request Customization </a> |
|||
</div> |
|||
<br> |
|||
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> |
|||
<div> |
|||
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px; ;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
|
@ -0,0 +1,50 @@ |
|||
odoo.define('export_stockinfo_xls.action_manager', function (require) { |
|||
"use strict"; |
|||
|
|||
/** |
|||
* The purpose of this file is to add the actions of type |
|||
* 'ir_actions_xlsx_download' to the ActionManager. |
|||
*/ |
|||
|
|||
var ActionManager = require('web.ActionManager'); |
|||
var framework = require('web.framework'); |
|||
var session = require('web.session'); |
|||
|
|||
ActionManager.include({ |
|||
|
|||
/** |
|||
* Executes actions of type 'ir_actions_xlsx_download'. |
|||
* |
|||
* @private |
|||
* @param {Object} action the description of the action to execute |
|||
* @returns {Deferred} resolved when the report has been downloaded ; |
|||
* rejected if an error occurred during the report generation |
|||
*/ |
|||
_executexlsxReportDownloadAction: function (action) { |
|||
framework.blockUI(); |
|||
var def = $.Deferred(); |
|||
session.get_file({ |
|||
url: '/xlsx_reports', |
|||
data: action.data, |
|||
success: def.resolve.bind(def), |
|||
error: (error) => this.call('crash_manager', 'rpc_error', error), |
|||
complete: framework.unblockUI, |
|||
}); |
|||
return def; |
|||
}, |
|||
/** |
|||
* Overrides to handle the 'ir_actions_xlsx_download' actions. |
|||
* |
|||
* @override |
|||
* @private |
|||
*/ |
|||
_handleAction: function (action, options) { |
|||
|
|||
if (action.type === 'ir_actions_xlsx_download') { |
|||
return this._executexlsxReportDownloadAction(action, options); |
|||
} |
|||
return this._super.apply(this, arguments); |
|||
}, |
|||
}); |
|||
|
|||
}); |
@ -0,0 +1,9 @@ |
|||
<odoo> |
|||
<data> |
|||
<template id="assets_backend" name="xls_assets" inherit_id="web.assets_backend"> |
|||
<xpath expr="." position="inside"> |
|||
<script type="text/javascript" src="/export_stockinfo_xls/static/src/js/action_manager.js"/> |
|||
</xpath> |
|||
</template> |
|||
</data> |
|||
</odoo> |
@ -0,0 +1,66 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
|
|||
<odoo> |
|||
<data> |
|||
<record model='ir.ui.view' id='wizard_form'> |
|||
<field name="name">wizard.stock.history.form</field> |
|||
<field name="model">wizard.stock.history</field> |
|||
<field name="arch" type="xml"> |
|||
<form string="Wizard"> |
|||
<group string="Warehouse"> |
|||
<field name="warehouse" widget="many2many_tags"/> |
|||
</group> |
|||
<notebook> |
|||
<page string="Category"> |
|||
<field name="category"> |
|||
<tree> |
|||
<field name="name"/> |
|||
</tree> |
|||
</field> |
|||
</page> |
|||
</notebook> |
|||
<footer> |
|||
<button name="export_xls" type="object" default_focus="1" |
|||
string="Export Product with Stock Info" class="oe_highlight" |
|||
context="{'xls_export':1}" icon="fa-download"/> |
|||
<button string="Cancel" class="oe_link" special="cancel" /> |
|||
</footer> |
|||
</form> |
|||
</field> |
|||
</record> |
|||
|
|||
<record model='ir.actions.act_window' id='wizard_act'> |
|||
<field name="name">Export product stock in Excel</field> |
|||
<field name="res_model">wizard.stock.history</field> |
|||
<field name="type">ir.actions.act_window</field> |
|||
<field name="view_mode">form</field> |
|||
<field name="view_id" ref="wizard_form"/> |
|||
<field name="target">new</field> |
|||
</record> |
|||
|
|||
<!-- <report--> |
|||
<!-- id="stock_xlsx"--> |
|||
<!-- model="wizard.stock.history"--> |
|||
<!-- string="Product Stock Info"--> |
|||
<!-- report_type="xlsx"--> |
|||
<!-- name="export_stockinfo_xls.stock_report_xls.xlsx"--> |
|||
<!-- file="export_stockinfo_xls.stock_report_xls.xlsx"--> |
|||
<!-- menu="False"--> |
|||
<!-- attachment_use="False"/>--> |
|||
|
|||
<menuitem name="Current stock in Excel" |
|||
parent="stock.menu_warehouse_report" |
|||
id="export_excel" |
|||
action="wizard_act" |
|||
sequence="3"/> |
|||
</data> |
|||
<!-- <record id="action_stock_move_report_wizard" model="ir.actions.act_window">--> |
|||
<!-- <field name="name">Stock Move Report Report</field>--> |
|||
<!-- <field name="res_model">stock.moves.report.wizard</field>--> |
|||
<!-- <field name="type">ir.actions.act_window</field>--> |
|||
<!-- <field name="view_mode">form</field>--> |
|||
<!-- <field name="view_id" ref="stock_move_report_wizard_view"/>--> |
|||
<!-- <field name="target">new</field>--> |
|||
<!-- </record>--> |
|||
<!-- <menuitem id="stock_move_report_child_menu" name="Stock Move Report" action="action_stock_move_report_wizard" parent="stock.menu_warehouse_report"/>--> |
|||
</odoo> |
@ -0,0 +1,22 @@ |
|||
=========================== |
|||
Front Office Management v11 |
|||
=========================== |
|||
|
|||
Helps You To Manage Front Office Operations. |
|||
|
|||
Installation |
|||
============ |
|||
|
|||
Just install the module. |
|||
|
|||
Configuration |
|||
============= |
|||
|
|||
Nothing to configure. |
|||
|
|||
Credits |
|||
======= |
|||
Anusha P P @ cybrosys, anusha@cybrosys.in |
|||
Niyas Raphy @ cybrosys, niyas@cybrosys.in |
|||
|
|||
|
@ -0,0 +1,23 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-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) 2019-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': '13.0.1.0.0', |
|||
'summary': """Manage Front Office Operations:Visitors, Devices Carrying Register, Actions""", |
|||
'description': """Helps You To Manage Front Office Operations, Odoo13, Odoo 13""", |
|||
'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.jpg'], |
|||
'license': 'AGPL-3', |
|||
'installable': True, |
|||
'auto_install': False, |
|||
} |
@ -0,0 +1,6 @@ |
|||
## Module <front_office_management> |
|||
|
|||
#### 28.10.2019 |
|||
#### Version 13.0.1.0.0 |
|||
##### ADD |
|||
- Migrated to version 13 |
@ -0,0 +1,30 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-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,56 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Maintainer: Cybrosys Technologies (<https://www.cybrosys.com>) |
|||
############################################################################## |
|||
|
|||
|
|||
from odoo import models, fields, api,_ |
|||
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'), |
|||
], track_visibility='onchange', 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,109 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Maintainer: Cybrosys Technologies (<https://www.cybrosys.com>) |
|||
############################################################################## |
|||
|
|||
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'), |
|||
], track_visibility='onchange', 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' |
|||
|
|||
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', track_visibility='onchange') |
|||
|
|||
@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' |
|||
|
|||
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,52 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Maintainer: Cybrosys Technologies (<https://www.cybrosys.com>) |
|||
############################################################################## |
|||
|
|||
from odoo import models, fields, api |
|||
|
|||
|
|||
class VisitorDetails(models.Model): |
|||
_name = 'fo.visitor' |
|||
|
|||
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', '=', self.ids), ('state', '!=', 'cancel')]).ids |
|||
self.visit_count = len(data) |
|||
|
|||
|
|||
class VisitorProof(models.Model): |
|||
_name = 'id.proof' |
|||
_rec_name = 'id_proof' |
|||
|
|||
id_proof = fields.Char(string="Name") |
|||
code = fields.Char(string="Code") |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,57 @@ |
|||
<?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,70 @@ |
|||
<?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="60%"> |
|||
<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,32 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<data> |
|||
|
|||
<report |
|||
string="Visitor Pass" |
|||
id="action_print_visit_card" |
|||
model="fo.visit" |
|||
report_type="qweb-pdf" |
|||
name="front_office_management.report_visitor_label" |
|||
file="front_office_management.report_visitor_label" |
|||
/> |
|||
<report |
|||
string="Visitors Report" |
|||
id="action_print_visit_report" |
|||
model="fo.visit" |
|||
report_type="qweb-pdf" |
|||
name="front_office_management.report_visitor_report" |
|||
file="front_office_management.report_visitor_report" |
|||
/> |
|||
|
|||
<report |
|||
string="Property Label" |
|||
id="action_print_property_label" |
|||
model="fo.property.counter" |
|||
report_type="qweb-pdf" |
|||
name="front_office_management.report_property_label" |
|||
file="front_office_management.report_property_label" |
|||
/> |
|||
|
|||
</data> |
|||
</odoo> |
@ -0,0 +1,64 @@ |
|||
<?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: 86 KiB |
After Width: | Height: | Size: 186 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 201 KiB |
After Width: | Height: | Size: 191 KiB |
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 114 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 186 KiB |
After Width: | Height: | Size: 134 KiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 32 KiB |
@ -0,0 +1,398 @@ |
|||
|
|||
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png);background-repeat:no-repeat;background-size:100%;padding: 4% 0% 2% 15%;background-position-y: -107px;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;"> |
|||
Front Office Management |
|||
</h2> |
|||
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;"> |
|||
Manages Visitors and Employee Belongings |
|||
</h3> |
|||
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;"> |
|||
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank">Cybrosys Technologies</a> |
|||
</h5> |
|||
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank"> |
|||
<div style="width: 215px;margin-left: 57%;text-align: center;background: #ffffff;height: 215px;border-radius: 100%;display: flex;justify-content: center;align-items: center;box-shadow: 0 0 12px 4px #00000059;"> |
|||
<img src="https://www.cybrosys.com/images/cybro-logo-oca.png" alt="cybrosys technologies" style="width: 180px;"/> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container" style="padding: 3% 0% 3% 15%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Overview |
|||
</h2> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
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. |
|||
</h3> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 19% 0% 30% 15%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Features |
|||
</h2> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Manage visitors. |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Issue Visitor Pass. |
|||
</h3><h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Keep Check in, Check out Details of Visitors. |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Manage Visitor Belongings.</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Print Report Of visitor.</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Manage Employee Belongings.</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Print Property Label.</h3> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 3% 0% 0% 15%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Screenshots |
|||
</h2> |
|||
<h3>Visitors</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Create visitors. |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-front-office-1.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3>Visits</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Add visiting details. |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-front-office-2.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3>Visitor Pass</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Go to Visitor Management -> Visits -> Print -> Visitor Pass |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-front-office-3.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3>Visitor Report</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Go to Visitor Management -> Visits -> Print -> Visitors Report |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-front-office-4.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3>Today's Visits</h3> |
|||
|
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-front-office-5.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3>Employee Belongings</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Here you can specify the field 'Permission' with the values of Allowed,Not Allowed and Allowed with permission. |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-front-office-6.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3>Property Label</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Print the properties name that are not allowed to enter to the office. |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-front-office-7.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3>Receptionist</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
We can set 'Receptionist' access from users form. |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="cybrosys-front-office-8.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container" style="padding: 7px 0% 0% 3%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<a style="color: #080808 !important;" href="https://apps.odoo.com/apps/modules/browse?search=cybrosys" target="_blank"><img src="https://www.cybrosys.com/images/view-more-apps.jpg" alt="cybrosys technologies" style="width: 100%;margin-bottom: 50px;"/></a> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Our Services |
|||
</h2> |
|||
<div style="display:flex;padding-top: 20px;justify-content: space-between;"> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
|||
Odoo Customization |
|||
</a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
|||
Odoo Implementation </a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
|||
Odoo Integration |
|||
</a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
|||
Odoo Support</a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
|||
Hire Odoo Developers</a> |
|||
</h3> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Our Industries |
|||
</h2> |
|||
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
|||
Trading |
|||
</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Easily procure and sell your products. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
|||
Manufacturing</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Plan, track and schedule your operations. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
|||
Restaurant</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Run your bar or restaurant methodical. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
|||
POS</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Easy configuring and convivial selling. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
|||
E-commerce & Website</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Mobile friendly, awe-inspiring product pages. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
|||
Hotel Management</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
An all-inclusive hotel management application. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
|||
Education</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
A Collaborative platform for educational management. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
|||
Service Management</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Keep track of services and invoice accordingly. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;"> |
|||
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;"> |
|||
<div> |
|||
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="mailto:odoo@cybrosys.com"><i class="fa fa-envelope"></i> Email us </a> |
|||
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a> |
|||
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-check-square"></i> Request Customization </a> |
|||
</div> |
|||
<br> |
|||
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> |
|||
<div> |
|||
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px; ;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
|
After Width: | Height: | Size: 134 KiB |
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 114 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 191 KiB |
After Width: | Height: | Size: 201 KiB |
@ -0,0 +1,90 @@ |
|||
<?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,186 @@ |
|||
<?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,119 @@ |
|||
<?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_right oe_button_box" name="button_box"> |
|||
<button class="oe_inline 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> |
@ -0,0 +1,40 @@ |
|||
Medical Lab Management v12 |
|||
========================== |
|||
Helps You To Manage Medical Lab Operations. |
|||
|
|||
|
|||
Configuration |
|||
============= |
|||
* No additional configurations needed |
|||
|
|||
Company |
|||
------- |
|||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
|||
|
|||
Credits |
|||
------- |
|||
* Developers: Anusha P P @ cybrosys |
|||
Niyas Raphy @ 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) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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,56 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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': "Medical Lab Management", |
|||
'version': '13.0.1.0.1', |
|||
'summary': """Manage Medical Lab Operations.""", |
|||
'description': """Manage Medical Lab General Operations, Odoo13, Odoo 13""", |
|||
'author': "Cybrosys Techno Solutions", |
|||
'maintainer': 'Cybrosys Techno Solutions', |
|||
'company': "Cybrosys Techno Solutions", |
|||
'website': "https://www.cybrosys.com", |
|||
'category': 'Industries', |
|||
'depends': ['base', 'mail', 'account'], |
|||
'data': [ |
|||
'security/lab_users.xml', |
|||
'security/ir.model.access.csv', |
|||
'views/res_partner.xml', |
|||
'views/lab_patient_view.xml', |
|||
'views/test_unit_view.xml', |
|||
'views/lab_test_type.xml', |
|||
'views/lab_test_content_type.xml', |
|||
'views/physician_specialty.xml', |
|||
'views/physician_details.xml', |
|||
'views/lab_request.xml', |
|||
'views/lab_appointment.xml', |
|||
'views/account_invoice.xml', |
|||
'report/report.xml', |
|||
'report/lab_test_report.xml', |
|||
'report/lab_patient_card.xml', |
|||
], |
|||
'images': ['static/description/banner.jpg'], |
|||
'license': 'AGPL-3', |
|||
'installable': True, |
|||
'auto_install': False, |
|||
'application': True, |
|||
} |
@ -0,0 +1,9 @@ |
|||
## Module <medical_lab_management> |
|||
|
|||
#### 01.11.2019 |
|||
#### Version 13.0.1.0.0 |
|||
#### Migration |
|||
Migration Of Medical Lab Management |
|||
|
|||
|
|||
|
@ -0,0 +1,33 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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 physician_speciality |
|||
from . import res_partner |
|||
from . import lab_patient |
|||
from . import testing_unit |
|||
from . import lab_test_type |
|||
from . import lab_test_content_type |
|||
from . import lab_appointment |
|||
from . import lab_request |
|||
from . import account_invoice |
|||
|
|||
|
@ -0,0 +1,37 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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, api |
|||
|
|||
|
|||
class LabRequestInvoices(models.Model): |
|||
_inherit = 'account.move' |
|||
|
|||
is_lab_invoice = fields.Boolean(string="Is Lab Invoice") |
|||
lab_request = fields.Many2one('lab.appointment', string="Lab Appointment", help="Source Document") |
|||
|
|||
def action_invoice_paid(self): |
|||
res = super(LabRequestInvoices, self).action_invoice_paid() |
|||
lab_app_obj = self.env['lab.appointment'].search([('id', '=', self.lab_request.id)]) |
|||
for obj in lab_app_obj: |
|||
obj.write({'state': 'invoiced'}) |
|||
return res |
@ -0,0 +1,198 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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.exceptions import UserError |
|||
from odoo import fields, models, api, _ |
|||
|
|||
|
|||
class Appointment(models.Model): |
|||
_name = 'lab.appointment' |
|||
_inherit = ['mail.thread'] |
|||
_rec_name = 'name' |
|||
_description = "Appointment" |
|||
_order = 'appointment_date' |
|||
|
|||
user_id = fields.Many2one('res.users', 'Responsible', readonly=True) |
|||
patient_id = fields.Many2one('lab.patient', string='Patient', required=True, select=True, |
|||
help='Patient Name') |
|||
name = fields.Char(string='Appointment ID', readonly=True, default=lambda self: _('New')) |
|||
date = fields.Datetime(string='Requested Date', default=lambda s: fields.Datetime.now(), |
|||
help="This is the date in which patient appointment is noted") |
|||
appointment_date = fields.Datetime(string='Appointment Date', default=lambda s: fields.Datetime.now(), |
|||
help="This is the appointment date") |
|||
physician_id = fields.Many2one('res.partner', string='Referred By', select=True) |
|||
comment = fields.Text(string='Comments') |
|||
appointment_lines = fields.One2many('lab.appointment.lines', 'test_line_appointment', string="Test Request") |
|||
|
|||
request_count = fields.Integer(compute="_compute_state", string='# of Requests', copy=False, default=0) |
|||
inv_count = fields.Integer(compute="_compute_state", string='# of Invoices', copy=False, default=0) |
|||
state = fields.Selection([ |
|||
('draft', 'Draft'), |
|||
('confirm', 'Confirmed'), |
|||
('request_lab', 'Lab Requested'), |
|||
('completed', 'Test Result'), |
|||
('to_invoice', 'To Invoice'), |
|||
('invoiced', 'Done'), |
|||
('cancel', 'Cancelled'), |
|||
], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft', |
|||
) |
|||
|
|||
priority = fields.Selection([ |
|||
('0', 'Low'), |
|||
('1', 'Normal'), |
|||
('2', 'High') |
|||
], size=1) |
|||
|
|||
_defaults = { |
|||
'priority': '0', |
|||
} |
|||
|
|||
@api.model |
|||
def create(self, vals): |
|||
if vals: |
|||
vals['name'] = self.env['ir.sequence'].next_by_code('lab.appointment') or _('New') |
|||
result = super(Appointment, self).create(vals) |
|||
return result |
|||
|
|||
def _compute_state(self): |
|||
for obj in self: |
|||
obj.request_count = self.env['lab.request'].search_count([('app_id', '=', obj.id)]) |
|||
obj.inv_count = self.env['account.move'].search_count([('lab_request', '=', obj.id)]) |
|||
|
|||
def create_invoice(self): |
|||
invoice_obj = self.env["account.move"] |
|||
invoice_line_obj = self.env["account.move.line"] |
|||
journal = self.env['account.journal'].search([('type', '=', 'sale')], limit=1) |
|||
prd_account_id = journal.default_credit_account_id.id |
|||
for lab in self: |
|||
lab.write({'state': 'to_invoice'}) |
|||
if lab.patient_id: |
|||
curr_invoice = { |
|||
'partner_id': lab.patient_id.patient.id, |
|||
# 'account_id': lab.patient_id.patient.property_account_receivable_id.id, |
|||
'state': 'draft', |
|||
'type': 'out_invoice', |
|||
'invoice_date': str(datetime.datetime.now()), |
|||
'invoice_origin': "Lab Test# : " + lab.name, |
|||
# 'target': 'new', |
|||
'lab_request': lab.id, |
|||
'is_lab_invoice': True, |
|||
} |
|||
|
|||
inv_ids = invoice_obj.create(curr_invoice) |
|||
inv_id = inv_ids.id |
|||
|
|||
if inv_ids: |
|||
journal = self.env['account.journal'].search([('type', '=', 'sale')], limit=1) |
|||
prd_account_id = journal.default_credit_account_id.id |
|||
list_value = [] |
|||
if lab.appointment_lines: |
|||
for line in lab.appointment_lines: |
|||
list_value.append((0,0, { |
|||
'name': line.lab_test.lab_test, |
|||
'price_unit': line.cost, |
|||
'quantity': 1.0, |
|||
'account_id': prd_account_id, |
|||
'move_id': inv_id, |
|||
})) |
|||
print(list_value) |
|||
inv_ids.write({'invoice_line_ids': list_value}) |
|||
# invoice_line_obj.update({ |
|||
# 'name': line.lab_test.lab_test, |
|||
# 'price_unit': line.cost, |
|||
# 'quantity': 1.0, |
|||
# 'account_id': prd_account_id, |
|||
# 'move_id': inv_id, |
|||
# }) |
|||
|
|||
|
|||
self.write({'state': 'invoiced'}) |
|||
view_id = self.env.ref('account.view_move_form').id |
|||
return { |
|||
'view_mode': 'form', |
|||
'res_model': 'account.move', |
|||
'view_id': view_id, |
|||
'type': 'ir.actions.act_window', |
|||
'name': _('Lab Invoices'), |
|||
'res_id': inv_id |
|||
} |
|||
|
|||
def action_request(self): |
|||
if self.appointment_lines: |
|||
for line in self.appointment_lines: |
|||
data = self.env['lab.test'].search([('lab_test', '=', line.lab_test.lab_test)]) |
|||
self.env['lab.request'].create({'lab_request_id': self.name, |
|||
'app_id': self.id, |
|||
'lab_requestor': self.patient_id.id, |
|||
'lab_requesting_date': self.appointment_date, |
|||
'test_request': line.lab_test.id, |
|||
'request_line': [(6, 0, [x.id for x in data.test_lines])], |
|||
}) |
|||
self.state = 'request_lab' |
|||
else: |
|||
raise UserError(_('Please Select Lab Test.')) |
|||
|
|||
def confirm_appointment(self): |
|||
|
|||
message_body = "Dear " + self.patient_id.patient.name + "," + "<br>Your Appointment Has been Confirmed " \ |
|||
+ "<br>Appointment ID : " + self.name + "<br>Date : " + str(self.appointment_date) + \ |
|||
'<br><br>Thank you' |
|||
|
|||
template_obj = self.env['mail.mail'] |
|||
template_data = { |
|||
'subject': 'Appointment Confirmation', |
|||
'body_html': message_body, |
|||
'email_from': self.env.user.company_id.email, |
|||
'email_to': self.patient_id.email |
|||
} |
|||
template_id = template_obj.create(template_data) |
|||
template_obj.send(template_id) |
|||
self.write({'state': 'confirm'}) |
|||
|
|||
def cancel_appointment(self): |
|||
return self.write({'state': 'cancel'}) |
|||
|
|||
|
|||
class LabAppointmentLines(models.Model): |
|||
_name = 'lab.appointment.lines' |
|||
|
|||
lab_test = fields.Many2one('lab.test', string="Test") |
|||
cost = fields.Float(string="Cost") |
|||
requesting_date = fields.Date(string="Date") |
|||
test_line_appointment = fields.Many2one('lab.appointment', string="Appointment") |
|||
|
|||
@api.onchange('lab_test') |
|||
def cost_update(self): |
|||
if self.lab_test: |
|||
self.cost = self.lab_test.test_cost |
|||
|
|||
|
|||
class LabPatientInherit(models.Model): |
|||
_inherit = 'lab.patient' |
|||
|
|||
app_count = fields.Integer(compute="_compute_state", string='# of Appointments', copy=False, default=0) |
|||
|
|||
def _compute_state(self): |
|||
for obj in self: |
|||
obj.app_count = self.env['lab.appointment'].search_count([('patient_id', '=', obj.id)]) |
|||
|
@ -0,0 +1,78 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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 dateutil.relativedelta import relativedelta |
|||
from odoo import models, fields, api, _ |
|||
|
|||
|
|||
class LabPatient(models.Model): |
|||
_name = 'lab.patient' |
|||
_rec_name = 'patient' |
|||
_description = 'Patient' |
|||
|
|||
patient = fields.Many2one('res.partner', string='Partner', required=True) |
|||
patient_image = fields.Binary(string='Photo') |
|||
patient_id = fields.Char(string='Patient ID', readonly=True) |
|||
name = fields.Char(string='Patient ID', default=lambda self: _('New')) |
|||
title = fields.Selection([ |
|||
('ms', 'Miss'), |
|||
('mister', 'Mister'), |
|||
('mrs', 'Mrs'), |
|||
], string='Title', default='mister', required=True) |
|||
emergency_contact = fields.Many2one( |
|||
'res.partner', string='Emergency Contact') |
|||
gender = fields.Selection( |
|||
[('m', 'Male'), ('f', 'Female'), |
|||
('ot', 'Other')], 'Gender', required=True) |
|||
dob = fields.Date(string='Date Of Birth', required=True) |
|||
age = fields.Char(string='Age', compute='compute_age') |
|||
blood_group = fields.Selection( |
|||
[('A+', 'A+ve'), ('B+', 'B+ve'), ('O+', 'O+ve'), ('AB+', 'AB+ve'), |
|||
('A-', 'A-ve'), ('B-', 'B-ve'), ('O-', 'O-ve'), ('AB-', 'AB-ve')], |
|||
'Blood Group') |
|||
visa_info = fields.Char(string='Visa Info', size=64) |
|||
id_proof_number = fields.Char(string='ID Proof Number') |
|||
note = fields.Text(string='Note') |
|||
date = fields.Datetime(string='Date Requested', default=lambda s: fields.Datetime.now(), invisible=True) |
|||
phone = fields.Char(string="Phone", required=True) |
|||
email = fields.Char(string="Email", required=True) |
|||
|
|||
def compute_age(self): |
|||
for data in self: |
|||
if data.dob: |
|||
dob = fields.Datetime.from_string(data.dob) |
|||
date = fields.Datetime.from_string(data.date) |
|||
delta = relativedelta(date, dob) |
|||
data.age = str(delta.years) + ' years' |
|||
|
|||
@api.model |
|||
def create(self, vals): |
|||
sequence = self.env['ir.sequence'].next_by_code('lab.patient') |
|||
vals['name'] = sequence or _('New') |
|||
result = super(LabPatient, self).create(vals) |
|||
return result |
|||
|
|||
@api.onchange('patient') |
|||
def detail_get(self): |
|||
self.phone = self.patient.phone |
|||
self.email = self.patient.email |
|||
|
@ -0,0 +1,128 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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, _ |
|||
from odoo.exceptions import ValidationError |
|||
|
|||
|
|||
class LabRequest(models.Model): |
|||
_name = 'lab.request' |
|||
_inherit = ['mail.thread'] |
|||
_rec_name = 'lab_request_id' |
|||
_description = 'Lab Request' |
|||
|
|||
name = fields.Char(string='Lab Test', size=16, readonly=True, required=True, help="Lab result ID", default=lambda *a: '#') |
|||
lab_request_id = fields.Char(string='Appointment ID', help="Lab appointment ID") |
|||
app_id = fields.Many2one('lab.appointment', string='Appointment') |
|||
lab_requestor = fields.Many2one('lab.patient', string='Patient', required=True, select=True, |
|||
help='Patient Name') |
|||
test_request = fields.Many2one('lab.test', string='Test') |
|||
lab_requesting_date = fields.Datetime(string='Requested Date') |
|||
comment = fields.Text('Comment') |
|||
request_line = fields.One2many('lab.test.attribute', 'test_request_reverse', string="Test Lines") |
|||
state = fields.Selection([ |
|||
('draft', 'Draft'), |
|||
('sample_collection', 'Sample Collected'), |
|||
('test_in_progress', 'Test In Progress'), |
|||
('completed', 'Completed'), |
|||
('cancel', 'Cancelled'), |
|||
|
|||
], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft') |
|||
|
|||
@api.model |
|||
def create(self, vals): |
|||
sequence = self.env['ir.sequence'].next_by_code('lab.request') |
|||
vals['name'] = sequence or '/' |
|||
return super(LabRequest, self).create(vals) |
|||
|
|||
def set_to_sample_collection(self): |
|||
return self.write({'state': 'sample_collection'}) |
|||
|
|||
def set_to_test_in_progress(self): |
|||
return self.write({'state': 'test_in_progress'}) |
|||
|
|||
def cancel_lab_test(self): |
|||
return self.write({'state': 'cancel'}) |
|||
|
|||
def set_to_test_completed(self): |
|||
if not self.request_line: |
|||
raise ValidationError(_("No Result Lines Entered !")) |
|||
req_obj = self.env['lab.request'].search_count([('app_id', '=', self.app_id.id), |
|||
('id', '!=', self.id)]) |
|||
req_obj_count = self.env['lab.request'].search_count([('app_id', '=', self.app_id.id), |
|||
('id', '!=', self.id), |
|||
('state', '=', 'completed')]) |
|||
if req_obj == req_obj_count: |
|||
app_obj = self.env['lab.appointment'].search([('id', '=', self.app_id.id)]) |
|||
app_obj.write({'state': 'completed'}) |
|||
return self.write({'state': 'completed'}) |
|||
|
|||
def print_lab_test(self): |
|||
return self.env.ref('medical_lab_management.print_lab_test').report_action(self) |
|||
|
|||
def lab_invoice_create(self): |
|||
invoice_obj = self.env["account.move"] |
|||
invoice_line_obj = self.env["account.move.line"] |
|||
for lab in self: |
|||
if lab.lab_requestor: |
|||
curr_invoice = { |
|||
'partner_id': lab.lab_requestor.patient.id, |
|||
'account_id': lab.lab_requestor.patient.property_account_receivable_id.id, |
|||
'state': 'draft', |
|||
'type': 'out_invoice', |
|||
'date_invoice': datetime.datetime.now(), |
|||
'origin': "Lab Test# : " + lab.name, |
|||
'target': 'new', |
|||
'lab_request': lab.id, |
|||
'is_lab_invoice': True |
|||
} |
|||
|
|||
inv_ids = invoice_obj.create(curr_invoice) |
|||
inv_id = inv_ids.id |
|||
|
|||
if inv_ids: |
|||
journal = self.env['account.journal'].search([('type', '=', 'sale')], limit=1) |
|||
prd_account_id = journal.default_credit_account_id.id |
|||
if lab.test_request: |
|||
curr_invoice_line = { |
|||
'name': "Charge for lab test", |
|||
'price_unit': lab.test_request.test_cost or 0, |
|||
'quantity': 1.0, |
|||
'account_id': prd_account_id, |
|||
'invoice_id': inv_id, |
|||
} |
|||
|
|||
invoice_line_obj.create(curr_invoice_line) |
|||
|
|||
self.write({'state': 'invoiced'}) |
|||
form_view_ref = self.env.ref('account.view_move_form', False) |
|||
tree_view_ref = self.env.ref('account.view_move_tree', False) |
|||
|
|||
return { |
|||
'domain': "[('id', '=', " + str(inv_id) + ")]", |
|||
'name': 'Lab Invoices', |
|||
'view_mode': 'form', |
|||
'res_model': 'account.move', |
|||
'type': 'ir.actions.act_window', |
|||
'views': [(tree_view_ref.id, 'tree'), (form_view_ref.id, 'form')], |
|||
} |
@ -0,0 +1,37 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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 LabTestContentType(models.Model): |
|||
_name = 'lab.test.content_type' |
|||
_rec_name = 'content_type_name' |
|||
_description = "Content" |
|||
|
|||
content_type_name = fields.Char(string="Name", required=True, help="Content type name") |
|||
content_type_code = fields.Char(string="Code") |
|||
parent_test = fields.Many2one('lab.test', string="Test Category") |
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,46 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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 LabTestType(models.Model): |
|||
_name = 'lab.test' |
|||
_description = "Lab Test" |
|||
_rec_name = 'lab_test' |
|||
_inherit = ['mail.thread'] |
|||
|
|||
lab_test = fields.Char(string="Test Name", required=True, help="Name of lab test ") |
|||
lab_test_code = fields.Char(string="Test Code", required=True) |
|||
test_lines = fields.One2many('lab.test.attribute', 'test_line_reverse', string="Attribute") |
|||
test_cost = fields.Float(string="Cost", required=True) |
|||
|
|||
|
|||
class LabTestAttribute(models.Model): |
|||
_name = 'lab.test.attribute' |
|||
|
|||
test_content = fields.Many2one('lab.test.content_type', string="Content") |
|||
result = fields.Char(string="Result") |
|||
unit = fields.Many2one('test.unit', string="Unit") |
|||
interval = fields.Char(string="Reference Intervals") |
|||
test_line_reverse = fields.Many2one('lab.test', string="Attribute") |
|||
test_request_reverse = fields.Many2one('lab.request', string="Request") |
@ -0,0 +1,35 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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 PhysicianSpeciality(models.Model): |
|||
_name = 'physician.speciality' |
|||
_description = 'Medical Specialty' |
|||
|
|||
code = fields.Char(string='ID') |
|||
name = fields.Char(string='Specialty', help='Name of the specialty', required=True) |
|||
|
|||
_sql_constraints = [ |
|||
('name_uniq', 'UNIQUE(name)', 'Name must be unique!'), |
|||
] |
@ -0,0 +1,34 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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 ResPartnerPatient(models.Model): |
|||
_inherit = 'res.partner' |
|||
|
|||
is_patient = fields.Boolean(string='Is Patient') |
|||
is_physician = fields.Boolean(string='Is Physician') |
|||
speciality = fields.Many2one('physician.speciality', string='Speciality') |
|||
hospital = fields.Many2one('res.partner', string='Hospital') |
|||
|
|||
|
@ -0,0 +1,32 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(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 TestingUnit(models.Model): |
|||
_name = 'test.unit' |
|||
_rec_name = 'code' |
|||
_description = "Test Unit" |
|||
|
|||
unit = fields.Char(string="Unit", required=True) |
|||
code = fields.Char(string="code", required=True) |
@ -0,0 +1,63 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<data> |
|||
<template id="report_patient_label"> |
|||
<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"/> |
|||
<div class="row"> |
|||
<div class="col-xs-2" style="margin:auto;"> |
|||
</div> |
|||
<center> |
|||
<br/> |
|||
<div class="col-xs-8" style="margin:auto"> |
|||
<table class="table table-condensed" style="border: 3px solid black !important;"> |
|||
<tr> |
|||
<td width="40%"> |
|||
<p style="text-align:center;padding-top:10px;"> |
|||
<img t-if="not o.patient_image" t-att-src="'/web/static/src/img/placeholder.png'" height="120" border="1" width="120"/> |
|||
<img t-if="o.patient_image" t-att-src="'data:image/png;base64,%s' %o.patient_image" height="120" border="1" width="120"/> |
|||
</p> |
|||
<p style="text-align:center;"> |
|||
<strong><span t-field="o.patient.name"/></strong> |
|||
</p> |
|||
</td> |
|||
<td width="60%"> |
|||
<table> |
|||
<tr> |
|||
<td> |
|||
<p style="text-align:right;"><strong>Patient ID :</strong></p> |
|||
<p style="text-align:right;"><strong>Sex :</strong></p> |
|||
<p style="text-align:right;"><strong>Age :</strong></p> |
|||
</td> |
|||
<td> |
|||
<p style="text-align:left;" t-field="o.name"/> |
|||
<t t-if="o.gender=='m'"> |
|||
<p style="text-align:left;">Male</p> |
|||
</t> |
|||
<t t-if="o.gender=='ot'"> |
|||
<p style="text-align:left;">Other</p> |
|||
</t> |
|||
<t t-if="o.gender=='f'"> |
|||
<p style="text-align:left;">Female</p> |
|||
</t> |
|||
<p style="text-align:left;" t-field="o.age"/> |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
</center> |
|||
</div> |
|||
</div> |
|||
<p style="page-break-after:always"></p> |
|||
</t> |
|||
</t> |
|||
</t> |
|||
</template> |
|||
</data> |
|||
</odoo> |
@ -0,0 +1,50 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<data> |
|||
<template id="report_patient_labtest"> |
|||
<t t-call="web.html_container"> |
|||
<t t-call="web.external_layout"> |
|||
<t t-foreach="docs" t-as="o"> |
|||
<div class="page"> |
|||
<br /> |
|||
<h3 style="text-decoration:underline;text-align:center;"><b>Lab Test Report</b></h3> |
|||
<br/> |
|||
<br/> |
|||
<table width="99%" style="margin-left:50px;margin-top:5px;border: None solid black;"> |
|||
<tr> |
|||
<td style="width:50px;height:25px" ><span>Patient: </span><span t-att-style="style" t-esc="o.lab_requestor.patient.name"/></td> |
|||
<td style="width:50px;height:25px" ><span>Test : </span><span t-att-style="style" t-esc="o.test_request.lab_test"/></td> |
|||
<td style="width:50px;height:25px" ><span>Date: </span><span t-att-style="style" t-esc="o.lab_requesting_date"/></td> |
|||
</tr> |
|||
</table> |
|||
<br/> |
|||
<br/> |
|||
<table width="99%" style="border:1px solid black;padding-left:1.16cm;"> |
|||
<thead> |
|||
<th style="border:1px solid black;text-align:center;" width="13%" class="td4">Content</th> |
|||
<th style="border:1px solid black;text-align:center;" width="13%" class="td4">Unit</th> |
|||
<th style="border:1px solid black;text-align:center;" width="13%" class="td4">Normal Range</th> |
|||
<th style="border:1px solid black;text-align:center;" width="13%" class="td4">Result</th> |
|||
</thead> |
|||
<tbody> |
|||
<t t-foreach="o.request_line" t-as="l"> |
|||
<tr style="border:1px solid black"> |
|||
<td style="border:1px solid black;text-align:center;"><span t-esc="l.test_content.content_type_name" style="font-size:16px;"/></td> |
|||
<td style="border:1px solid black;text-align:center;"><span t-esc="l.unit.code" style="font-size:16px;"/></td> |
|||
<td style="border:1px solid black;text-align:center;"><span t-esc="l.interval" style="font-size:16px;"/></td> |
|||
<td style="border:1px solid black;text-align:center;"><span t-esc="l.result" style="font-size:16px;"/></td> |
|||
</tr> |
|||
</t> |
|||
</tbody> |
|||
</table> |
|||
<br/> |
|||
<br/> |
|||
</div> |
|||
<p style="page-break-after:always"></p> |
|||
</t> |
|||
</t> |
|||
</t> |
|||
</template> |
|||
</data> |
|||
|
|||
</odoo> |
@ -0,0 +1,23 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<data> |
|||
<report |
|||
string="Lab Test Result" |
|||
id="print_lab_test" |
|||
model="lab.request" |
|||
report_type="qweb-pdf" |
|||
name="medical_lab_management.report_patient_labtest" |
|||
file="medical_lab_management.report_patient_labtest" |
|||
/> |
|||
|
|||
<report |
|||
string="Patient Card" |
|||
id="action_report_patient_label" |
|||
model="lab.patient" |
|||
report_type="qweb-pdf" |
|||
name="medical_lab_management.report_patient_label" |
|||
file="medical_lab_management.report_patient_label" |
|||
|
|||
/> |
|||
</data> |
|||
</odoo> |
|
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<record model="ir.module.category" id="module_category_lab_management"> |
|||
<field name="name">Lab Management</field> |
|||
</record> |
|||
|
|||
<record id="group_lab_management_user" model="res.groups"> |
|||
<field name="name">Lab User</field> |
|||
<field name="category_id" ref="module_category_lab_management"/> |
|||
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/> |
|||
</record> |
|||
|
|||
<record id="group_lab_management_technician" model="res.groups"> |
|||
<field name="name">Lab Manager</field> |
|||
<field name="category_id" ref="module_category_lab_management"/> |
|||
<field name="implied_ids" eval="[(4, ref('group_lab_management_user'))]"/> |
|||
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/> |
|||
</record> |
|||
|
|||
</odoo> |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 32 KiB |
@ -0,0 +1,446 @@ |
|||
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png);background-repeat:no-repeat;background-size:100%;padding: 4% 0% 2% 15%;background-position-y: -107px;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;"> |
|||
Medical Lab Management |
|||
</h2> |
|||
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;"> |
|||
Manage Lab Activities |
|||
</h3> |
|||
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;"> |
|||
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank">Cybrosys Technologies</a> |
|||
</h5> |
|||
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank"> |
|||
<div style="width: 215px;margin-left: 57%;text-align: center;background: #ffffff;height: 215px;border-radius: 100%;display: flex;justify-content: center;align-items: center;box-shadow: 0 0 12px 4px #00000059;"> |
|||
<img src="https://www.cybrosys.com/images/cybro-logo-oca.png" alt="cybrosys technologies" style="width: 180px;"/> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 1% 0% 3% 15%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Overview |
|||
</h2> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
This app helps the user to systematically perform the activities of a Medical Laboratory. |
|||
The app simplifies the activities like Patient Management, Appointment Management, Test Requests Management, Lab Results Management, and so on. |
|||
</h3> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 10% 0% 25% 15%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Features |
|||
</h2> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Manage Patients |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Issue Patient Card |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Manage Referrals of Patients |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Manage Appointments |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Mail Notification For Appointments |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Manage Lab Requests |
|||
</h3> |
|||
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Print Lab Test Result Of Patient |
|||
</h3> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container" style="padding: 3% 0% 0% 15%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Screenshots |
|||
</h2> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Create patients. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-1.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div> |
|||
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Go to Laboratory -> Patient -> Print -> Patient Card. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-2.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Go to Laboratory -> Appointments->Create Appointments. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-3.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
When we confirm the appointment the appointment details will be sent through E-Mail. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-4.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Lab Request |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-5.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Lab Test Result |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-6.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Create invoice for lab test. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-7.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
You can see today's appointments here. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-8.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Go to Laboratory -> Configuration -> Lab test. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-9.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Go to Laboratory -> Configuration -> Test Contents. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-10.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
Go to Laboratory -> Configuration -> Testing Unit. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-11.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
We can add referral physician details. |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-12.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
|||
<div><img src="https://www.cybrosys.com/images/ico-tick.png"> |
|||
There are two type <users class=""></users> |
|||
</div> |
|||
</h3> |
|||
<div class="oe_row oe_spaced"> |
|||
<img src="lab-management-cybrosys-13.png" alt="" style="width: 95%;"/> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 7px 0% 0% 3%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<a style="color: #080808 !important;" href="https://apps.odoo.com/apps/modules/browse?search=cybrosys" target="_blank"><img src="https://www.cybrosys.com/images/view-more-apps.jpg" alt="cybrosys technologies" style="width: 100%;margin-bottom: 50px;"/></a> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Our Services |
|||
</h2> |
|||
<div style="display:flex;padding-top: 20px;justify-content: space-between;"> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
|||
Odoo Customization |
|||
</a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
|||
Odoo Implementation </a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
|||
Odoo Integration |
|||
</a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
|||
Odoo Support</a> |
|||
</h3> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
|
|||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
|||
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> |
|||
</a> |
|||
</div> |
|||
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
|||
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
|||
Hire Odoo Developers</a> |
|||
</h3> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
|||
Our Industries |
|||
</h2> |
|||
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
|||
Trading |
|||
</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Easily procure and sell your products. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
|||
Manufacturing</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Plan, track and schedule your operations. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
|||
Restaurant</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Run your bar or restaurant methodical. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
|||
POS</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Easy configuring and convivial selling. |
|||
</h3> |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
|||
E-commerce & Website</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Mobile friendly, awe-inspiring product pages. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
|||
Hotel Management</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
An all-inclusive hotel management application. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
|||
Education</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
A Collaborative platform for educational management. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
<div style="flex-basis: 32%;padding-top: 20px;"> |
|||
|
|||
<div style="width:30%; float:left;"> |
|||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
|||
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div style="width:70%;float:left;"> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
|||
Service Management</a> |
|||
</h3> |
|||
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
|||
Keep track of services and invoice accordingly. |
|||
</h3> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;"> |
|||
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;"> |
|||
<div> |
|||
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="mailto:odoo@cybrosys.com"><i class="fa fa-envelope"></i> Email us </a> |
|||
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a> |
|||
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-check-square"></i> Request Customization </a> |
|||
</div> |
|||
<br> |
|||
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> |
|||
<div> |
|||
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px; ;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
|
|||
|
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 108 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 114 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 83 KiB |